Skip to content

[EP 6.16] [Executable] Enable L2 Reverse Registrars and new .eth registrar controller

By nick.eth
StatusActive
Discussion ThreadForum
VotesAgora, Tally

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

Description

Batch transaction for ENS DAO execution

Transactions Summary

This proposal contains 16 transaction(s) to be executed by the ENS DAO Timelock.

#ContractFunctionDescription
1registry.ens.ethsetResolverCall setResolver on registry.ens.eth
2registry.ens.ethsetSubnodeRecordSet Arbitrum reverse namespace
3registry.ens.ethsetSubnodeRecordSet Base reverse namespace
4registry.ens.ethsetSubnodeRecordSet Linea reverse namespace
5registry.ens.ethsetSubnodeRecordSet Optimism reverse namespace
6registry.ens.ethsetSubnodeRecordSet Scroll reverse namespace
7ETH RegistraraddControllerAuthorise new controller on registrar
8Reverse RegistrarsetControllerAuthorise new controller on reverse registrar
9Default Reverse RegistrarsetControllerAuthorise new controller on new default reverse registrar
10.eth ResolversetInterfaceSet new controller interface to new controller on .eth resolver
11Reverse RegistrarsetDefaultResolverSet default resolver to new public resolver on reverse registrar
12Reverse RegistrarsetNameForAddrSet primary name for DNSSEC contract
13Reverse RegistrarsetNameForAddrSet primary name for registrar
14Reverse RegistrarsetNameForAddrSet primary name for root
15Reverse RegistrarsetNameForAddrSet primary name for new controller
16Reverse RegistrarsetNameForAddrSet primary name for default reverse registrar

Detailed Transaction Information

Description

Batch transaction for ENS DAO execution

Transactions Summary

This proposal contains 16 transaction(s) to be executed by the ENS DAO Timelock.

#ContractFunctionDescription
1registry.ens.ethsetResolverCall setResolver on registry.ens.eth
2registry.ens.ethsetSubnodeRecordSet Arbitrum reverse namespace
3registry.ens.ethsetSubnodeRecordSet Base reverse namespace
4registry.ens.ethsetSubnodeRecordSet Linea reverse namespace
5registry.ens.ethsetSubnodeRecordSet Optimism reverse namespace
6registry.ens.ethsetSubnodeRecordSet Scroll reverse namespace
7ETH RegistraraddControllerAuthorise new controller on registrar
8Reverse RegistrarsetControllerAuthorise new controller on reverse registrar
9Default Reverse RegistrarsetControllerAuthorise new controller on new default reverse registrar
10.eth ResolversetInterfaceSet new controller interface to new controller on .eth resolver
11Reverse RegistrarsetDefaultResolverSet default resolver to new public resolver on reverse registrar
12Reverse RegistrarsetNameForAddrSet primary name for DNSSEC contract
13Reverse RegistrarsetNameForAddrSet primary name for registrar
14Reverse RegistrarsetNameForAddrSet primary name for root
15Reverse RegistrarsetNameForAddrSet primary name for new controller
16Reverse RegistrarsetNameForAddrSet primary name for default reverse registrar

Detailed Transaction Information

Transaction 1: Call setResolver on registry.ens.eth

Target: registry.ens.eth
Address: 0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e
Function: setResolver

Parameters:
  • bytes32 node: namehash("reverse") → 0xa097f6721ce401e757d1223a763fef49b8b5f90bb18567ddb86fd205dff71d34
  • address resolver: 0xA7d635c8de9a58a228AA69353a1699C7Cc240DCF
Encoded Calldata:
0x1896f70aa097f6721ce401e757d1223a763fef49b8b5f90bb18567ddb86fd205dff71d34000000000000000000000000a7d635c8de9a58a228aa69353a1699c7cc240dcf

Transaction 2: Set Arbitrum reverse namespace

Target: registry.ens.eth
Address: 0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e
Function: setSubnodeRecord

Parameters:
  • bytes32 node: namehash("reverse") → 0xa097f6721ce401e757d1223a763fef49b8b5f90bb18567ddb86fd205dff71d34
  • bytes32 label: labelhash("8000a4b1") → 0xa7f8a095a00b663580c29f964c4bfc4ce8f41776d9ea5b70e2e08e69327a77bc
  • address owner: wallet.ensdao.eth0xFe89cc7aBB2C4183683ab71653C4cdc9B02D44b7
  • address resolver: 0x4b9572C03AAa8b0Efa4B4b0F0cc0f0992bEDB898
  • uint64 ttl: 0
