A pool/lottery prototype by Thomas Bertani (Oraclize team) allowing deposits via register() and admin-gated 5x payouts via finalize().
Key Facts
Description
Pool is a 504-byte contract deployed on September 17, 2015 (block 249,403) by the same Oraclize-team key that deployed GetSet three blocks earlier. It implements a simple deposit-and-payout pattern: users call register() to deposit ETH (stored in a public balances mapping), and an admin calls finalize() to send 5x a beneficiary's balance before zeroing their account.
The admin address (0x3c94923400ccc528e8ab0f849edafca06fe332e5) is another contract deployed by the same key, acting as an access control gate. The register() function takes three string parameters and a uint (selector 0x02110d25) but ignores all arguments, using only msg.value for the deposit. Registration is limited to one deposit per address: subsequent calls are rejected via an early-return guard.
The contract was called exactly once after deployment: a 7-wei test registration by the deployer at block 249,406. No finalize() call was ever made. The 5x multiplier and multi-party structure suggest this was a prototype for a lottery or betting pool that was never put into production.
Source Verified
Exact bytecode match (init + runtime). Runtime: 504 bytes. Creation: 523 bytes (19 bytes init). Uses address constant for admin, early-return guard clauses. Only called once (7-wei test deposit).
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
Source verified through compiler archaeology and exact bytecode matching.
View Verification ProofShow source code (Solidity)
contract Pool {
address constant admin = 0x3c94923400ccc528e8ab0f849edafca06fe332e5;
mapping(address => uint) public balances;
function register(string a, string b, string c, uint d) returns (uint) {
if (balances[msg.sender] > 0) return;
balances[msg.sender] = msg.value;
}
function get() returns (uint) {
return balances[msg.sender];
}
function finalize(address beneficiary, uint fixPoolSupply) {
if (admin != msg.sender) return;
if (fixPoolSupply > 0) {
beneficiary.send(5 * balances[beneficiary]);
}
balances[beneficiary] = 0;
}
}