Getting tokens into the right hands in a fair, efficient and targeted way should be a top priority for founders in crypto. Not only does this impact who governs your protocol, a token that begins as a potential security can also become credibly decentralized over time, potentially shielding founders from regulation in a space where precedents are still rare.

Since the days of EOS’ open-for-all $4B ICO and indiscriminate token airdrops in 2017, the methods by which tokens are distributed have matured. Below, we will examine case studies associated with each main method of distribution, and evaluate each method based on the following criteria: fairness of distribution, capital efficiency, and incentive alignment.

50:50 Liquidity Pools

Popular venue(s): Uniswap, Sushiswap

As decentralized exchanges (DEXes) have gained meaningful adoption over the past two years, teams have discovered they can launch a token by seeding an initial 50:50 liquidity pool on AMM exchanges such as Uniswap or Sushiswap.

In other words, projects can tap into their treasuries and deposit equivalent dollar value worth of their own token against another token, usually the native asset of the underlying blockchain (e.g. ETH), or a stablecoin.

While this approach removes the need for projects to cozy up to centralized exchanges for listings, this is also a highly inefficient way to execute a token launch. Not only does the team need to put up large amounts of capital to guarantee liquidity, it also needs to determine the initial price of the token by setting the token weights.

More importantly, liquidity pool launches inevitably lead to first-come-first-serve dynamics, excessive run up in both token price and gas fees, and disproportionately benefits professional arbitrageurs rather than value-additive community members.

For instance, when DeFi exchange bZX launched their native token (BZX) by seeding a Uniswap liquidity pool, bots rushed in on the same block that the pool was instantiated, driving the token price from $0.04 to $0.15 in an instance.

By the time the team released the details of the Uniswap pool five minutes later to the broader community, the price was $0.60, with $1mn in volume already having been traded. The bots that bought early sold their tokens promptly, with one bot earning $500k in arbitrage profit within minutes of the launch. The BZX token price fell back to $0.20 within 24 hours. UMA launched its token in a similar manner, and saw the token price spike from $0.26 to $2 within a few minutes of the pool launch as well[1].

In essence, seeding a liquidity pool to launch a token is not only capital intensive, its first-come-first-serve dynamics also creates poor incentive alignment for participants. While some may argue that in a fair market, capable arbitrageurs are entitled to all their profits, we also believe there are better ways to target long-term participants.

Balancer Liquidity Bootstrapping Pools

Popular venue(s): Balancer

To mitigate some of the issues surrounding 50:50 liquidity pool launches, the Balancer team developed the Liquidity Bootstrapping Pool (LBP).

LBPs are superior to 50:50 pools in capital efficiency, as protocol teams can select non-equal weights for both tokens in a pool (e.g. a 80:20 / TOKEN:ETH pool). This allows the project team to set a higher price for the token while spending significantly less capital than they would in a standard 50:50 Uniswap pool.

During the bootstrapping phase, the weights in the pool are gradually changed, with the weight of the token going down, leading to a gradual decrease in the price. This decrease in price due to changing of weights is countered by buying pressure from investors as the token price gets lower. Large whales and bots are dissuaded from front-running the sale, since they may get a better price as the weights decrease. This allows for the price to gradually reach a market equilibrium, and improves upon the fairness and incentive alignment of Uniswap pools.

Perpetual Protocol was one of the first protocols to use a LBP to launch their token (PERP). The team initially seeded the pool with 7.5 million PERP tokens and 1,333,333 USDC. The weights were set at 90% PERP/10% USDC, implying a price of ~$1.6 per token. The bootstrapping period ran for 3 days, and a relatively healthy price discovery process took place, as seen in the price chart below. The tokenholder base was also reasonably diversified, with 1,221 unique holders[2].

Radicle (RAD) also ran a Balancer LBP earlier this year, and managed to raise $24.7 million USDC while seeding the pool with only $3.5 million USDC. During the bootstrapping period, the token price had an initial spike driven by impatient buyers, but price discovery proceeded relatively healthily afterwards[3]:

Uncapped Batch Auctions

Despite their apparent improvements, LBPs can still give way to inefficient price discovery as speculators rush in to purchase tokens, and may also be subject to issues of gas wars and front-running should the initial price be set too low.

Batch auctions improve upon LBP’s capital effciency (teams do not need to seed liquidity), and optimize for fairness of distribution as well (front running by bots is impossible). Teams who elect to go for a batch auction simply set up with a certain quantity of tokens to be sold, and a pool accepting deposits. Buyers can then add ETH or stablecoins to the deposit pool. At the end of the deposit period, all the depositors receive tokens proportional to their share of the deposit pool. Consequently, the eventual sales price equals the total amount raised divided by the number of tokens being sold.

This method allows teams to capitalize on hype and raise large amounts of funding, since it places no upper limit on the price of the token. As distribution happens after the deposit period, small retail investors can equitably participate in the auction and there is no risk that they will be front run by bots and arbitrageurs.

However, as batch auctions are uncapped, buyers have very little information about valuation when committing to the sale. Teams can also run into a scenario where they raise too much capital at too high a valuation, and consequently not providing their token room to grow in value, losing a powerful tool in creating community goodwill long term.

