The guide's token with its transfer function duplicated under a second name
Historical Significance
The ethereum.org token tutorial is where most people who deployed a token in this period started, and this is its opening form: a balance mapping, a guarded subtraction and the metadata a wallet needs to show a name. It has no allowance, so nothing can spend on a holder's behalf and no exchange or escrow can be given a limit. That gap is exactly what ERC-20 was written to close, and copies like this one are the before picture.
Context
Deployed in September 2015 on the Frontier chain.
Key Facts
Description
The token from the Frontier contract tutorial, unchanged except that sendCoin appears twice: once under its own name and once as sendCoin2, with an identical body. Both check the sender's balance, move the amount between two entries in the balance mapping and emit CoinTransfer. Nothing distinguishes them, so the second is a copy left in place rather than a variant. The whole supply goes to the deployer at construction and there is no approval mechanism, which puts it before the ERC-20 interface.
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 token {
mapping (address => uint) public coinBalanceOf;
event CoinTransfer(address sender, address receiver, uint amount);
function token(uint supply) {
coinBalanceOf[msg.sender] = supply;
}
function sendCoin(address receiver, uint amount) returns(bool sufficient) {
if (coinBalanceOf[msg.sender] < amount) return false;
coinBalanceOf[msg.sender] -= amount;
coinBalanceOf[receiver] += amount;
CoinTransfer(msg.sender, receiver, amount);
return true;
}
function sendCoin2(address receiver, uint amount) returns(bool sufficient) {
if (coinBalanceOf[msg.sender] < amount) return false;
coinBalanceOf[msg.sender] -= amount;
coinBalanceOf[receiver] += amount;
CoinTransfer(msg.sender, receiver, amount);
return true;
}
}External Links
Related contracts
Greeter
Same deployerA Frontier-era Greeter with the message: 'Hello there captain!'
0x5817e8...352f68August 16, 2015Greeter
Same deployerA Frontier-era Greeter with the message: 'Hola!'
0x86cfd9...9ae03dAugust 16, 2015Greeter
Same deployerA Frontier-era Greeter with the message: Hola! (block 97,240)
0xfd8fae...b61974August 16, 2015Greeter
Same deployerA Frontier-era Greeter with the message: 'Hola!'
0x80ca78...6cfa45August 16, 2015Greeter
Same deployerA Frontier-era Greeter with the message: 'Hola!'
0xae0724...4792f2August 16, 2015token
Same deployerThe Frontier Guide's Coin tutorial contract: a pre-ERC-20 token with coinBalanceOf, sendCoin and a CoinTransfer event.
0xe6391f...93554eAugust 16, 2015