Bytecode verified via sibling
This contract shares identical runtime bytecode with FirstCoin (0x23e54026...) which has been verified through compiler archaeology.
A copy of the coin contract from the Frontier Guide, the two function token that taught a generation of Ethereum developers to move a balance.
Historical Significance
The coin contract from the Frontier Guide, whose tutorial text lives in the go-ethereum wiki: one public mapping of address to balance, one sendCoin(address,uint256) that checks the sender's balance, moves the amount and fires a CoinTransfer event. There is no allowance, no total supply and no decimals; this predates ERC-20 and is the shape every early token was written against. The guide names the contract token, and that is the name recovered here, since the constructor shares it and so never appears in the dispatch table. Its constructor takes a supply and falls back to 200000000 when zero is passed, written as an if. This copy was deployed with 200000000. The declaration order differs from the guide as it was usually pasted, with the balance mapping written below sendCoin rather than above it, which swaps the two function bodies in the compiled output and is why this bytecode did not match the guide source. Source recovered by exact bytecode match: solc v0.1.2+commit.d0d36e3 with the optimizer off reproduces the creation transaction, code and constructor argument both. Note that this contract was verified on Etherscan under the name FirstCoin, which is not a name the guide uses; Etherscan accepts one verification per address and will not take a correction.
Context
Deployed in 2015 on the Ethereum Frontier network.
Key Facts
Description
The coin contract from the Frontier Guide, whose tutorial text lives in the go-ethereum wiki: one public mapping of address to balance, one sendCoin(address,uint256) that checks the sender's balance, moves the amount and fires a CoinTransfer event. There is no allowance, no total supply and no decimals; this predates ERC-20 and is the shape every early token was written against. The guide names the contract token, and that is the name recovered here, since the constructor shares it and so never appears in the dispatch table. Its constructor takes a supply and falls back to 200000000 when zero is passed, written as an if. This copy was deployed with 200000000. The declaration order differs from the guide as it was usually pasted, with the balance mapping written below sendCoin rather than above it, which swaps the two function bodies in the compiled output and is why this bytecode did not match the guide source. Source recovered by exact bytecode match: solc v0.1.2+commit.d0d36e3 with the optimizer off reproduces the creation transaction, code and constructor argument both. Note that this contract was verified on Etherscan under the name FirstCoin, which is not a name the guide uses; Etherscan accepts one verification per address and will not take a correction.
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 FirstCoin {
event CoinTransfer(address sender, address receiver, uint amount);
function FirstCoin(uint supply) {
if (supply == 0) supply = 200000000;
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;
}
mapping (address => uint) public coinBalanceOf;
}External Links
Related contracts
FirstCoin
Same deployerA copy of the coin contract from the Frontier Guide, the two function token that taught a generation of Ethereum developers to move a balance.
0x23e540...2bdfdbSeptember 25, 2015token
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, 2015