Teams can choose to offset some of these issues by modifying their batch auctions (e.g. enabling a withdraw period where buyers can back out after receiving information about the valuation they are committing at). However, as with all complex methods of distribution, sophisticated insiders can always find a way to extract value from outsiders.

For a recent example, we may look to Mango Markets. Mango Markets ran a modified uncapped batch auction for its MANGO token sale, representing 5% of the token supply. The auction period was divided into two periods: Unrestricted and Withdraw only. During the first unrestricted phase, depositors could add or withdraw USDC at will from the pool, depending on whether they felt the price was fair. During the second phase, depositors could only withdraw their USDC deposits, if they felt the price was no longer fair.

This auction design led to interesting game theory strategies playing out: some large whales deposited large amounts during the first phase, with total pool deposits going up to $500mn during this period. This led to a high perceived token price, likely leading retail investors to withdraw their deposits. However, a few minutes before the end of the withdrawal phase, large whales removed a significant portion of their deposits, with total deposits falling to $70.4mn, allowing the whales to get tokens at a significantly cheaper price[4].

Dutch Auction

Popular venue(s): Miso on Sushi

As with Batch auctions, Dutch auctions allow for stronger incentive alignment and fairness as bots and arbitrageurs are less likely to have an advantage. Dutch auctions further improve upon the information asymmetry in Batch auctions, while maintaining the same capital efficiency over 50:50 pool and LBPs (project does not need to seed pools at all).

While it also achieves a degree of fairness (everyone gets the same price), there are still potential drawbacks with the inclusiveness of distribution if the initial conditions are set poorly, as we will examine later.

First, a refresher on Dutch auctions: during a token dutch auction, the price of the token is set by the project team at a high initial value, and is lowered during the course of the auction. At any given time, buyers can commit funds if they feel comfortable with the price. The auction ends once total commitments divided by the current price equal the number of tokens being sold, and the price all investors pay is equal to the price at which the final commitment came in, i.e. the clearing price. Dutch auctions are used extensively in traditional financial markets as well; most notably, the U.S. treasury uses dutch auctions to conduct primary sales of treasury bonds.

A Dutch auction allows buyers to express their view on how much they think an asset is worth, and since settlement price is determined by the final commitment, buyers usually end up paying less than they were willing to. The main risk for buyers is setting their bids too low such that the tokens allocated for the auction run out prior price descends to their bid.

Algorand (ALGO) used a Dutch auction successfully to sell 25 million ALGO tokens to public investors in June 2019, alongside the launch of their mainnet. The initial price was set at $10, and the auction ran for 3 and a half hours before concluding at a clearing price of $2.40. 690 unique addresses participated in the auction, which raised $60mn for the Algorand foundation[5]. In addition, Algorand also provided a put option mechanism for buyers, whereby buyers are granted a right to sell their tokens back to the Algorand foundation at a 10% discount one year after the auction.

The Algorand Dutch auction was successful as the initial price was set high enough ($10 implied a $100bn FDV); however, should the team fail to set a sufficiently high initial price, they risk pushing price discovery to the gas market and re-creating similar first-come-first-serve dynamics previously discussed.

For a real example, we may look to Yield Guild Games (YGG)’s Dutch auction on MISO. The auction had a starting price of $0.50 and was supposed to decline to $0.20 over a 24 hours period. Unlike the Algorand sale however, the auction was over in two blocks, and only 32 participants were able to participate at the $0.50 price. One participant who committed $258k in USDC set the gas price to 14,000 gwei, paying more than $9,000 in gas fees to have the transaction succeed, effectively front-running buyers that failed to pay higher fees[6].

While YGG did raise the funds they expected to, the sale was criticized by the community since it turned into a gas price war between wealthy bidders that failed to meaningfully diversify the YGG holder base. It is likely that YGG could have facilitated a healthier price discovery process and raised more capital by setting the starting price higher – the YGG token price tripled a day after the sale, and a month later, YGG traded at 16x the auction clearing price[7].

Closing Words

Throughout the past 2 years, we have seen a meaningful divergence by project teams away from thoughtless direct token sales (ICOs), centralized launchpads (Binance IEOs) to newer forms of distribution that optimize for fairness, incentive alignment, openness and capital efficiency.

The above is by no means an exhaustive list of all possible ways projects can bring tokens to market, and the design space for token distribution is still a blue sky. As recent as this week, we have seen innovative models continue to emerge (e.g. crowdpool on Dodo), and expect to see more!

With the proliferation of onchain identity frameworks and NFTs, for instance, projects may choose to use more targeted means of distribution based on credentials or past interactions with other protocols as well[8].

As a final word of caution – no single token generation method is perfect, and their success is highly dependent on easy-to-understand mechanics, and thoughtfully set initial conditions (e.g. starting price, size of raise, duration of raise). Selecting the correct method and setting the right parameters is among the most consequential decisions a founder can make, and we look forward to sharing our learnings further.

[1] See link and link.

[2] See link.

[3] See link.

[4] See this excellent Twitter thread for details.

[5] See link.

[6] See link.

[7] See tweet from Gabby where he says they explicitly chose the dutch auction model as opposed to a batch auction to ensure that the price speculation did not get out of hand.

[8] See link.