Consider builder bids during block production - #11209
Open
StefanBratanov wants to merge 7 commits into
Open
Conversation
StefanBratanov
marked this pull request as ready for review
September 1, 2026 13:53
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
Reviewed by Cursor Bugbot for commit db761d6. Configure here.
| .min(BID_BY_VALUE_DESCENDING); | ||
|
|
||
| final Optional<SignedExecutionPayloadBid> bestBuilderBid = | ||
| builderBids.stream().filter(isBuilderAllowedPredicate).min(BID_BY_VALUE_DESCENDING); |
There was a problem hiding this comment.
Builder bids skip parent matching
High Severity
selectBestRemoteBid filters P2P bids by parent root and parent hash, but builder bids only go through isBuilderAllowed. That skip assumes fetching already validated them, yet getBuilderBids does not. A mismatched builder bid can win on value and be included in the produced block, which peers will reject.
Additional Locations (1)
Reviewed by Cursor Bugbot for commit db761d6. Configure here.
StefanBratanov
force-pushed
the
builder_bids_block_production
branch
3 times, most recently
from
September 3, 2026 07:55
a114ece to
387d588
Compare
StefanBratanov
force-pushed
the
builder_bids_block_production
branch
2 times, most recently
from
September 4, 2026 10:14
47f4c9d to
aa989bd
Compare
StefanBratanov
force-pushed
the
builder_bids_block_production
branch
from
September 4, 2026 21:51
ae9c449 to
fb6c723
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


PR Description
Calling
eth/v1/builder/execution_payload_bid/{slot}/{parent_hash}/{parent_root}/{proposer_pubkey}during block production with each configured builder and considering the bid (comparing it vs p2p bids and local bid)Kurtosis config
Fixed Issue(s)
fixes #10822
Documentation
doc-change-requiredlabel to this PR if updates are required.Changelog
Note
High Risk
Changes core Gloas block production and bid economics (selection, scoring, caching) with new external builder HTTP calls on the hot path; mis-selection or auth/API mismatches could affect proposer revenue or block validity.
Overview
Adds builder API bid retrieval at proposal time for Gloas: configured builders are queried via
eth/v1/builder/execution_payload_bid/...(auth always sent in the POST body), and those bids compete with gossip P2P bids and the local EL payload when choosing the signed execution payload bid.Bid selection and metadata are refactored around new
RemoteBid/BidForBlockrecords: builder bids are scored with on-chain value plus capped execution payment; P2P bids use collateral value only and respectmin_bid; ties favor the builder API bid. The winning bid鈥檚 wei value and optional builder URL are written into per-slotSlotCachesduring block body assembly (replacing validator-side value derivation from the bid message alone).The builder REST client no longer supports unauthenticated empty POSTs for payload bids.
ethereum:statetransitionand beacon chain wiring gainBuilderBidFetcher+StakedBuilderClientProvider; module dependency rules allow:builderfrom statetransition.Reviewed by Cursor Bugbot for commit fb6c723. Bugbot is set up for automated code reviews on this repo. Configure here.