An implementation of English auctions for the Chia blockchain. Puzzles are written in Rue and drivers are written in Rust.
An auction is a singleton that locks up an NFT until it ends, and allows bids (in the form of XCH, CATs, or Revocable CATs) to be placed on it.
The life cycle of an auction is as follows:
- The auction singleton is launched by the auctioneer, who then locks up an NFT into it and specifies an address for the NFT to be sent back to if the auction is not fulfilled.
- Until the auction is ended, anyone can place a bid as long as their bid is higher than the current winning bid and meets certain requirements which can be specified by the auctioneer. The previous bidder receives their bid back, and the amount in the reserves increases by the difference.
- When the auction is ended, the NFT is sent to the highest bidder and the auctioneer receives the final bid amount minus the buyer's premium and commission, if applicable.
The following parameters can be customized by the auctioneer:
- The minimum starting bid
- The minimum bid increment (flat or percentage)
- The minimum amount of time before the auction is ended
- The grace period after a bid is placed before the auction is ended
These can also be customized, but they may be enforced to be certain values by the auction house and/or wallet, to ensure that they get a cut:
- The buyer's premium
- The commission
Both the buyer's premium and commission are percentages, and are sent to a single address. If these need to be split between multiple addresses, you should use something external to do so such as the royalty split primitive.
- Josh Painter - for the original draft CHIP for auctions and its high level design.
- Yakuhito - for creating the Action Layer primitive which is use to implement the auction standard, and for helping design the primitive.