You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Implement EIP-8282 (Builder Execution) for the Gloas/Glamsterdam fork. The current consensus spec extends the ExecutionRequests container from 3 to 5 request lists, adding builder_deposits and builder_exits. Caplin currently implements the pre-EIP-8282 (devnet-4 / v1.7.0-alpha.8) layout with 3 lists, so erigon is incompatible with devnet-6+ tooling.
Background — why now
The Kurtosis GLOAS Tests CI is flaky/timing out because ethpandaops/assertoor:master moved onto the glamsterdam-devnet-6 branch (EIP-8282, 2026-06-18) and now expects a 5-list ExecutionRequests, while erigon (and the pinned lighthouse:glamsterdam-devnet-4/5 images) still produce 3 lists. assertoor can no longer decode erigon's gloas blocks:
SSZ (lighthouse-mirrored erigon blocks): Message.Body.ParentExecutionRequests: unexpected end of SSZ: not enough data for fixed fields (have 12, needed 20) — 3 offsets present, 5 expected.
JSON (caplin): failed to unmarshal data … builder_deposits: missing.
A short-term CI stopgap pins assertoor to a pre-EIP-8282 image; this issue tracks the real implementation so the clients can move to devnet-6 and assertoor:master can be restored.
New constants: BUILDER_DEPOSIT_REQUEST_TYPE = 0x03, BUILDER_EXIT_REQUEST_TYPE = 0x04, MAX_BUILDER_DEPOSIT_REQUESTS_PER_PAYLOAD = 256, MAX_BUILDER_EXIT_REQUESTS_PER_PAYLOAD = 16. New handlers process_builder_deposit_request, process_builder_exit_request, is_valid_builder_deposit_signature, wired into process_operations via for_ops(...).
Current erigon state
cl/cltypes/execution_requests.go — ExecutionRequests has 3 lists; SSZ encode/decode/size, HashTreeRoot, and JSON all assume 3.
cl/cltypes/beacon_block.go — the gloas body's ParentExecutionRequests *ExecutionRequests reuses the 3-list type.
cl/phase1/core/state/epbs.go — builder onboarding is modeled as a regular deposit with a 0x03 withdrawal credential routed via ApplyDepositForBuilder (the pre-EIP-8282 design); there is no builder_exits path. Note the 0x03 collision: today it's a withdrawal-credential prefix; under EIP-8282 0x03 is also the builder-deposit request-type byte for a distinct request list.
EL: emit/parse the new 0x03/0x04 execution-request types (EIP-7685 framing; engine getPayload/newPayloadexecution_requests) under execution/engineapi.
State transition: process_builder_deposit_request, process_builder_exit_request, is_valid_builder_deposit_signature; wire into operation processing and reconcile with the existing 0x03-credential builder routing.
Config: add the two MAX_BUILDER_*_REQUESTS_PER_PAYLOAD and the request-type constants.
Spec tests: enable the gloas EIP-8282 vectors.
CI: bump lighthouse/prysm images to glamsterdam-devnet-6 in .github/workflows/kurtosis/gloas-*.io and restore assertoor_params.image: ethpandaops/assertoor:master.
Summary
Implement EIP-8282 (Builder Execution) for the Gloas/Glamsterdam fork. The current consensus spec extends the
ExecutionRequestscontainer from 3 to 5 request lists, addingbuilder_depositsandbuilder_exits. Caplin currently implements the pre-EIP-8282 (devnet-4 /v1.7.0-alpha.8) layout with 3 lists, so erigon is incompatible with devnet-6+ tooling.Background — why now
The Kurtosis GLOAS Tests CI is flaky/timing out because
ethpandaops/assertoor:mastermoved onto theglamsterdam-devnet-6branch (EIP-8282, 2026-06-18) and now expects a 5-listExecutionRequests, while erigon (and the pinnedlighthouse:glamsterdam-devnet-4/5images) still produce 3 lists. assertoor can no longer decode erigon's gloas blocks:Message.Body.ParentExecutionRequests: unexpected end of SSZ: not enough data for fixed fields (have 12, needed 20)— 3 offsets present, 5 expected.failed to unmarshal data … builder_deposits: missing.Because only pre-gloas (epoch-0/Fulu) proposals are decodable, the
block-proposal-checkmatrix hangs whenever a client pair misses an epoch-0 proposer slot, and the job times out. Example failing run: https://github.com/erigontech/erigon/actions/runs/28103161617/job/83210197969 (PR #21987, onrelease/3.5).A short-term CI stopgap pins assertoor to a pre-EIP-8282 image; this issue tracks the real implementation so the clients can move to devnet-6 and
assertoor:mastercan be restored.Spec changes (consensus-specs
specs/gloas/beacon-chain.md)ExecutionRequestsbecomes 5 fields:New containers:
New constants:
BUILDER_DEPOSIT_REQUEST_TYPE = 0x03,BUILDER_EXIT_REQUEST_TYPE = 0x04,MAX_BUILDER_DEPOSIT_REQUESTS_PER_PAYLOAD = 256,MAX_BUILDER_EXIT_REQUESTS_PER_PAYLOAD = 16. New handlersprocess_builder_deposit_request,process_builder_exit_request,is_valid_builder_deposit_signature, wired intoprocess_operationsviafor_ops(...).Current erigon state
cl/cltypes/execution_requests.go—ExecutionRequestshas 3 lists; SSZ encode/decode/size, HashTreeRoot, and JSON all assume 3.cl/cltypes/beacon_block.go— the gloas body'sParentExecutionRequests *ExecutionRequestsreuses the 3-list type.cl/phase1/core/state/epbs.go— builder onboarding is modeled as a regular deposit with a0x03withdrawal credential routed viaApplyDepositForBuilder(the pre-EIP-8282 design); there is nobuilder_exitspath. Note the0x03collision: today it's a withdrawal-credential prefix; under EIP-82820x03is also the builder-deposit request-type byte for a distinct request list.v1.7.0-alpha.8/ devnet-4 (cl: implement consensus-specs v1.7.0-alpha.8 for Gloas devnet-4 #21308; devnet-5 fixes in cl, execution: glamsterdam devnet-5 fixes #21655).Tasks
BuilderDepositRequest/BuilderExitRequest; extendExecutionRequeststo 5 lists (SSZ encode/decode/size, HTR, JSON,Clone).0x03/0x04execution-request types (EIP-7685 framing; enginegetPayload/newPayloadexecution_requests) underexecution/engineapi.process_builder_deposit_request,process_builder_exit_request,is_valid_builder_deposit_signature; wire into operation processing and reconcile with the existing0x03-credential builder routing.MAX_BUILDER_*_REQUESTS_PER_PAYLOADand the request-type constants.lighthouse/prysmimages toglamsterdam-devnet-6in.github/workflows/kurtosis/gloas-*.ioand restoreassertoor_params.image: ethpandaops/assertoor:master.References
specs/gloas/beacon-chain.md,specs/gloas/builder.mdethpandaops/assertoor@12259c9f(2026-06-18), merged tomaster2026-06-24