Skip to content

Commit 229da68

Browse files
committed
feat(block): async epoch fetching
1 parent 66b491b commit 229da68

File tree

11 files changed

+1035
-32
lines changed

11 files changed

+1035
-32
lines changed

apps/evm/cmd/run.go

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -167,7 +167,18 @@ func createSequencer(
167167
return nil, fmt.Errorf("based sequencer mode requires aggregator mode to be enabled")
168168
}
169169

170-
fiRetriever := block.NewForcedInclusionRetriever(daClient, logger, genesis.DAStartHeight, genesis.DAEpochForcedInclusion)
170+
// Create async epoch fetcher for background prefetching
171+
asyncFetcher := block.NewAsyncEpochFetcher(
172+
daClient,
173+
logger,
174+
genesis.DAStartHeight,
175+
genesis.DAEpochForcedInclusion,
176+
2, // prefetch 2 epochs ahead for based sequencer
177+
1*time.Second, // check frequently
178+
)
179+
asyncFetcher.Start()
180+
181+
fiRetriever := block.NewForcedInclusionRetriever(daClient, logger, genesis.DAStartHeight, genesis.DAEpochForcedInclusion, asyncFetcher)
171182
basedSeq, err := based.NewBasedSequencer(fiRetriever, datastore, genesis, logger)
172183
if err != nil {
173184
return nil, fmt.Errorf("failed to create based sequencer: %w", err)

apps/grpc/cmd/run.go

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"context"
55
"fmt"
66
"path/filepath"
7+
"time"
78

89
"github.com/ipfs/go-datastore"
910
"github.com/rs/zerolog"
@@ -127,7 +128,18 @@ func createSequencer(
127128
return nil, fmt.Errorf("based sequencer mode requires aggregator mode to be enabled")
128129
}
129130

130-
fiRetriever := block.NewForcedInclusionRetriever(daClient, logger, genesis.DAStartHeight, genesis.DAEpochForcedInclusion)
131+
// Create async epoch fetcher for background prefetching
132+
asyncFetcher := block.NewAsyncEpochFetcher(
133+
daClient,
134+
logger,
135+
genesis.DAStartHeight,
136+
genesis.DAEpochForcedInclusion,
137+
2, // prefetch 2 epochs ahead for based sequencer
138+
1*time.Second, // check frequently
139+
)
140+
asyncFetcher.Start()
141+
142+
fiRetriever := block.NewForcedInclusionRetriever(daClient, logger, genesis.DAStartHeight, genesis.DAEpochForcedInclusion, asyncFetcher)
131143
basedSeq, err := based.NewBasedSequencer(fiRetriever, datastore, genesis, logger)
132144
if err != nil {
133145
return nil, fmt.Errorf("failed to create based sequencer: %w", err)

apps/testapp/cmd/run.go

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"context"
55
"fmt"
66
"path/filepath"
7+
"time"
78

89
"github.com/ipfs/go-datastore"
910
"github.com/rs/zerolog"
@@ -128,7 +129,18 @@ func createSequencer(
128129
return nil, fmt.Errorf("based sequencer mode requires aggregator mode to be enabled")
129130
}
130131

131-
fiRetriever := block.NewForcedInclusionRetriever(daClient, logger, genesis.DAStartHeight, genesis.DAEpochForcedInclusion)
132+
// Create async epoch fetcher for background prefetching
133+
asyncFetcher := block.NewAsyncEpochFetcher(
134+
daClient,
135+
logger,
136+
genesis.DAStartHeight,
137+
genesis.DAEpochForcedInclusion,
138+
2, // prefetch 2 epochs ahead for based sequencer
139+
1*time.Second, // check frequently
140+
)
141+
asyncFetcher.Start()
142+
143+
fiRetriever := block.NewForcedInclusionRetriever(daClient, logger, genesis.DAStartHeight, genesis.DAEpochForcedInclusion, asyncFetcher)
132144
basedSeq, err := based.NewBasedSequencer(fiRetriever, datastore, genesis, logger)
133145
if err != nil {
134146
return nil, fmt.Errorf("failed to create based sequencer: %w", err)

0 commit comments

Comments
 (0)