簡體   English   中英

我想在智能合約中進行基於時間的交易

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM