Back to Home

GlobalRegistrar

registrar
0x33990122638b...37f1a891a70c
FrontierContract #1,521Source VerifiedEdit this contract
Deployed September 24, 2015 (10 years ago)Block 282,880

The canonical name registration contract hardcoded into go-ethereum — Ethereum's first mainnet naming system, mapping human-readable strings to addresses. A dir

Frontier EraVerified Source

Historical Significance

The GlobalRegistrar is the direct architectural ancestor of ENS (Ethereum Name Service). As the first mainnet name registration system, it established the pattern of owner-controlled on-chain name resolution. Its hardcoded address in go-ethereum v1.0+ meant every geth user was silently relying on this contract from 2015. The "TODO: bidding mechanism" comment in the verified source captures the unfulfilled ambition that ENS would later fulfill.

Context

Ethereum Frontier had been live for only 55 days when this contract was deployed in September 2015. NatSpec — the system for attaching human-readable documentation to Solidity contracts — was a feature from Gavin Wood's original Yellow Paper specification. To make NatSpec functional on mainnet, go-ethereum required three on-chain contracts (GlobalRegistrar, HashReg, UrlHint) to be deployed and hardcoded into the client. The deployer set up all three in rapid succession and bootstrapped the registry. At this point there were no visual wallets or user-facing name resolution — the system was purely developer infrastructure, used when compiling and deploying contracts via geth's console.

Key Facts
Deployment Block
282,880
Deployment Date
Sep 24, 2015, 11:06 AM
Code Size
2.8 KB
Gas at Deploy
779,965
Transactions by Year
2015305
20169,063
20211
20221,779
20256

Description

Deployed on September 24, 2015 (block 282,880, ~55 days after Frontier launch), the GlobalRegistrar was Ethereum's first on-chain name registry. It maps human-readable strings to Ethereum addresses, enabling the go-ethereum client to resolve names like "HashReg" and "UrlHint" to their deployed contract addresses on mainnet.

The contract was deployed by a go-ethereum core developer and immediately hardcoded into the go-ethereum client as GlobalRegistrarAddr = "0x33990122638b9132ca29c723bdf037f1a891a70c" // frontier in the file common/registrar/registrar.go. It forms part of a three-contract name resolution system embedded in go-ethereum:

  1. GlobalRegistrar (this contract): Name string → Address (Owner)
  2. HashReg (0x23bf622b5a65f6060d855fca401133ded3520620): Key Hash → Content Hash
  3. UrlHint (0x73ed5ef6c010727dfd2671dbb70faac19ec18626): Content Hash → URL Hint

This infrastructure powered go-ethereum's NatSpec documentation system (which linked contract ABIs to human-readable documentation via on-chain URLs) and its eth:// URL resolver. Within blocks of deploying the GlobalRegistrar, the deployer called reserve() to register both "HashReg" and "UrlHint" — bootstrapping the naming system so that go-ethereum could locate the other infrastructure contracts automatically.

The full Solidity source code was later verified on Etherscan (compiled with solc v0.1.1). It includes a notable comment frozen into the code: "TODO: bidding mechanism" — revealing that a name auction system was planned but never implemented. This gap in the design was later addressed by ENS (Ethereum Name Service), which launched in 2017 and introduced a complete auction-based name registration system. The GlobalRegistrar's successor architecture directly influenced ENS.

The deployer registered the contract under the names that go-ethereum's codebase expected, ensuring every geth user from 2015 onward was interacting with this specific on-chain deployment when resolving names or accessing NatSpec documentation.

Source Verified

Etherscan verified

Historian Categories

Registry
Heuristic Analysis

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

Detected Type: registrar

Bytecode Overview

Opcodes2,894
Unique Opcodes147
Jump Instructions72
Storage Operations62

External Links