Skip to content

Commit 9ddc929

Browse files
committed
Merge branch 'master' into fix-blobs-store
2 parents 8ded791 + fd422da commit 9ddc929

File tree

24 files changed

+109
-118
lines changed

24 files changed

+109
-118
lines changed

data/beaconrestapi/src/integration-test/java/tech/pegasys/teku/beaconrestapi/v1/beacon/GetBlobSidecarsIntegrationTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ public void shouldGetBlobSidecars() throws Exception {
6363
final SignedBlockAndState lastBlock = chainUpdater.advanceChainUntil(targetSlot);
6464
chainUpdater.updateBestBlock(lastBlock);
6565
final List<BlobSidecar> expected =
66-
recentChainData.retrieveBlobSidecars(lastBlock.getSlotAndBlockRoot()).get();
66+
recentChainData.getBlobSidecars(lastBlock.getSlotAndBlockRoot()).get();
6767

6868
final Response responseAll = get("head");
6969
assertThat(responseAll.code()).isEqualTo(SC_OK);
@@ -116,7 +116,7 @@ public void shouldGetBlobSidecarsAsSsz() throws Exception {
116116
final SignedBlockAndState lastBlock = chainUpdater.advanceChainUntil(targetSlot);
117117
chainUpdater.updateBestBlock(lastBlock);
118118
final List<BlobSidecar> expected =
119-
recentChainData.retrieveBlobSidecars(lastBlock.getSlotAndBlockRoot()).get();
119+
recentChainData.getBlobSidecars(lastBlock.getSlotAndBlockRoot()).get();
120120

121121
final Response response = get("head", OCTET_STREAM);
122122
assertThat(response.code()).isEqualTo(SC_OK);

ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/forkchoice/MutableStore.java

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313

1414
package tech.pegasys.teku.spec.datastructures.forkchoice;
1515

16-
import java.util.Collections;
1716
import java.util.List;
1817
import java.util.Optional;
1918
import org.apache.tuweni.bytes.Bytes32;
@@ -34,16 +33,16 @@ public interface MutableStore extends ReadOnlyStore {
3433
* @param block Block
3534
* @param state Corresponding state
3635
* @param checkpoints Checkpoints
37-
* @param blobSidecars empty list for pre-Deneb blocks or out of availability window, otherwise
38-
* actual data
36+
* @param blobSidecars Optional.empty() for pre-Deneb blocks or out of availability window,
37+
* otherwise actual data
3938
* @param earliestBlobSidecarSlot not required even post-Deneb, saved only if the new value is
4039
* smaller
4140
*/
4241
void putBlockAndState(
4342
SignedBeaconBlock block,
4443
BeaconState state,
4544
BlockCheckpoints checkpoints,
46-
List<BlobSidecar> blobSidecars,
45+
Optional<List<BlobSidecar>> blobSidecars,
4746
Optional<UInt64> earliestBlobSidecarSlot);
4847

4948
default void putBlockAndState(
@@ -52,7 +51,7 @@ default void putBlockAndState(
5251
blockAndState.getBlock(),
5352
blockAndState.getState(),
5453
checkpoints,
55-
Collections.emptyList(),
54+
Optional.empty(),
5655
Optional.empty());
5756
}
5857

@@ -64,7 +63,7 @@ default void putBlockAndState(
6463
blockAndState.getBlock(),
6564
blockAndState.getState(),
6665
checkpoints,
67-
blobSidecars,
66+
Optional.of(blobSidecars),
6867
Optional.empty());
6968
}
7069

ethereum/spec/src/main/java/tech/pegasys/teku/spec/datastructures/forkchoice/ReadOnlyStore.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,6 +108,8 @@ default UInt64 getGenesisTimeMillis() {
108108
*/
109109
Optional<SignedBeaconBlock> getBlockIfAvailable(final Bytes32 blockRoot);
110110

111+
Optional<List<BlobSidecar>> getBlobSidecarsIfAvailable(SlotAndBlockRoot slotAndBlockRoot);
112+
111113
default SafeFuture<Optional<BeaconBlock>> retrieveBlock(Bytes32 blockRoot) {
112114
return retrieveSignedBlock(blockRoot).thenApply(res -> res.map(SignedBeaconBlock::getMessage));
113115
}
@@ -124,8 +126,6 @@ default SafeFuture<Optional<BeaconBlock>> retrieveBlock(Bytes32 blockRoot) {
124126

125127
SafeFuture<Optional<BeaconState>> retrieveStateAtSlot(SlotAndBlockRoot checkpoint);
126128

127-
SafeFuture<List<BlobSidecar>> retrieveBlobSidecars(SlotAndBlockRoot slotAndBlockRoot);
128-
129129
SafeFuture<Optional<UInt64>> retrieveEarliestBlobSidecarSlot();
130130

131131
SafeFuture<CheckpointState> retrieveFinalizedCheckpointAndState();

ethereum/spec/src/main/java/tech/pegasys/teku/spec/logic/common/util/ForkChoiceUtil.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -384,7 +384,7 @@ public void applyBlockToStore(
384384
final SignedBeaconBlock signedBlock,
385385
final BeaconState postState,
386386
final boolean isBlockOptimistic,
387-
final List<BlobSidecar> blobSidecars,
387+
final Optional<List<BlobSidecar>> blobSidecars,
388388
final Optional<UInt64> earliestBlobSidecarsSlot) {
389389

390390
BlockCheckpoints blockCheckpoints = epochProcessor.calculateBlockCheckpoints(postState);

ethereum/spec/src/testFixtures/java/tech/pegasys/teku/spec/datastructures/forkchoice/TestStoreImpl.java

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@
1717
import static tech.pegasys.teku.infrastructure.time.TimeUtilities.secondsToMillis;
1818

1919
import java.util.ArrayList;
20-
import java.util.Collections;
2120
import java.util.Comparator;
2221
import java.util.HashMap;
2322
import java.util.List;
@@ -248,10 +247,9 @@ public SafeFuture<Optional<BeaconState>> retrieveCheckpointState(
248247
}
249248

250249
@Override
251-
public SafeFuture<List<BlobSidecar>> retrieveBlobSidecars(
250+
public Optional<List<BlobSidecar>> getBlobSidecarsIfAvailable(
252251
final SlotAndBlockRoot slotAndBlockRoot) {
253-
return SafeFuture.completedFuture(
254-
Optional.ofNullable(blobSidecars.get(slotAndBlockRoot)).orElse(Collections.emptyList()));
252+
return Optional.ofNullable(blobSidecars.get(slotAndBlockRoot));
255253
}
256254

257255
@Override
@@ -265,14 +263,13 @@ public void putBlockAndState(
265263
final SignedBeaconBlock block,
266264
final BeaconState state,
267265
final BlockCheckpoints checkpoints,
268-
final List<BlobSidecar> blobSidecars,
266+
final Optional<List<BlobSidecar>> blobSidecars,
269267
final Optional<UInt64> maybeEarliestBlobSidecarSlot) {
270268
blocks.put(block.getRoot(), block);
271269
blockStates.put(block.getRoot(), state);
272270
blockCheckpoints.put(block.getRoot(), checkpoints);
273-
if (!blobSidecars.isEmpty()) {
274-
this.blobSidecars.put(block.getSlotAndBlockRoot(), blobSidecars);
275-
}
271+
blobSidecars.ifPresent(
272+
sidecars -> this.blobSidecars.put(block.getSlotAndBlockRoot(), sidecars));
276273
if (earliestBlobSidecarSlot.isEmpty()) {
277274
earliestBlobSidecarSlot = maybeEarliestBlobSidecarSlot;
278275
}

ethereum/statetransition/src/main/java/tech/pegasys/teku/statetransition/forkchoice/ForkChoice.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import com.google.common.base.Throwables;
2323
import java.net.ConnectException;
2424
import java.util.Collection;
25-
import java.util.Collections;
2625
import java.util.List;
2726
import java.util.Optional;
2827
import org.apache.logging.log4j.LogManager;
@@ -540,12 +539,12 @@ private BlockImportResult importBlockAndState(
540539
final StoreTransaction transaction = recentChainData.startStoreTransaction();
541540
addParentStateRoots(spec, blockSlotState, transaction);
542541

543-
final List<BlobSidecar> blobSidecars;
542+
final Optional<List<BlobSidecar>> blobSidecars;
544543
if (blobSidecarsAndValidationResult.isNotRequired()) {
545544
// Outside availability window or pre-Deneb
546-
blobSidecars = Collections.emptyList();
545+
blobSidecars = Optional.empty();
547546
} else if (blobSidecarsAndValidationResult.isValid()) {
548-
blobSidecars = blobSidecarsAndValidationResult.getBlobSidecars();
547+
blobSidecars = Optional.of(blobSidecarsAndValidationResult.getBlobSidecars());
549548
} else {
550549
throw new IllegalStateException(
551550
String.format(

ethereum/statetransition/src/test/java/tech/pegasys/teku/statetransition/block/BlockManagerTest.java

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -941,8 +941,7 @@ void onDeneb_shouldStoreBlockWhenBlobSidecarsNotRequired() {
941941
verify(blobSidecarsAvailabilityChecker1).getAvailabilityCheckResult();
942942
assertThat(localRecentChainData.retrieveBlockByRoot(block1.getRoot()))
943943
.isCompletedWithValue(Optional.of(block1.getMessage()));
944-
assertThat(localRecentChainData.retrieveBlobSidecars(block1.getSlotAndBlockRoot()))
945-
.isCompletedWithValue(Collections.emptyList());
944+
assertThat(localRecentChainData.getBlobSidecars(block1.getSlotAndBlockRoot())).isEmpty();
946945
assertThat(localRecentChainData.retrieveEarliestBlobSidecarSlot())
947946
.isCompletedWithValueMatching(Optional::isEmpty);
948947
}
@@ -981,8 +980,7 @@ void onDeneb_shouldNotStoreBlockWhenBlobSidecarsIsInvalid() {
981980
verify(blobSidecarsAvailabilityChecker1).getAvailabilityCheckResult();
982981
assertThat(localRecentChainData.retrieveBlockByRoot(block1.getRoot()))
983982
.isCompletedWithValue(Optional.empty());
984-
assertThat(localRecentChainData.retrieveBlobSidecars(block1.getSlotAndBlockRoot()))
985-
.isCompletedWithValue(Collections.emptyList());
983+
assertThat(localRecentChainData.getBlobSidecars(block1.getSlotAndBlockRoot())).isEmpty();
986984
assertThat(localRecentChainData.retrieveEarliestBlobSidecarSlot())
987985
.isCompletedWithValueMatching(Optional::isEmpty);
988986

@@ -1022,8 +1020,7 @@ void onDeneb_shouldNotStoreBlockWhenBlobSidecarsIsNotAvailable() {
10221020
verify(blobSidecarsAvailabilityChecker1).getAvailabilityCheckResult();
10231021
assertThat(localRecentChainData.retrieveBlockByRoot(block1.getRoot()))
10241022
.isCompletedWithValue(Optional.empty());
1025-
assertThat(localRecentChainData.retrieveBlobSidecars(block1.getSlotAndBlockRoot()))
1026-
.isCompletedWithValue(Collections.emptyList());
1023+
assertThat(localRecentChainData.getBlobSidecars(block1.getSlotAndBlockRoot())).isEmpty();
10271024
assertThat(localRecentChainData.retrieveEarliestBlobSidecarSlot())
10281025
.isCompletedWithValueMatching(Optional::isEmpty);
10291026
}
@@ -1053,8 +1050,7 @@ void preDeneb_shouldNotWorryAboutBlobSidecars() {
10531050
verify(blobSidecarsAvailabilityChecker1).getAvailabilityCheckResult();
10541051
assertThat(localRecentChainData.retrieveBlockByRoot(block1.getRoot()))
10551052
.isCompletedWithValue(Optional.of(block1.getMessage()));
1056-
assertThat(localRecentChainData.retrieveBlobSidecars(block1.getSlotAndBlockRoot()))
1057-
.isCompletedWithValue(Collections.emptyList());
1053+
assertThat(localRecentChainData.getBlobSidecars(block1.getSlotAndBlockRoot())).isEmpty();
10581054
assertThat(localRecentChainData.retrieveEarliestBlobSidecarSlot())
10591055
.isCompletedWithValueMatching(Optional::isEmpty);
10601056
}
@@ -1115,15 +1111,14 @@ private void assertThatStored(
11151111
final BeaconBlock beaconBlock, final List<BlobSidecar> blobSidecars) {
11161112
assertThat(localRecentChainData.retrieveBlockByRoot(beaconBlock.getRoot()))
11171113
.isCompletedWithValue(Optional.of(beaconBlock));
1118-
assertThat(localRecentChainData.retrieveBlobSidecars(beaconBlock.getSlotAndBlockRoot()))
1119-
.isCompletedWithValue(blobSidecars);
1114+
assertThat(localRecentChainData.getBlobSidecars(beaconBlock.getSlotAndBlockRoot()))
1115+
.contains(blobSidecars);
11201116
}
11211117

11221118
private void assertThatNothingStoredForSlotRoot(final SlotAndBlockRoot slotAndBlockRoot) {
11231119
assertThat(localRecentChainData.retrieveBlockByRoot(slotAndBlockRoot.getBlockRoot()))
11241120
.isCompletedWithValueMatching(Optional::isEmpty);
1125-
assertThat(localRecentChainData.retrieveBlobSidecars(slotAndBlockRoot))
1126-
.isCompletedWithValueMatching(List::isEmpty);
1121+
assertThat(localRecentChainData.getBlobSidecars(slotAndBlockRoot)).isEmpty();
11271122
}
11281123

11291124
private void assertImportBlockWithResult(

networking/eth2/src/integration-test/java/tech/pegasys/teku/networking/eth2/AbstractRpcMethodIntegrationTest.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@
1919
import java.util.Collection;
2020
import java.util.List;
2121
import java.util.Optional;
22-
import java.util.stream.Collectors;
2322
import java.util.stream.Stream;
2423
import org.junit.jupiter.api.AfterEach;
2524
import org.junit.jupiter.params.provider.Arguments;
@@ -261,12 +260,13 @@ protected List<BlobSidecar> retrieveCanonicalBlobSidecarsFromPeerStorage(
261260
.flatMap(Optional::stream)
262261
.map(this::safeRetrieveBlobSidecars)
263262
.flatMap(Collection::stream)
264-
.collect(Collectors.toUnmodifiableList());
263+
.toList();
265264
}
266265

267266
private List<BlobSidecar> safeRetrieveBlobSidecars(final SlotAndBlockRoot slotAndBlockRoot) {
268267
try {
269-
return Waiter.waitFor(peerStorage.recentChainData().retrieveBlobSidecars(slotAndBlockRoot));
268+
return Waiter.waitFor(
269+
peerStorage.chainStorage().getBlobSidecarsBySlotAndBlockRoot(slotAndBlockRoot));
270270
} catch (Exception e) {
271271
throw new RuntimeException(e);
272272
}

storage/src/main/java/tech/pegasys/teku/storage/client/CombinedChainDataClient.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -178,6 +178,11 @@ public SafeFuture<List<BlobSidecar>> getBlobSidecars(
178178

179179
public SafeFuture<List<BlobSidecar>> getBlobSidecars(
180180
final SlotAndBlockRoot slotAndBlockRoot, final List<UInt64> indices) {
181+
final Optional<List<BlobSidecar>> maybeBlobSidecars =
182+
recentChainData.getBlobSidecars(slotAndBlockRoot);
183+
if (maybeBlobSidecars.isPresent()) {
184+
return SafeFuture.completedFuture(filterBlobSidecars(maybeBlobSidecars.get(), indices));
185+
}
181186
return historicalChainData
182187
.getBlobSidecarKeys(slotAndBlockRoot)
183188
.thenApply(keys -> filterBlobSidecarKeys(keys, indices))
@@ -192,6 +197,14 @@ public SafeFuture<List<BlobSidecar>> getAllBlobSidecars(
192197
.thenCompose(this::getAllBlobSidecars);
193198
}
194199

200+
private List<BlobSidecar> filterBlobSidecars(
201+
final List<BlobSidecar> blobSidecars, final List<UInt64> indices) {
202+
if (indices.isEmpty()) {
203+
return blobSidecars;
204+
}
205+
return blobSidecars.stream().filter(key -> indices.contains(key.getIndex())).toList();
206+
}
207+
195208
private Stream<SlotAndBlockRootAndBlobIndex> filterBlobSidecarKeys(
196209
final List<SlotAndBlockRootAndBlobIndex> keys, final List<UInt64> indices) {
197210
if (indices.isEmpty()) {
@@ -569,6 +582,14 @@ public SafeFuture<Optional<BlobSidecar>> getBlobSidecarByBlockRootAndIndex(
569582

570583
public SafeFuture<Optional<BlobSidecar>> getBlobSidecarByKey(
571584
final SlotAndBlockRootAndBlobIndex key) {
585+
final Optional<List<BlobSidecar>> maybeBlobSidecars =
586+
recentChainData.getBlobSidecars(key.getSlotAndBlockRoot());
587+
if (maybeBlobSidecars.isPresent()) {
588+
return key.getBlobIndex().isLessThan(maybeBlobSidecars.get().size())
589+
? SafeFuture.completedFuture(
590+
Optional.of(maybeBlobSidecars.get().get(key.getBlobIndex().intValue())))
591+
: SafeFuture.completedFuture(Optional.empty());
592+
}
572593
return historicalChainData.getBlobSidecar(key);
573594
}
574595

storage/src/main/java/tech/pegasys/teku/storage/client/RecentChainData.java

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
import org.apache.tuweni.bytes.Bytes32;
2929
import org.hyperledger.besu.plugin.services.MetricsSystem;
3030
import org.hyperledger.besu.plugin.services.metrics.Counter;
31-
import tech.pegasys.teku.dataproviders.lookup.BlobSidecarsProvider;
3231
import tech.pegasys.teku.dataproviders.lookup.BlockProvider;
3332
import tech.pegasys.teku.dataproviders.lookup.EarliestBlobSidecarSlotProvider;
3433
import tech.pegasys.teku.dataproviders.lookup.StateAndBlockSummaryProvider;
@@ -77,7 +76,6 @@ public abstract class RecentChainData implements StoreUpdateHandler {
7776

7877
private final BlockProvider blockProvider;
7978
private final StateAndBlockSummaryProvider stateProvider;
80-
private final BlobSidecarsProvider blobSidecarsProvider;
8179
private final EarliestBlobSidecarSlotProvider earliestBlobSidecarSlotProvider;
8280
protected final FinalizedCheckpointChannel finalizedCheckpointChannel;
8381
protected final StorageUpdateChannel storageUpdateChannel;
@@ -106,7 +104,6 @@ public abstract class RecentChainData implements StoreUpdateHandler {
106104
final StoreConfig storeConfig,
107105
final BlockProvider blockProvider,
108106
final StateAndBlockSummaryProvider stateProvider,
109-
final BlobSidecarsProvider blobSidecarsProvider,
110107
final EarliestBlobSidecarSlotProvider earliestBlobSidecarSlotProvider,
111108
final StorageUpdateChannel storageUpdateChannel,
112109
final VoteUpdateChannel voteUpdateChannel,
@@ -118,7 +115,6 @@ public abstract class RecentChainData implements StoreUpdateHandler {
118115
this.storeConfig = storeConfig;
119116
this.blockProvider = blockProvider;
120117
this.stateProvider = stateProvider;
121-
this.blobSidecarsProvider = blobSidecarsProvider;
122118
this.earliestBlobSidecarSlotProvider = earliestBlobSidecarSlotProvider;
123119
this.voteUpdateChannel = voteUpdateChannel;
124120
this.chainHeadChannel = chainHeadChannel;
@@ -154,7 +150,6 @@ public void initializeFromAnchorPoint(final AnchorPoint anchorPoint, final UInt6
154150
.specProvider(spec)
155151
.blockProvider(blockProvider)
156152
.stateProvider(stateProvider)
157-
.blobSidecarsProvider(blobSidecarsProvider)
158153
.earliestBlobSidecarSlotProvider(earliestBlobSidecarSlotProvider)
159154
.storeConfig(storeConfig)
160155
.build();
@@ -495,6 +490,11 @@ public Optional<Bytes32> getExecutionBlockHashForBlockRoot(final Bytes32 root) {
495490
return getForkChoiceStrategy().flatMap(forkChoice -> forkChoice.executionBlockHash(root));
496491
}
497492

493+
public Optional<List<BlobSidecar>> getBlobSidecars(final SlotAndBlockRoot slotAndBlockRoot) {
494+
return Optional.ofNullable(store)
495+
.flatMap(s -> store.getBlobSidecarsIfAvailable(slotAndBlockRoot));
496+
}
497+
498498
public SafeFuture<Optional<BeaconBlock>> retrieveBlockByRoot(final Bytes32 root) {
499499
if (store == null) {
500500
return EmptyStoreResults.EMPTY_BLOCK_FUTURE;
@@ -532,14 +532,6 @@ public SafeFuture<Optional<BeaconState>> retrieveStateInEffectAtSlot(final UInt6
532532
return store.retrieveBlockState(rootAtSlot.get());
533533
}
534534

535-
public SafeFuture<List<BlobSidecar>> retrieveBlobSidecars(
536-
final SlotAndBlockRoot slotAndBlockRoot) {
537-
if (store == null) {
538-
return EmptyStoreResults.NO_BLOB_SIDECARS_FUTURE;
539-
}
540-
return store.retrieveBlobSidecars(slotAndBlockRoot);
541-
}
542-
543535
public SafeFuture<Optional<UInt64>> retrieveEarliestBlobSidecarSlot() {
544536
if (store == null) {
545537
return EmptyStoreResults.NO_EARLIEST_BLOB_SIDECAR_SLOT_FUTURE;

storage/src/main/java/tech/pegasys/teku/storage/client/StorageBackedRecentChainData.java

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@
2222
import org.apache.logging.log4j.LogManager;
2323
import org.apache.logging.log4j.Logger;
2424
import org.hyperledger.besu.plugin.services.MetricsSystem;
25-
import tech.pegasys.teku.dataproviders.lookup.BlobSidecarsProvider;
2625
import tech.pegasys.teku.dataproviders.lookup.BlockProvider;
2726
import tech.pegasys.teku.dataproviders.lookup.StateAndBlockSummaryProvider;
2827
import tech.pegasys.teku.infrastructure.async.AsyncRunner;
@@ -43,7 +42,6 @@ public class StorageBackedRecentChainData extends RecentChainData {
4342
private static final Logger LOG = LogManager.getLogger();
4443
private final BlockProvider blockProvider;
4544
private final StateAndBlockSummaryProvider stateProvider;
46-
private final BlobSidecarsProvider blobSidecarsProvider;
4745
private final StorageQueryChannel storageQueryChannel;
4846
private final StoreConfig storeConfig;
4947

@@ -63,7 +61,6 @@ public StorageBackedRecentChainData(
6361
storeConfig,
6462
storageQueryChannel::getHotBlocksByRoot,
6563
storageQueryChannel::getHotStateAndBlockSummaryByBlockRoot,
66-
storageQueryChannel::getBlobSidecarsBySlotAndBlockRoot,
6764
storageQueryChannel::getEarliestAvailableBlobSidecarSlot,
6865
storageUpdateChannel,
6966
voteUpdateChannel,
@@ -74,7 +71,6 @@ public StorageBackedRecentChainData(
7471
this.storageQueryChannel = storageQueryChannel;
7572
this.blockProvider = storageQueryChannel::getHotBlocksByRoot;
7673
this.stateProvider = storageQueryChannel::getHotStateAndBlockSummaryByBlockRoot;
77-
this.blobSidecarsProvider = storageQueryChannel::getBlobSidecarsBySlotAndBlockRoot;
7874
}
7975

8076
public static SafeFuture<RecentChainData> create(
@@ -158,7 +154,6 @@ private SafeFuture<RecentChainData> processStoreFuture(
158154
.asyncRunner(asyncRunner)
159155
.blockProvider(blockProvider)
160156
.stateProvider(stateProvider)
161-
.blobSidecarsProvider(blobSidecarsProvider)
162157
.storeConfig(storeConfig)
163158
.build();
164159
setStore(store);

0 commit comments

Comments
 (0)