In 2021, NFT collectibles erupted into a multi-billion dollar asset class. However, several growing pains have come with this success.
Most NFT drops use a first-come-first-served (FCFS) mechanism and have fixed prices set far below the market-clearing price (the price at which supply would match demand). The problem with this? Low prices and excessive demand effectively create race conditions. During highly-anticipated drops, only the earliest buyers will have the chance to mint an NFT. As a result, the demand to have mint transactions included in the next block rises, and gas fees increase substantially.
If you aren’t familiar with the term “gas fee,” it’s the payment users make to use the Ethereum blockchain. Specifically, “gas” is the fee required to successfully conduct a blockchain transaction. Users pay the fees in ether, which is the cryptocurrency used on the Ethereum blockchain. The network calculates the amount of gas a user has to pay based on demand for block space. Usually, fees are set automatically by a user’s wallet. Gas is measured in gwei, which is 10^(-9) ETH.
At peak times, you get what’s known as a “gas war.” This is the phrase used when there’s a monumental surge in gas price because numerous users are trying to get transactions confirmed in a small window of time.
The gas wars that occur during a high-demand NFT drop create a terrible experience for all the users on that blockchain. For example, following the breakout success of the Loot project, the rush to mint and list Loot derivatives caused several spikes in gas fees that raised the price of transactions across the entire Ethereum network. The plots below show how, on September 2nd, gas fees rose dramatically whenever Loot derivatives were minted.
This article will explore some case studies of how FCFS drops have negatively affected users. We also offer suggestions for how collection creators could have mitigated these problems.
Into the Metaverse: Problems with Adidas’ drop
Into the Metaverse is a collaborative NFT project between Adidas, Gmoney, Bored Ape Yacht Club (BAYC), and PUNKS Comic. It was released in December 2021. Owning one of the 30,000 NFTs grants owners access to limited edition Adidas merchandise and future virtual experiences. There was a presale that was only accessible to collectors who owned an NFT from one of the partner projects and then a public sale anybody could participate in.
Two main issues plagued the public drop. The first was high gas costs. The demand to execute a mint transaction to get an Adidas NFT greatly exceeded the number of transactions the Ethereum network could process in a single block. As a result, the cost to have an Ethereum transaction processed rose dramatically.
The above plot illustrates these dynamics by graphing mint transactions across blocks. Green points indicate successful mints, and red points indicate failed attempts.
35k wallets attempted 39k mint transactions, and 59% of these mint attempts failed. The median successful mint transaction cost 0.16 ETH in gas. 680 ETH worth of gas was wasted on failed mints. Based on the price of ETH at the time, that’s $2.6M.
The second problem with the public drop was that highly skilled actors had an unfair advantage. Each wallet was permitted to mint a maximum of two NFTs. However, some participants used bots to circumvent the rules. For example, one actor minted 330 Adidas NFTs in a single transaction. This person wrote a custom smart contract that deployed many sub-contracts. All the sub-contracts participated in the mint and sent the NFTs to one wallet.
One system that could have mitigated the problems that plagued the Adidas NFT sale is the drop mechanic developed by the Parallel NFT project. Using this system, the Into the Metaverse project would have allowed users to reserve an NFT off-chain. Each user would be able to reserve a maximum of two NFTs, as was initially planned. After making one reservation, users would have to wait 5 minutes before reserving another. This way, bots wouldn’t be able to snipe all the inventory before humans with normal reaction speeds could make their purchases.
The reservation period would continue until all the NFTs are reserved. Once all the NFTs were reserved, there would be a 24-hour period where users could pay for their reserved NFTs on-chain. This means users wouldn’t have to rush to perform their transactions in a short timeframe, and there wouldn’t be a gas war. It would also give the core team time to identify and weed out any bots that participated in the first phase.
Finally, the NFTs would be minted and sent to buyers in batches. Adidas would pay the gas cost associated with minting and transferring the NFTs out of the drop revenue. Note that, using this method, buyers only have to make one payment transaction on-chain that will have a relatively low gas cost compared to a mint transaction.
The disadvantage of this method is that users would have to trust that the centralized, off-chain reservation system — and the team members blacklisting bots — aren’t biased. Proving that a user is a unique person and not a bot without compromising on decentralization is still a developing field in web3.
The issues that came with Doodles
Doodles is a collection of 10k unique profile picture NFTs that launched in October 2021.
The Doodles drop had two stages: a whitelist-only FCFS mint phase and a public FCFS mint phase. During the whitelist phase, users were able to mint at their leisure, base gas remained reasonably stable, and there were few failed transactions. Once the public sale began, the demand for block space rose as people rushed to mint the remaining Doodles, and gas fees skyrocketed.
During the presale (before the grey vertical line), failed transactions accounted for just 0.2 ETH in fees.
During the public drop (after the grey line), 13k mint transactions were attempted by 10k wallets. 12k of these mint attempts failed, representing a 90%+ failure rate. The median successful mint transaction cost 4.0 ETH in gas.
335.2 ETH worth of gas was wasted due to failed transactions. Based on the price of ETH at the time, that’s $1.26M. The Etherscan entry for block 13,439,104 is a perfect snapshot of the carnage — it had over 1,000 failed Doodles transactions, causing almost 100 ETH in failed transaction fees alone.
Implementing the MultiRaffle method could have improved gas efficiency and the failure rate of the Doodles drop. Anish and Hasu, prolific researchers from the Paradigm crypto investment firm, developed this drop mechanic. It involves users buying raffle tickets by locking up funds in a smart contract. The cost of the ticket equals the cost of the NFT, and this cost is refunded if that ticket is not a winner.
The ticket-buying period should last multiple days to ensure that there wasn’t a race that would affect gas prices. Once the ticketing period ended, the winners are chosen using Chainlink VRF to provide robust randomness. High-skill participants wouldn’t have an unfair advantage in the competition because each ticket would have an equally random chance of being selected. Finally, users can claim their NFTs or refunds whenever they wanted. Only at this point would the project team be able to withdraw money from the contract as enforced by the code.
For the devs reading this, you can find an implementation of the MultiRaffle method here.
And then there was the Stoner Cats drop
Stoner Cats is an animated short series produced by an all-star cast, including Mila Kunis and Ashton Kutcher. Buying one of the 10,420 NFTs granted holders access to various episodes and perks, such as ideating with the creators and behind-the-scenes content.
During the drop, 3.5k wallets made 5k mint attempts. 51% of these mint attempts failed. Successful mints cost a median of 0.22 ETH in gas each. 345 ETH worth of gas was wasted on failed mints. That’s $794k, based on the price of Ethereum at the time.
As the race to mint Stoner Cats began, gas fees soared. In addition to this, the minting contract was written inefficiently, which led to insufficient gas limit calculations. As a result, users who didn’t manually adjust the gas limit in their wallets were more likely to experience failed transactions.
Thankfully, the Stoner Cats team decided to reimburse the participant’s gas fees after the incident.
In addition to improving the contract, one method that could have helped improve the gas efficiency and the failure rate is gating the mint option behind a series of Stoner Cats-themed games and puzzles. These challenges would be diverse in nature and occur on many different platforms to make the treasure hunt infeasible to bots, even if a user was to know all the steps. A good example of this method is the TempleDAO opening ceremony, which included multiple steps of Discord commands, Cryptovoxels puzzle rooms, and questions to answer on a custom website.
This method would serve to stagger the minting. Users wouldn’t arrive at the final website at the same time and compete via gas to mint first. Those who hadn’t completed the series of challenges by the time all the NFTs were minted wouldn’t have the chance to submit a mint transaction. This is preferable to submitting a mint transaction that fails, as there are no NFTs left and participants would be losing money on the gas fee.
Using puzzles and games to gate the mint would also be a fun way to filter participants and select those who are the most engaged by, and interested in, the project — instead of unintentionally filtering those with the biggest wallets and highest skills, which is how things currently operate. This would likely be positive for the community in the long term.
How TIMEPieces could have improved
In September 2021, Time dropped an NFT project called TIMEPieces. The collection included 4,676 NFTs featuring work from more than 40 artists. Perks for holders included unlimited access to the time website until 2023 and exclusive invites to future in-person events.
11k wallets made 13.5k mint attempts, and 96% of those attempts failed. Successful mint transactions had a median gas fee of 2.3 ETH. 265 ETH worth of gas was wasted as a result of failed transactions. Based on the price of ETH at the time, the wasted gas was worth $836k. In block 13,283,025, failed TIMEPieces transactions account for about 90% of the entire block!
The TIMEPieces drop had a horrendous failure ratio of 96%. The NFTs sold out in just a brief 2-3 minute period due to high-skill participants finding the contract beforehand and preparing bots well in advance. TIME’s president Keith Grossman addressed the issues in a Twitter thread after the drop.
One approach the team could have used to prevent this outcome is a smart batched auction. Using this method, users submit bids to a smart contract specifying the number of tokens they want and the price they wish to purchase them for. Once the bidding period ended, a clearing price is calculated to match demand and supply. Users who bid above that price claim the NFTs, plus the ETH difference between the bid and the clearing price, whenever they want. Users who bid below get their ETH refunded by the contract. No rush, no race to mint first, no gas wars.
For the devs reading this, you can find an implementation of the smart batched auction for NFTs here.
Other ways to solve problems in NFT drops
In addition to the drop mechanics explored above, NFT projects can explore routing mint transactions through Flashbots RPC during a drop. This presents two main benefits:
- If a transaction fails, the user won’t have to pay gas for it.
- Bots won’t see a user’s mint transaction in the public mempool.
One way that a project could take advantage of Flashbots RPC is by adding an informational pop-up to the drop website that explains to users how to mint using Flashbots RPC. Another way would be to design the drop website to detect the users that aren’t using Flashbots RPC and prompt them to add it to Metamask before minting.
In this article, we have explored case studies of how FCFS collectibles drops lead to a terrible user experience and suggested a few viable alternatives.
At the end of the day, we would love to see the community band together to push against the FCFS model. As users, we have the power to vote with our wallets and decide what projects succeed. If we make it clear that we won’t support highly-anticipated drops that don’t experiment with better techniques, dev teams will design drops that offer a much better user experience. The evidence is clear. NFT drops are broken. It’s time to fix them.