diff --git a/packages/message-relayer/src/service.ts b/packages/message-relayer/src/service.ts index 06da52a07cb6d..b4ce52fcf8aa4 100644 --- a/packages/message-relayer/src/service.ts +++ b/packages/message-relayer/src/service.ts @@ -257,15 +257,6 @@ export class MessageRelayerService extends BaseService { console.log('Buffer timeout: flushing') } - const receipt = await this._relayMultiMessageToL1( - this.state.messageBuffer.reduce((acc, cur) => { - acc.push(cur.payload) - return acc - }, []) - ) - - console.log('Receipt:', receipt) - /* parse this to make sure that the mesaage was actually relayed */ // clear out buffer only if the messages are relayed to L1 successfully if ( @@ -281,6 +272,14 @@ export class MessageRelayerService extends BaseService { this.state.messageBuffer = [] this.state.timeOfLastPendingRelay = false } else { + const receipt = await this._relayMultiMessageToL1( + this.state.messageBuffer.reduce((acc, cur) => { + acc.push(cur.payload) + return acc + }, []) + ) + + console.log('Receipt:', receipt) // add the time interval between two tx this.state.timeOfLastPendingRelay = Date.now() } @@ -772,11 +771,12 @@ export class MessageRelayerService extends BaseService { private async _relayMultiMessageToL1( messages: Array ): Promise { - const sendTxAndWaitForReceipt = async (gasPrice): Promise => { + // Generate the transaction we will repeatedly submit + const nonce = await this.options.l1Wallet.getTransactionCount() const txResponse = await this.state.OVM_L1MultiMessageRelayer.connect( this.options.l1Wallet - ).batchRelayMessages(messages, { gasPrice }) + ).batchRelayMessages(messages, { gasPrice, nonce }) const tx = await this.options.l1Wallet.provider.waitForTransaction( txResponse.hash, this.options.numConfirmations diff --git a/packages/omgx/message-relayer-fast/src/service.ts b/packages/omgx/message-relayer-fast/src/service.ts index dd2c36815af22..da0d38ce32664 100644 --- a/packages/omgx/message-relayer-fast/src/service.ts +++ b/packages/omgx/message-relayer-fast/src/service.ts @@ -261,15 +261,6 @@ export class MessageRelayerService extends BaseService { console.log('Buffer timeout: flushing') } - const receipt = await this._relayMultiMessageToL1( - this.state.messageBuffer.reduce((acc, cur) => { - acc.push(cur.payload) - return acc - }, []) - ) - - console.log('Receipt:', receipt) - /* parse this to make sure that the mesaage was actually relayed */ // clear out buffer only if the messages are relayed to L1 successfully if ( @@ -285,6 +276,14 @@ export class MessageRelayerService extends BaseService { this.state.messageBuffer = [] this.state.timeOfLastPendingRelay = false } else { + const receipt = await this._relayMultiMessageToL1( + this.state.messageBuffer.reduce((acc, cur) => { + acc.push(cur.payload) + return acc + }, []) + ) + + console.log('Receipt:', receipt) // add the time interval between two tx this.state.timeOfLastPendingRelay = Date.now() } @@ -767,9 +766,11 @@ export class MessageRelayerService extends BaseService { ): Promise { const sendTxAndWaitForReceipt = async (gasPrice): Promise => { + // Generate the transaction we will repeatedly submit + const nonce = await this.options.l1Wallet.getTransactionCount() const txResponse = await this.state.OVM_L1MultiMessageRelayerFast.connect( this.options.l1Wallet - ).batchRelayMessages(messages, { gasPrice }) + ).batchRelayMessages(messages, { gasPrice, nonce }) const tx = await this.options.l1Wallet.provider.waitForTransaction( txResponse.hash, this.options.numConfirmations