Revised Pool5x lottery prototype by Bertani (Oraclize), deployed 17 blocks after v1. Stores 5x msg.value and emits debug log events.
Key Facts
Description
Pool5x v2 is a 647-byte revision of the original Pool5x contract (0x246b342b0fd5a8ad8d267e02ae860c71fba8eebe), deployed by Thomas Bertani and the Oraclize team about 5 minutes after the original at block 249,420 on September 17, 2015. The structure and admin gate (0x3c94923400ccc528e8ab0f849edafca06fe332e5, the Controller proxy) are identical to v1, with two functional changes:
-
Stores 5x msg.value on register: depositors receive 5x credit immediately upon registering, rather than just being credited their deposit amount. The
finalize()function then pays 5x of the stored balance, effectively a 25x multiplier overall (likely a bug or experiment -- v1 paid 5x of the actual deposit). -
Emits log events:
register()now emitslog(uint256)events with constants 11 and 12 around the storage write, presumably for off-chain monitoring or debugging during testing.
The source uses an unnamed event parameter (event log(uint256);). A named-parameter version (event log(uint256 x);) compiles to bytecode with 233 byte differences -- the unnamed form generates a different memory layout for the LOG opcode setup despite both producing the same total size.
This contract is part of the Bertani Sept 17, 2015 cluster. Full deployment chain:
- Block 247,409: Target (
0x9e0ae8ffd946d12d1d393c6f3bca0eecadc9428e) -- bare storage cell - Block 247,715: GetSet (
0x77beac0aed3b9e75ee2aba60b3dec66ff47e96c2) -- proxy forwarding to Target - Block 247,976: Controller (
0x3c94923400ccc528e8ab0f849edafca06fe332e5) -- another proxy forwarding to Target - Block 249,403: Pool5x v1 (
0x246b342b0fd5a8ad8d267e02ae860c71fba8eebe) -- lottery prototype using Controller as admin - Block 249,420: Pool5x v2 (this contract) -- revised lottery with events and 5x deposit credit
Source Verified
Exact bytecode match (init + runtime). Runtime: 647 bytes. Creation: 666 bytes (19 bytes init). Revised Pool5x with log events and 5x deposit credit. Uses unnamed event parameter (named version produces different bytecode).
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 {
event log(uint256);
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;
log(11);
balances[msg.sender] = 5 * msg.value;
log(12);
}
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;
}
}