The first contract on Ethereum mainnet to carry transfer(address,uint256), deployed 19 August 2015. Balances live in a public mapping, and the transfer returns nothing and emits no event.
Historical Significance
Measured across every contract created on Ethereum mainnet from the Frontier launch on 30 July 2015, this is the first appearance of the function signature transfer(address,uint256), the one method ERC-20 would be built around. It arrives in block 110,635 on 19 August 2015, three months before ERC-20 was proposed as ethereum/EIPs issue #20 on 19 November 2015, and it is the barest possible form of the idea: a balance is moved and nothing else happens. There is no event, so nothing offchain can observe that a transfer occurred, and no return value, so a caller cannot tell success from failure. Closing those two gaps is most of what the standard later did.
Key Facts
Description
Deployed 19 August 2015, three weeks after the Frontier genesis block. Balances live in a public mapping named balances. transfer(address,uint256) checks the sender's balance, returns silently when it is short, and otherwise subtracts and adds. It declares no return value and no event, so a caller has no way to observe whether the transfer happened except by reading balances again. Runtime 344 bytes, optimizer off.
Source recovered by compiling against solc v0.1.3+commit.028f561d, reproducing the deployed runtime exactly. The creation bytecode is not reproduced by any archived build: the contract predates every release in solc-bin, so the constructor was emitted by a development build that was never published. Etherscan compares the runtime, so the source verifies there regardless.
Source Verified
Heuristic Analysis
The following characteristics were detected through bytecode analysis and may not be accurate.
Frontier Era
The initial release of Ethereum. A bare-bones implementation for technical users.
Bytecode Overview
Verified Source Available
This contract has verified source code.
View Verification ProofShow source code (Solidity)
// Submitted by EthereumHistory (ethereumhistory.com)
contract MyToken {
mapping (address => uint) public balances;
function transfer(address _to, uint256 _value) {
if (balances[msg.sender] < _value) return;
balances[msg.sender] -= _value;
balances[_to] += _value;
}
}External Links
Related contracts
token
Same eraAn early ERC-20-like token deployed in Ethereum's first week, built directly from the example in the official Ethereum Frontier Guide documentation.
0x8374f5...46609aAugust 7, 2015token
Same eraA second deployment of the FirstCoin tutorial token by the same creator, 11 blocks after the original — both derived from the official Ethereum Frontier Guide e
0x3b4446...295f52August 7, 2015Contract 0xd958b5...ec4c9f
Same eraEthereum.org tutorial Coin contract deployed on Frontier day 1. Contains a bug: balance(address) ignores its argument and returns msg.sender balance.
0xd958b5...ec4c9fAugust 7, 2015token
Same eraEarly tutorial-derived coin contract compiled with Solidity v0.1.1, deployed 9 days after Ethereum Frontier launch.
0x3c401b...da1634August 8, 2015token
Same eraTutorial-derived coin contract (Solidity v0.1.1), one of multiple token instances deployed by the same address on Aug 8, 2015.
0x33e986...395d13August 8, 2015CoinStub
Same eraCoin tutorial stub — mapping getter + empty function returning default bool.
0x4fb5ac...3b08aeAugust 8, 2015