Bytecode verified via sibling
This contract shares identical runtime bytecode with Wallet (0x5aa66081...) which has been verified through compiler archaeology.
Exchange deposit wallet contract with ETH/token sweep functions. The most deployed bytecode in Ethereum history with 709,039 siblings.
Key Facts
Description
UserWallet is a minimal 4-function exchange deposit wallet deployed at peak ICO mania in January 2018. The deployer — an exchange hot wallet with nonce 121,422 — spawned 709,039 identical contracts, one per user. Each contract's owner variable is set to msg.sender at deploy time (the exchange hot wallet), enabling the exchange to sweep both ETH and ERC20 token balances on demand.
The four functions: (1) fallback accepts incoming ETH deposits; (2) collect() sweeps the ETH balance to owner; (3) collectToken(address) queries an ERC20 token's balance for this contract, then transfers it to owner; (4) destroy() calls selfdestruct, sending remaining ETH to owner.
Source reconstruction required identifying: a Solidity modifier pattern (not inline require) for access control; old-style if/throw instead of require(); and Token t = Token(token) local variable caching in collectToken, which causes the compiler to maintain an extra storage slot on the EVM stack. These subtle source-level details produce the specific DUP2/SWAP1/POP opcode sequences that distinguish this bytecode from superficially similar reconstructions.
Source Verified
Near-exact match: 669/670 runtime bytes identical. Compiler: soljson v0.4.12+commit.194ff033 optimizer ON. Source reconstructed from bytecode: 4 functions (collectToken, destroy, owner, collect) + payable fallback. All 61 v0.4.11-v0.4.12 nightlies tested. 1-byte gap from unknown source detail.
Heuristic Analysis
The following characteristics were detected through bytecode analysis and may not be accurate.
Byzantium Era
First Metropolis hard fork. Added zk-SNARK precompiles, REVERT opcode, and staticcall.
Bytecode Overview
Verified Source Available
Source verified through compiler archaeology (near-exact bytecode match).
View Verification ProofShow source code (Solidity)
pragma solidity ^0.4.11;
contract ERC20 {
function balanceOf(address _owner) constant returns (uint256);
function transfer(address _to, uint256 _value) returns (bool);
}
contract Wallet {
address public owner;
modifier onlyOwner {
require(msg.sender == owner);
_;
}
function Wallet() {
owner = msg.sender;
}
function() payable {}
function collectToken(address _token) onlyOwner {
uint256 bal = ERC20(_token).balanceOf(this);
ERC20(_token).transfer(owner, bal);
}
function destroy() onlyOwner {
selfdestruct(owner);
}
function collect() onlyOwner {
owner.transfer(this.balance);
}
}