2

Say I have an auction contract, highest bid wins after a certain time (# of blocks). Participants put in their bids.

Say 100 participants simultaneously puts in their bids (unlikely but let's assume), and their bids are 1-100, so perfectly spaced by 1.

So we have tons of miners constantly trying to pack blocks. Some may take 1 of these calls, some take 40, some none, etc. They all pack their blocks, then 1 miner wins and rest are uncles.

Those who packed different subsets of the auction contract calls will come out with different results - i.e., if the highest bid I had in my block is 50 then that guy wins the auction, if the highest is 51 then he wins, etc. So you get a ton of miners coming out with different, conflicting results.

So the participant who actually ends up winning the bid is very unlikely to be the the actual highest bidder.

Is this what actually happens? Or are there ways ETH has to mitigate this type of conflict? Thanks!

1 Answer 1

3

Is this what actually happens?

In effect, yes. But...

Or are there ways ETH has to mitigate this type of conflict?

Give them long enough - i.e. a large enough number of blocks, or explicit time - to get their bids in.

In the case you describe: yes, if you're only giving them a very short space of time to get their bids in, then it'll likely be the highest priced transactions that are included in blocks (or the block, in your example). Those transactions may or may not contain the highest actual bid from the whole set.

So you get a ton of miners coming out with different, conflicting results.

Yes, but in general, and ignoring game theoretical factors, it'll likely be the transactions with the highest gas prices that are included by each miner. So it's probable* there'll be a high degree of overlap between what all the miners are including in their blocks.

*I've no way of quantifying this.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.