[Executable] Register on.eth to the ENS DAO wallet and set the resolver

Status Draft

Previous Context

Description

This proposal registers the on.eth ENS name to the ENS DAO wallet (0xfe89cc7abb2c4183683ab71653c4cdc9b02d44b7) and sets the resolver to an on-chain registry-resolver contract (0x2a9B5787207863cf2d63d20172ed1F7bB2c9487A).

Motivation

The Chain Registry-Resolver is a smart contract that acts as a canonical, on-chain registry for blockchain metadata. It serves as the resolver for the on.eth namespace and enables applications and users to retrieve metadata for any blockchain using a single human-readable identifier, such as base or solana.

Historically, blockchain metadata has been stored in centralized, fragmented repositories maintained by third parties. The Chain Registry-Resolver brings this metadata on-chain into a single, extensible registry, where control and update authority are delegated to the relevant chain operators.

Specification

Relevant Contracts

  • wallet.ensdao.eth0xfe89cc7abb2c4183683ab71653c4cdc9b02d44b7Etherscan
  • registry.ens.eth0x00000000000C2E074eC69A0dFb2997BA6C7d2e1eEtherscan
  • registrar.ens.eth0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85Etherscan
  • ChainResolver (Proxy)0x2a9B5787207863cf2d63d20172ed1F7bB2c9487AEtherescan
  • ChainResolver (Implementation)0x97df70ef350a5d2f606e0baf6d38de2ec26f7290Etherscan

ChainResolver

The ChainResolver GitHub repo can be found here: unruggable-labs/chain-resolver.

In depth documentation outlining the functionality, interfaces, and implementation approach for the smart contract is available here: Chain Registry-Resolver documentation.

Proposal

This proposal includes four components.

1. Adding the DAO wallet as a controller on the BaseRegistrarImplementation smart contract.

To: 0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85
Value: 0
Calldata: 0xa7fc7a07000000000000000000000000fe89cc7abb2c4183683ab71653c4cdc9b02d44b7

Simulation: https://www.tdly.co/shared/simulation/709dde20-78e2-47e0-a952-d80d9772e5eb

2. Registering the name on.eth to the DAO wallet.

To: 0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85
Value: 0
Calldata: 0xfca247ac6460d40e0362f6a2c743f205df8181010b7f26e76d5606847fb7be7fb6d135f9000000000000000000000000fe89cc7abb2c4183683ab71653c4cdc9b02d44b70000000000000000000000000000000000000000000000000000000012cc0300

Simulation: Simulated Transaction | Tenderly

3. Setting the deployed ChainResolver as the resolver for
on.eth

The Resolver proxy is deployed at 0x2a9B5787207863cf2d63d20172ed1F7bB2c9487A.

To: 0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e
Value: 0
Calldata: 0x1896f70acabf8262fe531c2a7e8cd86e06342bc27fc0591ecd562fbac88280abc18ef8990000000000000000000000002a9b5787207863cf2d63d20172ed1f7bb2c9487a

Simulation: https://www.tdly.co/shared/simulation/291142ff-d41a-45ab-8263-34fad6b781b5

4. Removing the DAO wallet as a controller on the BaseRegistrarImplementation smart contract.

To: 0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85
Value: 0
Calldata: 0xf6a74ed7000000000000000000000000fe89cc7abb2c4183683ab71653c4cdc9b02d44b7

Simulation: https://www.tdly.co/shared/simulation/e2430d87-5475-4cea-a320-0e44640b1d3d

Notes

The Registry-Resolver contract is currently owned by an Unruggable controlled deployment wallet (0x81c11034fe2b2f0561e9975df9a45d99172183af). This temporary ownership is limited to initial bootstrapping of chain identifiers and will be transferred to a neutral multisig once the initial registry state is established.

3 Likes

Fully supportive of this! This is exactly the sort of public good we should be encouraging to build on ENS.

Is removing the DAO as a registrar controller aftewards really necessary?

2 Likes

No, it is not necessary. My intention was simply to leave things how I found them.

For others / external observers (this is being shared with the wider Interop community) a controller is able to register any ENS name BUT the DAO wallet is a Timelock contract controlled by the ENS Governor contract. That means that no further registrations could occur without an executable proposal that would have to be supported by ENS token holders subject to the ENS DAO’s Governance Process.

2 Likes

A draft proposal has been created on Tally here, and I have requested a calldata review from the @blockful team in advance of this executable being published.

Draft proposal calldata security review

The calldata draft executes successfully and achieves the expected outcome of the proposal. All simulations and tests are available here.

