Skip to content

Fix execution block / receipts JSON downloads on Gloas slots#666

Merged
pk910 merged 2 commits intomasterfrom
bbusa/fix-gloas-block-body-download
Apr 30, 2026
Merged

Fix execution block / receipts JSON downloads on Gloas slots#666
pk910 merged 2 commits intomasterfrom
bbusa/fix-gloas-block-body-download

Conversation

@barnabasbusa
Copy link
Copy Markdown
Collaborator

Summary

  • The Execution Block (eth_getBlockByHash) and Block Receipts JSON downloads on the slot details page errored with block has no execution payload on every Gloas (EIP-7732) slot.
  • Root cause: VersionedSignedBeaconBlock.ExecutionPayload() explicitly returns "no execution payload in gloas" because in EIP-7732 the payload moved out of the beacon block body into the separate Signed Execution Payload Envelope. Both download handlers in handlers/slot_download.go only consulted the inline payload.
  • Added resolveExecutionPayload which, for DataVersionGloas/Heze, synthesises a *spec.VersionedExecutionPayload from blockData.Payload.Message.Payload — the same pattern already used in handlers/slot.go:812 for the rendered slot view. Both handleBlockBodyDownload and handleReceiptsDownload now flow through it; pre-Gloas behaviour is unchanged.

Test plan

  • On a Kurtosis enclave running a Gloas-enabled fork, open a slot with a payload envelope and click Execution Block → JSON — file downloads with full transactions instead of erroring.
  • On the same slot, click Block Receipts → JSON — receipts download instead of erroring.
  • On a pre-Gloas slot (or pre-Gloas testnet), confirm both downloads still work.
  • Confirm a slot with a missing/empty envelope still surfaces block has no execution payload.

…oads

The "Execution Block" and "Block Receipts" JSON downloads on the slot
details page failed with "block has no execution payload" on every
EIP-7732 (Gloas) block, because the versioned beacon block no longer
carries the execution payload inline — it lives in the separate signed
execution payload envelope.

Add a resolveExecutionPayload helper that falls back to
blockData.Payload.Message.Payload for Gloas+ blocks, mirroring the
pattern already used in handlers/slot.go for the rendered slot view, and
route both download handlers through it.
@barnabasbusa barnabasbusa added the build-docker-image Automatically build docker image for PR branch label Apr 30, 2026
@pk910 pk910 merged commit b6a9b6a into master Apr 30, 2026
14 checks passed
@pk910 pk910 deleted the bbusa/fix-gloas-block-body-download branch April 30, 2026 07:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

build-docker-image Automatically build docker image for PR branch

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants