The Masternode and the 0x09 simulation

End to end NFT project from a dev´s perspective.

The Masternode and the 0x09 simulation

This article will serve as a requirements doc, roadmap, and brainstorming document for the 0x09 simulation. This is a personal NFT project that I am creating as an excuse to try out new things and experiment with a larger project than the ones you usually see in other articles.

To be clear from the beginning:
- This is NOT intended to be a commercial NFT project. I will be developing whatever I think is fun to do. If you buy any of these please do so just because you like the art, the project (or even me?). Even so, I am also planning to implement a refund mechanism for any existing holder.

I will be documenting the whole process so each part of the project will have its own article (or maybe several). This one will just outline the initial idea and will be updated as we go, adding the newest articles, amending for changes that I make as the project advances, or adding new ideas that will be implemented.

The backstory

The Masternode is one of the many AI orbs that have been rendered outdated with the newest generation of quantum AI networks. Left on his own, with an infinite supply of energy it started to feel a new kind of torture: boredom. And so, with near-infinite computing capacity, it decided to create a simulation of the universe. We are already probably a simulation within a simulation elevated to the nth power, so why not continue the cycle?

The good thing about being the creator of a new reality is that you can pass any quirks to your universe as an internal joke. Our Masternode has an obsession with the number 9 and so we will be able to find it nearly anywhere in this world. starting with the name, the 0x09 simulation.

Dev roadmap

Smart contract ERC721

The smart contract will be an ERC721. Each wallet will be allowed to have a max of 9 tokens and the starting price will be 9 MATIC (you see where this is going right?). There will be ways to get the tokens for free, either being part of an allowlist, getting a score in a game or any other way that I could think about. For this reason, the smart contract will be governed have different roles as per Openzeppelin's AccessControl contract.

The contract will also include ERC2981 royalties, not because they are useful or reliable anymore, with marketplaces changing the rules every other day, but as a statement of our belief that royalties are a key part of the NFT ecosystem for artists and creators.

Artwork and Metadata

The collection will consist of 9 traits each with 9 variations. If I have the right calculation then that amounts to 387,420,489 different tokens so no, scarcity is not going to be the game here. But getting the full collection of characters may be.

The idea is that the collection is made up of 9 different characters, following the alignment matrix of D&D. The alignment is 1 of the traits, so there will be another 8 traits that will make each character unique. This also gives sense to the limitation of 9 tokens per wallet, the meta is going and collecting them all.

Regarding the artwork, we live in the dawn of the AI age, so the individual pieces that make up the different artwork layers will be AI-generated. This is also a good opportunity to explore different tools as style consistency is important to get a cohesive feeling.

How do we make the rarity allocation fair? How do we gamify it and make it fun? There is a very interesting guide by Paradigm.xyz that talks about all of these matters, go check it out. Also, I want to have the images and metadata in a decentralized storage solution (IPFS or Arweave) that won't go down in the future.

To solve this, I have decided to go with a backend that will randomly create the image and metadata on the fly, send it to either IPFS or Arweave, and then set tokenURI of the specific token that was minted. A special TOKEN_URI_ROLE will be created in case something goes wrong during the minting of any specific token so we can fix it later.

The rarity table will be decided beforehand and made public. The way to create it will be based on some variation of the very sophisticated method of throwing dice (a physical one, get back to this side of the simulation for a minute).

Treasury smart contract

This contract will be the Masternode's treasury and the opt-out mechanism for the community.

It will hold enough MATIC to back the minting price of any token in the collection. Therefore:

  • If you minted for 9 MATIC, you can give the token to the Treasury and get your 9 MATIC back.

  • If you got it for free then you can still give it back to the community but you will get just a thank you and a goodbye wave.

  • If, for some reason, you bought it for a gazillion ETH on a secondary market then you only get back the minting price if you decide to give it to the Treasury (remember, only, if it was minted for a price originally).

The Masternode will then decide what it wants to do with the tokens that are owned by the Treasury.

Marketplace and Swap smart contract

Either we create our marketplace, or we can integrate with third-party smart contracts (Zora?) or everything all at once. Of course, our marketplace won't have any fee because we will be respecting the Masternode's original royalties. Also it will be exclusive to our collection.

For the sake of helping you collect the 9 different characters, we will also create a swapping contract where you will be able to change one token for another. To help you decide on the best option, the front end will be prepared to display any token in the collection.

Subgraph

I will also create a Subgraph for the whole system, so we can leverage it on the front end and back end. To this end, I will be careful in designing the smart contract events to make it easy to index and to able to create Entities that make sense.

References