TL;DR There is an issue with the way opensea and other NFT marketplaces retrieve their metadata and present it to their users when it comes to Dynamic NFTs.
Recently I built a few projects that are focused on dynamic NFTs.
When I created my most recent NFT game (Aquatic Wars), I found an issue with how opensea retrieves and presents the data to its users.
Opensea’s main assumption is that all NFTs are static, which means they are retrieving data solely on the user’s request. That is a big problem for dynamic NFTs as their metadata and image might very often frequently change.
Let’s have a look at Aquatic Wars, as it emphasizes the importance of the issue. This project has three levels of dynamicness to the player’s NFTs.
Some properties in the appearance of the NFT are changing every day (The number of days appears on the top side of the NFT’s image) some properties only change when there is an interaction with the smart contract (When you eat someone’s fish, their fish is disappearing from the NFT’s image) and some should change (at least in theory) every millisecond (The inner color of the fish should change with every call to the tokenURI function).
As you can see, by going to opensea, the data is not refreshing often enough in order to present all those changes to the user, and hence, making the game unplayable. In fact, the NFT’s metadata as it appears to the user is not changing at all, unless, of course, if the user is requesting that. That is far from optimal and doesn’t make sense from a developer and a user perspective.
What I propose, is a new protocol and EIP for dynamic NFTs that can extend the ERC721 standard so that NFT marketplaces will know when the collection is a collection of dynamic NFTs and will know to retrieve the metadata at a faster rate as predefined by the developer.
I would love to hear your thoughts on the topic.
I also think I know how to solve this issue elegantly for future developers through an EIP and a new standard for dynamic NFTs, and would love some help from someone who has already been through the process of creating a successful EIP as this is the first time I’m creating one.