Skip to content

Conversation

@StefanBratanov
Copy link
Contributor

@StefanBratanov StefanBratanov commented Nov 21, 2025

PR Description

Return PublishSignedExecutionPayloadResult instead of Void. Also only imports execution payload if gossip validation passes (which should have been the logic from the start and it is per current PR specs ethereum/beacon-APIs#552)

Also small changes to clean ForkChoice slightly

Fixed Issue(s)

N/A

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

Return a structured result when publishing execution payloads and only publish after successful gossip validation/import, with supporting store and fork-choice updates.

  • API/Interfaces:
    • Change publishSignedExecutionPayload (in ValidatorApiChannel, BuilderApiChannel, sentry/failover/metrics adapters) to return PublishSignedExecutionPayloadResult instead of Void.
    • Add validator/api/PublishSignedExecutionPayloadResult.
    • Update ExecutionPayloadPublisher to return the same result; adjust NOOP.
  • Publishing behavior (Gloas):
    • In ExecutionPayloadPublisherGloas, call ExecutionPayloadManager.validateAndImportExecutionPayload and publish payload/sidecars only on ACCEPT; otherwise return rejected with reason.
    • ValidatorApiHandler maps exceptions to rejected results.
  • Spec/State/Fork-choice:
    • Expose SignedExecutionPayloadEnvelope.getBeaconBlockRoot() and use it in logs.
    • Add MutableStore.putExecutionPayloadAndState; implement in test store; stub in StoreTransaction.
    • ForkChoiceUtil/ForkChoiceUtilGloas: add availability checker overload for execution payloads and store execution payloads; use NOOP_DATACOLUMN_SIDECAR for Gloas.
    • DefaultExecutionPayloadManager: remove separate import method; validate then import async; cache seen roots; improved logging.
  • Misc:
    • ChainBuilder and other callers switch to getBeaconBlockRoot().
  • Tests:
    • Update/extend unit tests across validator, publisher, fork-choice, execution manager, debug dumper to assert new return type and behavior.

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

}

public AvailabilityChecker<?> createAvailabilityChecker(
final SignedExecutionPayloadEnvelope executionPayload) {

Check notice

Code scanning / CodeQL

Useless parameter Note test

The parameter 'executionPayload' is never used.
@StefanBratanov StefanBratanov force-pushed the result_object_not_void_publish_ep branch from f433df2 to 69a6a91 Compare November 24, 2025 02:38
@StefanBratanov StefanBratanov enabled auto-merge (squash) November 24, 2025 02:49
@StefanBratanov StefanBratanov merged commit ae6918b into Consensys:master Nov 24, 2025
51 checks passed
@github-actions github-actions bot locked and limited conversation to collaborators Nov 24, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants