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?

  • Native L2 Support – contracts have been designed with cross-chain resolution in mind, building on existing CCIP-Read support in ENSv1.
  • Hierarchical Registries – while ENSv1 used a single flat registry for all names, ENSv2 allows each name to provide its own registry implementation for subnames. This provides name owners and developers with direct control over the ownership and transfer rules for names and subnames.
  • Permissions as Standard - All of the functionality enabled by the Name Wrapper in ENSv1 has been integrated into the core of ENSv2, using a new, highly flexible, role-based permissions model.
  • No Grace Period - The grace period is no longer a part of the ENS protocol, meaning names expire when they say they expire. Upon expiration, names immediately enter into the temporary premium period. The owner of a recently-expired name doesn't have to pay the premium fee during this period.
  • Contract Factories - Rather than relying on large multi-user contracts such as the default public resolver, every name gets its own resolver, and every name with subnames gets its own registry contract. This simplifies the contracts significantly, while offering users new functionality such as the possibility of 'aliasing' multiple domains to the same records.

What hasn't changed?

  • Resolvers - while we have developed new resolver contracts to take advantage of the changed environment enabled by ENSv2, the interface used by resolvers remains the same, and all existing ENSv1 resolvers will continue to work seamlessly in ENSv2.
  • 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.

Registry Architecture

ENSv2 replaces ENSv1's single flat registry with a hierarchical model where each name can have its own registry for managing subnames, and its own resolver for storing records. Names don't exist as single on-chain objects. Instead, a full name like sub.alice.eth is a chain of entries across registries linked by subregistry pointers.

See Registry Hierarchy for the full explanation with diagrams, including subtree operations, namespace aliasing, token representation, and the permissions model.

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-name 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
Registry MetadataERC-1155 metadata providers for registries
DNS Name ResolutionResolving DNS domain names through the ENS protocol
Reverse ResolutionPrimary names and multi-chain reverse resolution

Deployments (Sepolia)

ContractAddress
RootRegistryTBD
ETHRegistryTBD
ReverseRegistryTBD
ETHRegistrarTBD
BatchRegistrarTBD
StandardRentPriceOracleTBD
PermissionedResolverImplTBD
UserRegistryImplTBD
WrapperRegistryImplTBD
VerifiableFactoryTBD
SimpleRegistryMetadataTBD
UniversalResolverV2TBD
HCAFactoryTBD
LockedMigrationControllerTBD
UnlockedMigrationControllerTBD
DNSAliasResolverTBD
DNSTLDResolverTBD
DNSTXTResolverTBD
ENSV2ResolverTBD
ENSV1ResolverTBD
ReverseRegistrarHCAAdapterTBD
DefaultReverseRegistrarHCAAdapterTBD

Guides

PageDescription
MigrationGuide to migrating ENSv1 names (locked, unlocked, unwrapped) to ENSv2
For App DevelopersWhat changes for apps that resolve ENS names
For Contract DevelopersHands-on guide for direct smart contract interaction
Registry TemplateBuilding custom registries, configuration patterns, emancipation
IndexingEvents and functions for building indexers and subgraphs
FAQFrequently asked questions about ENSv2