Skip to content

Allow multiple bids compatible with the head view (alpha.13) - #9763

Merged
mergify[bot] merged 3 commits into
unstablefrom
gloas-multiple-bids-head-view
Aug 18, 2026
Merged

Allow multiple bids compatible with the head view (alpha.13)#9763
mergify[bot] merged 3 commits into
unstablefrom
gloas-multiple-bids-head-view

Conversation

@eserilev

@eserilev eserilev commented Aug 6, 2026

Copy link
Copy Markdown
Member

Issue Addressed

ethereum/consensus-specs#5497

Depends-On: #9761

@eserilev
eserilev requested a review from jxs as a code owner August 6, 2026 06:47
@eserilev eserilev added gloas ready-for-review The code is ready for review labels Aug 6, 2026
@mergify

mergify Bot commented Aug 6, 2026

Copy link
Copy Markdown

Some required checks have failed. Could you please take a look @eserilev? 🙏

@mergify mergify Bot added waiting-on-author The reviewer has suggested changes and awaits thier implementation. and removed ready-for-review The code is ready for review labels Aug 6, 2026
@eserilev
eserilev force-pushed the gloas-multiple-bids-head-view branch from 9e7ae50 to 89ef3ab Compare August 6, 2026 07:36
@eserilev
eserilev force-pushed the gloas-multiple-bids-head-view branch 2 times, most recently from bc145f5 to 01bea64 Compare August 6, 2026 08:35
@pawanjay176
pawanjay176 force-pushed the gloas-multiple-bids-head-view branch from 01bea64 to 6227fc2 Compare August 6, 2026 22:33
@eserilev
eserilev force-pushed the gloas-multiple-bids-head-view branch from 6227fc2 to bc6ef4c Compare August 7, 2026 05:25
@eserilev
eserilev force-pushed the gloas-multiple-bids-head-view branch from bc6ef4c to 1467308 Compare August 10, 2026 08:40
@eserilev
eserilev force-pushed the gloas-multiple-bids-head-view branch from 1467308 to 8576c50 Compare August 11, 2026 05:29
@eserilev
eserilev force-pushed the gloas-multiple-bids-head-view branch from 8576c50 to 8177335 Compare August 11, 2026 05:43
@eserilev
eserilev force-pushed the gloas-multiple-bids-head-view branch from 8177335 to 5d66b2f Compare August 12, 2026 11:26

@pawanjay176 pawanjay176 left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks mostly good

// TODO into consideration maybe should persist parent block hash and gas limit in fork choice?
if let Ok(parent_bid) = head_state.latest_execution_payload_bid()
&& !is_gas_limit_target_compatible(
parent_bid.gas_limit,

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this would make us reject the bid if its a different gas limit than the head right? so this still needs to be addressed afaiu

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i was thinking about this a bit today. i think the two "best" options are an added field on proto array to keep track of gas limits, or some cache. im leaning towards adding a field on proto array, wdyt? I think my plan would be to add it as a separate stacked PR

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we can resolve this after we merge this stack


let builder_index = bid.builder_index;

let is_active_builder = head_state

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Codex flagged this as an issue at fork boundary because of the other changes which I think is accurate.
The head state here is the canonical head state which at the fork boundary is not advanced to gloas. So is_active_builder would fail here until we get the first consensus block of gloas and update canonical head accordingly.

Fixing this might require us loading the advanced state instead which isn't ideal. I'm inclined to keep this as is, but thought it was worth flagging

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ah nice catch. yeah if we dont handle this we wont be able to accept a bid at the fork boundary. not the worst thing ever, but the fix is straightforward and we can deprecate it after mainnet forks to gloas

044d633

@chong-he chong-he left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The main changes is_bid_compatible_with_head is following the spec from what I understand, but it has no tests to cover, should we add some tests to cover different scenarios?

Comment on lines +14 to +17
pub struct BidParent {
pub parent_block_hash: ExecutionBlockHash,
pub parent_block_root: Hash256,
}

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe it's just me? I would think that ParentBid is more intuitive than BidParent in the naming of this struct

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

i chose BidParent because it is the bids parent. I think ParentBid could be confusing because it sounds like its pointing towards the "parent bid"

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

right, makes sense

@eserilev
eserilev force-pushed the gloas-multiple-bids-head-view branch from 044d633 to 778e228 Compare August 13, 2026 10:56
@pawanjay176
pawanjay176 force-pushed the gloas-multiple-bids-head-view branch from 0640b21 to 700835f Compare August 18, 2026 18:06
@mergify

mergify Bot commented Aug 18, 2026

Copy link
Copy Markdown

Merge Queue Status

This pull request spent 11 minutes 2 seconds in the queue, with no time running CI.

Waiting for
All conditions

Reason

Pull request #9763 has been dequeued

Queue conditions are not satisfied:

Hint

You should look at the reason for the failure and decide if the pull request needs to be fixed or if you want to requeue it.
If you do update this pull request, it will automatically be requeued once the queue conditions match again.
If you think this was a flaky issue instead, you can requeue the pull request, without updating it, by posting a @mergifyio queue comment.

Requeued — the merge queue status continues in this comment ↓.

@mergify

mergify Bot commented Aug 18, 2026

Copy link
Copy Markdown

Merge Queue Status

This pull request spent 42 minutes 45 seconds in the queue, including 27 minutes 47 seconds running CI.

Required conditions to merge

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

gloas ready-for-merge This PR is ready to merge.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants