Commit-reveal lottery prototype by the EarlyLottery developer. buyTicket(bytes32) takes a hash commitment. submitSecret reveals the secret. payout() sends to wi...
Key Facts
Source Verified
963 bytes. Source reconstructed: commit-reveal lottery by same developer as EarlyLottery (0x7af6af3d). 5 functions: submitSecret(bytes32), random(), payout(), payoutReady(), buyTicket(bytes32). Correct size match and all selectors confirmed with v0.1.5 optimizer ON. 935 diffs in optimizer layout -- exact compiler snapshot not found. 0.300 ETH remains locked since Aug 8 2015.
Heuristic Analysis
The following characteristics were detected through bytecode analysis and may not be accurate.
Frontier Era
The initial release of Ethereum. A bare-bones implementation for technical users.
Bytecode Overview
Verified Source Available
This contract has verified source code.
View Verification ProofShow source code (Solidity)
contract Lottery {
uint startBlock;
uint numParticipants;
address[] participants;
uint64[] secrets;
mapping (address => bytes32) hashes;
mapping (address => uint) amounts;
function Lottery() { startBlock = block.number; }
function submitSecret(uint64 secret) {
if (!(block.number % 88 < 0x44 && block.number % 88 >= 0x30)) return;
if (sha3(bytes8(secret)) != hashes[msg.sender]) return;
participants.length++;
participants[participants.length - 1] = msg.sender;
secrets.length++;
secrets[secrets.length - 1] = secret;
}
function random() returns (uint64 r) {
for (uint i = 0; i < secrets.length; i++) {
r ^= secrets[i];
}
}
function payout() {
if (!payoutReady()) return;
uint winner = random() % participants.length;
participants[winner].call.value(this.balance - tx.gasprice * 25000)();
startBlock = block.number;
participants.length = 0;
secrets.length = 0;
numParticipants = 0;
}
function payoutReady() returns (bool) {
return block.number % 88 > 0x44 && block.number - startBlock > 0x44;
}
function buyTicket(bytes32 hash) {
if (block.number % 88 >= 0x28) return;
hashes[msg.sender] = hash;
amounts[msg.sender] += msg.value;
numParticipants++;
}
}