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