Mutable NFTs - Why They Exist
Published on 2022-03-22
🚨 This post is an unpolished thought
I recently spent some time investigating some NFTs that I owned and I realized that a significant percetage of NFTs that I own are mutable.
Mutable in this case refers to the quality of having metadata which is not stored on chain or on a permanent solution like IPFS . e.g. using a self-hosted DB/API. The host of the data can change the data returned by the tokenUri
.
Shoutout to rameerez.eth for building looksmutable.com. I used his application to inspect a mutable NFT that I own.
A good percentage of Web 3 projects still use mutable endpoints to host their metadata.
Decentralized storage solutions currently cannot reflect the qualities of tokens that can be upgraded especially for #GameFi NFTs. e.g. a weapon NFT whose level
can be upgraded.
Reflecting this kind of change in level
would require the metadata to be mutable, thus required self-hosting metadata. This sadly goes against the grain of what a fully decentralized apps is about.
Storing metadata on-chain
The other solution would be to store all this data on-chain
Pros:
- Fully decentralized ✅
- Relative state is store on-chain
- NFTs are still immutable
Cons:
- tokenUri may not reflect upgradable properties. (So popular wallets cannot consume such state deterministically).
- High gas fees on ethereum to update this kind of state.
- No presently defined protocol to standardize contract data across multiple chains. This work would be duplicated for each new chain one supports. e.g. WormholeBridge reflects metadata for Ethereum <-> Solana cross-chain transfers because each NFT's
tokenUri
is standardized by the ERC721 standard on Ethereum and Metaplex Metadata standard on Solana.
What solutions are being explored?
What solutions are being explored in this space? 🤔
I believe that if #GameFi NFTs should have some relative mutable state, it should also be stored on-chain, at a low cost to allow for high-frequency reads & writes.
The desired result would be more NFTs would remain immutable.
What are your thoughts?
If you have any thoughts/helpful resources on this subject, feel free to @ me on Twitter or comment below! 💚