![](/img/trans.png)
[英]I want to call smart contract method function at php on tron blockchain
[英]I want to make a time based transaction in smart contract
我正在為彩票系統創建智能合約,我想進行基於時間的交易,例如將一定數量的玩家添加到數組中,然后運行時間戳,並在特定時間我將聲明應該將金額發送給獲勝者,
這是我被卡住的部分,我試圖從這個 function 進入彩票,當滿足條件時,我想通過相同的 function 轉移金額,因為我想自動化獲勝者 ZC1C425268E683A94F1C4
function enter() public payable{
require(msg.value > 1 wei);
players.push(msg.sender);
if(players.length==10){
start = block.timestamp;
}
if(block.timestamp>= start+totalTime){
uint index = random()% players.length;
players[index].transfer(this.balance);
dead[index].transfer((this.balance*2)/100);
winner = players[index];
players = new address[](0);
}
這是我的完整代碼:
pragma solidity ^0.4.26;
contract Lottery{
address public manager;
address[] public players;
address [0x000000000000000000000000000000000000dead] private dead;
address public winner;
uint start;
uint end;
uint totalTime=50;
constructor()public {
manager = msg.sender;
}
function enter() public payable{
require(msg.value > 1 wei);
players.push(msg.sender);
if(players.length==10){
start = block.timestamp;
}
if(block.timestamp>= start+totalTime){
uint index = random()% players.length;
players[index].transfer(this.balance);
dead[index].transfer((this.balance*2)/100);
winner = players[index];
players = new address[](0);
}
}
function random() private view returns (uint){
return uint(keccak256(block.difficulty,now,players));
}
function getBalance() public view returns(uint){
return address(this).balance;
}
function getPlayers() public view returns (address[]){
return players;
}
function getWinner() public view returns (address){
return winner;
}
function getTime() public view returns (uint){
return end-block.timestamp;
}
}
你不能,必須有人打電話給 function 並支付汽油費,你可以做的是有一個腳本來監聽事件,每次有人“進入”彩票並檢查是否已經達到所需的金額然后打電話function 贏得勝利,你也不能在 function 之外有任何邏輯,如果你打算部署到生產環境,使用區塊難度和時間戳作為隨機性來源最好使用鏈鏈接
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.