From 477a35d0c77e219811fe6d0962054f12b3e9bc60 Mon Sep 17 00:00:00 2001 From: CAPtheorem <79423264+CAPtheorem@users.noreply.github.com> Date: Wed, 15 Sep 2021 13:54:41 -0700 Subject: [PATCH 1/3] use StaticJsonRpcProvider where possible --- .../src/services/l2-ingestion/service.ts | 6 +++--- .../src/services/server/service.ts | 10 +++++----- packages/omgx/gas-price-oracle/src/exec/run.ts | 4 ++-- packages/omgx/gas-price-oracle/src/service.ts | 4 ++-- packages/omgx/message-relayer-fast/src/exec/run.ts | 4 ++-- packages/omgx/message-relayer-fast/src/service.ts | 4 ++-- .../wallet-frontend/src/services/networkService.js | 3 ++- packages/replica-healthcheck/src/helpers.ts | 4 ++-- 8 files changed, 20 insertions(+), 19 deletions(-) diff --git a/packages/data-transport-layer/src/services/l2-ingestion/service.ts b/packages/data-transport-layer/src/services/l2-ingestion/service.ts index 50ea6e5148741..2cade95a77ef9 100644 --- a/packages/data-transport-layer/src/services/l2-ingestion/service.ts +++ b/packages/data-transport-layer/src/services/l2-ingestion/service.ts @@ -1,6 +1,6 @@ /* Imports: External */ import { BaseService, Metrics } from '@eth-optimism/common-ts' -import { JsonRpcProvider } from '@ethersproject/providers' +import { StaticJsonRpcProvider } from '@ethersproject/providers' import { BigNumber } from 'ethers' import { LevelUp } from 'levelup' import axios from 'axios' @@ -72,7 +72,7 @@ export class L2IngestionService extends BaseService { private state: { db: TransportDB - l2RpcProvider: JsonRpcProvider + l2RpcProvider: StaticJsonRpcProvider } = {} as any protected async _init(): Promise { @@ -88,7 +88,7 @@ export class L2IngestionService extends BaseService { this.state.l2RpcProvider = typeof this.options.l2RpcProvider === 'string' - ? new JsonRpcProvider(this.options.l2RpcProvider) + ? new StaticJsonRpcProvider(this.options.l2RpcProvider) : this.options.l2RpcProvider } diff --git a/packages/data-transport-layer/src/services/server/service.ts b/packages/data-transport-layer/src/services/server/service.ts index 894689eeb79db..b3160b1dc582b 100644 --- a/packages/data-transport-layer/src/services/server/service.ts +++ b/packages/data-transport-layer/src/services/server/service.ts @@ -5,7 +5,7 @@ import promBundle from 'express-prom-bundle' import { Gauge } from 'prom-client' import cors from 'cors' import { BigNumber } from 'ethers' -import { JsonRpcProvider } from '@ethersproject/providers' +import { StaticJsonRpcProvider } from '@ethersproject/providers' import { LevelUp } from 'levelup' import * as Sentry from '@sentry/node' import * as Tracing from '@sentry/tracing' @@ -80,8 +80,8 @@ export class L1TransportServer extends BaseService { app: express.Express server: any db: TransportDB - l1RpcProvider: JsonRpcProvider - l2RpcProvider: JsonRpcProvider + l1RpcProvider: StaticJsonRpcProvider + l2RpcProvider: StaticJsonRpcProvider baseBlock: number baseTime: number } = {} as any @@ -94,12 +94,12 @@ export class L1TransportServer extends BaseService { this.state.db = new TransportDB(this.options.db) this.state.l1RpcProvider = typeof this.options.l1RpcProvider === 'string' - ? new JsonRpcProvider(this.options.l1RpcProvider) + ? new StaticJsonRpcProvider(this.options.l1RpcProvider) : this.options.l1RpcProvider this.state.l2RpcProvider = typeof this.options.l2RpcProvider === 'string' - ? new JsonRpcProvider(this.options.l2RpcProvider) + ? new StaticJsonRpcProvider(this.options.l2RpcProvider) : this.options.l2RpcProvider this.state.baseBlock = 0 diff --git a/packages/omgx/gas-price-oracle/src/exec/run.ts b/packages/omgx/gas-price-oracle/src/exec/run.ts index 4e272a255cdd7..63eedf003d463 100644 --- a/packages/omgx/gas-price-oracle/src/exec/run.ts +++ b/packages/omgx/gas-price-oracle/src/exec/run.ts @@ -103,8 +103,8 @@ const main = async () => { throw new Error('Must pass FAST_RELAYER_ADDRESS or FAST_RELAYER_PRIVATE_KEY') } - const l1Provider = new providers.JsonRpcProvider(L1_NODE_WEB3_URL) - const l2Provider = new providers.JsonRpcProvider(L2_NODE_WEB3_URL) + const l1Provider = new providers.StaticJsonRpcProvider(L1_NODE_WEB3_URL) + const l2Provider = new providers.StaticJsonRpcProvider(L2_NODE_WEB3_URL) const gasPriceOracleOwnerWallet = new Wallet(GAS_PRICE_ORACLE_OWNER_PRIVATE_KEY, l2Provider) diff --git a/packages/omgx/gas-price-oracle/src/service.ts b/packages/omgx/gas-price-oracle/src/service.ts index 9d8ed4433a538..551749e91ea11 100644 --- a/packages/omgx/gas-price-oracle/src/service.ts +++ b/packages/omgx/gas-price-oracle/src/service.ts @@ -10,8 +10,8 @@ import { loadContract } from '@eth-optimism/contracts' interface GasPriceOracleOptions { // Providers for interacting with L1 and L2. - l1RpcProvider: providers.JsonRpcProvider - l2RpcProvider: providers.JsonRpcProvider + l1RpcProvider: providers.StaticJsonRpcProvider + l2RpcProvider: providers.StaticJsonRpcProvider // Address of the gasPrice contract gasPriceOracleAddress: string, diff --git a/packages/omgx/message-relayer-fast/src/exec/run.ts b/packages/omgx/message-relayer-fast/src/exec/run.ts index 7cf7ce25bebe5..a571031a56a61 100644 --- a/packages/omgx/message-relayer-fast/src/exec/run.ts +++ b/packages/omgx/message-relayer-fast/src/exec/run.ts @@ -76,8 +76,8 @@ const main = async () => { throw new Error('Must pass L2_NODE_WEB3_URL') } - const l2Provider = new providers.JsonRpcProvider(L2_NODE_WEB3_URL) - const l1Provider = new providers.JsonRpcProvider(L1_NODE_WEB3_URL) + const l2Provider = new providers.StaticJsonRpcProvider(L2_NODE_WEB3_URL) + const l1Provider = new providers.StaticJsonRpcProvider(L1_NODE_WEB3_URL) let wallet: Wallet if (FAST_RELAYER_PRIVATE_KEY) { diff --git a/packages/omgx/message-relayer-fast/src/service.ts b/packages/omgx/message-relayer-fast/src/service.ts index d781cef87d76a..c6fbd63dfd9bb 100644 --- a/packages/omgx/message-relayer-fast/src/service.ts +++ b/packages/omgx/message-relayer-fast/src/service.ts @@ -14,8 +14,8 @@ import { StateRootBatchHeader, SentMessage, SentMessageProof, BatchMessage } fro interface MessageRelayerOptions { // Providers for interacting with L1 and L2. - l1RpcProvider: providers.JsonRpcProvider - l2RpcProvider: providers.JsonRpcProvider + l1RpcProvider: providers.StaticJsonRpcProvider + l2RpcProvider: providers.StaticJsonRpcProvider // Address of the AddressManager contract, used to resolve the various addresses we'll need // within this service. diff --git a/packages/omgx/wallet-frontend/src/services/networkService.js b/packages/omgx/wallet-frontend/src/services/networkService.js index 59ea251c3e606..ddbcbc7fed86a 100644 --- a/packages/omgx/wallet-frontend/src/services/networkService.js +++ b/packages/omgx/wallet-frontend/src/services/networkService.js @@ -400,7 +400,8 @@ class NetworkService { // defines the set of possible networks const nw = getAllNetworks() - + + //cannot use static here because the network can (and will) change this.L1Provider = new ethers.providers.JsonRpcProvider( nw[masterSystemConfig]['L1']['rpcUrl'] ) diff --git a/packages/replica-healthcheck/src/helpers.ts b/packages/replica-healthcheck/src/helpers.ts index 9c20c24a1d57f..5d9a9b359bc4b 100644 --- a/packages/replica-healthcheck/src/helpers.ts +++ b/packages/replica-healthcheck/src/helpers.ts @@ -57,8 +57,8 @@ export const readConfig = (): HealthcheckServerOptions => { } export const binarySearchForMismatch = async ( - sequencerProvider: providers.JsonRpcProvider, - replicaProvider: providers.JsonRpcProvider, + sequencerProvider: providers.StaticJsonRpcProvider, + replicaProvider: providers.StaticJsonRpcProvider, latest: number, logger: Logger ): Promise => { From bfa0bac515783eb0ed4a538763e600fad4de3c79 Mon Sep 17 00:00:00 2001 From: CAPtheorem <79423264+CAPtheorem@users.noreply.github.com> Date: Wed, 15 Sep 2021 14:02:11 -0700 Subject: [PATCH 2/3] more replacements --- .../src/types/event-handler-types.ts | 4 ++-- packages/message-relayer/src/exec/run.ts | 4 ++-- packages/message-relayer/src/exec/withdraw.ts | 2 +- packages/message-relayer/src/relay-tx.ts | 16 ++++++++-------- packages/message-relayer/src/service.ts | 4 ++-- 5 files changed, 15 insertions(+), 15 deletions(-) diff --git a/packages/data-transport-layer/src/types/event-handler-types.ts b/packages/data-transport-layer/src/types/event-handler-types.ts index 1839796b527e8..895bd6d18ad86 100644 --- a/packages/data-transport-layer/src/types/event-handler-types.ts +++ b/packages/data-transport-layer/src/types/event-handler-types.ts @@ -1,4 +1,4 @@ -import { JsonRpcProvider } from '@ethersproject/providers' +import { StaticJsonRpcProvider } from '@ethersproject/providers' import { BigNumber, Event } from 'ethers' import { TransportDB } from '../db/transport-db' @@ -15,7 +15,7 @@ export type TypedEthersEvent = Event & { export type GetExtraDataHandler = ( event?: TypedEthersEvent, - l1RpcProvider?: JsonRpcProvider + l1RpcProvider?: StaticJsonRpcProvider ) => Promise export type ParseEventHandler = ( diff --git a/packages/message-relayer/src/exec/run.ts b/packages/message-relayer/src/exec/run.ts index f7fef2e5928db..54487e6edace6 100644 --- a/packages/message-relayer/src/exec/run.ts +++ b/packages/message-relayer/src/exec/run.ts @@ -98,8 +98,8 @@ const main = async () => { throw new Error('Must pass L2_NODE_WEB3_URL') } - const l2Provider = new providers.JsonRpcProvider(L2_NODE_WEB3_URL) - const l1Provider = new providers.JsonRpcProvider(L1_NODE_WEB3_URL) + const l2Provider = new providers.StaticJsonRpcProvider(L2_NODE_WEB3_URL) + const l1Provider = new providers.StaticJsonRpcProvider(L1_NODE_WEB3_URL) let wallet: Wallet if (RELAYER_PRIVATE_KEY) { diff --git a/packages/message-relayer/src/exec/withdraw.ts b/packages/message-relayer/src/exec/withdraw.ts index 07dd58c2d4cb6..3cfb8a0c0512c 100755 --- a/packages/message-relayer/src/exec/withdraw.ts +++ b/packages/message-relayer/src/exec/withdraw.ts @@ -28,7 +28,7 @@ const main = async () => { throw new Error(`must provide l2 transaction hash`) } - const l1RpcProvider = new ethers.providers.JsonRpcProvider(l1RpcProviderUrl) + const l1RpcProvider = new ethers.providers.StaticJsonRpcProvider(l1RpcProviderUrl) const l1Wallet = new ethers.Wallet(l1PrivateKey, l1RpcProvider) const l1WalletBalance = await l1Wallet.getBalance() console.log(`relayer address: ${l1Wallet.address}`) diff --git a/packages/message-relayer/src/relay-tx.ts b/packages/message-relayer/src/relay-tx.ts index 4f5a064db0e84..63555ea243c55 100644 --- a/packages/message-relayer/src/relay-tx.ts +++ b/packages/message-relayer/src/relay-tx.ts @@ -66,7 +66,7 @@ interface StateTrieProof { * @returns Messages associated with the transaction. */ export const getMessagesByTransactionHash = async ( - l2RpcProvider: ethers.providers.JsonRpcProvider, + l2RpcProvider: ethers.providers.StaticJsonRpcProvider, l2CrossDomainMessengerAddress: string, l2TransactionHash: string ): Promise => { @@ -131,7 +131,7 @@ const encodeCrossDomainMessage = (message: CrossDomainMessage): string => { * @returns StateBatchAppended event for the given transaction or null if no such event exists. */ export const getStateBatchAppendedEventByTransactionIndex = async ( - l1RpcProvider: ethers.providers.JsonRpcProvider, + l1RpcProvider: ethers.providers.StaticJsonRpcProvider, l1StateCommitmentChainAddress: string, l2TransactionIndex: number ): Promise => { @@ -213,7 +213,7 @@ export const getStateBatchAppendedEventByTransactionIndex = async ( * batch exists. */ export const getStateRootBatchByTransactionIndex = async ( - l1RpcProvider: ethers.providers.JsonRpcProvider, + l1RpcProvider: ethers.providers.StaticJsonRpcProvider, l1StateCommitmentChainAddress: string, l2TransactionIndex: number ): Promise => { @@ -295,7 +295,7 @@ const getMerkleTreeProof = (leaves: string[], index: number): string[] => { * @returns Account proof and storage proof. */ const getStateTrieProof = async ( - l2RpcProvider: ethers.providers.JsonRpcProvider, + l2RpcProvider: ethers.providers.StaticJsonRpcProvider, blockNumber: number, address: string, slot: string @@ -324,17 +324,17 @@ const getStateTrieProof = async ( * @returns An array of messages sent in the transaction and a proof of inclusion for each. */ export const getMessagesAndProofsForL2Transaction = async ( - l1RpcProvider: ethers.providers.JsonRpcProvider | string, - l2RpcProvider: ethers.providers.JsonRpcProvider | string, + l1RpcProvider: ethers.providers.StaticJsonRpcProvider | string, + l2RpcProvider: ethers.providers.StaticJsonRpcProvider | string, l1StateCommitmentChainAddress: string, l2CrossDomainMessengerAddress: string, l2TransactionHash: string ): Promise => { if (typeof l1RpcProvider === 'string') { - l1RpcProvider = new ethers.providers.JsonRpcProvider(l1RpcProvider) + l1RpcProvider = new ethers.providers.StaticJsonRpcProvider(l1RpcProvider) } if (typeof l2RpcProvider === 'string') { - l2RpcProvider = new ethers.providers.JsonRpcProvider(l2RpcProvider) + l2RpcProvider = new ethers.providers.StaticJsonRpcProvider(l2RpcProvider) } const l2Transaction = await l2RpcProvider.getTransaction(l2TransactionHash) diff --git a/packages/message-relayer/src/service.ts b/packages/message-relayer/src/service.ts index 59432a4fd0909..ce07da9a94f22 100644 --- a/packages/message-relayer/src/service.ts +++ b/packages/message-relayer/src/service.ts @@ -14,8 +14,8 @@ import { StateRootBatchHeader, SentMessage, SentMessageProof, BatchMessage } fro interface MessageRelayerOptions { // Providers for interacting with L1 and L2. - l1RpcProvider: providers.JsonRpcProvider - l2RpcProvider: providers.JsonRpcProvider + l1RpcProvider: providers.StaticJsonRpcProvider + l2RpcProvider: providers.StaticJsonRpcProvider // Address of the AddressManager contract, used to resolve the various addresses we'll need // within this service. From b4f107a6677249b4ecc6645424684a1969a0c6d0 Mon Sep 17 00:00:00 2001 From: CAPtheorem <79423264+CAPtheorem@users.noreply.github.com> Date: Wed, 15 Sep 2021 14:28:30 -0700 Subject: [PATCH 3/3] Update networkService.js --- .../omgx/wallet-frontend/src/services/networkService.js | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/packages/omgx/wallet-frontend/src/services/networkService.js b/packages/omgx/wallet-frontend/src/services/networkService.js index ddbcbc7fed86a..cd7c88c3e4786 100644 --- a/packages/omgx/wallet-frontend/src/services/networkService.js +++ b/packages/omgx/wallet-frontend/src/services/networkService.js @@ -395,17 +395,13 @@ class NetworkService { return 'wrongnetwork' } - //dispatch(setLayer(this.L1orL2)) - //const dispatch = useDispatch(); - // defines the set of possible networks const nw = getAllNetworks() - //cannot use static here because the network can (and will) change - this.L1Provider = new ethers.providers.JsonRpcProvider( + this.L1Provider = new ethers.providers.StaticJsonRpcProvider( nw[masterSystemConfig]['L1']['rpcUrl'] ) - this.L2Provider = new ethers.providers.JsonRpcProvider( + this.L2Provider = new ethers.providers.StaticJsonRpcProvider( nw[masterSystemConfig]['L2']['rpcUrl'] )