Back to Home

UserWallet

other
0x24eb8813f35f...cb2c3ba068a7
ByzantiumSource VerifiedEdit this contract

Bytecode verified via sibling

This contract shares identical runtime bytecode with UserWallet (0x5aa66081...) which has been verified through compiler archaeology.

Deployed January 4, 2018 (8 years ago)Block 4,850,028

Exchange deposit wallet with ETH and ERC20 sweep functions. One of the most widely deployed bytecodes on Ethereum.

Byzantium EraVerified Source

Historical Significance

With 709,039 sibling contracts sharing identical runtime bytecode, this is the single most-deployed bytecode pattern in Ethereum history. Deployed at the peak of the 2017-2018 ICO bull run, this fleet of deposit wallets represents the exchange infrastructure that enabled millions of crypto trades. The deployer's nonce of 121,422 confirms the scale of operations — over 120,000 prior transactions from a single hot wallet account. Every major centralized exchange of the era used patterns like this to generate unique deposit addresses for each user at scale.

Context

Exchange deposit wallet contracts solved a specific UX problem: giving each user a unique Ethereum address for deposits while keeping the exchange's treasury in a separate hot/cold wallet system. This contract's approach — deploying a fresh contract per user, with the exchange hot wallet as owner — was a common 2017-2018 pattern. The fallback function accepted deposits; the sweep functions (collect for ETH, collectToken for ERC20s) drained them to the exchange treasury. The destroy function allowed reclaiming gas by selfdestructing wallets from inactive users. The deployer address 0x17bc58b788808dab201a9a90817ff3c168bf3d61 remains unidentified publicly but its 709,039 deployments place it among the most prolific contract deployers in Ethereum history.

Key Facts
Deployment Block
4,850,028
Deployment Date
Jan 4, 2018, 12:35 AM
Code Size
670.0 B
Gas at Deploy
253,854

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

SolidityNear-exact bytecode match
Compiler: v0.4.12

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.

Detected Type: other

Bytecode Overview

Opcodes670
Unique Opcodes114
Jump Instructions37
Storage Operations9

External Links