diff --git a/.changeset/pink-frogs-report.md b/.changeset/pink-frogs-report.md new file mode 100644 index 0000000000000..d7d043571dbaa --- /dev/null +++ b/.changeset/pink-frogs-report.md @@ -0,0 +1,5 @@ +--- +'@eth-optimism/batch-submitter': patch +--- + +Properly clear state root batch txs on startup diff --git a/packages/batch-submitter/src/exec/run-batch-submitter.ts b/packages/batch-submitter/src/exec/run-batch-submitter.ts index e9fb9e399a8c9..f7ba17dead3f8 100644 --- a/packages/batch-submitter/src/exec/run-batch-submitter.ts +++ b/packages/batch-submitter/src/exec/run-batch-submitter.ts @@ -430,20 +430,21 @@ export const run = async () => { // Loops infinitely! const loop = async ( - func: () => Promise + func: () => Promise, + signer: Signer ): Promise => { // Clear all pending transactions if (clearPendingTxs) { try { - const pendingTxs = await sequencerSigner.getTransactionCount('pending') - const latestTxs = await sequencerSigner.getTransactionCount('latest') + const pendingTxs = await signer.getTransactionCount('pending') + const latestTxs = await signer.getTransactionCount('latest') if (pendingTxs > latestTxs) { logger.info( 'Detected pending transactions. Clearing all transactions!' ) for (let i = latestTxs; i < pendingTxs; i++) { - const response = await sequencerSigner.sendTransaction({ - to: await sequencerSigner.getAddress(), + const response = await signer.sendTransaction({ + to: await signer.getAddress(), value: 0, nonce: i, }) @@ -456,7 +457,7 @@ export const run = async () => { logger.debug('empty transaction data', { data: response.data, }) - await sequencerSigner.provider.waitForTransaction( + await signer.provider.waitForTransaction( response.hash, requiredEnvVars.NUM_CONFIRMATIONS ) @@ -508,10 +509,10 @@ export const run = async () => { // Run batch submitters in two seperate infinite loops! if (requiredEnvVars.RUN_TX_BATCH_SUBMITTER) { - loop(() => txBatchSubmitter.submitNextBatch()) + loop(() => txBatchSubmitter.submitNextBatch(), sequencerSigner) } if (requiredEnvVars.RUN_STATE_BATCH_SUBMITTER) { - loop(() => stateBatchSubmitter.submitNextBatch()) + loop(() => stateBatchSubmitter.submitNextBatch(), proposerSigner) } if (config.bool('run-metrics-server', env.RUN_METRICS_SERVER === 'true')) {