github.com/0xPolygon/supernets2-node@v0.0.0-20230711153321-2fe574524eaa/state/forkid.go (about) 1 package state 2 3 import "github.com/0xPolygon/supernets2-node/log" 4 5 // ForkIDInterval is a fork id interval 6 type ForkIDInterval struct { 7 FromBatchNumber uint64 8 ToBatchNumber uint64 9 ForkId uint64 10 Version string 11 } 12 13 // UpdateForkIDIntervals updates the forkID intervals 14 func (s *State) UpdateForkIDIntervals(intervals []ForkIDInterval) { 15 log.Infof("Updating forkIDs. Setting %d forkIDs", len(intervals)) 16 s.cfg.ForkIDIntervals = intervals 17 } 18 19 // GetForkIDByBatchNumber returns the fork id for a given batch number 20 func GetForkIDByBatchNumber(intervals []ForkIDInterval, batchNumber uint64) uint64 { 21 for _, interval := range intervals { 22 if batchNumber >= interval.FromBatchNumber && batchNumber <= interval.ToBatchNumber { 23 return interval.ForkId 24 } 25 } 26 27 // If not found return the last fork id 28 return intervals[len(intervals)-1].ForkId 29 } 30 31 // GetForkIDByBatchNumber returns the fork id for the given batch number 32 func (s *State) GetForkIDByBatchNumber(batchNumber uint64) uint64 { 33 return GetForkIDByBatchNumber(s.cfg.ForkIDIntervals, batchNumber) 34 }