diff --git a/.github/workflows/dev-cd.yaml b/.github/workflows/dev-cd.yaml index 195df07..13fe5c5 100644 --- a/.github/workflows/dev-cd.yaml +++ b/.github/workflows/dev-cd.yaml @@ -8,6 +8,9 @@ env: REACT_APP_ETHERSCAN_KEY: ${{ secrets.REACT_APP_ETHERSCAN_KEY }} REACT_APP_INFURA_KEY: ${{ secrets.REACT_APP_INFURA_KEY }} REACT_APP_ONBOARD_JS_DAPP_ID: ${{ secrets.REACT_APP_ONBOARD_JS_DAPP_ID }} + REACT_APP_OPTIMISTIC_ETHERSCAN_KEY: ${{ secrets.REACT_APP_OPTIMISTIC_ETHERSCAN_KEY }} + REACT_APP_ARBISCAN_KEY: ${{ secrets.REACT_APP_ARBISCAN_KEY }} + REACT_APP_SNOWTRACE_KEY: ${{ secrets.REACT_APP_SNOWTRACE_KEY }} jobs: deploy: runs-on: ubuntu-latest diff --git a/.github/workflows/prod-release-deploy.yaml b/.github/workflows/prod-release-deploy.yaml index 971d231..f121acf 100644 --- a/.github/workflows/prod-release-deploy.yaml +++ b/.github/workflows/prod-release-deploy.yaml @@ -8,6 +8,9 @@ env: REACT_APP_ETHERSCAN_KEY: ${{ secrets.REACT_APP_ETHERSCAN_KEY }} REACT_APP_INFURA_KEY: ${{ secrets.REACT_APP_INFURA_KEY }} REACT_APP_ONBOARD_JS_DAPP_ID: ${{ secrets.REACT_APP_ONBOARD_JS_DAPP_ID }} + REACT_APP_OPTIMISTIC_ETHERSCAN_KEY: ${{ secrets.REACT_APP_OPTIMISTIC_ETHERSCAN_KEY }} + REACT_APP_ARBISCAN_KEY: ${{ secrets.REACT_APP_ARBISCAN_KEY }} + REACT_APP_SNOWTRACE_KEY: ${{ secrets.REACT_APP_SNOWTRACE_KEY }} jobs: deploy: runs-on: ubuntu-latest diff --git a/packages/exit-app/.env.sample b/packages/exit-app/.env.sample index bbd30c9..7b2ae46 100644 --- a/packages/exit-app/.env.sample +++ b/packages/exit-app/.env.sample @@ -1,3 +1,6 @@ REACT_APP_INFURA_KEY= REACT_APP_ONBOARD_JS_DAPP_ID= REACT_APP_ETHERSCAN_KEY= +REACT_APP_OPTIMISTIC_ETHERSCAN_KEY= +REACT_APP_ARBISCAN_KEY= +REACT_APP_SNOWTRACE_KEY= diff --git a/packages/exit-app/src/utils/explorers.ts b/packages/exit-app/src/utils/explorers.ts index 417f8c2..cedb47c 100644 --- a/packages/exit-app/src/utils/explorers.ts +++ b/packages/exit-app/src/utils/explorers.ts @@ -1,6 +1,9 @@ import { NETWORK } from './networks' const REACT_APP_ETHERSCAN_KEY = process.env.REACT_APP_ETHERSCAN_KEY +const REACT_APP_OPTIMISTIC_ETHERSCAN_KEY = process.env.REACT_APP_OPTIMISTIC_ETHERSCAN_KEY +const REACT_APP_ARBISCAN_KEY = process.env.REACT_APP_ARBISCAN_KEY +const REACT_APP_SNOWTRACE_KEY = process.env.REACT_APP_SNOWTRACE_KEY interface ExplorerData { networkExplorerName: string @@ -57,6 +60,33 @@ export const EXPLORERS_CONFIG: Record = { verifyContractUrl: 'https://bscscan.com/verifyContract', explorerApiKey: REACT_APP_ETHERSCAN_KEY, }, + [NETWORK.OPTIMISM]: { + networkExplorerName: 'Etherscan', + networkExplorerUrl: 'https://optimistic.etherscan.io/', + networkExplorerApiUrl: 'https://api-optimistic.etherscan.io/api', + safeTransactionApi: 'https://safe-transaction-optimism.safe.global/', + safeUrl: 'https://app.safe.global/home?safe=oeth:', + verifyContractUrl: 'https://optimistic.etherscan.io/verifyContract', + explorerApiKey: REACT_APP_OPTIMISTIC_ETHERSCAN_KEY, + }, + [NETWORK.ARBITRUMONE]: { + networkExplorerName: 'Arbiscan', + networkExplorerUrl: 'https://arbiscan.io/', + networkExplorerApiUrl: 'https://api.arbiscan.io/api', + safeTransactionApi: 'https://safe-transaction-arbitrum.safe.global/', + safeUrl: 'https://app.safe.global/home?safe=arb1:', + verifyContractUrl: 'https://arbiscan.io/verifyContract', + explorerApiKey: REACT_APP_ARBISCAN_KEY, + }, + [NETWORK.AVALANCHE]: { + networkExplorerName: 'Snowtrace', + networkExplorerUrl: 'https://snowtrace.io/', + networkExplorerApiUrl: 'https://api.snowtrace.io/api', + safeTransactionApi: 'https://safe-transaction-arbitrum.safe.global/', + safeUrl: 'https://app.safe.global/home?safe=avax:', + verifyContractUrl: 'https://snowtrace.io/verifyContract', + explorerApiKey: REACT_APP_SNOWTRACE_KEY, + }, } export const getNetworkExplorerInfo = (chainId: number) => { diff --git a/packages/exit-app/src/utils/networks.ts b/packages/exit-app/src/utils/networks.ts index 6d2a5e9..982b938 100644 --- a/packages/exit-app/src/utils/networks.ts +++ b/packages/exit-app/src/utils/networks.ts @@ -1,9 +1,12 @@ export enum NETWORK { MAINNET = 1, - GOERLI = 5, + OPTIMISM = 10, BSC = 56, + GOERLI = 5, XDAI = 100, POLYGON = 137, + ARBITRUMONE = 42161, + AVALANCHE = 43114, } export interface Coin { @@ -16,6 +19,7 @@ export const NATIVE_ASSET: Record = { XDAI: { symbol: 'xDai', decimals: 18 }, MATIC: { symbol: 'MATIC', decimals: 18 }, BNB: { symbol: 'BNB', decimals: 18 }, + AVAX: { symbol: 'AVAX', decimals: 18 }, } export const NETWORK_NATIVE_ASSET: Record = { @@ -24,6 +28,9 @@ export const NETWORK_NATIVE_ASSET: Record = { [NETWORK.BSC]: NATIVE_ASSET.BNB, [NETWORK.XDAI]: NATIVE_ASSET.XDAI, [NETWORK.POLYGON]: NATIVE_ASSET.MATIC, + [NETWORK.OPTIMISM]: NATIVE_ASSET.ETH, + [NETWORK.ARBITRUMONE]: NATIVE_ASSET.ETH, + [NETWORK.AVALANCHE]: NATIVE_ASSET.AVAX, } export const NETWORK_NAME: Record = { @@ -32,6 +39,9 @@ export const NETWORK_NAME: Record = { [NETWORK.BSC]: 'Binance Smart Chain', [NETWORK.XDAI]: 'Gnosis Chain', [NETWORK.POLYGON]: 'Polygon', + [NETWORK.OPTIMISM]: 'Optimism', + [NETWORK.ARBITRUMONE]: 'Arbitrum One', + [NETWORK.AVALANCHE]: 'Avalanche', } export const NETWORK_DEFAULT_RPC: Record = { @@ -40,6 +50,9 @@ export const NETWORK_DEFAULT_RPC: Record = { [NETWORK.BSC]: 'https://bsc-dataseed.binance.org', [NETWORK.XDAI]: 'https://rpc.gnosischain.com', [NETWORK.POLYGON]: 'https://polygon-rpc.com', + [NETWORK.OPTIMISM]: 'https://mainnet.optimism.io', + [NETWORK.ARBITRUMONE]: 'https://arb1.arbitrum.io/rpc', + [NETWORK.AVALANCHE]: 'https://avalanche-c-chain.publicnode.com', } export function getNetworkNativeAsset(network: NETWORK) {