Skip to content

post-gloas payload_attributes event fields - #638

Open
markolazic01 wants to merge 8 commits into
ethereum:masterfrom
markolazic01:gloas-payload-attributes
Open

markolazic01 wants to merge 8 commits into
ethereum:masterfrom
markolazic01:gloas-payload-attributes

Conversation

@markolazic01

@markolazic01 markolazic01 commented Aug 31, 2026 •

Copy link
Copy Markdown
Contributor

Description

Introduces safe_block_hash and finalized_block_hash to payload_attributes, from Gloas onwards.

Rationale

This event exists so an external process can call engine_forkchoiceUpdated, but that call requires a full ForkchoiceStateV1(headBlockHash, safeBlockHash, finalizedBlockHash) and the event currently only provides the head, parent_block_hash, which maps to headBlockHash.

The safe and finalized execution hashes therefore complete the ForkchoiceStateV1 object that an external builder passes to engine_forkchoiceUpdated. The builder is a second forkchoiceUpdated writer on the same execution client as the beacon node; inability to retrieve these fields can result in passing different safe and finalized hashes than the node, which would make the execution client's view flip between the two callers.

@nflaig nflaig added the Gloas api's needed in Gloas fork. label Sep 4, 2026
krisoshea-eth added a commit to krisoshea-eth/lodestar that referenced this pull request Sep 16, 2026
…vents

Post-gloas the builder issues its own forkchoiceUpdated to start a payload
build, so it needs the safe and finalized execution block hashes the beacon
node would use, not only the head. Emit them as optional top-level
`safe_block_hash` and `finalized_block_hash` fields next to the standard
`payload_attributes` event shape, taken from the same forkchoice lookups the
beacon node uses for its own forkchoiceUpdated, and parse them back on the
client when present.

The fields stay out of the SSZ container so events from beacon nodes that do
not send them keep parsing, and they are omitted pre-gloas so the standard
shape is unchanged. This replaces the earlier required container fields on
this branch. Spec-side discussion: ethereum/beacon-APIs#638.
@markolazic01

Copy link
Copy Markdown
Contributor Author

Merged to resolve a conflict

@nflaig nflaig left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, this simplfies implementing a builder that uses a vanilla execution client (as discussed here) and in general seems useful to emit these fields, leaving open for more client approvals

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Gloas api's needed in Gloas fork.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants