We are proposing an Ethereum Improvement Proposal to provide the ability to assign attributes to NFTs in a public non-gated repository smart contract that is accessible at the same address in all of the networks. The repository smart contract is designed to be a common-good repository, meaning that it can be used by any ERC-721 or ERC-1155 compatible token.
This proposal brings valuable enhancements to the NFT ecosystem by introducing standardized on-chain attributes storage. Also, allowing tokens to store attributes in a standardized format for cross-collection interactivity is a valuable addition. this can foster interoperability and reuse of NFT attributes across different projects, enhancing the utility of NFTs.
How would you achieve this across all L2 networks without any trusted party being involved? Asking because multiple teams have different approaches, but most of them have a trusted deployer involved (either for the contract itself or for a factory). If a trusted deployer it used it could be argued that this repository is not fully “non-gated” as the trusted deployer can choose not to deploy it.
Beyond this there are networks that are not bytecode equivalent that support NFTs, would these networks be excluded?
Edit: I am aware of presigned deployment transactions but out of experience they don’t always work due to networks enforcing the usage of chain id or differences in gas metering and gas prices.
This is a good comment. Thank you for it.
Our current flow expects us to act as trusted deployers. We use a proxy with CREATE2 opcode to deploy the repository to the desired address. I get the argument, but I don’t see this as a possibility. Since this is a repository that anyone can use and interact with without any restrictions, I think it signals a straightforward motivation of openness. We want to improve the ecosystem, no matter the chain.
We encountered this issue once before on another project with zkSync. I think we can work with the L2 teams to add the repository as a precompile available at the desired address.
Thank you for your support. We are really excited about this proposal!
We deployed the repository to multiple test networks:
- Polygon Mumbai
- Sepoila
- MoonBase Alpha
- Base Goerli
- Arbitrum Goerli
The address of the repository is:
0xA77b75D5fDEC6E6e8E00e05c707a7CA81a3F9f4a