Adding Gloas changes - #28
Open
usmansaleem wants to merge 9 commits into
Open
Conversation
Adds four new signing types for the Glamsterdam (ePBS) fork: - EXECUTION_PAYLOAD_BID — signed by builders (DOMAIN_BEACON_BUILDER, 0x0B000000) - EXECUTION_PAYLOAD_ENVELOPE — signed by builders (DOMAIN_BEACON_BUILDER) - PAYLOAD_ATTESTATION_MESSAGE — signed by PTC attesters (DOMAIN_PTC_ATTESTER, 0x0C000000) - PROPOSER_PREFERENCES — signed by proposers (DOMAIN_PROPOSER_PREFERENCES, 0x0D000000) Adds matching data schemas (ExecutionPayloadBid, ExecutionPayloadEnvelope, ExecutionPayloadGloas, PayloadAttestationData, ProposerPreferences) and wires the new wrappers into the sign endpoint's oneOf + discriminator mapping. Tracks ethereum#23.
4 tasks
Collaborator
|
we need to update here, instead of bid it needs to be request auth due to ethereum/beacon-APIs#630 |
4 tasks
|
Raising from ACDC today ~ the updated builder spec introduces a new proposer-signed |
- ProposerPreferences: add dependent_root, rename gas_limit to target_gas_limit (Teku ProposerPreferencesSchema, teku/pull/11xxx). - ExecutionPayloadEnvelope: add parent_beacon_block_root (Teku ExecutionPayloadEnvelopeSchema). - execution_requests: note builder_deposits/builder_exits (EIP-8282, Gloas execution-requests additions). - Add BuilderRequestAuth/BuilderRequestAuthSigning + BUILDER_REQUEST_AUTH signing type: proposer-signed request-auth message for authenticating per-request builder-API calls, per builder-specs (Gloas), domain DOMAIN_BUILDER_REQUEST_AUTH (0x0B000001). Addresses review feedback from @james-prysm and @JasonVranek on this PR: the original draft only covered a builder-signed bid/envelope; the updated builder-specs/beacon-APIs/keymanager-APIs trio (builder-specs#165, beacon-APIs#630, keymanager-APIs#88) also requires the proposer to sign a BuilderRequestAuth to authenticate itself to a builder, separate from and prior to any bid.
…estAuth Same rationale as web3signer@0da4d26a: state the genesis-domain mechanic directly instead of comparing to the unrelated, deprecated ValidatorRegistrationV1 flow.
… 4-space convention)
nflaig
reviewed
Aug 25, 2026
Collaborator
|
block_v2 should support gloas too ( right now only fulu) |
james-prysm
reviewed
Aug 27, 2026
3 tasks
Address review feedback on Glamsterdam signing types:
- Wrap all five new payloads in a version-discriminated request
({version: GLOAS, data}) matching BLOCK_V2 / AGGREGATE_AND_PROOF_V2,
so future forks can evolve shapes without new type identifiers.
- Replace untyped execution_requests object with ExecutionRequestsGloas
(deposits, withdrawals, consolidations, builder_deposits, builder_exits).
- Add GLOAS variant to BLOCK_V2 and AGGREGATE_AND_PROOF_V2.
- Add request examples for every new type and the GLOAS variants.
- Normalise byte-type descriptions to existing Bytes<N>/SSZ hexadecimal
convention.
james-prysm
previously approved these changes
Sep 3, 2026
james-prysm
left a comment
Collaborator
There was a problem hiding this comment.
looks good to me I think
james-prysm
dismissed
their stale review
September 3, 2026 17:12
actually hold on might have some feedback, still reviewing
james-prysm
approved these changes
Sep 3, 2026
james-prysm
left a comment
Collaborator
There was a problem hiding this comment.
never mind actually I think this is ok
pull Bot
pushed a commit
to Hawthorne001/prysm
that referenced
this pull request
Sep 4, 2026
**What type of PR is this?** Feature **What does this PR do? Why is it needed?** adds the following types to web3signer | Type | Domain | Signer role | |---|---|---| | `EXECUTION_PAYLOAD_ENVELOPE` | `DOMAIN_BEACON_BUILDER` (0x0B000000) | Builder | | `PAYLOAD_ATTESTATION_MESSAGE` | `DOMAIN_PTC_ATTESTER` (0x0C000000) | PTC attester | | `PROPOSER_PREFERENCES` | `DOMAIN_PROPOSER_PREFERENCES` (0x0D000000) | Proposer | | `BUILDER_REQUEST_AUTH` | `DOMAIN_BUILDER_REQUEST_AUTH` (0x0B000001) | Proposer | **Which issues(s) does this PR fix?** implements ethereum/remote-signing-api#28 **Other notes for review** **Acknowledgements** - [x] I have read [CONTRIBUTING.md](https://github.com/prysmaticlabs/prysm/blob/develop/CONTRIBUTING.md). - [x] I have included a uniquely named [changelog fragment file](https://github.com/prysmaticlabs/prysm/blob/develop/CONTRIBUTING.md#maintaining-changelogmd). - [x] I have added a description with sufficient context for reviewers to understand this PR. - [ ] I have tested that my changes work as expected and I added a testing plan to the PR description (if applicable).
nflaig
approved these changes
Sep 12, 2026
nflaig
left a comment
Member
There was a problem hiding this comment.
LGTM, just some minor comments
nflaig
reviewed
Sep 12, 2026
4 tasks
…t example - Drop 'Glamsterdam'/ePBS/EIP references from schema descriptions in favor of 'Gloas', per nflaig review comments. - ExecutionPayloadEnvelopeGloas description now covers proposer self-builds in addition to builder-signed envelopes. - Remove spec-history note from ExecutionPayloadGloas description. - Recompute the AGGREGATE_AND_PROOF_V2 (GLOAS) example signingRoot; it previously matched the Fulu/Electra value verbatim, which is inaccurate due to Gloas's progressive container SSZ encoding. Verified against Teku's AttestationGloasSchema via a throwaway acceptance test in web3signer.
nflaig
added a commit
to ChainSafe/lodestar
that referenced
this pull request
Sep 14, 2026
…0071) Aligns the external signer client with the Glamsterdam additions to the remote signing api (ethereum/remote-signing-api#28). All new gloas payloads are `version`-wrapped like `BLOCK_V2` and `AGGREGATE_AND_PROOF_V2`, and the PTC signing type is named after the message the validator produces, consistent with `ATTESTATION` and `SYNC_COMMITTEE_MESSAGE` which also carry only the signed data. - rename `PAYLOAD_ATTESTATION` to `PAYLOAD_ATTESTATION_MESSAGE`, body key `payload_attestation_message` - wrap `execution_payload_envelope`, `payload_attestation_message`, `proposer_preferences` and `builder_request_auth` in `{version, data}`, version is the fork at the message slot - add web3signer e2e cases for the four signing types, skipped until the test image supports gloas The same request shapes are implemented in Consensys-Incorporated/web3signer#1192.
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.
Summary
Adds five new signing types for the upcoming Gloas fork (Glamsterdam). These are client-agnostic spec additions intended for any consensus client (Teku, Lighthouse, Lodestar, Nimbus, Prysm) interacting with a remote signer such as Web3Signer.
EXECUTION_PAYLOAD_BIDDOMAIN_BEACON_BUILDER(0x0B000000)EXECUTION_PAYLOAD_ENVELOPEDOMAIN_BEACON_BUILDER(0x0B000000)PAYLOAD_ATTESTATION_MESSAGEDOMAIN_PTC_ATTESTER(0x0C000000)PROPOSER_PREFERENCESDOMAIN_PROPOSER_PREFERENCES(0x0D000000)BUILDER_REQUEST_AUTHDOMAIN_BUILDER_REQUEST_AUTH(0x0B000001)Request shape
All five payloads are fork-versioned, following the existing
BLOCK_V2/AGGREGATE_AND_PROOF_V2pattern:{ "type": "EXECUTION_PAYLOAD_BID", "fork_info": { ... }, "execution_payload_bid": { "version": "GLOAS", "data": { ... } } }BUILDER_REQUEST_AUTHis the exception onfork_info: likeVALIDATOR_REGISTRATION, it is signed withcompute_domain(DOMAIN_BUILDER_REQUEST_AUTH)(genesis fork version, zerogenesis_validators_root), sofork_infois not required. It is stillversion-wrapped.Schema additions
ExecutionPayloadBidGloas(12 fields, incl.execution_requests_root)ExecutionPayloadEnvelopeGloas(payload,execution_requests,builder_index,beacon_block_root,parent_beacon_block_root)ExecutionPayloadGloas(Deneb shape +block_access_list,slot_number)ExecutionRequestsGloas(deposits,withdrawals,consolidations,builder_deposits,builder_exits)PayloadAttestationDataGloas(4 fields)ProposerPreferencesGloas(dependent_root,proposal_slot,validator_index,fee_recipient,target_gas_limit)BuilderRequestAuthGloas(data,slot)BlockRequestGloas,AggregateAndProofRequestGloas—GLOASadded toBLOCK_V2andAGGREGATE_AND_PROOF_V2(JSON shapes unchanged from Fulu; only SSZ encoding differs)/signendpoint'soneOf+ discriminator mapping is extended with the five new types; a request example is provided for each, plusBLOCK_V2 (GLOAS)andAGGREGATE_AND_PROOF_V2 (GLOAS).Tracks #23.
Field shapes mirror the current
consensus-specsgloas/andbuilder-specsgloas/containers. Other client teams should review and push back on:PROPOSER_PREFERENCESbelongs in the spec at this layer or is something proposers handle locally.BUILDER_REQUEST_AUTHis scoped/named correctly against the currentbuilder-specs(Gloas)BuilderRequestAuth/SignedBuilderRequestAuthcontainers.Spec is published as draft and will be revised once cross-client consensus is reached.
Review history
BUILDER_REQUEST_AUTHper builder-specs#165 / beacon-APIs#630; syncedProposerPreferences/ExecutionPayloadEnvelopewith spec.version-wrapped for forward compatibility (8742bd7).execution_requestsis now fully typed (ExecutionRequestsGloas);BLOCK_V2andAGGREGATE_AND_PROOF_V2acceptGLOAS(8742bd7).Note: the
version/datawrapper was a breaking change relative to the earlier draft validated in Consensys-Incorporated/web3signer#1192 — that implementation has been updated to match (web3signer@27431fbc, web3signer@5670340b).Test plan
27431fbc,5670340b)