NFTs can be sorted into two primary categories: Generative and Non-Generative. The former involves NFTs whose image and related information is generated on-chain when they are minted. The latter are composed of NFTs that have particular images and characteristics that are generated before minting. These collections typically feature a large number of NFTs, with popular examples including the Bored Ape Yacht Club.
In this article, we will focus on Non-Generative NFTs. Our NFT Launch Framework divides the Non-Generative launch process into three phases:
- Preparation: Work before minting, including rarity sheet preparation, image generation, and uploading metadata,
- NFT Minting: The process of minting NFTs.
- Secondary Market Transition: Transition from minting to listing on secondary marketplaces.
The text outlines three phases and provides commentary on considerations for each one.
Preparation Phase
It is important to have all the images designed or generated during the Preparation phase. This phase can be subdivided into:
- Rarity sheet preparation (not needed if there are no attributes)
- Image generation and upload
- Metadata generation and upload
- Smart contract development and deployment
Rarity Sheet Preparation
The rarity sheet is a list of all the NFTs in a collection and how rare each one is based on its attributes.
It is important to have a good distribution of rare tokens in the rarity sheet because if there is a strong correlation between the perceived rarity of a NFT item and its price, then poorly distributing rare tokens can lead to unfair exploitation by smart money and insiders.
Image Generation & Upload
The first approach to generating images is design-driven, whereby images are created manually. For example, digital artists like Naxeesi create a small batch of high quality NFT images. Fractal art and algorithmically generated images also use this approach as they do not use rarity sheets to generate images with different properties.
In attribute-driven image generation, base images and different attributes are designed, and then a script generates images. A rarity sheet is used to generate N NFTs with a random set of attributes. For large collections of NFTs, attribute-driven image generation is needed in order to minimize human error.
After images are generated using a script, you can upload them to a file storage service, such as IPFS. In return, you’ll receive a content ID (CID) that you’ll need for the next step.
Metadata Generation & Upload
The data on the rarity sheet can be used to generate NFT metadata in json format. The json formatted metadata can then be uploaded to IPFS.
After metadata is uploaded to a file storage service like IPFS, a content ID (CID) will be returned. This CID will be used to set the baseURI in the smart contract.
IPFS is a network that is popular for storing metadata and images. The metadata is stored on IPFS nodes. If the data is not hosted by the NFT creator’s own IPFS node, the content will be removed if no one has pinned it in 24 hours. So, paid pinning services like Pinata or NFT.Storage are recommended to provide data redundancy and guarantee metadata availability.
A rarity sheet with some attributes and a simple image generation script has been set up to illustrate the concept of rarity score, and the processes of image and metadata generation. The code can be accessed here.
Smart Contract Development & Deployment
NFT smart contracts can be their own separate article. We think using OpenZeppelin’s contract wizard is a good starting point for those who are new to NFT smart contract development but are technical.
We want to make it easier for people who don’t know how to code to create NFTs by creating smart contracts that don’t require code. This way, NFT creators and artists can spend more time on their art and building a community.
Once the smart contract is deployed, the frontend code needs to be deployed in order to allow minting through a browser.
Community Building & Marketing
If you want to have a successful NFT launch, you need to spend a lot of time building a strong community and partnerships with other NFT projects and crypto influencers. Discord and Twitter are great places to start.
NFT Minting Phase
After the rarity sheet is prepared, the smart contract is deployed, and the frontend user interface is developed, we enter into the NFT minting phase. We use the same method that Hasu and Anish mentioned in their article to divide the NFT minting phase.
- Bidding
- Clearing
- Distribution
- Metadata Reveal
Bidding
In this phase, NFT creators collect bids from NFT collectors. The most common method for collecting bids is the fixed price First-Come-First-Serve (FCFS) model, where the price is predetermined and all bidders pay that price (plus TX fees) to mint the NFTs. Although this model is simple to implement, it hurts user experience and gas efficiency because it tends to cause a spike in gas and is unfair to people in different timezones.
NFT creators have to be careful when setting a fixed price for their product because if it is set too high, sales will be slow and if it is set too low, they won’t make as much money as they could.
An alternative to the current model is batched bidding, which would separate the bidding process and the clearing process. Under this model, bids would be collected within a specified time range, making it less likely that a gas auction would be necessary, and improving gas efficiency.
In the traditional market economy, prices of goods are determined by methods like market analysis or comparisons to complementary goods. In the NFT market, there is not enough information available ahead of time to derive the demand curve and prices. Also, each NFT collection is valued differently, so there is no universal demand curve that can be used. Auctions are an interesting approach that can be used to determine a price, so that NFT creators can maximize their revenue and collectors can pay a fair price.
Clearing
After the bidding process is complete, those who won the option to mint NFTs will be determined, and they will have the opportunity to mint them. In some cases, the winners may choose not to mint the NFTs.
There are many ways to bootstrap communities without bidding, some of which are more popular than others. Two such methods are whitelisting and giveaways, both of which are used to determine winners.
NFT giveaways must be done in a trustless and provably fair manner in order to be effective. If they are not done in this manner, there is a high risk that the people running the giveaway will illegitimate profit. For example, in a previous article we highlighted a giveaway campaign where the first 100 tokens in a collection were given away. However, the distribution method was not provably fair and over 185 ETH of profit (~$800,000 at time of writing) was made flipping these giveaway NFTs. This means that the people running the campaign could have potentially made over three quarters of a million dollars by giving rare NFTs to friends, family, or other wallets they control.
Whitelisting is a way of clearing non-bidding NFT communities that gives certain addresses the option to mint NFTs during a specified period of time. This approach might not be successful if there is not enough demand for the NFT project or if the community is not strong. If a lot of whitelisted addresses choose not to mint NFTs, the community will find out and this might affect sales down the road. Additionally, it might not be possible to prove the ownership of the addresses in some cases. This could negatively impact the fairness and trustworthiness of the project. Furthermore, the source of randomness is crucial to determining how random the whitelisted addresses are.
In bidding-driven clearing approaches, the winners are chosen in different ways depending on the bids that have been received. The approach using a random number is essentially a raffle, and it is the easiest way to decide winners. It is important to consider the source of randomness when using this method, as it will be discussed in a later section.
On-chain clearing is the most common way to launch an NFT, and most NFTs use this approach. However, if the logic used to determine winners is complex, this can be gas intensive. In these cases, off-chain clearing is usually preferred, despite its impact on trustlessness.
In this way, the computation is still trustless, but cheaper to run. It is possible to use a hybrid approach that combines on-chain and off-chain elements to balance trustlessness with gas efficiency. In this approach, bids would be collected on-chain, and all bids would be publicly viewable. The formula for deciding which bids are winning bids would be published ahead of time. While anyone could use the formula to get to the same results, the computation would be done off-chain to save on gas costs. In this way, the computation would still be trustless, but cheaper to run.
NFT Minting Auction
We believe that auctions are a good alternative to the fixed-price FCFS model. Batched auctions, if designed well, can avoid gas auctions, maximize the expected revenue for creators, and improve gas efficiency.
Use of the bid type metric to categorize auctions reveals that while open-bid auctions are more popular in the NFT realm currently, sealed-bid auctions have the potential to create greater revenues for NFT creators. In sealed-bid auctions, participants do not have visibility to the bids of others, allowing NFT creators to potentially get higher revenues than anticipated. However, a new approach using zk-SNARKs would need to be developed for sealed-bid NFT auctions as they are not currently popular due to the visibility of bids.
There are two popular types of open-bid auction used on OpenSea, English and Dutch auctions. In English auctions, prices go up, while in Dutch auctions they go down. Both allow all participants to see other bids in real time. The auctions on OpenSea tend to be for single items, as opposed to minting auctions, which are for multiple items of the same kind. Minting auctions are for items that are the same in some way, even if each individual item is different.
A multi-unit English auction with a reserve price, where bidders submit their bid on-chain within a specified period of time, is an interesting approach to minting auctions. If the number of bids received is greater than the total number of NFTs in the collection, the top N bidders in terms of bid price will win. Those bidders who do not win can receive a refund. If the number of bids received is less than the total number of NFTs, there will be leftover NFTs in the collection. A fixed-price or multi-unit dutch auction can be used to auction off the remaining NFTs.
An interesting case study related to auctions is the recent rise of ConstitutionDAO. Other participants at Sotheby’s knew the maximum possible bid of ConstitutionDAO, so the DAO was at a severe disadvantage from a game theory perspective. We believe that DAO-based crowdfunding campaigns will become increasingly popular, and private DAOs using zk-SNARKs will be needed to make DAOs more competitive in traditional bidding processes.
Distribution
After the winners have been chosen and the fees have been paid, the creators of the NFTs will need to figure out how to distribute the NFTs to the winners. During this phase, it is important to keep gas efficiency, user experience and user cost in mind.
In the fixed price FCFS model, minters pay the gas fees upfront. If the NFT collection is very popular, this will likely result in a gas auction.
The text is suggesting that it is a good idea to split up the tasks of bidding, clearing, and distributing into separate batches, in order to avoid having to pay gas fees. Once winners have been determined in the clearing phase, they can then claim their NFTs whenever they want (usually when gas fees are low).
Metadata Reveal
During the metadata reveal phase, the information associated with each NFT is either established or revealed. The rarity of an NFT has a strong correlation with its price, so it’s important that there is randomness in the relationship between an NFT’s metadata and the NFT itself.
The relationship between a metadata ID and an NFT token ID can be set up either when the metadata is generated during the preparation phase, or when the metadata is revealed during the minting phase. If the relationship is configured during the preparation phase, the metadata should never be revealed before the NFT associated with that metadata is minted. Otherwise, savvy users will be able to retrieve the metadata and calculate the rarity score ahead of time, and then use flashbots to snipe the rare ones.
The article by Hasu and Anish covers the advantages and disadvantages of three different types of metadata reveal schemes – full-collection reveal, per-NFT reveal and batched reveal. While the article does not go into further detail about these schemes, it does mention that all three are exploitable by insiders. This is because teams know the rarity distribution ahead of time, which gives them the opportunity to claim the rarer items before metadata is revealed. Additionally, the per-NFT reveal scheme has a higher user cost, as the Chainlink VRF has to be called for each mint transaction.
The relationship between metadata and NFTs can be set up when the NFTs are first minted. If the system is designed correctly, the live mapping can eliminate the need for trust, making the system more reliable. There are several ways to connect metadata and NFTs live. One method is the provenance hash approach, which is allegedly used by Bored Ape Yacht Club (BAYC) as described in the Coinmonks article.
The approach consists of:
- Using a hashing algorithm to generate a hash of each token’s metadata
- Hashing the collection of hashes to generate a provenance hash
- Publishing the provenance hash before the start of minting to demonstrate that the metadata is set pre-mint and is not manipulated
- Generating a random number to shift the metadata after minting haas concluded
In order for this approach to be effective, NFT creators and artists need to ensure that the random number generated after minting (shifter) is from a truly random source, and that the number generated is large enough to guarantee randomness. Another article looked more closely at the actual implementation of the Bored Ape Yacht Club smart contract and found some interesting information.
A downside to this method is that the distribution of rare items is set before they’re minted, and is usually not done on the blockchain. This makes it difficult to ensure that the items are randomized. There could be a large number of rare items all minted at once, or a small number, giving some minters an advantage.
One way to live map metadata to NFTs is to randomly assign them during minting. This can solve problems with metadata clustering. This approach can make metadata to NFT mapping more random, but users might be able to guess what items are left to be assigned in the collection when few NFTs remain unminted.
An alternative approach is to shuffle the mapping of metadata to NFT during minting time. This approach can be further explored to improve gas efficiency and user cost.
There are a number of considerations to take into account when designing NFT launches using a decentralized approach. This method is typically preferred as it eliminates the need for trust, but it can be less effective in terms of gas efficiency and user cost. It is often more gas efficient and cost effective to take action in batches rather than continuously.
Leave a Reply