feat(l1 follower): add periodic logs for L1 follower mode sync progress (#1110)

* add periodic logs for L1 follower mode sync progress

* print full hex string

* bump version

---------

Co-authored-by: Péter Garamvölgyi <peter@scroll.io>
This commit is contained in:
Jonas Theis 2025-02-04 21:02:17 +08:00 committed by GitHub
parent d2f19ff58e
commit 8ecaeec8b8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
6 changed files with 24 additions and 2 deletions

View file

@ -24,7 +24,7 @@ import (
const (
VersionMajor = 5 // Major version component of the current release
VersionMinor = 8 // Minor version component of the current release
VersionPatch = 2 // Patch version component of the current release
VersionPatch = 3 // Patch version component of the current release
VersionMeta = "mainnet" // Version metadata to append to the version string
)

View file

@ -85,6 +85,10 @@ func (ds *CalldataBlobSource) L1Height() uint64 {
return ds.l1Height
}
func (ds *CalldataBlobSource) L1Finalized() uint64 {
return ds.l1Finalized
}
func (ds *CalldataBlobSource) processRollupEventsToDA(rollupEvents l1.RollupEvents) (Entries, error) {
var entries Entries
var entry Entry

View file

@ -69,6 +69,10 @@ func (dq *DAQueue) getNextData(ctx context.Context) error {
return err
}
func (dq *DAQueue) DataSource() DataSource {
return dq.dataSource
}
func (dq *DAQueue) Reset(height uint64) {
dq.l1height = height
dq.dataSource = nil

View file

@ -46,7 +46,7 @@ func (s *DASyncer) SyncOneBlock(block *da.PartialBlock) error {
}
if s.blockchain.CurrentBlock().Number().Uint64()%1000 == 0 {
log.Info("L1 sync progress", "blockchain height", s.blockchain.CurrentBlock().Number().Uint64(), "block hash", s.blockchain.CurrentBlock().Hash(), "root", s.blockchain.CurrentBlock().Root())
log.Info("L1 sync progress", "blockchain height", s.blockchain.CurrentBlock().Number().Uint64(), "block hash", s.blockchain.CurrentBlock().Hash().Hex(), "root", s.blockchain.CurrentBlock().Root().Hex())
}
return nil

View file

@ -14,6 +14,7 @@ import (
type DataSource interface {
NextData() (da.Entries, error)
L1Height() uint64
L1Finalized() uint64
}
type DataSourceFactory struct {

View file

@ -39,6 +39,7 @@ type SyncingPipeline struct {
blockchain *core.BlockChain
blockQueue *BlockQueue
daSyncer *DASyncer
daQueue *DAQueue
}
func NewSyncingPipeline(ctx context.Context, blockchain *core.BlockChain, genesisConfig *params.ChainConfig, db ethdb.Database, ethClient l1.Client, l1DeploymentBlock uint64, config Config) (*SyncingPipeline, error) {
@ -92,6 +93,7 @@ func NewSyncingPipeline(ctx context.Context, blockchain *core.BlockChain, genesi
blockchain: blockchain,
blockQueue: blockQueue,
daSyncer: daSyncer,
daQueue: daQueue,
}, nil
}
@ -115,6 +117,9 @@ func (s *SyncingPipeline) Start() {
}
func (s *SyncingPipeline) mainLoop() {
progressTicker := time.NewTicker(1 * time.Minute)
defer progressTicker.Stop()
stepCh := make(chan struct{}, 1)
var delayedStepCh <-chan time.Time
var resetCounter int
@ -152,6 +157,14 @@ func (s *SyncingPipeline) mainLoop() {
select {
case <-s.ctx.Done():
return
case <-progressTicker.C:
currentBlock := s.blockchain.CurrentBlock()
dataSource := s.daQueue.DataSource()
if dataSource != nil {
log.Info("L1 sync progress", "L1 processed", dataSource.L1Height(), "L1 finalized", dataSource.L1Finalized(), "progress(%)", float64(dataSource.L1Height())/float64(dataSource.L1Finalized())*100, "L2 height", currentBlock.Number().Uint64(), "L2 hash", currentBlock.Hash().Hex())
} else {
log.Info("L1 sync progress", "blockchain height", currentBlock.Number().Uint64(), "block hash", currentBlock.Hash().Hex())
}
case <-delayedStepCh:
delayedStepCh = nil
reqStep(false)