Randomness

Introduction

As we explained in The problematic NFT scene and at The Yung Pixels Manifesto, we found a lot of problems in the NFT scene that guided us to study and plan how to provide genuine randomness and how it could impact our project.

The main PFP NFT technological problem we find is how most projects provide their "unique" and "random" NFT.

How do they do it?

There is a common way these projects provide randomness to their NFTs:

  • Create a contract with a baseUri pointing to a generic image representing the unrevealed state;

  • Sell all the NFTs with an unrevealed aspect (e.g.: a gif, a video);

  • Run a program on their computers to generate and order a list of the NFTs randomly;

  • Change the baseUri on the contract, so that the users can access their revealed NFTs.

This approach shows us two huge problems blockchain projects should not have: zero transparency and complete centralization!

Transparency

So, after these projects revealed each buyer their NFTs, changing the baseUri and providing the randomness on their computers, can the team ensure they didn't change some tokens or gave themselves the NFTs with the rarest attributes by changing the ownership? How can anyone be sure that the team didn't benefit themselves or their partners?

They can't ensure and you can't be sure, as much as you trust the team. The problem here is beyond how nice the team is or how trustable they are. This problem only exists because these teams aren't using the blockchain to prove randomness: they only use it to prove ownership! If the smart contract proves randomness and ownership in the blockchain, which is a public ledger, then the buyers don't need to trust the team, they need to trust and understand the blockchain technology.

Centralization

But poor transparency isn't the only problem. Many NFT projects also have a function on the contract that allows changes of the token's baseUri.

A little bit about the metadata composition:

Metadata = baseUri + tokenId + metadata extension Eg: https://ipfs.io/ipfs/QmWJvWd3y2HPKhqoVLPRR84HDRSBy5Z85pSVuYeSQRZXrZ/1234.json

baseUri = https://ipfs.io/ipfs/QmWJvWd3y2HPKhqoVLPRR84HDRSBy5Z85pSVuYeSQRZXrZ/ tokenId = 1234 metadata extension = .json

So, if it's possible to change the baseUri, these teams can change the "metadata"! Now we have a centralization problem! At any time, they can change someone else's NFT appearance and drop all the NFTs.

E.g.: The owner of the contract changes the baseUri to `www.google.com`. The composition will be: www.google.com + tokenId + .json. No metadata will come from it; they simply dropped the NFTs by changing baseUri.

By centralizing the NFTs on their hands, they can, even with IPFS, change the metadata when they choose to. They can even store all NFTs in a centralized way, which is a BIG problem. But that isn't the case for Yung Pixels and we've addressed this issue in this article.

How do we do it?

The poor transparency and centralization problem are all issues blockchain came to solve, so we chose to handle these problems efficiently and straightforwardly: we provide and prove everything on-chain.

VRF is the answer

We are using VRF from Chainlink to give true randomness to all and each of the tokens on-chain.

  • Create the contract with the baseUri already set for the Yung Pixels;

  • Let the buyers buy and reveal the token whenever they want;

  • Store all Metadata in IPFS with a backup in Piñata, which also uses IPFS.

And that's it.

At Yung Pixels, we'll have several YP already deployed on IPFS before the sales. Through VRF, the buyers are free to reveal IF and WHEN they want, and try their luck by "opening its pack" to reveal a Yung Pixel of the metadata list stored on IPFS. In this way, we guarantee that we cannot drop the NFTs, since we don't have the power to set the baseUri, and we cannot benefit someone, since the ability to reveal is on the buyer's hand. And the buyer can be sure that the reveal is fair as Yung Pixels uses true randomness and no one can interfere on the process, which is completely decentralized, and truly random, while also being proofable on the Blockchain.

Yung Pixels will be the first PFP project to give true randomness to each token on-chain, all with a lot of work with Chainlink. You can understand better the buy and revealing process at Stages of Yung Pixels.

Last updated