Paradigm's latest research: Understand progressive Dutch auctions in one article
Original Title: Gradual Dutch Auctions
Original Authors: Frankie, Dan Robinson, Dave White
Compiled by: Amber, Foresight News
This article introduces the Gradual Dutch Auction (GDA), an auction mechanism that effectively helps illiquid assets complete public sales.
GDA addresses similar issues as the previously proposed "Time-Weighted Average Market Maker (TWAMM)" mechanism, allowing assets to circulate and sell effectively without relying on existing market liquidity.
The GDA works by breaking down an auction into a series of Dutch auctions (Note: A Dutch auction is a common auction format that starts with a high asking price and gradually lowers it until a buyer bids). GDA allows you to conveniently participate in multiple such auctions simultaneously.
This article will provide two models of GDA: a discrete GDA more suitable for NFT sales and a continuous GDA more suitable for token auctions, to help readers understand this new auction mechanism.
Discrete GDA
Suppose Alice wants to sell 10,000 NFTs. She is unsure of the fair price for these NFTs, so she does not want to sell them at a fixed price.
Instead, she might choose to conduct a Dutch auction—starting with a very high asking price and then gradually lowering it until all NFTs are sold. However, this approach may not be optimal, as the buyers in the market may not be able to absorb all the NFT artworks at once.
Alternatively, if Alice auctions one NFT at a time. For example, she might start a new Dutch auction every minute for a new piece of her work. This would give the market more time to find a fair price for her NFT artworks.
The discrete GDA is essentially an extension of this idea.
Mechanism
The discrete GDA is suitable for selling NFTs because these assets must be sold in whole numbers. The mechanism works by holding a virtual Dutch auction for each NFT. In a discrete GDA, each auction starts at the same time, and each virtual independent auction has a higher starting price. The price for each auction is given by a price function, which includes parameters such as the order of the auction in the series and the time since the normal auction began.
A more optimal function derived from calculations is as follows:
Here, the price of each auction decays exponentially based on the decay constant λ, and the starting price of each auction increases by a fixed proportional factor α, while the starting price of the first auction is determined by the initial price k.
Price Calculation for Bulk Auctions
Based on the above price function, we can calculate the total price for bulk auctions.
Assuming Bob wants to purchase a quantity of q of the auctioned assets. To do this, he would buy the cheapest assets totaling q in each independent Dutch auction. If the current time is T after the auction starts, and a total of m has been sold so far, then the total price P for Bob to purchase q quantity of assets is:
Substituting the price function, we can obtain the final price calculation formula:
After assuming some specific values, we can get the following result case:
Continuous GDA
After completing the NFT sales, Alice now wants to sell some standard tokens. Of course, she could also use the above discrete GDA mechanism to bundle and "segment" the sale of her tokens.
However, Alice may not want all her tokens to be immediately available for sale; for example, she may wish to release the tokens at a constant rate of 360 tokens per day. In that case, she can choose to sell her tokens through a series of standard Dutch auctions instead of using a single GDA for all sales. For instance, she could conduct an auction for 15 tokens every hour or an auction for 0.25 tokens every minute, and so on.
The continuous GDA works by pushing this process to the limit, meaning the time intervals between auctions approach 0. This means that sales are divided into an infinite sequence of auctions, each selling an infinitesimally small quantity of tokens.
Mechanism
The continuous mechanism gradually provides more assets for sale at a constant emission rate. The entire auction process is broken down into a series of virtual auctions. These auctions start at a uniform rate over time, with each auction starting at the same price.
The price for each auction is given by a certain price function, which is based on the time since the auction began. The price model is similar to that of the discrete GDA, with prices decaying exponentially based on the decay constant λ, while the starting price of the auction is k:
Price Calculation for Participating in Auctions
If Bob wants to purchase a quantity of q tokens, to acquire the corresponding number of tokens, he needs to participate in q/T auctions. Since the auction prices are continuously decreasing, he needs to bid on the earliest starting independent virtual auctions that are currently available.
Assuming the duration of the earliest starting auction is T, the total price P for q quantity of tokens is:
Without considering on-chain interaction costs, substituting into the price calculation formula, the complete price formula is:
After substituting some assumed parameters, we can obtain the following example result:
Code
Paradigm has also publicly shared the GDA model's Python model and feasibility tests.
Conclusion
GDA can be used for the public sale of homogeneous or heterogeneous assets, and it is particularly valuable for assets lacking fundamental liquidity. The use cases for this auction mechanism are not limited to the simple examples mentioned in this article and are expected to be implemented in more application scenarios in the future.