Back to Home

NameReg

Registry
0xc076cf70c54c...52564fa339a5
FrontierContract #20Source Verified
Deployed August 7, 2015 (10 years ago)Block 50,500

A simple name registry contract with reserve, transfer, setAddr, and disown functionality, deployed on Frontier Day 6.

Key Facts

Deployment Block
50,500
Deployment Date
Aug 7, 2015, 11:31 PM
Code Size
577.0 B
Gas at Deploy
170,051
Transactions by Year
20226

Description

A name registry contract deployed at block 50,500 (August 13, 2015). Users can reserve names (bytes32 keys), set an address for each name, transfer ownership, and disown entries. Uses a simple struct with address and owner fields. The deployer (0xb7576e9d31) deployed four contracts total during Frontier.

Source Verified

SolidityNear-exact bytecode match
Compiler: soljson

near_exact_match: all 4 selectors confirmed via openchain.xyz (reserve, transfer, setAddr, disown). Source structure reconstructed from bytecode analysis. Exact bytecode match not achieved due to 0.3.x dispatch codegen differences.

Heuristic Analysis

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

Detected Type: Registry

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

Opcodes577
Unique Opcodes94
Jump Instructions26
Storage Operations18

Verified Source Available

This contract has verified source code.

Show source code (Solidity)
contract NameReg {
    struct Record {
        address addr;
        address owner;
    }

    mapping(bytes32 => Record) records;

    function reserve(bytes32 name) {
        if (records[name].owner == 0) {
            records[name].owner = msg.sender;
        }
    }

    function transfer(bytes32 name, address newOwner) {
        if (records[name].owner == msg.sender) {
            records[name].owner = newOwner;
        }
    }

    function setAddr(bytes32 name, address addr) {
        if (records[name].owner == msg.sender) {
            records[name].addr = addr;
        }
    }

    function disown(bytes32 name, address recipient) {
        if (records[name].owner == msg.sender) {
            records[name].addr = recipient;
            records[name].owner = 0;
        }
    }
}

External Links