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

Deployments

ENS is multichain (read more here) and can be used in any application. In addition to being able to query many address formats and record types, data can be stored practically anywhere. However, resolution needs to start somewhere, so the entrypoint for resolution is Ethereum Mainnet, alongside the most popular testnets.

Ethereum Mainnet
BaseArbitrumOffchain...

Deployments

Below you will find an abbreviated list of our latest contract deployments. The source of truth for ENS contract deployments is the ensdomains/ens-contracts repository.

Mainnet

Interact with ENS on Ethereum Mainnet via app.ens.domains.

ContractAddress
Registry0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e
Base Registrar0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85
ETH Registrar Controller (Latest)0x59E16fcCd424Cc24e280Be16E11Bcd56fb0CE547
Wrapped ETH Registrar Controller0x253553366Da8546fC250F225fe3d25d0C782303b
DNS Registrar0xB32cB5677a7C971689228EC835800432B339bA2B
L1 Reverse Registrar0xa58E81fe9b61B5c3fE2AFD33CF304c454AbFc7Cb
Default Reverse Registrar0x283F227c4Bd38ecE252C4Ae7ECE650B0e913f1f9
Name Wrapper0xD4416b13d2b3a9aBae7AcD5D6C2BbDBE25686401
Public Resolver0xF29100983E058B709F3D539b0c765937B804AC15
Universal Resolver0xeEeEEEeE14D718C2B47D9923Deab1335E144EeEe

Sepolia (ENSv2 Beta)

For name resolution to use the hackathon deployment, the Universal Resolver address built into viem and ethers must be overwritten once in your code with the hackathon Universal Resolver (UpgradableUniversalResolverProxy in the table below):

Viem
import { createPublicClient, http } from 'viem'
import { sepolia } from 'viem/chains'
 
// Sepolia with the hackathon Universal Resolver instead of the built-in one
const hackathonSepolia = {
  ...sepolia,
  contracts: {
    ...sepolia.contracts,
    ensUniversalResolver: {
      address: '0xd26f2040d083af1cd2962ba303f4bea0c4faf142',
    },
  },
} as const
 
const client = createPublicClient({
  chain: hackathonSepolia,
  transport: http(),
})
 
