From my understanding, startingIndex is used to determine the order of the metadata after the sale is over and it is time to reveal. At the end of the sale, startingIndex is set. Then, metadata is ordered based on the startingIndex, uploaded to IPFS, and then the baseURI is set.
One of our solutions is to provide incomplete metadata to NFTs buyers. Open the image itself. The complete metadata is loaded after the sale of the collection. We are changing the UID of the metadata. We call a function to freeze the UID.
Many thanks for this, was speaking to a fellow Dev and discussed this elegant solution. The starting index works great here as it's dynamically calculated in the tokenURI() method which OpenSea and other marketplaces use to fetch metadata.
The only problem I see here is that now it is common (and seemingly desirable) for token metadata to contain a "name" attribute which includes the token ID.
For example, "Daturian 1234".
So not knowing what metadata a token would be assigned would take out the number from that name attribute. Not that big of a tradeoff in my opinion, but people tend to really want to keep that number in there so it is apparent how early they minted. Maybe I'm misunderstanding and there is a way to keep the number?
So basically they re-ordered the metadata files in a new IPFS folder after the sale. Which is fine because they have published the initial sequence of Images.
# This happened after the sale ended.
# This a new IPFS folder will all metadata files re-ordered according to `startingIndex`.
setBaseURI('ipfs://QmeSjSinHpPnmXmspMjwiXyN6zS4E9zccariGR3jxcaWtq/')