diff --git a/cmd/run.go b/cmd/run.go index 28b3f3631b..4f53f36e0a 100644 --- a/cmd/run.go +++ b/cmd/run.go @@ -609,7 +609,7 @@ func newState(ctx context.Context, c *config.Config, etherman *etherman.Client, st.UpdateForkIDIntervalsInMemory(forkIDIntervals) currentForkID := forkIDIntervals[len(forkIDIntervals)-1].ForkId - log.Infof("Fork ID read from POE SC = %v", forkIDIntervals[len(forkIDIntervals)-1].ForkId) + log.Infof("Fork ID read from POE SC = %v", currentForkID) return st, currentForkID } @@ -763,14 +763,32 @@ func forkIDIntervals(ctx context.Context, st *state.State, etherman *etherman.Cl } forkIDIntervals = forkIntervals } else { - log.Debug("Getting initial forkID") - forkIntervals, err := etherman.GetForks(ctx, genesisBlockNumber, genesisBlockNumber) + log.Debug("Getting all forkIDs") + + // Get last L1 block number + bn, err := etherman.GetLatestBlockNumber(ctx) + if err != nil { + return []state.ForkIDInterval{}, fmt.Errorf("error getting latest block number. Error: %v", err) + } + + // Get all forkIDs since genesis + forkIntervals, err := etherman.GetForks(ctx, genesisBlockNumber, bn) if err != nil { return []state.ForkIDInterval{}, fmt.Errorf("error getting forks. Please check the configuration. Error: %v", err) } else if len(forkIntervals) == 0 { return []state.ForkIDInterval{}, fmt.Errorf("error: no forkID received. It should receive at least one, please check the configuration...") } forkIDIntervals = forkIntervals + + log.Debugf("Retrieved %d forkIDs", len(forkIDIntervals)) + + log.Debug("Adding forkIDs to db and memory") + for _, forkID := range forkIDIntervals { + err = st.AddForkIDInterval(ctx, forkID, nil) + if err != nil { + log.Fatal("error adding forkID to db. Error: ", err) + } + } } } return forkIDIntervals, nil