Skip to content

Add execution_payload event support#16894

Merged
syjn99 merged 8 commits into
OffchainLabs:developfrom
syjn99:feat/execution-payload-event
Jun 5, 2026
Merged

Add execution_payload event support#16894
syjn99 merged 8 commits into
OffchainLabs:developfrom
syjn99:feat/execution-payload-event

Conversation

@syjn99

@syjn99 syjn99 commented Jun 4, 2026

Copy link
Copy Markdown
Member

What type of PR is this?

Feature

What does this PR do? Why is it needed?

Adds event emission for execution_payload as per ethereum/beacon-APIs#588. Refactors ReceiveExecutionPayloadEnvelope by decoupling EL validation from signature verification+DA check to satisfy the event emission timing for execution_payload_available.

Which issues(s) does this PR fix?

N/A

Other notes for review

  • Renames the existing struct names clearly to indicate whether it is for execution_payload or execution_payload_available.

Testing

Kurtosis config file:

participants:
  - el_type: ethrex
    el_image: ethpandaops/ethrex:glamsterdam-devnet-4
    el_extra_params:
      - --http.api=eth,net,web3,admin
    cl_type: prysm
    cl_image: prysm-bn-custom-image:latest
    vc_image: prysm-vc-custom-image:latest
    supernode: true
    count: 3
    cl_extra_params:
      - --subscribe-all-subnets
      - --verbosity=debug
    vc_extra_params:
      - --verbosity=debug

network_params:
  fulu_fork_epoch: 0
  gloas_fork_epoch: 2
  seconds_per_slot: 6
  genesis_delay: 40

additional_services:
  - dora

global_log_level: debug

You can receive both events with this command:

➜  prysm git:(feat/execution-payload-event) curl -X 'GET' \
  'http://127.0.0.1:32813/eth/v1/events?topics=execution_payload&topics=execution_payload_available' \
  -H 'accept: text/event-stream'

Result:

event: execution_payload_available
data: {"slot":"64","block_root":"0x0ef955bd61d0e402bc71d6b97f223fa9377683dce64561069c408c5c2e0d548d"}

event: execution_payload
data: {"slot":"64","builder_index":"18446744073709551615","block_hash":"0xbf648d1f316e6d8284ed74c97c4942af1daf052f7517c5fca8b00836151e1d3d","block_root":"0x0ef955bd61d0e402bc71d6b97f223fa9377683dce64561069c408c5c2e0d548d","execution_optimistic":false}

event: execution_payload_available
data: {"slot":"65","block_root":"0xfec09760c4bd83adcff905cb95b732bfcef7c00f529f5e2471ff34db512fbdbe"}

event: execution_payload
data: {"slot":"65","builder_index":"18446744073709551615","block_hash":"0x6c327ec9e4de925b28eb5e127fbfae8d6082590199d35423ea95f8f0300c0423","block_root":"0xfec09760c4bd83adcff905cb95b732bfcef7c00f529f5e2471ff34db512fbdbe","execution_optimistic":false}

Acknowledgements

  • I have read CONTRIBUTING.md.
  • I have included a uniquely named changelog fragment file.
  • I have added a description with sufficient context for reviewers to understand this PR.
  • I have tested that my changes work as expected and I added a testing plan to the PR description (if applicable).

@syjn99 syjn99 force-pushed the feat/execution-payload-event branch from 5fdfdf8 to 27d2507 Compare June 4, 2026 11:53
@syjn99 syjn99 marked this pull request as ready for review June 4, 2026 11:54
@github-project-automation github-project-automation Bot moved this to Unassigned in Gloas Jun 4, 2026
Comment thread beacon-chain/blockchain/receive_execution_payload_envelope.go Outdated
@syjn99 syjn99 requested a review from terencechain June 5, 2026 04:30
@syjn99 syjn99 enabled auto-merge June 5, 2026 15:33
@syjn99 syjn99 added this pull request to the merge queue Jun 5, 2026
Merged via the queue into OffchainLabs:develop with commit 938e051 Jun 5, 2026
16 checks passed
@syjn99 syjn99 deleted the feat/execution-payload-event branch June 5, 2026 16:19
@github-project-automation github-project-automation Bot moved this from Unassigned to Done in Gloas Jun 5, 2026
james-prysm pushed a commit that referenced this pull request Jun 8, 2026
**What type of PR is this?**

> Feature

**What does this PR do? Why is it needed?**

Adds event emission for `execution_payload` as per
ethereum/beacon-APIs#588. Refactors
`ReceiveExecutionPayloadEnvelope` by decoupling EL validation from
signature verification+DA check to satisfy the event emission timing for
`execution_payload_available`.

**Which issues(s) does this PR fix?**

N/A

**Other notes for review**

- Renames the existing struct names clearly to indicate whether it is
for `execution_payload` or `execution_payload_available`.

**Testing**

Kurtosis config file:

```yaml
participants:
  - el_type: ethrex
    el_image: ethpandaops/ethrex:glamsterdam-devnet-4
    el_extra_params:
      - --http.api=eth,net,web3,admin
    cl_type: prysm
    cl_image: prysm-bn-custom-image:latest
    vc_image: prysm-vc-custom-image:latest
    supernode: true
    count: 3
    cl_extra_params:
      - --subscribe-all-subnets
      - --verbosity=debug
    vc_extra_params:
      - --verbosity=debug

network_params:
  fulu_fork_epoch: 0
  gloas_fork_epoch: 2
  seconds_per_slot: 6
  genesis_delay: 40

additional_services:
  - dora

global_log_level: debug
```

You can receive **both** events with this command:

```bash
➜  prysm git:(feat/execution-payload-event) curl -X 'GET' \
  'http://127.0.0.1:32813/eth/v1/events?topics=execution_payload&topics=execution_payload_available' \
  -H 'accept: text/event-stream'
```

Result:

```
event: execution_payload_available
data: {"slot":"64","block_root":"0x0ef955bd61d0e402bc71d6b97f223fa9377683dce64561069c408c5c2e0d548d"}

event: execution_payload
data: {"slot":"64","builder_index":"18446744073709551615","block_hash":"0xbf648d1f316e6d8284ed74c97c4942af1daf052f7517c5fca8b00836151e1d3d","block_root":"0x0ef955bd61d0e402bc71d6b97f223fa9377683dce64561069c408c5c2e0d548d","execution_optimistic":false}

event: execution_payload_available
data: {"slot":"65","block_root":"0xfec09760c4bd83adcff905cb95b732bfcef7c00f529f5e2471ff34db512fbdbe"}

event: execution_payload
data: {"slot":"65","builder_index":"18446744073709551615","block_hash":"0x6c327ec9e4de925b28eb5e127fbfae8d6082590199d35423ea95f8f0300c0423","block_root":"0xfec09760c4bd83adcff905cb95b732bfcef7c00f529f5e2471ff34db512fbdbe","execution_optimistic":false}
```

**Acknowledgements**

- [x] I have read
[CONTRIBUTING.md](https://github.com/prysmaticlabs/prysm/blob/develop/CONTRIBUTING.md).
- [x] I have included a uniquely named [changelog fragment
file](https://github.com/prysmaticlabs/prysm/blob/develop/CONTRIBUTING.md#maintaining-changelogmd).
- [x] I have added a description with sufficient context for reviewers
to understand this PR.
- [x] I have tested that my changes work as expected and I added a
testing plan to the PR description (if applicable).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

2 participants