diff --git a/core/constants.go b/core/constants.go index d9cbf3fe..3abc6faa 100644 --- a/core/constants.go +++ b/core/constants.go @@ -23,3 +23,6 @@ var DefaultWaitTime = 1 var DefaultGasLimit = 2 var DefaultRPCTimeout = 10 var DefaultLogLevel = "" + +//BlockNumberInterval is the interval in seconds after which blockNumber needs to be calculated again +var BlockNumberInterval = 5 diff --git a/logger/logger.go b/logger/logger.go index eb5b46a6..10b23405 100644 --- a/logger/logger.go +++ b/logger/logger.go @@ -15,6 +15,7 @@ import ( "razor/core" "razor/path" "runtime" + "time" ) type StandardLogger struct { @@ -28,6 +29,7 @@ var Epoch uint32 var BlockNumber *big.Int var FileName string var Client *ethclient.Client +var lastBlockNumberTimestamp time.Time func init() { path.PathUtilsInterface = &path.PathUtils{} @@ -168,16 +170,20 @@ func (logger *StandardLogger) Fatalf(format string, args ...interface{}) { } func SetEpochAndBlockNumber(client *ethclient.Client) { - if client != nil { - latestHeader, err := client.HeaderByNumber(context.Background(), nil) - if err != nil { - log.Error("Error in fetching block: ", err) - return + elapsedTime := time.Since(lastBlockNumberTimestamp).Seconds() + if elapsedTime > float64(core.BlockNumberInterval) { + if client != nil { + latestHeader, err := client.HeaderByNumber(context.Background(), nil) + if err != nil { + log.Error("Error in fetching block: ", err) + return + } + BlockNumber = latestHeader.Number + + epoch := latestHeader.Time / uint64(core.EpochLength) + Epoch = uint32(epoch) + lastBlockNumberTimestamp = time.Now() } - BlockNumber = latestHeader.Number - - epoch := latestHeader.Time / uint64(core.EpochLength) - Epoch = uint32(epoch) } }