Deployment of new contracts (inc NameWrapper) to Testnet (Goerli/Ropsten)

Following the July audit, I am very happy to announce that today we have deployed the new suite of ENS contracts to the Goerli test network. This is an important step for the ENS protocol to finally release the new suite of contracts to mainnet, which powers the next version of our app as well various community projects that are also in the works.

The new contracts that have been deployed are:

  • NameWrapper
  • New .eth Registrar Controller
  • New Reverse Registrar
  • New Public Resolver
  • Exponential Price Curve Oracle
  • StaticMetadataService

Discovery mechanisms

As usual these contracts can be discovered using ENS directly:

  • NameWrapper - ens.resolver(namehash('eth')).interfaceImplementer('0x1aded71e')
  • New .eth Registrar Controller - ens.resolver(namehash('eth')).interfaceImplementer('0xdf7ed181')
  • New Reverse Registrar - ens.owner(namehash('addr.reverse'))
  • New Public Resolver - ens.resolver(namehash('resolver.ens.eth')).addr()
  • Exponential Price Curve Oracle - ethController.prices()
  • StaticMetadataService - nameWrapper.metadataService()

Addresses Goerli

  • NameWrapper - 0xC5A419AbB14d69945B3A143326B2d825d505714f
  • New .eth Registrar Controller - 0x5913678e207e39F848D0E69Ccd6df46A9c5031FA
  • New Reverse Registrar - 0xD5610A08E370051a01fdfe4bB3ddf5270af1aA48
  • New Public Resolver - 0x121304143ea8101E69335F309e2062d299A234B5
  • Exponential Price Curve Oracle - 0x446C8f1ce718D100a2018B887416cDd4A213E95c
  • Static Metadata Service - 0x9DAfDe161D690d9e18f8021c392B0dBCBf0Cf8cB

Addresses Ropsten

  • NameWrapper - 0xac20FB26fa32925b84F3774a1f72eF3b11aFf8a6
  • New .eth Registrar Controller - 0x8048e0Ed9867A4DBb383b6a908E68926860C0e93
  • New Reverse Registrar - 0x806246b52f8cB61655d3038c58D2f63Aa55d4edE
  • New Public Resolver - 0xAb23B6D05452Fc3a97a9dD3a8C728D34461Ba928
  • Exponential Price Curve Oracle - 0x0e765d28FABf9E219770CAb07D64967451026bD7
  • Static Metadata Service - 0x3bAa5F3ea7bFCC8948c4140f233d72c11eBF0bdB

Developer Details

We are no longer using a different reverse resolver for setting your reverse name, it now uses the PublicResolver. The .eth controller will now be a controller of the NameWrapper and not a controller of the Base Registrar contract (.eth owner). This is because all registrations will now be wrapped by default and the registration functions on the .eth controller go through the Wrapper, which then call the Base Registrar.

The new controller now lets you set additional records in the register function, meaning you can register and create your records at the same time. It uses resolver.multicall underneath, so you can encode the transactions in the same way. It also optionally allows you to set your reverse record

On the discovery mechanisms, we have added the NameWrapper interface to the .eth resolver and the address can be discovered by calling interfaceImplementer() with the wrapper id 0x1aded71e.

The new contracts have not been hooked up to our V2 app (, so you will largely be unable to interact with these contracts using our UI. We will announce when the V3 app has been deployed on testnet, and once that happens we welcome the community to help us thoroughly test the new app and contracts

Next steps

There are a few things that need to be done before we can deploy these to mainnet, a thorough testing on testnet, internally as well as in the community. Once we are happy with that, we will be in a position to deploy the contracts to mainnet and activate them via a DAO wide vote.