Encoded Calldata:
0x5ef2c7f0a097f6721ce401e757d1223a763fef49b8b5f90bb18567ddb86fd205dff71d34a7f8a095a00b663580c29f964c4bfc4ce8f41776d9ea5b70e2e08e69327a77bc000000000000000000000000fe89cc7abb2c4183683ab71653c4cdc9b02d44b70000000000000000000000004b9572c03aaa8b0efa4b4b0f0cc0f0992bedb8980000000000000000000000000000000000000000000000000000000000000000

Transaction 3: Set Base reverse namespace

Target: registry.ens.eth
Address: 0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e
Function: setSubnodeRecord

Parameters:
  • bytes32 node: namehash("reverse") → 0xa097f6721ce401e757d1223a763fef49b8b5f90bb18567ddb86fd205dff71d34
  • bytes32 label: labelhash("80002105") → 0x72c29f4186361a46935e4e9c3af71d1cf73cac00186fceb1cd1945ed9ed3dec1
  • address owner: wallet.ensdao.eth0xFe89cc7aBB2C4183683ab71653C4cdc9B02D44b7
  • address resolver: 0xc800DBc8ff9796E58EfBa2d7b35028DdD1997E5e
  • uint64 ttl: 0
Encoded Calldata:
0x5ef2c7f0a097f6721ce401e757d1223a763fef49b8b5f90bb18567ddb86fd205dff71d3472c29f4186361a46935e4e9c3af71d1cf73cac00186fceb1cd1945ed9ed3dec1000000000000000000000000fe89cc7abb2c4183683ab71653c4cdc9b02d44b7000000000000000000000000c800dbc8ff9796e58efba2d7b35028ddd1997e5e0000000000000000000000000000000000000000000000000000000000000000

Transaction 4: Set Linea reverse namespace

Target: registry.ens.eth
Address: 0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e
Function: setSubnodeRecord

Parameters:
  • bytes32 node: namehash("reverse") → 0xa097f6721ce401e757d1223a763fef49b8b5f90bb18567ddb86fd205dff71d34
  • bytes32 label: labelhash("8000e708") → 0xf5b2aa07eebc1b04c9923c2e20c5988f7ec95c4150e7fb00a49f74cf73ff795a
  • address owner: wallet.ensdao.eth0xFe89cc7aBB2C4183683ab71653C4cdc9B02D44b7
  • address resolver: 0x0Ce08a41bdb10420FB5Cac7Da8CA508EA313aeF8
  • uint64 ttl: 0
Encoded Calldata:
0x5ef2c7f0a097f6721ce401e757d1223a763fef49b8b5f90bb18567ddb86fd205dff71d34f5b2aa07eebc1b04c9923c2e20c5988f7ec95c4150e7fb00a49f74cf73ff795a000000000000000000000000fe89cc7abb2c4183683ab71653c4cdc9b02d44b70000000000000000000000000ce08a41bdb10420fb5cac7da8ca508ea313aef80000000000000000000000000000000000000000000000000000000000000000

Transaction 5: Set Optimism reverse namespace

Target: registry.ens.eth
Address: 0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e
Function: setSubnodeRecord

Parameters:
  • bytes32 node: namehash("reverse") → 0xa097f6721ce401e757d1223a763fef49b8b5f90bb18567ddb86fd205dff71d34
  • bytes32 label: labelhash("8000000a") → 0x77f44888a7cd760c9d34db42bba63325958f70077f99de6be6b318dd388d22c2
  • address owner: wallet.ensdao.eth0xFe89cc7aBB2C4183683ab71653C4cdc9B02D44b7
  • address resolver: 0xF9Edb1A21867aC11b023CE34Abad916D29aBF107
  • uint64 ttl: 0
Encoded Calldata:
0x5ef2c7f0a097f6721ce401e757d1223a763fef49b8b5f90bb18567ddb86fd205dff71d3477f44888a7cd760c9d34db42bba63325958f70077f99de6be6b318dd388d22c2000000000000000000000000fe89cc7abb2c4183683ab71653c4cdc9b02d44b7000000000000000000000000f9edb1a21867ac11b023ce34abad916d29abf1070000000000000000000000000000000000000000000000000000000000000000

