Table of contents
- But first, some background: On market-clearing prices; on trading off efficiency
- Descending pay-as-bid auctions
- Descending clearing-price auctions
- Proof of unique personhood
- Allow-lists
- Lotteries
- Hybrid mechanisms
Editor’s note: This piece is part of our ongoing series on all things ‘auctions for web3’. For an overview of auction designs, and technical challenges (and opportunities) specific to mechanism design in a permissionless blockchains context, please check out this episode.
A key feature of web3 is enabling early fans of a creator, product, or platform to form a community through ownership of associated tokens on a blockchain. When it comes to non-fungible tokens or NFTs — which uniquely represent ownership of media such as code, digital art, characters, memes, music, text, videos, games, virtual real estate, and much more — creators often build significant anticipation and engagement before their initial sales. This can contribute to community-building among early collectors, which can sometimes in turn grow the value of holding the token.
Instead of letting the market decide the price for their primary sale offerings, however, many NFT projects choose to initially sell their NFTs at prices below the market-clearing level. Sometimes this is because the team doesn’t realize the sheer demand for their offering, or because they designed their initial sale mechanism poorly. Often, however, selling NFTs at below-market-clearing prices comes out of a direct desire to make the sale accessible to more people or to achieve specific distributional goals.
But what happens when market designers trade off efficiency for equity (here we mean “equity” as in the fairness of the marketplace and market-clearing mechanisms); or when demand far outstrips supply, as is often the case with high-demand NFT launches and drops?
When people want to purchase scarce resources in a market, this inevitably leads to competition among prospective buyers along other dimensions. In the Ethereum ecosystem, that competition can produce so-called “gas wars” that escalate when prospective buyers bid the gas price upwards as they compete to be first in line for the sale. So how can builders avoid this? And more broadly, how can builders address market demand if they really do want to offer their NFTs at a below-market-clearing price? Here, we offer some guidance for builders from our vantage point of auction theory and mechanism design in practice — especially in the unique context of blockchains.
When there are high-demand launches or limits on purchasing, buyer demand can far outstrip supply. Market pressure then drives the price towards the level at which demand and supply match up (or equalize) — that is, the “market-clearing price”. This inevitable drive towards prices at which supply and demand meet is one of the most core principles of economics. Even when the “pricing” is somewhat hidden – for example, competition over gas fees — in the end, market forces make it so that some form of payment ends up helping supply and demand match up.
Implementing price controls, for example, typically leads to competition over access — long lines, more time spent seeking purchase opportunities, or other costs. This has famously happened in non-blockchain contexts, such as with rent control and price ceilings on (literal) gasoline.
Similarly, as described above, “gas wars” on Ethereum are a market equilibrium phenomenon: They arise directly through market forces, in response to constrained supply. (“Gas” in this context is the amount of computational effort required to execute specific operations on the network.) More specifically, gas wars occur during NFT mints when buyers try to jump ahead of each other in line, which causes a sudden spike in the immediate demand for blockspace; that in turn drives up gas prices, and leads to ever-higher transaction fees.
One common misconception that often comes up in discussions about avoiding gas wars is the need to optimize the smart contract running the sale. While that’s certainly good to do for other reasons, such as user accessibility, more gas-efficient smart contracts can’t on their own prevent gas wars, which arise through market forces. And paradoxically, if the contract is better optimized, gas prices will need to go even higher to achieve the same effective price. (Although optimized contracts do at least have more sales per block, which makes the whole process — including the gas wars — end more quickly.)
Ethereum co-founder Vitalik Buterin pointed this out as well in a post last year on market-clearing prices in the context of NFT drops (and the erstwhile phenomenon of ICOs), and the negative externalities that result. In the piece, Buterin also suggested alternatives to selling below market-clearing prices — whether the goal for doing so is to achieve fairness, or community sentiment, or fun.
On a related note: One of the authors of this post (Scott) also recently presented work with Mohammad Akbarpour and Piotr Dworczak on ”redistributive allocation mechanisms” — a theory for how marketplace designers can think about the tradeoffs between efficiency and “equity” or redistributive concerns, and how the same approaches for designing revenue-maximizing auctions and efficient allocation mechanisms can be applied when there are market-level redistributive goals. In non-blockchain contexts, this work has implications for policy problems such as in-kind transfer programs for food and healthcare, as well as vaccine allocation; in crypto, it has applications for organizing NFT sales, DAO token governance distribution, and more. (You can watch a video about this work here.)
Now, with that general context, let’s talk more specifically about the tradeoffs between efficiency and other goals in market design for NFT sales. First, we discuss auction designs that lean into market forces in order to efficiently clear the market. We then follow with a section on what to do when NFT projects or creators may still want to hold primary sales at below market-clearing prices, and how they might manage demand if so.
Perhaps the easiest strategy to avoid gas wars is to lean into market forces, and run the NFT sale in a way that clears the market. Here, for example, are two auction mechanisms that can achieve that, and are currently used in NFT sales.
One option is to run a descending auction, in which a sale starts at a very high price, which then slowly descends, with bidders claiming units at whatever the current price is until they exhaust the available supply. This “pay-as-bid” auction format is simple to understand because bidders pay precisely their bids for each unit. It also mitigates gas wars to some degree by spreading out bidding over time — although we do sometimes see gas wars towards the end of the auction, as bidders try to jump in at whatever seems likely to be the lowest realized price.
But there’s a funny incentive issue in this type of auction, which is that participants have an incentive to wait if they think others aren’t likely to bid — since all else equal, bidding later lowers the price you end up paying. The waiting often turns a descending pay-as-bid auction into something like a big game of “chicken“, with everyone waiting to see when others will start bidding. This can paradoxically lower the clearing price (and again, result in a gas war when everyone eventually ends up bidding at the same time).
People also often point to fairness as a concern in this sort of auction: a project’s biggest fans and supporters are the ones most driven to lock in their bids at the early, higher prices — and this means they may end up paying far more than everyone else. While it may make sense from an economic standpoint for the people who place the highest value on the tokens to pay a premium for certainty that they can win them, it may also go against a community ethos to have the most engaged supporters pay, say, 10 times the auction’s eventual closing price.
Both the fairness concerns and the gas wars that arise at the end of a descending pay-as-bid auction can be avoided if teams instead run what’s called a “clearing-price” auction (or “uniform-price” auction). In this auction mechanism, the price again starts high and descends, with people submitting bids for units at any price along the way. The auction ends when the last unit has been claimed, but unlike in the “pay-as-bid” auction, here everyone pays the same price per unit at the end: specifically, the “clearing-price”, which is the last (and lowest) price displayed prior to the auction’s termination.
Note that in a clearing-price auction, while nobody ever pays more than their respective bids, people might in principle end up paying much less than their bids if they bid for units when the price was high, but the final price ends up being low. So for example if a clearing-price auction starts accepting bids at a price of 2 ETH, but then supply is eventually exhausted at a price of .42 ETH, all the bidders end up paying .42 per unit — even those who bid, say, the initial price of 2. This makes the whose process much easier for bidders, since if for example someone’s value is 2, they can bid immediately at 2 and not have to worry about getting a worse deal relative to if they had waited and entered the bidding at a lower price later. (This isn’t quite true when you’re the only person bidding very close to the clearing price, but in over-subscribed NFT auctions, that’s not typically an issue.)
Clearing-price auctions in many ways make sense from a market design perspective: In particular, they encourage economically efficient outcomes, especially when there is a reasonable number of units being sold. But it’s important to note that running them on blockchains introduces some complexity because bidders effectively have to escrow funds at the moment they bid, and then receive refunds once the final price is determined. The refund function has to be carefully specified, for example to avoid accidentally locking the extra funds in the sale contract.
If a team really wants to conduct a sale at a price below market-clearing levels, then the way to avoid gas wars is to somehow constrain demand in a way that stops buyers from having to compete with each other in order to make their purchases.
But this is difficult to do, because it typically requires limiting both who is allowed to purchase and how many units those prospective buyers are allowed to buy. The total quantity demanded by all qualified buyers needs to be less than or equal to the available supply. This may be especially hard to ensure in the crypto space, where maintaining multiple pseudonymous accounts is common.
Still, there are some options for constraining participation, and we outline three below. Some projects have successfully used these techniques. [Note however that while we have included a section on lotteries solely for educational purposes, there are some questions about the legality of lotteries and “sweepstakes” as mechanisms that narrow the universe of sale participants; so builders should consult with a lawyer before using such mechanisms.]
One way to constrain participation is to require some form of “proof of personhood” as a condition of entering the sale — pre-registering buyer accounts in a way that guarantees each one represents a distinct human. This restricts the pool of buyers (or more specifically, buyer wallets) to those who can prove a unique identity, perhaps through a “know your customer” (KYC) policy that requires uploading identity documents. If implemented well, this can screen out bot networks, reducing the pool of prospective buyers significantly.
But proof of unique personhood on its own isn’t always enough to achieve market stability and fairness. In practice, people often manage to get around the implied purchasing limit by hiring people to KYC additional wallets. But even when it is possible to truly limit the sale to unique buyers, that still doesn’t solve the problem if there is simply far more demand than supply.
As we emphasized above, as long as demand outstrips supply, market forces are likely to drive up the price. There’s not a big difference between infinitely many bots standing ready to buy and simply having 20% more registered demand than supply — in both cases, the incentive to race to the front of the line will lead to a gas war that drives the total price paid per unit toward the market-clearing level. This is often clear to experienced NFT buyers leading up to drops, and blockchain sleuths also often carefully track the total number of approved wallets with this in mind.
An alternate way to limit participation is to create “allow-lists” — explicitly curating the list of prospective buyers. Many teams offer access to holders of tokens associated to partner projects, or to people who have been particularly active in the community prior to launch. This approach does make it possible to constrain demand below supply, fully mitigating the gas war problem — at least so long as the project creators don’t go overboard and let too many people onto the allow-list!
However, this approach doesn’t escape the issue of market pricing. Indeed, here the price competition just occurs in a different unit: Instead of just paying in currency, prospective buyers pay in part through work — that is, the effort they put in to hopefully gain a position on the list.
This means that allow-list processes can become a grind. But allow-lists nevertheless do create an opportunity for more incentive alignment, in the sense that prospective members of an NFT community undertake activities that grow overall community engagement — and in the end the opportunity to buy the NFTs goes to those who were most actively involved. And it’s also the case that allow-lists can be designed in ways that are accessible to people who have time and energy to spend, but less liquid capital.
Yet at the same time, allow-list contests are often “all-pay” rather than “winners pay.” Unlike in the auctions described above, where only the winners end up paying whatever the price is, in the context of an allow-list, everyone who participates ends up putting in the effort (or acquiring the partner project NFTs) — irrespective of whether they earn the right to buy the NFT in the end or not. This can lead to negative sentiment among those who worked hard but were left out — and that can be tricky for NFT communities to navigate.
One other way to limit participation (and potentially avoid gas wars) is to allocate purchase opportunities randomly, through a lottery
Here, prospective buyers are offered the opportunity to register for the lottery over a long period — perhaps a week — and then at the end, a randomly-selected set of registrants are given the right to purchase the NFT. (Some registrants selected may opt out, which means it might subsequently be necessary to go to a waitlist.)
These sorts of mechanisms effectively mitigate gas wars by first spreading out the registration process — so there’s no need for all the registration transactions to happen at once — and then by constraining the number of buyers to exactly match the available supply.
However, just like with allow-lists, market-clearing pricing again comes into play through a form of work: in this case, the effort undertaken to enter the lottery.
In a lottery for a highly-demanded anticipated sale, prospective buyers might create large networks of bot registrations. In this case, the lottery can devolve into a competition among high-powered botnets, with ordinary individual buyers effectively unable to secure any positions in the sale.
Lottery participation can be more effectively controlled by using a proof of unique personhood strategy (again, like KYC). Or alternatively, it’s possible to reduce participants’ ability to create absurdly high numbers of entries by requiring people to escrow a deposit for each entry to the lottery. The escrow approach makes it costly to submit a large number of entries — but at the same time, buyers with excess liquidity will be more able to enter than others (and still potentially able enter multiple times), limiting the overall accessibility of the sale.
It’s worth noting that many of the mechanisms described above can be used in tandem for a single sale.
For example, the Tally Labs‘s [see disclosures below] Jenkins the Valet Bored & Dangerous mint was conducted through a three-phase process: First, the team held a descending clearing-price auction for 2367 units; then, they held an allow-list sale for various members of their existing community at a discount to the final auction clearing price. Finally, holders of the team’s genesis “Writer’s Room” NFT collection were able to claim additional copies of the Bored & Dangerous NFT (one per Writer’s Room NFT) for free.
* * *
Market-clearing prices are like gravity: inevitable and inescapable. Anyone building a market mechanism — whether on a blockchain or not — has to deal with the forces of supply and demand equilibrium.
But at the same time, thinking about market forces and incentive design can help us build the right mechanisms, and shape what the eventual sale equilibrium will be. We’ve seen that a top-level decision is whether to lean into market forces (in which case clearing-price auctions provide a good starting point for a sale); or insist on the more challenging approach of selling at below-market-clearing prices (in which case controlling eligible demand, for example via allow-lists, is necessary but may not be sufficient).
The design of NFT drops provides yet another example of how hard mechanism design on the blockchain can be… and as the NFT space evolves, we expect to see new mechanisms both guided by and contributing to classic theories of market design. But with more and more researchers and builders deeply internalizing both classic mechanism design and the idiosyncrasies of web3, we’re starting to see lots of experimentation around various blockchain-based allocation mechanisms. Progress is inevitable… and we’re excited for what comes next!
—
Acknowledgments: The authors thank Chain Runners Architects, Chris Dixon, Far, Flashrekt, Foobar, Eddy Lazzarin, SAFA, Steve Kaczynski, Valet Jones, and Vivek Ravishanker for helpful comments. Special thanks also to our editor, Sonal Chokshi!
Disclosures: See full disclosures for a16z crypto and link to investments below. (Note Kominers also holds Tally Labs NFTs; for further disclosures, please see his website.)
***
The views expressed here are those of the individual AH Capital Management, L.L.C. (“a16z”) personnel quoted and are not the views of a16z or its affiliates. Certain information contained in here has been obtained from third-party sources, including from portfolio companies of funds managed by a16z. While taken from sources believed to be reliable, a16z has not independently verified such information and makes no representations about the current or enduring accuracy of the information or its appropriateness for a given situation. In addition, this content may include third-party advertisements; a16z has not reviewed such advertisements and does not endorse any advertising content contained therein.
This content is provided for informational purposes only, and should not be relied upon as legal, business, investment, or tax advice. You should consult your own advisers as to those matters. References to any securities or digital assets are for illustrative purposes only, and do not constitute an investment recommendation or offer to provide investment advisory services. Furthermore, this content is not directed at nor intended for use by any investors or prospective investors, and may not under any circumstances be relied upon when making a decision to invest in any fund managed by a16z. (An offering to invest in an a16z fund will be made only by the private placement memorandum, subscription agreement, and other relevant documentation of any such fund and should be read in their entirety.) Any investments or portfolio companies mentioned, referred to, or described are not representative of all investments in vehicles managed by a16z, and there can be no assurance that the investments will be profitable or that other investments made in the future will have similar characteristics or results. A list of investments made by funds managed by Andreessen Horowitz (excluding investments for which the issuer has not provided permission for a16z to disclose publicly as well as unannounced investments in publicly traded digital assets) is available at https://a16z.com/investments/.
Charts and graphs provided within are for informational purposes solely and should not be relied upon when making any investment decision. Past performance is not indicative of future results. The content speaks only as of the date indicated. Any projections, estimates, forecasts, targets, prospects, and/or opinions expressed in these materials are subject to change without notice and may differ or be contrary to opinions expressed by others. Please see https://a16z.com/disclosures for additional important information