Skip to content

Add execution_payload and execution_payload_gossip event#588

Merged
nflaig merged 10 commits into
masterfrom
nflaig/payload-events
Apr 27, 2026
Merged

Add execution_payload and execution_payload_gossip event#588
nflaig merged 10 commits into
masterfrom
nflaig/payload-events

Conversation

@nflaig
Copy link
Copy Markdown
Member

@nflaig nflaig commented Mar 11, 2026

This adds execution_payload and execution_payload_gossip to the eventstream.

The events mirror the existing block and block_gossip events.

  • execution_payload_gossip is emitted when an execution payload passes gossip validation
  • execution_payload is emitted when an execution payload is successfully imported
  • execution_payload_available is emitted when an execution payload and all data are available for payload attestation without verifying the execution payload itself

These events enable measuring execution payload timings via sidecar software such as contributoor.

@nflaig nflaig added the Gloas api's needed in Gloas fork. label Mar 11, 2026
@rolfyone
Copy link
Copy Markdown
Contributor

we should probably add versions to this too...

Comment thread apis/eventstream/index.yaml Outdated
event: data_column_sidecar
data: {"block_root": "0xcf8e0d4e9587369b2301d0790347320302cc0943d5a1884560367e8208d920f2", "index": "1", "slot": "1"}
execution_payload:
description: The node has received a `SignedExecutionPayloadEnvelope` (from P2P or API) that is successfully imported on the fork-choice `on_execution_payload` handler
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

May I know the difference between this and execution_payload_available?
This one emits when the payload is fully imported, execution_payload_available emits when payload is available for PTC vote.
Is there a gap/delay between the occurrence of these two events?

Copy link
Copy Markdown
Member Author

@nflaig nflaig Mar 12, 2026

Choose a reason for hiding this comment

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

I guess you are right, there shouldn't be much of a difference in the timing and would at most be minimal based on how the client specific import pipeline works.

We can probably remove it and only stick to execution_payload_gossip and execution_payload_available

execution_payload_available is emitted when the execution payload + all data (based on custody) is available, it does not require the execution payload to be valid, while execution_payload does since it is emitted after successful import into fork choice via on_execution_payload handler, so it includes the time it takes for the EL to execute and verify the execution payload

@nflaig
Copy link
Copy Markdown
Member Author

nflaig commented Mar 12, 2026

we should probably add versions to this too...

was thinking about that, I am not that convinced that versioning here makes sense as the schema is not based on a spec container

@nflaig nflaig changed the title Add execution_payload and execution_payload_gossip event Add execution_payload_gossip event Mar 12, 2026
Comment thread apis/eventstream/index.yaml
@rolfyone
Copy link
Copy Markdown
Contributor

was thinking about that, I am not that convinced that versioning here makes sense as the schema is not based on a spec container

still, we might be better off being consistent?

@nflaig
Copy link
Copy Markdown
Member Author

nflaig commented Mar 16, 2026

still, we might be better off being consistent?

but that means not having the version/data container here? eg. block_gossip doesn't have that either because the event doesn't emit data based on a spec container while evens in #587 do, so having the version there makes sense

I am open to adding a version here too if that's really what we want

@rolfyone
Copy link
Copy Markdown
Contributor

@michaelsproul thoughts?

@nflaig nflaig changed the title Add execution_payload_gossip event Add execution_payload and execution_payload_gossip event Mar 27, 2026
@dknopik
Copy link
Copy Markdown

dknopik commented Mar 27, 2026

I'm not Michael, but implementing this in Lighthouse. I agree with @nflaig, let's version only the directly embedded consensus objects. Versioning the others by fork name as well would be inconsistent as noted above, and would be strange to use in cases where we e.g. want to add some field to an event outside of the fork lifecycle.

@james-prysm
Copy link
Copy Markdown
Contributor

haven't started implementing this yet but looks good to me

matthewkeil added a commit to ChainSafe/lodestar that referenced this pull request Mar 30, 2026
Adds execution payload events from
ethereum/beacon-APIs#588

---------

Co-authored-by: Matthew Keil <github@mail.matthewkeil.com>
mergify Bot pushed a commit to sigp/lighthouse that referenced this pull request Mar 31, 2026
Implement boilerplate for new SSE events as specified in
- ethereum/beacon-APIs#588

While that one is not merged yet, I believe the SSE events might be utilized in Dora already.


  Implement the boilerplate, i.e. subscription tracking and publish queues. A PR to implement to fully implement already implementable events will follow.


Co-Authored-By: Daniel Knopik <daniel@dknopik.de>
dapplion pushed a commit to sigp/lighthouse that referenced this pull request Mar 31, 2026
Implement boilerplate for new SSE events as specified in
- ethereum/beacon-APIs#588

While that one is not merged yet, I believe the SSE events might be utilized in Dora already.


  Implement the boilerplate, i.e. subscription tracking and publish queues. A PR to implement to fully implement already implementable events will follow.


Co-Authored-By: Daniel Knopik <daniel@dknopik.de>
@nflaig
Copy link
Copy Markdown
Member Author

nflaig commented Apr 16, 2026

applied changes due to ethereum/consensus-specs#5094, the events no longer emit the state_root

@nflaig nflaig merged commit 31f7d04 into master Apr 27, 2026
3 checks passed
@nflaig nflaig deleted the nflaig/payload-events branch April 27, 2026 09:26
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.

5 participants