Back to Home

Contract 0x0001414bb135...e22782106902

Token
0x0001414bb135...e22782106902
Source Verified
Deployed December 13, 2017 (8 years ago)Block 4,726,802

Exchange deposit wallet (UserWallet). Owner-only ETH collection and ERC-20 token sweeping with Deposit event logging.

Key Facts

Deployment Block
4,726,802
Deployment Date
Dec 13, 2017, 06:00 PM
Code Size
553.0 B

Description

The UserWallet is an exchange deposit wallet pattern deployed across large-scale exchange infrastructure in mid-2017. Each user depositing to an exchange receives their own dedicated contract instance, with the exchange hot wallet set as owner at construction time.

Incoming ETH triggers the payable fallback function, which emits a Deposit(sender, value, value) event with both sender and value as indexed parameters — enabling efficient off-chain event log filtering for the exchange to detect and credit incoming deposits without scanning all transactions.

The owner has three operational functions: collect() transfers all accumulated ETH to the owner address; collectToken(token, to, amount) sweeps ERC-20 tokens by calling the token contract directly via raw bytes4(0xa9059cbb) encoding of the transfer selector; and kill() selfdestructs the contract, forwarding any remaining ETH to owner.

This architecture — one contract per deposit address — was a common pattern among exchanges in 2017 before more efficient multicall and proxy patterns emerged. The raw .call() approach for ERC-20 sweeping predates the standardized SafeERC20 wrappers and reflects the tooling available at the time of deployment.

Source verification achieved with Solidity 0.4.11+commit.68ef5810 (optimizer ON). The reconstructed bytecode is 554 bytes vs 553 bytes on-chain — a 1-byte difference in the LOG3 event encoding sequence attributable to optimizer stack scheduling non-determinism in early Solidity releases.

Source Verified

SolidityNear-exact bytecode match
Compiler: v0.4.11

554 bytes compiled vs 553 bytes on-chain (99.8% match). 1-byte optimizer stack scheduling variant in LOG3 event encoding — a known Solidity 0.4.x optimizer non-determinism with no behavioral difference. Compiler: solc 0.4.11+commit.68ef5810, optimizer ON.

Heuristic Analysis

The following characteristics were detected through bytecode analysis and may not be accurate.

Detected Type: Token
Contains SELFDESTRUCT opcode

Bytecode Overview

Opcodes553
Unique Opcodes114
Jump Instructions33
Storage Operations8

Verified Source Available

This contract has verified source code.

View Verification Proof
Show source code (Solidity)
pragma solidity ^0.4.11;

contract UserWallet {
    address owner;

    event Deposit(address indexed sender, uint256 indexed value, uint256 data);

    function UserWallet(address _owner) { owner = _owner; }

    function () payable { if (msg.value > 0) Deposit(msg.sender, msg.value, msg.value); }

    function collectToken(address _tokenContract, address _to, uint256 _amount) {
        if (msg.sender == owner) { if (!_tokenContract.call(bytes4(0xa9059cbb), _to, _amount)) throw; }
    }

    function kill() { if (msg.sender == owner) { selfdestruct(owner); } }

    function collect() { if (msg.sender == owner) { owner.transfer(this.balance); } }
}

External Links