EIP-7508: Dynamic On-Chain Token Attributes Repository


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.

1 Like

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.

1 Like

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.

1 Like

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! :smiley:

We deployed the repository to multiple test networks:

  • Polygon Mumbai
  • Sepoila
  • MoonBase Alpha
  • Base Goerli
  • Arbitrum Goerli

The address of the repository is: