Owner-controlled multi-purpose wallet, first of 1,374 identical siblings. Accepts ETH, sweeps ERC-20 tokens, and implements ERC-223 tokenFallback. Source verified by EthereumHistory.
Key Facts
Description
This contract is the first of 1,374 identical Wallet contracts. It is an owner-controlled multi-purpose wallet that accepts ETH via a payable fallback, forwards ETH out via an owner-only transfer(address, uint256), sweeps ERC-20 tokens via transferToken(address, address, uint256), allows ownership handover via changeOwner(address), and implements the ERC-223 tokenFallback(address, uint256, bytes) receiver so it can accept ERC-223 tokens without them being trapped.
The source was reconstructed and matches the on-chain runtime code byte-for-byte (836 code bytes) when compiled with solc 0.4.15+commit.bbb8e64f optimizer ON runs=200. Only the trailing 34-byte Swarm/CBOR metadata hash differs from source-formatting delta.
Proof: cartoonitunes/awesome-ethereum-proofs, folder wallet-erc223-0x850c3bea.
Source Verified
Exact match on 836 code bytes with solc 0.4.15 optimizer ON runs=200. Only the trailing 34-byte Swarm metadata hash differs (source formatting delta). Cluster: 1,374+ identical-runtime deployments.
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
Source verified through compiler archaeology and exact bytecode matching.
View Verification ProofShow source code (Solidity)
// Submitted by EthereumHistory (ethereumhistory.com)
pragma solidity ^0.4.13;
contract ERC20Basic {
uint256 public totalSupply;
function balanceOf(address who) constant returns (uint256);
function transfer(address to, uint256 value) returns (bool);
event Transfer(address indexed from, address indexed to, uint256 value);
}
library SafeMath {
function mul(uint256 a, uint256 b) internal constant returns (uint256) {
uint256 c = a * b;
assert(a == 0 || c / a == b);
return c;
}
function div(uint256 a, uint256 b) internal constant returns (uint256) {
uint256 c = a / b;
return c;
}
function sub(uint256 a, uint256 b) internal constant returns (uint256) {
assert(b <= a);
return a - b;
}
function add(uint256 a, uint256 b) internal constant returns (uint256) {
uint256 c = a + b;
assert(c >= a);
return c;
}
}
contract BasicToken is ERC20Basic {
using SafeMath for uint256;
mapping(address => uint256) balances;
function transfer(address _to, uint256 _value) returns (bool) {
balances[msg.sender] = balances[msg.sender].sub(_value);
balances[_to] = balances[_to].add(_value);
Transfer(msg.sender, _to, _value);
return true;
}
function balanceOf(address _owner) constant returns (uint256 balance) {
return balances[_owner];
}
}
contract Wallet {
address owner;
function Wallet() {
owner = msg.sender;
}
function changeOwner(address _owner) returns (bool) {
require(owner == msg.sender);
owner = _owner;
return true;
}
function transfer(address _to, uint _value) returns (bool) {
require(owner == msg.sender);
require(_value <= this.balance);
_to.transfer(_value);
return true;
}
function transferToken(address _token, address _to, uint _value) returns (bool) {
require(owner == msg.sender);
BasicToken token = BasicToken(_token);
require(_value <= token.balanceOf(this));
token.transfer(_to, _value);
return true;
}
function () payable {}
function tokenFallback(address _from, uint _value, bytes _data) {
(_from); (_value); (_data);
}
}External Links
Related contracts
BancorQuickConverter
Same eraBancor's October 2017 router contract, converting tokens along a path of Bancor converters in one transaction.
0xf87a7e...dd38b1October 22, 2017BancorConverterExtensions
Same eraThe first BancorConverterExtensions, the lookup contract pointing Bancor converters at the current formula, gas price limit and quick converter.
0x97b155...64b103October 22, 2017Asteroid
Same eraERC20 token built on OpenZeppelin v1.3.0 with owner-restricted burn function. Deployed during the 2017-2018 ICO era.
0xd86e37...474375October 24, 2017CRYPTOCTEST
Same eraCryptoCats pre-launch test contract (Nov 2017). The first version to introduce cat names and the allInitialOwnersAssigned() initialization pattern.
0xd23ade...718456November 11, 2017Contract 0x000141...106902
Same eraExchange deposit wallet (UserWallet). Owner-only ETH collection and ERC-20 token sweeping with Deposit event logging.
0x000141...106902December 13, 20170xBitcoin
Same eraThe original EIP-918 mineable token, Bitcoin's proof-of-work on Ethereum
0xb6ed76...405b31February 6, 2018