The test verified:

  1. The 4 generated transactions match proposalCalldata.json exactly.
  2. wallet.ensdao.eth is temporarily added as registrar controller and then removed.
  3. on.eth is registered to wallet.ensdao.eth for 10 years.
  4. on.eth ENS owner and NFT owner are both wallet.ensdao.eth after execution.
  5. on.eth resolver is set to 0x2a9B5787207863cf2d63d20172ed1F7bB2c9487A.
  6. The resolver contract is deployed, has expected owner 0x81c11034FE2b2F0561e9975Df9a45D99172183Af, and supports ERC-165.

To verify locally:

  1. Clone: git clone https://github.com/blockful/dao-proposals.git
  2. Checkout: git checkout 3fd7ac2
  3. Run: forge test --match-path "src/ens/proposals/ep-6-34/*" -vv
2 Likes

Update

This proposal passed and was queued for execution. Unfortunately, the proposal cannot be executed on-chain in its current form.

For complete clarity, the issue is non-destructive and there is no loss (or risk of loss).

Whilst the calldata was correct, and the simulations passed as expected, the calldata was generated against the blockchain state at the time and did not give consideration to other ongoing executable proposals.

Alongside this proposal, another proposal was in motion (Tally | ENS | Enable Root and Registrar Security Controllers), which passed and was executed prior to this one.

That proposal changed a dependency on which this proposal relies - specifically, the ownership of the Base Registrar. As a result, the proposal as-is can not be executed.

I will re-submit the proposal with updated calldata that gives appropriate consideration to the updated ownership model.

3 Likes

Oh no! we have a blog post ready to talk about on.eth and interoperable addresses. We will wait for the proposal to pass again before posting

1 Like

Additional Relevant Contracts

  • RegistrarSecurityController0x7dd4d97653A67C2FD7fbA0a84825eC09524D4E1bEtherscan

Please see [Executable] Enable Root and Registrar Security Controllers for additional context.

Updated Proposal

This proposal includes four components.

1. Adding the DAO wallet as a controller on the BaseRegistrarImplementation smart contract through the RegistrarSecurityController.

To: 0x7dd4d97653A67C2FD7fbA0a84825eC09524D4E1b
Value: 0
Calldata: 0xb229e85e000000000000000000000000fe89cc7abb2c4183683ab71653c4cdc9b02d44b7

Simulation: Simulated Transaction | Tenderly

2. Registering the name on.eth to the DAO wallet.

To: 0x57f1887a8BF19b14fC0dF6Fd9B2acc9Af147eA85
Value: 0
Calldata: 0xfca247ac6460d40e0362f6a2c743f205df8181010b7f26e76d5606847fb7be7fb6d135f9000000000000000000000000fe89cc7abb2c4183683ab71653c4cdc9b02d44b70000000000000000000000000000000000000000000000000000000012cc0300

Simulation: Simulated Transaction | Tenderly

3. Setting the deployed ChainResolver as the resolver for
on.eth

To: 0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e
Value: 0
Calldata: 0x1896f70acabf8262fe531c2a7e8cd86e06342bc27fc0591ecd562fbac88280abc18ef8990000000000000000000000002a9b5787207863cf2d63d20172ed1f7bb2c9487a

Simulation: Simulated Transaction | Tenderly

4. Removing the DAO wallet as a controller on the BaseRegistrarImplementation smart contract through the RegistrarSecurityController.

To: 0x7dd4d97653A67C2FD7fbA0a84825eC09524D4E1b
Value: 0
Calldata: 0x246b813e000000000000000000000000fe89cc7abb2c4183683ab71653c4cdc9b02d44b7

Simulation: Simulated Transaction | Tenderly

Notes

  • For complete clarity, what differentiates this updated proposal from the original is that transactions 1, and 4 target the RegistrarSecurityController. The new security model for the BaseRegistrarImplementation proxies the addition and removal of controllers through this contract.
  • Explicit consideration has been given to other ongoing executable proposals. The only current proposal is Tally | ENS | [Executable] Replace DNSSEC oracle algorithms which does not modify any dependencies on which this proposal relies.

Pinging @blockful for calldata review.

1 Like

Draft proposal calldata security review

The calldata draft executes successfully and achieves the expected outcome of the proposal. All simulations and tests are available here.

To verify locally:

  1. Clone: git clone https://github.com/blockful/dao-proposals.git
  2. Checkout: git checkout 3246d47
  3. Run: forge test --match-path "src/ens/proposals/ep-on-eth-registrar-security-controller/*" -vv
1 Like

Live proposal calldata security verification

Calldata executed the expected outcome. The simulation and tests of the live proposal can be found here.

To verify locally:

  1. Clone: git clone https://github.com/blockful/dao-proposals.git
  2. Checkout: git checkout e3eab44
  3. Run: forge test --match-path "src/ens/proposals/ep-6-36/*" -vv