feat: add GLOAS (Glamsterdam) signing support - #1192
Open
usmansaleem wants to merge 20 commits into
Open
Conversation
Adds four new signing types for the upcoming Glamsterdam (ePBS) fork: EXECUTION_PAYLOAD_BID, EXECUTION_PAYLOAD_ENVELOPE, PAYLOAD_ATTESTATION_MESSAGE, and PROPOSER_PREFERENCES. Bumps Teku to the develop snapshot as the GLOAS schemas (e.g. ExecutionPayloadBid added execution_requests_root, ExecutionPayloadEnvelope dropped slot/state_root, new ExecutionPayloadGloas) are still evolving post-26.4.0. Should pin to a stable Teku version once the next release is cut. Co-authored-by: Sally MacFarlane <macfarla.github@gmail.com>
4 tasks
|
…he refresh - Update BuilderRequestAuth and signing root resolution to match Teku's renamed classes and methods (BuilderRequestAuth, BUILDER_REQUEST_AUTH_SCHEMA, signingRootForSignBuilderRequestAuth). - Update acceptance test data generator to use randomBuilderRequestAuth(). - Configure Gradle to treat Teku develop artifacts as changing modules and bypass changing module cache so builds always pick up latest Teku develop until the next release is pinned.
# Conflicts: # CHANGELOG.md
4 tasks
joshuafernandes
force-pushed
the
master
branch
2 times, most recently
from
September 13, 2026 22:01
32bea26 to
e58a979
Compare
- Prefer 'Gloas' over 'Glamsterdam (ePBS)' in Gloas schema descriptions, drop spec-history notes and EIP references, and mention proposer self-builds for ExecutionPayloadEnvelopeGloas, per nflaig's review. - Recompute the AGGREGATE_AND_PROOF_V2 (GLOAS) example signingRoot; the previous value was copied from the Fulu/Electra example and is not accurate given Gloas's progressive container SSZ encoding. Mirrors ethereum/remote-signing-api@b5b8f82.
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 eth2 signing support for the upcoming Glamsterdam (ePBS / GLOAS) fork — five new signing types matching ethereum/remote-signing-api#28, plus CLI and schema support:
EXECUTION_PAYLOAD_BIDBEACON_BUILDER(0x0B000000)EXECUTION_PAYLOAD_ENVELOPEBEACON_BUILDER(0x0B000000)PAYLOAD_ATTESTATION_MESSAGEPTC_ATTESTER(0x0C000000)PROPOSER_PREFERENCESPROPOSER_PREFERENCES(0x0D000000)BUILDER_REQUEST_AUTHBUILDER_REQUEST_AUTH(0x0B000001)What's Included:
core/.../signing/eth2/schema/gloas/:ExecutionPayloadBid,ExecutionPayloadEnvelope,ExecutionPayloadGloas(extendingExecutionPayloadDenebwithblock_access_listandslot_number),PayloadAttestationData,ProposerPreferences, andBuilderRequestAuth.core/.../signing/eth2/schema/electra/:BuilderDepositRequest,BuilderExitRequest, and updatedExecutionRequests(EIP-8282).VersionedRequest<T>):{"version": "GLOAS", "data": {...}}, ensuring the signer resolves the SSZ schema from the declared milestone and validates that the milestone is scheduled on the configured network.BLOCK_V2andAGGREGATE_AND_PROOF_V2also updated to acceptversion: GLOAS.UInt256andKZGCommitmentinSigningObjectMapperFactoryandSigningMetadataModule.--Xnetwork-gloas-fork-epochtoEth2SubCommandfor overriding the Gloas fork epoch.openapi-specs/eth2/signing/with ethereum/remote-signing-api#28.Eth2RequestUtils,Eth2SigningRequestBodyBuilder) updated.BlsSigningAcceptanceTestcovers all five new signing types underSpecMilestone.GLOAS.Eth2BlockSigningAcceptanceTestandEth2AggregateAndProofSigningAcceptanceTestcover GLOASBLOCK_V2/AGGREGATE_AND_PROOF_V2.Note: Slashing protection is intentionally omitted for the new types — per consensus spec and Teku's
SlashingProtectedSigner, only blocks and attestations are slashable.developsnapshot ingradle/versions.gradle.build.gradleis configured to treat Tekudevelopas a changing module and bypass the 24h cache so builds continuously resolve the latest develop build until a formal release is cut.Test Plan
./gradlew spotlessApply spotlessCheck checkLicense./gradlew :core:compileJava :acceptance-tests:compileTestJava./gradlew test(unit tests)./gradlew :acceptance-tests:acceptanceTest --tests "tech.pegasys.web3signer.tests.signing.*"Note
Medium Risk
Changes core eth2 signing-root logic and wire formats for new fork types; builds depend on unpinned Teku
developschemas until re-pinned.Overview
Adds initial Glamsterdam (GLOAS / ePBS) eth2 signing aligned with remote-signing-api#28: five new
ArtifactTypevalues (EXECUTION_PAYLOAD_BID,EXECUTION_PAYLOAD_ENVELOPE,PAYLOAD_ATTESTATION_MESSAGE,PROPOSER_PREFERENCES,BUILDER_REQUEST_AUTH) with JSON schemas, signing-root computation inEth2SignForIdentifierHandler, and OpenAPI 2.1.0 docs/examples.Gloas payloads use a new
VersionedRequestenvelope (version+data) so the signer picks SSZ from the declared milestone and rejects milestones not scheduled on the network.BLOCK_V2andAGGREGATE_AND_PROOF_V2also acceptGLOAS. ElectraExecutionRequestsis extended for EIP-8282 builder deposits/exits and refactored toasInternalExecutionRequestsfor Electra vs Gloas schemas.Operators can override the fork via hidden
--Xnetwork-gloas-fork-epoch(acceptance-test DSL wired the same way). Jackson support addsUInt256,KZGCommitment, andBLSPublicKeyserializers. Build temporarily pins Tekudevelopwith Gradle treating it as a changing module until the next Teku release.Reviewed by Cursor Bugbot for commit 3fd20e0. Bugbot is set up for automated code reviews on this repo. Configure here.