A mineable subcurrency where claimMiningReward() mints 1 token to block.coinbase once per block. Deployed Jun 16 2016.
Key Facts
Description
An early proof-of-work mining mechanic implemented in Solidity. The claimMiningReward() function mints 1 token to block.coinbase (the address of the miner who produced the current block), but only once per block number — preventing multiple claims in a single block.
This pattern extends the classic ethereum.org coin tutorial with a mining layer: tokens are distributed to miners in proportion to their block production, creating a mineable ERC-20-style token before the ERC-20 standard was formalized.
The miningReward mapping records which address claimed each block's reward (mapping(uint => address)), functioning as both a guard against double-claiming and a historical ledger of which miner earned each block.
Deployed June 16 2016 — six days after solc v0.3.3 was released (June 10 2016). Almost certainly compiled with the latest available version.
Compiler discovery: Native C++ solc v0.1.5–v0.2.1 all produce 340 bytes due to aggressive bool-return deduplication. The JS emscripten build of v0.3.3 preserves ISZERO ISZERO canonicalization and separate bool return paths, yielding the correct 352 bytes.
Source Verified
Historian Categories
Heuristic Analysis
The following characteristics were detected through bytecode analysis and may not be accurate.
Homestead Era
The first planned hard fork. Removed the canary contract, adjusted gas costs.
Bytecode Overview
Verified Source Available
Source verified through compiler archaeology and exact bytecode matching.
View Verification ProofShow source code (Solidity)
contract token {
mapping (address => uint) public coinBalanceOf;
mapping (uint => address) miningReward;
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 claimMiningReward() {
if (miningReward[block.number] == 0) {
coinBalanceOf[block.coinbase] += 1;
miningReward[block.number] = block.coinbase;
}
}
}External Links
Related contracts
token
Same deployerThe 2015 ethereum.org tutorial token: one balance mapping, the whole supply to the creator, and a sendCoin that predates ERC-20 transfer.
0xe222d4...d7344eJune 2, 2016token
Same eraBare Homestead-era token (Mar 14 2016): public balanceOf mapping + a single unchecked transfer firing the standard Transfer event.
0xc77f06...494c69March 14, 2016DinastyCoinToken
Same eraHomestead-era transfer-only token, DinastyCoinToken (DCT), fixed supply 200000000 and 6 decimals.
0x3693fd...c11466March 14, 2016token
Same eraMinimal Homestead-era token shell (Mar 14 2016): just a public balanceOf mapping and its compiler-generated getter, with no other functions.
0x38e1da...41a81aMarch 14, 2016sultancoin
Same eraA fixed-supply token with direct transfers only, deployed March 2016.
0x9a11ff...0b797dMarch 15, 2016666🐏
Same eraSix hundred and sixty six units, named and ticketed with a ram emoji.
0x7684aa...d0ed06March 16, 2016