A simple name registry contract with reserve, transfer, setAddr, and disown functionality, deployed on Frontier Day 6.
Key Facts
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
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.
Frontier Era
The initial release of Ethereum. A bare-bones implementation for technical users.
Bytecode Overview
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;
}
}
}