I’m working on an NFT project and trying to understand the best way to handle metadata randomness using baseURI. From what I can see, there are basically two main approaches:
Option 1: Configure the baseURI before launching the mint. This means buyers can see exactly which NFT they’re getting before purchase.
Option 2: Only set the baseURI after the minting phase ends. This keeps the metadata hidden during minting, but buyers won’t know what they got right away.
I’m wondering if there are any other methods or variations I should consider for handling NFT randomness? Maybe something that combines both approaches or uses a completely different strategy? Looking for advice from anyone who has implemented similar systems.
you could also use entropy from future block hashes - mint first, then grab the block hash from 10 blocks later to determine metadata. no oracle needed and it’s unpredictable. I’ve seen this work well in DeFi projects. just watch out for edge cases when blocks get reorged.
Try a provenance hash system. Hash all your metadata files in order before minting, then publish that hash on-chain. After minting, reveal the starting index that maps metadata to token IDs. This proves it’s fair without showing anything during mint. I used this on a project last year - worked great. The community loved being able to verify the randomness was legit after reveal. Just make sure your metadata generation is rock solid before creating the hash since you can’t change anything after. You could also do time-delayed reveals where metadata unlocks gradually over days or weeks. Creates ongoing hype but you’ll need more complex smart contract logic for the timing.
This is a really interesting topic! I’ve been following tons of NFT projects and seen how they handle this differently.
Commit-reveal schemes work great. Projects commit to a random seed or hash during minting, then reveal it later. You get the best of both worlds - randomness is locked in during mint but nobody can game the system by seeing metadata beforehand.
Have you considered Chainlink VRF or similar oracle solutions? Some projects use this to generate truly random traits after minting completes.
What’s driving your decision here? Are you more worried about people cherry-picking rare traits, or trying to build anticipation for your community? The approach really depends on what experience you want to create.
How big is your collection? Smaller collections benefit more from the reveal approach while larger ones might not need it since the odds are already spread out.
What’s your take on partial reveals? Like revealing some traits but keeping others hidden until later?