Author: Kun Peng
Contributors: Nick Bax, Gaurav Aggarwal, Max DiGiacomo, Ricardo Rosales
In our previous article, A Guide to Effectively Cheating NFT Launches (and detecting cheaters), we used code and data to analyze several problems that the NFT space currently has. In their article A Guide to Designing Effective NFT Launches, Hasu and Anish Agnihotri explored problems in the NFT space and presented some potential ideas on how to solve them.
In this article, we present an NFT Launch Framework to help people understand the NFT launch process and think about designing effective NFT launches.
There are two main types of NFTs: Generative and Non-Generative. Generative NFT projects are collections of NFTs whose image and metadata is generated on-chain at the time of minting. Non-Generative NFT projects are collections of NFTs which have specific sets of traits and images that are generated before minting. These collections are usually large, consisting of thousands of NFTs. A popular example is the NFT collection 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:
We will explore each of the three phases in more detail and discuss some of the considerations in each phase.
During the Preparation phase, it is important to have all the images designed or generated. If there is metadata, metadata needs to be created and stored on a platform like IPFS or Arweave. This phase can be subdivided into:
In a large collection of NFTs, the different properties of each token will determine how rare a particular token is. The rarity sheet is the sheet which contains all of the NFTs in a collection and their attributes.
The distribution of rare tokens in the rarity sheet is important because there is a strong correlation between the perceived rarity of a NFT item and its price. Poorly distributing rare tokens can lead to unfair exploitation by smart money and insiders.
A popular source for rarity ranking is the rarity score calculated by rarity.tools. As mentioned in our previous article, our rarity.py tool uses the same methodology as rarity.tools and can calculate the rarity score of a NFT collection based on the metadata from the collection.
Mathematically, we can use the following formula to represent rarity score calculation:
Rᵢ is the rarity score of a particular NFT i
N is an arbitrary large number
nⱼ is the total number of values of trait type j
tⱼₖ is the total number of NFTs that have the value k in trait type j
A good practice for creating rarity distributions is to randomize trait values to avoid clusters of rare items in a particular range of token IDs.
As we can see from the chart above, the first 100 NFTs in this collection are the rarest (lower rarity rank is “better”). Because of this, most minters had no chance of minting the rarest tokens.
With that said, we think the rarity score is uni-dimensional and is not necessarily a good indicator of the value of a particular NFT. In the future, we might explore alternative ways to determine rarity score or come up with new ways to determine how desirable a particular NFT is.
There are two approaches to generate images. One approach is to design each one of them manually. Digital artists like Naxeesi create a small batch of high quality NFT images. We call this approach design-driven image generation. Fractal art and algorithmically generated images also use the design-driven image generation approach since they do not use rarity sheets to generate images with different properties.
The alternative approach, attribute-driven image generation, is to have designs of base images and different attributes and then have a script to generate images. A rarity sheet is usually used to generate N NFTs with a random set of attributes. For large NFT collections, attribute-driven image generation is needed as human error can be minimized in this approach.
After images are generated using a script, these images can be uploaded to a file storage service like IPFS. A content ID (CID) will be returned, which will be used in the next step.
Data from the rarity sheet can be used to generate NFT metadata in json format. Metadata jsons can then be uploaded to IPFS.
After the metadata is generated and uploaded to a file storage service like IPFS, a new content ID (CID) will be returned, which will be used to set the baseURI in the smart contract.
IPFS is a popular network for storing metadata and images. The metadata is stored on IPFS nodes. Unless the data is hosted by the NFT creator’s own IPFS node, the content will be removed if no one has pinned it in 24 hours. As a result, paid pinning services like Pinata or NFT.Storage are recommended to provide data redundancy and guarantee metadata availability.
We have set up a sample rarity sheet with some attributes and a simple image generation script to illustrate the concept of rarity score, and the processes of image and metadata generation. You can access the code here.
NFT smart contract development can be a separate article on its own. We think that OpenZeppelin’s contract wizard is a good starting point if you are technical but new to NFT smart contract development.
We aim to develop no-code smart contract solutions with different NFT launch standards so that non-technical NFT creators and artists can spend more time creating art and building a strong community.
After smart contract deployment is complete, frontend code needs to be deployed to allow minting through a browser.
Community management and partnerships with other NFT projects and crypto influencers are key for a successful NFT launch. NFT artists and creators should spend a considerable amount of time creating a strong community on Discord and Twitter.
After the rarity sheet is prepared, images and metadata are generated, data is uploaded to IPFS, the smart contract is deployed, and a 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.
In this phase, NFT creators collect bids from NFT collectors. There are two main ways to collect bids: continuous bidding and batched bidding. The fixed price First-Come-First-Serve (FCFS) model is the most common method for continuous bidding & clearing. NFT creators set up a fixed price ahead of time. Then when minting starts, all the bidders will pay the predetermined fixed 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.
It is also difficult to estimate the fair minting price of an NFT. If the fixed price is set too high, then the NFT collections might experience slow sales. If the fixed price is set too low NFT creators will not capture all of the revenue possible.
An alternative model is batched bidding, separating the bidding process and the clearing process. In this model, bids are collected within a specified time range and are less likely to cause a gas auction, improving gas efficiency.
In the traditional market economy, the prices of goods can be deduced by several methods like market analysis or comparing to complementary goods. In the NFT market, there is not sufficient information ahead of time to derive the demand curve and prices. In addition, each NFT collection is valued differently, therefore no universal demand curve can be drawn. An interesting approach is to use auctions to determine a price so NFT creators can maximize their revenue and collectors can pay a fair price.
In this phase, winners are decided. Our definition of clearing not only refers to the process of determining the actual minters of NFTs but also to the process of deciding the ones who win the option to mint NFTs. In some cases, winners can choose not to mint NFTs.
Non-bidding approaches are popular approaches to bootstrap communities. Some of the most popular non-bidding approaches to determine winners are whitelisting and giveaways.
Giveaways consist of giving away NFTs for free. While giveaways can help bootstrap communities, they must be done in a trustless and provably fair manner. In our previous article, we highlighted a giveaway campaign where the first 100 tokens in a collection were distributed through giveaways. Unfortunately, the distribution mechanism was not provably fair and over 185 ETH of profit (~$800,000 at time of writing) was made flipping these giveaway NFTs. Because the giveaway campaign was not provably fair, we could not rule out the possibility that minters of this collection grifted more than three quarters of a million dollars by giving rare NFTs to friends, family, or other wallets they control.
Whitelisting is another non-bidding clearing approach to bootstrap NFT communities. Whitelisting is usually associated with marketing activities and gives certain addresses the option to mint NFTs during a specified range of time (at mint price or even at a discount). This approach might not work well if the NFT project does not have enough demand or strong community. Since minting data can be found on transaction explorers, if a lot of whitelisted addresses choose not to mint NFTs, the community will find out and this might affect sales in later stages. In addition, in some instances, there is no way to prove who the owners of those addresses are. They could possibly belong to insiders. This could affect the fairness and trustlessness aspects of the project. Also, the source of randomness is key to determine how random the whitelisted addresses are.
In bidding-driven clearing approaches, there are bids received previously and there are different ways to decide winners: on-chain, off-chain, or through a random number. The random number approach is essentially a raffle and it is the easiest form to decide winners. An important consideration here is the source of randomness, which will be discussed in a later section.
On-chain clearing is very common and most of the NFT launches with continuous or batched bidding use this approach. This might be gas intensive if the logic to determine winners is complex. Off-chain clearing is usually preferred for complex logic despite its impact on trustlessness.
An on-chain and off-chain hybrid approach is possible to balance trustlessness and gas efficiency. In this approach, bid collection is done on-chain and all bids are publicly viewable. The formula on how to decide the winning bids is published ahead of time. While everyone can use the formula to get to the same results, the computation will be done off-chain to save gas cost.
Auctions are a common and efficient method used to find potential buyers for goods whose price is ambiguous. We believe that auctions are a good alternative to the fixed-price FCFS model. If designed well, a batched auction avoids gas auctions, maximizes the expected revenue for creators and the expected utility for collectors, and improves gas efficiency.
Using bid type as the metric to categorize auctions, we have open-bid auctions and sealed-bid auctions. In sealed-bid auctions participants do not know what others have bid. A sealed-bid allows NFT creators to potentially get higher revenues than anticipated since participants bid based on what they are willing to pay, with no knowledge on what prices other bidders are bidding. An example of a sealed-bid auction in the crypto industry is the gas auction (since users do not know the bids of others). However, sealed-bid auctions are not very popular at the moment in the NFT space because all bids are posted on-chain for everyone to view. A new approach using zk-SNARKs would need to be developed for sealed-bid NFT auctions.
The two most popular open-bid auction types in crypto, which are heavily used on OpenSea, are English auctions and Dutch auctions. English auctions are ascending in price and Dutch auctions are descending in price. In these auctions, everyone can see other bids in real time. The auctions on OpenSea are about one particular NFT while minting auctions tend to be multi-unit auctions. In other words, minting auctions are auctions where several homogeneous items are sold. Although each NFT within the collection is different, the rights/opportunities to mint NFTs are homogeneous.
An interesting minting auction approach is a multi-unit English auction with a reserve price where bidders will submit their bid on-chain within a specified period of time. After the bidding period ends, if the number of bids is larger than the total number of NFTs, N, in the collection, then the top N bidders in terms of bid price will win. The bidders that do not win can get a refund. If the number of bids is lower than the total number of NFTs, then there will be leftover NFTs in the collection. A fixed-price or a multi-unit dutch auction can be conducted to auction off the remaining NFTs.
One interesting auction-related case study is the recent rise of ConstitutionDAO. Given that other participants at Sotheby’s knew the maximum possible bid of ConstitutionDAO, the DAO was severely disadvantaged from a game theoretic perspective. We strongly believe that DAO-based crowdfunding campaigns will become increasingly popular, and private DAOs utilizing zk-SNARKs will be needed to make DAOs more competitive in traditional bidding processes (credit to a discussion between individuals in a Stanford class).
Once winners are determined and fees are charged, NFT creators will need to decide how to distribute NFTs to the winners. In this phase, some important metrics to keep in mind are gas efficiency, user experience and user cost.
In the fixed price FCFS model, since bidding, clearing and distribution are continuous, minters pay the gas fees upfront and will either get the items or have failed transactions. This will likely result in a gas auction if the NFT collection is very popular.
It seems to be a good practice to separate bidding, clearing and distribution and do them in batches to avoid gas auctions. Once winners are determined in the clearing phase, winners can claim their NFTs at their own pace (usually whenever gas fees are low).
In the metadata reveal phase, metadata associated with each NFTs is established or revealed. Since there is a strong correlation between rarity score and prices, it is important to have randomness in the mapping between metadata and NFTs.
The mapping of metadata ID and NFT token ID can be established either in metadata generation during preparation phase or in metadata reveal during minting phase. If the mapping is configured during the preparation phase, then metadata should never be revealed before minting of the NFT associated with that particular metadata. Otherwise, savvy users will be able to pull metadata and calculate rarity score ahead of time and then use flashbots to snipe the ones that are rare.
Hasu and Anish’s article discusses the pros and cons of three types of metadata reveal: full-collection reveal, per-NFT reveal and batched reveal. We will not discuss them further in this article. However, all three reveal schemes are exploitable by insiders. Since teams know the rarity distribution ahead of time, they could snipe the rare ones before metadata reveals. In addition, the per-NFT reveal scheme has relatively high user cost as the Chainlink VRF is called for every mint transaction.
The mapping between metadata and NFTs can also be established during the minting phase. If designed well, the live mapping can alleviate concerns of insider-minting, thereby increasing trustlessness. There are several ways to do live mapping between metadata and token IDs. One way is the provenance hash approach purportedly used by Bored Ape Yacht Club (BAYC) and described by the Coinmonks article.
The approach consists of:
For this approach to work, NFT creators and artists need to make sure that the random number generated post-mint (shifter) is from a truly random source and the number generated is large enough to guarantee randomness. Another article dug deeper into the actual implementation of the Bored Ape Yacht Club smart contract and reported some interesting findings.
Another problem associated with this approach is that rarity distribution is set at pre-mint and usually off-chain. It is hard to guarantee full randomness. There might be clusters of rare items and lucky minters might be able to get multiple rare items in the same cluster at minting time.
One alternative approach for live mapping between metadata and NFTs is random assignment during minting. This is one type of implementation of the per-NFT reveals and can alleviate metadata clustering problems. This approach can make metadata to NFT mapping more random. However, it might become increasingly easy for savvy users to guess what items are left to be assigned in the collection when few NFTs remain unminted.
Another alternative approach is to shuffle the mapping of metadata to NFT during minting time. This approach can be further explored and gas efficiency and user cost need to be taken into consideration.
In summary, there are a lot of factors to consider when designing launches of NFT collections. A decentralized approach is usually preferred for trustlessness but is less effective in terms of gas efficiency and user cost. Batched actions are preferred to continuous actions to maximize gas efficiency and avoid gas auctions.
It is highly recommended to use a third-party provider as a source of randomness to guarantee fairness and trustlessness. It is crucial that the numbers are truly random and not manipulable by the NFT project team. In addition, user experience and user cost need to be considered when generating randomness. All four NFT minting phases may have some processes that requires a trustworthy source of randomness. A good source of randomness is Chainlink VRF. However it is fairly expensive as it requires 2 LINK to generate one random number on ETH mainnet.
In order to minimize the amount of LINK each user has to pay, the Provenance Hash shifting approach mentioned previously can be used. In this approach, Chainlink VRF is used only once after minting ends to generate a random number to shift the entire distribution of NFTs.
Another source of randomness could be a function programmed in the smart contract. For instance, Sneaky Vampire Syndicate has a function that uses the hash value of a block hash as the seed to generate random numbers.
NFTs can have royalties. Royalties give NFT creators and artists a percentage of the sale price each time a NFT in the collection is sold on a marketplace. There could be some interesting NFT launch standards designed with royalties. For instance, a high royalty charge during the first few days after mint will discourage NFT flippers from speculating on NFTs and dumping post-mint.
As Ethereum gas fees rise, it is becoming more common for NFT creators to launch their collections on alternative Layer 1 protocols. Two important factors to consider when deciding which chains to launch on are transaction fees and liquidity. Depending on the design of your NFT launch process, the majority of the actions during minting will happen on-chain. As a result, a considerable amount of transaction fees might be spent to launch your NFT collections.
Solana is another popular alternative due to its low gas fees. According to this article in Messari, Ethereum’s NFT ecosystem had 132,879 unique buyers and 101,920 unique sellers in October while Solana had approximately 48% of Ethereum’s unique buyer numbers and over 68% of the unique sellers. Although there is a lot of user traffic on Solana, its secondary market transaction volume is less than 15% of that of Ethereum’s.
This is the phase where we transition from primary market to secondary market and there will be overlap between minting and this phase. In other words, some people might still be minting while others are already listing their minted NFTs on marketplaces like OpenSea. It is important to get the collection verified on Opensea. There are some tips in this OpenSea article on how to get verified and how to improve discoverability on Opensea.
We think there are three types of marketplaces: centralized, on-chain, and off-chain.
Centralized marketplace are marketplaces launched by big exchanges like BSC NFT marketplace, Nifty Gateway, FTX NFT marketplace and the newly announced Coinbase NFT marketplace. This type of marketplace is relatively new and we have not seen much traction aside from Nifty Gateway early on. One of the reasons is that NFTs are held in custody.
Despite the current lack of traction, centralized marketplaces have brand value and existing partnerships that they can leverage. They can acquire intellectual property from sport teams and cultural icons, and develop NFTs with unique content and fan experience. In addition, these exchanges have huge user bases that are accustomed to having their crypto assets in custody. Therefore, centralized marketplaces might be able to bring in many more new users, who are less technical and more comfortable to have their NFTs in custody.
On-chain marketplace are NFT marketplaces where all the transactions occur on-chain. An example is Zora. This type of marketplace allows the composability and flexibility of innovative NFT practices like PartyDAO. However, the high gas fees on Ethereum also prevents a lot of users from using this kind of marketplace for now.
Off-chain marketplaces are NFT marketplaces that use both on-chain and off-chain transactions. While limiting the composability aspect of NFTs, they offer significant savings in terms of gas. Off-chain marketplaces, like OpenSea and Rarible, are the most popular NFT marketplaces. NFT creators can use platforms like OpenSea to launch their NFT collections for convenience and gas saving. Lazy mint allows NFT creators and artists to upload NFTs first without paying upfront. We will cover more about the pros and cons of launching on these types of platform in the next section.
The power of blockchain is once you purchase an NFT, it is yours to fully control, just like when you buy books or sneakers in the real world. There are and will continue to be NFT issuance platforms and marketplaces, but they will be constrained in what they can charge because blockchain-based ownership shifts the power back to creators and users — you can shop around and force the marketplace to earn its fees.
As we see more and more players entering into the space, we expect to see more fragmentation in the NFT marketplace. Centralized, on-chain and off-chain marketplaces will all compete for liquidity and users. In addition, in both Solana and Ethereum markets, only a few top projects possess the majority of the trading volumes in the secondary market, resembling a long-tail distribution. One goal of the HonestNFT platform is to help and mentor NFT creators and artists to have effective, provably fair and successful NFT launches.
In the future, we plan to offer non-code solutions to lock-in NFTs on OpenSea and re-mint them in customized smart contracts so that NFT creators have true ownership and control of their code. This also means NFT collections can enjoy the extensibility and composability of customized smart contracts.
NFT creators and artists can also use platforms like Opensea and Rarible to launch their collections rather than launching NFTs on their own. The NFT Launch Framework is still applicable for NFT launches on platforms, although platforms handle the preparation and NFT minting phases. While it is gas-efficient and more user-friendly to launch on platforms for non-technical teams, launching on platforms also means hefty platform fees, less flexibility in smart contract capability, and no composability.
In addition, by using a NFT launching platform, NFT creators and artists are putting their fates into the hands of NFT launch platforms. For instance, Rarible recently changed their frontend code to insert an extra ipfs:/ to the URI field.
This change from the Rarible side broke the metadata URI standards specified in EIP-1155.
This broke the metadata URI standards and affected NFT creators and collectors tremendously. Below we see an example of “broken” NFTs.
Our researcher Nick Bax found this issue and reported it in this tweet. The issue is finally fixed, not by Rarible, but by OpenSea. This solution is definitely not ideal since one platform is fixing the issue by having other platforms break the standards together.
Because of the reasons mentioned above, we believe that decentralized launches will become more common once Ethereum becomes more scalable. In addition, as no-code smart contract solutions become more mature, NFT collectors will increasingly choose to launch their collections on their own. We strongly believe that the HonestNFT platform can help to bring that future into reality sooner.
There are many factors that can affect the outcome of a NFT launch: size of community, activeness of community, quality of art, storytelling, market condition, and gas price.
It is our mission to build a decentralized NFT launchpad, where we will empower a new generation of NFT creators and artists to launch their NFT collections effectively. We intend to build components of customized smart contracts, where NFT creators and artists, who are not necessarily technical, can drag and drop. We strive to create NFT launching standards that can optimize these factors to maximize the probability of a successful NFT launch.
In future articles, we will create criteria to consider when designing NFT launch standards and propose different standards based on the framework presented in this article.