Skip to content

Conversation

@StefanBratanov
Copy link
Contributor

@StefanBratanov StefanBratanov commented Nov 17, 2025

PR Description

Some initial code to make ChainBuilder + ChainUpdater work with RecentChainData.

Essentially implementing this in the Store:

Optional<SignedExecutionPayloadEnvelope> getExecutionPayloadIfAvailable(Bytes32 beaconBlockRoot);

SafeFuture<Optional<SignedExecutionPayloadEnvelope>> retrieveSignedExecutionPayloadEnvelope(
      Bytes32 beaconBlockRoot);

And new column in DB:

.put("HOT_EXECUTION_PAYLOADS_BY_ROOT", getColumnHotExecutionPayloadsByRoot())
final KvStoreSerializer<SignedExecutionPayloadEnvelope> signedExecutionPayloadSerializer =
        KvStoreSerializer.createSignedExecutionPayloadSerializer(spec);
hotExecutionPayloadsByRoot =
        KvStoreColumn.create(8, BYTES32_SERIALIZER, signedExecutionPayloadSerializer);

Fixed Issue(s)

related to #10098
fixes #10071

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

Introduce hot execution payload support (ePBS/Gloas) with DB column and serializer, new APIs, and full integration across Store/RecentChainData/Storage layers.

  • Storage/DB:
    • Add HOT_EXECUTION_PAYLOADS_BY_ROOT column and serializer for SignedExecutionPayloadEnvelope.
    • DAO/Database methods to put/get hot execution payloads; included in updates (StorageUpdate).
  • APIs:
    • StorageQueryChannel/throttling/chain storage: getHotExecutionPayloadByRoot.
    • ReadOnlyStore adds getExecutionPayloadIfAvailable and async retrieval; MutableStore.putExecutionPayloadAndState.
    • New ExecutionPayloadProvider and composition util.
  • Store/Client:
    • Wire ExecutionPayloadProvider through StoreBuilder, Store, StoreTransaction(Updates), RecentChainData, StorageBackedRecentChainData.
    • Cache/prune hot execution payloads alongside blocks; expose retrieval.
  • Spec/Util:
    • Spec.deserializeSignedExecutionPayload (Gloas);
    • ChainBuilder tracks and exposes execution payloads/states by beacon block root.
  • Tests:
    • Property test for payload serializer; integration/unit tests for hot payload retrieval and cache behavior; minor test name fixes.

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

@StefanBratanov StefanBratanov marked this pull request as ready for review November 17, 2025 17:46
@StefanBratanov StefanBratanov changed the title Initial database changes for Gloas [SPIKE] Initial database changes for Gloas Nov 19, 2025
@StefanBratanov StefanBratanov marked this pull request as draft November 19, 2025 13:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Adapt ChainBuilder and ChainUpdater for Gloas

1 participant