Back to Home
GavCoin logo

GavCoin

Token
0xb4abc1bfc403...69858a4b8aa4
HomesteadContract #15KExact Bytecode MatchEdit this contract
Deployed April 26, 2016 (9 years ago)Block 1,408,600

The first deployment of GavCoin, potentially by Gavin Wood himself.

Token Information

Logo
GavCoin logo
via RPC
Token Name
GavCoin

Key Facts

Deployment Block
1,408,600
Deployment Date
Apr 26, 2016, 09:28 PM
Code Size
904.0 B
Gas at Deploy
363,617
Transactions by Year
202550

Description

The contract follows the structure of the original coin.sol reference implementation, which predates ERC-20 standardization and does not include name() or symbol() functions. At deployment, constructor input data encoded the ASCII string “GavCoin,” embedding the name directly into the bytecode. The mine() function remains publicly callable, allowing new units to be created based on elapsed time since the previous mining call, with rewards split between the caller and the current Ethereum block producer.

GavCoin is an Ethereum smart contract deployed on April 26, 2016 whose logic closely matches the coin.sol prototype published by Gavin Wood in February 2015. The contract implements a custom balances mapping, pre-ERC-20 transfer and minting functions, and a publicly callable, payable mine() function.

The contract follows the structure of the original coin.sol reference implementation, which predates ERC-20 standardization and does not include name() or symbol() functions. At deployment, constructor input data encoded the ASCII string "GavCoin," embedding the name directly into the bytecode. The mine() function remains publicly callable, allowing new units to be created based on elapsed time since the previous mining call, with rewards split between the caller and the current Ethereum block producer.

Source Verified

SolidityExact bytecode match(904 bytes)
Compiler: c492d9b

Pre-ERC-20 mineable token from Gavin Wood's coin.sol in ethereum/dapp-bin. Compiled with solc v0.3.1, optimizer enabled. 905 bytes runtime, byte-perfect match.

Historian Categories

Token

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

Opcodes904
Unique Opcodes113
Jump Instructions46
Storage Operations28

Verified Source Available

Source verified through compiler archaeology and exact bytecode matching.

View Verification Proof
Show source code (Solidity)
contract NameReg {
    function addressOf(bytes32 _name) constant returns (address addr) {}
    function register(bytes32 _name) {}
}

contract GavCoin {
    mapping (address => uint) m_balances;
    mapping (address => mapping (address => bool)) m_approved;
    address owner;
    uint m_lastNumberMined;

    function GavCoin() {
        NameReg(nameRegAddress()).register("GavCoin");
        owner = msg.sender;
        m_balances[msg.sender] = 1000000;
        m_lastNumberMined = block.number;
    }

    function named(bytes32 _name) constant returns (address) {
        return NameReg(nameRegAddress()).addressOf(_name);
    }

    function nameRegAddress() constant returns (address) {
        return 0x084f6a99003dae6d3906664fdbf43dd09930d0e3;
    }

    function sendCoinFrom(address _from, uint _val, address _to) {
        if (m_balances[_from] >= _val && m_approved[_from][msg.sender]) {
            m_balances[_from] -= _val;
            m_balances[_to] += _val;
        }
    }
    function sendCoin(uint _val, address _to) {
        if (m_balances[msg.sender] >= _val) {
            m_balances[msg.sender] -= _val;
            m_balances[_to] += _val;
        }
    }
    function coinBalance() constant returns (uint _r) { return m_balances[msg.sender]; }
    function coinBalanceOf(address _a) constant returns (uint _r) { return m_balances[_a]; }
    function approve(address _a) {
        m_approved[msg.sender][_a] = true;
    }
    function isApproved(address _proxy) constant returns (bool _r) { return m_approved[msg.sender][_proxy]; }
    function isApprovedFor(address _target, address _proxy) constant returns (bool _r) { return m_approved[_target][_proxy]; }

    function mine() {
        uint r = block.number - m_lastNumberMined;
        if (r > 0) {
            m_balances[msg.sender] += 1000 * r;
            m_balances[block.coinbase] += 1000 * r;
            m_lastNumberMined = block.number;
        }
    }

    function changeOwner(address _owner) { if(msg.sender==owner) owner = _owner; }
}

External Links

GavCoin - Ethereum History