Bytecode verified via sibling
This contract shares identical runtime bytecode with a verified contract (0x292c3ede...) which has been verified through compiler archaeology.
Deposit forwarder in the BitGo style, sending ether to a parent address and able to flush stranded tokens to the same place.
Historical Significance
The forwarder shape that BitGo popularised, reduced to its two essential operations. Collapsing the payout address and the control address into one value is what keeps it this small, and it is a reasonable trade when the parent is itself a multisignature wallet rather than a single key.
Key Facts
Description
The payable fallback transfers every incoming payment to the parent address held in the first storage slot, which is readable. flushTokens requires the caller to be that parent, reads this contract's balance of the given token, returns early if there is nothing to move, and otherwise transfers the whole balance to the parent and requires the transfer to report success.
The parent is both the payout destination and the only authorised caller, so one address holds both roles and there is no separate owner.
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
This contract has verified source code on Etherscan.
Show source code (Solidity)
{{
"language": "Solidity",
"sources": {
"Forwarder.sol": {
"content": "// Submitted by EthereumHistory (ethereumhistory.com)\npragma solidity ^0.4.18;\n\ncontract ERC20 {\n function balanceOf(address _owner) public returns (uint256);\n function transfer(address _to, uint256 _value) public returns (bool);\n}\n\ncontract Forwarder {\n address public parentAddress;\n\n function () public payable {\n parentAddress.transfer(msg.value);\n }\n\n function flushTokens(address _token) public {\n require(msg.sender == parentAddress);\n ERC20 token = ERC20(_token);\n address self = address(this);\n uint256 bal = token.balanceOf(self);\n if (bal == 0) {\n return;\n }\n require(token.transfer(parentAddress, bal));\n }\n}\n"
}
},
"settings": {
"optimizer": {
"enabled": true,
"runs": 1
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
}
}
}}External Links
Related contracts
Msg
Same eraMinimal contract that stores a single public string in state, exposed via the auto-generated m() getter. First of 281 identical siblings. Source verified by EthereumHistory.
0x2c8f58...37b173January 13, 2018Wallet
Same eraToken collection wallet that moves an entire token balance to a chosen address, without the ERC223 callback handler.
0x002204...531195January 19, 2018Wallet
Same eraOwner wallet that forwards ether to its owner, logs any call from a stranger with the full calldata, and lets the owner execute arbitrary calls.
0x001feb...9e7a4fJanuary 20, 2018Sweeper
Same eraMinimal ETH sweeper, first of 1,900 identical deployments in a 2-day burst in January 2018. All sweep to a single hardcoded destination. Source verified by EthereumHistory.
0xeb15f6...6cb3e1January 23, 2018Sweep
Same eraETH sweep-to-fixed-recipient — fallback forwards the contract's entire balance to `0xd293a88c…8d4` via `.send()` and reverts on failure. Massive cluster of 1899 identical deployments — likely deposit-address contracts for a single custodian.
0x00188b...b260a7January 23, 2018Msg
Same eraMsg sibling — cluster of 279 identical deployments.
0x038cd0...fa23abFebruary 10, 2018