From 36022b8873541ed669b6a7b13f62d5c3cb9d7504 Mon Sep 17 00:00:00 2001 From: bruce-riley <96066700+bruce-riley@users.noreply.github.com> Date: Thu, 2 Nov 2023 11:43:04 -0500 Subject: [PATCH] Node/EVM: Add timestamp to block (#3490) --- node/pkg/watchers/evm/connectors/batch_poller.go | 2 ++ node/pkg/watchers/evm/connectors/common.go | 2 ++ .../watchers/evm/connectors/instant_finality.go | 16 +++++----------- node/pkg/watchers/evm/connectors/poller.go | 1 + node/pkg/watchers/evm/connectors/polygon.go | 1 + node/pkg/watchers/evm/watcher.go | 1 + 6 files changed, 12 insertions(+), 11 deletions(-) diff --git a/node/pkg/watchers/evm/connectors/batch_poller.go b/node/pkg/watchers/evm/connectors/batch_poller.go index 8de6fc7d9..77039f0c7 100644 --- a/node/pkg/watchers/evm/connectors/batch_poller.go +++ b/node/pkg/watchers/evm/connectors/batch_poller.go @@ -219,6 +219,7 @@ func (b *BatchPollConnector) getBlocks(ctx context.Context, logger *zap.Logger) ret[idx] = &NewBlock{ Number: &n, + Time: uint64(m.Time), Hash: m.Hash, L1BlockNumber: l1bn, Finality: finality, @@ -276,6 +277,7 @@ func (b *BatchPollConnector) getBlockRange(ctx context.Context, logger *zap.Logg ret[idx] = &NewBlock{ Number: &n, + Time: uint64(m.Time), Hash: m.Hash, L1BlockNumber: l1bn, Finality: finality, diff --git a/node/pkg/watchers/evm/connectors/common.go b/node/pkg/watchers/evm/connectors/common.go index dc6618ced..2d5949e35 100644 --- a/node/pkg/watchers/evm/connectors/common.go +++ b/node/pkg/watchers/evm/connectors/common.go @@ -30,6 +30,7 @@ type BlockMarshaller struct { type NewBlock struct { Number *big.Int Hash common.Hash + Time uint64 L1BlockNumber *big.Int // This is only populated on some chains (Arbitrum) Finality FinalityLevel } @@ -38,6 +39,7 @@ func (b *NewBlock) Copy(f FinalityLevel) *NewBlock { return &NewBlock{ Number: b.Number, Hash: b.Hash, + Time: b.Time, L1BlockNumber: b.L1BlockNumber, Finality: f, } diff --git a/node/pkg/watchers/evm/connectors/instant_finality.go b/node/pkg/watchers/evm/connectors/instant_finality.go index 0c9b76c91..83680f87e 100644 --- a/node/pkg/watchers/evm/connectors/instant_finality.go +++ b/node/pkg/watchers/evm/connectors/instant_finality.go @@ -47,21 +47,15 @@ func (c *InstantFinalityConnector) SubscribeForBlocks(ctx context.Context, errC c.logger.Error("new header block number is nil") continue } - sink <- &NewBlock{ + block := &NewBlock{ Number: ev.Number, + Time: ev.Time, Hash: ev.Hash(), Finality: Finalized, } - sink <- &NewBlock{ - Number: ev.Number, - Hash: ev.Hash(), - Finality: Safe, - } - sink <- &NewBlock{ - Number: ev.Number, - Hash: ev.Hash(), - Finality: Latest, - } + sink <- block + sink <- block.Copy(Safe) + sink <- block.Copy(Latest) } } }) diff --git a/node/pkg/watchers/evm/connectors/poller.go b/node/pkg/watchers/evm/connectors/poller.go index af2aeedc2..f3940056f 100644 --- a/node/pkg/watchers/evm/connectors/poller.go +++ b/node/pkg/watchers/evm/connectors/poller.go @@ -232,6 +232,7 @@ func getBlock(ctx context.Context, logger *zap.Logger, conn Connector, str strin return &NewBlock{ Number: &n, + Time: uint64(m.Time), Hash: m.Hash, L1BlockNumber: l1bn, Finality: blockFinality, diff --git a/node/pkg/watchers/evm/connectors/polygon.go b/node/pkg/watchers/evm/connectors/polygon.go index 6b6a102b0..8daff658f 100644 --- a/node/pkg/watchers/evm/connectors/polygon.go +++ b/node/pkg/watchers/evm/connectors/polygon.go @@ -147,6 +147,7 @@ func (c *PolygonConnector) SubscribeForBlocks(ctx context.Context, errC chan err } sink <- &NewBlock{ Number: ev.Number, + Time: ev.Time, Hash: ev.Hash(), Finality: Latest, } diff --git a/node/pkg/watchers/evm/watcher.go b/node/pkg/watchers/evm/watcher.go index a7491a7a8..17eb4fb1e 100644 --- a/node/pkg/watchers/evm/watcher.go +++ b/node/pkg/watchers/evm/watcher.go @@ -604,6 +604,7 @@ func (w *Watcher) Run(parentCtx context.Context) error { currentHash := ev.Hash logger.Debug("processing new header", zap.Stringer("current_block", ev.Number), + zap.Uint64("block_time", ev.Time), zap.Stringer("current_blockhash", currentHash), zap.Stringer("finality", ev.Finality), zap.String("eth_network", w.networkName))