From f175d3955e4d37e05f7bc3ba7e479dc257944876 Mon Sep 17 00:00:00 2001 From: shadab-taiko <108871478+shadab-taiko@users.noreply.github.com> Date: Tue, 28 Mar 2023 11:01:08 +0530 Subject: [PATCH] feat(bridge-ui): switch to using StaticJsonRpcProvider (#13482) --- packages/bridge-ui/src/App.svelte | 2 +- packages/bridge-ui/src/bridge/ERC20Bridge.spec.ts | 4 ++-- packages/bridge-ui/src/bridge/ETHBridge.spec.ts | 4 ++-- .../bridge-ui/src/components/Transaction.svelte | 4 ++-- packages/bridge-ui/src/proof/ProofService.spec.ts | 2 +- packages/bridge-ui/src/proof/ProofService.ts | 11 ++++++++--- packages/bridge-ui/src/provider/providers.ts | 15 ++++++++++++--- .../src/relayer-api/RelayerAPIService.ts | 7 +++++-- packages/bridge-ui/src/storage/StorageService.ts | 7 +++++-- .../src/utils/checkIfTokenIsDeployedCrossChain.ts | 2 +- 10 files changed, 39 insertions(+), 19 deletions(-) diff --git a/packages/bridge-ui/src/App.svelte b/packages/bridge-ui/src/App.svelte index c8a3042934..cfa1d1e26c 100644 --- a/packages/bridge-ui/src/App.svelte +++ b/packages/bridge-ui/src/App.svelte @@ -140,7 +140,7 @@ ); successToast('Transaction completed!'); let s = store; - s = s.slice(confirmedPendingTxIndex, 0); + s.splice(confirmedPendingTxIndex, 1); pendingTransactions.set(s); })(); }); diff --git a/packages/bridge-ui/src/bridge/ERC20Bridge.spec.ts b/packages/bridge-ui/src/bridge/ERC20Bridge.spec.ts index d2b8ddd56d..aa0b69b636 100644 --- a/packages/bridge-ui/src/bridge/ERC20Bridge.spec.ts +++ b/packages/bridge-ui/src/bridge/ERC20Bridge.spec.ts @@ -427,7 +427,7 @@ describe('bridge tests', () => { srcBridgeAddress: '0x', destBridgeAddress: '0x', signer: wallet, - destProvider: new ethers.providers.JsonRpcProvider(), + destProvider: new ethers.providers.StaticJsonRpcProvider(), srcTokenVaultAddress: '0x', }), ).rejects.toThrowError('message already processed'); @@ -462,7 +462,7 @@ describe('bridge tests', () => { srcBridgeAddress: '0x', destBridgeAddress: '0x', signer: wallet, - destProvider: new ethers.providers.JsonRpcProvider(), + destProvider: new ethers.providers.StaticJsonRpcProvider(), srcTokenVaultAddress: '0x', }); diff --git a/packages/bridge-ui/src/bridge/ETHBridge.spec.ts b/packages/bridge-ui/src/bridge/ETHBridge.spec.ts index 9172f6f802..1b0e95fb44 100644 --- a/packages/bridge-ui/src/bridge/ETHBridge.spec.ts +++ b/packages/bridge-ui/src/bridge/ETHBridge.spec.ts @@ -311,7 +311,7 @@ describe('bridge tests', () => { srcBridgeAddress: '0x', destBridgeAddress: '0x', signer: wallet, - destProvider: new ethers.providers.JsonRpcProvider(), + destProvider: new ethers.providers.StaticJsonRpcProvider(), srcTokenVaultAddress: '0x', }), ).rejects.toThrowError('message already processed'); @@ -346,7 +346,7 @@ describe('bridge tests', () => { srcBridgeAddress: '0x', destBridgeAddress: '0x', signer: wallet, - destProvider: new ethers.providers.JsonRpcProvider(), + destProvider: new ethers.providers.StaticJsonRpcProvider(), srcTokenVaultAddress: '0x', }); diff --git a/packages/bridge-ui/src/components/Transaction.svelte b/packages/bridge-ui/src/components/Transaction.svelte index 0013509069..749cfc1ab5 100644 --- a/packages/bridge-ui/src/components/Transaction.svelte +++ b/packages/bridge-ui/src/components/Transaction.svelte @@ -189,13 +189,13 @@ providers[chains[transaction.toChainId].id], ); - transaction.status = await contract.getMessageStatus(transaction.msgHash); - if (transaction.receipt && transaction.receipt.status !== 1) { clearInterval(interval); return; } + transaction.status = await contract.getMessageStatus(transaction.msgHash); + if (transaction.status === MessageStatus.Failed) { if (transaction.message?.data !== '0x') { const srcTokenVaultContract = new ethers.Contract( diff --git a/packages/bridge-ui/src/proof/ProofService.spec.ts b/packages/bridge-ui/src/proof/ProofService.spec.ts index ee8fe7f2c2..343a1820f8 100644 --- a/packages/bridge-ui/src/proof/ProofService.spec.ts +++ b/packages/bridge-ui/src/proof/ProofService.spec.ts @@ -116,7 +116,7 @@ const destChain = 31336; const map = { [srcChain]: mockProvider, [destChain]: mockProvider, -} as unknown as Record; +} as unknown as Record; describe('prover tests', () => { beforeEach(() => { diff --git a/packages/bridge-ui/src/proof/ProofService.ts b/packages/bridge-ui/src/proof/ProofService.ts index 62bd491488..e1fce0dffb 100644 --- a/packages/bridge-ui/src/proof/ProofService.ts +++ b/packages/bridge-ui/src/proof/ProofService.ts @@ -10,9 +10,14 @@ import type { } from '../domain/proof'; export class ProofService implements Prover { - private readonly providers: Record; + private readonly providers: Record< + number, + ethers.providers.StaticJsonRpcProvider + >; - constructor(providers: Record) { + constructor( + providers: Record, + ) { this.providers = providers; } @@ -29,7 +34,7 @@ export class ProofService implements Prover { private static async getBlockAndBlockHeader( contract: ethers.Contract, - provider: ethers.providers.JsonRpcProvider, + provider: ethers.providers.StaticJsonRpcProvider, ): Promise<{ block: Block; blockHeader: BlockHeader }> { const latestSyncedHeader = await contract.getLatestSyncedHeader(); diff --git a/packages/bridge-ui/src/provider/providers.ts b/packages/bridge-ui/src/provider/providers.ts index baf9839b76..fc4b455fbc 100644 --- a/packages/bridge-ui/src/provider/providers.ts +++ b/packages/bridge-ui/src/provider/providers.ts @@ -2,7 +2,16 @@ import { ethers } from 'ethers'; import type { ChainID } from '../domain/chain'; import { L1_CHAIN_ID, L1_RPC, L2_CHAIN_ID, L2_RPC } from '../constants/envVars'; -export const providers: Record = { - [L1_CHAIN_ID]: new ethers.providers.JsonRpcProvider(L1_RPC), - [L2_CHAIN_ID]: new ethers.providers.JsonRpcProvider(L2_RPC), +export const providers: Record< + ChainID, + ethers.providers.StaticJsonRpcProvider +> = { + [L1_CHAIN_ID]: new ethers.providers.StaticJsonRpcProvider( + L1_RPC, + L1_CHAIN_ID, + ), + [L2_CHAIN_ID]: new ethers.providers.StaticJsonRpcProvider( + L2_RPC, + L2_CHAIN_ID, + ), }; diff --git a/packages/bridge-ui/src/relayer-api/RelayerAPIService.ts b/packages/bridge-ui/src/relayer-api/RelayerAPIService.ts index 7e8d03f9fa..3430bd62cf 100644 --- a/packages/bridge-ui/src/relayer-api/RelayerAPIService.ts +++ b/packages/bridge-ui/src/relayer-api/RelayerAPIService.ts @@ -18,12 +18,15 @@ import { tokenVaults } from '../vault/tokenVaults'; import type { ChainID } from '../domain/chain'; export class RelayerAPIService implements RelayerAPI { - private readonly providers: Record; + private readonly providers: Record< + ChainID, + ethers.providers.StaticJsonRpcProvider + >; private readonly baseUrl: string; constructor( baseUrl: string, - providers: Record, + providers: Record, ) { this.providers = providers; diff --git a/packages/bridge-ui/src/storage/StorageService.ts b/packages/bridge-ui/src/storage/StorageService.ts index 45848f209c..f632b61a7a 100644 --- a/packages/bridge-ui/src/storage/StorageService.ts +++ b/packages/bridge-ui/src/storage/StorageService.ts @@ -10,11 +10,14 @@ import type { ChainID } from '../domain/chain'; export class StorageService implements Transactioner { private readonly storage: Storage; - private readonly providers: Record; + private readonly providers: Record< + ChainID, + ethers.providers.StaticJsonRpcProvider + >; constructor( storage: Storage, - providers: Record, + providers: Record, ) { this.storage = storage; this.providers = providers; diff --git a/packages/bridge-ui/src/utils/checkIfTokenIsDeployedCrossChain.ts b/packages/bridge-ui/src/utils/checkIfTokenIsDeployedCrossChain.ts index 925121def4..902453ea61 100644 --- a/packages/bridge-ui/src/utils/checkIfTokenIsDeployedCrossChain.ts +++ b/packages/bridge-ui/src/utils/checkIfTokenIsDeployedCrossChain.ts @@ -6,7 +6,7 @@ import type { Token } from '../domain/token'; export const checkIfTokenIsDeployedCrossChain = async ( token: Token, - provider: ethers.providers.JsonRpcProvider, + provider: ethers.providers.StaticJsonRpcProvider, destTokenVaultAddress: string, toChain: Chain, fromChain: Chain,