Deployment of the classic Solidity tutorial Coin contract with a default supply of 5,000 tokens and a CoinTransfer event.
Historical Significance
One of the earliest deployments of the Solidity tutorial Coin contract, the standard introductory example that taught thousands of developers their first smart contract. Compiled with the native C++ Solidity compiler (not the JavaScript/Emscripten build), reflecting the toolchain developers used in late 2015.
Context
Deployed during the Frontier era when Solidity was at version 0.1.6. The official tutorial Coin contract was the "Hello World" of Ethereum development, appearing in documentation and blog posts as the first contract most developers would write and deploy.
Key Facts
Description
An early deployment of the Coin contract from the official Solidity tutorial documentation. The contract implements a simple token with a coinBalanceOf mapping, a sendCoin transfer function, and a CoinTransfer event. The constructor accepts a supply parameter with a fallback default of 1,000 if zero is passed. The deployer initialized it with 5,000 tokens.
The same deployer created a sibling contract (0x283f1161...) at block 490,523 with identical bytecode, 22 blocks later. The deployer created 9 contracts total between blocks 321,934 and 508,110, iterating on token designs during the Frontier era.
Source Verified
Exact bytecode match (init + runtime). 314 bytes creation code + 32 bytes constructor args. Native C++ solc required; soljson matches runtime but not init code.
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 Coin {
mapping(address => uint) public coinBalanceOf;
event CoinTransfer(address sender, address receiver, uint amount);
function Coin(uint supply) {
if (supply == 0) supply = 1000;
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;
}
}