The October 2015 prototype that was actually used, with eight Transfer events. Balances sit in a public mapping named balances and are read through a balanceOf function. Supply 132,325,360.
Historical Significance
The fifth distinct build in the October 2015 run that first brought balanceOf, transfer and the Transfer event together on Ethereum mainnet, in block 447,432 on 27 October 2015, and one of the two builds in that run that ever moved a balance. It emitted eight Transfer events. The naming was rearranged again here: the public mapping is called balances and balanceOf is a real function reading from it, which is the arrangement every later token settled on and the one ERC-20 requires. The earlier builds in the run had tried the mapping itself named balanceOf. Deployed twenty three days before ERC-20 was proposed as ethereum/EIPs issue #20 on 19 November 2015.
Key Facts
Description
Deployed 27 October 2015 by 0xB1a2B43A7433dd150BB82227eD519Cd6b142d382. The storage mapping is renamed from balanceOf to balances and made public, so it answers on selector 0x27e235e3, and a separate balanceOf function supplies the conventional 0x70a08231. transfer returns false on an insufficient balance and emits an unindexed Transfer. The constructor was passed 132,325,360. Runtime 625 bytes. Eight Transfer events were emitted over its life.
Source recovered by compiling against solc v0.1.6+commit.d41f8b7c with the optimizer off, reproducing both the deployed runtime and the creation bytecode exactly.
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
Source verified through compiler archaeology and exact bytecode matching.
View Verification ProofShow source code (Solidity)
// Submitted by EthereumHistory (ethereumhistory.com)
contract MyToken {
event Transfer(address _from, address _to, uint256 _value);
function MyToken(uint supply) {
if (supply == 0) supply = 10000;
balances[msg.sender] = supply;
}
function transfer(address _to, uint256 _value) returns (bool success) {
if (balances[msg.sender] < _value) return false;
balances[msg.sender] -= _value;
balances[_to] += _value;
Transfer(msg.sender, _to, _value);
return true;
}
function balanceOf(address _owner) constant returns (uint256 balance) {
return balances[_owner];
}
mapping (address => uint) public balances;
}External Links
Related contracts
MyToken
Same deployerThe first contract on Ethereum mainnet to carry balanceOf, transfer and a Transfer event together, deployed 23 October 2015. Supply 1,000,000, and it was never used.
0x3c655c...58b017October 23, 2015Contract 0xe65129...ec0c13
Same deployerThe same token code as 0x3C655ccb35666579511489af88153517fc58b017, the first contract on mainnet with balanceOf, transfer and Transfer, redeployed the same afternoon with a supply of 1,000.
0xe65129...ec0c13October 23, 2015MyToken
Same deployerThe October 2015 prototype where balances moved into a public mapping named balanceOf, with a lower case balanceof function returning the same value. Supply 200,000, never used.
0xcae62d...7a2b8bOctober 23, 2015Contract 0x11485c...304094
Same deployerIdentical token code to 0xCAe62D22E8480b230d7aD93039167a0FfA7A2B8B, redeployed four minutes later with the same 200,000 supply. No transfer was ever made.
0x11485c...304094October 23, 2015MyToken
Same deployerByte identical to 0xE274d18EF7b194A1EDEbB04cfE297CFe1489ef65 and deployed two minutes and twelve seconds later from a different account. Supply 10,000, and the one call that reached it emitted no Transfer event.
0x005762...515a2cOctober 26, 2015MyToken
Same deployerThe October 2015 prototype where the Transfer event gained its indexed parameters, the form ERC-20 later required. Supply 10,000, never used.
0x22d9d0...79e949October 27, 2015