Skip to content

Conversation

@gfukushima
Copy link
Contributor

@gfukushima gfukushima commented Nov 25, 2025

PR Description

This PR add a SingleBlockProviderResolver that will return recent blocks from the tracker from FULU (DASBasicSampler) or previous forks (BlockBlobSidecarsTrackersPoolImpl)

Fixed Issue(s)

Part of #10101

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 a resolver to fetch recent blocks from the DAS sampler (FULU) or blob tracker, and refactors DAS sampler into an interface with a new implementation and APIs, integrating across sync, fork choice, and tests.

  • Core/FULU DAS:
    • Split DasSamplerBasic into interface and new DasSamplerBasicImpl; add metrics and bounded in-memory tracking.
    • Change DataAvailabilitySampler.checkDataAvailability to accept SignedBeaconBlock; add containsBlock/getBlock to DasSamplerBasic.
    • Update DasPreSampler and DataColumnSidecarAvailabilityChecker to new API.
    • Reference tests updated to instantiate DasSamplerBasicImpl.
  • Block retrieval:
    • Introduce SingleBlockProviderResolver to fetch blocks from DasSamplerBasic first, then BlockBlobSidecarsTrackersPool; wire into BeaconChainController for StorageBackedRecentChainData.
    • Add tests for resolver behavior.
  • Sync/recent blocks:
    • RecentBlocksFetchService now depends on DasSamplerBasic and skips fetching when sampler already has the block; propagate via DefaultSyncServiceFactory and test fixtures.
  • Wiring:
    • BeaconChainController initializes and exposes dasSamplerBasic (or NOOP pre-FULU) and passes it to sync; subscribes to slot events; integrates resolver.
    • Tests adjusted to new constructors and method signatures.

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

Signed-off-by: Gabriel Fukushima <[email protected]>
Signed-off-by: Gabriel Fukushima <[email protected]>
Signed-off-by: Gabriel Fukushima <[email protected]>
Signed-off-by: Gabriel Fukushima <[email protected]>
Signed-off-by: Gabriel Fukushima <[email protected]>
Signed-off-by: Gabriel Fukushima <[email protected]>
…new tracker due to the introduction of size limitation

Signed-off-by: Gabriel Fukushima <[email protected]>
Signed-off-by: Gabriel Fukushima <[email protected]>
Signed-off-by: Gabriel Fukushima <[email protected]>
@gfukushima gfukushima marked this pull request as ready for review November 28, 2025 01:19
@gfukushima gfukushima marked this pull request as draft November 28, 2025 02:01
@gfukushima gfukushima marked this pull request as ready for review November 28, 2025 03:09
@gfukushima gfukushima force-pushed the SingleBlockProviderFulu branch from c997edc to 83730a8 Compare November 28, 2025 05:05
Signed-off-by: Gabriel Fukushima <[email protected]>
Signed-off-by: Gabriel Fukushima <[email protected]>
Signed-off-by: Gabriel Fukushima <[email protected]>
Signed-off-by: Gabriel Fukushima <[email protected]>
Signed-off-by: Gabriel Fukushima <[email protected]>
Signed-off-by: Gabriel Fukushima <[email protected]>
Signed-off-by: Gabriel Fukushima <[email protected]>
Signed-off-by: Gabriel Fukushima <[email protected]>
Signed-off-by: Gabriel Fukushima <[email protected]>
Signed-off-by: Gabriel Fukushima <[email protected]>
Signed-off-by: Gabriel Fukushima <[email protected]>
Signed-off-by: Gabriel Fukushima <[email protected]>
Signed-off-by: Gabriel Fukushima <[email protected]>
Signed-off-by: Gabriel Fukushima <[email protected]>
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.

I think the direction is actually what I was having in mind. sorry for the lag

Signed-off-by: Gabriel Fukushima <[email protected]>
Signed-off-by: Gabriel Fukushima <[email protected]>
# Conflicts:
#	ethereum/statetransition/src/main/java/tech/pegasys/teku/statetransition/datacolumns/DasSamplerBasic.java
#	ethereum/statetransition/src/test/java/tech/pegasys/teku/statetransition/datacolumns/DasSamplerBasicImplTest.java
Signed-off-by: Gabriel Fukushima <[email protected]>
Signed-off-by: Gabriel Fukushima <[email protected]>
}

@Override
public Map<Bytes32, DataColumnSamplingTracker> getRecentlySampledColumnsByRoot() {

Check notice

Code scanning / CodeQL

Exposing internal representation Note

getRecentlySampledColumnsByRoot exposes the internal representation stored in field recentlySampledColumnsByRoot. The value may be modified
after this call to getRecentlySampledColumnsByRoot
.
getRecentlySampledColumnsByRoot exposes the internal representation stored in field recentlySampledColumnsByRoot. The value may be modified
after this call to getRecentlySampledColumnsByRoot
.
getRecentlySampledColumnsByRoot exposes the internal representation stored in field recentlySampledColumnsByRoot. The value may be modified
after this call to getRecentlySampledColumnsByRoot
.
getRecentlySampledColumnsByRoot exposes the internal representation stored in field recentlySampledColumnsByRoot. The value may be modified
after this call to getRecentlySampledColumnsByRoot
.
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.

2 participants