NFT, Metadata/Media & their lifecycle
As we've already seen here, a NFT is defined by an ID, its owner wallet address and an URI defining where to find its metadata.
But what is metadata? It's mainly a json file where NFT's data is defined. It can non-exclusively include:
- a name
- the underlying media path, ie what should represent the NFT (image/video/sound...)
- its properties (aka traits) which is what is used to determine the rarity inside a collection, or any other useful informations
One of the main purpose of a NFT is to act the ownership of an underlying media, may it be an image, a video, an audio, etc. And storing such an amount of data is not really feasible on usual infrastructure blockchain due to their limitations (it would cost to much to be deployed).
That is why they are only referenced by their NFT. The media URI could directly be returned, but it is commonly agreed that, as seen above, it will be embedded in metadata.
So when connecting your wallet to any NFT display solution (OpenSea, MetaMask...), what they are doing is retrieve :
- the ID of your NFTs from the collection's Smart Contract
- the NFT's URI from the collection's Smart Contract using ID
- the NFT's metadata from its URI
- the media from specific URI contained in metadata... at last ;o)
So what happens when a collection is revealed?
Something has to change in this chain of retrieved data. As ID is immutable, it has to take place on any returned data anywhere after, dependending on what is expected to be different after the reveal (media and/or traits) and how those data are stored.
This is something that has to be done by the entity owning the collection.
That is why it is important to know what is allowed by the contract (i.e. can URI be changed) and by the storage protocole (i.e. can data be updated) as this will have impacts on everything you own.
As long as URI returned by the contract is not explicitly changed, it will stay 'forever' as it is written in the blockchain. Updatability should be verifiable as Smart Contract sources should be published by conscientious and professional projects.
But for data, that's a whole different story. If they are stored on usual web2 servers, they can be changed without even noticing it and even removed. Whereas if they are on IPFS, they are immutable and here 'forever', or at least as long as someone is pinning them.
Never trust an image
Keep in mind that what is displayed when using your NFT display solution is not always reflecting reality.
We now know that data can change (for reveal purpose or due to evolving nature of some NFTs collections) but I have to warn you that OpenSea for instance is not constantly getting them fresh but rather keeps those cached.
So what you see is not necessarily what you get and you should do you homework and have a look directly by yourself at those assets (as third-party solutions can show you outdated version of them).