Decouple signed builder auth data from the HTTP dial target - #17124
Closed
terencechain wants to merge 1 commit into
Closed
Decouple signed builder auth data from the HTTP dial target#17124terencechain wants to merge 1 commit into
terencechain wants to merge 1 commit into
Conversation
|
LGTM and really appreciate this. Without this change, optional sidecars would be unable to route signed request authorizations to downstream builders. This will preserve out-of-protocol experimentation without friction 😄 |
terencechain
force-pushed
the
builder-proxy
branch
from
July 7, 2026 22:12
004cdcb to
7c54cb9
Compare
This was referenced Jul 9, 2026
terencechain
force-pushed
the
builder-proxy
branch
2 times, most recently
from
July 11, 2026 20:19
f0dfebf to
dcf400b
Compare
terencechain
force-pushed
the
builder-proxy
branch
from
July 24, 2026 03:54
dcf400b to
6bb8ba9
Compare
4 tasks
4 tasks
This was referenced Aug 18, 2026
pull Bot
pushed a commit
to wsnchristopher/prysm
that referenced
this pull request
Aug 18, 2026
…th builder-specs (OffchainLabs#17372) - Rename `RequestAuthV1`/`SignedRequestAuthV1`/`BuilderPreferencesV1`/`BuilderPreferencesRequestV1` to their unversioned spec names, and `validator_pubkey` to `proposer_pubkey`, per builder-specs#165 - The bid request now requires the signed request auth body and always sends the `Date-Milliseconds` and `X-Timeout-Ms` headers, both required by the spec - First of a small stack replacing OffchainLabs#17124: next up is the block-request builder entries wire + auth/dial-target decoupling, then per-builder bid enforcement
pull Bot
pushed a commit
to All-Blockchains/prysm
that referenced
this pull request
Aug 19, 2026
- Replace `builder_request_auths` on `BlockRequest` with a `BuilderConfig` carrying resolved `BuilderEntry`s (`url`, `auth`, `builder_pubkeys`, `max_execution_payment`, `min_bid`, `builder_boost_factor`), shaped to beacon-APIs#630 - Request auths now sign the entry's auth data (default: the UTF-8 bytes of its `url`) instead of the URL string, so the signed identity is decoupled from the HTTP dial target and a sidecar/proxy can front a builder - The beacon node routes bid requests by entry `url` and forwards the auth byte-for-byte; entries may share a `url` with distinct auth data, one request per entry - `SubmitBuilderPreferencesRequest` carries the dial `url` separately from the opaque auth data - The validator client resolves entries at propose time and signs on cache miss, so proposals no longer depend on a prior preference push - Per-entry limits ride the wire but are not yet enforced; the beacon still applies the pushed per-pubkey `max_execution_payment` (enforcement is the next PR in the stack) Second of the stack replacing OffchainLabs#17124, on top of OffchainLabs#17372.
pull Bot
pushed a commit
to wsnchristopher/prysm
that referenced
this pull request
Aug 21, 2026
…7374) - Builder-API bids are checked against their own entry's max execution payment, min bid, boost factor, and builder pubkeys - P2P bids use the config-level min bid and boost, payments are trusted only from entries naming the builder key - Removes the per-pubkey `maxExecutionPayments` map, the preferences push now sends each builder its own cap Last of the stack replacing OffchainLabs#17124, on top of OffchainLabs#17373.
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.
buildersentries to proposer settings builder config:urlis the HTTP dial target, optionalauth_data(0x-hex bytes) is signed into request auths and defaults to the UTF-8 bytes ofurl, optionalpubkeycredits execution payments only from that builder, optionalmax_execution_payment,min_bid, andbuilder_boost_factoroverride the config-level defaults.relaysremains a deprecated alias; duplicate(url, auth_data)entries are rejected.(pubkey, slot, auth_data)authenticates bothgetExecutionPayloadBidandsubmitBuilderPreferences. The beacon node routes byurlonly and forwards auths byte-for-byte unchanged, so proxying needs no special support: pointurlat the sidecar and setauth_datato identify the downstream builder.getExecutionPayloadBid,Date-MillisecondsandX-Timeout-Msheaders are sent on bid requests, andEth-Consensus-Versionis dropped from the request-auth endpoints since their bodies are not fork-versioned.Example config:
{ "version": 2, "proposer_config": { "0xa057816155ad77931185101128655c0191bd0214c201ca48ed887f6c4c6adf334070efcd75140eada5ac83a92506dd7a": { "fee_recipient": "0x50155530FCE8a85ec7055A5F8b2bE214B3DaeFd3", "gas_limit": "45000000", "builder": { "enabled": true, "builders": [ { "url": "https://builder-a.example.com", "pubkey": "0x93247f2209abcacf57b75a51dafae777f9dd38bc7053d1af526f220a7489a6d3a2753e5f3e8b1cfe39b56f43611df74a", "max_execution_payment": "250000000" }, { "url": "https://sidecar.example.com", "auth_data": "0x68747470733a2f2f6275696c6465722d622e6578616d706c652e636f6d", "min_bid": "10000000", "builder_boost_factor": "150" } ], "max_execution_payment": "500000000" } } }, "default_config": { "fee_recipient": "0x8943545177806ED17B9F23F0a21ee5948eCaa776", "builder": { "enabled": true, "builders": [ {"url": "http://buildoor-lodestar-nethermind-2-1:8080"}, {"url": "http://buildoor-lodestar-nethermind-2-2:8080"} ], "max_execution_payment": "18446744073709551615" } } }Entry fields:
urlrequired (where requests are sent),auth_data/pubkeyand the per-builder limits optional. An entry withoutauth_datasigns the UTF-8 bytes of itsurl; an entry withoutpubkeyaccepts execution payments from any builder on that channel up to its cap.default_configapplies to every key, so large operators define builder entries once;proposer_configis only for keys that deviate.