Skip to content

Add parent_block_root to bid filtering key - #5001

Merged
jtraglia merged 1 commit into
ethereum:masterfrom
jtraglia:bid-selection-tuple
Mar 12, 2026
Merged

Add parent_block_root to bid filtering key#5001
jtraglia merged 1 commit into
ethereum:masterfrom
jtraglia:bid-selection-tuple

Conversation

@jtraglia

Copy link
Copy Markdown
Member

Previously, the highest-value bid was tracked per (slot, parent_block_hash). This meant that if there were competing beacon chain forks with different parent_block_roots but the same execution parent, a high bid on one fork could cause valid bids for another fork to be ignored. By including parent_block_root in the tuple, bids are now tracked independently per fork, preventing cross-fork interference.

Previously, the highest-value bid was tracked per `(slot, parent_block_hash)`.
This meant that if there were competing beacon chain forks with different
`parent_block_roots` but the same execution parent, a high bid on one fork
could cause valid bids for another fork to be ignored.

By including `parent_block_root` in the tuple, bids are now tracked
independently per fork, preventing cross-fork interference.
@github-actions github-actions Bot added the gloas label Mar 12, 2026
@jtraglia
jtraglia enabled auto-merge (squash) March 12, 2026 17:09
@jtraglia
jtraglia merged commit f0f4119 into ethereum:master Mar 12, 2026
16 checks passed
@jtraglia
jtraglia deleted the bid-selection-tuple branch March 12, 2026 18:33
nflaig added a commit to ChainSafe/lodestar that referenced this pull request Apr 6, 2026
Update to match ethereum/consensus-specs#5001
wording. The underlying implementation already keys bids by the (slot,
parent_block_root, parent_block_hash) tuple.
tersec pushed a commit to status-im/nimbus-eth2 that referenced this pull request May 25, 2026
The gossip rule was changed from:

> [IGNORE] This bid is the highest value bid seen for the corresponding
>          slot and the given parent block hash

to:

> [IGNORE] this bid is the highest value bid seen for the tuple
>          (bid.slot, bid.parent_block_hash, bid.parent_block_root)`.

- ethereum/consensus-specs#5001

This way, someone can't just abuse a reorg to bid a large amount on a
non-canonical branch to purge the canonical bid. Catch up with spec.

Further, clean up the `parentExecHash != bid.parent_block_hash` check
which is not from spec and rejected bids building on the timeline where
the parent block's payload was withheld, by tracking the bids in the
pool separately based on timeline.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants