Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

ENSv2 Overview

Welcome to the next evolution of the Ethereum Name Service!

ENSv2 introduces a suite of upgraded smart-contracts designed to make the protocol more scalable, modular and future-proof. This section will outline the high-level architecture, guiding principles and migration strategy for ENSv2.

What's new in ENSv2?

  • Hierarchical Registries - While ENSv1 used a single flat registry for all names, ENSv2 uses a hierarchical model where a full name like sub.alice.eth is a chain of entries across registries linked by subregistry pointers. Name owners can deploy their own subname registry on demand. Registries and resolvers are deployed as proxies via the Verifiable Factory.
  • Permissions as Standard - All of the functionality enabled by the Name Wrapper in ENSv1 has been integrated into the core of ENSv2 via a new role-based permission system called Enhanced Access Control.
  • Shorter Grace Period - The grace period has been reduced from 90 days in ENSv1 to 28 days. During this window, the expired name can still be renewed (by anyone, not just the owner). After the grace period, names enter a temporary premium period.
  • Per-Account Resolvers - Rather than sharing a single Public Resolver, every account gets its own Permissioned Resolver proxy with fine-grained per-record permissions and record aliasing.

What hasn't changed?

  • Resolvers - while we have developed new resolver contracts to take advantage of the changed environment enabled by ENSv2, the resolver interface remains the same. Custom resolver implementations are fully supported.
  • True Ownership - ENSv2 continues to prioritize trust minimization, enabling you to own your name fully, without having to worry about interference from centralized third-parties.
  • Truly multi-chain - ENS continues to support all L2s.

Architecture

PageDescription
Registry HierarchyHierarchical registry model, tree structure, resolution, namespace aliasing
Enhanced Access ControlRole-based permission system replacing ENSv1 fuses
ERC1155SingletonGas-optimized token standard with single ownership per token
Mutable Token IDsDynamic token IDs that protect against permission leaks and griefing
Hidden Contract AccountsSmart-account attribution for HCA proxy wallets
Verifiable FactoryDeterministic CREATE2 proxy deployment with on-chain verification

Contracts

PageDescription
Permissioned RegistryTokenized registry managing name ownership, state, and permissions
Permissioned ResolverPer-account resolver with per-record roles and record aliasing
ETH RegistrarCommit-reveal registration and renewal for .eth names
Universal Resolver V2Single entry point for name resolution across the hierarchy
DNS Name ResolutionResolving DNS domain names through the ENS protocol
Reverse ResolutionPrimary names and multi-chain reverse resolution

Guides

PageDescription
MigrationGuide to migrating ENSv1 names (locked, unlocked, unwrapped) to ENSv2
For App DevelopersWhat changes for apps that resolve ENS names
For Contract DevelopersTutorial: build a subname registrar on the Permissioned Registry
Registry TemplateBuilding custom registries, configuration patterns, emancipation
IndexingEvents and functions for building indexers and subgraphs
FAQFrequently asked questions about ENSv2

Deployments (Sepolia)

ContractAddress
ETHRegistry0xDEDB92913A25abE1f7BCDD85D8A344a43B398B67
ETHRegistrar0x8c2E866B439358c41AE05De9cbE8A00BFEFafFcA
StandardRentPriceOracle0xe19D37839F42F7d2694D8C5712f412C66A218161
VerifiableFactory0xD2a632D8a8b67c2c4398c255CbD7aF8dd7236198
UserRegistryImpl0x0F99e7Ea74903AfCB7224d0354fD7428A6f92917
PermissionedResolverImpl0xdcE5205A553573FFd47629327DDdf36186022FfA
HCAFactory0x358680728dEDb552adaA9f5eb5d4395B291Cf943
LockedMigrationController0xF91c34ED840889Ed96F806f882fD50506A336Edb
UnlockedMigrationController0x056138Ef5660F7113a3B0ADC08ac3683310e7FBC
MigrationHelper0x11Cfa7E034DaFB7439cC1CC8b6e547F5C82ad021
USDC (payment token)0xBA11ebdB3f9a2c5946D8629517f06364E53A2E10
DAI (payment token)0x2922bCD677Af690fCD1eCC699519e4bfaBc73fF8