Convert produceBlockV4 to POST and round-trip Eth-Builder-Url (Gloas builder API 4/5) - #9806
Conversation
This was referenced Aug 13, 2026
Merged
Member
Author
|
This pull request is part of a Mergify stack:
|
ethDreamer
force-pushed
the
stack/ethDreamer/gloas-builder-api-stacked/convert-produceblockv4-post-round-trip-eth--0ad30b8f
branch
from
August 13, 2026 23:39
c6cb1f0 to
0ad508e
Compare
Member
Author
Revision history
|
ethDreamer
force-pushed
the
stack/ethDreamer/gloas-builder-api-stacked/convert-produceblockv4-post-round-trip-eth--0ad30b8f
branch
from
August 14, 2026 00:03
0ad508e to
1541fc9
Compare
ethDreamer
force-pushed
the
stack/ethDreamer/gloas-builder-api-stacked/convert-produceblockv4-post-round-trip-eth--0ad30b8f
branch
from
August 14, 2026 18:25
1541fc9 to
b75cd14
Compare
chong-he
self-requested a review
August 17, 2026 06:44
ethDreamer
force-pushed
the
stack/ethDreamer/gloas-builder-api-stacked/convert-produceblockv4-post-round-trip-eth--0ad30b8f
branch
from
August 17, 2026 16:52
b75cd14 to
d763878
Compare
ethDreamer
force-pushed
the
stack/ethDreamer/gloas-builder-api-stacked/convert-produceblockv4-post-round-trip-eth--0ad30b8f
branch
from
August 18, 2026 17:51
d763878 to
510daa9
Compare
ethDreamer
force-pushed
the
stack/ethDreamer/gloas-builder-api-stacked/convert-produceblockv4-post-round-trip-eth--0ad30b8f
branch
from
August 19, 2026 19:31
510daa9 to
9ffd62f
Compare
ethDreamer
force-pushed
the
stack/ethDreamer/gloas-builder-api-stacked/convert-produceblockv4-post-round-trip-eth--0ad30b8f
branch
2 times, most recently
from
August 20, 2026 17:50
d6bc23f to
f979c15
Compare
ethDreamer
force-pushed
the
stack/ethDreamer/gloas-builder-api-stacked/convert-produceblockv4-post-round-trip-eth--0ad30b8f
branch
from
August 20, 2026 21:41
f979c15 to
f9c9f6b
Compare
ethDreamer
force-pushed
the
stack/ethDreamer/gloas-builder-api-stacked/convert-produceblockv4-post-round-trip-eth--0ad30b8f
branch
from
August 20, 2026 23:35
f9c9f6b to
275486f
Compare
chong-he
reviewed
Aug 21, 2026
chong-he
left a comment
Member
There was a problem hiding this comment.
Looks good, just some nits. I also notice the comment (beacon-APIs #630) is mentioned too many times, would be good to clean them up
Comment on lines
+858
to
+859
| // Accepts the `BuilderPreferenceEntry` list as either JSON or SSZ, selected by the request's | ||
| // `Content-Type` (`application/octet-stream` => SSZ, otherwise JSON). A required |
Member
There was a problem hiding this comment.
Nit: comment like this maybe is not necessary?
Comment on lines
+533
to
+544
| .and_then(|content_type: Option<String>, body: Bytes| async move { | ||
| let builder_config: BuilderConfig = if content_type.as_deref() | ||
| == Some(SSZ_CONTENT_TYPE_HEADER) | ||
| { | ||
| BuilderConfig::from_ssz_bytes(&body).map_err(|e| { | ||
| warp_utils::reject::custom_bad_request(format!("invalid SSZ: {e:?}")) | ||
| })? | ||
| } else { | ||
| serde_json::from_slice(&body).map_err(|e| { | ||
| warp_utils::reject::custom_deserialize_error(format!("{e:?}")) | ||
| })? | ||
| }; |
Member
There was a problem hiding this comment.
Both endpoints in this PR combines the request body of JSON and SSZ into one funciton, which is fine. The default is still JSON because if the header is not specified as application/octet-stream, then it goes to the else branch.
Just want to point out that I see in Lighthouse code base it is usually separate the JSON and SSZ request body into 2 functions, for example:
pub fn post_validator_proposer_preferencesaccepts the JSON request bodypub fn post_validator_proposer_preferences_sszaccepts the SSZ request body
ethDreamer
force-pushed
the
stack/ethDreamer/gloas-builder-api-stacked/convert-produceblockv4-post-round-trip-eth--0ad30b8f
branch
from
August 21, 2026 14:15
275486f to
b659f44
Compare
…builder API 4/5) Fourth PR of the Gloas builder API stack (beacon-APIs #630): - convert `/eth/v4/validator/blocks/{slot}` to POST with an optional `BuilderConfig` body (min_bid, builder_boost_factor, direct builders) - add `POST /eth/v1/validator/builder_preferences` for forwarding signed builder preferences - set `Eth-Builder-Url` on produceBlockV4 responses when a direct-builder bid wins, accept it on `POST /eth/v2/beacon/blocks`, and forward the signed block to that builder The validator client still uses the legacy GET methods at this point; it migrates in the final PR of this stack. Change-Id: I0ad30b8f36ad9b588ea1a0398220f92c9597bb95
ethDreamer
force-pushed
the
stack/ethDreamer/gloas-builder-api-stacked/convert-produceblockv4-post-round-trip-eth--0ad30b8f
branch
from
August 24, 2026 18:03
b659f44 to
d1b834f
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.
Fourth PR of the Gloas builder API stack (beacon-APIs #630):
/eth/v4/validator/blocks/{slot}to POST with an optionalBuilderConfigbody (min_bid, builder_boost_factor, direct builders)POST /eth/v1/validator/builder_preferencesfor forwarding signedbuilder preferences
Eth-Builder-Urlon produceBlockV4 responses when a direct-builder bidwins, accept it on
POST /eth/v2/beacon/blocks, and forward the signedblock to that builder
The validator client still uses the legacy GET methods at this point; it
migrates in the final PR of this stack.
Depends-On: #9805