deezy-inc/deezy-place

Implement Dutch Auction Mechanism

Closed this issue · 0 comments

We want an easy way to do Dutch Auctions on Nosft. With Dutch Auctions, the price starts high and incrementally decreases until somebody buys the item. A dutch auction is the cleanest way to do a pure PSBT auction, because the seller just keeps broadcasting a lower and lower priced PSBT until somebody buys it.

In terms of the Nosft UI, we want the following:

Listing Flow: for a user selling an item

  • In addition to List for Sale, we want List for Auction
  • When listing for Auction, the user inputs the starting price (highest price), the min price, the amount the price decreases with each round, and the duration of each round (For example, start at 1 BTC, decrease by 0.05 BTC every hour. Min price 0.2 BTC). Eventually we should have more customizable options, like "decrease price by 10% each round")
  • Once they choose their duration, Nosft will create a PSBT for each of those intervals and prompt the user to sign each one (one by one)
  • This data should then POST to a docs.deezy.io endpoint (which has not been created yet), but it will basically post an array of PSBTs and a timestamp for each interval

Buying Flow for viewing the status or participating in the auction

  • If there's a live auction for an item, I think we should display the auction details it on the item's inscription page
  • We can do this by querying deezy API (future endpoint) that checks if the listed inscription is up for auction
  • The current price should already be shown by default, because it will be the current lowest priced event published to Nostr
  • So we just add a little thing that says "Auction Live!" with a timer until the next price decrease, and the amount of the next price