Transaction 6: Set Scroll reverse namespace

Target: registry.ens.eth
Address: 0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e
Function: setSubnodeRecord

Parameters:
  • bytes32 node: namehash("reverse") → 0xa097f6721ce401e757d1223a763fef49b8b5f90bb18567ddb86fd205dff71d34
  • bytes32 label: labelhash("80082750") → 0xfc94dc633606a32d73e903a0aa85e12fbe1cabc6e53ee69c1893547fda6d9691
  • address owner: wallet.ensdao.eth0xFe89cc7aBB2C4183683ab71653C4cdc9B02D44b7
  • address resolver: 0xC4842814cA523E481Ca5aa85F719FEd1E9CaC614
  • uint64 ttl: 0
Encoded Calldata:
0x5ef2c7f0a097f6721ce401e757d1223a763fef49b8b5f90bb18567ddb86fd205dff71d34fc94dc633606a32d73e903a0aa85e12fbe1cabc6e53ee69c1893547fda6d9691000000000000000000000000fe89cc7abb2c4183683ab71653c4cdc9b02d44b7000000000000000000000000c4842814ca523e481ca5aa85f719fed1e9cac6140000000000000000000000000000000000000000000000000000000000000000

Transaction 7: Authorise new controller on registrar

Target: ETH Registrar
Address: 0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85
Function: addController

Parameters:
  • address controller: 0x59E16fcCd424Cc24e280Be16E11Bcd56fb0CE547
Encoded Calldata:
0xa7fc7a0700000000000000000000000059e16fccd424cc24e280be16e11bcd56fb0ce547

Transaction 8: Authorise new controller on reverse registrar

Target: Reverse Registrar
Address: 0xa58E81fe9b61B5c3fE2AFD33CF304c454AbFc7Cb
Function: setController

Parameters:
  • address controller: 0x59E16fcCd424Cc24e280Be16E11Bcd56fb0CE547
  • bool enabled: true
Encoded Calldata:
0xe0dba60f00000000000000000000000059e16fccd424cc24e280be16e11bcd56fb0ce5470000000000000000000000000000000000000000000000000000000000000001

Transaction 9: Authorise new controller on new default reverse registrar

Target: Default Reverse Registrar
Address: 0x283F227c4Bd38ecE252C4Ae7ECE650B0e913f1f9
Function: setController

Parameters:
  • address controller: 0x59E16fcCd424Cc24e280Be16E11Bcd56fb0CE547
  • bool enabled: true
Encoded Calldata:
0xe0dba60f00000000000000000000000059e16fccd424cc24e280be16e11bcd56fb0ce5470000000000000000000000000000000000000000000000000000000000000001

Transaction 10: Set new controller interface to new controller on .eth resolver

Target: .eth Resolver
Address: 0x30200E0cb040F38E474E53EF437c95A1bE723b2B
Function: setInterface

Parameters:
  • bytes32 node: namehash("eth") → 0x93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4ae
  • bytes4 interfaceID: 0xe4f37f79
  • address implementer: 0x59E16fcCd424Cc24e280Be16E11Bcd56fb0CE547
Encoded Calldata:
0xe59d895d93cdeb708b7545dc668eb9280176169d1c33cfd8ed6f04690a0bcc88a93fc4aee4f37f790000000000000000000000000000000000000000000000000000000000000000000000000000000059e16fccd424cc24e280be16e11bcd56fb0ce547

Transaction 11: Set default resolver to new public resolver on reverse registrar

Target: Reverse Registrar
Address: 0xa58E81fe9b61B5c3fE2AFD33CF304c454AbFc7Cb
Function: setDefaultResolver

Parameters:
  • address resolver: 0xF29100983E058B709F3D539b0c765937B804AC15
Encoded Calldata:
0xc66485b2000000000000000000000000f29100983e058b709f3d539b0c765937b804ac15

Transaction 12: Set primary name for DNSSEC contract

Target: Reverse Registrar
Address: 0xa58E81fe9b61B5c3fE2AFD33CF304c454AbFc7Cb
Function: setNameForAddr

