Skip to content

Conversation

StefanBratanov
Copy link
Contributor

@StefanBratanov StefanBratanov commented Oct 15, 2025

PR Description

  • Introduce ExecutionPayloadManager which is responsible as a delegator for validating and importing an execution payload
  • Added onExecutionPayload handler in ForkChoice which is unimplemented
  • New ExecutionPayloadGossipChannel
  • Implement ExecutionPayloadPublisher which is pretty basic. The interfaces and return types can be all changed once we get deeper into the implementation.
  • Added new ExecutionPayloadimportResult similar to BlockResult
  • Remove synchronized from GossipForkManager.publishDataColumnSidecar

Fixed Issue(s)

related to #10008

Documentation

  • I thought about documentation and added the doc-change-required label to this PR if updates are required.

Changelog

  • I thought about adding a changelog entry, and added one if I deemed necessary.

Note

Adds ExecutionPayloadManager and end-to-end wiring to gossip, publish, and import Gloas execution payloads with new result types and logging.

  • Core (Gloas execution payloads):
    • Manager & results: Add ExecutionPayloadManager (default + NOOP) with validateAndImportExecutionPayload/importExecutionPayload; introduce ExecutionPayloadImportResult (+ success/failed implementations).
    • Fork choice: Add ForkChoice.onExecutionPayload(...) (stub success) used by the manager.
    • Logging/API: Add SignedExecutionPayloadEnvelope.toLogString() and LogFormatter.formatExecutionPayload(...).
  • Networking/Gossip:
    • New channel: Add ExecutionPayloadGossipChannel and integrate with ActiveEth2P2PNetwork startup subscription.
    • Managers/subscriptions: Extend ExecutionPayloadGossipManager (publish returns SafeFuture), GossipForkManager and GossipForkSubscriptions* to publish execution payloads with feedback.
  • Validator/BeaconChain wiring:
    • Publisher: Implement ExecutionPayloadPublisherGloas to gossip payloads and data column sidecars then import via manager.
    • Controller: Initialize ExecutionPayloadManager (incl. ExecutionPayloadGossipValidator placeholder); wire gossip processor to validateAndImportExecutionPayload; pass gossip channel and manager to ExecutionPayloadPublisherGloas.
  • Tests:
    • Add tests for DefaultExecutionPayloadManager and ExecutionPayloadPublisherGloas.
  • Misc:
    • Minor visibility tweaks in block import result classes; remove synchronization from publishDataColumnSidecar in GossipForkManager.

Written by Cursor Bugbot for commit 07817bf. This will update automatically on new commits. Configure here.

cursor[bot]

This comment was marked as outdated.

/** Import an execution payload to the store. */
public SafeFuture<ExecutionPayloadImportResult> onExecutionPayload(
final SignedExecutionPayloadEnvelope signedEnvelope,
final ExecutionLayerChannel executionLayer) {

Check notice

Code scanning / CodeQL

Useless parameter Note

The parameter 'executionLayer' is never used.

// TODO-GLOAS: https://github.com/Consensys/teku/issues/9960
public SafeFuture<InternalValidationResult> validate(
final SignedExecutionPayloadEnvelope signedEnvelope) {

Check notice

Code scanning / CodeQL

Useless parameter Note

The parameter 'signedEnvelope' is never used.
@StefanBratanov StefanBratanov force-pushed the gloas_plumbing_execution_payload branch 5 times, most recently from 87518ee to 8be297c Compare October 21, 2025 06:24
@StefanBratanov StefanBratanov force-pushed the gloas_plumbing_execution_payload branch from 8be297c to 3916f54 Compare October 22, 2025 07:53
Copy link
Contributor

@tbenr tbenr left a comment

Choose a reason for hiding this comment

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

LGTM

// https://github.com/Consensys/teku/issues/9878
case REJECT, SAVE_FOR_FUTURE, IGNORE -> {}
}
});
Copy link
Contributor

Choose a reason for hiding this comment

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

I think we should terminate with a finish here and remove @SuppressWarnings("FutureReturnValueIgnored") (applies to BlockManager too)

Copy link
Contributor

Choose a reason for hiding this comment

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

but yeah, that duplicates the noise in case of failing future...

@StefanBratanov StefanBratanov enabled auto-merge (squash) October 22, 2025 13:08
@StefanBratanov StefanBratanov merged commit 7cca0a4 into Consensys:master Oct 22, 2025
60 of 62 checks passed
@github-actions github-actions bot locked and limited conversation to collaborators Oct 22, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants