-
Notifications
You must be signed in to change notification settings - Fork 22
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Auction Standard #24
base: main
Are you sure you want to change the base?
Auction Standard #24
Conversation
Nice draft. My first thinking is about the delay introduced in the fact that when we are the highest bidder, we directly settle and pay the bid before the auction is finished.
|
Thank you for your feedback!
In my current thinking, all functionality is executed when a high bidder "spends" the auction singleton. This logic is contained in the PAY_HIGH_BID program. The first high bidder would "spend" the singleton by running PAY_HIGH_BID program, which is going recreate the singleton, now with the high bidder's information embedded. But the singleton will only allow itself to be spent if it sees announcements from all the coins that it knows need to be spent to fulfill the high bid obligations. See CALC_BUYERS_PREMIUM and CALC_COMMISSION. These programs will create the correct coin conditions needed for those features and PAY_HIGH_BID will do the same for the main high bid. In the end, the high bidder will not be able to "steal" (spend) the singleton unless they prove that they have made all the appropriate spends, asserted through announcements.
I'm definitely not an expert here, but since high bidders will be competing to spend the same auction singleton, it will be "first come first served." Or more accurately - which spend bundle reached the farmer who eventually farmed that block first? The other one would have been rejected. But with dynamic/auto-extending auctions, this won't be a big deal. More than likely, the DAPP will just try again next block.
The interesting thing about live auctions is it takes months of planning and then they may be over in 60 seconds and 12 bids. This all has to do with the auctioneer of course, but they are trained in the art of high pressure sales and their goal is to get as many bids as fast as possible in order to activate "auction fever" in the bidders. We have no need to do this and much more reason to slow things down and auto-extend times to prevent sniping, better user experience, etc. Modern digital auction users are especially used to these slower-paced auctions.
Yes! We are still very early. This would be defined in the CALC_HAMMER_TIME program and would probably be the most popular option. Other weird rules could be embedded here during the mint of the auction singleton though! The parameters detailed here and even high-level ideas around using singletons are up for debate. I'm certainly not an expert in any of this but not many of us are, so let's start somewhere and figure it out together! :) |
Updated with more community feedback, updates and credit section |
I had a fantastic chat on Keybase with @danieljperry and learned a whole lot plus we may have figured out a solution to a problem I didn't even know I had yet lol. Reposted here so others can learn too - thanks again Dan!! Dan Perry: Josh Painter: Dan Perry: Josh Painter: Dan Perry: Josh Painter: Dan Perry: Josh Painter: Dan Perry: Josh Painter: Dan Perry: Josh Painter: Dan Perry: Josh Painter: Dan Perry: --later-- Josh Painter: Dan Perry:
Josh Painter: Dan Perry: Josh Painter: Dan Perry: Josh Painter: Dan Perry: Josh Painter: Dan Perry: Josh Painter: Dan Perry: Josh Painter: Dan Perry: Josh Painter: Dan Perry: Josh Painter: Dan Perry: Josh Painter: Dan Perry: Josh Painter: Dan Perry: Josh Painter: Dan Perry: Josh Painter: Dan Perry: Josh Painter: Dan Perry: Josh Painter: --later-- Josh Painter: Dan Perry: Josh Painter: Dan Perry: Josh Painter: Dan Perry: Josh Painter: |
Ready for feedback
Hey guys, I tried to read through this to figure out where the hangups are. Were you ever able to figure out if the last bid + blockheight obstacle could be overcome before the high bidder can crack the egg? Is this actively being worked on at all? |
Relevant and not available during the initial discussions above, NOT_VALID_AFTER is likely to show up as a CHIP in the next couple of months. |
I ended up getting around this by changing the logic, which I think ended up better anyway. From above: "Actually - are we overthinking this? What is wrong with a ruleset that says "anybody can steal the uncracked egg at any time" plus "the current owner can crack the egg (melt singleton) after the set end date" which will get pushed forward by during the "high bid" spend." This makes it the high-bidder's responsibility to "end" the auction, but is only allowed AFTER a certain blockheight. This fits with the current "Valid after" asserts. This assumes the high-bidder (or their automated dApp) will be incentivized to end the auction ASAP so they can claim their win. But it also gives the high-bidder the weird option of "letting it ride" because of bidder's remorse, and hoping someone else will eventually outbid them, so they get reimbursed for their high bid. Remember that the original seller and even the auction house has already been reimbursed during every bid, so they don't mind if the auction continues indefinitely!
Not currently, but it is on my list! And/or others too, hopefully. :) |
Thanks for the comments. In Re: "they don't mind if the auction continues indefinitely!" This is a spam vector. Someone can set the block height infinitely high with the first, low bid, thereby effectively burning the asset. The extend time with a new high bid should be a constant, known param in the program throughout the life of the auction. |
Yes, the extend time is definitely a parameter set by the creator when they "mint" the auction. In fact, I would like that parameter to be a program itself, so more custom logic could be used by the creator, such as extensions that get shorter and shorter over time, etc. But for simplicity, let's say it gets set to the equivalent of 10 minutes. After the first bid is made, that high bidder effectively owns the asset. The original seller has been paid and the auction house has been paid out of that high bid. The only way that bidder will not continue to be the owner is if someone outbids them in the next 10 minutes (and therefore become the new effective owner). After 10 minutes, the current high bidder can "crack the egg" and end the auction, or not. If they don't, someone else could come along 15 minutes later and steal it from them by making a high bid. In other words: when the auction is active, anybody can always steal the "egg" by making a high bid. The only way for the auction to end is for the high bidder to end the auction after the extend time, as set by the original creator (not the bidder). So I don't think this is a spam vector, but please let me know if you still disagree! |
Ah, this makes sense. I misunderstood the initial problem. Basically after the auction "ends", the high bidder has the right to claim the asset. This sounds similar to how a solo farmer can claim his 1.75 XCH whenever. It's there on the chain for them, but they still need to go claim it. |
Exactly! An interesting side-effect of this is that it inverts auction sniping. Normally, an auction sniper will wait until the last possible moment to make a high-bid. This ends up pushing most of the action to the end of the auction. But in this model, you want to absolutely make sure your high bid is in well before the end time, cause you'll want to take into account traffic and confirmation time, etc. Now, the current high-bidder is the "sniper" in that they are waiting to end that auction the moment they can so they can claim their win. The sniper has become the snipee! |
added Etchings description and spec
added bit about dApps
update Etching info
This CHIP details a zero-counterparty-risk protocol for auctions of digital assets running on the Chia blockchain. Ideally any auction protocol will be interoperable with all existing and future assets that may be created on the Chia blockchain, and therefore it is worth discussing and designing a solid foundation with full community involvement.
This first draft details the problems and risks with the current-day auction process. The next update will add the first draft for the Conceptual Design and Specification sections - the fun part!
Special thanks to @danieljperry and @fizpawiz for their help so far!