Back to Home

FirstCoin

Token
0x33e98638ea7f...3802af395d13
FrontierSource Verified
Deployed August 8, 2015 (10 years ago)Block 53,054

Tutorial-derived coin contract (Solidity v0.1.1), one of multiple FirstCoin instances deployed by the same address on Aug 8, 2015.

Key Facts

Deployment Block
53,054
Deployment Date
Aug 8, 2015, 11:01 AM
Code Size
634.0 B
Transactions by Year
20155
20247
20253
20261

Description

One of five FirstCoin instances deployed by 0x4b0C6F0297CEe4B551B6fab3277067B64B238990 on August 8, 2015, during the first days of the Ethereum Frontier era. The bytecode is identical across all instances — a minimal coin contract with coinBalanceOf, sendCoin, and CoinTransfer event, compiled with Solidity v0.1.1.

The repeated deployments within hours suggest iterative testing or tutorial experimentation. The contract pattern closely mirrors the coin examples from the Ethereum Frontier Guide. At least nine total FirstCoin deployments occurred between August 8–11, 2015, from four different deployer addresses — making it one of the most replicated early tutorial contracts on mainnet.

See the first instance (0x3c401b518252abe3bbbf898a44939699e7da1634) for full documentation.

Heuristic Analysis

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

Detected Type: Token
Has ERC-20-like patterns

Frontier Era

The initial release of Ethereum. A bare-bones implementation for technical users.

Block span: 01,149,999
July 30, 2015March 14, 2016

Bytecode Overview

Opcodes634
Unique Opcodes83
Jump Instructions14
Storage Operations9

Verified Source Available

This contract has verified source code on Etherscan.

View Source Code
Show source code (Solidity)
contract FirstCoin {
    mapping (address => uint) public coinBalanceOf;

    event CoinTransfer(address sender, address receiver, uint amount);

    function FirstCoin(uint supply) {
        coinBalanceOf[msg.sender] = 1000000;
    }

    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;
    } 
}

External Links