Architecture
The ETH Registrar system consists of several components:- BaseRegistrar - Owns the .eth TLD and manages name ownership as ERC-721 tokens
- ETHRegistrarController - Handles registration and renewal with commit-reveal process
- BulkRenewal - Utility contract for renewing multiple names in one transaction
- Price Oracles - Determine registration and renewal costs
Key Features
Name Ownership as NFTs
Each .eth name is represented as an ERC-721 NFT, allowing names to be transferred, sold, and managed using standard NFT tools.Grace Period
Names have a 90-day grace period after expiration during which:- The owner can still renew the name
- The name cannot be registered by others
- The owner maintains control in the BaseRegistrar
Controller Pattern
The BaseRegistrar uses a controller pattern for extensibility:- The registrar owner can add/remove controllers
- Controllers can register new names and extend expiries
- Controllers cannot reduce expiry times or change ownership
- This separation provides strong ownership guarantees while allowing innovation
Registration Flow
The ETHRegistrarController uses a two-step commit-reveal process:Step 1: Commit
Step 2: Register
Why Commit-Reveal?
The commit-reveal process prevents frontrunning:- Without it, miners or bots could see your registration transaction and submit their own with higher gas
- The commitment hides the name you want to register using a secret value
- The minimum delay ensures the commitment is included on-chain before you can reveal
- The maximum age prevents commitments from being valid indefinitely
Pricing
Prices are determined by price oracle contracts and typically based on:- Name length - Shorter names cost more
- Duration - Longer registration periods cost more
- Premium decay - Recently expired names may have a temporary premium that decays over time
Audits
These contracts were audited by ConsenSys Diligence. The audit report is available at: https://github.com/ConsenSys/ens-audit-report-2019-02Next Steps
BaseRegistrar
Learn about the core registrar contract
ETHRegistrarController
Understand the registration controller
Price Oracles
Explore pricing mechanisms
Bulk Renewal
Renew multiple names at once