Auction with dynamic bidding phase duration #41
Replies: 3 comments 16 replies
-
Did you really mean a loop? Or each iteration is just a block? Won't this suffice?
As blocks progress, chances of a hit increases. |
Beta Was this translation helpful? Give feedback.
-
Required reading for this discussion should include: https://polkadot.network/blog/research-update-the-case-for-candle-auctions/ TLDR: Polkadot believes in random auction ending times but they are able to achieve this using a network-wide pseudorandom generator function which "might" be fair (I haven't dug in). The proposal by @Falci gets its entropy from a blockhash which is actually pretty bad: it means miners can choose to withhold blocks or do the extra work to find a block that affects an auction outcome unfairly. Miners already have the power to censor BIDs and (god forbid) REVEALs, giving them the extra power to determine auction close timing feels like we'd be making the game worse, not better. I have another way of thinking about this, definitions: SnipingAn "honest" bidder sends a BID with a lockup of A "sniper" sends a BID with lockup and value of Sniping PhaseThe sniping phase is the end of the bidding phase where there is SOME PROBABILITY that no one else will be able to place another bid. During this phase, the "honest" bidder and the "sniper" could both try to outbid each other by 1 dollarydoo back and forth, over and over, until the sniping phase is over, and the auction is ended. If both bidders are online and watching the mempool, they essentially have equal probability of being the last bidder. In the current system, the sniping phase begins when the second-to-last BIDDING block is mined and ends when the last BIDDING block is mined. Currently, this phase lasts an average of 10 minutes but it could vary anywhere from 0 seconds to 1 hour or more. This duration is determined by the ONLY truly chaotic source of entropy in the entire system: the mining algorithm itself. Miners are currently incentivized to broadcast any block they find as soon as possible. This proposalThis proposal changes the "sniping phase" in the following way:
Counter proposalsI suggest we think about things like this instead:
This last one is compelling to me: what if we ignore the BIDDING phase and think about the REVEAL phase? This is how polkadot candle auctions work - basically there is some random factor to determine if a REVEAL should be counted or not. |
Beta Was this translation helpful? Give feedback.
-
Would be quite difficult to explain to people. Many don't understand the current system when they come in. This would confuse them more. But may be managable. |
Beta Was this translation helpful? Give feedback.
-
Hey!
Snipping sucks, we all agree, right?
How to solve?
Maybe we could finish the bidding phase early, in a dynamic way (read: random and deterministic).
Quick recap: name is
We could reduce the BIDDING period but without anticipating the REVEALING.
How-to?
Each auction would have a random duration length for the bidding phase. This random duration must be deterministic but can't be known in advance.
How much?
First, we need to agree on how much early an auction could finish. I don't think a "1-day bidding period" would be fair.
My suggestion: the bidding could end between 0 and 144 blocks early. Totally arbitrary values, to be discussed.
That means: the auction would end somewhere between the block 612 (4 days) and 756 (5 days);
How to define
The logic to define how short should it be must use some information that we can't know in advance. Otherwise anyone could calculate the new final bidding block.
How to get a deterministic random value: block hash!
I didn't solve this part completely and need some help here. I was wondering if we could somehow check the block hash and decide to close the bidding phase early. Something like
This code is just to have an idea. But we could check each of the last 144 bidding blocks and use their hash plus the name hash to decide if that was the "close block" and reject bids after that, even if the name is still in the bidding period.
Problems
The 2 main problems I found in this implementation:
What are you thoughts ?
Beta Was this translation helpful? Give feedback.
All reactions