From 5161f5b12074a214fe6fefe787c19ff9bd6e5df7 Mon Sep 17 00:00:00 2001 From: Sahil Kashetwar Date: Thu, 17 Nov 2022 14:16:05 +0530 Subject: [PATCH 01/32] change - setting up network with redux persitant - maintain state in session to avoid reset on reload of page. - create network reducer and corresponding setup. --- packages/boba/gateway/src/reducers/networkReducer.js | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/boba/gateway/src/reducers/networkReducer.js b/packages/boba/gateway/src/reducers/networkReducer.js index b0d633497b..1482dcb82c 100644 --- a/packages/boba/gateway/src/reducers/networkReducer.js +++ b/packages/boba/gateway/src/reducers/networkReducer.js @@ -76,4 +76,3 @@ function networkReducer(state = initialState, action) { } export default networkReducer - From ebecf3b1bd3219062a44cec02b74ce35494ccf9e Mon Sep 17 00:00:00 2001 From: Sahil Kashetwar Date: Tue, 29 Nov 2022 23:28:49 +0530 Subject: [PATCH 02/32] updated sentry & fix linting issues. --- yarn.lock | 75 ++++++++++++++++++++++++++++--------------------------- 1 file changed, 38 insertions(+), 37 deletions(-) diff --git a/yarn.lock b/yarn.lock index ab0c3d4050..a74f5ec14b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5049,14 +5049,14 @@ "@noble/hashes" "~1.1.1" "@scure/base" "~1.1.0" -"@sentry/browser@7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-7.24.1.tgz#01c1ce61ba3cfbdec07bcf1413dc958087e26c32" - integrity sha512-Tr7p1Bg8a+ycdUmZuega0TTOl6xNZUj17PBFZnCjpZtxUMxlwR6aBlM0TxF6/bV6fUJchmoLCAjL3kLIHSSo6Q== - dependencies: - "@sentry/core" "7.24.1" - "@sentry/types" "7.24.1" - "@sentry/utils" "7.24.1" +"@sentry/browser@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-7.12.1.tgz#2be6fa5c2529a2a75abac4d00aca786362302a1a" + integrity sha512-pgyL65CrGFLe8sKcEG8KXAuVTE8zkAsyTlv/AuME06cSdxzO/memPK/r3BI6EM7WupIdga+V5tQUldeT1kgHNA== + dependencies: + "@sentry/core" "7.12.1" + "@sentry/types" "7.12.1" + "@sentry/utils" "7.12.1" tslib "^1.9.3" "@sentry/core@5.30.0": @@ -5081,13 +5081,14 @@ "@sentry/utils" "6.19.7" tslib "^1.9.3" -"@sentry/core@7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.24.1.tgz#815480791e4230fd2e8718a4caa1b8253ca42c23" - integrity sha512-x/kBpBVFCZn4ijVVAPAw0cmHy0PfXgBpYGQ1X3+EEzI3pkvlygvnF2pLR/4LrsC23zGfIRlbDj4DwK5hxoFF4g== +"@sentry/core@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.12.1.tgz#a22f1c530ed528a699ed204c36eb5fc8d308103d" + integrity sha512-DFHbzHFjukhlkRZ5xzfebx0IBzblW43kmfnalBBq7xEMscUvnhsYnlvL9Y20tuPZ/PrTcq4JAHbFluAvw6M0QQ== dependencies: - "@sentry/types" "7.24.1" - "@sentry/utils" "7.24.1" + "@sentry/hub" "7.12.1" + "@sentry/types" "7.12.1" + "@sentry/utils" "7.12.1" tslib "^1.9.3" "@sentry/hub@5.30.0": @@ -5155,14 +5156,14 @@ lru_map "^0.3.3" tslib "^1.9.3" -"@sentry/react@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@sentry/react/-/react-7.24.1.tgz#56c3d0df8424421c5f1081fdcb09bb76ef569d24" - integrity sha512-AxpEFML0nXOq7c1p34JYI2UjxWE+nqIaIXuX/sRTpyOtW+Wq/JLp2qTjimgb3bwY2JmefweRSvzf8J/cuXDG4A== +"@sentry/react@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@sentry/react/-/react-7.12.1.tgz#075162d39ea05c58217597d5242f7046c3152ea9" + integrity sha512-CmdiRzhPpjD29GxlDJs+VIoLlQcKp1BfISQOfPUZNppWbKyRad+J5Z8tgg5MCNPHjQtcOT+0V+MsSdRNqtXg4g== dependencies: - "@sentry/browser" "7.24.1" - "@sentry/types" "7.24.1" - "@sentry/utils" "7.24.1" + "@sentry/browser" "7.12.1" + "@sentry/types" "7.12.1" + "@sentry/utils" "7.12.1" hoist-non-react-statics "^3.3.2" tslib "^1.9.3" @@ -5188,14 +5189,14 @@ "@sentry/utils" "6.19.7" tslib "^1.9.3" -"@sentry/tracing@^7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-7.24.1.tgz#8f947b01a6b836334f20fcb36441d69cede474c9" - integrity sha512-Vp03aH7wMxLszFMZqVWPlDlqCP5mwAqqsh9nHWUJhyarGJjeacrMj+B+5qKKM4W/JNnbrHRTRLw2lL/szxj1KA== +"@sentry/tracing@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-7.12.1.tgz#9f92985f152054ac90b6ec83a33c44e8084a008e" + integrity sha512-WnweIt//IqkEkJSjA8DtnIeCdItYIqJSxNQ6qK+r546/ufxRYFBck2fbmM0oKZJVg2evbwhadrBTIUzYkqNj4A== dependencies: - "@sentry/core" "7.24.1" - "@sentry/types" "7.24.1" - "@sentry/utils" "7.24.1" + "@sentry/hub" "7.12.1" + "@sentry/types" "7.12.1" + "@sentry/utils" "7.12.1" tslib "^1.9.3" "@sentry/types@5.30.0": @@ -5208,10 +5209,10 @@ resolved "https://registry.yarnpkg.com/@sentry/types/-/types-6.19.7.tgz#c6b337912e588083fc2896eb012526cf7cfec7c7" integrity sha512-jH84pDYE+hHIbVnab3Hr+ZXr1v8QABfhx39KknxqKWr2l0oEItzepV0URvbEhB446lk/S/59230dlUUIBGsXbg== -"@sentry/types@7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.24.1.tgz#ff2e39752ff1d46b54807275e9262209f95ec429" - integrity sha512-77E1cgw31YmEeqTi5RNMfIgwDB164UdtAGKtTtCehbF9HffO3Lp4f3G8TumqNKOik1RDNHrn+ZWqbj2c97UZZA== +"@sentry/types@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.12.1.tgz#eff76d938f9effc62a2ec76cd5c3f04de37f5c15" + integrity sha512-VGZs39SZgMcCGv7H0VyFy1LEFGsnFZH590JUopmz6nG63EpeYQ2xzhIoPNAiLKbyUvBEwukn+faCg3u3MGqhgQ== "@sentry/utils@5.30.0": version "5.30.0" @@ -5229,12 +5230,12 @@ "@sentry/types" "6.19.7" tslib "^1.9.3" -"@sentry/utils@7.24.1": - version "7.24.1" - resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.24.1.tgz#f9760a7cb4b33d2ead01aace7b0fd62c8c2c6be8" - integrity sha512-wH0+ToU3OpL373Nx0YiuYje82a8lf6fm7q+MqyWyC6sVETe4YiL4+Ge0WLEJ0XEGFjxfL4gSZL3FhoVbJQxUtA== +"@sentry/utils@7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.12.1.tgz#fcf80fdc332d0bd288e21b13efc7a2f0d604f75a" + integrity sha512-Dh8B13pC0u8uLM/zf+oZngyg808c6BDEO94F7H+h3IciCVVd92A0cOQwLGAEdf8srnJgpZJNAlSC8lFDhbFHzQ== dependencies: - "@sentry/types" "7.24.1" + "@sentry/types" "7.12.1" tslib "^1.9.3" "@sindresorhus/is@^0.14.0": From b6b98648084de2908ae7c015c3fafe48fb2e650d Mon Sep 17 00:00:00 2001 From: Sahil Kashetwar Date: Wed, 14 Dec 2022 21:10:29 +0530 Subject: [PATCH 03/32] setting up address and app service for multi chains --- .../boba/gateway/src/services/app.service.js | 129 ++++++++ .../{errorService.js => error.service.js} | 0 .../{graphQLService.js => graphQL.Service.js} | 0 .../gateway/src/services/networkService.js | 58 +--- .../gateway/src/util/network/network.util.js | 1 - ...20f8ce1c4be8436574e575fE38558d85e2E6b.json | 59 ++++ ...c10A60af35a07f0EA8Be3106a4D81014b21a0.json | 47 +++ ...1fb3f4353a9060aEC3943fE932b6Efe35CdAa.json | 39 +++ ...89B25597259cfa51Bd396cE1d4B085EC4c753.json | 51 +++ ...8de95b85212BC348452e91e0e74c17cf37c79.json | 38 +++ ...325bcf09e091Bb8119258B885D4ef687B7386.json | 49 +++ ...0bF3a1411AC973A606f90B2d1ee0840e5979B.json | 40 +++ ...d9f501149D3FDd703cC10c567F416B7F0af8b.json | 38 +++ .../boba/register/addresses/tokenInfo.json | 298 ++++++++++++++++++ 14 files changed, 797 insertions(+), 50 deletions(-) create mode 100644 packages/boba/gateway/src/services/app.service.js rename packages/boba/gateway/src/services/{errorService.js => error.service.js} (100%) rename packages/boba/gateway/src/services/{graphQLService.js => graphQL.Service.js} (100%) create mode 100644 packages/boba/register/addresses/addressBobaAvax_0x00220f8ce1c4be8436574e575fE38558d85e2E6b.json create mode 100644 packages/boba/register/addresses/addressBobaBeam_0x564c10A60af35a07f0EA8Be3106a4D81014b21a0.json create mode 100644 packages/boba/register/addresses/addressBobaBnbTestnet_0xAee1fb3f4353a9060aEC3943fE932b6Efe35CdAa.json create mode 100644 packages/boba/register/addresses/addressBobaBnb_0xeb989B25597259cfa51Bd396cE1d4B085EC4c753.json create mode 100644 packages/boba/register/addresses/addressBobaFuji_0xcE78de95b85212BC348452e91e0e74c17cf37c79.json create mode 100644 packages/boba/register/addresses/addressBobaOpera_0x4e7325bcf09e091Bb8119258B885D4ef687B7386.json create mode 100644 packages/boba/register/addresses/addressesBobaBase_0xF8d0bF3a1411AC973A606f90B2d1ee0840e5979B.json create mode 100644 packages/boba/register/addresses/addressesBobaOperaTestnet_0x12ad9f501149D3FDd703cC10c567F416B7F0af8b.json diff --git a/packages/boba/gateway/src/services/app.service.js b/packages/boba/gateway/src/services/app.service.js new file mode 100644 index 0000000000..5de13e7f31 --- /dev/null +++ b/packages/boba/gateway/src/services/app.service.js @@ -0,0 +1,129 @@ +import { NETWORK, NETWORK_TYPE } from "util/network/network.util"; +// testnet addresss +import addresses_Goerli from "@boba/register/addresses/addressesGoerli_0x6FF9c8FF8F0B6a0763a3030540c21aFC721A9148" +import addresses_BobaBase from "@boba/register/addresses/addressesBobaBase_0xF8d0bF3a1411AC973A606f90B2d1ee0840e5979B" +import addresses_BobaOperaTestnet from "@boba/register/addresses/addressesBobaOperaTestnet_0x12ad9f501149D3FDd703cC10c567F416B7F0af8b" +import addresses_BobaFuji from "@boba/register/addresses/addressBobaFuji_0xcE78de95b85212BC348452e91e0e74c17cf37c79" +import addresses_BobaBnbTestnet from "@boba/register/addresses/addressBobaBnbTestnet_0xAee1fb3f4353a9060aEC3943fE932b6Efe35CdAa" + +// mainnet address +import addresses_Mainnet from "@boba/register/addresses/addressesMainnet_0x8376ac6C3f73a25Dd994E0b0669ca7ee0C02F089" +import addresses_BobaBeam from "@boba/register/addresses/addressBobaBeam_0x564c10A60af35a07f0EA8Be3106a4D81014b21a0" +import addresses_BobaAvax from "@boba/register/addresses/addressBobaAvax_0x00220f8ce1c4be8436574e575fE38558d85e2E6b" +import addresses_BobaBnb from "@boba/register/addresses/addressBobaBnb_0xeb989B25597259cfa51Bd396cE1d4B085EC4c753" +import addresses_BobaOpera from "@boba/register/addresses/addressBobaOpera_0x4e7325bcf09e091Bb8119258B885D4ef687B7386" + +// layerzero addresses. +import layerZeroTestnet from "@boba/register/addresses/layerZeroTestnet" +import layerZeroMainnet from "@boba/register/addresses/layerZeroMainnet" + +// predeployed contracts. + +const ERROR_ADDRESS = '0x0000000000000000000000000000000000000000' +const L1_ETH_Address = '0x0000000000000000000000000000000000000000' +const L2_BOBA_Address = '0x4200000000000000000000000000000000000006' +const L2MessengerAddress = '0x4200000000000000000000000000000000000007' +const L2StandardBridgeAddress = '0x4200000000000000000000000000000000000010' +const L2GasOracle = '0x420000000000000000000000000000000000000F' +const L2_SecondaryFeeToken_Address = '0x4200000000000000000000000000000000000023' + + +const ADDRESS_CONFIG = { + [ NETWORK_TYPE.MAINNET ]: { + [ NETWORK.ETHEREUM ]: { + ...addresses_Mainnet, + ...layerZeroMainnet.BOBA_Bridges.Mainnet, + ...layerZeroMainnet.Layer_Zero_Protocol.Mainnet, + layerZeroTargetChainID: layerZeroMainnet.Layer_Zero_Protocol.Mainnet.Layer_Zero_ChainId, + }, + [ NETWORK.AVAX ]: { + ...addresses_BobaAvax, + ...layerZeroMainnet.BOBA_Bridges.Mainnet, + ...layerZeroMainnet.Layer_Zero_Protocol.Avalanche, + layerZeroTargetChainID: layerZeroMainnet.Layer_Zero_Protocol.Mainnet.Layer_Zero_ChainId, + }, + [ NETWORK.MOONBEAM ]: { + ...addresses_BobaBeam, + ...layerZeroMainnet.BOBA_Bridges.Mainnet, + ...layerZeroMainnet.Layer_Zero_Protocol.Moonbeam, + layerZeroTargetChainID: layerZeroMainnet.Layer_Zero_Protocol.Mainnet.Layer_Zero_ChainId, + }, + [ NETWORK.BNB ]: { + ...addresses_BobaBnb, + ...layerZeroMainnet.BOBA_Bridges.Mainnet, + ...layerZeroMainnet.Layer_Zero_Protocol.BNB, + layerZeroTargetChainID: layerZeroMainnet.Layer_Zero_Protocol.Mainnet.Layer_Zero_ChainId, + }, + [ NETWORK.FANTOM ]: addresses_BobaOpera, + }, + [ NETWORK_TYPE.TESTNET ]: { + [ NETWORK.ETHEREUM ]: { + ...addresses_Goerli, + ...layerZeroTestnet.BOBA_Bridges.Testnet, + ...layerZeroTestnet.Layer_Zero_Protocol.Testnet, + layerZeroTargetChainID: layerZeroTestnet.Layer_Zero_Protocol.Testnet.Layer_Zero_ChainId, + }, + [ NETWORK.AVAX ]: { + ...addresses_BobaFuji, + ...layerZeroTestnet.BOBA_Bridges.Testnet, + ...layerZeroTestnet.Layer_Zero_Protocol.Avalanche, + layerZeroTargetChainID: layerZeroTestnet.Layer_Zero_Protocol.Avalanche.Layer_Zero_ChainId, + }, + [ NETWORK.FANTOM ]: { + ...addresses_BobaOperaTestnet, + ...layerZeroTestnet.BOBA_Bridges.Testnet, + ...layerZeroTestnet.Layer_Zero_Protocol.Fantom, + layerZeroTargetChainID: layerZeroTestnet.Layer_Zero_Protocol.Fantom.Layer_Zero_ChainId, + }, + [ NETWORK.BNB ]: { + ...addresses_BobaBnbTestnet, + ...layerZeroTestnet.BOBA_Bridges.Testnet, + ...layerZeroTestnet.Layer_Zero_Protocol.Fantom, + layerZeroTargetChainID: layerZeroTestnet.Layer_Zero_Protocol.Fantom.Layer_Zero_ChainId, + }, + [ NETWORK.MOONBEAM ]: addresses_BobaBase, + } +} + +class AppService { + + + + /** + * @fetchAddresses + * + * NOTE: + * Pre Deployeed contracts add address manually + * + * - L2StandardBridgeAddress + * - L2MessengerAddress + * - L2_ETH_Address + * - L1_ETH_Address + * + */ + + + fetchAddresses({ + networkType, + network + }) { + let addresses = ADDRESS_CONFIG[ networkType ][ network ] || {}; + + return { + ...addresses, + L1LPAddress: addresses.Proxy__L1LiquidityPool, + L2LPAddress: addresses.Proxy__L2LiquidityPool, + L2StandardBridgeAddress, + L2MessengerAddress, + L2_ETH_Address: L2_BOBA_Address, + L2_BOBA_Address, + L1_ETH_Address + }; + + } + +}; + +const appService = new AppService(); + +export default appService; diff --git a/packages/boba/gateway/src/services/errorService.js b/packages/boba/gateway/src/services/error.service.js similarity index 100% rename from packages/boba/gateway/src/services/errorService.js rename to packages/boba/gateway/src/services/error.service.js diff --git a/packages/boba/gateway/src/services/graphQLService.js b/packages/boba/gateway/src/services/graphQL.Service.js similarity index 100% rename from packages/boba/gateway/src/services/graphQLService.js rename to packages/boba/gateway/src/services/graphQL.Service.js diff --git a/packages/boba/gateway/src/services/networkService.js b/packages/boba/gateway/src/services/networkService.js index 78b9ab049c..e3c53b5fca 100644 --- a/packages/boba/gateway/src/services/networkService.js +++ b/packages/boba/gateway/src/services/networkService.js @@ -93,7 +93,7 @@ import verifierWatcherAxiosInstance from 'api/verifierWatcherAxios' import metaTransactionAxiosInstance from 'api/metaTransactionAxios' import { sortRawTokens } from 'util/common' -import GraphQLService from "./graphQLService" +import GraphQLService from "./graphQL.Service" import addresses_Goerli from "@boba/register/addresses/addressesGoerli_0x6FF9c8FF8F0B6a0763a3030540c21aFC721A9148" import addresses_Mainnet from "@boba/register/addresses/addressesMainnet_0x8376ac6C3f73a25Dd994E0b0669ca7ee0C02F089" @@ -107,6 +107,7 @@ import { bobaBridges } from 'util/bobaBridges' import { APP_CHAIN, SPEED_CHECK } from 'util/constant' import { getPoolDetail } from 'util/poolDetails' import { getNetworkDetail, NETWORK } from 'util/network/network.util' +import appService from './app.service' const ERROR_ADDRESS = '0x0000000000000000000000000000000000000000' const L1_ETH_Address = '0x0000000000000000000000000000000000000000' @@ -170,8 +171,7 @@ class NetworkService { this.L1orL2 = null this.networkGateway = null this.networkType = null - this.L1ProviderBASE = null - this.L2ProviderBASE = null + // Watcher this.watcher = null @@ -511,20 +511,8 @@ class NetworkService { networkType }) - const L1rpc = networkDetail['L1']['rpcUrl'] - const L2rpc = networkDetail['L2']['rpcUrl'] - try { - //fire up the base providers - const Web3 = require("web3") - - this.L1ProviderBASE = new Web3(new Web3.providers.HttpProvider(L1rpc)) - this.L2ProviderBASE = new Web3(new Web3.providers.HttpProvider(L2rpc)) - - //this.L1ProviderBASE.eth.handleRevert = true - //this.L2ProviderBASE.eth.handleRevert = true - if (NETWORK[networkGateway]) { this.payloadForL1SecurityFee = networkDetail.payloadForL1SecurityFee this.payloadForFastDepositBatchCost = networkDetail.payloadForFastDepositBatchCost @@ -540,11 +528,15 @@ class NetworkService { networkDetail['L2']['rpcUrl'] ) + // get the tokens based on l1ChainId const chainId = (await this.L1Provider.getNetwork()).chainId this.tokenInfo = tokenInfo[chainId] - if (!!NETWORK[networkGateway]) { - addresses = allAddresses + if (!!NETWORK[ networkGateway ]) { + addresses = appService.fetchAddresses({ + network: networkGateway, + networkType + }); } // this.AddressManagerAddress = nw[networkGateway].addressManager @@ -562,41 +554,9 @@ class NetworkService { if (!(await this.getAddressCached(addresses, 'Proxy__L1StandardBridge', 'L1StandardBridgeAddress'))) return if (!(await this.getAddressCached(addresses, 'Proxy__BobaFixedSavings', 'BobaFixedSavings'))) return if (!(await this.getAddressCached(addresses, 'Proxy__Boba_GasPriceOracle', 'Boba_GasPriceOracle'))) return - //if (!(await this.getAddressCached(addresses, 'DiscretionaryExitFee', 'DiscretionaryExitFee'))) return // not critical this.getAddressCached(addresses, 'DiscretionaryExitFee', 'DiscretionaryExitFee') - console.log("DiscretionaryExitFee:",allAddresses.DiscretionaryExitFee) - - //L2CrossDomainMessenger is a predeploy, so add by hand.... - allAddresses = { - ...allAddresses, - 'L2MessengerAddress': L2MessengerAddress, - } - - //L2StandardBridgeAddress is a predeploy, so add by hand.... - allAddresses = { - ...allAddresses, - 'L2StandardBridgeAddress': L2StandardBridgeAddress, - } - - //L2MessengerAddress is a predeploy, so add by hand.... - allAddresses = { - ...allAddresses, - 'L2MessengerAddress': L2MessengerAddress - } - - //L2_ETH_Address is a predeploy, so add by hand.... - allAddresses = { - ...allAddresses, - 'L2_ETH_Address': L2_ETH_Address - } - - //L1_ETH_Address is a predeploy, so add by hand.... - allAddresses = { - ...allAddresses, - 'L1_ETH_Address': L1_ETH_Address - } this.L1StandardBridgeContract = new ethers.Contract( allAddresses.L1StandardBridgeAddress, diff --git a/packages/boba/gateway/src/util/network/network.util.js b/packages/boba/gateway/src/util/network/network.util.js index 0264b82360..5c9c78491a 100644 --- a/packages/boba/gateway/src/util/network/network.util.js +++ b/packages/boba/gateway/src/util/network/network.util.js @@ -277,7 +277,6 @@ export const getNetworkDetail = ({ return networkConfig[network][networkType] } - export const getBlockExplorerUrl = ({ network, networkType, diff --git a/packages/boba/register/addresses/addressBobaAvax_0x00220f8ce1c4be8436574e575fE38558d85e2E6b.json b/packages/boba/register/addresses/addressBobaAvax_0x00220f8ce1c4be8436574e575fE38558d85e2E6b.json new file mode 100644 index 0000000000..fb95653746 --- /dev/null +++ b/packages/boba/register/addresses/addressBobaAvax_0x00220f8ce1c4be8436574e575fE38558d85e2E6b.json @@ -0,0 +1,59 @@ +{ + "BondManager": "0x26c319B7B2cF823365414d082698C8ac90cbBA63", + "CanonicalTransactionChain": "0x1A19A4ce2b3B0A974Df717b6F88c881a69F315e3", + "ChainStorageContainer-CTC-batches": "0x82e4fCEBa2d0ce0B3f394b6Ab13e4b1B2D485b89", + "ChainStorageContainer-CTC-queue": "0x32fa4eC0aeadf5DEC8461b3834e5572Ad782f075", + "ChainStorageContainer-SCC-batches": "0xc4243ecE585B843c7cf92E65617A4211FA580dDb", + "L1MultiMessageRelayer": "0x87e062dE99Ed71aF9b22dDA63e1b6D43333798f8", + "AddressManager": "0x00220f8ce1c4be8436574e575fE38558d85e2E6b", + "OVM_L1CrossDomainMessenger": "0x19FF7f546b66f69e859E07B61444c3d3EF35ABC5", + "Proxy__L1CrossDomainMessenger": "0x0fc742332ae6D447d6619D93985Aa288B81CBb0C", + "Proxy__L1StandardBridge": "0xf188F1e92B2c78956D2859b84684BFD17103e22c", + "StateCommitmentChain": "0x1ef85D873Cf451C8B9a45DbE40b478E991F51210", + "TK_L1BOBA": "0x3cD790449CF7D187a143d4Bd7F4654d4f2403e02", + "TK_L2BOBA": "0x4200000000000000000000000000000000000006", + "TK_L2WBOBA9": "0x26c319B7B2cF823365414d082698C8ac90cbBA63", + "TK_L1AVAX": "0x0000000000000000000000000000000000000000", + "TK_L2AVAX": "0x4200000000000000000000000000000000000023", + "TK_L1USDT.e": "0xc7198437980c041c805A1EDcbA50c1Ce5db95118", + "TK_L2USDT.e": "0x4ED96c1dc969d7E2310D9582A68c39556C005912", + "TK_L1USDt": "0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7", + "TK_L2USDt": "0xfaA13D82756f1e0e4dec9416b83121db3Fc35199", + "TK_L1USDC": "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E", + "TK_L2USDC": "0x12bb1A120dcF8Cb7152eDAC9f04d176DD7f41F7e", + "TK_L1USDC.e": "0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664", + "TK_L2USDC.e": "0x126969743a6d300bab08F303f104f0f7DBAfbe20", + "TK_L1BUSD.e": "0x19860CCB0A68fd4213aB9D8266F7bBf05A8dDe98", + "TK_L2BUSD.e": "0xb8B0034CFD89925944C07Ac6CcB2834d1774cfb6", + "TK_L1BUSD": "0x9C9e5fD8bbc25984B178FdCE6117Defa39d2db39", + "TK_L2BUSD": "0x87e062dE99Ed71aF9b22dDA63e1b6D43333798f8", + "TK_L1DAI.e": "0xd586E7F844cEa2F87f50152665BCbc2C279D8d70", + "TK_L2DAI.e": "0x69B7d24f0E03Ff21949081C95dA7288fEa5C844D", + "L1CrossDomainMessengerFast": "0x8A3c2536FDae22D168e3ddaE55BF152660D98026", + "Proxy__L1CrossDomainMessengerFast": "0x5b6714b7926e6D7e34154C9AC945B489978fA7E7", + "L2LiquidityPool": "0x40425E72034eCC797cE77628672c5a7081B54470", + "L1LiquidityPool": "0xCa542506782592028796c456380a58E3D5589422", + "Proxy__L1LiquidityPool": "0x1E6D9F4dDD7C52EF8964e81E5a9a137Ee2489b21", + "Proxy__L2LiquidityPool": "0x0B1b1ce732564974233159213D3931C5400D4B3E", + "L2TokenPool": "0xbFC421c109c4A9851bCE258Ae57D2056c2E7F757", + "L1Message": "0xC12AF64d6Ffe4EB5e3421C91A569E6DA5Ee38f8e", + "L2Message": "0x3B57D8d49e73DA0D589f639A2334C1464C75ed8F", + "AtomicSwap": "0xe6663Fa30eaF07f38C60f33C917E70225ee0b846", + "L2ERC721": "0x00220f8ce1c4be8436574e575fE38558d85e2E6b", + "L2ERC721Reg": "0x938dd85B9c695D9a3A147F65f8991fcf5019BA75", + "L1NFTBridge": "0x9898E7b905dD66422cef07504D8CfFd77c453c48", + "L2NFTBridge": "0x70380b943e5f1fBe5dC8C2Ca3EB9E955B3580938", + "Proxy__L1NFTBridge": "0x328eb74673Eaa1D2d90A48E8137b015F1B6Ed35d", + "Proxy__L2NFTBridge": "0x1A0245f23056132fEcC7098bB011C5C303aE0625", + "L1MultiMessageRelayerFast": "0xf9821061774b9693359F582b007A5F1C39d75Ae3", + "DiscretionaryExitFee": "0x4ef8b611e05121d511d930Bf7EBaeE37f87bfC03", + "FeedRegistry": "0xd5984bD8568447e44d922793E3f210f8F960F065", + "BOBAUSD_Aggregator": "0x82e4fCEBa2d0ce0B3f394b6Ab13e4b1B2D485b89", + "BobaBillingContract": "0x8A4cf5504405A96be09c4fAc2F5f96c6BAe6951c", + "Proxy__BobaBillingContract": "0xc4243ecE585B843c7cf92E65617A4211FA580dDb", + "Boba_GasPriceOracle":"0x4200000000000000000000000000000000000025", + "Proxy__Boba_GasPriceOracle":"0x4200000000000000000000000000000000000024", + "BobaTuringCredit": "0x4200000000000000000000000000000000000021", + "Proxy__BobaTuringCredit": "0x4200000000000000000000000000000000000020", + "L2StandardTokenFactory": "0xD2ae16D8c66ac7bc1Cf3c9e5d6bfE5f76BeDb826" +} diff --git a/packages/boba/register/addresses/addressBobaBeam_0x564c10A60af35a07f0EA8Be3106a4D81014b21a0.json b/packages/boba/register/addresses/addressBobaBeam_0x564c10A60af35a07f0EA8Be3106a4D81014b21a0.json new file mode 100644 index 0000000000..dc7cf88f92 --- /dev/null +++ b/packages/boba/register/addresses/addressBobaBeam_0x564c10A60af35a07f0EA8Be3106a4D81014b21a0.json @@ -0,0 +1,47 @@ +{ + "BondManager": "0xcfe333e0e48EC71f1399a76001cf39E0c6A51dA5", + "CanonicalTransactionChain": "0x99C970105cf6EE2e22b563CB86bCA42D05ac7A95", + "ChainStorageContainer-CTC-batches": "0x808fD25dd00D5F8915Ad69326bFD75A6E014f9b3", + "ChainStorageContainer-CTC-queue": "0x1D023D0B9E8aa136241eB8e8827876f51ef49851", + "ChainStorageContainer-SCC-batches": "0x5Ee60822c68CF0966D8Dc53255627216b4ADC30f", + "L1MultiMessageRelayer": "0x3664bC9BA25D0d3911c39d8ae1734b0B5A3495C1", + "AddressManager": "0x564c10A60af35a07f0EA8Be3106a4D81014b21a0", + "OVM_L1CrossDomainMessenger": "0x9182A0AA011f97633d44383F446A5951bDD3f5bf", + "Proxy__L1CrossDomainMessenger": "0x4765f8b50Bbe049045bBA1270dc7A8CDF17165cF", + "Proxy__L1StandardBridge": "0xAf5297f68D48cd2DE37Ee5cbaC0647fbA4132985", + "StateCommitmentChain": "0xAD379B1518f50Fc737536D2Ec2c13E4640e228A8", + "OVM_Sequencer": "0x9a57cd0a2241f3e5074bec89a86db59098d73e6e", + "Deployer": "0xC31ca2482c936d92dd465391B45940e802A86eDc", + "TK_L1BOBA": "0x18D17A9fD652D7d6a59903E23792ab97F832Ed6C", + "TK_L2BOBA": "0x4200000000000000000000000000000000000006", + "TK_L2WBOBA9": "0x74686A29ac7C5703bDC4f9C2DA176DcE55d4DbAC", + "TK_L1GLMR": "0x0000000000000000000000000000000000000000", + "TK_L2GLMR": "0x4200000000000000000000000000000000000023", + "L1CrossDomainMessengerFast": "0xFd4892a500303f5Bfe7C78D49a6aB3dddfCccb92", + "Proxy__L1CrossDomainMessengerFast": "0x17d02C3e6cB69225d83d0bADEb0fC09aE735CA3b", + "L2LiquidityPool": "0x079D6565eEE0129fAe337B52C217951f70c58CFa", + "L1LiquidityPool": "0x1c98d96cfcDc4599D5FbB61Aa30301d94fcA8002", + "Proxy__L1LiquidityPool": "0x3fBc139f80a474c9B19A734e9ABb285b6550dF58", + "Proxy__L2LiquidityPool": "0xD7d057F1b1caBB637BFc81F9bf1Fb74f54941E65", + "L2TokenPool": "0x5Ee60822c68CF0966D8Dc53255627216b4ADC30f", + "L1Message": "0x3bdF3E4543eac155dF6d7F0e5cf55a90E468a33b", + "L2Message": "0x99C970105cf6EE2e22b563CB86bCA42D05ac7A95", + "AtomicSwap": "0xAD379B1518f50Fc737536D2Ec2c13E4640e228A8", + "L2ERC721": "0xD5Ad3B843c4dE06762972a6c1d15BD0Ac96E0231", + "L2ERC721Reg": "0xcfe333e0e48EC71f1399a76001cf39E0c6A51dA5", + "L1NFTBridge": "0x65802425d28168e8148B5D13c35e7490Ac52524e", + "L2NFTBridge": "0xFbcc3F48a6Ca8D169f318360E5d9fe00e553F543", + "Proxy__L1NFTBridge": "0x7f61EB6FFe966E8c14AFb8754Bf0825eb6f54bd7", + "Proxy__L2NFTBridge": "0x9182A0AA011f97633d44383F446A5951bDD3f5bf", + "L1MultiMessageRelayerFast": "0xE2EE964E39720f78Cd75BC146Ed078D301981759", + "DiscretionaryExitFee": "0xC828226424E9D9686bddC0fBA91c4e234b3e6F55", + "FeedRegistry": "0xF60bc956315f4E1EA63B925bA4d857CDd95f3532", + "BOBAUSD_Aggregator": "0xAf5297f68D48cd2DE37Ee5cbaC0647fbA4132985", + "BobaBillingContract": "0xf237D39597B41c9E426e1F23a6aC148DC2a9176e", + "Proxy__BobaBillingContract": "0xb210a4BB024196dC8c5f6f407220cA83e65e45FE", + "Boba_GasPriceOracle":"0x4200000000000000000000000000000000000025", + "Proxy__Boba_GasPriceOracle":"0x4200000000000000000000000000000000000024", + "BobaTuringCredit": "0x4200000000000000000000000000000000000021", + "Proxy__BobaTuringCredit": "0x4200000000000000000000000000000000000020", + "L2StandardTokenFactory": "0xD2ae16D8c66ac7bc1Cf3c9e5d6bfE5f76BeDb826" +} diff --git a/packages/boba/register/addresses/addressBobaBnbTestnet_0xAee1fb3f4353a9060aEC3943fE932b6Efe35CdAa.json b/packages/boba/register/addresses/addressBobaBnbTestnet_0xAee1fb3f4353a9060aEC3943fE932b6Efe35CdAa.json new file mode 100644 index 0000000000..e8f4cdc384 --- /dev/null +++ b/packages/boba/register/addresses/addressBobaBnbTestnet_0xAee1fb3f4353a9060aEC3943fE932b6Efe35CdAa.json @@ -0,0 +1,39 @@ +{ + "AddressManager": "0xAee1fb3f4353a9060aEC3943fE932b6Efe35CdAa", + "OVM_L1CrossDomainMessenger": "0x6fA80303E479Ea2d705F4f241Ef162aA2F793e71", + "Proxy__L1CrossDomainMessenger": "0x53aD38aE4a63Fe33a86E011F7AF4d3fDe3daD145", + "Proxy__L1StandardBridge": "0xBf0939120b4F5E3196b9E12cAC291e03dD058e9a", + "TK_L1BOBA": "0x875cD11fDf085e0E11B0EE6b814b6d0b38fA554C", + "TK_L2BOBA": "0x4200000000000000000000000000000000000006", + "TK_L1tBNB": "0x0000000000000000000000000000000000000000", + "TK_L2tBNB": "0x4200000000000000000000000000000000000023", + "L1CrossDomainMessengerFast": "0xf5a68fC4734a657652717aCC024fAb390274C0E6", + "Proxy__L1CrossDomainMessengerFast": "0xbbD6a271abcC44f6dE284E6051Da76b4fB57458C", + "L2LiquidityPool": "0x8e449c8267cbe89e0615F6ea8FBf885B5755F90D", + "L1LiquidityPool": "0x026fCac45B06395f626c5e6698444B0B51bC7B43", + "Proxy__L1LiquidityPool": "0xed142c7BdA2A3d5b08Eae78C96b37FFe60Fecf80", + "Proxy__L2LiquidityPool": "0xa1786aDDe89d62014CC50bE01d53c16C7A80D460", + "L2TokenPool": "0x14718bB320d6FC2681EF86864732211a9A0928dD", + "L1Message": "0xb743f3A682C846ccC4584bd8bCb434320a769216", + "L2Message": "0x65f291CDfB05bd1D639DF6268F98594fdacDeCa6", + "AtomicSwap": "0x37FB8bB9EA100CA9a0DE822c9923643ef48Cb8EE", + "L2ERC721": "0x81cF4cBEDF5602401178862f0225b93D2deB2E28", + "L2ERC721Reg": "0x6737867ddd04272a79E7207a008f213e336b00e1", + "L1NFTBridge": "0x347cCB98f420E0E7fbeEd4808732b21C1C86db59", + "L2NFTBridge": "0x3de30b620bA8A44423F70c42f9ed973541d11B12", + "Proxy__L1NFTBridge": "0x4c3f621d01c22658F711c70a12662ECDfCA5916A", + "Proxy__L2NFTBridge": "0x6fA80303E479Ea2d705F4f241Ef162aA2F793e71", + "L1MultiMessageRelayerFast": "0x0F01394F5fc19bA1B9F669bA79b76c9EaAe37987", + "DiscretionaryExitFee": "0x587fA2e1d797Ff79Bf86a24E156A559b6551b2B3", + "FeedRegistry": "0xBf0939120b4F5E3196b9E12cAC291e03dD058e9a", + "BOBAUSD_Aggregator": "0xeb92a5d7d92F5Af18DAdf6c6D7f02be55F3ff355", + "BobaBillingContract": "0x72a3d638C4d022abED8A941aE856da28dB2faB7f", + "Proxy__BobaBillingContract": "0xe43Ff19D561EA6DB84Dd2Ec3754027fAFDa79499", + "Boba_GasPriceOracle":"0x4200000000000000000000000000000000000025", + "Proxy__Boba_GasPriceOracle":"0x4200000000000000000000000000000000000024", + "BobaTuringCredit": "0x4200000000000000000000000000000000000021", + "Proxy__BobaTuringCredit": "0x4200000000000000000000000000000000000020", + "AuthenticatedFaucet": "0x4Bee9fE15Ff3645A85792607ce4Eee14ab9E9E02", + "WBOBA9": "0xb743f3A682C846ccC4584bd8bCb434320a769216", + "L2StandardTokenFactory": "0xD2ae16D8c66ac7bc1Cf3c9e5d6bfE5f76BeDb826" +} diff --git a/packages/boba/register/addresses/addressBobaBnb_0xeb989B25597259cfa51Bd396cE1d4B085EC4c753.json b/packages/boba/register/addresses/addressBobaBnb_0xeb989B25597259cfa51Bd396cE1d4B085EC4c753.json new file mode 100644 index 0000000000..2d458de7e4 --- /dev/null +++ b/packages/boba/register/addresses/addressBobaBnb_0xeb989B25597259cfa51Bd396cE1d4B085EC4c753.json @@ -0,0 +1,51 @@ +{ + "BondManager": "0xEB6652A4eb6e0d003Fbb3DD76Ae72694175191cd", + "CanonicalTransactionChain": "0xA0E38a8FE293E9e95c6A4a882F396F1c80e9e2e4", + "ChainStorageContainer-CTC-batches": "0xA774C3f4572C5BA93F75D802ea7Dc6F93228e5cc", + "ChainStorageContainer-CTC-queue": "0xA3f58cF4D4843F600A7e95CE1B23322C6A1A9695", + "ChainStorageContainer-SCC-batches": "0x181D33986CFb5229e42ac3b3a09cad39F1011D17", + "L1MultiMessageRelayer": "0x1E633Dcd0d3D349126983D58988051F7c62c543D", + "AddressManager": "0xeb989B25597259cfa51Bd396cE1d4B085EC4c753", + "OVM_L1CrossDomainMessenger": "0x4085c76ca31c8445A57ABc41393d7D57176A505b", + "Proxy__L1CrossDomainMessenger": "0x31338a7D5d123E18a9a71447136B54B6D28241ae", + "Proxy__L1StandardBridge": "0x1E0f7f4b2656b14C161f1caDF3076C02908F9ACC", + "StateCommitmentChain": "0xeF85fA550e6EC5486121313C895EDe1005e2397f", + "TK_L1BOBA": "0xE0DB679377A0F5Ae2BaE485DE475c9e1d8A4607D", + "TK_L2BOBA": "0x4200000000000000000000000000000000000006", + "TK_L2WBOBA9": "0xC58aaD327D6D58D979882601ba8DDa0685B505eA", + "TK_L1BNB": "0x0000000000000000000000000000000000000000", + "TK_L2BNB": "0x4200000000000000000000000000000000000023", + "TK_L1USDC": "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d", + "TK_L2USDC": "0x9F98f9F312D23d078061962837042b8918e6aff2", + "TK_L1BUSD": "0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56", + "TK_L2BUSD": "0x4a2c2838c3907D024916c3f4Fe07832745Ae4bec", + "TK_L1USDT": "0x55d398326f99059fF775485246999027B3197955", + "TK_L2USDT": "0x1E633Dcd0d3D349126983D58988051F7c62c543D", + "L1CrossDomainMessengerFast": "0x0163D3C18781521cf8e72790d15CCF118A540e24", + "Proxy__L1CrossDomainMessengerFast": "0xBe349cABeA97bB933f8C2594634Deb858167f83c", + "L2LiquidityPool": "0xE0DB679377A0F5Ae2BaE485DE475c9e1d8A4607D", + "L1LiquidityPool": "0x43A24672fd6616DA4AA935A17B5aF282375d0F55", + "Proxy__L1LiquidityPool": "0x88b5d70be4fc644c55b164AD09A3DFD44E31eC59", + "Proxy__L2LiquidityPool": "0x5E36d0ADBDEa248c207312d493a08a6d182D0805", + "L2TokenPool": "0xC1778d29c09f220e4fC6d6e8cEDF040e35b09a88", + "L1Message": "0x58EF355c3A6B5036bF6336b5a5afD5B56d48B9e4", + "L2Message": "0xe8D5B98f999e55635f99310E9eBF3Bc0DBb07194", + "AtomicSwap": "0x1148585B2F2a2A3Ce554Dd9a9a25a5D4b5dFB108", + "L2ERC721": "0xA9B4d027CC4985AE76AB09c3de9BCD9Ec529d3cA", + "L2ERC721Reg": "0x05feB25a1aD2bA11949A0788B56c0eD9fFc09944", + "L1NFTBridge": "0xdf10be20f5a457Ad8eAa0c38E3006F275dFC5cE4", + "L2NFTBridge": "0x17bc3bA65463CAf7578df747E2610e90fe9BCe3C", + "Proxy__L1NFTBridge": "0x76bD545C03391d4e6E3d5cC2B5617c94C6038c86", + "Proxy__L2NFTBridge": "0xA774C3f4572C5BA93F75D802ea7Dc6F93228e5cc", + "L1MultiMessageRelayerFast": "0x2dB5717B37Af9A1D9a28829Ea977B4aE4aEE2AED", + "DiscretionaryExitFee": "0xEB6652A4eb6e0d003Fbb3DD76Ae72694175191cd", + "FeedRegistry": "0xC21e15185659D2fB166562bf57f241d50259AB24", + "BOBAUSD_Aggregator": "0x7D5A06bF6b7c793352A380720620d03813680ec1", + "BobaBillingContract": "0x4085c76ca31c8445A57ABc41393d7D57176A505b", + "Proxy__BobaBillingContract": "0xf626b0d7C028E6b89c15ca417f21080E376de65b", + "Boba_GasPriceOracle":"0x4200000000000000000000000000000000000025", + "Proxy__Boba_GasPriceOracle":"0x4200000000000000000000000000000000000024", + "BobaTuringCredit": "0x4200000000000000000000000000000000000021", + "Proxy__BobaTuringCredit": "0x4200000000000000000000000000000000000020", + "L2StandardTokenFactory": "0xD2ae16D8c66ac7bc1Cf3c9e5d6bfE5f76BeDb826" +} diff --git a/packages/boba/register/addresses/addressBobaFuji_0xcE78de95b85212BC348452e91e0e74c17cf37c79.json b/packages/boba/register/addresses/addressBobaFuji_0xcE78de95b85212BC348452e91e0e74c17cf37c79.json new file mode 100644 index 0000000000..a43403c637 --- /dev/null +++ b/packages/boba/register/addresses/addressBobaFuji_0xcE78de95b85212BC348452e91e0e74c17cf37c79.json @@ -0,0 +1,38 @@ +{ + "AddressManager": "0xcE78de95b85212BC348452e91e0e74c17cf37c79", + "Proxy__L1CrossDomainMessenger": "0x68c19B7FbAe4F8034cf6316b2045ba6aB6978F6b", + "Proxy__L1StandardBridge": "0x07B606934b5B5D6A9E1f8b78A0B26215FF58Ad56", + "TK_L1BOBA": "0xEaE78E78cC22690719361F65a50734A15aaE698C", + "TK_L2BOBA": "0x4200000000000000000000000000000000000006", + "TK_L1AVAX": "0x0000000000000000000000000000000000000000", + "TK_L2AVAX": "0x4200000000000000000000000000000000000023", + "L1CrossDomainMessengerFast": "0x3C6B8493047b44754EF57129d43d151040871bb7", + "Proxy__L1CrossDomainMessengerFast": "0xBc5249095c890F58C0b75795bd21667eFd123F5F", + "L2LiquidityPool": "0xC5a27088fF840Abc3057C0B5f8B98511033c4867", + "L1LiquidityPool": "0x7BD3DC4aB8087840aB702eb6689d57a60e2143e4", + "Proxy__L1LiquidityPool": "0x30caB2fCA6260FB91B172D4AFB215514069868ea", + "Proxy__L2LiquidityPool": "0x9198b3f5C6acCf05dF8847766A68d992355c18c4", + "L2TokenPool": "0x5edFE3970732EA7878b6e17c1b7Cf27EcF108bC4", + "L1Message": "0x99411339aB22441D6D5f49Ae63deE8c47db85D49", + "L2Message": "0x089489B38e15B21A786791D4409f6E9e2afd7851", + "AtomicSwap": "0x5565f730cab69977E89F21de35f355F2F9fEB1C5", + "L2ERC721": "0xBdBF3b9803DDc910a77bF4852a283Edc055457e5", + "L2ERC721Reg": "0xb1f74c5A3c0cE11d1EB20c03393cc0234254C315", + "L1NFTBridge": "0x8C3E97fdF162615e9e928b4a69b0CB8A738A1910", + "L2NFTBridge": "0xAe34F89F7549903EF99A1cAc77649EA310cC5AAA", + "Proxy__L1NFTBridge": "0xA7A1415eC63Bf410b27AcDAF42fC3c63756E2bFc", + "Proxy__L2NFTBridge": "0x2e59D69cA439b3ab0c1AD8b2762377Afb5C71C7B", + "L1MultiMessageRelayerFast": "0x5e6B412b4fA8373a17aD85B269fA5c354ea57e63", + "DiscretionaryExitFee": "0xED6760E89fB35731ae82d7D149d8c94fdDb376fE", + "FeedRegistry": "0x54CB1E4C1d5F545Ebe9C281927Ee4c0B514b9C33", + "BOBAUSD_Aggregator": "0xF4f9B28F450F3Ecc516D4c91CCFAe52C72c17D33", + "BobaBillingContract": "0xCD50AE5e592ea38bA036aE2a2D6A58f8CAd050BB", + "Proxy__BobaBillingContract": "0xB7E29AB7FB9b6406BAb33Cf6f868fE25B9Ad0160", + "Boba_GasPriceOracle":"0x4200000000000000000000000000000000000025", + "Proxy__Boba_GasPriceOracle":"0x4200000000000000000000000000000000000024", + "BobaTuringCredit": "0x4200000000000000000000000000000000000021", + "Proxy__BobaTuringCredit": "0x4200000000000000000000000000000000000020", + "AuthenticatedFaucet": "0x5f6D019832FA4522DB7b94A4fe0DDBb73212FAcE", + "WBOBA9": "0xA7cad1B188Ac7E4d05644D1cf1cBcEB4aD372a9D", + "L2StandardTokenFactory": "0xD2ae16D8c66ac7bc1Cf3c9e5d6bfE5f76BeDb826" +} diff --git a/packages/boba/register/addresses/addressBobaOpera_0x4e7325bcf09e091Bb8119258B885D4ef687B7386.json b/packages/boba/register/addresses/addressBobaOpera_0x4e7325bcf09e091Bb8119258B885D4ef687B7386.json new file mode 100644 index 0000000000..c560b45fd3 --- /dev/null +++ b/packages/boba/register/addresses/addressBobaOpera_0x4e7325bcf09e091Bb8119258B885D4ef687B7386.json @@ -0,0 +1,49 @@ +{ + "BondManager": "0xCcA5a1CB9fAD5F2A5b88D95440dA7c83EC031Cb1", + "CanonicalTransactionChain": "0x6001C473E020D3562Ea436B61aE4d2e91e7078cE", + "ChainStorageContainer-CTC-batches": "0x282267F1CD5562F91036a1f9FA52961A48385139", + "ChainStorageContainer-CTC-queue": "0x36666Bc3d9FE6fDCfC5Aa1f6e907f36EbF8a8176", + "ChainStorageContainer-SCC-batches": "0x2E3375B06811B3Baed04CC86C691B918155fE176", + "L1MultiMessageRelayer": "0xD8DcA5fC53a83Cf06ec744a7226C23951a353A0f", + "AddressManager": "0x4e7325bcf09e091Bb8119258B885D4ef687B7386", + "OVM_L1CrossDomainMessenger": "0xDEE010E1EedBE26C8AB3AEC8a16Cb974B31068FF", + "Proxy__L1CrossDomainMessenger": "0x64Fca36c52628e40de8684C4C3B5EdB22Fd2eFd9", + "Proxy__L1StandardBridge": "0xb7629EF94B991865940E8A840Aa7d68fa88c3Fe8", + "StateCommitmentChain": "0xF764C4f8D2982432239A110Cf6B08e95631cE564", + "TK_L1BOBA": "0x4389b230D15119c347B9E8BEA6d930A21aaDF6BA", + "TK_L2BOBA": "0x4200000000000000000000000000000000000006", + "TK_L2WBOBA": "0x5ad2635e9aBce5F95AdcF164Ac81bcAeBdC8E345", + "TK_L1FTM": "0x0000000000000000000000000000000000000000", + "TK_L2FTM": "0x4200000000000000000000000000000000000023", + "TK_L1USDC": "0x04068DA6C83AFCFA0e13ba15A6696662335D5B75", + "TK_L2USDC": "0xb7629EF94B991865940E8A840Aa7d68fa88c3Fe8", + "TK_L1DAI": "0x8D11eC38a3EB5E956B052f67Da8Bdc9bef8Abf3E", + "TK_L2DAI": "0x31223A147fF76C3fC43d67F8BC36F11E034c484e", + "L1CrossDomainMessengerFast": "0xf74C652a160BA2B2e82D8702A743c8Db83F8DA7d", + "Proxy__L1CrossDomainMessengerFast": "0xC0597ED18446254E4dd0CA5D80eb07D3f2E462cF", + "L2LiquidityPool": "0x4389b230D15119c347B9E8BEA6d930A21aaDF6BA", + "L1LiquidityPool": "0x6eA17632630e43dAF94AA776Eba606Ec5d61Ab6A", + "Proxy__L1LiquidityPool": "0x0bF5402a57970C7BD9883248534B644Ab545e6d4", + "Proxy__L2LiquidityPool": "0xD502Ca71dE5e072918884f638408291c066EF1F6", + "L2TokenPool": "0xEb26f95D155f133Ca3B1fc36C7cFcE7C5239e139", + "L1Message": "0xFa965d70BFF2BCb4B76Ac3A485a28C0D5a06fA9e", + "L2Message": "0xa8082C1D4e8615A962494A7Dd8ffe7be089458eE", + "AtomicSwap": "0xA8b85842b7556F556c0Cf0Af71b9241EA8baDc6F", + "L2ERC721": "0xa2444dC15D92D4cf8B51DAB300C1b8534602Db29", + "L2ERC721Reg": "0x18028b28EE7A8000dCB9e55c6bfaEBC5837AdB79", + "L1NFTBridge": "0x9BE15EC6BF78536a970F444A41361367B5de1098", + "L2NFTBridge": "0x282267F1CD5562F91036a1f9FA52961A48385139", + "Proxy__L1NFTBridge": "0x58bfe4D8108f0657585c9e4C106B3FB8b469eeB9", + "Proxy__L2NFTBridge": "0xd0223931513E72C4cbBE97662C07825C7E71DD9C", + "L1MultiMessageRelayerFast": "0xE7beDcedF3E3054aF891DddeF61775A23a16CB90", + "DiscretionaryExitFee": "0xBD4e12b0634b154932D75503E2Ff404953CbD1Bf", + "FeedRegistry": "0x6001C473E020D3562Ea436B61aE4d2e91e7078cE", + "BOBAUSD_Aggregator": "0x677360aba457B747056f3E00095644D9ADB5753D", + "BobaBillingContract": "0xCcA5a1CB9fAD5F2A5b88D95440dA7c83EC031Cb1", + "Proxy__BobaBillingContract": "0xD5b0E66566FEe76d6c550e7190385703Bcf11354", + "Boba_GasPriceOracle":"0x4200000000000000000000000000000000000025", + "Proxy__Boba_GasPriceOracle":"0x4200000000000000000000000000000000000024", + "BobaTuringCredit": "0x4200000000000000000000000000000000000021", + "Proxy__BobaTuringCredit": "0x4200000000000000000000000000000000000020", + "L2StandardTokenFactory": "0xD2ae16D8c66ac7bc1Cf3c9e5d6bfE5f76BeDb826" +} diff --git a/packages/boba/register/addresses/addressesBobaBase_0xF8d0bF3a1411AC973A606f90B2d1ee0840e5979B.json b/packages/boba/register/addresses/addressesBobaBase_0xF8d0bF3a1411AC973A606f90B2d1ee0840e5979B.json new file mode 100644 index 0000000000..196d97db68 --- /dev/null +++ b/packages/boba/register/addresses/addressesBobaBase_0xF8d0bF3a1411AC973A606f90B2d1ee0840e5979B.json @@ -0,0 +1,40 @@ +{ + "AddressManager": "0xF8d0bF3a1411AC973A606f90B2d1ee0840e5979B", + "Proxy__L1StandardBridge": "0xEcca5FEd8154420403549f5d8F123fcE69fae806", + "Proxy__L1CrossDomainMessenger": "0x76DB375075F1d5Dcd1D70Fc07F69a5c7b40ab877", + "TK_L1BOBA": "0x1365fd7BcEE84686DBCA71e1571C0d9ad9E64945", + "TK_L2BOBA": "0x4200000000000000000000000000000000000006", + "TK_L1DEV": "0x0000000000000000000000000000000000000000", + "TK_L2DEV": "0x4200000000000000000000000000000000000023", + "TK_L1GLMR": "0x0000000000000000000000000000000000000000", + "TK_L2GLMR": "0x4200000000000000000000000000000000000023", + "L1CrossDomainMessengerFast": "0x7bE12FCB0Fc0979f4DD1A9A1CCec9d0036E634A1", + "Proxy__L1CrossDomainMessengerFast": "0xAE8885D3b7937af9480cd7301925a88Dfb0cE9f6", + "L2LiquidityPool": "0xEb0d3b107528FE17b9F55360D03351fe3D0ACaB2", + "L1LiquidityPool": "0xd779D5e0aDA790f382Cd80d0a90De533b8262b9f", + "Proxy__L1LiquidityPool": "0x569a3e1A4A50D0F53BDF05d50D5FeAB3f716f5A1", + "Proxy__L2LiquidityPool": "0xb227a9FebBa59B8Fe5dF7Ad81afac6E7CdE5a4A5", + "L2TokenPool": "0x152eE45C2eF3E6B303d0603C82b785255D386Fd0", + "L1Message": "0x3C285ACC9CAD39c94CF7E46850bd9098b6f858F5", + "L2Message": "0xECF2d55E35E14eC146f17a17B1D2e082bAA12B40", + "AtomicSwap": "0x2e965d49E69dA6182bdc331b740384CF8745A690", + "L2ERC721": "0x3a93df8eba34AFa4Fb74a09D7cb9BB6E528d2E0C", + "L2ERC721Reg": "0xb73Bc7AbED40236ca53b2225e3FA497c04A0F718", + "L1NFTBridge": "0xf5aCb091936715eCAC49d5759b4801703a175387", + "L2NFTBridge": "0x64371C6b9acFDBC14A98CD794a531Ff737Ef0F98", + "Proxy__L1NFTBridge": "0x1E12Ba552Ac35351563091737910d9E5d1DaD17a", + "Proxy__L2NFTBridge": "0x8E65834B52c3aCc79206a0F09c4b627BC588f09e", + "L1MultiMessageRelayerFast": "0x874a7Ea9722b96924e186f0263866FA90a7C777b", + "DiscretionaryExitFee": "0x01ce26900fC11aBc2AcF53154772bb251c8aA005", + "FeedRegistry": "0x0d2E819A8E0FC9377d3D488A9480D6C00ADE986F", + "BOBAUSD_Aggregator": "0x66335BA50c757a5b1Ee6FB3c3ed703e4a26ea526", + "BobaBillingContract": "0x17CC69Adc242f9C50132503A2e5d5d9cD4889786", + "Proxy__BobaBillingContract": "0x05C9f36D901594D220311B211fA26DbD58B87717", + "Boba_GasPriceOracle":"0x4200000000000000000000000000000000000025", + "Proxy__Boba_GasPriceOracle":"0x4200000000000000000000000000000000000024", + "BobaTuringCredit": "0x4200000000000000000000000000000000000021", + "Proxy__BobaTuringCredit": "0x4200000000000000000000000000000000000020", + "AuthenticatedFaucet": "0x8b6A1c0590Ab8A9CED9ADa87Df485eCdd97886E2", + "WBOBA9": "0xc03cc0d0995e7b677348e396F5F1D70Fe8667fCe", + "L2StandardTokenFactory": "0xD2ae16D8c66ac7bc1Cf3c9e5d6bfE5f76BeDb826" +} diff --git a/packages/boba/register/addresses/addressesBobaOperaTestnet_0x12ad9f501149D3FDd703cC10c567F416B7F0af8b.json b/packages/boba/register/addresses/addressesBobaOperaTestnet_0x12ad9f501149D3FDd703cC10c567F416B7F0af8b.json new file mode 100644 index 0000000000..1db2669f4a --- /dev/null +++ b/packages/boba/register/addresses/addressesBobaOperaTestnet_0x12ad9f501149D3FDd703cC10c567F416B7F0af8b.json @@ -0,0 +1,38 @@ +{ + "AddressManager": "0x12ad9f501149D3FDd703cC10c567F416B7F0af8b", + "Proxy__L1CrossDomainMessenger": "0xEecAD665ca933eeA4a9a2db600E538c1391930d1", + "Proxy__L1StandardBridge": "0x86FC7AeFcd69983A8d82eAB1E0EaFD38bB42fd3f", + "TK_L1BOBA": "0x5E747DfA79b8f9e46BE0CC67e378b7600350B2eF", + "TK_L2BOBA": "0x4200000000000000000000000000000000000006", + "TK_L1FTM": "0x0000000000000000000000000000000000000000", + "TK_L2FTM": "0x4200000000000000000000000000000000000023", + "L1CrossDomainMessengerFast": "0x7bE12FCB0Fc0979f4DD1A9A1CCec9d0036E634A1", + "Proxy__L1CrossDomainMessengerFast": "0xE5781E5E9CbC67E91DF93eD01E922De30125e491", + "L2LiquidityPool": "0x00Fda9B3952f80c4238C371064FA6667b6146468", + "L1LiquidityPool": "0x6A27b80a11156A7aA88CF34EC73F130df4f28bED", + "Proxy__L1LiquidityPool": "0x34024168ba3cfa608005b5E9f13389bb2532422A", + "Proxy__L2LiquidityPool": "0xE7Da2a8EBcbBa0Dc6082B8D0faBAcA0176920760", + "L2TokenPool": "0x352d964E9aD016f122dc78Afa5164417907E0FaF", + "L1Message": "0x154128647Ff7fc41DdaD3d09f7c83340140539C5", + "L2Message": "0xa97a909D967B150E27AB58ca6d0cb40B39200Be1", + "AtomicSwap": "0x1bc8Bd8FCAd96ee663b6325F71F818Cce678083D", + "L2ERC721": "0x727207c505c1D95Ef7Ed93f74443D72C155064E7", + "L2ERC721Reg": "0xb5F92c9d10539137C9602A626d7F98823e58f3aA", + "L1NFTBridge": "0xA3f17f06F7F02156692D795a1782105dA530631c", + "L2NFTBridge": "0xEecAD665ca933eeA4a9a2db600E538c1391930d1", + "Proxy__L1NFTBridge": "0x5E52f340D43Ee819dd8a38D55Cc27293603Ac5fb", + "Proxy__L2NFTBridge": "0x310FA48450dF21fBC99b937a7AafBc3B7Af6f6D1", + "L1MultiMessageRelayerFast": "0x9Af237336C29dCbA346764af8e8E1F0ba83D1eE5", + "DiscretionaryExitFee": "0x6E7033f647f932D23de37BD3b25b8F56DeAD4034", + "FeedRegistry": "0x48dfB307f6fFbDB9229E63beA2C127e7500DC5Ae", + "BOBAUSD_Aggregator": "0xA145e444abAd1Cb233A37cED870c59FD97e774bf", + "BobaBillingContract": "0x5E747DfA79b8f9e46BE0CC67e378b7600350B2eF", + "Proxy__BobaBillingContract": "0x675Ea342D2a85D7db0Cc79AE64196ad628Ce8187", + "Boba_GasPriceOracle":"0x4200000000000000000000000000000000000025", + "Proxy__Boba_GasPriceOracle":"0x4200000000000000000000000000000000000024", + "BobaTuringCredit": "0x4200000000000000000000000000000000000021", + "Proxy__BobaTuringCredit": "0x4200000000000000000000000000000000000020", + "AuthenticatedFaucet": "0xCED1459C6B56a85363426a502a24De99fBbF5a83", + "WBOBA9": "0xfd7f8a9F2D11B30a3571395Be9601720B6a32995", + "L2StandardTokenFactory": "0xD2ae16D8c66ac7bc1Cf3c9e5d6bfE5f76BeDb826" +} diff --git a/packages/boba/register/addresses/tokenInfo.json b/packages/boba/register/addresses/tokenInfo.json index 5689658e0f..0b9fed46a3 100644 --- a/packages/boba/register/addresses/tokenInfo.json +++ b/packages/boba/register/addresses/tokenInfo.json @@ -526,5 +526,303 @@ "decimals": 18 } } + }, + "43114": { + "L1": { + "0x3cD790449CF7D187a143d4Bd7F4654d4f2403e02": { + "name": "BOBA Token", + "symbol": "BOBA", + "decimals": 18 + }, + "0x42006Ab57701251B580bDFc24778C43c9ff589A1": { + "name": "EVO", + "symbol": "EVO", + "decimals": 18 + }, + "0xc7198437980c041c805A1EDcbA50c1Ce5db95118": { + "name": "Tether USD", + "symbol": "USDT.e", + "decimals": 6 + }, + "0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7": { + "name": "TetherToken", + "symbol": "USDt", + "decimals": 6 + }, + "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E": { + "name": "USD Coin", + "symbol": "USDC", + "decimals": 6 + }, + "0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664": { + "name": "USD Coin", + "symbol": "USDC.e", + "decimals": 6 + }, + "0x19860CCB0A68fd4213aB9D8266F7bBf05A8dDe98": { + "name": "Binance USD", + "symbol": "BUSD.e", + "decimals": 18 + }, + "0x9C9e5fD8bbc25984B178FdCE6117Defa39d2db39": { + "name": "BUSD Token", + "symbol": "BUSD", + "decimals": 18 + }, + "0xd586E7F844cEa2F87f50152665BCbc2C279D8d70": { + "name": "Dai Stablecoin", + "symbol": "DAI.e", + "decimals": 18 + } + }, + "L2": { + "0x4200000000000000000000000000000000000006": { + "name": "BOBA Token", + "symbol": "BOBA", + "decimals": 18 + }, + "0xc8849f32138de93F6097199C5721a9EfD91ceE01": { + "name": "EVO", + "symbol": "EVO", + "decimals": 18 + }, + "0x4ED96c1dc969d7E2310D9582A68c39556C005912": { + "name": "Tether USD", + "symbol": "USDT.e", + "decimals": 6 + }, + "0xfaA13D82756f1e0e4dec9416b83121db3Fc35199": { + "name": "TetherToken", + "symbol": "USDt", + "decimals": 6 + }, + "0x12bb1A120dcF8Cb7152eDAC9f04d176DD7f41F7e": { + "name": "USD Coin", + "symbol": "USDC", + "decimals": 6 + }, + "0x126969743a6d300bab08F303f104f0f7DBAfbe20": { + "name": "USD Coin", + "symbol": "USDC.e", + "decimals": 6 + }, + "0xb8B0034CFD89925944C07Ac6CcB2834d1774cfb6": { + "name": "Binance USD", + "symbol": "BUSD.e", + "decimals": 18 + }, + "0x87e062dE99Ed71aF9b22dDA63e1b6D43333798f8": { + "name": "BUSD Token", + "symbol": "BUSD", + "decimals": 18 + }, + "0x69B7d24f0E03Ff21949081C95dA7288fEa5C844D": { + "name": "Dai Stablecoin", + "symbol": "DAI.e", + "decimals": 18 + }, + "0x4200000000000000000000000000000000000023": { + "name": "Avalanche", + "symbol": "AVAX", + "decimals": 18 + } + } + }, + "43113": { + "L1": { + "0xEaE78E78cC22690719361F65a50734A15aaE698C": { + "name": "BOBA Token", + "symbol": "BOBA", + "decimals": 18 + } + }, + "L2": { + "0x4200000000000000000000000000000000000006": { + "name": "BOBA Token", + "symbol": "BOBA", + "decimals": 18 + }, + "0x4200000000000000000000000000000000000023": { + "name": "Avalanche", + "symbol": "AVAX", + "decimals": 18 + } + } + }, + "56": { + "L1": { + "0xE0DB679377A0F5Ae2BaE485DE475c9e1d8A4607D": { + "name": "BOBA Token", + "symbol": "BOBA", + "decimals": 18 + }, + "0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d": { + "name": "USD Coin", + "symbol": "USDC", + "decimals": 18 + }, + "0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56": { + "name": "BUSD Token", + "symbol": "BUSD", + "decimals": 18 + }, + "0x55d398326f99059fF775485246999027B3197955": { + "name": "Tether USD", + "symbol": "USDT", + "decimals": 18 + } + }, + "L2": { + "0x4200000000000000000000000000000000000006": { + "name": "BOBA Token", + "symbol": "BOBA", + "decimals": 18 + }, + "0x9F98f9F312D23d078061962837042b8918e6aff2": { + "name": "USD Coin", + "symbol": "USDC", + "decimals": 18 + }, + "0x4a2c2838c3907D024916c3f4Fe07832745Ae4bec": { + "name": "BUSD Token", + "symbol": "BUSD", + "decimals": 18 + }, + "0x1E633Dcd0d3D349126983D58988051F7c62c543D": { + "name": "Tether USD", + "symbol": "USDT", + "decimals": 18 + }, + "0x4200000000000000000000000000000000000023": { + "name": "BNB", + "symbol": "BNB", + "decimals": 18 + } + } + }, + "97": { + "L1": { + "0x875cD11fDf085e0E11B0EE6b814b6d0b38fA554C": { + "name": "BOBA Token", + "symbol": "BOBA", + "decimals": 18 + } + }, + "L2": { + "0x4200000000000000000000000000000000000006": { + "name": "BOBA Token", + "symbol": "BOBA", + "decimals": 18 + }, + "0x4200000000000000000000000000000000000023": { + "name": "tBNB", + "symbol": "tBNB", + "decimals": 18 + } + } + }, + "1284": { + "L1": { + "0x18D17A9fD652D7d6a59903E23792ab97F832Ed6C": { + "name": "BOBA Token", + "symbol": "BOBA", + "decimals": 18 + } + }, + "L2": { + "0x4200000000000000000000000000000000000006": { + "name": "BOBA Token", + "symbol": "BOBA", + "decimals": 18 + }, + "0x4200000000000000000000000000000000000023": { + "name": "GLMR", + "symbol": "GLMR", + "decimals": 18 + } + } + }, + "1287": { + "L1": { + "0x1365fd7BcEE84686DBCA71e1571C0d9ad9E64945": { + "name": "BOBA Token", + "symbol": "BOBA", + "decimals": 18 + } + }, + "L2": { + "0x4200000000000000000000000000000000000006": { + "name": "BOBA Token", + "symbol": "BOBA", + "decimals": 18 + }, + "0x4200000000000000000000000000000000000023": { + "name": "DEV", + "symbol": "DEV", + "decimals": 18 + } + } + }, + "250": { + "L1": { + "0x4389b230D15119c347B9E8BEA6d930A21aaDF6BA": { + "name": "BOBA Token", + "symbol": "BOBA", + "decimals": 18 + }, + "0x04068DA6C83AFCFA0e13ba15A6696662335D5B75": { + "name": "USD Coin", + "symbol": "USDC", + "decimals": 6 + }, + "0x8D11eC38a3EB5E956B052f67Da8Bdc9bef8Abf3E": { + "name": "Dai Stablecoin", + "symbol": "DAI", + "decimals": 18 + } + }, + "L2": { + "0x4200000000000000000000000000000000000006": { + "name": "BOBA Token", + "symbol": "BOBA", + "decimals": 18 + }, + "0x4200000000000000000000000000000000000023": { + "name": "FTM", + "symbol": "FTM", + "decimals": 18 + }, + "0xb7629EF94B991865940E8A840Aa7d68fa88c3Fe8": { + "name": "USD Coin", + "symbol": "USDC", + "decimals": 6 + }, + "0x31223A147fF76C3fC43d67F8BC36F11E034c484e": { + "name": "Dai Stablecoin", + "symbol": "DAI", + "decimals": 18 + } + } + }, + "4002": { + "L1": { + "0x5E747DfA79b8f9e46BE0CC67e378b7600350B2eF": { + "name": "BOBA Token", + "symbol": "BOBA", + "decimals": 18 + } + }, + "L2": { + "0x4200000000000000000000000000000000000006": { + "name": "BOBA Token", + "symbol": "BOBA", + "decimals": 18 + }, + "0x4200000000000000000000000000000000000023": { + "name": "FTM", + "symbol": "FTM", + "decimals": 18 + } + } } } From baeaf1cc70b2af9ee9864b67d7a005ad8368e627 Mon Sep 17 00:00:00 2001 From: Sahil Kashetwar Date: Sat, 17 Dec 2022 00:02:42 +0530 Subject: [PATCH 04/32] updated sentry packages. --- packages/boba/gateway/package.json | 4 +- yarn.lock | 85 +++++++++++++++++------------- 2 files changed, 49 insertions(+), 40 deletions(-) diff --git a/packages/boba/gateway/package.json b/packages/boba/gateway/package.json index 9545facda3..745dd78c71 100644 --- a/packages/boba/gateway/package.json +++ b/packages/boba/gateway/package.json @@ -26,8 +26,8 @@ "@mui/icons-material": "^5.3.1", "@mui/material": "^5.4.0", "@mui/styles": "^5.3.0", - "@sentry/react": "^7.24.1", - "@sentry/tracing": "^7.24.1", + "@sentry/react": "^7.27.0", + "@sentry/tracing": "^7.27.0", "@typescript-eslint/eslint-plugin": "^5.10.2", "@typescript-eslint/parser": "^5.10.2", "axios": "^0.21.1", diff --git a/yarn.lock b/yarn.lock index a74f5ec14b..302e34264b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5049,14 +5049,15 @@ "@noble/hashes" "~1.1.1" "@scure/base" "~1.1.0" -"@sentry/browser@7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-7.12.1.tgz#2be6fa5c2529a2a75abac4d00aca786362302a1a" - integrity sha512-pgyL65CrGFLe8sKcEG8KXAuVTE8zkAsyTlv/AuME06cSdxzO/memPK/r3BI6EM7WupIdga+V5tQUldeT1kgHNA== - dependencies: - "@sentry/core" "7.12.1" - "@sentry/types" "7.12.1" - "@sentry/utils" "7.12.1" +"@sentry/browser@7.27.0": + version "7.27.0" + resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-7.27.0.tgz#540d292d418abbf0ac7cabb39fe1863b8fa0c85f" + integrity sha512-6z+q+omLqmdEvy+9i4j7xzIT6zgmWJnXqEiLCURnE34KsPq6wr6Nij1XHsTlApMcohOpPlo+C3nMTmz+oYUf5w== + dependencies: + "@sentry/core" "7.27.0" + "@sentry/replay" "7.27.0" + "@sentry/types" "7.27.0" + "@sentry/utils" "7.27.0" tslib "^1.9.3" "@sentry/core@5.30.0": @@ -5081,14 +5082,13 @@ "@sentry/utils" "6.19.7" tslib "^1.9.3" -"@sentry/core@7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.12.1.tgz#a22f1c530ed528a699ed204c36eb5fc8d308103d" - integrity sha512-DFHbzHFjukhlkRZ5xzfebx0IBzblW43kmfnalBBq7xEMscUvnhsYnlvL9Y20tuPZ/PrTcq4JAHbFluAvw6M0QQ== +"@sentry/core@7.27.0": + version "7.27.0" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.27.0.tgz#77d0964d5625430a491f274b6b1f64473a361757" + integrity sha512-9WkHMllGNOr6S55N2HKJYJj/2mog5Kv6mjruqlcHHPSgcKFA8bjwBXJTghy6UzwtGd14cyS/X7h5AVUkvuXTMw== dependencies: - "@sentry/hub" "7.12.1" - "@sentry/types" "7.12.1" - "@sentry/utils" "7.12.1" + "@sentry/types" "7.27.0" + "@sentry/utils" "7.27.0" tslib "^1.9.3" "@sentry/hub@5.30.0": @@ -5156,17 +5156,26 @@ lru_map "^0.3.3" tslib "^1.9.3" -"@sentry/react@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@sentry/react/-/react-7.12.1.tgz#075162d39ea05c58217597d5242f7046c3152ea9" - integrity sha512-CmdiRzhPpjD29GxlDJs+VIoLlQcKp1BfISQOfPUZNppWbKyRad+J5Z8tgg5MCNPHjQtcOT+0V+MsSdRNqtXg4g== +"@sentry/react@^7.27.0": + version "7.27.0" + resolved "https://registry.yarnpkg.com/@sentry/react/-/react-7.27.0.tgz#6a0708344164b33aa84e9df23cee31b5d60b7656" + integrity sha512-KApZkkfMAC49L6j3mI7e+ZGig/Alo6lwGZWrAOIGXhdj77+msKWueL58YJDdpffm/EqIblc/8ZY9KG4b6Mkcgg== dependencies: - "@sentry/browser" "7.12.1" - "@sentry/types" "7.12.1" - "@sentry/utils" "7.12.1" + "@sentry/browser" "7.27.0" + "@sentry/types" "7.27.0" + "@sentry/utils" "7.27.0" hoist-non-react-statics "^3.3.2" tslib "^1.9.3" +"@sentry/replay@7.27.0": + version "7.27.0" + resolved "https://registry.yarnpkg.com/@sentry/replay/-/replay-7.27.0.tgz#9529dd2603c6581ffc88857a1f43fc875c80857b" + integrity sha512-Db1TBx4JZWWbsAXSzWfAE55d4ekpPspZheyF66j84xq8jaFxgmlMMO7wBD8P7CHuQ6VUkgwa4glMkcamj/sfSg== + dependencies: + "@sentry/core" "7.27.0" + "@sentry/types" "7.27.0" + "@sentry/utils" "7.27.0" + "@sentry/tracing@5.30.0": version "5.30.0" resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-5.30.0.tgz#501d21f00c3f3be7f7635d8710da70d9419d4e1f" @@ -5189,14 +5198,14 @@ "@sentry/utils" "6.19.7" tslib "^1.9.3" -"@sentry/tracing@^7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-7.12.1.tgz#9f92985f152054ac90b6ec83a33c44e8084a008e" - integrity sha512-WnweIt//IqkEkJSjA8DtnIeCdItYIqJSxNQ6qK+r546/ufxRYFBck2fbmM0oKZJVg2evbwhadrBTIUzYkqNj4A== +"@sentry/tracing@^7.27.0": + version "7.27.0" + resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-7.27.0.tgz#455a032c6ccf9bc8e27905dc8e624e6e2f45737b" + integrity sha512-lxAiGAajbZgZkaViwYuxavbu/c8JUp56XOYzSAi7Km9jGnTFLNF4JCoyG0INy7lXipFJiWSd0Xq3aej0Lb+Cvg== dependencies: - "@sentry/hub" "7.12.1" - "@sentry/types" "7.12.1" - "@sentry/utils" "7.12.1" + "@sentry/core" "7.27.0" + "@sentry/types" "7.27.0" + "@sentry/utils" "7.27.0" tslib "^1.9.3" "@sentry/types@5.30.0": @@ -5209,10 +5218,10 @@ resolved "https://registry.yarnpkg.com/@sentry/types/-/types-6.19.7.tgz#c6b337912e588083fc2896eb012526cf7cfec7c7" integrity sha512-jH84pDYE+hHIbVnab3Hr+ZXr1v8QABfhx39KknxqKWr2l0oEItzepV0URvbEhB446lk/S/59230dlUUIBGsXbg== -"@sentry/types@7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.12.1.tgz#eff76d938f9effc62a2ec76cd5c3f04de37f5c15" - integrity sha512-VGZs39SZgMcCGv7H0VyFy1LEFGsnFZH590JUopmz6nG63EpeYQ2xzhIoPNAiLKbyUvBEwukn+faCg3u3MGqhgQ== +"@sentry/types@7.27.0": + version "7.27.0" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.27.0.tgz#1af8eae05465ad00722e319c066c950cc389b585" + integrity sha512-vapN3jchu3/WEMWQkrCOy2XDlOLj0l7IewYXKMr15Q21dlfM1QZMigU/r5rtYj5L8a2ISIHx+cRECxX5UIKH7w== "@sentry/utils@5.30.0": version "5.30.0" @@ -5230,12 +5239,12 @@ "@sentry/types" "6.19.7" tslib "^1.9.3" -"@sentry/utils@7.12.1": - version "7.12.1" - resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.12.1.tgz#fcf80fdc332d0bd288e21b13efc7a2f0d604f75a" - integrity sha512-Dh8B13pC0u8uLM/zf+oZngyg808c6BDEO94F7H+h3IciCVVd92A0cOQwLGAEdf8srnJgpZJNAlSC8lFDhbFHzQ== +"@sentry/utils@7.27.0": + version "7.27.0" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.27.0.tgz#1a0b4e62db32fb56e737c59bd67c847bb888fa8a" + integrity sha512-8e5cmjbeuxETPxPEymyyGEYlBbJO1IMveTlcxkTFySPU6nNz2oAIiqPVHv2QgFJJvRv79/i/4Tyl5gFMOW0+AA== dependencies: - "@sentry/types" "7.12.1" + "@sentry/types" "7.27.0" tslib "^1.9.3" "@sindresorhus/is@^0.14.0": From e68fdca1e29b2b69d5131207ce854ec86879e88a Mon Sep 17 00:00:00 2001 From: Sahil Kashetwar Date: Sat, 17 Dec 2022 02:51:20 +0530 Subject: [PATCH 05/32] decrement sentry package due unexpected errors onbuild --- packages/boba/gateway/package.json | 4 ++-- yarn.lock | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/boba/gateway/package.json b/packages/boba/gateway/package.json index 745dd78c71..bcf481a86e 100644 --- a/packages/boba/gateway/package.json +++ b/packages/boba/gateway/package.json @@ -26,8 +26,8 @@ "@mui/icons-material": "^5.3.1", "@mui/material": "^5.4.0", "@mui/styles": "^5.3.0", - "@sentry/react": "^7.27.0", - "@sentry/tracing": "^7.27.0", + "@sentry/react": "^7.12.1", + "@sentry/tracing": "^7.12.1", "@typescript-eslint/eslint-plugin": "^5.10.2", "@typescript-eslint/parser": "^5.10.2", "axios": "^0.21.1", diff --git a/yarn.lock b/yarn.lock index 302e34264b..663e31b08a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5156,7 +5156,7 @@ lru_map "^0.3.3" tslib "^1.9.3" -"@sentry/react@^7.27.0": +"@sentry/react@^7.12.1": version "7.27.0" resolved "https://registry.yarnpkg.com/@sentry/react/-/react-7.27.0.tgz#6a0708344164b33aa84e9df23cee31b5d60b7656" integrity sha512-KApZkkfMAC49L6j3mI7e+ZGig/Alo6lwGZWrAOIGXhdj77+msKWueL58YJDdpffm/EqIblc/8ZY9KG4b6Mkcgg== @@ -5198,7 +5198,7 @@ "@sentry/utils" "6.19.7" tslib "^1.9.3" -"@sentry/tracing@^7.27.0": +"@sentry/tracing@^7.12.1": version "7.27.0" resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-7.27.0.tgz#455a032c6ccf9bc8e27905dc8e624e6e2f45737b" integrity sha512-lxAiGAajbZgZkaViwYuxavbu/c8JUp56XOYzSAi7Km9jGnTFLNF4JCoyG0INy7lXipFJiWSd0Xq3aej0Lb+Cvg== From 39e59c4397723d1c4c38499ccab4fe5608dce8c1 Mon Sep 17 00:00:00 2001 From: Sahil Kashetwar Date: Sat, 17 Dec 2022 04:08:45 +0530 Subject: [PATCH 06/32] change: - supported tokens and addresss moved to app.service - update initiation of watcher - removed dead code. --- .../boba/gateway/src/services/app.service.js | 127 ++++++++++++-- .../gateway/src/services/networkService.js | 164 ++++++------------ 2 files changed, 165 insertions(+), 126 deletions(-) diff --git a/packages/boba/gateway/src/services/app.service.js b/packages/boba/gateway/src/services/app.service.js index 5de13e7f31..aafd314a5d 100644 --- a/packages/boba/gateway/src/services/app.service.js +++ b/packages/boba/gateway/src/services/app.service.js @@ -85,22 +85,110 @@ const ADDRESS_CONFIG = { } } +const SUPPORTED_ASSETS = { + [ NETWORK_TYPE.MAINNET ]: { + [ NETWORK.ETHEREUM ]: { + tokens: [ + 'USDT', 'DAI', 'USDC', 'WBTC', 'REP', 'BAT', 'ZRX', 'SUSHI', + 'LINK', 'UNI', 'BOBA', 'xBOBA', 'OMG', 'FRAX', 'FXS', 'DODO', + 'UST', 'BUSD', 'BNB', 'FTM', 'MATIC', 'UMA', 'DOM', 'OLO', + 'WAGMIv0', 'WAGMIv1', 'WAGMIv2', 'WAGMIv2-Oolong', 'WAGMIv3', 'WAGMIv3-Oolong', + 'CGT' + ], + tokenAddresses: { + WAGMIv0: { + 'L1': 'WAGMIv0', + 'L2': '0x8493C4d9Cd1a79be0523791E3331c78Abb3f9672' + }, + WAGMIv1: { + 'L1': 'WAGMIv1', + 'L2': '0xCe055Ea4f29fFB8bf35E852522B96aB67Cbe8197' + }, + WAGMIv2: { + 'L1': 'WAGMIv2', + 'L2': '0x76B5908ecd0ae3DB23011ae96b7C1f803D63136c' + }, + 'WAGMIv2-Oolong': { + 'L1': 'WAGMIv2-Oolong', + 'L2': '0x49a3e4a1284829160f95eE785a1A5FfE2DD5Eb1D' + }, + 'WAGMIv3': { + 'L1': 'WAGMIv3', + 'L2': '0xC6158B1989f89977bcc3150fC1F2eB2260F6cabE' + }, + 'WAGMIv3-Oolong': { + 'L1': 'WAGMIv3-Oolong', + 'L2': '0x70bf3c5B5d80C4Fece8Bde0fCe7ef38B688463d4' + }, + OLO: { + 'L1': 'OLO', + 'L2': '0x5008F837883EA9a07271a1b5eB0658404F5a9610' + }, + CGT: { + 'L1': '0xf56b164efd3cfc02ba739b719b6526a6fa1ca32a', + 'L2': '0xf56b164efd3cfc02ba739b719b6526a6fa1ca32a' + } + } + }, + [ NETWORK.AVAX ]: { + tokenAddresses: { + 'EVO': { 'L1': '0x42006Ab57701251B580bDFc24778C43c9ff589A1', 'L2': '0xc8849f32138de93F6097199C5721a9EfD91ceE01' } + }, + tokens: [ 'BOBA', 'AVAX', 'EVO', 'USDT.e', 'USDt', 'USDC.e', 'BUSD.e', 'BUSD', 'DAI.e' ] + }, + [ NETWORK.MOONBEAM ]: { + tokenAddresses: {}, + tokens: [ 'BOBA', 'GLMR' ] + }, + [ NETWORK.BNB ]: { + tokenAddresses: {}, + tokens: [ 'BOBA', 'BNB', 'BUSD', 'USDC', "USDT" ] + }, + [ NETWORK.FANTOM ]: { + tokenAddresses: {}, + tokens: [ 'BOBA', 'FTM', 'USDC', 'DAI' ] + }, + }, + [ NETWORK_TYPE.TESTNET ]: { + [ NETWORK.ETHEREUM ]: { + tokenAddresses: {}, + tokens: [ 'BOBA', 'USDC', 'OMG', 'xBOBA' ] + }, + [ NETWORK.AVAX ]: { + tokenAddresses: {}, + tokens: [ 'BOBA', 'AVAX' ] + }, + [ NETWORK.MOONBEAM ]: { + tokenAddresses: {}, + tokens: [ 'BOBA', 'GLMR' ] + }, + [ NETWORK.BNB ]: { + tokenAddresses: {}, + tokens: [ 'BOBA', 'BNB' ] + }, + [ NETWORK.FANTOM ]: { + tokenAddresses: {}, + tokens: [ 'BOBA', 'FTM' ] + }, + } +} + class AppService { - /** - * @fetchAddresses - * - * NOTE: - * Pre Deployeed contracts add address manually - * - * - L2StandardBridgeAddress - * - L2MessengerAddress - * - L2_ETH_Address - * - L1_ETH_Address - * - */ + /** + * @fetchAddresses + * + * NOTE: + * Pre Deployeed contracts add address manually + * + * - L2StandardBridgeAddress + * - L2MessengerAddress + * - L2_ETH_Address + * - L1_ETH_Address + * + */ fetchAddresses({ @@ -122,6 +210,21 @@ class AppService { } + /** + * @fetchSupportedTokens + * - get the supported tokens base on network and network type. + * + * will return {supported tokens and token address} + * + */ + + fetchSupportedAssets({ + networkType, + network + }) { + return SUPPORTED_ASSETS[ networkType ][ network ] || {}; + } + }; const appService = new AppService(); diff --git a/packages/boba/gateway/src/services/networkService.js b/packages/boba/gateway/src/services/networkService.js index e3c53b5fca..c017649bd0 100644 --- a/packages/boba/gateway/src/services/networkService.js +++ b/packages/boba/gateway/src/services/networkService.js @@ -224,6 +224,7 @@ class NetworkService { // support token this.supportedTokens = [] + this.supportedTokenAddresses = {} // support alt l1 tokens this.supportedAltL1Chains = supportedAltL1Chains @@ -497,27 +498,26 @@ class NetworkService { } async initializeBase({ - networkGateway, + networkGateway: network, networkType }) { let addresses = null - this.networkGateway = networkGateway // e.g. mainnet | goerli | ... + this.networkGateway = network // e.g. mainnet | goerli | ... this.networkType = networkType // e.g. mainnet | goerli | ... // defines the set of possible networks along with chainId for L1 and L2 const networkDetail = getNetworkDetail({ - network: networkGateway, + network, networkType }) try { - if (NETWORK[networkGateway]) { + if (NETWORK[network]) { this.payloadForL1SecurityFee = networkDetail.payloadForL1SecurityFee this.payloadForFastDepositBatchCost = networkDetail.payloadForFastDepositBatchCost this.gasEstimateAccount = networkDetail.gasEstimateAccount - console.log('gasEstimateAccount:', this.gasEstimateAccount) } this.L1Provider = new ethers.providers.StaticJsonRpcProvider( @@ -532,9 +532,9 @@ class NetworkService { const chainId = (await this.L1Provider.getNetwork()).chainId this.tokenInfo = tokenInfo[chainId] - if (!!NETWORK[ networkGateway ]) { + if (!!NETWORK[ network ]) { addresses = appService.fetchAddresses({ - network: networkGateway, + network, networkType }); } @@ -549,11 +549,12 @@ class NetworkService { // ) // //console.log("AddressManager Contract:",this.AddressManager) + if (!(await this.getAddressCached(addresses, 'Proxy__L1CrossDomainMessenger', 'L1MessengerAddress'))) return if (!(await this.getAddressCached(addresses, 'Proxy__L1CrossDomainMessengerFast', 'L1FastMessengerAddress'))) return if (!(await this.getAddressCached(addresses, 'Proxy__L1StandardBridge', 'L1StandardBridgeAddress'))) return - if (!(await this.getAddressCached(addresses, 'Proxy__BobaFixedSavings', 'BobaFixedSavings'))) return if (!(await this.getAddressCached(addresses, 'Proxy__Boba_GasPriceOracle', 'Boba_GasPriceOracle'))) return + // if (!(await this.getAddressCached(addresses, 'Proxy__BobaFixedSavings', 'BobaFixedSavings'))) return // not critical this.getAddressCached(addresses, 'DiscretionaryExitFee', 'DiscretionaryExitFee') @@ -564,103 +565,48 @@ class NetworkService { this.L1Provider ) - this.supportedTokens = [ 'USDT', 'DAI', 'USDC', 'WBTC', - 'REP', 'BAT', 'ZRX', 'SUSHI', - 'LINK', 'UNI', 'BOBA', 'xBOBA', - 'OMG', 'FRAX', 'FXS', 'DODO', - 'UST', 'BUSD', 'BNB', 'FTM', - 'MATIC', 'UMA', 'DOM', 'OLO', - 'WAGMIv0', - 'WAGMIv1', - 'WAGMIv2', 'WAGMIv2-Oolong', - 'WAGMIv3', 'WAGMIv3-Oolong', - 'CGT' - ] - - //not all tokens are on Goerli - if ( networkGateway === 'goerli') { - this.supportedTokens = [ 'BOBA', 'USDC', 'OMG', 'xBOBA' ] - } + // fech suported assets eg. tokens and address. + const tokenAsset = appService.fetchSupportedAssets({ + network, + networkType + }) - await Promise.all(this.supportedTokens.map(async (key) => { + this.supportedTokens = tokenAsset.tokens; + this.supportedTokenAddresses = tokenAsset.tokenAddresses; + const tokenList = {} - const L2a = addresses['TK_L2'+key] + this.supportedTokens.forEach((key) => { + const L1a = addresses[ 'TK_L1' + key ] + const L2a = addresses[ 'TK_L2' + key ] - if(key === 'xBOBA') { + if (key === 'xBOBA') { if (L2a === ERROR_ADDRESS) { - console.log(key + ' ERROR: TOKEN NOT IN ADDRESSMANAGER') return false } else { - allTokens[key] = { + tokenList[ key ] = { 'L1': 'xBOBA', 'L2': L2a } } } - else if(key === 'WAGMIv0') { - allTokens[key] = { - 'L1': 'WAGMIv0', - 'L2': '0x8493C4d9Cd1a79be0523791E3331c78Abb3f9672' - } - } - else if(key === 'WAGMIv1') { - allTokens[key] = { - 'L1': 'WAGMIv1', - 'L2': '0xCe055Ea4f29fFB8bf35E852522B96aB67Cbe8197' - } - } - else if(key === 'WAGMIv2') { - allTokens[key] = { - 'L1': 'WAGMIv2', - 'L2': '0x76B5908ecd0ae3DB23011ae96b7C1f803D63136c' - } - } - else if(key === 'WAGMIv2-Oolong') { - allTokens[key] = { - 'L1': 'WAGMIv2-Oolong', - 'L2': '0x49a3e4a1284829160f95eE785a1A5FfE2DD5Eb1D' - } - } - else if(key === 'WAGMIv3') { - allTokens[key] = { - 'L1': 'WAGMIv3', - 'L2': '0xC6158B1989f89977bcc3150fC1F2eB2260F6cabE' - } - } - else if(key === 'WAGMIv3-Oolong') { - allTokens[key] = { - 'L1': 'WAGMIv3-Oolong', - 'L2': '0x70bf3c5B5d80C4Fece8Bde0fCe7ef38B688463d4' - } - } - else if(key === 'OLO') { - allTokens[key] = { - 'L1': 'OLO', - 'L2': '0x5008F837883EA9a07271a1b5eB0658404F5a9610' - } - } - else if(key === 'CGT') { - allTokens[key] = { - 'L1': '0xf56b164efd3cfc02ba739b719b6526a6fa1ca32a', - 'L2': '0xf56b164efd3cfc02ba739b719b6526a6fa1ca32a' + + // NOTE: if not in address manager then refer it from token assets config. + if (typeof L1a === 'undefined' || typeof L2a === 'undefined') { + console.log(`ERROR: ${key} not addressmanager`) + if (typeof this.supportedTokenAddresses[key] !== 'undefined') { + tokenList[key] = this.supportedTokenAddresses[key] } - } - else { - const L1a = addresses['TK_L1'+key] - if (L1a === ERROR_ADDRESS || L2a === ERROR_ADDRESS) { - console.log(key + ' ERROR: TOKEN NOT IN ADDRESSMANAGER') - return false - } else { - allTokens[key] = { - 'L1': L1a, - 'L2': L2a - } + return false + } else { + tokenList[key] = { + 'L1': L1a, + 'L2': L2a } } + }) - })) - - this.tokenAddresses = allTokens + this.tokenAddresses = tokenList + allTokens = tokenList; if (!(await this.getAddressCached(addresses, 'BobaMonsters', 'BobaMonsters'))) return @@ -721,34 +667,20 @@ class NetworkService { this.L2Provider ) - if(networkGateway === 'mainnet') { - this.watcher = new CrossChainMessenger({ - l1SignerOrProvider: this.L1Provider, - l2SignerOrProvider: this.L2Provider, - l1ChainId: 1, - fastRelayer: false, - }) - this.fastWatcher = new CrossChainMessenger({ - l1SignerOrProvider: this.L1Provider, - l2SignerOrProvider: this.L2Provider, - l1ChainId: 1, - fastRelayer: true, - }) - } else if (networkGateway === 'goerli') { + if (NETWORK[ network ]) { this.watcher = new CrossChainMessenger({ l1SignerOrProvider: this.L1Provider, l2SignerOrProvider: this.L2Provider, - l1ChainId: 5, + chainId, fastRelayer: false, }) this.fastWatcher = new CrossChainMessenger({ l1SignerOrProvider: this.L1Provider, l2SignerOrProvider: this.L2Provider, - l1ChainId: 5, + chainId, fastRelayer: true, }) - } - else { + } else { this.watcher = null this.fastWatcher = null } @@ -815,12 +747,16 @@ class NetworkService { this.networkGateway = networkGateway this.networkType = networkType - console.log('NS: networkMM:', networkMM) - console.log('NS: networkGateway:', networkGateway) - console.log('NS: networkType:', networkType) - console.log('NS: this.chainID from MM:', this.chainID) - console.log('NS: this.networkName from MM:', this.networkName) - console.log('NS: this.account from MM:', this.account) + console.table({ + type: 'MM', + network: networkMM, + networkGateway, + networkType, + chainID: this.chainID, + account: this.account, + networkName: this.networkName, + }) + // defines the set of possible networks along with chainId for L1 and L2 // const nw = getNetwork() From 651c054203a497a8218122114540d9b4b8f2d421 Mon Sep 17 00:00:00 2001 From: Sahil Kashetwar Date: Sat, 17 Dec 2022 05:03:31 +0530 Subject: [PATCH 07/32] change: - enable nft only for ethereum - updated address for get balance and initialize base invokation for ethereum only. --- .../gateway/src/containers/wallet/Wallet.js | 64 +++++++------ .../gateway/src/services/networkService.js | 93 ++++++++++--------- 2 files changed, 87 insertions(+), 70 deletions(-) diff --git a/packages/boba/gateway/src/containers/wallet/Wallet.js b/packages/boba/gateway/src/containers/wallet/Wallet.js index a6658135c1..422315d51a 100644 --- a/packages/boba/gateway/src/containers/wallet/Wallet.js +++ b/packages/boba/gateway/src/containers/wallet/Wallet.js @@ -33,12 +33,14 @@ import { selectlayer2Balance } from 'selectors/balanceSelector' import PageTitle from 'components/pageTitle/PageTitle' import { isEqual } from 'lodash' -import { DEFAULT_NETWORK, POLL_INTERVAL } from "util/constant" +import { DEFAULT_NETWORK, LAYER, POLL_INTERVAL } from "util/constant" import useInterval from "hooks/useInterval" import BN from 'bignumber.js' import { logAmount } from 'util/amountConvert.js' -import { selectActiveNetworkName } from "selectors/networkSelector" +import { selectActiveNetwork, selectActiveNetworkName } from "selectors/networkSelector" +import networkService from "services/networkService" +import { NETWORK } from "util/network/network.util" function Wallet() { @@ -48,38 +50,40 @@ function Wallet() { const [ tooSmallBOBA, setTooSmallBOBA ] = useState(false) const dispatch = useDispatch() - + const network = useSelector(selectActiveNetwork()) const layer = useSelector(selectLayer()) const accountEnabled = useSelector(selectAccountEnabled()) const networkName = useSelector(selectActiveNetworkName()) // low balance warnings const l2Balances = useSelector(selectlayer2Balance, isEqual) - useEffect(()=>{ + useEffect(() => { if (accountEnabled) dispatch(fetchTransactions()) - },[ dispatch, accountEnabled ]) + }, [ dispatch, accountEnabled ]) - useEffect(()=>{ - if (accountEnabled && l2Balances.length > 0) { + useEffect(() => { + if (accountEnabled && l2Balances.length > 0) { - const l2BalanceETH = l2Balances.find((i) => i.symbol === 'ETH') + const l2BalanceETH = l2Balances.find((i) => i.symbol === networkService.L1NativeTokenSymbol) const l2BalanceBOBA = l2Balances.find((i) => i.symbol === 'BOBA') if (l2BalanceETH && l2BalanceETH.balance) { + // FOR ETH MIN BALANCE 0.003ETH setTooSmallETH(new BN(logAmount(l2BalanceETH.balance, 18)).lt(new BN(0.003))) } else { // in case of zero ETH balance we are setting tooSmallETH setTooSmallETH(true) } if (l2BalanceBOBA && l2BalanceBOBA.balance) { + // FOR BOBA 1 setTooSmallBOBA(new BN(logAmount(l2BalanceBOBA.balance, 18)).lt(new BN(4.0))) } else { // in case of zero BOBA balance we are setting tooSmallBOBA setTooSmallBOBA(true) } } - },[ l2Balances, accountEnabled ]) + }, [ l2Balances, accountEnabled ]) useEffect(() => { if (layer === 'L2') { @@ -87,7 +91,7 @@ function Wallet() { dispatch(openError('Wallet empty - please bridge in ETH or BOBA from L1')) } } - },[tooSmallETH, tooSmallBOBA, layer, dispatch]) + }, [ tooSmallETH, tooSmallBOBA, layer, dispatch ]) useInterval(() => { if (accountEnabled) { @@ -96,9 +100,9 @@ function Wallet() { }, POLL_INTERVAL) useEffect(() => { - if (layer === 'L2') { + if (layer === LAYER.L2) { setChain('Boba Wallet') - } else if (layer === 'L1') { + } else if (layer === LAYER.L1) { setChain('Ethereum Wallet') } }, [ layer ]) @@ -111,7 +115,7 @@ function Wallet() { } } - async function emergencySwap () { + async function emergencySwap() { const res = await dispatch(getETHMetaTransaction()) if (res) dispatch(openAlert('Emergency Swap submitted')) } @@ -127,9 +131,9 @@ function Wallet() { /> {layer === 'L2' && tooSmallETH && - + - + + + {faucetErrorMsg ? {faucetErrorMsg} : null} + + + ) + } + + return null; +} + +export default Faucet; diff --git a/packages/boba/gateway/src/components/mainMenu/gasSwitcher/GasSwitcher.js b/packages/boba/gateway/src/components/mainMenu/gasSwitcher/GasSwitcher.js index 495589ae58..58854b0d61 100644 --- a/packages/boba/gateway/src/components/mainMenu/gasSwitcher/GasSwitcher.js +++ b/packages/boba/gateway/src/components/mainMenu/gasSwitcher/GasSwitcher.js @@ -38,7 +38,7 @@ function GasSwitcher() { dispatch(fetchGas()) dispatch(fetchVerifierStatus()) } - }, [ networkName, baseEnabled ]) + }, [ networkName, baseEnabled , dispatch]) useInterval(() => { if (baseEnabled) { diff --git a/packages/boba/gateway/src/containers/wallet/token/Token.js b/packages/boba/gateway/src/containers/wallet/token/Token.js index 54a18ac307..cb29264e77 100644 --- a/packages/boba/gateway/src/containers/wallet/token/Token.js +++ b/packages/boba/gateway/src/containers/wallet/token/Token.js @@ -3,7 +3,7 @@ import { useDispatch, useSelector } from 'react-redux' import { selectlayer1Balance, selectlayer2Balance } from 'selectors/balanceSelector' import { selectLoading } from 'selectors/loadingSelector' -import { selectAccountEnabled, selectLayer, selectWalletAddress } from 'selectors/setupSelector' +import { selectAccountEnabled, selectLayer } from 'selectors/setupSelector' import { selectNetwork } from 'selectors/networkSelector' import { selectTokens } from 'selectors/tokenSelector' import { selectTransactions } from 'selectors/transactionSelector' @@ -11,29 +11,26 @@ import { selectTransactions } from 'selectors/transactionSelector' import { fetchLookUpPrice } from 'actions/networkAction' import { setActiveHistoryTab } from 'actions/uiAction' -import { openAlert } from 'actions/uiAction' - import * as S from './Token.styles' import * as G from '../../Global.styles' -import twitter from 'images/twitter.png' -import { Box, Typography, CircularProgress, Input } from '@mui/material' +import { Box, Typography, CircularProgress } from '@mui/material' import { tokenTableHeads } from './token.tableHeads' import ListToken from 'components/listToken/listToken' import Button from 'components/button/Button' import Link from 'components/icons/LinkIcon' import Pulse from 'components/pulse/PulsingBadge' -import Copy from 'components/copy/Copy' import { isEqual, orderBy } from 'lodash' import networkService from 'services/networkService' -import { Md5 } from "ts-md5/dist/md5" import { useNavigate } from 'react-router-dom' +import Faucet from 'components/faucet/Faucet' + function TokenPage() { const dispatch = useDispatch() @@ -45,11 +42,6 @@ function TokenPage() { const rootBalance = useSelector(selectlayer1Balance, isEqual) const layer = useSelector(selectLayer()) const network = useSelector(selectNetwork()) - const walletAddress = useSelector(selectWalletAddress()) - - const [ tweetUrl, setTweetUrl ] = useState("") - const [ isClaimFaucetLoading, setIsClaimFaucetLoading ] = useState(false) - const [ faucetErrorMsg, setFaucetErrorMsg ] = useState("") const [ debug, setDebug ] = useState(false) @@ -62,17 +54,6 @@ function TokenPage() { const unorderedTransactions = useSelector(selectTransactions, isEqual) const orderedTransactions = orderBy(unorderedTransactions, i => i.timeStamp, 'desc') - let bobaTag = '' - if(walletAddress) - bobaTag = Md5.hashStr(walletAddress.toLowerCase().substring(2)) - - let BT = '' - let tweet = '' - if (bobaTag) { - BT = "BOBA" + bobaTag.substring(0, 9).toUpperCase() - tweet = "https://twitter.com/intent/tweet?text=I%27m%20developing%20on%20Boba%20Network%20" + BT - } - const pendingL1 = orderedTransactions.filter((i) => { if (i.chain === 'L1pending' && //use the custom API watcher for fast data on pending L1->L2 TXs i.crossDomainMessage && @@ -127,11 +108,11 @@ function TokenPage() { return 'ethereum' } else if (i.symbolL1 === 'OMG') { return 'omg' - } else if(i.symbolL1 === 'BOBA') { + } else if (i.symbolL1 === 'BOBA') { return 'boba-network' - } else if(i.symbolL1 === 'OLO') { + } else if (i.symbolL1 === 'OLO') { return 'oolongswap' - } else if(i.symbolL1 === 'USDC') { + } else if (i.symbolL1 === 'USDC') { return 'usd-coin' } else { return i.symbolL1.toLowerCase() @@ -147,31 +128,9 @@ function TokenPage() { const GasEstimateApprove = () => { let approval = networkService.estimateApprove() - console.log("GasEstimateApprove:",approval) + console.log(['Gas Estimate Approval', approval]) } - async function claimAuthenticatedFaucetTokens() { - try { - setIsClaimFaucetLoading(true) - const tweetId = tweetUrl?.match(/twitter\.com\/.*\/status\/(\d+)/)[1] - const res = await networkService.getTestnetETHAuthenticatedMetaTransaction(tweetId) - if (!res) { - dispatch(openAlert('Faucet request submitted')) - } else { - setFaucetErrorMsg(res) - } - } catch (err) { - let error = err.message.match(/execution reverted: (.*)\\+"}}/) - if (error) { - error = error[1] - } else { - error = err?.message ?? err - } - setFaucetErrorMsg(error) - } finally { - setIsClaimFaucetLoading(false) - } - } if (!accountEnabled) { @@ -199,176 +158,105 @@ function TokenPage() { } else { return ( - <> - {layer === 'L2' && network === 'mainnet' && - - - Need ETH or BOBA{'? '} - You can swap one for the other at - Sushiswap - - and - Oolongswap - - - {debug && - - } - - } - - {layer === 'L2' && network === 'goerli' && - - - - - - Developer Twitter/Turing test token fountain - your Boba Bubble:{" "} - {BT} - - - - - Welcome developers. - For testnet BOBA and ETH, tweet your Boba Bubble and - then paste the tweet link in the field below. + <> + {layer === 'L2' && network === 'mainnet' && + + + Need ETH or BOBA{'? '} + You can swap one for the other at + Sushiswap + + and + Oolongswap + - - { GasEstimateApprove() }} + color='primary' + variant="contained" + > + GasEstimateApprove + + } + + } + + + + {!!accountEnabled && inflight.length > 0 && + + { + dispatch(setActiveHistoryTab("Pending")); + navigate('/history') }} - >Tweet Now - - - - For the Tweet link, tap the share icon, tap "Share Tweet via", and finally select "Copy link to Tweet". - - - setTweetUrl(e?.target?.value.split('?')[0])} //remove the superfluous stuff after the "?" - /> - - - You are limited to one fountain call per twitter account per day. - The transaction will not show in your history since it's a MetaTransaction (the gas is covered by Boba). - - - - - {faucetErrorMsg ? {faucetErrorMsg} : null} + Bridge in progress:{' '} + Click for detailed status + + - - } - - {!!accountEnabled && inflight.length > 0 && - - { - dispatch(setActiveHistoryTab("Pending")); - navigate('/history') - }} - > - Bridge in progress:{' '} - Click for detailed status - - - - } - - - - - {tokenTableHeads.map((item) => { + } + + + + + {tokenTableHeads.map((item) => { + return ( + {item.label} + ) + })} + + {networkLayer === 'L2' ? !balanceLoading || !!childBalance.length ? childBalance.map((i, index) => { return ( - {item.label} + ) - })} - - {networkLayer === 'L2' ? !balanceLoading || !!childBalance.length ? childBalance.map((i, index) => { - return ( - - ) - }) : - - - : null} - {networkLayer === 'L1' ? !balanceLoading || !!rootBalance.length ? rootBalance.map((i, index) => { - return ( - - ) - }) : - - - : null} - - - ) + }) : + + + : null} + {networkLayer === 'L1' ? !balanceLoading || !!rootBalance.length ? rootBalance.map((i, index) => { + return ( + + ) + }) : + + + : null} + + + ) } } diff --git a/packages/boba/gateway/src/services/faucet.service.js b/packages/boba/gateway/src/services/faucet.service.js new file mode 100644 index 0000000000..09a3c0ac05 --- /dev/null +++ b/packages/boba/gateway/src/services/faucet.service.js @@ -0,0 +1,81 @@ +import networkService from "./networkService"; +import AuthenticatedFaucetJson from "../deployment/contracts/AuthenticatedFaucet.json" +import { ethers } from "ethers"; +import metaTransactionAxiosInstance from "api/metaTransactionAxios"; + +class FaucetService { + + /** + * @getTestnetETHAuthenticatedMetaTransaction + * + * @dev Only works on testnet, but can be freely called on production app + * */ + async getTestnetETHAuthenticatedMetaTransaction(tweetId) { + + const Boba_AuthenticatedFaucet = new ethers.Contract( + networkService.addresses.AuthenticatedFaucet, + AuthenticatedFaucetJson.abi, + networkService.L2Provider, + ) + + const nonce = parseInt( + await Boba_AuthenticatedFaucet.getNonce(networkService.account), + 10 + ) + + const signer = networkService.provider.getSigner(networkService.account) + const hashedMsg = ethers.utils.solidityKeccak256( + ['address', 'uint'], + [networkService.account, nonce] + ) + const messageHashBin = ethers.utils.arrayify(hashedMsg) + const signature = await signer.signMessage(messageHashBin) + + try { + const response = await metaTransactionAxiosInstance( + networkService.networkConfig + ).post('/send.getTestnetETH', { hashedMsg, signature, tweetId, walletAddress: networkService.account }) + console.log(["metaTransactionAxiosInstance res",response]) + } catch (error) { + let errorMsg = error?.response?.data?.error?.error?.body + if (errorMsg) { + errorMsg = JSON.stringify(errorMsg)?.match(/execution reverted:\s(.+)\\"/) + errorMsg = errorMsg ? errorMsg[1]?.trim() : null; + } + console.log(`MetaTx error for getTestnetETH: ${errorMsg}`) + if (errorMsg?.includes('Invalid request')) { + errorMsg = errorMsg.match(/Invalid request:(.+)/) + if (errorMsg) { + const errorMap = [ + 'Twitter API error - Probably limits hit.', + 'Twitter account needs to exist at least 48 hours.', + 'Invalid Tweet, be sure to tweet the Boba Bubble provided above.', + 'Your Twitter account needs more than 5 followers.', + 'You need to have tweeted more than 2 times.', + ] + try { + errorMsg = errorMap[parseInt(errorMsg[1]) - 1] + } catch(err) { + console.error(err) + errorMsg = 'Unexpected Twitter error.' + } + } else { + errorMsg = 'Not expected Turing error.' + } + } else { + const errorMap = { + 'Cooldown': 'Cooldown: You need to wait 24h to claim again with this Twitter account.', + 'No testnet funds': 'Faucet drained: Please reach out to us.', + 'Rate limit reached': 'Throttling: Too many requests. Throttling to not hit Twitter rate limits.', + } + errorMsg = errorMap[errorMsg]; + } + return errorMsg ?? 'Limits reached or Twitter constraints not met.' + } + } + +} + +const faucetService = new FaucetService(); + +export default faucetService; diff --git a/packages/boba/gateway/src/services/networkService.js b/packages/boba/gateway/src/services/networkService.js index 411e78b0a4..618e4e3cf0 100644 --- a/packages/boba/gateway/src/services/networkService.js +++ b/packages/boba/gateway/src/services/networkService.js @@ -399,77 +399,10 @@ class NetworkService { } } - /** @dev Only works on testnet, but can be freely called on production app */ - async getTestnetETHAuthenticatedMetaTransaction(tweetId) { - - console.log("triggering getTestnetETH") - - const Boba_AuthenticatedFaucet = new ethers.Contract( - addresses_Goerli.AuthenticatedFaucet, - AuthenticatedFaucetJson.abi, - this.L2Provider, - ) - - const nonce = parseInt( - await Boba_AuthenticatedFaucet.getNonce(this.account), - 10 - ) - - const signer = this.provider.getSigner(this.account) - const hashedMsg = ethers.utils.solidityKeccak256( - ['address', 'uint'], - [this.account, nonce] - ) - const messageHashBin = ethers.utils.arrayify(hashedMsg) - const signature = await signer.signMessage(messageHashBin) - - try { - const response = await metaTransactionAxiosInstance( - this.networkConfig - ).post('/send.getTestnetETH', { hashedMsg, signature, tweetId, walletAddress: this.account }) - console.log("response",response) - } catch (error) { - let errorMsg = error?.response?.data?.error?.error?.body - if (errorMsg) { - errorMsg = JSON.stringify(errorMsg)?.match(/execution reverted:\s(.+)\\"/) - errorMsg = errorMsg ? errorMsg[1]?.trim() : null; - } - console.log(`MetaTx error for getTestnetETH: ${errorMsg}`) - if (errorMsg?.includes('Invalid request')) { - errorMsg = errorMsg.match(/Invalid request:(.+)/) - if (errorMsg) { - const errorMap = [ - 'Twitter API error - Probably limits hit.', - 'Twitter account needs to exist at least 48 hours.', - 'Invalid Tweet, be sure to tweet the Boba Bubble provided above.', - 'Your Twitter account needs more than 5 followers.', - 'You need to have tweeted more than 2 times.', - ] - try { - errorMsg = errorMap[parseInt(errorMsg[1]) - 1] - } catch(err) { - console.error(err) - errorMsg = 'Unexpected Twitter error.' - } - } else { - errorMsg = 'Not expected Turing error.' - } - } else { - const errorMap = { - 'Cooldown': 'Cooldown: You need to wait 24h to claim again with this Twitter account.', - 'No testnet funds': 'Faucet drained: Please reach out to us.', - 'Rate limit reached': 'Throttling: Too many requests. Throttling to not hit Twitter rate limits.', - } - errorMsg = errorMap[errorMsg]; - } - return errorMsg ?? 'Limits reached or Twitter constraints not met.' - } - } - async getAddress(contractName, varToSet) { const address = await this.AddressManager.getAddress(contractName) if (address === ERROR_ADDRESS) { - console.log(contractName + ' ERROR: NOT IN ADDRESSMANAGER') + // console.log(contractName + ' ERROR: NOT IN ADDRESSMANAGER') return false } else { allAddresses = { @@ -484,14 +417,12 @@ class NetworkService { async getAddressCached(cache, contractName, varToSet) { const address = cache[contractName] if (typeof(address) === 'undefined') { - console.log(contractName + ' ERROR: NOT IN CACHE') return false } else { - allAddresses = { - ...allAddresses, + this.addresses = { + ...this.addresses, [varToSet]: address } - console.log(contractName +' pulled from address cache and set to:', address) return true } } @@ -582,7 +513,7 @@ class NetworkService { this.getAddressCached(addresses, 'DiscretionaryExitFee', 'DiscretionaryExitFee') this.L1StandardBridgeContract = new ethers.Contract( - allAddresses.L1StandardBridgeAddress, + this.addresses.L1StandardBridgeAddress, L1StandardBridgeJson.abi, this.L1Provider ) @@ -643,7 +574,6 @@ class NetworkService { L2ERC20Json.abi, this.L2Provider ) - //console.log("L2_ETH_Contract:", this.L2_ETH_Contract.address) /*The test token*/ this.L1_TEST_Contract = new ethers.Contract( @@ -651,14 +581,12 @@ class NetworkService { L1ERC20Json.abi, this.L1Provider ) - //console.log('L1_TEST_Contract:', this.L1_TEST_Contract) this.L2_TEST_Contract = new ethers.Contract( allTokens.BOBA.L2, //this will get changed anyway when the contract is used L2ERC20Json.abi, this.L2Provider ) - //console.log('L2_TEST_Contract:', this.L2_TEST_Contract) /*The OMG token*/ //We need this seperately because OMG is not ERC20 compliant @@ -670,15 +598,12 @@ class NetworkService { //console.log('L1_OMG_Contract:', this.L1_OMG_Contract) // Liquidity pools - console.log('Setting up contract for L2LP at:',addresses.L2LPAddress) this.L1LPContract = new ethers.Contract( addresses.L1LPAddress, L1LPJson.abi, this.L1Provider ) - - console.log('Setting up contract for L1LP at:',addresses.L1LPAddress) this.L2LPContract = new ethers.Contract( addresses.L2LPAddress, L2LPJson.abi, @@ -701,6 +626,7 @@ class NetworkService { }) */ + this.BobaContract = new ethers.Contract( L2_SECONDARYFEETOKEN_ADDRESS, Boba.abi, @@ -718,19 +644,19 @@ class NetworkService { if (!(await this.getAddressCached(addresses, 'GovernorBravoDelegator', 'GovernorBravoDelegator'))) return this.delegateContract = new ethers.Contract( - allAddresses.GovernorBravoDelegate, + this.addresses.GovernorBravoDelegate, GovernorBravoDelegate.abi, this.L2Provider ) this.delegatorContract = new ethers.Contract( - allAddresses.GovernorBravoDelegator, + this.addresses.GovernorBravoDelegator, GovernorBravoDelegator.abi, this.L2Provider ) this.delegatorContractV2 = new ethers.Contract( - allAddresses.GovernorBravoDelegatorV2, + this.addresses.GovernorBravoDelegatorV2, GovernorBravoDelegator.abi, this.L2Provider ) From f56d119a357a939a86cb08d70c453d917bf416bc Mon Sep 17 00:00:00 2001 From: Sahil Kashetwar Date: Wed, 11 Jan 2023 17:46:04 +0530 Subject: [PATCH 19/32] referening address from this.addresses instead of allAddresses --- .../gateway/src/services/networkService.js | 297 +++++++++--------- 1 file changed, 146 insertions(+), 151 deletions(-) diff --git a/packages/boba/gateway/src/services/networkService.js b/packages/boba/gateway/src/services/networkService.js index 618e4e3cf0..d8dc36a162 100644 --- a/packages/boba/gateway/src/services/networkService.js +++ b/packages/boba/gateway/src/services/networkService.js @@ -260,6 +260,7 @@ class NetworkService { async getBobaFeeChoice() { + const bobaFeeContract = new ethers.Contract( this.addresses.Proxy__Boba_GasPriceOracle, BobaGasPriceOracleABI, @@ -402,14 +403,12 @@ class NetworkService { async getAddress(contractName, varToSet) { const address = await this.AddressManager.getAddress(contractName) if (address === ERROR_ADDRESS) { - // console.log(contractName + ' ERROR: NOT IN ADDRESSMANAGER') return false } else { - allAddresses = { - ...allAddresses, + this.addresses = { + ...this.addresses, [varToSet]: address } - console.log(contractName +' pulled from AddressManager and set to:', address) return true } } @@ -858,7 +857,7 @@ class NetworkService { let monsterList = await GraphQLService.queryMonsterTransfer(this.account) const contract = new ethers.Contract( - allAddresses.BobaMonsters, + this.addresses.BobaMonsters, TuringMonsterJson.abi, this.L2Provider ) @@ -871,7 +870,7 @@ class NetworkService { const owner = await contract.ownerOf(tokenId) //console.log("owner:", owner) if (owner.toLowerCase() === this.account.toLowerCase()) { - await this.addNFT(allAddresses.BobaMonsters, tokenId) + await this.addNFT(this.addresses.BobaMonsters, tokenId) } } await this.checkMonster() @@ -906,7 +905,7 @@ class NetworkService { try { const contract = new ethers.Contract( - allAddresses.BobaMonsters, + this.addresses.BobaMonsters, TuringMonsterJson.abi, this.L2Provider ) @@ -917,12 +916,12 @@ class NetworkService { let topTop = 0 if(NFTs && Number(monsterBalance) > 0) { - //console.log("checking monsters") + for (const [ , value ] of Object.entries(NFTs)) { - //console.log(`${key} value: ${value.name}`) + if(value.name === 'TuringMonster') { const owner = await contract.ownerOf(value.tokenID) - //console.log("owner:", owner) + if(owner.toLowerCase() === this.account.toLowerCase()) { const attributes = { top: value.meta.attributes[3].value, @@ -1094,7 +1093,7 @@ class NetworkService { this.L1Provider ) - const getERC20Balance = async(token, tokenAddress, layer, provider) => { + const getERC20Balance = async (token, tokenAddress, layer, provider) => { const balance = await tokenC.attach(tokenAddress).connect(provider).balanceOf(this.account) return { ...token, @@ -1129,7 +1128,8 @@ class NetworkService { 'OLO' ].includes(token.symbolL1)) { //there is no L1 xBOBA, WAGMIv0, WAGMIv1, WAGMIv2, WAGMIv2OLO, WAGMIv3, WAGMIv3OLO, OLO - getBalancePromise.push(getERC20Balance(token, token.addressL2, "L2", this.L2Provider)) + // console.log('C', token) + // getBalancePromise.push(getERC20Balance(token, token.addressL2, "L2", this.L2Provider)) } else { getBalancePromise.push(getERC20Balance(token, token.addressL1, "L1", this.L1Provider)) @@ -1282,7 +1282,7 @@ class NetworkService { try { const contract = new ethers.Contract( - allAddresses.BobaMonsters, + this.addresses.BobaMonsters, TuringMonsterJson.abi, this.L2Provider ) @@ -1297,7 +1297,7 @@ class NetworkService { const rawData = receipt.logs[3].topics[1] const numberHexString = rawData.slice(-64) let tokenID = parseInt(numberHexString, 16) - await this.addNFT( allAddresses.BobaMonsters, tokenID ) + await this.addNFT( this.addresses.BobaMonsters, tokenID ) return tx } catch (error) { @@ -1570,7 +1570,7 @@ class NetworkService { try { - if(currency === allAddresses.L2_ETH_Address) { + if(currency === this.addresses.L2_ETH_Address) { //we are sending ETH let wei = BigNumber.from(value_Wei_String) @@ -1621,7 +1621,7 @@ class NetworkService { try { - if(currency === allAddresses.L2_ETH_Address) { + if(currency === this.addresses.L2_ETH_Address) { gas_BN = await this.provider .getSigner() @@ -1751,7 +1751,7 @@ class NetworkService { let allowance_BN = await L2ERC20Contract.allowance( this.account, - allAddresses.L2LPAddress + this.addresses.L2LPAddress ) //let depositAmount_BN = new BN(value_Wei_String) @@ -1759,7 +1759,7 @@ class NetworkService { if (depositAmount_BN.gt(allowance_BN)) { const approveStatus = await L2ERC20Contract.approve( - allAddresses.L2LPAddress, + this.addresses.L2LPAddress, value_Wei_String ) await approveStatus.wait() @@ -1780,7 +1780,7 @@ class NetworkService { ) { console.log("approveERC20_L1LP") - const approveContractAddress = allAddresses.L1LPAddress + const approveContractAddress = this.addresses.L1LPAddress let allowance_BN = BigNumber.from("0") let allowed = false @@ -1793,7 +1793,7 @@ class NetworkService { this.provider.getSigner() ) - if( currency !== allAddresses.L1_ETH_Address ) { + if( currency !== this.addresses.L1_ETH_Address ) { let allowance_BN = await ERC20Contract.allowance( this.account, @@ -1856,7 +1856,7 @@ class NetworkService { async approveERC20( value_Wei_String, currency, - approveContractAddress = allAddresses.L1StandardBridgeAddress, + approveContractAddress = this.addresses.L1StandardBridgeAddress, contractABI = L1ERC20Json.abi ) { @@ -1954,7 +1954,7 @@ class NetworkService { let allowance_BN = await L1_TEST_Contract.allowance( this.account, - allAddresses.L1StandardBridgeAddress + this.addresses.L1StandardBridgeAddress ) try { @@ -1970,7 +1970,7 @@ class NetworkService { console.log("Current OMG Token allowance too small - might need to reset to 0, unless it's already zero") if (allowance_BN.gt(BigNumber.from("0"))) { const approveOMG = await L1_TEST_Contract.approve( - allAddresses.L1StandardBridgeAddress, + this.addresses.L1StandardBridgeAddress, ethers.utils.parseEther("0") ) await approveOMG.wait() @@ -1981,7 +1981,7 @@ class NetworkService { //recheck the allowance allowance_BN = await L1_TEST_Contract.allowance( this.account, - allAddresses.L1StandardBridgeAddress + this.addresses.L1StandardBridgeAddress ) const allowed = allowance_BN.gte(BigNumber.from(value_Wei_String)) @@ -1990,7 +1990,7 @@ class NetworkService { //and now, the normal allowance transaction const approveStatus = await L1_TEST_Contract .connect(this.provider.getSigner()).approve( - allAddresses.L1StandardBridgeAddress, + this.addresses.L1StandardBridgeAddress, value_Wei_String ) await approveStatus.wait() @@ -2082,7 +2082,7 @@ class NetworkService { try { const L2BillingContract = new ethers.Contract( - allAddresses.Proxy__BobaBillingContract, + this.addresses.Proxy__BobaBillingContract, L2BillingContractJson.abi, this.L2Provider, ) @@ -2093,15 +2093,15 @@ class NetworkService { const allowance = await this.checkAllowance( currencyAddress, - allAddresses.DiscretionaryExitFee + this.addresses.DiscretionaryExitFee ) const BobaAllowance = await this.checkAllowance( - allAddresses.TK_L2BOBA, - allAddresses.DiscretionaryExitFee + this.addresses.TK_L2BOBA, + this.addresses.DiscretionaryExitFee ) - if (utils.getAddress(currencyAddress) === utils.getAddress(allAddresses.TK_L2BOBA)) { + if (utils.getAddress(currencyAddress) === utils.getAddress(this.addresses.TK_L2BOBA)) { BobaApprovalAmount = BobaApprovalAmount.add(value) } @@ -2109,27 +2109,27 @@ class NetworkService { if ( BobaAllowance.lt(BobaApprovalAmount) ) { const res = await this.approveERC20( BobaApprovalAmount, - allAddresses.TK_L2BOBA, - allAddresses.DiscretionaryExitFee + this.addresses.TK_L2BOBA, + this.addresses.DiscretionaryExitFee ) if (!res) return false } // Should approve other tokens - if( currencyAddress !== allAddresses.L2_ETH_Address && - utils.getAddress(currencyAddress) !== utils.getAddress(allAddresses.TK_L2BOBA) && + if( currencyAddress !== this.addresses.L2_ETH_Address && + utils.getAddress(currencyAddress) !== utils.getAddress(this.addresses.TK_L2BOBA) && allowance.lt(value) ) { const res = await this.approveERC20( value, currencyAddress, - allAddresses.DiscretionaryExitFee + this.addresses.DiscretionaryExitFee ) if (!res) return false } const DiscretionaryExitFeeContract = new ethers.Contract( - allAddresses.DiscretionaryExitFee, + this.addresses.DiscretionaryExitFee, DiscretionaryExitFeeJson.abi, this.provider.getSigner() ) @@ -2140,7 +2140,7 @@ class NetworkService { value_Wei_String, this.L1GasLimit, utils.formatBytes32String(new Date().getTime().toString()), - currencyAddress === allAddresses.L2_ETH_Address ? + currencyAddress === this.addresses.L2_ETH_Address ? { value: value_Wei_String } : {} ) @@ -2172,7 +2172,7 @@ class NetworkService { const gasPrice = await this.L2Provider.getGasPrice() console.log("Classical exit gas price", gasPrice.toString()) - if( currencyAddress !== allAddresses.L2_ETH_Address ) { + if( currencyAddress !== this.addresses.L2_ETH_Address ) { const ERC20Contract = new ethers.Contract( currencyAddress, @@ -2181,7 +2181,7 @@ class NetworkService { ) const tx = await ERC20Contract.populateTransaction.approve( - allAddresses.DiscretionaryExitFee, + this.addresses.DiscretionaryExitFee, utils.parseEther('1.0') ) @@ -2191,13 +2191,13 @@ class NetworkService { } const DiscretionaryExitFeeContract = new ethers.Contract( - allAddresses.DiscretionaryExitFee, + this.addresses.DiscretionaryExitFee, DiscretionaryExitFeeJson.abi, this.provider.getSigner() ) const tx2 = await DiscretionaryExitFeeContract.populateTransaction.payAndWithdraw( - allAddresses.L2_ETH_Address, + this.addresses.L2_ETH_Address, utils.parseEther('0.00001'), this.L1GasLimit, ethers.utils.formatBytes32String(new Date().getTime().toString()), @@ -2227,7 +2227,7 @@ class NetworkService { try{ const L1LPContract = new ethers.Contract( - allAddresses.L1LPAddress, + this.addresses.L1LPAddress, L1LPJson.abi, this.L1Provider ) @@ -2256,7 +2256,7 @@ class NetworkService { try{ const L2LPContract = new ethers.Contract( - allAddresses.L2LPAddress, + this.addresses.L2LPAddress, L2LPJson.abi, this.L2Provider ) @@ -2282,7 +2282,7 @@ class NetworkService { async getL1UserRewardFeeRate(tokenAddress) { try{ const L1LPContract = new ethers.Contract( - allAddresses.L1LPAddress, + this.addresses.L1LPAddress, L1LPJson.abi, this.L1Provider ) @@ -2298,7 +2298,7 @@ class NetworkService { async getL2UserRewardFeeRate(tokenAddress) { try { const L2LPContract = new ethers.Contract( - allAddresses.L2LPAddress, + this.addresses.L2LPAddress, L2LPJson.abi, this.L2Provider ) @@ -2522,7 +2522,7 @@ class NetworkService { let otherField = {} - if( currency === allAddresses.L1_ETH_Address || currency === allAddresses.L2_ETH_Address ) { + if( currency === this.addresses.L1_ETH_Address || currency === this.addresses.L2_ETH_Address ) { // add value field for ETH otherField['value'] = value_Wei_String } @@ -2560,12 +2560,12 @@ class NetworkService { // First, we need the approval cost // not relevant to ETH - if( currency !== allAddresses.L2_ETH_Address ) { + if( currency !== this.addresses.L2_ETH_Address ) { const tx1 = await this.BobaContract .populateTransaction .approve( - allAddresses.L2LPAddress, + this.addresses.L2LPAddress, utils.parseEther('1.0'), otherField ) @@ -2670,7 +2670,7 @@ class NetworkService { .clientDepositL1( value_Wei_String, currency, - currency === allAddresses.L1_ETH_Address ? { value: value_Wei_String } : {} + currency === this.addresses.L1_ETH_Address ? { value: value_Wei_String } : {} ) console.log("depositTX",depositTX) @@ -2839,15 +2839,15 @@ class NetworkService { let tokenAddressLC = tokenAddress.toLowerCase() if ( - tokenAddressLC === allAddresses.L2_ETH_Address || - tokenAddressLC === allAddresses.L1_ETH_Address + tokenAddressLC === this.addresses.L2_ETH_Address || + tokenAddressLC === this.addresses.L1_ETH_Address ) { - balance = await this.L1Provider.getBalance(allAddresses.L1LPAddress) + balance = await this.L1Provider.getBalance(this.addresses.L1LPAddress) } else { balance = await this.L1_TEST_Contract .attach(tokenAddress) .connect(this.L1Provider) - .balanceOf(allAddresses.L1LPAddress) + .balanceOf(this.addresses.L1LPAddress) } return balance.toString() @@ -2863,16 +2863,16 @@ class NetworkService { let tokenAddressLC = tokenAddress.toLowerCase() if ( - tokenAddressLC === allAddresses.L2_ETH_Address || - tokenAddressLC === allAddresses.L1_ETH_Address + tokenAddressLC === this.addresses.L2_ETH_Address || + tokenAddressLC === this.addresses.L1_ETH_Address ) { //We are dealing with ETH balance = await this.L2_ETH_Contract.connect(this.L2Provider).balanceOf( - allAddresses.L2LPAddress + this.addresses.L2LPAddress ) } else { balance = await this.L2_TEST_Contract.attach(tokenAddress).connect(this.L2Provider).balanceOf( - allAddresses.L2LPAddress + this.addresses.L2LPAddress ) } @@ -2885,7 +2885,7 @@ class NetworkService { async L1LPLiquidity(tokenAddress) { const L1LPContractNS = new ethers.Contract( - allAddresses.L1LPAddress, + this.addresses.L1LPAddress, L1LPJson.abi, this.L1Provider ) @@ -2906,7 +2906,7 @@ class NetworkService { async L2LPLiquidity(tokenAddress) { const L2LPContractNS = new ethers.Contract( - allAddresses.L2LPAddress, + this.addresses.L2LPAddress, L2LPJson.abi, this.L2Provider ) @@ -2929,7 +2929,7 @@ class NetworkService { const gasPrice = await this.L2Provider.getGasPrice() console.log("Fast exit gas price", gasPrice.toString()) - if( currencyAddress !== allAddresses.L2_ETH_Address ) { + if( currencyAddress !== this.addresses.L2_ETH_Address ) { const ERC20Contract = new ethers.Contract( currencyAddress, @@ -2940,7 +2940,7 @@ class NetworkService { const tx = await ERC20Contract .populateTransaction .approve( - allAddresses.L2LPAddress, + this.addresses.L2LPAddress, utils.parseEther('1.0') ) @@ -2954,9 +2954,9 @@ class NetworkService { .connect(this.provider.getSigner()) .populateTransaction .clientDepositL2( - currencyAddress === allAddresses.L2_ETH_Address ? '1' : '0', //ETH does not allow zero + currencyAddress === this.addresses.L2_ETH_Address ? '1' : '0', //ETH does not allow zero currencyAddress, - currencyAddress === allAddresses.L2_ETH_Address ? { value : '1'} : {} + currencyAddress === this.addresses.L2_ETH_Address ? { value : '1'} : {} ) const depositGas_BN = await this.L2Provider.estimateGas({...tx2, from: this.gasEstimateAccount}) @@ -2989,7 +2989,7 @@ class NetworkService { const gasPrice = await this.L1Provider.getGasPrice() console.log("Fast deposit gas price", gasPrice.toString()) - if( currencyAddress !== allAddresses.L1_ETH_Address ) { + if( currencyAddress !== this.addresses.L1_ETH_Address ) { const ERC20Contract = new ethers.Contract( currencyAddress, @@ -2998,7 +2998,7 @@ class NetworkService { ) const tx = await ERC20Contract.populateTransaction.approve( - allAddresses.L1LPAddress, + this.addresses.L1LPAddress, utils.parseEther('1.0') ) @@ -3010,9 +3010,9 @@ class NetworkService { //in some cases zero not allowed const tx2 = await this.L1LPContract .connect(this.provider.getSigner()).populateTransaction.clientDepositL1( - currencyAddress === allAddresses.L1_ETH_Address ? '1' : '0', //ETH does not allow zero + currencyAddress === this.addresses.L1_ETH_Address ? '1' : '0', //ETH does not allow zero currencyAddress, - currencyAddress === allAddresses.L1_ETH_Address ? { value : '1'} : {} + currencyAddress === this.addresses.L1_ETH_Address ? { value : '1'} : {} ) const depositGas_BN = await this.L1Provider.estimateGas(tx2) @@ -3044,7 +3044,7 @@ class NetworkService { ) const tx = await ERC20Contract.populateTransaction.approve( - allAddresses.L1LPAddress, + this.addresses.L1LPAddress, utils.parseEther('0') ) @@ -3089,20 +3089,20 @@ class NetworkService { let gasPrice = await this.L2Provider.getGasPrice() console.log("Fast exit gas price", gasPrice.toString()) - if( currencyAddress === allAddresses.L2_ETH_Address ) { + if( currencyAddress === this.addresses.L2_ETH_Address ) { balance_BN = await this.L2Provider.getBalance(this.account) } const L2BillingContract = new ethers.Contract( - allAddresses.Proxy__BobaBillingContract, + this.addresses.Proxy__BobaBillingContract, L2BillingContractJson.abi, this.L2Provider, ) let BobaApprovalAmount = await L2BillingContract.exitFee() const BobaAllowance = await this.checkAllowance( - allAddresses.TK_L2BOBA, - allAddresses.L2LPAddress, + this.addresses.TK_L2BOBA, + this.addresses.L2LPAddress, ) try { @@ -3110,15 +3110,15 @@ class NetworkService { if (BobaAllowance.lt(BobaApprovalAmount)) { const approveStatus = await this.approveERC20( BobaApprovalAmount, - allAddresses.TK_L2BOBA, - allAddresses.L2LPAddress + this.addresses.TK_L2BOBA, + this.addresses.L2LPAddress ) if (!approveStatus) return false } // Approve other tokens - if( currencyAddress !== allAddresses.L2_ETH_Address && - utils.getAddress(currencyAddress) !== utils.getAddress(allAddresses.TK_L2BOBA) + if( currencyAddress !== this.addresses.L2_ETH_Address && + utils.getAddress(currencyAddress) !== utils.getAddress(this.addresses.TK_L2BOBA) ) { const L2ERC20Contract = new ethers.Contract( currencyAddress, @@ -3133,7 +3133,7 @@ class NetworkService { let allowance_BN = await L2ERC20Contract.allowance( this.account, - allAddresses.L2LPAddress + this.addresses.L2LPAddress ) console.log("Allowance:",utils.formatEther(allowance_BN)) @@ -3141,7 +3141,7 @@ class NetworkService { //Estimate gas const tx = await L2ERC20Contract.populateTransaction.approve( - allAddresses.L2LPAddress, + this.addresses.L2LPAddress, balance_BN ) @@ -3150,7 +3150,7 @@ class NetworkService { console.log("Cost to Approve (ETH):", utils.formatEther(approvalCost_BN)) const approveStatus = await L2ERC20Contract.approve( - allAddresses.L2LPAddress, + this.addresses.L2LPAddress, balance_BN ) await approveStatus.wait() @@ -3168,7 +3168,7 @@ class NetworkService { .connect(this.provider.getSigner()).populateTransaction.clientDepositL2( balance_BN, currencyAddress, - currencyAddress === allAddresses.L2_ETH_Address ? { value : '1' } : {} + currencyAddress === this.addresses.L2_ETH_Address ? { value : '1' } : {} ) let depositGas_BN = await this.L2Provider.estimateGas(tx2) @@ -3190,7 +3190,7 @@ class NetworkService { let depositCost_BN = depositGas_BN.mul(gasPrice).add(l1SecurityFee) console.log("Deposit gas cost (ETH)", utils.formatEther(depositCost_BN)) - if(currencyAddress === allAddresses.L2_ETH_Address) { + if(currencyAddress === this.addresses.L2_ETH_Address) { //if fee token, need to consider cost to exit balance_BN = balance_BN.sub(depositCost_BN) } @@ -3209,7 +3209,7 @@ class NetworkService { .connect(this.provider.getSigner()).clientDepositL2( balance_BN, currencyAddress, - currencyAddress === allAddresses.L2_ETH_Address ? { value : balance_BN.sub(depositCost_BN) } : {} + currencyAddress === this.addresses.L2_ETH_Address ? { value : balance_BN.sub(depositCost_BN) } : {} ) //at this point the tx has been submitted, and we are waiting... @@ -3266,34 +3266,34 @@ class NetworkService { console.log("depositL2LP currencyAddress",currencyAddress) const L2BillingContract = new ethers.Contract( - allAddresses.Proxy__BobaBillingContract, + this.addresses.Proxy__BobaBillingContract, L2BillingContractJson.abi, this.L2Provider, ) let BobaApprovalAmount = await L2BillingContract.exitFee() const BobaAllowance = await this.checkAllowance( - allAddresses.TK_L2BOBA, - allAddresses.L2LPAddress, + this.addresses.TK_L2BOBA, + this.addresses.L2LPAddress, ) try { // Approve BOBA first - if (utils.getAddress(currencyAddress) === utils.getAddress(allAddresses.TK_L2BOBA)) { + if (utils.getAddress(currencyAddress) === utils.getAddress(this.addresses.TK_L2BOBA)) { BobaApprovalAmount = BobaApprovalAmount.add(BigNumber.from(value_Wei_String)) } if (BobaAllowance.lt(BobaApprovalAmount)) { const approveStatus = await this.approveERC20( BobaApprovalAmount, - allAddresses.TK_L2BOBA, - allAddresses.L2LPAddress + this.addresses.TK_L2BOBA, + this.addresses.L2LPAddress ) if (!approveStatus) return false } // Approve other tokens - if( currencyAddress !== allAddresses.L2_ETH_Address && - utils.getAddress(currencyAddress) !== utils.getAddress(allAddresses.TK_L2BOBA) + if( currencyAddress !== this.addresses.L2_ETH_Address && + utils.getAddress(currencyAddress) !== utils.getAddress(this.addresses.TK_L2BOBA) ) { const L2ERC20Contract = new ethers.Contract( @@ -3304,14 +3304,14 @@ class NetworkService { let allowance_BN = await L2ERC20Contract.allowance( this.account, - allAddresses.L2LPAddress + this.addresses.L2LPAddress ) let depositAmount_BN = BigNumber.from(value_Wei_String) if (depositAmount_BN.gt(allowance_BN)) { const approveStatus = await L2ERC20Contract.approve( - allAddresses.L2LPAddress, + this.addresses.L2LPAddress, value_Wei_String ) await approveStatus.wait() @@ -3326,7 +3326,7 @@ class NetworkService { .connect(this.provider.getSigner()).clientDepositL2( value_Wei_String, currencyAddress, - currencyAddress === allAddresses.L2_ETH_Address ? { value: value_Wei_String } : {} + currencyAddress === this.addresses.L2_ETH_Address ? { value: value_Wei_String } : {} ) //at this point the tx has been submitted, and we are waiting... @@ -3539,7 +3539,7 @@ class NetworkService { if( !this.delegateContract ) return try { - const delegateCheck = await this.delegateContract.attach(allAddresses.GovernorBravoDelegator) + const delegateCheck = await this.delegateContract.attach(this.addresses.GovernorBravoDelegator) const rawThreshold = await delegateCheck.proposalThreshold() return { proposalThreshold: formatEther(rawThreshold) } } catch (error) { @@ -3574,12 +3574,12 @@ class NetworkService { /* let tokenIds = payload.tokenIds // create proposal only on latest contracts. - const delegateCheck = await this.delegateContract.attach(allAddresses.GovernorBravoDelegatorV2) + const delegateCheck = await this.delegateContract.attach(this.addresses.GovernorBravoDelegatorV2) */ // FIXME: Ve DAO Till here - const delegateCheck = await this.delegateContract.attach(allAddresses.GovernorBravoDelegator) + const delegateCheck = await this.delegateContract.attach(this.addresses.GovernorBravoDelegator) if( payload.action === 'text-proposal' ) { address = ['0x000000000000000000000000000000000000dEaD'] @@ -3593,7 +3593,7 @@ class NetworkService { value2 = Number(payload.value[1]) value3 = Number(payload.value[2]) description = `Change L1 LP Bridge fee to ${value1}, ${value2}, and ${value3} integer percent` - address = [allAddresses.L2LPAddress] + address = [this.addresses.L2LPAddress] callData = [ethers.utils.defaultAbiCoder.encode( ['uint256','uint256','uint256'], [value1, value2, value3] @@ -3605,7 +3605,7 @@ class NetworkService { value2 = Number(payload.value[1]) value3 = Number(payload.value[2]) description = `Change L2 LP Bridge fee to ${value1}, ${value2}, and ${value3} integer percent` - address = [allAddresses.L2LPAddress] + address = [this.addresses.L2LPAddress] callData = [ethers.utils.defaultAbiCoder.encode( ['uint256','uint256','uint256'], [value1, value2, value3] @@ -3654,8 +3654,8 @@ class NetworkService { if (!this.delegateContract || this.networkGateway === 'goerli') return - const delegateCheckV1 = await this.delegateContract.attach(allAddresses.GovernorBravoDelegator) - const delegateCheckV2 = await this.delegateContract.attach(allAddresses.GovernorBravoDelegatorV2) + const delegateCheckV1 = await this.delegateContract.attach(this.addresses.GovernorBravoDelegator) + const delegateCheckV2 = await this.delegateContract.attach(this.addresses.GovernorBravoDelegatorV2) try { @@ -3665,13 +3665,13 @@ class NetworkService { const descriptionList = await GraphQLService.queryBridgeProposalCreated() const proposalGroup = groupBy(descriptionList.data.governorProposalCreateds, 'to'); - const delegatorList = [ allAddresses.GovernorBravoDelegator, allAddresses.GovernorBravoDelegatorV2 ]; + const delegatorList = [ this.addresses.GovernorBravoDelegator, this.addresses.GovernorBravoDelegatorV2 ]; for (let delegator of delegatorList) { let delegateCheck; - if (delegator === allAddresses.GovernorBravoDelegator) { + if (delegator === this.addresses.GovernorBravoDelegator) { delegateCheck = delegateCheckV1; - } else if(delegator === allAddresses.GovernorBravoDelegatorV2) { + } else if(delegator === this.addresses.GovernorBravoDelegatorV2) { delegateCheck = delegateCheckV2; } const proposals = proposalGroup[ delegator.toLowerCase() ] @@ -3740,7 +3740,7 @@ class NetworkService { hasLiveProposal } } catch (error) { - console.log("NS: fetchProposals error:",error) + console.log("NS: fetchProposalsVeDao error:",error) return error } } @@ -3750,7 +3750,7 @@ class NetworkService { if (!this.delegateContract) return try { - const delegateCheck = await this.delegateContract.attach(allAddresses.GovernorBravoDelegatorV2) + const delegateCheck = await this.delegateContract.attach(this.addresses.GovernorBravoDelegatorV2) if (this.account) { const receipt = await delegateCheck.getReceipt(Number(proposalId), tokenId); @@ -3779,7 +3779,7 @@ class NetworkService { try { const delegateCheck = await this.delegateContract .connect(this.provider.getSigner()) - .attach(allAddresses.GovernorBravoDelegatorV2) + .attach(this.addresses.GovernorBravoDelegatorV2) const res = await delegateCheck.castVote(id, userVote, tokenIds) @@ -3803,7 +3803,7 @@ class NetworkService { try { const delegateCheck = await this.delegateContract .connect(this.provider.getSigner()) - .attach(allAddresses.GovernorBravoDelegator) + .attach(this.addresses.GovernorBravoDelegator) let res = delegateCheck.queue(Number(proposalID)) return res } catch(error) { @@ -3825,7 +3825,7 @@ class NetworkService { try { const delegateCheck = await this.delegateContract .connect(this.provider.getSigner()) - .attach(allAddresses.GovernorBravoDelegator) + .attach(this.addresses.GovernorBravoDelegator) let res = delegateCheck.execute(Number(proposalID)) return res } catch(error) { @@ -3848,23 +3848,19 @@ class NetworkService { try { const FixedSavings = new ethers.Contract( - allAddresses.BobaFixedSavings, + this.addresses.BobaFixedSavings, L2SaveJson.abi, this.provider.getSigner() ) - console.log("FixedSavings.address:",FixedSavings.address) - let allowance_BN = await this.BobaContract .connect(this.provider.getSigner()) .allowance( this.account, - allAddresses.BobaFixedSavings + this.addresses.BobaFixedSavings ) - console.log("Allowance:", allowance_BN.toString()) let depositAmount_BN = BigNumber.from(value_Wei_String) - console.log("Deposit:", depositAmount_BN) let approveAmount_BN = depositAmount_BN.add(BigNumber.from('1000000000000')) @@ -3874,11 +3870,10 @@ class NetworkService { const approveStatus = await this.BobaContract .connect(this.provider.getSigner()) .approve( - allAddresses.BobaFixedSavings, + this.addresses.BobaFixedSavings, approveAmount_BN ) const TX = await approveStatus.wait() - console.log("approveStatus:", TX) } else { console.log("Allowance is sufficient:", allowance_BN.toString(), depositAmount_BN.toString()) @@ -3919,7 +3914,7 @@ class NetworkService { .connect(this.provider) .allowance( this.gasEstimateAccount, - allAddresses.BobaFixedSavings + this.addresses.BobaFixedSavings ) console.log("benchmarkAllowance_BN",allowance_BN.toString()) @@ -3928,7 +3923,7 @@ class NetworkService { .connect(this.provider.getSigner()) .populateTransaction .approve( - allAddresses.BobaFixedSavings, + this.addresses.BobaFixedSavings, allowance_BN.toString(), ) @@ -3938,7 +3933,7 @@ class NetworkService { // third, we need the stake cost const FixedSavings = new ethers.Contract( - allAddresses.BobaFixedSavings, + this.addresses.BobaFixedSavings, L2SaveJson.abi, this.provider ) @@ -3973,7 +3968,7 @@ class NetworkService { try { const FixedSavings = new ethers.Contract( - allAddresses.BobaFixedSavings, + this.addresses.BobaFixedSavings, L2SaveJson.abi, this.provider.getSigner() ) @@ -3995,7 +3990,7 @@ class NetworkService { try { const FixedSavings = new ethers.Contract( - allAddresses.BobaFixedSavings, + this.addresses.BobaFixedSavings, L2SaveJson.abi, this.L2Provider ) @@ -4014,57 +4009,57 @@ class NetworkService { let allowance_BN = null let approveStatus = null - if(allAddresses.hasOwnProperty('BobaFixedSavings')) { + if(this.addresses.hasOwnProperty('BobaFixedSavings')) { allowance_BN = await this.BobaContract .connect(this.provider.getSigner()) .allowance( this.account, - allAddresses.BobaFixedSavings + this.addresses.BobaFixedSavings ) console.log("Fixed Savings Allowance", allowance_BN.toString()) approveStatus = await this.BobaContract .connect(this.provider.getSigner()) .approve( - allAddresses.BobaFixedSavings, + this.addresses.BobaFixedSavings, approvalAmount ) await approveStatus.wait() console.log("Fixed Savings Approval", approveStatus) } - if(allAddresses.hasOwnProperty('DiscretionaryExitFee')) { + if(this.addresses.hasOwnProperty('DiscretionaryExitFee')) { allowance_BN = await this.BobaContract .connect(this.provider.getSigner()) .allowance( this.account, - allAddresses.DiscretionaryExitFee + this.addresses.DiscretionaryExitFee ) console.log("DiscretionaryExitFee Allowance", allowance_BN.toString()) approveStatus = await this.BobaContract .connect(this.provider.getSigner()) .approve( - allAddresses.DiscretionaryExitFee, + this.addresses.DiscretionaryExitFee, approvalAmount ) await approveStatus.wait() console.log("DiscretionaryExitFee Approval", approveStatus) } - if(allAddresses.hasOwnProperty('L2LPAddress')) { + if(this.addresses.hasOwnProperty('L2LPAddress')) { allowance_BN = await this.BobaContract .connect(this.provider.getSigner()) .allowance( this.account, - allAddresses.L2LPAddress + this.addresses.L2LPAddress ) console.log("L2LP", allowance_BN.toString()) approveStatus = await this.BobaContract .connect(this.provider.getSigner()) .approve( - allAddresses.L2LPAddress, + this.addresses.L2LPAddress, approvalAmount ) await approveStatus.wait() @@ -4083,7 +4078,7 @@ class NetworkService { try { const FixedSavings = new ethers.Contract( - allAddresses.BobaFixedSavings, + this.addresses.BobaFixedSavings, L2SaveJson.abi, this.L2Provider ) @@ -4196,7 +4191,7 @@ class NetworkService { /***********************************************/ async getExitFeeFromBillingContract() { const L2BillingContract = new ethers.Contract( - allAddresses.Proxy__BobaBillingContract, + this.addresses.Proxy__BobaBillingContract, L2BillingContractJson.abi, this.L2Provider, ) @@ -4232,7 +4227,7 @@ class NetworkService { try { const ve = new ethers.Contract( - allAddresses.Ve_BOBA, + this.addresses.Ve_BOBA, veJson.abi, this.provider.getSigner() ) @@ -4241,7 +4236,7 @@ class NetworkService { .connect(this.provider.getSigner()) .allowance( this.account, - allAddresses.Ve_BOBA + this.addresses.Ve_BOBA ) let depositAmount_BN = BigNumber.from(value_Wei_String) @@ -4253,7 +4248,7 @@ class NetworkService { const approveStatus = await this.BobaContract .connect(this.provider.getSigner()) .approve( - allAddresses.Ve_BOBA, + this.addresses.Ve_BOBA, approveAmount_BN ) const TX = await approveStatus.wait() @@ -4289,7 +4284,7 @@ class NetworkService { try { const ve = new ethers.Contract( - allAddresses.Ve_BOBA, //check ve address is present + this.addresses.Ve_BOBA, //check ve address is present veJson.abi, this.provider.getSigner() ) @@ -4316,7 +4311,7 @@ class NetworkService { } try { const ve = new ethers.Contract( - allAddresses.Ve_BOBA, //check ve address is present + this.addresses.Ve_BOBA, //check ve address is present veJson.abi, this.provider.getSigner() ) @@ -4325,7 +4320,7 @@ class NetworkService { .connect(this.provider.getSigner()) .allowance( this.account, - allAddresses.Ve_BOBA + this.addresses.Ve_BOBA ) let depositAmount_BN = BigNumber.from(value_Wei_String) @@ -4337,7 +4332,7 @@ class NetworkService { const approveStatus = await this.BobaContract .connect(this.provider.getSigner()) .approve( - allAddresses.Ve_BOBA, + this.addresses.Ve_BOBA, approveAmount_BN ) await approveStatus.wait() @@ -4374,7 +4369,7 @@ class NetworkService { try { const ve = new ethers.Contract( - allAddresses.Ve_BOBA, //check ve address is present + this.addresses.Ve_BOBA, //check ve address is present veJson.abi, this.provider.getSigner() ) @@ -4402,13 +4397,13 @@ class NetworkService { try { const ve = new ethers.Contract( - allAddresses.Ve_BOBA, //check ve address is present + this.addresses.Ve_BOBA, //check ve address is present veJson.abi, this.provider ) const baseVoter = new ethers.Contract( - allAddresses.BASE_V1_VOTER, + this.addresses.BASE_V1_VOTER, voterJson.abi, this.provider ) @@ -4466,8 +4461,8 @@ class NetworkService { } try { const pResponse = supportedAltL1Chains.map(async (type) => { - let L0_ETH_ENDPOINT = allAddresses.Layer_Zero_Endpoint; - let ETH_L1_BOBA_ADDRESS = allAddresses.TK_L1BOBA; + let L0_ETH_ENDPOINT = this.addresses.Layer_Zero_Endpoint; + let ETH_L1_BOBA_ADDRESS = this.addresses.TK_L1BOBA; let L0_TARGET_CHAIN_ID = l0AllProtocols[type].Layer_Zero_ChainId; let ALT_L1_BOBA_ADDRESS = allAddresses[`Proxy__EthBridgeTo${type}`]; let PROXY_ETH_L1_BRIDGE_ADDRESS_TO = allAddresses[`${type}_TK_BOBA`]; @@ -4540,9 +4535,9 @@ class NetworkService { return } try { - let L0_ETH_ENDPOINT = allAddresses.Layer_Zero_Endpoint; + let L0_ETH_ENDPOINT = this.addresses.Layer_Zero_Endpoint; let L0_TARGET_CHAIN_ID = l0AllProtocols[type].Layer_Zero_ChainId; - let ETH_L1_BOBA_ADDRESS = allAddresses.TK_L1BOBA; + let ETH_L1_BOBA_ADDRESS = this.addresses.TK_L1BOBA; let PROXY_ETH_L1_BRIDGE_ADDRESS_TO = allAddresses[`Proxy__EthBridgeTo${type}`]; let ALT_L1_BOBA_ADDRESS = allAddresses[`${type}_TK_BOBA`]; /* proxy eth bridge contract */ @@ -4635,7 +4630,7 @@ class NetworkService { try { const baseVoter = new ethers.Contract( - allAddresses.BASE_V1_VOTER, + this.addresses.BASE_V1_VOTER, voterJson.abi, this.provider ) @@ -4663,7 +4658,7 @@ class NetworkService { try { const baseVoter = new ethers.Contract( - allAddresses.BASE_V1_VOTER, + this.addresses.BASE_V1_VOTER, voterJson.abi, this.provider.getSigner() ) @@ -4687,7 +4682,7 @@ class NetworkService { const pools = [] const baseVoter = new ethers.Contract( - allAddresses.BASE_V1_VOTER, + this.addresses.BASE_V1_VOTER, voterJson.abi, this.provider ) @@ -4757,7 +4752,7 @@ class NetworkService { if (!this.delegateContract) return - const delegateCheck = await this.delegateContract.attach(allAddresses.GovernorBravoDelegator) + const delegateCheck = await this.delegateContract.attach(this.addresses.GovernorBravoDelegator) try { @@ -4841,7 +4836,7 @@ class NetworkService { try { const delegateCheck = await this.delegateContract .connect(this.provider.getSigner()) - .attach(allAddresses.GovernorBravoDelegator) + .attach(this.addresses.GovernorBravoDelegator) return delegateCheck.castVote(id, userVote) } catch(error) { console.log("NS: castProposalVote error:",error) From 20beb0e66013dfdef603ccc61d1b22a782ea3483 Mon Sep 17 00:00:00 2001 From: Sahil Kashetwar Date: Wed, 11 Jan 2023 21:39:14 +0530 Subject: [PATCH 20/32] fix: fetch calls only on ETH network fix: cleanup feeswitcher network. --- .../mainMenu/feeSwitcher/FeeSwitcher.js | 68 ++++++++++--------- .../boba/gateway/src/containers/home/Home.js | 33 ++++++--- .../gateway/src/services/networkService.js | 6 +- 3 files changed, 59 insertions(+), 48 deletions(-) diff --git a/packages/boba/gateway/src/components/mainMenu/feeSwitcher/FeeSwitcher.js b/packages/boba/gateway/src/components/mainMenu/feeSwitcher/FeeSwitcher.js index 7bb2d4b7c9..4cc958c302 100644 --- a/packages/boba/gateway/src/components/mainMenu/feeSwitcher/FeeSwitcher.js +++ b/packages/boba/gateway/src/components/mainMenu/feeSwitcher/FeeSwitcher.js @@ -37,6 +37,9 @@ import { isEqual } from 'lodash' import BN from 'bignumber.js' import { logAmount } from 'util/amountConvert.js' import { HelpOutline } from '@mui/icons-material' +import networkService from 'services/networkService.js' +import { selectActiveNetworkName } from 'selectors/networkSelector.js' +import { NETWORK } from 'util/network/network.util.js' function FeeSwitcher() { @@ -44,36 +47,35 @@ function FeeSwitcher() { const accountEnabled = useSelector(selectAccountEnabled()) const feeUseBoba = useSelector(selectBobaFeeChoice()) + const networkName = useSelector(selectActiveNetworkName()) + const network = useSelector(selectActiveNetworkName()) const layer = useSelector(selectLayer()) const l2Balances = useSelector(selectlayer2Balance, isEqual) const l2BalanceETH = l2Balances.filter((i) => i.symbol === 'ETH') - const balanceETH = l2BalanceETH[0] - + const balanceETH = l2BalanceETH[ 0 ] const l2BalanceBOBA = l2Balances.filter((i) => i.symbol === 'BOBA') - const balanceBOBA = l2BalanceBOBA[0] + const balanceBOBA = l2BalanceBOBA[ 0 ] const dispatchSwitchFee = useCallback(async (targetFee) => { - //console.log("balanceBOBA:",balanceBOBA) - //console.log("balanceETH:",balanceETH) - - let tooSmallETH = false + let tooSmallL1NativeToken = false + let minL1NativeBalance = network=== NETWORK.ETHEREUM ? 0.0002 : 0.5 let tooSmallBOBA = false - if(typeof(balanceBOBA) === 'undefined') { + if (typeof (balanceBOBA) === 'undefined') { tooSmallBOBA = true } else { //check actual balance - tooSmallBOBA = new BN(logAmount(balanceBOBA.balance, 18)).lt(new BN(3.0)) + tooSmallBOBA = new BN(logAmount(balanceBOBA.balance, 18)).lt(new BN(1)) } - if(typeof(balanceETH) === 'undefined') { - tooSmallETH = true + if (typeof (balanceETH) === 'undefined') { + tooSmallL1NativeToken = true } else { //check actual balance - tooSmallETH = new BN(logAmount(balanceETH.balance, 18)).lt(new BN(0.002)) + tooSmallL1NativeToken = new BN(logAmount(balanceETH.balance, 18)).lt(new BN(minL1NativeBalance)) } if (!balanceBOBA && !balanceETH) { @@ -86,23 +88,23 @@ function FeeSwitcher() { if (feeUseBoba && targetFee === 'BOBA') { // do nothing - already set to BOBA } - else if ( !feeUseBoba && targetFee === 'ETH' ) { + else if (!feeUseBoba && targetFee === networkService.L1NativeTokenSymbol) { // do nothing - already set to ETH } - else if ( !feeUseBoba && targetFee === 'BOBA' ) { + else if (!feeUseBoba && targetFee === 'BOBA') { // change to BOBA - if( tooSmallBOBA ) { - dispatch(openError(`You cannot change the fee token to BOBA since your BOBA balance is below 3 BOBA. + if (tooSmallBOBA) { + dispatch(openError(`You cannot change the fee token to BOBA since your BOBA balance is below 1 BOBA. If you change fee token now, you might get stuck. Please swap some ETH for BOBA first.`)) } else { res = await dispatch(switchFee(targetFee)) } } - else if (feeUseBoba && targetFee === 'ETH') { - // change to ETH - if( tooSmallETH ) { - dispatch(openError(`You cannot change the fee token to ETH since your ETH balance is below 0.002 ETH. - If you change fee token now, you might get stuck. Please swap some BOBA for ETH first.`)) + else if (feeUseBoba && targetFee === networkService.L1NativeTokenSymbol) { + // change to L1Native Token + if (tooSmallL1NativeToken) { + dispatch(openError(`You cannot change the fee token to ${networkService.L1NativeTokenSymbol} since your ${networkService.L1NativeTokenSymbol} balance is below ${minL1NativeBalance}. + If you change fee token now, you might get stuck. Please obtain some ${networkService.L1NativeTokenSymbol} first.`)) } else { res = await dispatch(switchFee(targetFee)) } @@ -116,7 +118,7 @@ function FeeSwitcher() { if (!accountEnabled && layer !== 'L2') { return - + Fee @@ -125,7 +127,7 @@ function FeeSwitcher() { return ( - + Fee @@ -133,16 +135,16 @@ function FeeSwitcher() { onSelect={(e, d) => { dispatchSwitchFee(e.target.value) }} - value={!feeUseBoba ? "ETH" : 'BOBA'} - options={[ { - value: 'ETH', - title: 'ETH', - }, - { - value: 'BOBA', - title: 'BOBA', - description: 'Save another 25% by using Boba as your gas fee token' - } + value={!feeUseBoba ? 'BOBA': networkService.L1NativeTokenSymbol } + options={[ + { + value: 'BOBA', + title: 'BOBA', + }, + { + value: networkService.L1NativeTokenSymbol, + title: networkService.L1NativeTokenName, + } ]} /> diff --git a/packages/boba/gateway/src/containers/home/Home.js b/packages/boba/gateway/src/containers/home/Home.js index b8b076274b..8536ab6ac2 100644 --- a/packages/boba/gateway/src/containers/home/Home.js +++ b/packages/boba/gateway/src/containers/home/Home.js @@ -89,6 +89,7 @@ import useInterval from 'hooks/useInterval' import useGoogleAnalytics from 'hooks/useGoogleAnalytics' import { selectActiveNetwork, selectActiveNetworkType } from 'selectors/networkSelector' import useNetwork from 'hooks/useNetwork' +import { NETWORK } from 'util/network/network.util' function Home() { @@ -166,7 +167,9 @@ function Home() { if (initialized === 'enabled') { dispatch(setBaseState(true)) // load DAO to speed up the process - dispatch(fetchDaoProposals()) + if (activeNetwork === NETWORK.ETHEREUM) { + dispatch(fetchDaoProposals()) + } return true } } @@ -176,15 +179,20 @@ function Home() { useInterval(() => { if(accountEnabled /*== MetaMask is connected*/) { dispatch(fetchBalances()) // account specific - dispatch(fetchDaoBalance()) // account specific - dispatch(fetchDaoVotes()) // account specific - dispatch(fetchDaoBalanceX()) // account specific - dispatch(fetchDaoVotesX()) // account specific - dispatch(getFS_Saves()) // account specific - dispatch(getFS_Info()) // account specific - dispatch(getMonsterInfo()) // account specific + + //specific to ETH network + if (activeNetwork === NETWORK.ETHEREUM) { + dispatch(fetchDaoBalance()) // account specific + dispatch(fetchDaoVotes()) // account specific + dispatch(fetchDaoBalanceX()) // account specific + dispatch(fetchDaoVotesX()) // account specific + dispatch(getFS_Info()) // account specific + dispatch(getFS_Saves()) // account specific + dispatch(getMonsterInfo()) // account specific + } } - if(baseEnabled /*== we only have have Base L1 and L2 providers*/) { + /*== we only have have Base L1 and L2 providers*/ + if (baseEnabled && activeNetwork === NETWORK.ETHEREUM) { dispatch(getProposalThreshold()) dispatch(fetchDaoProposals()) } @@ -201,9 +209,12 @@ function Home() { if (maintenance) return if (accountEnabled) { dispatch(addTokenList()) - dispatch(getMonsterInfo()) + // monster only availble for ETH + if (activeNetwork === NETWORK.ETHEREUM) { + dispatch(getMonsterInfo()) + } } - }, [ dispatch, accountEnabled, maintenance ]) + }, [ dispatch, accountEnabled, maintenance, activeNetwork ]) // Invoking GA analysis page view hooks useGoogleAnalytics(); diff --git a/packages/boba/gateway/src/services/networkService.js b/packages/boba/gateway/src/services/networkService.js index d8dc36a162..1d21ebcd65 100644 --- a/packages/boba/gateway/src/services/networkService.js +++ b/packages/boba/gateway/src/services/networkService.js @@ -262,7 +262,7 @@ class NetworkService { async getBobaFeeChoice() { const bobaFeeContract = new ethers.Contract( - this.addresses.Proxy__Boba_GasPriceOracle, + this.addresses.Boba_GasPriceOracle, BobaGasPriceOracleABI, this.L2Provider ) @@ -296,7 +296,7 @@ class NetworkService { if( this.L1orL2 !== 'L2' ) return const bobaFeeContract = new ethers.Contract( - this.addresses.Proxy__Boba_GasPriceOracle, + this.addresses.Boba_GasPriceOracle, BobaGasPriceOracleABI, this.provider.getSigner() ) @@ -544,7 +544,6 @@ class NetworkService { // NOTE: if not in address manager then refer it from token assets config. if (typeof L1a === 'undefined' || typeof L2a === 'undefined') { - console.log(`ERROR: ${key} not addressmanager`) if (typeof this.supportedTokenAddresses[key] !== 'undefined') { tokenList[key] = this.supportedTokenAddresses[key] } @@ -1085,7 +1084,6 @@ class NetworkService { const state = store.getState() const tA = Object.values(state.tokenList); - console.log(['state.tokenList',state.tokenList, tA]) const tokenC = new ethers.Contract( this.addresses.L1_ETH_Address, From e003aa4abbb1ab463e6c33384d31ef2b5f236590 Mon Sep 17 00:00:00 2001 From: Sahil Kashetwar Date: Wed, 18 Jan 2023 19:31:04 +0530 Subject: [PATCH 21/32] updated the file name --- .../src/services/{graphQL.Service.js => graphql.service.js} | 0 packages/boba/gateway/src/services/networkService.js | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename packages/boba/gateway/src/services/{graphQL.Service.js => graphql.service.js} (100%) diff --git a/packages/boba/gateway/src/services/graphQL.Service.js b/packages/boba/gateway/src/services/graphql.service.js similarity index 100% rename from packages/boba/gateway/src/services/graphQL.Service.js rename to packages/boba/gateway/src/services/graphql.service.js diff --git a/packages/boba/gateway/src/services/networkService.js b/packages/boba/gateway/src/services/networkService.js index 1d21ebcd65..f0f32a5411 100644 --- a/packages/boba/gateway/src/services/networkService.js +++ b/packages/boba/gateway/src/services/networkService.js @@ -91,7 +91,7 @@ import coinGeckoAxiosInstance from 'api/coinGeckoAxios' import metaTransactionAxiosInstance from 'api/metaTransactionAxios' import { sortRawTokens } from 'util/common' -import GraphQLService from "./graphQL.service" +import GraphQLService from "./graphql.service" import addresses_Goerli from "@boba/register/addresses/addressesGoerli_0x6FF9c8FF8F0B6a0763a3030540c21aFC721A9148" import addresses_Mainnet from "@boba/register/addresses/addressesMainnet_0x8376ac6C3f73a25Dd994E0b0669ca7ee0C02F089" From 4dae6f86ec51a17025a62688ffa53371bd339479 Mon Sep 17 00:00:00 2001 From: Sahil Kashetwar Date: Wed, 18 Jan 2023 21:44:13 +0530 Subject: [PATCH 22/32] setting up fees for boba --- .../src/components/mainMenu/feeSwitcher/FeeSwitcher.js | 4 ++-- packages/boba/gateway/src/services/networkService.js | 7 +++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/boba/gateway/src/components/mainMenu/feeSwitcher/FeeSwitcher.js b/packages/boba/gateway/src/components/mainMenu/feeSwitcher/FeeSwitcher.js index 4cc958c302..4ff08f8e83 100644 --- a/packages/boba/gateway/src/components/mainMenu/feeSwitcher/FeeSwitcher.js +++ b/packages/boba/gateway/src/components/mainMenu/feeSwitcher/FeeSwitcher.js @@ -114,7 +114,7 @@ function FeeSwitcher() { dispatch(openAlert(`Successfully changed fee to ${targetFee}`)) } - }, [ dispatch, feeUseBoba, balanceETH, balanceBOBA ]) + }, [ dispatch, feeUseBoba, balanceETH, balanceBOBA, network ]) if (!accountEnabled && layer !== 'L2') { return @@ -135,7 +135,7 @@ function FeeSwitcher() { onSelect={(e, d) => { dispatchSwitchFee(e.target.value) }} - value={!feeUseBoba ? 'BOBA': networkService.L1NativeTokenSymbol } + value={!feeUseBoba ? networkService.L1NativeTokenSymbol: 'BOBA' } options={[ { value: 'BOBA', diff --git a/packages/boba/gateway/src/services/networkService.js b/packages/boba/gateway/src/services/networkService.js index f0f32a5411..7f17bfdd19 100644 --- a/packages/boba/gateway/src/services/networkService.js +++ b/packages/boba/gateway/src/services/networkService.js @@ -274,9 +274,16 @@ class NetworkService { if (this.networkGateway === NETWORK.ETHEREUM) { feeChoice = await bobaFeeContract.bobaFeeTokenUsers(this.account) } else { + // this returns weather the secondary token getting use as tokenfee feeChoice = await bobaFeeContract.secondaryFeeTokenUsers(this.account) + // if it's false which means boba is getting used as tokenfee which is default value. + feeChoice = !feeChoice; + } + console.log( + 'Fee used as boba', feeChoice + ) const bobaFee = { priceRatio: priceRatio.toString(), feeChoice From 93c02c599aaad37243c424738d84027a216ea1c2 Mon Sep 17 00:00:00 2001 From: Sahil Kashetwar Date: Sat, 21 Jan 2023 22:48:45 +0530 Subject: [PATCH 23/32] change: network hash is broken on history page. --- .../src/components/transaction/Transaction.js | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) diff --git a/packages/boba/gateway/src/components/transaction/Transaction.js b/packages/boba/gateway/src/components/transaction/Transaction.js index f9bf232787..20cb6aa583 100644 --- a/packages/boba/gateway/src/components/transaction/Transaction.js +++ b/packages/boba/gateway/src/components/transaction/Transaction.js @@ -21,10 +21,9 @@ import ExpandMoreIcon from '@mui/icons-material/ExpandMore' import * as S from "./ListFarm.styles" import { useTheme } from '@emotion/react' -import { selectNetwork } from 'selectors/networkSelector' -import { useSelector } from 'react-redux' -import { getNetwork } from 'util/masterConfig' + import truncate from 'truncate-middle' +import networkService from 'services/networkService' function Transaction({ link, @@ -53,12 +52,9 @@ function Transaction({ const theme = useTheme() const isMobile = useMediaQuery(theme.breakpoints.down('md')) - const currentNetwork = useSelector(selectNetwork()) - const nw = getNetwork() - const chainLink = ({chain,hash}) => { - let network = nw[currentNetwork] - if (!!network && !!network[chain]) { + const network = networkService.networkConfig; + if (!!network && !!network[ chain ]) { return `${network[chain].transaction}${hash}`; } return '' From 9333bde5cc2f239c36d75af8fc2d75cdc65a26bc Mon Sep 17 00:00:00 2001 From: Sahil Kashetwar Date: Sun, 22 Jan 2023 00:39:56 +0530 Subject: [PATCH 24/32] cleanup network service --- .../gateway/src/services/networkService.js | 51 +++++-------------- 1 file changed, 12 insertions(+), 39 deletions(-) diff --git a/packages/boba/gateway/src/services/networkService.js b/packages/boba/gateway/src/services/networkService.js index 7f17bfdd19..a39ae7b95d 100644 --- a/packages/boba/gateway/src/services/networkService.js +++ b/packages/boba/gateway/src/services/networkService.js @@ -64,10 +64,8 @@ import L2BillingContractJson from "@boba/contracts/artifacts/contracts/L2Billing //special one-off locations import L1ERC20Json from '../deployment/contracts/L1ERC20.json' -import OMGJson from '../deployment/contracts/OMG.json' import TuringMonsterJson from "../deployment/contracts/NFTMonsterV2.json" import AuthenticatedFaucetJson from "../deployment/contracts/AuthenticatedFaucet.json" -import Boba_GasPriceOracleJson from "../deployment/contracts/Boba_GasPriceOracle.json" //WAGMI ABIs import WAGMIv0Json from "../deployment/contracts/WAGMIv0.json" @@ -93,12 +91,6 @@ import metaTransactionAxiosInstance from 'api/metaTransactionAxios' import { sortRawTokens } from 'util/common' import GraphQLService from "./graphql.service" -import addresses_Goerli from "@boba/register/addresses/addressesGoerli_0x6FF9c8FF8F0B6a0763a3030540c21aFC721A9148" -import addresses_Mainnet from "@boba/register/addresses/addressesMainnet_0x8376ac6C3f73a25Dd994E0b0669ca7ee0C02F089" - -import layerZeroTestnet from "@boba/register/addresses/layerZeroTestnet" -import layerZeroMainnet from "@boba/register/addresses/layerZeroMainnet" - import tokenInfo from "@boba/register/addresses/tokenInfo" import { bobaBridges } from 'util/bobaBridges' @@ -111,39 +103,16 @@ import BobaGasPriceOracleABI from './abi/BobaGasPriceOracle.abi' const ERROR_ADDRESS = '0x0000000000000000000000000000000000000000' const L1_ETH_Address = '0x0000000000000000000000000000000000000000' const L2_ETH_Address = '0x4200000000000000000000000000000000000006' -const L2MessengerAddress = '0x4200000000000000000000000000000000000007' -const L2StandardBridgeAddress = '0x4200000000000000000000000000000000000010' +// const L2MessengerAddress = '0x4200000000000000000000000000000000000007' +// const L2StandardBridgeAddress = '0x4200000000000000000000000000000000000010' const L2GasOracle = '0x420000000000000000000000000000000000000F' const L2_SECONDARYFEETOKEN_ADDRESS = '0x4200000000000000000000000000000000000023' let supportedAltL1Chains = [] -let allAddresses = {} -let l0AllProtocols = {} -// preload allAddresses if (APP_CHAIN === 'goerli') { - const bobaBridges = layerZeroTestnet.BOBA_Bridges.Testnet; - const l0Protocols = layerZeroTestnet.Layer_Zero_Protocol.Testnet; - l0AllProtocols = layerZeroTestnet.Layer_Zero_Protocol; - allAddresses = { - ...addresses_Goerli, - L1LPAddress: addresses_Goerli.Proxy__L1LiquidityPool, - L2LPAddress: addresses_Goerli.Proxy__L2LiquidityPool, - ...bobaBridges, - ...l0Protocols - } supportedAltL1Chains = ['BNB', 'Fantom', 'Avalanche'] } else if (APP_CHAIN === 'mainnet') { - const bobaBridges = layerZeroMainnet.BOBA_Bridges.Mainnet; - const l0Protocols = layerZeroMainnet.Layer_Zero_Protocol.Mainnet; - l0AllProtocols = layerZeroMainnet.Layer_Zero_Protocol; - allAddresses = { - ...addresses_Mainnet, - L1LPAddress: addresses_Mainnet.Proxy__L1LiquidityPool, - L2LPAddress: addresses_Mainnet.Proxy__L2LiquidityPool, - ...bobaBridges, - ...l0Protocols - } supportedAltL1Chains = ['Moonbeam','BNB', 'Fantom', 'Avalanche'] } let allTokens = {} @@ -1110,6 +1079,7 @@ class NetworkService { } const getBalancePromise = [] + console.log(['tokenList', tA]); tA.forEach((token) => { if (token.addressL1 === null) return @@ -1163,6 +1133,9 @@ class NetworkService { } }) + console.log([ 'layer1balances', layer1Balances ]); + console.log([ 'layer2Balances', layer2Balances ]); + return { layer1: orderBy(layer1Balances, (i) => i.currency), layer2: orderBy(layer2Balances, (i) => i.currency), @@ -4468,9 +4441,9 @@ class NetworkService { const pResponse = supportedAltL1Chains.map(async (type) => { let L0_ETH_ENDPOINT = this.addresses.Layer_Zero_Endpoint; let ETH_L1_BOBA_ADDRESS = this.addresses.TK_L1BOBA; - let L0_TARGET_CHAIN_ID = l0AllProtocols[type].Layer_Zero_ChainId; - let ALT_L1_BOBA_ADDRESS = allAddresses[`Proxy__EthBridgeTo${type}`]; - let PROXY_ETH_L1_BRIDGE_ADDRESS_TO = allAddresses[`${type}_TK_BOBA`]; + let L0_TARGET_CHAIN_ID = this.addresses.layerZeroTargetChainID; + let ALT_L1_BOBA_ADDRESS = this.addresses[`Proxy__EthBridgeTo${type}`]; + let PROXY_ETH_L1_BRIDGE_ADDRESS_TO = this.addresses[`${type}_TK_BOBA`]; // Layer zero doesn't support moonbase // return 0 for those bridges that haven't been implemented yet @@ -4541,10 +4514,10 @@ class NetworkService { } try { let L0_ETH_ENDPOINT = this.addresses.Layer_Zero_Endpoint; - let L0_TARGET_CHAIN_ID = l0AllProtocols[type].Layer_Zero_ChainId; + let L0_TARGET_CHAIN_ID = this.addresses.layerZeroTargetChainID; let ETH_L1_BOBA_ADDRESS = this.addresses.TK_L1BOBA; - let PROXY_ETH_L1_BRIDGE_ADDRESS_TO = allAddresses[`Proxy__EthBridgeTo${type}`]; - let ALT_L1_BOBA_ADDRESS = allAddresses[`${type}_TK_BOBA`]; + let PROXY_ETH_L1_BRIDGE_ADDRESS_TO = this.addresses[`Proxy__EthBridgeTo${type}`]; + let ALT_L1_BOBA_ADDRESS = this.addresses[`${type}_TK_BOBA`]; /* proxy eth bridge contract */ const Proxy__EthBridge = new ethers.Contract( PROXY_ETH_L1_BRIDGE_ADDRESS_TO, From e08a21f5e8823c8cc9bd1ca5fcb9f0ca252d09fc Mon Sep 17 00:00:00 2001 From: Sahil K <86316370+sk-enya@users.noreply.github.com> Date: Sun, 22 Jan 2023 02:58:49 +0530 Subject: [PATCH 25/32] One Gateway : Wallet Token Listing Fixes --- .../src/containers/wallet/token/Token.js | 26 +++-- packages/boba/gateway/src/images/moonbase.png | Bin 0 -> 27692 bytes .../gateway/src/services/networkService.js | 94 ++++++++++++------ .../boba/gateway/src/util/amountConvert.js | 35 ++++--- packages/boba/gateway/src/util/coinImage.js | 7 ++ .../gateway/src/util/network/config/bnb.js | 4 +- 6 files changed, 111 insertions(+), 55 deletions(-) create mode 100644 packages/boba/gateway/src/images/moonbase.png diff --git a/packages/boba/gateway/src/containers/wallet/token/Token.js b/packages/boba/gateway/src/containers/wallet/token/Token.js index cb29264e77..f74fc0c325 100644 --- a/packages/boba/gateway/src/containers/wallet/token/Token.js +++ b/packages/boba/gateway/src/containers/wallet/token/Token.js @@ -37,9 +37,10 @@ function TokenPage() { const navigate = useNavigate() const accountEnabled = useSelector(selectAccountEnabled()) const tokenList = useSelector(selectTokens) - const networkLayer = useSelector(selectLayer()) - const childBalance = useSelector(selectlayer2Balance, isEqual) - const rootBalance = useSelector(selectlayer1Balance, isEqual) + + const l2Balance = useSelector(selectlayer2Balance, isEqual) + const l1Balance = useSelector(selectlayer1Balance, isEqual) + const layer = useSelector(selectLayer()) const network = useSelector(selectNetwork()) @@ -102,7 +103,8 @@ function TokenPage() { const getLookupPrice = useCallback(() => { if (!accountEnabled) return // only run once all the tokens have been added to the tokenList - if (Object.keys(tokenList).length < 27) return + if (Object.keys(tokenList).length < networkService.tokenAddresses.length) return; + const symbolList = Object.values(tokenList).map((i) => { if (i.symbolL1 === 'ETH') { return 'ethereum' @@ -114,6 +116,14 @@ function TokenPage() { return 'oolongswap' } else if (i.symbolL1 === 'USDC') { return 'usd-coin' + } else if (i.symbolL1 === 'AVAX') { + return 'avalanche-2' + } else if (i.symbolL1 === 'FTM') { + return 'fantom' + } else if (['BNB', 'tBNB'].includes(i.symbolL1)) { + return 'binancecoin' + } else if (['DEV', 'GLMR'].includes(i.symbolL1)) { + return 'moonbeam' } else { return i.symbolL1.toLowerCase() } @@ -226,13 +236,13 @@ function TokenPage() { ) })} - {networkLayer === 'L2' ? !balanceLoading || !!childBalance.length ? childBalance.map((i, index) => { + {layer === 'L2' ? !balanceLoading || !!l2Balance.length ? l2Balance.map((i) => { return ( ) @@ -240,13 +250,13 @@ function TokenPage() { : null} - {networkLayer === 'L1' ? !balanceLoading || !!rootBalance.length ? rootBalance.map((i, index) => { + {layer === 'L1' ? !balanceLoading || !!l1Balance.length ? l1Balance.map((i) => { return ( ) diff --git a/packages/boba/gateway/src/images/moonbase.png b/packages/boba/gateway/src/images/moonbase.png new file mode 100644 index 0000000000000000000000000000000000000000..e4961a5a622bc2488069c2c761f12f1d10999030 GIT binary patch literal 27692 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 { if (token.addressL1 === null) return if (token.addressL2 === null) return + if (this.network === NETWORK.ETHEREUM) { + if(token.addressL1 === this.addresses.L1_ETH_Address) return + if(token.addressL2 === this.addresses.L2_ETH_Address) return + } else { + if (token.addressL1 === this.addresses.L1_ETH_Address) { + return getBalancePromise.push(getERC20Balance(token, token.addressL2, "L2", this.L2Provider)) - if (token.addressL1 === this.addresses.L1_ETH_Address) { - return getBalancePromise.push(getERC20Balance(token, token.addressL2, "L2", this.L2Provider)) - } - if (token.addressL2 === this.addresses.L2_ETH_Address) { - return getBalancePromise.push(getERC20Balance(token, token.addressL2, "L1", this.L2Provider)) + } + if (token.addressL2 === this.addresses.L2_BOBA_Address) { + return getBalancePromise.push(getERC20Balance(token, token.addressL1, "L1", this.L1Provider)) + } } if ([ @@ -1103,8 +1135,7 @@ class NetworkService { 'OLO' ].includes(token.symbolL1)) { //there is no L1 xBOBA, WAGMIv0, WAGMIv1, WAGMIv2, WAGMIv2OLO, WAGMIv3, WAGMIv3OLO, OLO - // console.log('C', token) - // getBalancePromise.push(getERC20Balance(token, token.addressL2, "L2", this.L2Provider)) + getBalancePromise.push(getERC20Balance(token, token.addressL2, "L2", this.L2Provider)) } else { getBalancePromise.push(getERC20Balance(token, token.addressL1, "L1", this.L1Provider)) @@ -1133,9 +1164,6 @@ class NetworkService { } }) - console.log([ 'layer1balances', layer1Balances ]); - console.log([ 'layer2Balances', layer2Balances ]); - return { layer1: orderBy(layer1Balances, (i) => i.currency), layer2: orderBy(layer2Balances, (i) => i.currency), diff --git a/packages/boba/gateway/src/util/amountConvert.js b/packages/boba/gateway/src/util/amountConvert.js index 25687fe705..8482257641 100644 --- a/packages/boba/gateway/src/util/amountConvert.js +++ b/packages/boba/gateway/src/util/amountConvert.js @@ -16,17 +16,17 @@ limitations under the License. */ // we use BigNumber here for decimal support import BigNumber from 'bignumber.js'; -export function logAmount (amount, power, truncate = 0) { +export function logAmount(amount, power, truncate = 0) { const x = new BigNumber(amount); const exp = new BigNumber(10).pow(power); const calculated = x.div(exp); - if(truncate > 0) - return calculated.toFixed(truncate); + if (truncate > 0) + return calculated.toFixed(truncate); else - return calculated.toFixed(); + return calculated.toFixed(); } /*Takes a value such as 3.92 and converts it into @@ -37,7 +37,7 @@ Duplicates ethers.utils.parseUnits( valueString , decimalsOrUnitName ) => BigNumber */ -export function powAmount (amount, decimals) { +export function powAmount(amount, decimals) { const x = new BigNumber(amount) const exp = new BigNumber(10).pow(decimals) @@ -57,18 +57,29 @@ export function toWei_String(amount, decimals) { } export function amountToUsd(amount, lookupPrice, token) { - if (token.symbol === 'ETH' && !!lookupPrice['ethereum']) { - return amount * lookupPrice['ethereum'].usd + console.log([ + 'token',token + ]) + if (token.symbol === 'ETH' && !!lookupPrice[ 'ethereum' ]) { + return amount * lookupPrice[ 'ethereum' ].usd } else if (token.symbol === 'BOBA' && !!lookupPrice[ 'boba-network' ]) { - return amount * lookupPrice['boba-network'].usd + return amount * lookupPrice[ 'boba-network' ].usd } else if (token.symbol === 'OLO' && !!lookupPrice[ 'oolongswap' ]) { - return amount * lookupPrice['oolongswap'].usd + return amount * lookupPrice[ 'oolongswap' ].usd } else if (token.symbol === 'OMG' && !!lookupPrice[ 'omisego' ]) { - return amount * lookupPrice['omisego'].usd + return amount * lookupPrice[ 'omisego' ].usd } else if (token.symbol === 'USDC' && !!lookupPrice[ 'usd-coin' ]) { - return amount * lookupPrice['usd-coin'].usd + return amount * lookupPrice[ 'usd-coin' ].usd + } else if (token.symbol === 'AVAX' && !!lookupPrice[ 'avalanche-2' ]) { + return amount * lookupPrice[ 'avalanche-2' ].usd + } else if (token.symbol === 'FTM' && !!lookupPrice[ 'fantom' ]) { + return amount * lookupPrice[ 'fantom' ].usd + } else if ([ 'BNB', 'tBNB' ].includes(token.symbol) && !!lookupPrice[ 'binancecoin' ]) { + return amount * lookupPrice[ 'binancecoin' ].usd + } else if ([ 'DEV', 'GLMR' ].includes(token.symbol) && !!lookupPrice[ 'moonbeam' ]) { + return amount * lookupPrice[ 'moonbeam' ].usd } else if (!!lookupPrice[ token.symbol.toLowerCase() ]) { - return amount * lookupPrice[token.symbol.toLowerCase()].usd + return amount * lookupPrice[ token.symbol.toLowerCase() ].usd } else { return 0 } diff --git a/packages/boba/gateway/src/util/coinImage.js b/packages/boba/gateway/src/util/coinImage.js index 6de701919c..c4697e7bcf 100644 --- a/packages/boba/gateway/src/util/coinImage.js +++ b/packages/boba/gateway/src/util/coinImage.js @@ -31,6 +31,7 @@ import wagmiv2OLOLogo from 'images/wagmiv2olo.png' import oloLogo from 'images/olo.svg' import CGTLogo from 'images/CGT.svg' import avaxLog from 'images/avax.svg' +import moonbase from 'images/moonbase.png' import glmrLog from 'images/glmr.svg' export const getCoinImage = (symbol) => { @@ -104,6 +105,9 @@ export const getCoinImage = (symbol) => { case "BNB": logo = bnbLogo; break; + case "tBNB": + logo = bnbLogo; + break; case "FTM": logo = ftmLogo; break; @@ -146,6 +150,9 @@ export const getCoinImage = (symbol) => { case "GLMR": logo = glmrLog; break; + case "DEV": + logo = moonbase; + break; default: logo = ethLogo; break; diff --git a/packages/boba/gateway/src/util/network/config/bnb.js b/packages/boba/gateway/src/util/network/config/bnb.js index 5cc48e2746..fa76263131 100644 --- a/packages/boba/gateway/src/util/network/config/bnb.js +++ b/packages/boba/gateway/src/util/network/config/bnb.js @@ -14,8 +14,8 @@ export const bnbConfig = { blockExplorer: `https://api-testnet.bscscan.com/api?module=account&action=txlist&startblock=0&endblock=99999999&sort=asc&apikey=${ETHERSCAN_API_KEY}`, transaction: `https://testnet.bscscan.com/tx/`, blockExplorerUrl: `https://testnet.bscscan.com/`, - symbol: "BNB", - tokenName: "BNB", + symbol: "tBNB", + tokenName: "tBNB", }, L2: { name: "Boba BNB Testnet", From 6ffe9256f89b39b8dd87bfbb9f05c632b39a771f Mon Sep 17 00:00:00 2001 From: Sahil K <86316370+sk-enya@users.noreply.github.com> Date: Thu, 26 Jan 2023 04:55:54 +0530 Subject: [PATCH 26/32] L1 to L2 bridging - setting up history tabs for multichain - setting up classic input bridge - updated CrosschainMessenger contract address for other deployment - fix for classic deposit to l2 validated for goerli (eth / erc20 / native) - fix for classic deposit to l2 account (eth / erc20 / native) - fee switcher should only be visible for L2 layer. --- .../boba/gateway/src/actions/farmAction.js | 5 +- .../mainMenu/feeSwitcher/FeeSwitcher.js | 6 +- .../src/components/pageHeader/PageHeader.js | 8 +- .../gateway/src/containers/history/History.js | 8 +- .../modals/deposit/steps/InputStep.js | 17 +- .../src/services/abi/L1StandardBridge.abi.js | 10 + .../boba/gateway/src/services/app.service.js | 14 +- .../gateway/src/services/networkService.js | 161 +++++++++------- .../boba/gateway/src/util/amountConvert.js | 3 - packages/sdk/src/utils/contracts.ts | 180 ++++++++++++++++++ 10 files changed, 320 insertions(+), 92 deletions(-) create mode 100644 packages/boba/gateway/src/services/abi/L1StandardBridge.abi.js diff --git a/packages/boba/gateway/src/actions/farmAction.js b/packages/boba/gateway/src/actions/farmAction.js index aa91df06ef..cdafb74e42 100644 --- a/packages/boba/gateway/src/actions/farmAction.js +++ b/packages/boba/gateway/src/actions/farmAction.js @@ -1,6 +1,6 @@ /* Varna - A Privacy-Preserving Marketplace - Varna uses Fully Homomorphic Encryption to make markets fair. + Varna uses Fully Homomorphic Encryption to make markets fair. Copyright (C) 2021 Enya Inc. Palo Alto, CA This program is free software: you can redistribute it and/or modify @@ -48,7 +48,6 @@ const getFarmInfoSuccess = (L1PoolInfo, L1UserInfo, L2PoolInfo, L2UserInfo) => ( // }) export const getFarmInfo = () => async (dispatch) => { - console.log("getFarmInfo()") dispatch(getFarmInfoBegin()) const [L1LPInfo, L2LPInfo] = await Promise.all([ networkService.getL1LPInfo(), @@ -122,4 +121,4 @@ export function fetchL1LPBalance(currency) { export function fetchL2LPBalance(currency) { return createAction('FETCH/L2LPBALANCE', () => networkService.L2LPBalance(currency)) -} \ No newline at end of file +} diff --git a/packages/boba/gateway/src/components/mainMenu/feeSwitcher/FeeSwitcher.js b/packages/boba/gateway/src/components/mainMenu/feeSwitcher/FeeSwitcher.js index 4ff08f8e83..d95486e00b 100644 --- a/packages/boba/gateway/src/components/mainMenu/feeSwitcher/FeeSwitcher.js +++ b/packages/boba/gateway/src/components/mainMenu/feeSwitcher/FeeSwitcher.js @@ -38,7 +38,7 @@ import BN from 'bignumber.js' import { logAmount } from 'util/amountConvert.js' import { HelpOutline } from '@mui/icons-material' import networkService from 'services/networkService.js' -import { selectActiveNetworkName } from 'selectors/networkSelector.js' +import { selectActiveNetwork, selectActiveNetworkName } from 'selectors/networkSelector.js' import { NETWORK } from 'util/network/network.util.js' function FeeSwitcher() { @@ -48,7 +48,7 @@ function FeeSwitcher() { const feeUseBoba = useSelector(selectBobaFeeChoice()) const networkName = useSelector(selectActiveNetworkName()) - const network = useSelector(selectActiveNetworkName()) + const network = useSelector(selectActiveNetwork()) const layer = useSelector(selectLayer()) const l2Balances = useSelector(selectlayer2Balance, isEqual) @@ -61,7 +61,7 @@ function FeeSwitcher() { const dispatchSwitchFee = useCallback(async (targetFee) => { let tooSmallL1NativeToken = false - let minL1NativeBalance = network=== NETWORK.ETHEREUM ? 0.0002 : 0.5 + let minL1NativeBalance = network === NETWORK.ETHEREUM ? 0.0002 : 0.5 let tooSmallBOBA = false if (typeof (balanceBOBA) === 'undefined') { diff --git a/packages/boba/gateway/src/components/pageHeader/PageHeader.js b/packages/boba/gateway/src/components/pageHeader/PageHeader.js index 7f91362d27..fe8304bbf5 100644 --- a/packages/boba/gateway/src/components/pageHeader/PageHeader.js +++ b/packages/boba/gateway/src/components/pageHeader/PageHeader.js @@ -15,9 +15,10 @@ import networkService from 'services/networkService' import { makeStyles } from '@mui/styles' import Copy from 'components/copy/Copy' import { useSelector } from 'react-redux' -import { selectAccountEnabled, selectMonster } from 'selectors/setupSelector' +import { selectAccountEnabled, selectLayer, selectMonster } from 'selectors/setupSelector' import NetworkSwitcher from 'components/mainMenu/networkSwitcher/NetworkSwitcher' import WalletSwitch from 'components/walletSwitch/WalletSwitch' +import { LAYER } from 'util/constant' const useStyles = makeStyles({ root: { @@ -36,6 +37,7 @@ const PageHeader = ({ maintenance }) => { const theme = useTheme() const accountEnabled = useSelector(selectAccountEnabled()) + const layer = useSelector(selectLayer()) const monsterNumber = useSelector(selectMonster()) const isMobile = useMediaQuery(theme.breakpoints.down('md')) @@ -109,7 +111,7 @@ const PageHeader = ({ maintenance }) => { - + {layer === LAYER.L2 ? : null} @@ -118,7 +120,7 @@ const PageHeader = ({ maintenance }) => { : ( - + {layer === LAYER.L2 ? : null} {!!accountEnabled ? : null} diff --git a/packages/boba/gateway/src/containers/history/History.js b/packages/boba/gateway/src/containers/history/History.js index 107d2ab3ee..05f1a76632 100644 --- a/packages/boba/gateway/src/containers/history/History.js +++ b/packages/boba/gateway/src/containers/history/History.js @@ -47,6 +47,7 @@ import Connect from 'containers/connect/Connect' import Tabs from 'components/tabs/Tabs' import { POLL_INTERVAL } from 'util/constant' +import { selectActiveNetworkName } from 'selectors/networkSelector' function History() { @@ -64,6 +65,7 @@ function History() { const [searchHistory, setSearchHistory] = useState('') const activeTab = useSelector(selectActiveHistoryTab, isEqual) + const networkName = useSelector(selectActiveNetworkName()) const unorderedTransactions = useSelector(selectTransactions, isEqual) const orderedTransactions = orderBy(unorderedTransactions, i => i.timeStamp, 'desc') @@ -139,7 +141,7 @@ function History() { {dispatch(setActiveHistoryTab(tab))}} activeTab={activeTab} - tabs={['All', 'Ethereum to Boba Ethereum L2', 'Boba Ethereum L2 to Ethereum', 'Bridge between L1s', 'Pending']} + tabs={['All', `${networkName['l1']} to ${networkName['l2']}`, `${networkName['l2']} to ${networkName['l1']}`, 'Bridge between L1s', 'Pending']} /> {activeTab === 'All' && ( @@ -149,14 +151,14 @@ function History() { /> )} - {activeTab === 'Ethereum to Boba Ethereum L2' && + {activeTab === `${networkName['l1']} to ${networkName['l2']}` && } - {activeTab === 'Boba Ethereum L2 to Ethereum' && + {activeTab === `${networkName['l2']} to ${networkName['l1']}` && L1 + "l1Tol2": true, //since we are going L1->L2 "startTime": time_start, "endTime": time_stop, "block": block.blockNumber, - "cdmHash": receipt.transactionHash, - "cdmBlock": receipt.blockNumber + "cdmHash": txReceipt.transactionHash, + "cdmBlock": txReceipt.blockNumber } console.log("Speed checker data payload:", data) @@ -1266,9 +1292,9 @@ class NetworkService { this.networkConfig ).post('send.crossdomainmessage', data) - console.log("Speed checker:", speed) + console.log("Speed checker:", speed) */ - return receipt + return txReceipt } catch(error) { console.log("NS: depositETHL2 error:",error) return error @@ -2047,33 +2073,34 @@ class NetworkService { fromBlock: -4000 } const receipt = await this.watcher.waitForMessageReceipt(depositTX, opts) - console.log(' completed Deposit! L2 tx hash:', receipt.transactionHash) + const txReceipt = receipt.transactionReceipt; + console.log('completed ERC20 Deposit! L2 tx hash:', txReceipt.transactionHash) const time_stop = new Date().getTime() console.log("TX finish time:", time_stop) - const data = { - "key": SPEED_CHECK, - "hash": depositTX.hash, - "l1Tol2": true, - "startTime": time_start, - "endTime": time_stop, - "block": block.blockNumber, - "cdmHash": receipt.transactionHash, - "cdmBlock": receipt.blockNumber - } + // const data = { + // "key": SPEED_CHECK, + // "hash": depositTX.hash, + // "l1Tol2": true, + // "startTime": time_start, + // "endTime": time_stop, + // "block": block.blockNumber, + // "cdmHash": txReceipt.transactionHash, + // "cdmBlock": txReceipt.blockNumber + // } - console.log("Speed checker data payload:", data) + // console.log("Speed checker data payload:", data) - const speed = await omgxWatcherAxiosInstance( - this.networkConfig - ).post('send.crossdomainmessage', data) + // const speed = await omgxWatcherAxiosInstance( + // this.networkConfig + // ).post('send.crossdomainmessage', data) - console.log("Speed checker:", speed) + // console.log("Speed checker:", speed) this.getBalances() - return receipt + return txReceipt } catch (error) { console.log("NS: depositErc20 error:", error) return error @@ -2461,8 +2488,8 @@ class NetworkService { if (tokenAddress === this.addresses.L2_ETH_Address) { tokenBalance = await this.L2Provider.getBalance(this.addresses.L2LPAddress) - tokenSymbol = 'BOBA' - tokenName = 'BOBA Token' + tokenSymbol = this.network === NETWORK.ETHEREUM ? 'ETH' : 'BOBA' + tokenName = this.network === NETWORK.ETHEREUM ? 'Ethereum' : 'BOBA Token' decimals = 18 } else { tokenBalance = await this.L2_TEST_Contract.attach(tokenAddress).connect(this.L2Provider).balanceOf(this.addresses.L2LPAddress) @@ -2689,6 +2716,8 @@ class NetworkService { updateSignatureStatus_depositLP(true) + // TODO: Below part is disabled + const opts = { fromBlock: -4000 } @@ -2869,7 +2898,7 @@ class NetworkService { let tokenAddressLC = tokenAddress.toLowerCase() if ( - tokenAddressLC === this.addresses.L2_ETH_Address || + tokenAddressLC === this.addresses.L2_BOBA_Address || tokenAddressLC === this.addresses.L1_ETH_Address ) { //We are dealing with ETH @@ -3231,7 +3260,9 @@ class NetworkService { fromBlock: -4000 } const receipt = await this.fastWatcher.waitForMessageReceipt(depositTX, opts) - console.log(' completed Deposit! L1 tx hash:', receipt.transactionHash) + const txReceipt = receipt.transactionReceipt; + + console.log(' completed Deposit! L1 tx hash:', txReceipt.transactionHash) const time_stop = new Date().getTime() console.log("TX finish time:", time_stop) @@ -3243,8 +3274,8 @@ class NetworkService { "startTime": time_start, "endTime": time_stop, "block": block.blockNumber, - "cdmHash": receipt.transactionHash, - "cdmBlock": receipt.blockNumber + "cdmHash": txReceipt.transactionHash, + "cdmBlock": txReceipt.blockNumber } console.log("Speed checker data payload:", data) @@ -3348,7 +3379,8 @@ class NetworkService { fromBlock: -4000 } const receipt = await this.fastWatcher.waitForMessageReceipt(depositTX, opts) - console.log(' completed Deposit! L1 tx hash:', receipt.transactionHash) + const txReceipt = receipt.transactionReceipt; + console.log(' completed Deposit! L1 tx hash:', txReceipt.transactionHash) const time_stop = new Date().getTime() console.log("TX finish time:", time_stop) @@ -3360,8 +3392,8 @@ class NetworkService { "startTime": time_start, "endTime": time_stop, "block": block.blockNumber, - "cdmHash": receipt.transactionHash, - "cdmBlock": receipt.blockNumber + "cdmHash": txReceipt.transactionHash, + "cdmBlock": txReceipt.blockNumber } console.log("Speed checker data payload:", data) @@ -3372,7 +3404,7 @@ class NetworkService { console.log("Speed checker:", speed) - return receipt + return txReceipt } catch (error) { console.log("NS: depositL2LP error:", error) return error @@ -4602,6 +4634,7 @@ class NetworkService { console.log(`🆙 Depositing ${value} 👉 ${type} l1 with 💵 FEE ${ethers.utils.formatEther(estimatedFee._nativeFee)}`); + // TODO: FIXME: Update this function to `withdraw` in case of other deployment than ETHERUEM. await Proxy__EthBridge.depositERC20( ETH_L1_BOBA_ADDRESS, ALT_L1_BOBA_ADDRESS, diff --git a/packages/boba/gateway/src/util/amountConvert.js b/packages/boba/gateway/src/util/amountConvert.js index 8482257641..a0498290a0 100644 --- a/packages/boba/gateway/src/util/amountConvert.js +++ b/packages/boba/gateway/src/util/amountConvert.js @@ -57,9 +57,6 @@ export function toWei_String(amount, decimals) { } export function amountToUsd(amount, lookupPrice, token) { - console.log([ - 'token',token - ]) if (token.symbol === 'ETH' && !!lookupPrice[ 'ethereum' ]) { return amount * lookupPrice[ 'ethereum' ].usd } else if (token.symbol === 'BOBA' && !!lookupPrice[ 'boba-network' ]) { diff --git a/packages/sdk/src/utils/contracts.ts b/packages/sdk/src/utils/contracts.ts index b38387ecf2..6e047ad929 100644 --- a/packages/sdk/src/utils/contracts.ts +++ b/packages/sdk/src/utils/contracts.ts @@ -128,6 +128,186 @@ export const CONTRACT_ADDRESSES: { }, l2: DEFAULT_L2_CONTRACT_ADDRESSES, }, + // Moonbeam local + 1281: { + l1: { + AddressManager: '0xc01Ee7f10EA4aF4673cFff62710E1D7792aBa8f3', + L1CrossDomainMessenger: '0xab7785d56697E65c2683c8121Aac93D3A028Ba95', + L1CrossDomainMessengerFast: '0xB942FA2273C7Bce69833e891BDdFd7212d2dA415', + L1StandardBridge: '0x78D714e1b47Bb86FE15788B917C9CC7B77975529', + StateCommitmentChain: '0x294c664f6D63bd1521231a2EeFC26d805ce00a08', + CanonicalTransactionChain: '0x598efcBD0B5b4Fd0142bEAae1a38f6Bd4d8a218d', + BondManager: '0xEC69d4f48f4f1740976968FAb9828d645Ad1d77f', + L1MultiMessageRelayer: '0xad856F238CBeafd064b80D12EadAea3981fB21B5', + L1MultiMessageRelayerFast: '0xAdD0E4aD78B01048027154c7a432a1cB6711178f', + }, + l2: DEFAULT_L2_CONTRACT_ADDRESSES, + }, + // MoonBase + 1287: { + l1: { + AddressManager: '0xF8d0bF3a1411AC973A606f90B2d1ee0840e5979B', + L1CrossDomainMessenger: '0x76DB375075F1d5Dcd1D70Fc07F69a5c7b40ab877', + L1CrossDomainMessengerFast: '0xAE8885D3b7937af9480cd7301925a88Dfb0cE9f6', + L1StandardBridge: '0xEcca5FEd8154420403549f5d8F123fcE69fae806', + StateCommitmentChain: '0x5E41Eaac5319CDf336c51969E2F164A686138B28', + CanonicalTransactionChain: '0xa8bD51a7F46321587921A33fa3c752b426c74754', + BondManager: '0x6c55306656E8b74F93653A753DE539c2F6ca18Db', + L1MultiMessageRelayer: '0x4c1bcfe4F0b1a57d3c578a8ED3dBEBCa29339c85', + L1MultiMessageRelayerFast: '0x874a7Ea9722b96924e186f0263866FA90a7C777b', + }, + l2: DEFAULT_L2_CONTRACT_ADDRESSES, + }, + // Moonbeam + 1284: { + l1: { + AddressManager: '0x564c10A60af35a07f0EA8Be3106a4D81014b21a0', + L1CrossDomainMessenger: '0x4765f8b50Bbe049045bBA1270dc7A8CDF17165cF', + L1CrossDomainMessengerFast: '0x17d02C3e6cB69225d83d0bADEb0fC09aE735CA3b', + L1StandardBridge: '0xAf5297f68D48cd2DE37Ee5cbaC0647fbA4132985', + StateCommitmentChain: '0xAD379B1518f50Fc737536D2Ec2c13E4640e228A8', + CanonicalTransactionChain: '0x99C970105cf6EE2e22b563CB86bCA42D05ac7A95', + BondManager: '0xcfe333e0e48EC71f1399a76001cf39E0c6A51dA5', + L1MultiMessageRelayer: '0x3664bC9BA25D0d3911c39d8ae1734b0B5A3495C1', + L1MultiMessageRelayerFast: '0xE2EE964E39720f78Cd75BC146Ed078D301981759', + }, + l2: DEFAULT_L2_CONTRACT_ADDRESSES, + }, + // Fantom local + 4003: { + l1: { + AddressManager: '0xf536cAF1a894E09945E649FCE3032E8E03ECb9A0', + L1CrossDomainMessenger: '0x03466593AE8Bc085F384bC4EB91d5035F5a7936C', + L1CrossDomainMessengerFast: '0xC93DD6833E6A29004FcC84C757cCf0d5551aBFe1', + L1StandardBridge: '0xAEa06C2B29edfac53a0538A9843D018348845Ebf', + StateCommitmentChain: '0xC98Dd1b152d9e4cf2A6384a78d4FFE8D50E86C6c', + CanonicalTransactionChain: '0xFfB9dF984DC95ab53c561d818b708135612b087f', + BondManager: '0xE9BC1f638d05edF64Bf3e23A08ff3e2B0fb8b7F7', + L1MultiMessageRelayer: '0x9257aE2144eF338Da70D6884c98BD8CB90Da639E', + L1MultiMessageRelayerFast: '0xB6D431Bb85298030eA27a0E3769bEa5ed1F9fF53', + }, + l2: DEFAULT_L2_CONTRACT_ADDRESSES, + }, + // Fantom testnet + 4002: { + l1: { + AddressManager: '0x12ad9f501149D3FDd703cC10c567F416B7F0af8b', + L1CrossDomainMessenger: '0xEecAD665ca933eeA4a9a2db600E538c1391930d1', + L1CrossDomainMessengerFast: '0xE5781E5E9CbC67E91DF93eD01E922De30125e491', + L1StandardBridge: '0x86FC7AeFcd69983A8d82eAB1E0EaFD38bB42fd3f', + StateCommitmentChain: '0x352d964E9aD016f122dc78Afa5164417907E0FaF', + CanonicalTransactionChain: '0xE66Bd40BBeC97397758E22858331752f0ecBE02e', + BondManager: '0xa97a909D967B150E27AB58ca6d0cb40B39200Be1', + L1MultiMessageRelayer: '0xD7Cbc979C909d864c38670AcccD57209F7B556e3', + L1MultiMessageRelayerFast: '0x9Af237336C29dCbA346764af8e8E1F0ba83D1eE5', + }, + l2: DEFAULT_L2_CONTRACT_ADDRESSES, + }, + // Fantom mainnet + 250: { + l1: { + AddressManager: '0x4e7325bcf09e091Bb8119258B885D4ef687B7386', + L1CrossDomainMessenger: '0x64Fca36c52628e40de8684C4C3B5EdB22Fd2eFd9', + L1CrossDomainMessengerFast: '0xC0597ED18446254E4dd0CA5D80eb07D3f2E462cF', + L1StandardBridge: '0xb7629EF94B991865940E8A840Aa7d68fa88c3Fe8', + StateCommitmentChain: '0xF764C4f8D2982432239A110Cf6B08e95631cE564', + CanonicalTransactionChain: '0x6001C473E020D3562Ea436B61aE4d2e91e7078cE', + BondManager: '0xCcA5a1CB9fAD5F2A5b88D95440dA7c83EC031Cb1', + L1MultiMessageRelayer: '0xD8DcA5fC53a83Cf06ec744a7226C23951a353A0f', + L1MultiMessageRelayerFast: '0xE7beDcedF3E3054aF891DddeF61775A23a16CB90', + }, + l2: DEFAULT_L2_CONTRACT_ADDRESSES, + }, + // Avalanche local + 43112: { + l1: { + AddressManager: '0x52C84043CD9c865236f11d9Fc9F56aa003c1f922', + L1CrossDomainMessenger: '0xDFBb4b49DfAe39720f68f8297ADb2368FeffaDdb', + L1CrossDomainMessengerFast: '0xD054149e4345Cc00cc2f2465C02a864f60d6bd46', + L1StandardBridge: '0x4475A8FBeF5Cf4a92a484B6f5602A91F3abC72D8', + StateCommitmentChain: '0xF5f1f185cF359dC48469e410Aeb6983cD4DC5812', + CanonicalTransactionChain: '0xa1E47689f396fED7d18D797d9D31D727d2c0d483', + BondManager: '0x97C0FE6aB595cbFD50ad3860DA5B2017d8B35c2E', + L1MultiMessageRelayer: '0xEC1bf080BDFBbBa102603Cc1C55aFd215C694a2b', + L1MultiMessageRelayerFast: '0x1AA001Cd20F35F3F4EF1A945053CeE4Acc24aDb4', + }, + l2: DEFAULT_L2_CONTRACT_ADDRESSES, + }, + // Avalanche testnet + 43113: { + l1: { + AddressManager: '0xcE78de95b85212BC348452e91e0e74c17cf37c79', + L1CrossDomainMessenger: '0x68c19B7FbAe4F8034cf6316b2045ba6aB6978F6b', + L1CrossDomainMessengerFast: '0xBc5249095c890F58C0b75795bd21667eFd123F5F', + L1StandardBridge: '0x07B606934b5B5D6A9E1f8b78A0B26215FF58Ad56', + StateCommitmentChain: '0x57B9C47F2Ae857005238096486C5B107447dE221', + CanonicalTransactionChain: '0xA36D21C0125b5Dc52d95ED8FF1eF7188d4666EAE', + BondManager: '0x067cD503bd734a779830dafF0Db582B6a347c3df', + L1MultiMessageRelayer: '0x74546A4c6D5543Be7e8447159c47BAe7f5431C49', + L1MultiMessageRelayerFast: '0x5e6B412b4fA8373a17aD85B269fA5c354ea57e63', + }, + l2: DEFAULT_L2_CONTRACT_ADDRESSES, + }, + // Avalanche Mainnet + 43114: { + l1: { + AddressManager: '0x00220f8ce1c4be8436574e575fE38558d85e2E6b', + L1CrossDomainMessenger: '0x0fc742332ae6D447d6619D93985Aa288B81CBb0C', + L1CrossDomainMessengerFast: '0x5b6714b7926e6D7e34154C9AC945B489978fA7E7', + L1StandardBridge: '0xf188F1e92B2c78956D2859b84684BFD17103e22c', + StateCommitmentChain: '0x1ef85D873Cf451C8B9a45DbE40b478E991F51210', + CanonicalTransactionChain: '0x1A19A4ce2b3B0A974Df717b6F88c881a69F315e3', + BondManager: '0x26c319B7B2cF823365414d082698C8ac90cbBA63', + L1MultiMessageRelayer: '0x87e062dE99Ed71aF9b22dDA63e1b6D43333798f8', + L1MultiMessageRelayerFast: '0xf9821061774b9693359F582b007A5F1C39d75Ae3', + }, + l2: DEFAULT_L2_CONTRACT_ADDRESSES, + }, + // BNB local + 99: { + l1: { + AddressManager: '0xC194E4CFa59D2DfC520217dA22E23DF8D4658a37', + L1CrossDomainMessenger: '0x8b8656D5d37C3DC620B80817972E0d9a5267761b', + L1CrossDomainMessengerFast: '0x07B43F437c3A13eeb17EF2beBea046e61502151f', + L1StandardBridge: '0x285766B642eAA86b8052817c827E4472cDb3dd18', + StateCommitmentChain: '0x57a243B34F9232515Fa9FD8D4c2daFd611cF1BCA', + CanonicalTransactionChain: '0x3717E342Bc746c01244fb40e47521945091238ce', + BondManager: '0xcF8dDe2accE564024B4b92ef7db81B0e6698F07f', + L1MultiMessageRelayer: '0x90f502229E1fAa70cCf900B2D14595a5C55B3bE8', + L1MultiMessageRelayerFast: '0x64160054BdD6e53915C221cBBfAAbaf1f80c7f20', + }, + l2: DEFAULT_L2_CONTRACT_ADDRESSES, + }, + // BNB testnet + 97: { + l1: { + AddressManager: '0xAee1fb3f4353a9060aEC3943fE932b6Efe35CdAa', + L1CrossDomainMessenger: '0x53aD38aE4a63Fe33a86E011F7AF4d3fDe3daD145', + L1CrossDomainMessengerFast: '0xbbD6a271abcC44f6dE284E6051Da76b4fB57458C', + L1StandardBridge: '0xBf0939120b4F5E3196b9E12cAC291e03dD058e9a', + StateCommitmentChain: '0x37FB8bB9EA100CA9a0DE822c9923643ef48Cb8EE', + CanonicalTransactionChain: '0x65f291CDfB05bd1D639DF6268F98594fdacDeCa6', + BondManager: '0x6737867ddd04272a79E7207a008f213e336b00e1', + L1MultiMessageRelayer: '0x5e593AeB2Dbd855D79167831f091B4d959FbB2D1', + L1MultiMessageRelayerFast: '0x0F01394F5fc19bA1B9F669bA79b76c9EaAe37987', + }, + l2: DEFAULT_L2_CONTRACT_ADDRESSES, + }, + // BNB mainnet + 56: { + l1: { + AddressManager: '0xeb989B25597259cfa51Bd396cE1d4B085EC4c753', + L1CrossDomainMessenger: '0x31338a7D5d123E18a9a71447136B54B6D28241ae', + L1CrossDomainMessengerFast: '0xBe349cABeA97bB933f8C2594634Deb858167f83c', + L1StandardBridge: '0x1E0f7f4b2656b14C161f1caDF3076C02908F9ACC', + StateCommitmentChain: '0xeF85fA550e6EC5486121313C895EDe1005e2397f', + CanonicalTransactionChain: '0xA0E38a8FE293E9e95c6A4a882F396F1c80e9e2e4', + BondManager: '0xEB6652A4eb6e0d003Fbb3DD76Ae72694175191cd', + L1MultiMessageRelayer: '0x1E633Dcd0d3D349126983D58988051F7c62c543D', + L1MultiMessageRelayerFast: '0x2dB5717B37Af9A1D9a28829Ea977B4aE4aEE2AED', + }, + l2: DEFAULT_L2_CONTRACT_ADDRESSES, + }, } /** From 3b6f779cf68ed056b4cbdbc22217b551edbd8b88 Mon Sep 17 00:00:00 2001 From: Sahil Kashetwar Date: Fri, 27 Jan 2023 01:43:01 +0530 Subject: [PATCH 27/32] 1. fetch transaction on connect only 2. avoid fetching data from etherscan 3. cleanup --- packages/boba/gateway/src/containers/history/History.js | 9 +++++---- .../boba/gateway/src/containers/history/TX_Deposits.js | 4 +++- packages/boba/gateway/src/services/networkService.js | 3 --- .../boba/gateway/src/services/transaction.service.js | 9 ++++----- 4 files changed, 12 insertions(+), 13 deletions(-) diff --git a/packages/boba/gateway/src/containers/history/History.js b/packages/boba/gateway/src/containers/history/History.js index 05f1a76632..9495808b19 100644 --- a/packages/boba/gateway/src/containers/history/History.js +++ b/packages/boba/gateway/src/containers/history/History.js @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ import React, { useState } from 'react' -import { batch, useDispatch } from 'react-redux' +import { useDispatch } from 'react-redux' import { isEqual, orderBy } from 'lodash' import { useSelector } from 'react-redux' import DatePicker from 'react-datepicker' @@ -30,7 +30,7 @@ import { selectActiveHistoryTab } from 'selectors/uiSelector' import { fetchTransactions } from 'actions/networkAction' import { selectTransactions } from 'selectors/transactionSelector' -import { selectLayer } from 'selectors/setupSelector' +import { selectAccountEnabled, selectLayer } from 'selectors/setupSelector' import Exits from './TX_Exits' import Deposits from './TX_Deposits' @@ -62,6 +62,7 @@ function History() { const [startDate, setStartDate] = useState(last_6months) const [endDate, setEndDate] = useState(now) const layer = useSelector(selectLayer()) + const accountEnabled = useSelector(selectAccountEnabled()) const [searchHistory, setSearchHistory] = useState('') const activeTab = useSelector(selectActiveHistoryTab, isEqual) @@ -78,9 +79,9 @@ function History() { }) useInterval(() => { - batch(()=>{ + if (accountEnabled) { dispatch(fetchTransactions()) - }) + } }, POLL_INTERVAL) return ( diff --git a/packages/boba/gateway/src/containers/history/TX_Deposits.js b/packages/boba/gateway/src/containers/history/TX_Deposits.js index ec398d7885..be8bb498db 100644 --- a/packages/boba/gateway/src/containers/history/TX_Deposits.js +++ b/packages/boba/gateway/src/containers/history/TX_Deposits.js @@ -27,6 +27,7 @@ import Pager from 'components/pager/Pager' import Transaction from 'components/transaction/Transaction' import * as S from './History.styles'; +import { selectActiveNetworkName } from 'selectors/networkSelector' const PER_PAGE = 10 @@ -36,6 +37,7 @@ function TX_Deposits({ searchHistory, transactions }) { const loading = useSelector(selectLoading(['TRANSACTION/GETALL'])) const tokenList = useSelector(selectTokens) + const networkName = useSelector(selectActiveNetworkName()) useEffect(() => { setPage(1) @@ -125,7 +127,7 @@ function TX_Deposits({ searchHistory, transactions }) { title={`Hash: ${i.hash}`} time={moment.unix(i.timeStamp).format('lll')} blockNumber={`Block ${i.blockNumber}`} - chain={`Ethereum to Boba Ethereum L2 ${i.activity === 'ClientDepositL1Batch' ? 'in Batch' : ''}`} + chain={`${networkName['l1']} to ${networkName['l2']} ${i.activity === 'ClientDepositL1Batch' ? 'in Batch' : ''}`} typeTX={`TX Type: ${metaData}`} detail={details} oriChain={chain} diff --git a/packages/boba/gateway/src/services/networkService.js b/packages/boba/gateway/src/services/networkService.js index c2598e55cd..681f11b7ab 100644 --- a/packages/boba/gateway/src/services/networkService.js +++ b/packages/boba/gateway/src/services/networkService.js @@ -585,9 +585,6 @@ class NetworkService { this.L2Provider ) - - console.log('Setting up watcher CrossChainMessenger') - this.watcher = new CrossChainMessenger({ l1SignerOrProvider: this.L1Provider, l2SignerOrProvider: this.L2Provider, diff --git a/packages/boba/gateway/src/services/transaction.service.js b/packages/boba/gateway/src/services/transaction.service.js index 4e2e12c666..486d31019b 100644 --- a/packages/boba/gateway/src/services/transaction.service.js +++ b/packages/boba/gateway/src/services/transaction.service.js @@ -14,6 +14,7 @@ class TransactionService { const responseL1 = await etherScanInstance(BEUrl).get(`&address=${networkService.account}`) if (responseL1.status === 200) { const transactionsL1 = await responseL1.data + console.log(['transactionsL1.result',transactionsL1.result]) if (transactionsL1.status === '1') { //thread in ChainID L1Txs = transactionsL1.result.map(v => ({ @@ -27,7 +28,6 @@ class TransactionService { return L1Txs } catch (error) { console.log('TS: Error while fetching txs') - return L1Txs } } @@ -47,7 +47,7 @@ class TransactionService { } return L2Txs } catch (error) { - console.log('TS: Error while fetching txs') + console.log('TS: fetchL2Tx',error) return L2Txs } } @@ -75,7 +75,7 @@ class TransactionService { } return L0Txs } catch (error) { - console.log('TS: Error while fetching txs') + console.log('TS: fetchL0Tx',error) return L0Txs } } @@ -97,7 +97,7 @@ class TransactionService { }; return txL1pending } catch (error) { - console.log('TS: Error while fetching txs') + console.log('TS: fetchL1PendingTx',error) return txL1pending } } @@ -109,7 +109,6 @@ class TransactionService { */ async getTransactions() { const result = await Promise.all([ - this.fetchEtherscanTx(), this.fetchL2Tx(), this.fetchL0Tx(), this.fetchL1PendingTx() From 0810e429f614bbf3693c09ab33719fbb5bbd9c4c Mon Sep 17 00:00:00 2001 From: Sahil Kashetwar Date: Fri, 27 Jan 2023 03:30:06 +0530 Subject: [PATCH 28/32] adding sushi to BNB network --- packages/boba/gateway/src/services/app.service.js | 2 +- ...Bnb_0xeb989B25597259cfa51Bd396cE1d4B085EC4c753.json | 2 ++ packages/boba/register/addresses/tokenInfo.json | 10 ++++++++++ 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/packages/boba/gateway/src/services/app.service.js b/packages/boba/gateway/src/services/app.service.js index d19bd644a8..24a8b19342 100644 --- a/packages/boba/gateway/src/services/app.service.js +++ b/packages/boba/gateway/src/services/app.service.js @@ -142,7 +142,7 @@ const SUPPORTED_ASSETS = { }, [ NETWORK.BNB ]: { tokenAddresses: {}, - tokens: [ 'BOBA', 'BNB', 'BUSD', 'USDC', "USDT" ] + tokens: [ 'BOBA', 'BNB', 'BUSD', 'USDC', 'USDT', 'SUSHI' ] }, [ NETWORK.FANTOM ]: { tokenAddresses: {}, diff --git a/packages/boba/register/addresses/addressBobaBnb_0xeb989B25597259cfa51Bd396cE1d4B085EC4c753.json b/packages/boba/register/addresses/addressBobaBnb_0xeb989B25597259cfa51Bd396cE1d4B085EC4c753.json index 2d458de7e4..146d6ef306 100644 --- a/packages/boba/register/addresses/addressBobaBnb_0xeb989B25597259cfa51Bd396cE1d4B085EC4c753.json +++ b/packages/boba/register/addresses/addressBobaBnb_0xeb989B25597259cfa51Bd396cE1d4B085EC4c753.json @@ -21,6 +21,8 @@ "TK_L2BUSD": "0x4a2c2838c3907D024916c3f4Fe07832745Ae4bec", "TK_L1USDT": "0x55d398326f99059fF775485246999027B3197955", "TK_L2USDT": "0x1E633Dcd0d3D349126983D58988051F7c62c543D", + "TK_L1SUSHI": "0x986cdF0fd180b40c4D6aEAA01Ab740B996D8b782", + "TK_L2SUSHI": "0xa84D7c48602C898EC84C4cCA78651107B3625943", "L1CrossDomainMessengerFast": "0x0163D3C18781521cf8e72790d15CCF118A540e24", "Proxy__L1CrossDomainMessengerFast": "0xBe349cABeA97bB933f8C2594634Deb858167f83c", "L2LiquidityPool": "0xE0DB679377A0F5Ae2BaE485DE475c9e1d8A4607D", diff --git a/packages/boba/register/addresses/tokenInfo.json b/packages/boba/register/addresses/tokenInfo.json index 0b9fed46a3..227ca5fb15 100644 --- a/packages/boba/register/addresses/tokenInfo.json +++ b/packages/boba/register/addresses/tokenInfo.json @@ -670,6 +670,11 @@ "name": "Tether USD", "symbol": "USDT", "decimals": 18 + }, + "0x986cdF0fd180b40c4D6aEAA01Ab740B996D8b782": { + "name": "SushiToken", + "symbol": "SUSHI", + "decimals": 18 } }, "L2": { @@ -697,6 +702,11 @@ "name": "BNB", "symbol": "BNB", "decimals": 18 + }, + "0xa84D7c48602C898EC84C4cCA78651107B3625943": { + "name": "SushiToken", + "symbol": "SUSHI", + "decimals": 18 } } }, From 155fcb47b09d774cce1896e429d94cac7983b2a9 Mon Sep 17 00:00:00 2001 From: Sahil Kashetwar Date: Fri, 27 Jan 2023 03:35:07 +0530 Subject: [PATCH 29/32] updated layerzero testnet adresses --- .../register/addresses/layerZeroTestnet.json | 84 +++++++++++-------- 1 file changed, 50 insertions(+), 34 deletions(-) diff --git a/packages/boba/register/addresses/layerZeroTestnet.json b/packages/boba/register/addresses/layerZeroTestnet.json index 3b8b6a370e..9c67409ded 100644 --- a/packages/boba/register/addresses/layerZeroTestnet.json +++ b/packages/boba/register/addresses/layerZeroTestnet.json @@ -1,60 +1,76 @@ { "Layer_Zero_Protocol": { "Testnet":{ - "Layer_Zero_Endpoint": "0x79a63d6d8BBD5c6dfc774dA79bCcD948EAcb53FA", - "Layer_Zero_ChainId": "10001" + "Layer_Zero_Endpoint": "0xbfD2135BFfbb0B5378b56643c2Df8a87552Bfa23", + "Layer_Zero_ChainId": "10121" }, "BNB": { "Layer_Zero_Endpoint": "0x6Fcb97553D41516Cb228ac03FdC8B9a0a9df04A1", - "Layer_Zero_ChainId": "10002" + "Layer_Zero_ChainId": "10102" }, "Fantom": { "Layer_Zero_Endpoint": "0x7dcAD72640F835B0FA36EFD3D6d3ec902C7E5acf", - "Layer_Zero_ChainId": "10012" + "Layer_Zero_ChainId": "10112" }, "Avalanche": { "Layer_Zero_Endpoint": "0x93f54D755A063cE7bB9e6Ac47Eccc8e33411d706", "Layer_Zero_ChainId": "10006" + }, + "Moonbase": { + "Layer_Zero_Endpoint": "0xb23b28012ee92E8dE39DEb57Af31722223034747", + "Layer_Zero_ChainId": "10126" } }, "BOBA_Bridges": { "Testnet":{ - "Proxy__EthBridgeToBNB": "0xe15DccaB449aC06eE8eC068a75BA61968ba8BFBC", - "Proxy__EthBridgeToFantom": "0xE3D9a12677dE08D250c20BFe22009d5e34EB4ba5", - "Proxy__EthBridgeToAvalanche": "0x78Af7bF02fEBa4D979Ea2dBc5388cDC768E7b34E", - "EthBridgeToBNB": "0x1Df8afB0ddA430f5A31F731B0C9A673357E4F053", - "EthBridgeToFantom": "0x860E4E12d5b6d979D028cA1A55738722Db68138E", - "EthBridgeToAvalanche": "0x83E8310D78a0a49576C4Bd7609CD77182f31Ba88", - "Proxy__BNBBridgeToEth": "0x5eeA4C745c8099C8A226004493B7ac565D7489C7", - "Proxy__FantomBridgeToEth": "0x2d9322086Ea40Ffd7085e854120F1Bd2670469fD", - "Proxy__AvalancheBridgeToEth": "0x72B9875fF366f12B7fCCa379E762AaCD4CD457Cb", - "BNBBridgeToEth": "0x0168Bfe341d8c30faA7E0b6900104ceafd1E6B16", - "FantomBridgeToEth": "0xB5E0AdBb4cE258472eFe869B24Cb8452281A80a0", - "AvalancheBridgeToEth": "0x482bdcA71c6AB6751Be74e256E9A144e48E0Ba6f", - "BNB_TK_BOBA": "0x5895678be5bbb312B66a36f58D366325DdC35965", - "Avalanche_TK_BOBA": "0xE1BE8c3D60F8046F118F1301B412A908815C8886", - "Fantom_TK_BOBA": "0xD12701Ef5Bc5497a2122E0Cb630D44Cd88AfA770" + "Proxy__EthBridgeToBNB": "0x88F8cD148A4B68d250B62EeB75D9Cccd99624E2C", + "Proxy__EthBridgeToFantom": "0x46Df4761959BC78867e1Af47cA8bC7B40B3Cb1A6", + "Proxy__EthBridgeToAvalanche": "0x1b588Adb7Ec795f45D9c8BDdc2eA49efAE37AB6a", + "Proxy__EthBridgeToMoonbase": "0x3BB2954d2c2AaeE4832e4a89974DC4E5a5a53C0a", + "EthBridgeToBNB": "0xCb91c5157024618FC90017c28fa83F36f266Eb4e", + "EthBridgeToFantom": "0xa0fDeB9c88178E35D336042A076CeC12b55054a2", + "EthBridgeToAvalanche": "0x2C4Ec0725D9b795A90de46326C7dDb57C1437019", + "EthBridgeToMoonbase": "0x66c8283aECcAbB15f3359961a91783ff8553ee1B", + "Proxy__BNBBridgeToEth": "0x37152D3D998ED163f4253FDaBDD9E545F0Ec7c07", + "Proxy__FantomBridgeToEth": "0x01F93E4EFa199d4D42A248Db90716214f7283DCb", + "Proxy__AvalancheBridgeToEth": "0xec4DE3D3bCbCe89875C1C5d2d7FAd8B2AF5080a7", + "Proxy__MoonbaseBridgeToEth": "0xc60e797bf8166EEF92681fc47cDdd7517293F025", + "BNBBridgeToEth": "0xc614A66f82e71758Fa7735C91dAD1088c8362f15", + "FantomBridgeToEth": "0x7B23c975195503C9Eb1972e900ac4799B5A504Cb", + "AvalancheBridgeToEth": "0x7eD586Db48CB0b60b821462Be6e925CA1b5D271D", + "MoonbaseBridgeToEth": "0xBe9813929AD03bE8955fab157D64f5f784ADfc30", + "BNB_TK_BOBA": "0x89d7128C93933012F0d36D9A5bCae82414318A0D", + "Avalanche_TK_BOBA": "0xDA72d93c5645E70437D733d55DdE9CCb5403E4b1", + "Fantom_TK_BOBA": "0x44DcA16c6940D74d12ABFa586E0b6caAC0ceDeF8", + "Moonbase_TK_BOBA": "0x0F59e146b557c2168025E576C2A52f782e88cC6D" }, "BNB": { - "Proxy__EthBridgeToBNB": "0xe15DccaB449aC06eE8eC068a75BA61968ba8BFBC", - "EthBridgeToBNB": "0x1Df8afB0ddA430f5A31F731B0C9A673357E4F053", - "Proxy__BNBBridgeToEth": "0x5eeA4C745c8099C8A226004493B7ac565D7489C7", - "BNBBridgeToEth": "0x0168Bfe341d8c30faA7E0b6900104ceafd1E6B16", - "BNB_TK_BOBA": "0x5895678be5bbb312B66a36f58D366325DdC35965" + "Proxy__EthBridgeToBNB": "0x88F8cD148A4B68d250B62EeB75D9Cccd99624E2C", + "EthBridgeToBNB": "0xCb91c5157024618FC90017c28fa83F36f266Eb4e", + "Proxy__BNBBridgeToEth": "0x37152D3D998ED163f4253FDaBDD9E545F0Ec7c07", + "BNBBridgeToEth": "0xc614A66f82e71758Fa7735C91dAD1088c8362f15", + "BNB_TK_BOBA": "0x89d7128C93933012F0d36D9A5bCae82414318A0D" }, "Fantom": { - "Proxy__EthBridgeToFantom": "0xE3D9a12677dE08D250c20BFe22009d5e34EB4ba5", - "EthBridgeToFantom": "0x860E4E12d5b6d979D028cA1A55738722Db68138E", - "Proxy__FantomBridgeToEth": "0x2d9322086Ea40Ffd7085e854120F1Bd2670469fD", - "FantomBridgeToEth": "0xB5E0AdBb4cE258472eFe869B24Cb8452281A80a0", - "Fantom_TK_BOBA": "0xD12701Ef5Bc5497a2122E0Cb630D44Cd88AfA770" + "Proxy__EthBridgeToFantom": "0x46Df4761959BC78867e1Af47cA8bC7B40B3Cb1A6", + "EthBridgeToFantom": "0xa0fDeB9c88178E35D336042A076CeC12b55054a2", + "Proxy__FantomBridgeToEth": "0x01F93E4EFa199d4D42A248Db90716214f7283DCb", + "FantomBridgeToEth": "0x7B23c975195503C9Eb1972e900ac4799B5A504Cb", + "Fantom_TK_BOBA": "0x44DcA16c6940D74d12ABFa586E0b6caAC0ceDeF8" }, "Avalanche": { - "Proxy__EthBridgeToAvalanche": "0x78Af7bF02fEBa4D979Ea2dBc5388cDC768E7b34E", - "EthBridgeToAvalanche": "0x83E8310D78a0a49576C4Bd7609CD77182f31Ba88", - "Proxy__AvalancheBridgeToEth": "0x72B9875fF366f12B7fCCa379E762AaCD4CD457Cb", - "AvalancheBridgeToEth": "0x482bdcA71c6AB6751Be74e256E9A144e48E0Ba6f", - "Avalanche_TK_BOBA": "0xE1BE8c3D60F8046F118F1301B412A908815C8886" + "Proxy__EthBridgeToAvalanche": "0x1b588Adb7Ec795f45D9c8BDdc2eA49efAE37AB6a", + "EthBridgeToAvalanche": "0x2C4Ec0725D9b795A90de46326C7dDb57C1437019", + "Proxy__AvalancheBridgeToEth": "0xec4DE3D3bCbCe89875C1C5d2d7FAd8B2AF5080a7", + "AvalancheBridgeToEth": "0x7eD586Db48CB0b60b821462Be6e925CA1b5D271D", + "Avalanche_TK_BOBA": "0xDA72d93c5645E70437D733d55DdE9CCb5403E4b1" + }, + "Moonbase": { + "Proxy__EthBridgeToMoonbase": "0x3BB2954d2c2AaeE4832e4a89974DC4E5a5a53C0a", + "EthBridgeToMoonbase": "0x66c8283aECcAbB15f3359961a91783ff8553ee1B", + "Proxy__MoonbaseBridgeToEth": "0xc60e797bf8166EEF92681fc47cDdd7517293F025", + "MoonbaseBridgeToEth": "0xBe9813929AD03bE8955fab157D64f5f784ADfc30", + "Moonbase_TK_BOBA": "0x0F59e146b557c2168025E576C2A52f782e88cC6D" } } } From 1b2372f06e1522fad2727be438a8ddaadb633e6e Mon Sep 17 00:00:00 2001 From: Sahil Kashetwar Date: Mon, 30 Jan 2023 21:48:23 +0530 Subject: [PATCH 30/32] updated sentry to latest pack --- packages/boba/gateway/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/boba/gateway/package.json b/packages/boba/gateway/package.json index bcf481a86e..5324d79f73 100644 --- a/packages/boba/gateway/package.json +++ b/packages/boba/gateway/package.json @@ -26,8 +26,8 @@ "@mui/icons-material": "^5.3.1", "@mui/material": "^5.4.0", "@mui/styles": "^5.3.0", - "@sentry/react": "^7.12.1", - "@sentry/tracing": "^7.12.1", + "@sentry/react": "^7.34.0", + "@sentry/tracing": "^7.34.0", "@typescript-eslint/eslint-plugin": "^5.10.2", "@typescript-eslint/parser": "^5.10.2", "axios": "^0.21.1", From a4b1908f45d7d277536d595a7e5b9114d0c67933 Mon Sep 17 00:00:00 2001 From: Sahil Kashetwar Date: Mon, 30 Jan 2023 21:48:35 +0530 Subject: [PATCH 31/32] updated sentry to latest pack --- yarn.lock | 90 +++++++++++++++++++++++++++---------------------------- 1 file changed, 45 insertions(+), 45 deletions(-) diff --git a/yarn.lock b/yarn.lock index 663e31b08a..47f5d2e9c7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5049,15 +5049,15 @@ "@noble/hashes" "~1.1.1" "@scure/base" "~1.1.0" -"@sentry/browser@7.27.0": - version "7.27.0" - resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-7.27.0.tgz#540d292d418abbf0ac7cabb39fe1863b8fa0c85f" - integrity sha512-6z+q+omLqmdEvy+9i4j7xzIT6zgmWJnXqEiLCURnE34KsPq6wr6Nij1XHsTlApMcohOpPlo+C3nMTmz+oYUf5w== - dependencies: - "@sentry/core" "7.27.0" - "@sentry/replay" "7.27.0" - "@sentry/types" "7.27.0" - "@sentry/utils" "7.27.0" +"@sentry/browser@7.34.0": + version "7.34.0" + resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-7.34.0.tgz#6a521c5d95d535e6e89cf4eae85153f90c37d17a" + integrity sha512-5Jmjj0DLxx+31o12T+VH4U+gO7wz3L+ftjuTxcQaC8GeFVe5qCyXZoDmWKNV9NEyREiZ3azV62bJc5wojZrIIg== + dependencies: + "@sentry/core" "7.34.0" + "@sentry/replay" "7.34.0" + "@sentry/types" "7.34.0" + "@sentry/utils" "7.34.0" tslib "^1.9.3" "@sentry/core@5.30.0": @@ -5082,13 +5082,13 @@ "@sentry/utils" "6.19.7" tslib "^1.9.3" -"@sentry/core@7.27.0": - version "7.27.0" - resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.27.0.tgz#77d0964d5625430a491f274b6b1f64473a361757" - integrity sha512-9WkHMllGNOr6S55N2HKJYJj/2mog5Kv6mjruqlcHHPSgcKFA8bjwBXJTghy6UzwtGd14cyS/X7h5AVUkvuXTMw== +"@sentry/core@7.34.0": + version "7.34.0" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-7.34.0.tgz#bfda8d386cf7343200aa9fb7a7a26e99b839fc0c" + integrity sha512-J1oxsYZX1N0tkEcaHt/uuDqk6zOnaivyampp+EvBsUMCdemjg7rwKvawlRB0ZtBEQu3HAhi8zecm03mlpWfCDw== dependencies: - "@sentry/types" "7.27.0" - "@sentry/utils" "7.27.0" + "@sentry/types" "7.34.0" + "@sentry/utils" "7.34.0" tslib "^1.9.3" "@sentry/hub@5.30.0": @@ -5156,25 +5156,25 @@ lru_map "^0.3.3" tslib "^1.9.3" -"@sentry/react@^7.12.1": - version "7.27.0" - resolved "https://registry.yarnpkg.com/@sentry/react/-/react-7.27.0.tgz#6a0708344164b33aa84e9df23cee31b5d60b7656" - integrity sha512-KApZkkfMAC49L6j3mI7e+ZGig/Alo6lwGZWrAOIGXhdj77+msKWueL58YJDdpffm/EqIblc/8ZY9KG4b6Mkcgg== +"@sentry/react@^7.34.0": + version "7.34.0" + resolved "https://registry.yarnpkg.com/@sentry/react/-/react-7.34.0.tgz#8d69d3957736fe2692cd5547ad2d2f6f307e5590" + integrity sha512-vdonnZK9R8xyEBDaXNofHyoqy9biNRvlKrQXZp4x8WlYcBCwbU46qxZlSVsxa89pm7yUYS+KHq8cYL801+weqg== dependencies: - "@sentry/browser" "7.27.0" - "@sentry/types" "7.27.0" - "@sentry/utils" "7.27.0" + "@sentry/browser" "7.34.0" + "@sentry/types" "7.34.0" + "@sentry/utils" "7.34.0" hoist-non-react-statics "^3.3.2" tslib "^1.9.3" -"@sentry/replay@7.27.0": - version "7.27.0" - resolved "https://registry.yarnpkg.com/@sentry/replay/-/replay-7.27.0.tgz#9529dd2603c6581ffc88857a1f43fc875c80857b" - integrity sha512-Db1TBx4JZWWbsAXSzWfAE55d4ekpPspZheyF66j84xq8jaFxgmlMMO7wBD8P7CHuQ6VUkgwa4glMkcamj/sfSg== +"@sentry/replay@7.34.0": + version "7.34.0" + resolved "https://registry.yarnpkg.com/@sentry/replay/-/replay-7.34.0.tgz#66d63b1e04d7e8068cac0c623a607f470d000751" + integrity sha512-4L4YZfWt8mcVNcI99RxHORPb308URI1R9xsFj97fagk0ATjexLKr5QCA2ApnKaSn8Q0q1Zdzd4XmFtW9anU45Q== dependencies: - "@sentry/core" "7.27.0" - "@sentry/types" "7.27.0" - "@sentry/utils" "7.27.0" + "@sentry/core" "7.34.0" + "@sentry/types" "7.34.0" + "@sentry/utils" "7.34.0" "@sentry/tracing@5.30.0": version "5.30.0" @@ -5198,14 +5198,14 @@ "@sentry/utils" "6.19.7" tslib "^1.9.3" -"@sentry/tracing@^7.12.1": - version "7.27.0" - resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-7.27.0.tgz#455a032c6ccf9bc8e27905dc8e624e6e2f45737b" - integrity sha512-lxAiGAajbZgZkaViwYuxavbu/c8JUp56XOYzSAi7Km9jGnTFLNF4JCoyG0INy7lXipFJiWSd0Xq3aej0Lb+Cvg== +"@sentry/tracing@^7.34.0": + version "7.34.0" + resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-7.34.0.tgz#bc084389cad4f1e8520311ac195b070eced72b40" + integrity sha512-JtfSWBfcWslfIujcpGEPF5oOiAOCd5shMoWYrdTvCfruHhYjp4w5kv/ndkvq2EpFkcQYhdmtQEytXEO8IJIqRw== dependencies: - "@sentry/core" "7.27.0" - "@sentry/types" "7.27.0" - "@sentry/utils" "7.27.0" + "@sentry/core" "7.34.0" + "@sentry/types" "7.34.0" + "@sentry/utils" "7.34.0" tslib "^1.9.3" "@sentry/types@5.30.0": @@ -5218,10 +5218,10 @@ resolved "https://registry.yarnpkg.com/@sentry/types/-/types-6.19.7.tgz#c6b337912e588083fc2896eb012526cf7cfec7c7" integrity sha512-jH84pDYE+hHIbVnab3Hr+ZXr1v8QABfhx39KknxqKWr2l0oEItzepV0URvbEhB446lk/S/59230dlUUIBGsXbg== -"@sentry/types@7.27.0": - version "7.27.0" - resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.27.0.tgz#1af8eae05465ad00722e319c066c950cc389b585" - integrity sha512-vapN3jchu3/WEMWQkrCOy2XDlOLj0l7IewYXKMr15Q21dlfM1QZMigU/r5rtYj5L8a2ISIHx+cRECxX5UIKH7w== +"@sentry/types@7.34.0": + version "7.34.0" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-7.34.0.tgz#e0dc6a927dd13e4cacbca7bfee67a088885e8309" + integrity sha512-K+OeHIrl35PSYn6Zwqe4b8WWyAJQoI5NeWxHVkM7oQTGJ1YLG4BvLsR+UiUXnKdR5krE4EDtEA5jLsDlBEyPvw== "@sentry/utils@5.30.0": version "5.30.0" @@ -5239,12 +5239,12 @@ "@sentry/types" "6.19.7" tslib "^1.9.3" -"@sentry/utils@7.27.0": - version "7.27.0" - resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.27.0.tgz#1a0b4e62db32fb56e737c59bd67c847bb888fa8a" - integrity sha512-8e5cmjbeuxETPxPEymyyGEYlBbJO1IMveTlcxkTFySPU6nNz2oAIiqPVHv2QgFJJvRv79/i/4Tyl5gFMOW0+AA== +"@sentry/utils@7.34.0": + version "7.34.0" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-7.34.0.tgz#32fb6db8b352477d219ddff8200372959c68b445" + integrity sha512-VIHHXEBw0htzqxnU8A7WkXKvmsG2pZVqHlAn0H9W/yyFQtXMuP1j1i0NsjADB/3JXUKK83kTNWGzScXvp0o+Jg== dependencies: - "@sentry/types" "7.27.0" + "@sentry/types" "7.34.0" tslib "^1.9.3" "@sindresorhus/is@^0.14.0": From 082e0c98ef5bca8b1e7af51c231dc6f6ce54caee Mon Sep 17 00:00:00 2001 From: Sahil Kashetwar Date: Mon, 30 Jan 2023 22:55:20 +0530 Subject: [PATCH 32/32] Added naming for l1 native token on exit --- .../src/containers/modals/exit/steps/DoExitStep.js | 6 ++++-- .../src/containers/modals/exit/steps/DoExitStepFast.js | 8 +++++--- .../src/containers/modals/transfer/TransferModal.js | 2 +- packages/boba/gateway/src/services/networkService.js | 9 +++------ 4 files changed, 13 insertions(+), 12 deletions(-) diff --git a/packages/boba/gateway/src/containers/modals/exit/steps/DoExitStep.js b/packages/boba/gateway/src/containers/modals/exit/steps/DoExitStep.js index 8fbb5c85db..8aefc25b43 100644 --- a/packages/boba/gateway/src/containers/modals/exit/steps/DoExitStep.js +++ b/packages/boba/gateway/src/containers/modals/exit/steps/DoExitStep.js @@ -56,6 +56,7 @@ import { selectL2BalanceBOBA, selectExitFee, } from 'selectors/balanceSelector' +import networkService from 'services/networkService' function DoExitStep({ handleClose, token, isBridge, openTokenPicker }) { @@ -230,7 +231,8 @@ function DoExitStep({ handleClose, token, isBridge, openTokenPicker }) { const balance = Number(logAmount(token.balance, token.decimals)) // because of MetaMask issue always have to limit ETH - if(token.symbol === 'ETH') { + // if(token.symbol === 'ETH') { + if(token.symbol === networkService.L1NativeTokenSymbol) { if(balance - safeCost > 0.0) setMax_Float(balance - safeCost) else @@ -262,7 +264,7 @@ function DoExitStep({ handleClose, token, isBridge, openTokenPicker }) { if(feeUseBoba) { estGas = `${Number(feeBOBA).toFixed(4)} BOBA` } else { - estGas = `${Number(feeETH).toFixed(4)} ETH` + estGas = `${Number(feeETH).toFixed(4)} ${networkService.L1NativeTokenSymbol}` } } diff --git a/packages/boba/gateway/src/containers/modals/exit/steps/DoExitStepFast.js b/packages/boba/gateway/src/containers/modals/exit/steps/DoExitStepFast.js index dd05c43038..9419da3daf 100644 --- a/packages/boba/gateway/src/containers/modals/exit/steps/DoExitStepFast.js +++ b/packages/boba/gateway/src/containers/modals/exit/steps/DoExitStepFast.js @@ -63,6 +63,7 @@ import { selectBobaFeeChoice, selectBobaPriceRatio, } from 'selectors/setupSelector' +import networkService from 'services/networkService' function DoExitStepFast({ handleClose, token, isBridge, openTokenPicker }) { @@ -282,7 +283,7 @@ function DoExitStepFast({ handleClose, token, isBridge, openTokenPicker }) { const balance = Number(logAmount(token.balance, token.decimals)) // because of MetaMask issue always have to limit ETH - if(token.symbol === 'ETH') { + if(token.symbol === networkService.L1NativeTokenSymbol) { if(balance - safeCost > 0.0) setMax_Float(balance - safeCost) else @@ -318,15 +319,16 @@ function DoExitStepFast({ handleClose, token, isBridge, openTokenPicker }) { if(feeUseBoba) { estGas = `${Number(feeBOBA).toFixed(4)} BOBA` } else { - estGas = `${Number(feeETH).toFixed(4)} ETH` + estGas = `${Number(feeETH).toFixed(4)} ${networkService.L1NativeTokenSymbol}` } } // prohibit ExitAll when paying with the token that is to be exited let allowUseAll = true - if(token.symbol === 'ETH') { + if(token.symbol === networkService.L1NativeTokenSymbol) { allowUseAll = false } + else if (token.symbol === 'BOBA' && feeUseBoba) { allowUseAll = false } diff --git a/packages/boba/gateway/src/containers/modals/transfer/TransferModal.js b/packages/boba/gateway/src/containers/modals/transfer/TransferModal.js index eaa456914b..56312947ea 100644 --- a/packages/boba/gateway/src/containers/modals/transfer/TransferModal.js +++ b/packages/boba/gateway/src/containers/modals/transfer/TransferModal.js @@ -197,7 +197,7 @@ function TransferModal ({ open, token, minHeight }) { {fee && !feeUseBoba && ( - Fee: {fee} ETH + Fee: {fee} {networkService.L1NativeTokenSymbol} )} diff --git a/packages/boba/gateway/src/services/networkService.js b/packages/boba/gateway/src/services/networkService.js index 681f11b7ab..93a38d5396 100644 --- a/packages/boba/gateway/src/services/networkService.js +++ b/packages/boba/gateway/src/services/networkService.js @@ -2131,10 +2131,6 @@ class NetworkService { this.addresses.DiscretionaryExitFee ) - if (utils.getAddress(currencyAddress) === utils.getAddress(this.addresses.TK_L2BOBA)) { - BobaApprovalAmount = BobaApprovalAmount.add(value) - } - // Should approve BOBA if ( BobaAllowance.lt(BobaApprovalAmount) ) { const res = await this.approveERC20( @@ -2171,7 +2167,7 @@ class NetworkService { this.L1GasLimit, utils.formatBytes32String(new Date().getTime().toString()), currencyAddress === this.addresses.L2_ETH_Address ? - { value: value_Wei_String } : {} + { value: value.add(BobaApprovalAmount) } : { value: BobaApprovalAmount } ) //everything submitted... waiting @@ -4491,7 +4487,7 @@ class NetworkService { async getAltL1DepositFee() { if (this.account === null) { - console.log('NS: depositErc20ToL1() error - called but account === null') + console.log('NS: getAltL1DepositFee() error - called but account === null') return } try { @@ -4632,6 +4628,7 @@ class NetworkService { console.log(`🆙 Depositing ${value} 👉 ${type} l1 with 💵 FEE ${ethers.utils.formatEther(estimatedFee._nativeFee)}`); // TODO: FIXME: Update this function to `withdraw` in case of other deployment than ETHERUEM. + // INPUT STEP MULTICHAIN await Proxy__EthBridge.depositERC20( ETH_L1_BOBA_ADDRESS, ALT_L1_BOBA_ADDRESS,