Back to Home

registrar.ens.eth

0x57f1887a8bf1...cc9af147ea85
registrar.ens.eth
Source VerifiedEdit this contract
Deployed January 30, 2020 (6 years ago)Block 9,380,410

The .eth registrar that turns every name into an ERC-721 token, redeployed in January 2020 alongside the fixed registry.

Verified Source

Historical Significance

This is the contract that made Ethereum names property. Before it, a .eth name was an entry in a registrar's ledger with ETH locked behind it; after it, a name is a token that any ERC-721 marketplace, wallet or contract already knows how to hold, display and trade, with no ENS specific integration. Name sales, lending and the entire secondary market in .eth names follow from that one decision.

It also priced the namespace. Tying names to an expiry and an annual fee ended the assumption that a name once claimed was claimed forever, which is what made squatting cheap under the auction system.

Context

Three .eth registrars have existed, and this is the third.

The auction registrar at 0x6090A6e47849629b7245Dfa1Ca21D94cd15878Ef ran the sealed bid system from May 2017. The permanent registrar replaced it at midnight UTC on 4 May 2019, ending auctions in favour of instant registration and annual rent, and gave existing holders until 4 May 2020 to migrate. That May 2019 contract is a different address, 0xFaC7BEA255a6990f749363002136aF6556b31e04, which is still on chain and still points at the old registry.

This contract was deployed on 30 January 2020, not in 2019. A critical flaw had been found in the ENS registry, and fixing it meant deploying a new registry, which in turn meant deploying a new .eth registrar bound to it. The two went out six minutes apart on the same night, and it is this pair that .eth has resolved through ever since.

Key Facts
Deployment Block
9,380,410
Deployment Date
Jan 30, 2020, 12:43 AM
Code Size
10.3 KB
Transactions by YearPartial (capped)
202016,560
202133,440

Description

BaseRegistrarImplementation owns the .eth node inside the ENS registry and issues one ERC-721 token per second level name beneath it. The token id is the keccak256 hash of the label, so vitalik.eth is a specific uint256 rather than a string the contract stores, and ownership of that token is ownership of the name. Registration and renewal are not handled here: the registrar keeps a list of authorised controller contracts and only they may call register and renew, which is what lets the pricing and the registration rules change over the years without moving the names.

Each name carries an expiry rather than being held outright. After expiry there is a grace period during which the previous owner alone can renew, and only after that does the name return to the market. This is the mechanism that replaced permanent ownership with annual rent.

Verified on chain: ens() returns 0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e, the registry deployed six minutes before this contract, and baseNode() returns 0x93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae, which is namehash('eth'). It answers ERC-165 and reports support for ERC-721, but not for ERC-721 Metadata: name() and symbol() revert. The friendly names and images that wallets show for .eth are supplied by later contracts wrapped around this one, not by the registrar itself.

Bytecode Overview

Opcodes10,542
Unique Opcodes241
Jump Instructions384
Storage Operations90

External Links

Related contracts