繁体   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