Skip to content

Conversation

@zilm13
Copy link
Contributor

@zilm13 zilm13 commented Nov 19, 2025

PR Description

Add logic on handlers size for reconstruction of sidecars from proofs on supernodes.
This PR includes:

  • configuration flag to set border from which sidecars will be pruned (defaulted to Integer.MAX until tests and approval)
  • DataColumnSidecar byRoot and byRange changes and tests
  • fixes in test setup lead to some fixes in old tests

It's part of #10095

Fixed Issue(s)

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 archive-backed reconstruction to DataColumnSidecars Req/Resp handlers and introduces a configurable sidecar retention window for supernodes.

  • RPC/Networking:
    • Archive Reconstruction: Add DataColumnSidecarArchiveReconstructor and wire it through Eth2P2PNetworkBuilderEth2PeerManagerBeaconChainMethods into DataColumnSidecarsByRoot/ByRange handlers.
    • Handlers: On missing/pruned sidecars, attempt reconstruction using block + column index; respect canonical/finalized checks and request-scoped tracking via request hash.
    • Response Lifecycle: Extend ResponseCallback with alwaysRun; implement in RpcResponseCallback and LoggingResponseCallback to notify reconstructor on request completion.
  • Config/CLI:
    • Add DEFAULT_DATA_COLUMN_SIDECAR_EXTENSION_RETENTION_EPOCHS with builder/getter and CLI flag --Xdata-column-sidecar-extension-retention-epochs.
  • Services:
    • Plumb reconstructor into BeaconChainController (currently NOOP).
  • Tests:
    • Update/add tests for new handlers behavior and response callback lifecycle (RpcResponseCallbackTest, by-root/by-range handler tests, wiring in factories/managers).

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

};

SafeFuture<Optional<DataColumnSidecar>> reconstructDataColumnSidecar(
SignedBeaconBlock block, UInt64 index, Bytes32 requestHash);

Check notice

Code scanning / CodeQL

Useless parameter Note

The parameter 'block' is never used.
};

SafeFuture<Optional<DataColumnSidecar>> reconstructDataColumnSidecar(
SignedBeaconBlock block, UInt64 index, Bytes32 requestHash);

Check notice

Code scanning / CodeQL

Useless parameter Note

The parameter 'index' is never used.
};

SafeFuture<Optional<DataColumnSidecar>> reconstructDataColumnSidecar(
SignedBeaconBlock block, UInt64 index, Bytes32 requestHash);

Check notice

Code scanning / CodeQL

Useless parameter Note

The parameter 'requestHash' is never used.
SafeFuture<Optional<DataColumnSidecar>> reconstructDataColumnSidecar(
SignedBeaconBlock block, UInt64 index, Bytes32 requestHash);

boolean isSidecarPruned(UInt64 slot, UInt64 index);

Check notice

Code scanning / CodeQL

Useless parameter Note

The parameter 'slot' is never used.
SafeFuture<Optional<DataColumnSidecar>> reconstructDataColumnSidecar(
SignedBeaconBlock block, UInt64 index, Bytes32 requestHash);

boolean isSidecarPruned(UInt64 slot, UInt64 index);

Check notice

Code scanning / CodeQL

Useless parameter Note

The parameter 'index' is never used.

boolean isSidecarPruned(UInt64 slot, UInt64 index);

void onRequestCompleted(Bytes32 requestHash);

Check notice

Code scanning / CodeQL

Useless parameter Note

The parameter 'requestHash' is never used.
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.

1 participant