ERC-20 token forwarder for exchange deposit addresses. Single function: owner-only transferToken with typed ERC20 call and TokenTransfer event.
Key Facts
Description
The Token Forwarder is an ERC-20 token sweeping contract deployed as part of large-scale exchange deposit address infrastructure in October 2016. With 14,789 identical siblings on-chain, this represents one of the largest bytecode clusters in early Ethereum history.
Each customer deposit address at the exchange received its own dedicated Forwarder contract, deployed with the exchange hot wallet address set as owner at construction time. When a customer deposits ERC-20 tokens to their assigned address, the exchange calls transferToken(token, to, amount) to move the tokens to the main wallet.
The contract uses a typed ERC20 interface call — ERC20(token).transfer(to, amount) — rather than the raw .call() encoding seen in later sweeper patterns. This reflects the cleaner contract-to-contract calling style available in Solidity 0.4.x. The TokenTransfer event (topic0: 0xd0ed88a3...) with indexed token and to parameters enables efficient off-chain event log filtering.
The contract has no fallback function and is non-payable, making it purpose-built exclusively for ERC-20 forwarding with no ETH handling capability.
Source verification achieved with Solidity 0.4.2+commit.af6afb04 (optimizer ON). The compiled runtime is 242 bytes — same size as on-chain — with a near-exact match. The optimizer produces a minor block ordering difference at byte 34 (return JUMPDEST placement), a known variant in early Solidity optimizer behavior. Pre-0.4.7 compiler means no bzzr Swarm metadata is appended to the bytecode.
Source Verified
242/242 bytes same size. Optimizer block ordering differs at byte 34 (return JUMPDEST placement). Single function: transferToken(address,address,uint256). Pre-0.4.7 = no bzzr metadata.
Heuristic Analysis
The following characteristics were detected through bytecode analysis and may not be accurate.
Spurious Dragon Era
Continued DoS protection. State trie clearing.
Bytecode Overview
Verified Source Available
This contract has verified source code.
View Verification ProofShow source code (Solidity)
pragma solidity ^0.4.0;
contract ERC20 {
function transfer(address to, uint256 value) returns (bool);
}
contract Forwarder {
address owner;
event TokenTransfer(address indexed token, address indexed to, uint256 amount);
function Forwarder(address _owner) {
owner = _owner;
}
function transferToken(address token, address to, uint256 amount) {
if (msg.sender != owner) throw;
ERC20(token).transfer(to, amount);
TokenTransfer(token, to, amount);
}
}