import "github.com/oraclize/ethereum-api/provableAPI_0.4.25.sol"; pragma solidity 0.4.25; contract Lottery is usingOraclize { address public manager; address[] public players; uint public randomNumber; uint public lotteryEndDate; bool public isRndNumberGenerated; bool public paidOut; constructor() public { manager = msg.sender; lotteryEndDate = 1591333505; oraclize_setProof(proofType_Ledger); } modifier restricted() { require(msg.sender == manager); _; } function enter() public payable { require(msg.value > .1 ether); players.push(msg.sender); } function payOut() public { require(lotteryEndDate < block.time); require(isRndNumberGenerated == true); require(paidOut == false); uint index = randomNumber % players.length; players[index].transfer(address(this).balance / 2); manager.transfer(address(this).balance / 2); } function __callback(bytes32 queryId, string result, bytes proof) { require(msg.sender == oraclize_cbAddress()); require(lotteryEndDate < block.time); require(isRndNumberGenerated == false); require(paidOut == false); if (oraclize_randomDS_proofVerify__returnCode(queryId, result, proof) == 0) { uint maxRange = 2 ** (8 * 7); randomNumber = uint(sha3(result)) % maxRange; isRndNumberGenerated = true; } } function generateRandomNumber () public payable { require(block.time > lotteryEndDate); require(lotteryEndDate < block.time); require(isRndNumberGenerated == false); require(isPaidOut == false); uint numberOfBytes = 7; uint delay = 0; uint callbackGas = 200000; bytes32 queryId = oraclize_newRandomDSQuery(delay, numberOfBytes, callbackGas); } function getPlayers() public view returns (address[]) { return players; } }
0.4.25