[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
1 Like