engine: drop fcU v4 from SSZ_CAPABILITIES until ELs ship target_gas_limit#6
Closed
barnabasbusa wants to merge 1 commit into
Closed
engine: drop fcU v4 from SSZ_CAPABILITIES until ELs ship target_gas_limit#6barnabasbusa wants to merge 1 commit into
barnabasbusa wants to merge 1 commit into
Conversation
…imit PayloadAttributesV4 gained `target_gas_limit: uint64` in execution-apis PR #796 (commit a22fbd4, JSON spec) and we plumbed the field through in 0a1418b ("plumb target_gas_limit through PayloadAttributesV4 (alpha 8)"). The SSZ-encoding spec on PR #764 only just gained the matching container update on the `bbusa/ssz` branch, and EL implementations (nethermind glamsterdam-devnet-4 SSZ wire, geth) still decode PayloadAttributesV4 with the old 6-field layout. Our 8 extra trailing bytes shift the inner withdrawals offset and the EL replies `400 Malformed SSZ body` for every fcU at slot transition once Gloas is active. Workaround: stop advertising `POST /engine/v4/forkchoice` so fcU v4 falls back to JSON-RPC. JSON tolerates the unknown `targetGasLimit` field today, so the alpha-8 value still reaches the EL — it's just ignored for now. All other SSZ endpoints (newPayload, getPayload, fcU v1/v2/v3, blobs, etc.) stay advertised. Re-add the line once nethermind PR #11646 lands and a matching geth change ships.
🤖 qu0b-reviewerClean diff, well-scoped. No issues found. The PR drops Reviewed @ |
Merged
3 tasks
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
POST /engine/v4/forkchoiceinSSZ_CAPABILITIESso engine_forkchoiceUpdatedV4 falls back to JSON-RPC for Gloas/Amsterdam.Engine API error 400: Malformed SSZ bodyon every fcU at slot transition once Gloas is active.Why
We added
target_gas_limit: uint64toPayloadAttributesV4SSZ container in 0a1418b ("plumb target_gas_limit through PayloadAttributesV4 (alpha 8)") to match execution-apis PR #796 (JSON spec landed as a22fbd4).But the SSZ-encoding spec on execution-apis PR #764 only just got the matching container change (commit 949d6a8 on
bbusa/ssz). EL implementations (nethermindglamsterdam-devnet-4, geth) still decodePayloadAttributesV4with the old 6-field layout — our 8 extra trailing bytes shift the inner withdrawals offset and the EL replies400 Malformed SSZ body.JSON-RPC tolerates unknown fields, so the alpha-8
targetGasLimitstill reaches the EL on the JSON path — it's just ignored for now until ELs ship support.How to undo
Re-add
\"POST /engine/v4/forkchoice\"toSSZ_CAPABILITIESonce:Test plan
Malformed SSZ bodytargetGasLimitstill appears in the JSON-RPC fcU body (already gated on the gloas fork epoch in node.py:1371)Engine SSZ transport negotiated: N endpointslog line)