Abstract
This proposal enables five chain-specific reverse resolvers for L2 EVM networks, and one default reverse resolver as a fallback mechanism. The five chains are Arbitrum, Base, Linea, OP Mainnet and Scroll.
This proposal also enables a new .eth registrar controller and sets the reverse record of some currently un-named ENS contracts.
Motivation
The current implementation of reverse resolution is limited to Ethereum Mainnet and assumes that every entity (a generic smart contract or user account) has the same address across every EVM chain. This has been falling out of line with reality given the rise in smart contract accounts, indicating that reverse resolution should be resolved via a namespace for each chain, rather than a single reverse namespace for the Ethereum ecosystem at large.
This functionality defined formally in ENSIP-19, combined with ENSIP-11, enables “L2 Primary Names,” meaning developers can build end-to-end ENS experiences without forcing their users to transact on Ethereum Mainnet.
To support optionally setting the default reverse record at registration time, a new .eth registrar controller must also be enabled. Since new controllers have significant overhead, we are also taking advantage of this opportunity to add a referrer
field for registrations and renewals. This field is emitted unchanged from the registration and renewal events and allows clients to convey information about the source of a registration or renewal for potential DAO-based referral reward schemes (not defined in this proposal).
Specification
-
Call
setResolver
on the ENS registry (registry.ens.eth
) forreverse
with the address of the new default reverse resolver (0xA7d635c8de9a58a228AA69353a1699C7Cc240DCF
) -
Call
setSubnodeRecord
on the ENS registry (registry.ens.eth
) for each of the following names, derived via[coinTypeAsHex].reverse
as specified in ENSIP-19:Reverse Namespace Name Owner Resolver Arbitrum 8000a4b1.reverse wallet.ensdao.eth 0x4b9572C03AAa8b0Efa4B4b0F0cc0f0992bEDB898 Base 80002105.reverse wallet.ensdao.eth 0xc800DBc8ff9796E58EfBa2d7b35028DdD1997E5e Linea 8000e708.reverse wallet.ensdao.eth 0x0Ce08a41bdb10420FB5Cac7Da8CA508EA313aeF8 Optimism 8000000a.reverse wallet.ensdao.eth 0xF9Edb1A21867aC11b023CE34Abad916D29aBF107 Scroll 80082750.reverse wallet.ensdao.eth 0xd38bf7c18c25AC1b4ce2CC077cbC35b2B97f01e7 -
Call
addController
onregistrar.ens.eth
with the address of the new .eth registrar controller (0x59E16fcCd424Cc24e280Be16E11Bcd56fb0CE547
) -
Call
setController
onreverse.ens.eth
with the address of the new .eth registrar controller -
Call
setController
on the new default reverse registrar (0x283F227c4Bd38ecE252C4Ae7ECE650B0e913f1f9
) with the address of the new .eth registrar controller -
Call
setInterface
on the .eth resolver (0x30200E0cb040F38E474E53EF437c95A1bE723b2B
) with the address of the new .eth registrar controller, and the interface ID it implements (0xe4f37f79
) -
Call
setDefaultResolver
onreverse.ens.eth
with the address of the new public resolver (0xF29100983E058B709F3D539b0c765937B804AC15
) -
Call
setNameForAddr
onreverse.ens.eth
for each of the following addresses:Address Name 0x0fc3152971714E5ed7723FAFa650F86A4BaF30C5 dnssec.ens.eth 0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85 registrar.ens.eth 0xaB528d626EC275E3faD363fF1393A41F581c5897 root.ens.eth 0x59E16fcCd424Cc24e280Be16E11Bcd56fb0CE547 controller.ens.eth 0x283F227c4Bd38ecE252C4Ae7ECE650B0e913f1f9 default.reverse.ens.eth