Standard ethereum.org tutorial token (Homestead, Mar 2016): name/symbol/decimals metadata, a public balanceOf mapping and an overflow-checked transfer firing th
Historical Significance
The canonical 'create your own token' contract from the ethereum.org tutorial, one of the most-copied teaching contracts of the Homestead era.
Context
Compiled with soljson-v0.2.0 (optimizer ON); exact match of the 716-byte runtime. One of 212 byte-identical deployments.
Token Information
Key Facts
Source Verified
Exact runtime bytecode match. Runtime: 716 bytes (byte-for-byte), compiled with soljson-v0.2.0+commit.4dc2445e, optimizer ON. The on-chain creation (1408 bytes) appends ABI-encoded constructor args (initialSupply, tokenName, decimalUnits, tokenSymbol) to the init code; the 716-byte runtime is the shared cluster invariant.
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)
contract Token {
string public name;
string public symbol;
uint8 public decimals;
mapping (address => uint256) public balanceOf;
event Transfer(address indexed from, address indexed to, uint256 value);
function Token(uint256 initialSupply, string tokenName, uint8 decimalUnits, string tokenSymbol) {
balanceOf[msg.sender] = initialSupply;
name = tokenName;
symbol = tokenSymbol;
decimals = decimalUnits;
}
function transfer(address _to, uint256 _value) {
if (balanceOf[msg.sender] < _value) throw;
if (balanceOf[_to] + _value < balanceOf[_to]) throw;
balanceOf[msg.sender] -= _value;
balanceOf[_to] += _value;
Transfer(msg.sender, _to, _value);
}
}