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.
# | Contract | Function | Description |
---|---|---|---|
1 | registry.ens.eth | setResolver | Call setResolver on registry.ens.eth |
2 | registry.ens.eth | setSubnodeRecord | Set Arbitrum reverse namespace |
3 | registry.ens.eth | setSubnodeRecord | Set Base reverse namespace |
4 | registry.ens.eth | setSubnodeRecord | Set Linea reverse namespace |
5 | registry.ens.eth | setSubnodeRecord | Set Optimism reverse namespace |
6 | registry.ens.eth | setSubnodeRecord | Set Scroll reverse namespace |
7 | ETH Registrar | addController | Authorise new controller on registrar |
8 | Reverse Registrar | setController | Authorise new controller on reverse registrar |
9 | Default Reverse Registrar | setController | Authorise new controller on new default reverse registrar |
10 | .eth Resolver | setInterface | Set new controller interface to new controller on .eth resolver |
11 | Reverse Registrar | setDefaultResolver | Set default resolver to new public resolver on reverse registrar |
12 | Reverse Registrar | setNameForAddr | Set primary name for DNSSEC contract |
13 | Reverse Registrar | setNameForAddr | Set primary name for registrar |
14 | Reverse Registrar | setNameForAddr | Set primary name for root |
15 | Reverse Registrar | setNameForAddr | Set primary name for new controller |
16 | Reverse Registrar | setNameForAddr | Set 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")
→0x7d8e29b968b7788e83efa746345c315e0cf10df6950259a7cb05ce0149b8b6e3
address owner
:wallet.ensdao.eth
→0xFe89cc7aBB2C4183683ab71653C4cdc9B02D44b7
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")
→0x4056cb788b3af93d9486e35f4d0aff6b21a4da32161ef55acba5a78d69dad5b6
address owner
:wallet.ensdao.eth
→0xFe89cc7aBB2C4183683ab71653C4cdc9B02D44b7
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")
→0x44495acbb270e33daa2b6b957b8713b55ab4a023300855e3adeb370f8bfcd47a
address owner
:wallet.ensdao.eth
→0xFe89cc7aBB2C4183683ab71653C4cdc9B02D44b7
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")
→0xf66cf533d101dfb2f2352e61965e14aa7e9c4164b3bfc91cbe188645e0f16336
address owner
:wallet.ensdao.eth
→0xFe89cc7aBB2C4183683ab71653C4cdc9B02D44b7
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")
→0x2e83a9aa4cc1622acc9e36e8853598634e92fa0eb10aec9b07fc68664b2ad87e
address owner
:wallet.ensdao.eth
→0xFe89cc7aBB2C4183683ab71653C4cdc9B02D44b7
address resolver
:0xd38bf7c18c25AC1b4ce2CC077cbC35b2B97f01e7
uint64 ttl
:0
Encoded Calldata:
0x5ef2c7f0a097f6721ce401e757d1223a763fef49b8b5f90bb18567ddb86fd205dff71d34fc94dc633606a32d73e903a0aa85e12fbe1cabc6e53ee69c1893547fda6d9691000000000000000000000000fe89cc7abb2c4183683ab71653c4cdc9b02d44b7000000000000000000000000d38bf7c18c25ac1b4ce2cc077cbc35b2b97f01e70000000000000000000000000000000000000000000000000000000000000000
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")
→0x58665280491fc90c59d3e71704f32f95343423627fb87cf300bb02544c671cdb
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.eth
→0xFe89cc7aBB2C4183683ab71653C4cdc9B02D44b7
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.eth
→0xFe89cc7aBB2C4183683ab71653C4cdc9B02D44b7
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.eth
→0xFe89cc7aBB2C4183683ab71653C4cdc9B02D44b7
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.eth
→0xFe89cc7aBB2C4183683ab71653C4cdc9B02D44b7
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.eth
→0xFe89cc7aBB2C4183683ab71653C4cdc9B02D44b7
address resolver
:0xF29100983E058B709F3D539b0c765937B804AC15
string name
:default.reverse.ens.eth
Encoded Calldata:
0x7a806d6b000000000000000000000000283f227c4bd38ece252c4ae7ece650b0e913f1f9000000000000000000000000fe89cc7abb2c4183683ab71653c4cdc9b02d44b7000000000000000000000000f29100983e058b709f3d539b0c765937b804ac150000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000001764656661756c742e726576657273652e656e732e657468000000000000000000