Pergamon Agora offers on-chain, fully escrowed, blinded, 2nd price, auctions with an optional extension mechanism. This article describes these features and how they affect the lifecycle of an auction on Pergamon Agora.
The Pergamon Agora and future Agora Smart Contracts hold all assets at play at any time. This ensures that auctions, once created and started, will always resolve and neither buyer nor seller have a way to avoid their responsibility. All auctions and bids are final, so to say.
The Cardano blockchain is a transparent medium with limited capacity. To avoid biding frenzies, which have been proven to lead to dissatisfied participants on all sides, we introduce the blinding mechanism. With blinding you lock up a certain amount of funds but commit to bid only an amount that can be equal or less than the blind. How this works is that When placing the bid initially, Your transaction only locks up the maximum amount which you might bid. The real bid is hidden inside a cryptographic hash. In order to tell everybody what you really did you must reveal your real bid from the existing blind. In order to do that you post a reveal transaction that has a proof and a reveal which can be used to calculate the cryptographic hash.
Example Bid, here the h
property of the metadata payload is the cryptographic hash of your real bid.
Example Resolve, here the p
property is the reveal proof and the r
property is the reveal
, the actual bid. In this case the reveal reveals a 1234Ada bid.
This one is simple, the winner of the auction is the highest bid, that's normal. But the price they pay for the auctioned items is not their bid but the second highest bid. In cases where there only is one bid the actual price is the minimum bid
. If the minimum bid is 0 the price of the auction can be zero if not enough bids happen. In this case it is paramount to focus on driving bidders to your auction and focus on putting up valuable material for auction.
It is a common practice on fixed time auctions to wait until the last moment to "one up" other bidders. This always leads to friction and is best avoided if possible. How Pergamon Agora auctions handle this is by allowing auction creators to configure an extension mechanism for their auction. If a non zero extension is enabled for an auction, each bid that is near the end makes it possible to add follow up bids for the configured slot period, even if that period exceeds the initial auction bidding phase. As an example, lets think of an auction that is configured to allow bids untill slot 100 with a 10 slot extension time. If bob comes in slot 98 and places a bid, the bidding phase automatically gets extended 10 slots from slot 98. So now bidders can place bids until slot 108. This continues for each consecutive slot. In order to avoid auctions that never terminate, each bid placed after the initial end bidding date must include a blind that is at least 10% higher than the previous blind. This ensures that adversaries will run out of funds eventually and the auction will resolve.
In order to accommodate these features and in order to offer some operational security, Pergamon Agora auctions adhere to a well defined lifecycle comprized of the phases Created, Bidding, Revealing, Sealing, Resolving, Resolved. Lets take a look at them in detail
The Agora has been created via a metadata TX but it has no bids yet. Anybody can start the auction process by placing a valid bid with a blind over the agora's minBid
requirement.
You are free to bid, bids with blinds below the agoras minBid
threshold are discarded.
The bidders reveal what their actual bids where. The reveal value cannot be larger than the blind value. You can reveal your bid at any point in the Bidding
and Revealing
phases if you created the bid via cardano-cli
. If you created your bid from the pergamon.app webpage the app will reveal the bid for you. This is why there is a surcharge of ~1 Ada from the web page. If your bid has not been revealed it will be ignored in the resolution. This is a countermeasure to ensure that all participants resolve their bids.
Once the reveal ends the Agora goes into a 30 minute sealing phase. This is mostly a precaution to avoid history reorgs due to sustained network forks. Since Cardano is not prone to such reorganizations and the probability of a history reorg after 30 minutes is lower than a meteor hitting a major city, I think it is safe to say that after 30 Minutes the bids and reveals can be considered final.
The Agora is resolved. The auction owner gets the reward (the 2nd highest reveal).
The winner, the person with the highest reveal gets the NFTs and gets reimbursed the difference between his blind and the second highest reveal. If there is no second bid the minBid
value is used. Yes, this means that auctions with a single bid can result in 0 ada for the auction creator.
All non-winning bids (the full blind values) are returned to their beneficiaries.
The resolution of an agora produces one or more resolution metadata payloads referencing the original agora TX. This way it is always easy to identify what happened to the agora as all events (creation, bids, reveals, resolution) are persisted forever on chain.