From a772947837be30cde5806f2a20c4fdc124f043e2 Mon Sep 17 00:00:00 2001 From: cby3149 Date: Wed, 6 Oct 2021 09:44:15 -0700 Subject: [PATCH 1/2] Fix nonce issue --- packages/message-relayer/src/service.ts | 5 +++-- packages/omgx/message-relayer-fast/src/service.ts | 4 +++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/packages/message-relayer/src/service.ts b/packages/message-relayer/src/service.ts index 06da52a07cb6d..6a26b071d4601 100644 --- a/packages/message-relayer/src/service.ts +++ b/packages/message-relayer/src/service.ts @@ -772,11 +772,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..37e454f71ac5a 100644 --- a/packages/omgx/message-relayer-fast/src/service.ts +++ b/packages/omgx/message-relayer-fast/src/service.ts @@ -767,9 +767,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 From 9ba62e2b1a0ae736b6f423a04af9bb347ce7ac79 Mon Sep 17 00:00:00 2001 From: cby3149 Date: Wed, 6 Oct 2021 10:00:31 -0700 Subject: [PATCH 2/2] Avoid submitting again --- packages/message-relayer/src/service.ts | 17 ++++++++--------- .../omgx/message-relayer-fast/src/service.ts | 17 ++++++++--------- 2 files changed, 16 insertions(+), 18 deletions(-) diff --git a/packages/message-relayer/src/service.ts b/packages/message-relayer/src/service.ts index 6a26b071d4601..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() } diff --git a/packages/omgx/message-relayer-fast/src/service.ts b/packages/omgx/message-relayer-fast/src/service.ts index 37e454f71ac5a..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() }