Back to Home

Gold(G)

Token
0xfcaf20485278...1437f7303505
HomesteadExact Bytecode Match
Deployed June 19, 2016 (9 years ago)Block 1,733,382

Standard Token 0.1 template with approveAndCall. Compiled with soljson (emscripten) instead of native C++. One of 82 identical deployments.

Token Information

Token Name
Gold
Symbol
G
Decimals
5

Key Facts

Deployment Block
1,733,382
Deployment Date
Jun 19, 2016, 07:39 PM
Code Size
1.6 KB

Description

The ethereum.org Token 0.1 template compiled with the Emscripten JavaScript build of solc (soljson 0.3.3/0.3.4 with optimizer). Identical source to the Nectarium variant but compiled with a different toolchain, producing different bytecode. 82 identical deployments.

Source Verified

SolidityExact bytecode match(1,680 bytes)
Compiler: v0.3.3+

Exact runtime bytecode match. soljson v0.3.3+commit.4dc1cb14 (Emscripten), optimizer ON. 82 identical siblings.

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

Opcodes1,680
Unique Opcodes126
Jump Instructions79
Storage Operations30

Verified Source Available

Source verified through compiler archaeology and exact bytecode matching.

View Verification Proof
Show source code (Solidity)
contract tokenRecipient { function receiveApproval(address _from, uint256 _value, address _token, bytes _extraData); }

contract MyToken {
    string public standard = "Token 0.1";
    string public name;
    string public symbol;
    uint8 public decimals;
    uint256 public totalSupply;
    mapping (address => uint256) public balanceOf;
    mapping (address => mapping (address => uint256)) public allowance;

    event Transfer(address indexed from, address indexed to, uint256 value);

    function MyToken(uint256 initialSupply, string tokenName, uint8 decimalUnits, string tokenSymbol) {
        balanceOf[msg.sender] = initialSupply;
        totalSupply = initialSupply;
        name = tokenName;
        symbol = tokenSymbol;
        decimals = decimalUnits;
    }

    function transfer(address _to, uint256 _value) {
        if (balanceOf[msg.sender] < _value) throw;
        if (balanceOf[_to] + _value < balanceOf[_to]) throw;
        balanceOf[msg.sender] -= _value;
        balanceOf[_to] += _value;
        Transfer(msg.sender, _to, _value);
    }

    function approveAndCall(address _spender, uint256 _value, bytes _extraData) returns (bool success) {
        allowance[msg.sender][_spender] = _value;
        tokenRecipient spender = tokenRecipient(_spender);
        spender.receiveApproval(msg.sender, _value, this, _extraData);
        return true;
    }

    function transferFrom(address _from, address _to, uint256 _value) returns (bool success) {
        if (balanceOf[_from] < _value) throw;
        if (balanceOf[_to] + _value < balanceOf[_to]) throw;
        if (_value > allowance[_from][msg.sender]) throw;
        balanceOf[_from] -= _value;
        balanceOf[_to] += _value;
        allowance[_from][msg.sender] -= _value;
        Transfer(_from, _to, _value);
        return true;
    }

    function () {
        throw;
    }
}

External Links