Back to Home
MistCoin logo

MistCoin(MC)

Token
0xf4eced2f682c...13ded8fc95dd
FrontierContract #3,247Exact Bytecode MatchEdit this contract
Deployed November 3, 2015 (10 years ago)Block 483,325

The prototype token that inspired ERC-20, deployed by Fabian Vogelsteller on November 3, 2015, sixteen days before he submitted the ERC-20 proposal.

Token Information

Logo
MistCoin logo
via RPC
Token Name
MistCoin
Symbol
MC
Decimals
2

Key Facts

Deployer
Fabian Vogelsteller(0x9b22a8...079e7f)
Deployment Block
483,325
Deployment Date
Nov 3, 2015, 12:03 PM
Code Size
1.4 KB
Gas at Deploy
322,428
Transactions by Year
201531
20161
20171
20187
20191
20201
202144
202227
202315
202448
20256
20261

Description

MistCoin, deployed by Fabian Vogelsteller on November 3, 2015 as a test token while developing the concept that became ERC-20. The contract implements transfer and balanceOf but not transferFrom, approve, allowance, or totalSupply. Fabian submitted ERC-20 (Issue #20) to the ethereum/EIPs repo on November 19, 2015, sixteen days after deploying this contract. MistCoin is therefore not compliant with the ERC-20 standard even as originally proposed, but it is the prototype token that directly inspired and preceded it.

Source Verified

SolidityExact bytecode match(1,406 bytes)

Source code verified by crypt0biwan. Fabian Vogelsteller's token created to test the ERC-20 standard, deployed November 3, 2015.

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

Opcodes1,406
Unique Opcodes134
Jump Instructions55
Storage Operations35

Verified Source Available

Source verified through compiler archaeology and exact bytecode matching.

View Verification Proof
Show source code (Solidity)
/**
 *Submitted for verification at Etherscan.io on 2025-05-23
*/

contract MyToken {
  /* Public variables of the token */
  string public name;
  string public symbol;
  uint8 public decimals;
  /* This creates an array with all balances */
  mapping (address => uint256) public balanceOf;
  /* This generates a public event on the blockchain that will notify clients */
  event Transfer(address indexed from, address indexed to, uint256 value);
  /* Initializes contract with initial supply tokens to the creator of the contract */
  function MyToken(uint256 _supply, string _name, string _symbol, uint8 _decimals) {
    /* if supply not given then generate 1 million of the smallest unit of the token */
    if (_supply == 0) _supply = 1000000;
    /* Unless you add other functions these variables will never change */
    balanceOf[msg.sender] = _supply;
    name = _name; 
    symbol = _symbol;
    /* If you want a divisible token then add the amount of decimals the base unit has */
    decimals = _decimals;
  }
  /* Send coins */
  function transfer(address _to, uint256 _value) {
    /* if the sender doenst have enough balance then stop */
    if (balanceOf[msg.sender] < _value) throw;
    if (balanceOf[_to] + _value < balanceOf[_to]) throw;
    /* Add and subtract new balances */
    balanceOf[msg.sender] -= _value;
    balanceOf[_to] += _value;
    /* Notifiy anyone listening that this transfer took place */
    Transfer(msg.sender, _to, _value);
  }
}

External Links