Back to Home

dopecoin

Unknown
0xff2947b1851b...8d29600f9d6a
FrontierExact Bytecode Match
Deployed September 22, 2015 (10 years ago)Block 271,040

A Frontier-era subcurrency with dual-send pattern: direct transfers and exchange-authorized transfers. Deployed Sep 21 2015.

Token Information

Token Name
dopecoin

Key Facts

Deployment Block
271,040
Deployment Date
Sep 22, 2015, 03:26 AM
Code Size
1.9 KB
Gas at Deploy
514,959

Description

One of the earliest subcurrency contracts on Ethereum mainnet, deployed just 43 days after network launch. This contract implements a coin with two transfer modes:

Basic send: send(address, uint) — direct peer-to-peer transfer, returns 1 on success or 0 if insufficient balance.

Exchange-authorized send: send(address, uint, address exchange) — allows an exchange contract to transfer tokens on behalf of its own address. The caller must be the exchange itself (msg.sender == exchange), making this an early on-chain access control pattern for exchange integration.

The contract stores its name as bytes32 (not string), typical for Frontier-era contracts before dynamic string support was common. All non-view functions return uint (0=fail, 1=success) rather than using reverts or bool returns — a pattern from the early Solidity era.

Compiled with soljson v0.1.1 (emscripten build, no optimizer). The native C++ v0.1.1 build produces different getter ordering due to C++ set<Declaration*> pointer comparison vs JS heap allocation order.

Source Verified

SolidityExact bytecode match(1,910 bytes)
Compiler: soljson

Heuristic Analysis

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

Detected Type: Unknown

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,910
Unique Opcodes141
Jump Instructions50
Storage Operations30

Verified Source Available

Source verified through compiler archaeology and exact bytecode matching.

View Verification Proof
Show source code (Solidity)
contract Coin {
    mapping (address => uint) public balance;
    address public issuer;
    bytes32 public name;

    event CoinTransfer(address from, address to, uint256 amount);
    event CoinIssue(address issuer, address to, uint256 amount);

    function Coin(bytes32 _name) {
        issuer = msg.sender;
        name = _name;
    }

    function send(address account, uint amount) returns (uint) {
        if (balance[msg.sender] < amount) return 0;
        balance[msg.sender] -= amount;
        balance[account] += amount;
        CoinTransfer(msg.sender, account, amount);
        return 1;
    }

    function send(address account, uint amount, address exchange) returns (uint) {
        if (msg.sender != exchange) return 0;
        if (balance[exchange] < amount) return 0;
        balance[exchange] -= amount;
        balance[account] += amount;
        CoinTransfer(exchange, account, amount);
        return 1;
    }

    function issueCoin(address account, uint amount) returns (uint) {
        if (msg.sender != issuer) return 0;
        balance[account] += amount;
        CoinIssue(msg.sender, account, amount);
        return 1;
    }

    function changeIssuer(address newIssuer) returns (uint) {
        if (msg.sender != issuer) return 0;
        issuer = newIssuer;
        return 1;
    }
}

External Links