The October 2015 prototype where balances moved into a public balanceOf mapping, with a lower case balanceof function returning the same value.
Historical Significance
The third deployment in the October 2015 run that first brought balanceOf, transfer and the Transfer event together on Ethereum mainnet, in block 427,248 on 23 October 2015, twelve minutes after 0xe6512959d9cAA531c260E97C731BA0C821EC0C13 and from the same account, 0xB1a2B43A7433dd150BB82227eD519Cd6b142d382. It is where the code grew from 508 to 625 bytes. The balance mapping was made public and named balanceOf, and a separate lower case balanceof function was added beside it, so the compiler generated getter answers balanceOf(address) while the hand written function answers balanceof(address), both returning the same value. Deployed twenty seven days before ERC-20 was proposed as ethereum/EIPs issue #20 on 19 November 2015, at a point when no naming convention for reading a token balance had been agreed anywhere.
Context
Ethereum's Frontier network went live on 30 July 2015. Contracts were compiled and deployed from the geth console, there was no test network in common use, and the material people copied from was the ethereum.org tutorials, the Solidity documentation and the go-ethereum wiki. Almost everything deployed in these months is somebody trying the tools.
Key Facts
Description
Deployed 23 October 2015 by 0xB1a2B43A7433dd150BB82227eD519Cd6b142d382. The storage is a public mapping named balanceOf, which gives selector 0x70a08231, and the contract also declares a function balanceof spelled entirely in lower case, selector 0x3d64125b, whose body returns the same slot. The two bodies compile to identical bytes, so the dispatcher is the only place in the runtime that records which name is which. transfer returns false on an insufficient balance and emits an unindexed Transfer. Constructor supply 200,000. Runtime 625 bytes. Its only transaction is its creation. 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 {
mapping (address => uint) public balanceOf;
event Transfer(address _from, address _to, uint256 _value);
function MyToken(uint supply) {
if (supply == 0) supply = 10000;
balanceOf[msg.sender] = supply;
}
function transfer(address _to, uint256 _value) returns (bool success) {
if (balanceOf[msg.sender] < _value) return false;
balanceOf[msg.sender] -= _value;
balanceOf[_to] += _value;
Transfer(msg.sender, _to, _value);
return true;
}
function balanceof(address _owner) constant returns (uint256 balance) {
return balanceOf[_owner];
}
}External Links
Related contracts
Wallet
Same deployerGav Wood's multi-sig, daily-limited wallet: the shared implementation that 111 Frontier-era 49-byte forwarders CALLCODE into.
0x273930...2220a2August 20, 2015Wallet
Same deployerA 49-byte CALLCODE forwarder for an early Ethereum multi-sig wallet, delegating every call to Gav Wood's shared wallet library.
0xf5d2ae...8d9533August 20, 2015Wallet
Same deployerA 49-byte CALLCODE forwarder for an early Ethereum multi-sig wallet, delegating every call to Gav Wood's shared wallet library.
0x0ace96...0d68b1September 15, 2015Wallet
Same deployerA 49-byte CALLCODE forwarder for an early Ethereum multi-sig wallet, delegating every call to Gav Wood's shared wallet library.
0xbda7ae...d15497September 15, 2015Wallet
Same deployerA 49-byte CALLCODE forwarder for an early Ethereum multi-sig wallet, delegating every call to Gav Wood's shared wallet library.
0x035e62...4c3b00September 28, 2015MyToken
Same deployerThe first contract on Ethereum mainnet to carry balanceOf, transfer and a Transfer event together, deployed 23 October 2015 with a supply of 1,000,000.
0x3c655c...58b017October 23, 2015