Parameters:
  • address addr: 0x0fc3152971714E5ed7723FAFa650F86A4BaF30C5
  • address owner: wallet.ensdao.eth0xFe89cc7aBB2C4183683ab71653C4cdc9B02D44b7
  • address resolver: 0xF29100983E058B709F3D539b0c765937B804AC15
  • string name: dnssec.ens.eth
Encoded Calldata:
0x7a806d6b0000000000000000000000000fc3152971714e5ed7723fafa650f86a4baf30c5000000000000000000000000fe89cc7abb2c4183683ab71653c4cdc9b02d44b7000000000000000000000000f29100983e058b709f3d539b0c765937b804ac150000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000e646e737365632e656e732e657468000000000000000000000000000000000000

Transaction 13: Set primary name for registrar

Target: Reverse Registrar
Address: 0xa58E81fe9b61B5c3fE2AFD33CF304c454AbFc7Cb
Function: setNameForAddr

Parameters:
  • address addr: 0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85
  • address owner: wallet.ensdao.eth0xFe89cc7aBB2C4183683ab71653C4cdc9B02D44b7
  • address resolver: 0xF29100983E058B709F3D539b0c765937B804AC15
  • string name: registrar.ens.eth
Encoded Calldata:
0x7a806d6b00000000000000000000000057f1887a8bf19b14fc0df6fd9b2acc9af147ea85000000000000000000000000fe89cc7abb2c4183683ab71653c4cdc9b02d44b7000000000000000000000000f29100983e058b709f3d539b0c765937b804ac15000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000117265676973747261722e656e732e657468000000000000000000000000000000

Transaction 14: Set primary name for root

Target: Reverse Registrar
Address: 0xa58E81fe9b61B5c3fE2AFD33CF304c454AbFc7Cb
Function: setNameForAddr

Parameters:
  • address addr: 0xaB528d626EC275E3faD363fF1393A41F581c5897
  • address owner: wallet.ensdao.eth0xFe89cc7aBB2C4183683ab71653C4cdc9B02D44b7
  • address resolver: 0xF29100983E058B709F3D539b0c765937B804AC15
  • string name: root.ens.eth
Encoded Calldata:
0x7a806d6b000000000000000000000000ab528d626ec275e3fad363ff1393a41f581c5897000000000000000000000000fe89cc7abb2c4183683ab71653c4cdc9b02d44b7000000000000000000000000f29100983e058b709f3d539b0c765937b804ac150000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000c726f6f742e656e732e6574680000000000000000000000000000000000000000

Transaction 15: Set primary name for new controller

Target: Reverse Registrar
Address: 0xa58E81fe9b61B5c3fE2AFD33CF304c454AbFc7Cb
Function: setNameForAddr

Parameters:
  • address addr: 0x59E16fcCd424Cc24e280Be16E11Bcd56fb0CE547
  • address owner: wallet.ensdao.eth0xFe89cc7aBB2C4183683ab71653C4cdc9B02D44b7
  • address resolver: 0xF29100983E058B709F3D539b0c765937B804AC15
  • string name: controller.ens.eth
Encoded Calldata:
0x7a806d6b00000000000000000000000059e16fccd424cc24e280be16e11bcd56fb0ce547000000000000000000000000fe89cc7abb2c4183683ab71653c4cdc9b02d44b7000000000000000000000000f29100983e058b709f3d539b0c765937b804ac1500000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000012636f6e74726f6c6c65722e656e732e6574680000000000000000000000000000

Transaction 16: Set primary name for default reverse registrar

Target: Reverse Registrar
Address: 0xa58E81fe9b61B5c3fE2AFD33CF304c454AbFc7Cb
Function: setNameForAddr

Parameters:
  • address addr: 0x283F227c4Bd38ecE252C4Ae7ECE650B0e913f1f9
  • address owner: wallet.ensdao.eth0xFe89cc7aBB2C4183683ab71653C4cdc9B02D44b7
  • address resolver: 0xF29100983E058B709F3D539b0c765937B804AC15
  • string name: default.reverse.ens.eth
Encoded Calldata:
0x7a806d6b000000000000000000000000283f227c4bd38ece252c4ae7ece650b0e913f1f9000000000000000000000000fe89cc7abb2c4183683ab71653c4cdc9b02d44b7000000000000000000000000f29100983e058b709f3d539b0c765937b804ac150000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000001764656661756c742e726576657273652e656e732e657468000000000000000000