Skip to content
Gallery
Blockchain One Pager
Share
Explore
DeFi

icon picker
Variable Rate Gradual Dutch Auction

First, What is GDA

GDA works by breaking a sale into a sequence of Dutch Auction, a type of auction that start with a high asking price that is gradually lowered until a bid is made. GDA allows you to make multiple of these auctions at once in a gas friendly manner
There are discrete GDAs and continuous GDAs. The former is helpful for selling items in integer quantities (e.g. NFTs), and lateral for fungible tokens.

Discrete GDA

Suppose Sakurajima has 10k NFTs to sale, but she is unaware of the fair price. A practice that allows the market more time to find a fair price for her art is to auction off one NFT at a time, such as initiating a new DA every minute for a new piece in her collection.
In a discrete GDA, every auction starts at the same time, with each successive auction having a higher starting price. The price of each auction is given by some price function
where n is the index of auction and t is the time since its start
There exists a varity of price function that can be used with GDAs. One particular well-behaved formuation is given by
the price for every auction decays exponentially according to some decay constant
. The starting price of each auction increases by some fixed scale factor
Further mathematical expansion can be carried out for calculating batch purchase price. Refer to bib if interested.

Continous GDA

Suppose Sakurajima wants to sell some fungible tokens. She might not want to make all tokens available, as she wants to run on a emission schedule at some constant rate. Suppose the rate is 300 tokens per day. She can hold 1 auction for 300 tokens every 24hr, or 1 auction for 150 tokens, every 12 hrs, and goes on.
Continuous GDA push this process to the limit where intervals → 0, and works by incrementally making more of an asset available for sale at a constant emission rate, r.
Emissions are broken up over an infinite series of virtual auctions. These auctions are started at an even rate over time, with each auction beginning at the same price.
Just like Discrete GDA, there are many price functions availble. One such example is
In this example, price decays exponentailly according to some decay constant lambda, where k controls the starting price.
Calculation of purchase price is taking the integral from T- q/r to T on the pricing function, where the oldest available auction is T seconds old, P is the total price and q is the quantity of tokens to-purchase.
Further math can be deduced as well.

Variable Rate GDA

VRGDA generalizes GDA to solve tackle this following situation: if sales exceed expectation, we want to charger higher price going forward, and lower if sales underperforms.
The construction follows
- The target price for NFT sale

- The percentage an NFT’s price decreases in a unit time with no purchase

- The issuance schedule: mapping t to the number of NFTs to aim to sell by t.Suppose we want to sell one NFT every two days, then f(t) = t/2
Suppose no sale has occurred between the purchase time, t, and some starting point s_n, then, the adjusted price is
then, what is this s_n? note, if we know n = f(t), which is the amount of NFT sold by time t, we know t days has passed and t = f^-1(n)
That is, at time
,
which implies
and thus,
Therefore the final formula is
Depending on what f(n) looks like, that is, depending on whether you want linear, square root, or logistic (more in the bib) schedule, the final formula perform respectively

Bib

Want to print your doc?
This is not the way.
Try clicking the ⋯ next to your doc name or using a keyboard shortcut (
CtrlP
) instead.