The NFT collection has been minted. The creator can add content accessible by all owners of an NFT from the collection or also target specific traits of NFTs in the collection.
With this method, we apply the opposite approach of the forward lookup and embed the nft_id in the metadata of the darkblock. This means that the NFT has to be created before the darkblock. Also, to know whether the NFT has a darkblock attached to it, the Darkblock Protocol API must be called to check if any darkblock has this NFT's ID embedded in it.
However, this method does offer the upside of being able to add an infinite amount of darkblocks to any NFT (as long as the user has the permission to).
Another advantage the upgrade method has is that multiple NFTs can be targeted at the same time. This can be done by passing in a collection instead of a single NFT. Traits of that collection can also be used to narrow down the selection of NFTs to be upgraded from the selected collection.
Later, when the NFT is created this tx_id is embedded in the NFT metadata as a "trait" or "attribute" labeled "Darkblock-ID".
This method has certain advantages as afterward you can simply look at the NFT metadata to know whether there is unlockable content attached to it.
However, depending on whether the NFT metadata can be updated, after the NFT has been minted, more darkblocks (unlockable content) cannot be added to the NFT in this way.
Uploaded a Darkblock and would like to take it back? Well, you can’t. Darkblocks are permanent by design. BUT, you can hide that Darkblock so it doesn’t show up in the UI anymore. It will always be there if someone digs enough, but if you use THE SAME EXACT FILE and you upgrade in the same way, then you can name that new Darkblock HIDE ME and it sill disappear from the UI.