Dutch Auctions
Dutch auctions allow NFT Creators to sell their NFTs at a guaranteed minimum reserve price, all the while allowing the market to decided the pricing of the NFTs.
In a typical Dutch auction of a single object, the auctioneer begins with a high asking price, and lowers it until some participant accepts the price. If no participant accepts the price it will reach a predetermined reserve price limit.
If the auction is selling a fungible asset or multiple objects of equal standing, say N objects, then the N highest bids will be accepted, but not at their bid price but at the price of the lowest accepted bid.
If 10 NFTs are sold in a dutch auction, and there were the following bids:
1 NFT at 50 SUI
3 NFTs at 45 SUI
2 NFTs at 30 SUI
4 NFTs at 25 SUI
2 NFTs at 24 SUI
...
Then, the sale auction will conclude with 10 NFTs being sold at 25 SUI.
Creators can use the Dutch auction sale in conjunction with the fixed price sale, by performing a tiered sale where the common NFTs are sold at a fixed price but the rare NFTs are sold in a Dutch auction.
The DutchAuctionMarket
object is as follows:
There are multiple ways to create a Dutch auction market:
You can call
dutch_auction::init_market
to create a standaloneMarket
object, albeit for the sale to be fully configured this object must be owned by aninventory
object which is responsible for owning the NFTs that will be sold. You can then add the market object to an inventory by callinginventory::add_market
Alternatively, when a collection is created on chain, its NFTs need to be initially created and transferred to an inventory. A pattern that allows for the speed up of this process is for the Creator to instantiate the
Inventory
objects privately, along with the markets, and only then transfer these to theListing
object. From this, the Creator can callinventory::init_inventory
and then calldutch_auction::create_market_on_inventory
Both of the above patterns require the Inventory
to be transferred to the listing via listing::add_inventory
.
Or additionally, you can call dutch_auction::create_market_on_listing
which will create the market on an Inventory
already owned by a Listing
.
Last updated