// getEnsAddress, getEnsName, getEnsText, ... now resolve
// against the hackathon deployment
ContractAddress
BatchRegistrar0xc8efa80d9f645b26bacd1bae8638492df3bae8ca
ContractNamer0x21a2b577709727119f1901314e0ba0150eafa15e
DefaultReverseRegistrarAdapter0x0a8d7ed4061548fb3cb192d0cbe9e1a57b3b1ae9
DNSAliasResolver0x005a3bf1d92ebe4b1e1641a0c6fa49f38e1762a6
DNSSECGatewayProvider0xfedb5c2fea17cef8547d534c3125f7601d3e30bd
DNSTLDResolver0x10107255fda20ab6c37a0efca1e9465f25066a00
DNSTXTResolver0x0ebc944ac29f91cc24ee507a2d46aa4901bbc748
ENSV1Resolver0x1f11e5b8bca2ccfe13bd8431853db159c4e9849c
ENSV2Resolver0xb1b2d8c4d4886d0d567b6a6b8a4b885229fafae4
ETHRegistrar0x7d1b7f586a62ac3f54b9a396849757814283270b
ETHRegistry0x1d78834d97c1d7b1a38c1dedbd1a287cfed3971e
ETHRenewerV10x47bc0ab8f87db01383255e564cce92956ecc7c70
Graveyard0x2c29661b216717650ba6d4836b2bd37a0fe19adb
HCAOwnerAndSessionValidator0xeb099163a41912a94e56b2143feb6eb7979a51f0
HCAUpgradeSet0xde59f9285edbe391fc32d3cba8909ea047cc0fc3
LabelStore0xd7351f76866123a7e49381f38a30a96adba7e855
LockedMigrationController0x7fa65c83dd80cca2fbd91e16a6dc4f66b64efe22
ManagedUniversalResolverProxy0x1abed09f1f36383f27cf0b3a5e0ea1738e1fd921
MigrationHelper0x540f222a6fd9a54e77989556f366940d1ad81aec
MockDAI0x93403a98c3a6be906585cd0d68447c0fc600fb38
MockRegistrationIntentExecutor0x9675de20abf0216d07e3f5782dd92d0c7d3bb2cb
MockUSDC0xcbfd80f74375c54e545af34788ff465f96f66f05
PermissionedResolverImpl0xa9d3814ab151bf6e37a427432795371a8361614e
PublicResolverSet0x3866e84b54a78d1e3778421e0fbf3607fa9c402f
PublicResolverV20xf9de4979ddb290baf5b760d0e788125017bc33f6
RegistryUpgradeSet0x658c43979721b6d30d173ea09622f2475761b382
ReverseRegistrarAdapter0x67ee68067c74cb3ab595fb793860f98c8a0283f7
RootBatchRegistrar0x9b30da91c1a3fb972d5a7d102390598d5ca70376
RootRegistry0xe7f0d5724f8337e3aa9a9910540341ff4273fed9
StandaloneHCAFactory0xb85152a8ef4db5caf37af6bffce66b559a9c0b58
StandaloneHCAImplementation0x7328a1926b45f0339913ab654fb98d1a0f5ec894
StandardRentPriceOracle0xfeba6589b5c1b35875c0389ccedf83148b6ee71b
TestnetV1PremigrationRegistrar0x1a8c627dc167bcf6b991e9d6e0a76e2dfab7ee88
UniversalHelper0x1d4cd7545d456f3b6a7e4380182279afcfa887b6
UniversalResolverV20xfea8d4b7fcce0b8765c793d6695eac384aaa458f
UnlockedMigrationController0x97494264ad5437611cc2f43987c21f6f352d786a
UpgradableUniversalResolverProxy0xd26f2040d083af1cd2962ba303f4bea0c4faf142
UserRegistryImpl0x47b442d0cf617c41cabaff5f02f44dd1e5f72546
VerifiableFactory0x894bc9cc8ff1ad96b8a288c86a8c71d662c07780
WrapperRegistryImpl0x7c53b9dcef516662e9e8a229448cac30b90673cd

Sepolia (Legacy)

ContractAddress
Registry0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e
Base Registrar0x57f1887a8bf19b14fc0df6fd9b2acc9af147ea85
ETH Registrar Controller0xfb3cE5D01e0f33f41DbB39035dB9745962F1f968
DNS Registrar0x5a07C75Ae469Bf3ee2657B588e8E6ABAC6741b4f
L1 Reverse Registrar0xA0a1AbcDAe1a2a4A2EF8e9113Ff0e02DD81DC0C6
Default Reverse Registrar0x4F382928805ba0e23B30cFB75fC9E848e82DFD47
Name Wrapper0x0635513f179D50A207757E05759CbD106d7dFcE8
Public Resolver0xE99638b40E4Fff0129D56f03b55b6bbC4BBE49b5
Universal Resolver0xeEeEEEeE14D718C2B47D9923Deab1335E144EeEe

Holesky

Interact with ENS on the Holesky testnet via holesky.app.ens.domains.

ContractAddress
Registry0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e
Base Registrar0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85
ETH Registrar Controller0xFce6ce4373CB6E7e470EAa55329638acD9Dbd202
DNS Registrar0x458d278AEd4cE82BAeC384170f39198b01B8351c
L1 Reverse Registrar0x132AC0B116a73add4225029D1951A9A707Ef673f
Default Reverse Registrar0x169835AC9057d22494Be5De9Cc26B460D93b1612
Name Wrapper0xab50971078225D365994dc1Edcb9b7FD72Bb4862
Public Resolver0x6925affDa98274FE0376250187CCC4aC62866dCd
Universal Resolver0xeEeEEEeE14D718C2B47D9923Deab1335E144EeEe

But what about multichain?

While the core ENS protocol lives on Ethereum Mainnet, it can be used to resolve data for any chain!

Offchain / L2 ResolversLearn more about ENS on Layer 2 and offchain solutions