Bytecode verified via sibling
This contract shares identical runtime bytecode with a verified contract (0x7eb37d5b...) which has been verified through compiler archaeology.
Owner wallet that forwards ether to its owner, logs any call from a stranger with the full calldata, and lets the owner execute arbitrary calls.
Historical Significance
Logging the whole calldata of unrecognised calls is the distinguishing feature. Most wallets of this shape either revert on unknown selectors or accept them silently; this one keeps an on chain record of every attempt, including the payload, which makes the contract its own audit trail for interactions its author never anticipated.
Key Facts
Description
The payable fallback has two jobs. If the caller is not the owner it emits Transaction carrying the sender, this contract, the value and the entire calldata, which turns the wallet into a recorder for anything sent to it. Then, whenever the value is above zero, it forwards that value to the owner.
execute is owner gated and makes an arbitrary call with value and payload, using assert rather than require so a failure consumes the remaining gas. The owner is readable.
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": {
"Wallet.sol": {
"content": "// Submitted by EthereumHistory (ethereumhistory.com)\npragma solidity ^0.4.18;\n\ncontract Wallet {\n address public owner;\n\n event Transaction(address from, address to, uint256 value, bytes data);\n\n function () public payable {\n if (owner != msg.sender) {\n Transaction(msg.sender, this, msg.value, msg.data);\n }\n if (msg.value > 0) {\n owner.transfer(msg.value);\n }\n }\n\n function execute(address _to, uint256 _value, bytes _data) public {\n assert(owner == msg.sender);\n assert(_to.call.value(_value)(_data));\n }\n}\n"
}
},
"settings": {
"optimizer": {
"enabled": true,
"runs": 200
},
"outputSelection": {
"*": {
"*": [
"evm.bytecode",
"evm.deployedBytecode",
"devdoc",
"userdoc",
"metadata",
"abi"
]
}
}
}
}}External Links
Related contracts
OwnedWallet
Same deployerMinimal single owner execution wallet from late 2017: one owner, one execute call that can send ether and arbitrary calldata anywhere.
0x650f78...5cc036October 31, 2017OwnedWallet
Same deployerMinimal single owner execution wallet from late 2017: one owner, one execute call that can send ether and arbitrary calldata anywhere.
0x42da6c...3cdd21October 31, 2017OwnedWallet
Same deployerMinimal single owner execution wallet from late 2017: one owner, one execute call that can send ether and arbitrary calldata anywhere.
0x777d41...d4ada9October 31, 2017OwnedWallet
Same deployerMinimal single owner execution wallet from late 2017: one owner, one execute call that can send ether and arbitrary calldata anywhere.
0x18de5d...d620f6October 31, 2017OwnedWallet
Same deployerMinimal single owner execution wallet from late 2017: one owner, one execute call that can send ether and arbitrary calldata anywhere.
0x6db09d...5413f6October 31, 2017OwnedWallet
Same deployerMinimal single owner execution wallet from late 2017: one owner, one execute call that can send ether and arbitrary calldata anywhere.
0x048fc1...4d3c5cOctober 31, 2017