# \[Draft] \[Executable] Extend ENS DAO to EIP-4824 | **Status** | Pending | | --------------------- | --------------------------------------------------------------------------------------------------------------------------------------- | | **Discussion Thread** | [Discuss](https://discuss.ens.domains/t/extend-ens-dao-to-eip-4824/17249) | | **Authors** | DAOstar (Amandeep, Joshua Tan, Isaac Patka) | ## Abstract The [EIP-4824](https://daostar.one/EIP-4824-Common-Interfaces-for-DAOs-c89409d239004f41bd06cb21852e1684) standard defines common interfaces for DAOs via daoURI, akin to tokenURI for NFTs. This proposal will extend ENS DAO to EIP-4824 by deploying a new registration contract through a contract interaction with the EIP-4824 factory maintained by DAOstar. ## Motivation Adopting the EIP-4824 standard will enrich the on-chain information availability of ENS governance contracts, making it easier for existing and future DAO tools to seamlessly interact with the contracts. A specific example is enabling members to interact with the ENS governance contracts through different front-end interfaces, potentially across multiple chains. Some of the tools that are digesting or committed to digesting this enriched information include Snapshot, Tally, DAOhaus, Etherscan, DeepDAO, and other members of DAOstar One 3. Note that adopting the standard does not require any parameter changes to ENS’s existing DAO contracts, nor is there any cost besides gas to call the factory contract. The proposal does not in any way change the way that ENS’s governance works. ## Specification If passed, the ENS DAO will upgrade to EIP-4824 by calling the EIP-4824 registration contract located at 0x37df3fc47c1c3a2acafd2dad9c1c00090a8655bc, setting the [ENS Timelock](https://etherscan.io/address/0xfe89cc7abb2c4183683ab71653c4cdc9b02d44b7) and the [MetaGovernance WG multisig](https://etherscan.io/address/0x91c32893216dE3eA0a55ABb9851f581d4503d39b) as its admins and Joshua Tan (thelastjosh.eth) of DAOstar as its manager. No funds will be transferred. The registration contract exposes a daoURI view function which returns the URI containing the EIP4824 compliant registration JSON document. This executable proposal will execute the following calls to complete the contract upgrades: 1. Call `EIP4824RegistrationSummoner.summonRegistration(salt, daoURI,manager, contracts, data)` 2. Call `grantRole(role, address)` on 0xFe89cc7aBB2C4183683ab71653C4cdc9B02D44b7, the registration contract deployed by Call 1 New clones are deployed to predictable addresses using the message sender and a bytes32 value combined as a salt. ## Roles and Access Control There are only two actions possible in the registration contract: (1) changing daoURI and (2) changing the role structure. A manager can modify the daoURI but not the roles while an admin can modify both the daoURI & the role structure. During registration, admin roles are granted to the [ENS Timelock](https://etherscan.io/address/0xfe89cc7abb2c4183683ab71653c4cdc9b02d44b7) and the [MetaGovernance WG multi-sig](https://etherscan.io/address/0x91c32893216de3ea0a55abb9851f581d4503d39b). A manager role is granted to Joshua Tan (thelastjosh.eth) of DAOstar. ## Deployment Details The registration factory contract is deployed to nearly all EVM chains. The mainnet address is 0x37dF3fC47C1c3A2acaFd2Dad9c1C00090a8655Bc. The factory uses a clone proxy pattern with a template registration contract deployed to 0x4aCd31Edc93adB1Cf08FFBCf4097bd61f4A824f6. New clones are deployed to predictable addresses using the message sender and a bytes32 value combined as a salt. ## Transactions | Address | Value | Function | Arguments | Value | | ------------------------------------------ | ----- | --------------- | ----------- | ------------------------------------------------------------------ | | 0x37dF3fC47C1c3A2acaFd2Dad9c1C00090a8655Bc | | summonRegistration | salt, daoURI(**TBD**), manager, contracts, data | 0x42, https://api.daostar.org/immutable/QmaCvLCH5HpBGwec2z35PLzZGqHMLt65yk4TxFSqXZt9VZ, 0x356bd1169A2b94B5a3C9D9F356FA5D35E584A521, [], [] | | 0xc4f4474f8cd63091d416d04d2b95fa1a0f01a2f1 | | grantRole | role, address | 0x0000000000000000000000000000000000000000000000000000000000000000, 0x91c32893216dE3eA0a55ABb9851f581d4503d39b |