Back to Home

token (miner)

Token
0xa5192cd81bd0...5dd983968a27
HomesteadExact Bytecode Match
Deployed June 17, 2016 (9 years ago)Block 1,718,272

A mineable subcurrency where claimMiningReward() mints 1 token to block.coinbase once per block. Deployed Jun 16 2016.

Key Facts

Deployment Block
1,718,272
Deployment Date
Jun 17, 2016, 06:43 AM
Code Size
352.0 B
Transactions by Year
20161

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

SolidityExact bytecode match(352 bytes)
Compiler: soljson

Heuristic Analysis

The following characteristics were detected through bytecode analysis and may not be accurate.

Detected Type: Token
Has ERC-20-like patterns

Homestead Era

The first planned hard fork. Removed the canary contract, adjusted gas costs.

Block span: 1,150,0001,919,999
March 14, 2016July 20, 2016

Bytecode Overview

Opcodes352
Unique Opcodes88
Jump Instructions15
Storage Operations13

Verified Source Available

Source verified through compiler archaeology and exact bytecode matching.

View Verification Proof
Show 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