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
RootRegistryTBD
ETHRegistryTBD
ReverseRegistryTBD
ETHRegistrarTBD
BatchRegistrarTBD
StandardRentPriceOracleTBD
PermissionedResolverImplTBD
UserRegistryImplTBD
WrapperRegistryImplTBD
VerifiableFactoryTBD
UniversalResolverV2TBD
HCAFactoryTBD
LockedMigrationControllerTBD
UnlockedMigrationControllerTBD
DNSAliasResolverTBD
DNSTLDResolverTBD
DNSTXTResolverTBD
ENSV2ResolverTBD
ENSV1ResolverTBD
ReverseRegistrarHCAAdapterTBD
DefaultReverseRegistrarHCAAdapterTBD