Home
EXECUTED
Ended Jul 29 at 11:04 PM UTC

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

By
Votes
1.2Mfor
0against
120.33%Quorum
Skip to Votes

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

Votes
1.2Mfor
0against
120.33%Quorum
0xb8c2...67d50xb8c2...67d5voted for
155.95K
0x2b88...7d120x2b88...7d12voted for
122.45K
0xe52c...d7260xe52c...d726voted for
110.75K
0x5346...42cf0x5346...42cfvoted for
106.02K
0x9831...67440x9831...6744voted for
104.26K
0x8393...07800x8393...0780voted for
64.86K
0xd5d1...cf2c0xd5d1...cf2cvoted for
64.48K
0x54be...7ab60x54be...7ab6voted for
62.52K
0xb352...8b1b0xb352...8b1bvoted for
60K
0xa786...77c60xa786...77c6voted for
56.88K
0x6e3c...74920x6e3c...7492voted for
50.1K
0xc027...614e0xc027...614evoted for
50K
0x2d7d...b05e0x2d7d...b05evoted for
46.35K
0xa8b4...28e80xa8b4...28e8voted for
40.51K
0x1f3d...05910x1f3d...0591voted for
26.06K
In support for activating ENSIP-19. Calldata reviewed: https://discuss.ens.domains/t/executable-enable-l2-reverse-registrars-and-new-eth-registrar-controller/20969/15
0x225f...c3b50x225f...c3b5voted for
17.5K
0x7ae9...0c0b0x7ae9...0c0bvoted for
10.75K
0x035e...17d30x035e...17d3voted for
9.73K
0x4aa5...df660x4aa5...df66voted for
9.3K
0x29a8...de700x29a8...de70voted for
6.04K
0xf342...33290xf342...3329voted for
5.07K
0x3335...81e10x3335...81e1voted for
4.54K
0x1208...0ac60x1208...0ac6voted for
4K
0x60db...8d770x60db...8d77voted for
3.54K
0x8e8d...32160x8e8d...3216voted for
2K
0xac50...c0390xac50...c039voted for
2K
0x179a...92850x179a...9285voted for
1.97K
0x8da4...81e40x8da4...81e4voted for
1.58K
0x76a6...bbb80x76a6...bbb8voted for
1.52K
0x7f77...1caa0x7f77...1caavoted for
1.14K
0x8b1f...feff0x8b1f...feffvoted for
698
0x0253...d11a0x0253...d11avoted for
246
0x0579...40480x0579...4048voted for
239
0xf585...991a0xf585...991avoted for
200
expand ENS project
0x019e...2ee30x019e...2ee3voted for
15
0x768e...caa40x768e...caa4voted for
1
0x4d9b...c7f50x4d9b...c7f5voted for
1
0x2f2f...f78a0x2f2f...f78avoted for
1
0x3fb1...4c8a0x3fb1...4c8avoted for
1
0x4d32...bbfa0x4d32...bbfavoted for
1
0x06c4...66a20x06c4...66a2voted for
1
0x2dab...ec620x2dab...ec62voted for
0
0x0057...15c80x0057...15c8voted for
0
0xc8f4...17580xc8f4...1758voted for
0
0x6bbb...b38b0x6bbb...b38bvoted for
0
0xd29e...155f0xd29e...155fvoted for
0
0xbac8...13b30xbac8...13b3abstained
0
Abstaining on this proposal — I appreciate the thoughtful direction toward L2 support and enhanced reverse resolution. While I’m still evaluating the broader implications of introducing multiple reverse namespaces and a new controller, I truly value the work put into expanding ENS functionality. Looking forward to seeing how these changes empower more seamless multi-chain experiences! 💫
0x211d...a7710x211d...a771voted for
0
0x4442...62d70x4442...62d7voted for
0
0xb331...71740xb331...7174voted for
0
0x2bff...38ae0x2bff...38aevoted for
0
0x88f6...0ec00x88f6...0ec0voted for
0
0x67d3...2a3c0x67d3...2a3cvoted for
0
0x7241...716f0x7241...716fvoted for
0
0xc763...00100xc763...0010voted for
0
0x8469...ecd90x8469...ecd9voted for
0
0x1c05...40940x1c05...4094voted against
0
0x82eb...3dab0x82eb...3dabvoted for
0
0xfd97...e7ce0xfd97...e7cevoted for
0
0x995d...34db0x995d...34dbvoted against
0
0xbfd7...e5ef0xbfd7...e5efvoted for
0
0xf7d5...1b3c0xf7d5...1b3cvoted for
0
0xca41...93240xca41...9324voted for
0
0xd8de...ae410xd8de...ae41voted for
0
0xaa93...0b960xaa93...0b96voted for
0
0xa8e1...f37c0xa8e1...f37cvoted for
0
0xbe6e...d2a60xbe6e...d2a6voted for
0
0x477e...238b0x477e...238bvoted for
0
0x72b4...86580x72b4...8658voted for
0
0xc3a2...e6ee0xc3a2...e6eevoted for
0
0x475e...e10c0x475e...e10cvoted for
0
0x76c6...66330x76c6...6633voted for
0
0xf930...df870xf930...df87voted for
0
gm
0xec49...1bc30xec49...1bc3voted for
0
0x6446...d1610x6446...d161voted for
0
0x58b2...8e810x58b2...8e81voted for
0
0x41dc...b6b60x41dc...b6b6voted for
0
0x121e...a1630x121e...a163voted for
0
0xe0f4...53360xe0f4...5336voted for
0
0x97fe...56280x97fe...5628voted for
0
0x4d4a...1bdf0x4d4a...1bdfvoted for
0
0x3f08...66000x3f08...6600voted for
0
0x57bb...a2a20x57bb...a2a2voted for
0
0xb19e...bbcc0xb19e...bbccvoted for
0
0x558b...ffa60x558b...ffa6voted for
0
0x0be7...93d30x0be7...93d3voted for
0
0x8fdd...7dca0x8fdd...7dcavoted for
0