diff --git a/packages/txm/lib/BlockMonitor.ts b/packages/txm/lib/BlockMonitor.ts index 85ec57541c..f3dc88fd08 100644 --- a/packages/txm/lib/BlockMonitor.ts +++ b/packages/txm/lib/BlockMonitor.ts @@ -18,6 +18,7 @@ export class BlockMonitor { private txmgr: TransactionManager private unwatch: (() => void) | undefined private blockTimeout: ReturnType | undefined + private latestProcessedBlockNumber: bigint | undefined constructor(_transactionManager: TransactionManager) { this.txmgr = _transactionManager } @@ -27,10 +28,6 @@ export class BlockMonitor { this.unwatch = this.txmgr.viemClient.watchBlocks({ onBlock: this.onNewBlock.bind(this), ...(this.txmgr.transportProtocol === "http" ? { pollingInterval: this.txmgr.pollingInterval } : {}), - onError: (error) => { - Logger.instance.error(LogTag.TXM, "Error watching blocks", error) - this.resetBlockSubscription() - }, }) } @@ -40,6 +37,16 @@ export class BlockMonitor { return } + if (this.latestProcessedBlockNumber && block.number <= this.latestProcessedBlockNumber) { + Logger.instance.warn( + LogTag.TXM, + "Received block number less than or equal to latest processed block number. Skipping.", + ) + return + } + + this.latestProcessedBlockNumber = block.number + if (this.blockTimeout) clearTimeout(this.blockTimeout) eventBus.emit(Topics.NewBlock, block)