Usually, NFT collections are randomly minted using a PRNG based on block number or timestamp. Such source of randomness is known to be attackable by miners. Cryptone X11 uses Chanlink's VRF to generated a provably-fair and verifiable random token ID. Chainlink VRF is a great asset for generating randomness in NFT projects because most collections relied on sequential minting of hidden assets, and they would then reveal all the NFT at a later phase after all the NFTs have been minted. Our solution enables NFT collectors to see the assets before they are minted, but they still don't know for sure which one they would mint. It is provably-fair because the token ID is generated from Chainlink VRF randomness.
The smart contract inherits VRFConsumerBase to consume randomess. When the collector mint the NFT, the function will send a request for randomness to the VRF Coordinator, that will in turn call back into the contract to complete the NFT minting. Some care must be taken to not mint twice the same NFT, it is taken care of by a Fisher-Yates shuffle on-chain.