diff --git a/.env b/.env deleted file mode 100644 index 901c2edc..00000000 --- a/.env +++ /dev/null @@ -1,54 +0,0 @@ -REACT_APP_KLEROS_ADDRESS=0x211f01e59b425253c0a0e9a7bf612605b42ce82c -REACT_APP_KLEROS_LIQUID_ADDRESS=0x988b3a538b618c7a603e1c11ab82cd16dbe28069 -REACT_APP_KLEROS_LIQUID_EXTRA_VIEWS_ADDRESS=0x2B562ea613ad2f58746935C842d09EB147E1E940 -REACT_APP_PINAKION_ADDRESS=0x93ed3fbe21207ec2e8f2d3c3de6e058cb73bc04d -REACT_APP_POLICY_REGISTRY_ADDRESS=0xCf1f07713d5193FaE5c1653C9f61953D048BECe4 -REACT_APP_UNISWAP_V2_ROUTER_02_ADDRESS=0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D -REACT_APP_UNISWAP_V2_FACTORY_ADDRESS=0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f -REACT_APP_TOKEN_BRIDGE_ADDRESS=0x88ad09518695c6c3712AC10a214bE5109a655671 -REACT_APP_KLEROS_LIQUID_BLOCK_NUMBER=7303699 -REACT_APP_WEB3_FALLBACK_URL=wss://mainnet.infura.io/ws/v3/54fb3d87cd07464591ad2be29a1db32f -REACT_APP_WEB3_FALLBACK_HTTPS_URL=https://mainnet.infura.io/v3/54fb3d87cd07464591ad2be29a1db32f -REACT_APP_APPLICATION_SERVER_KEY=BNqPp3phfZUqu4G1SCkqNuZ_FDL4YuSeAEV97U_G3UbrOuOsTeaI9jHE3QNRJ-O8EH3F2OUdnJJ4ZOhp80FthKU - -REACT_APP_KLEROS_XDAI_ADDRESS=0x0000000000000000000000000000000000000000 -REACT_APP_KLEROS_LIQUID_XDAI_ADDRESS=0x9C1dA9A04925bDfDedf0f6421bC7EEa8305F9002 -REACT_APP_KLEROS_LIQUID_EXTRA_VIEWS_XDAI_ADDRESS=0x1c0D5A1fF532715a58d0456ef10532e3eb6ec5de -REACT_APP_PINAKION_XDAI_ADDRESS=0xcb3231aBA3b451343e0Fddfc45883c842f223846 -REACT_APP_RAW_PINAKION_XDAI_ADDRESS=0x37b60f4e9a31a64ccc0024dce7d0fd07eaa0f7b3 -REACT_APP_POLICY_REGISTRY_XDAI_ADDRESS=0x9d494768936b6bDaabc46733b8D53A937A6c6D7e -REACT_APP_UNISWAP_V2_ROUTER_02_XDAI_ADDRESS=0x0000000000000000000000000000000000000000 -REACT_APP_UNISWAP_V2_FACTORY_XDAI_ADDRESS=0x0000000000000000000000000000000000000000 -REACT_APP_TOKEN_BRIDGE_XDAI_ADDRESS=0xf6A78083ca3e2a662D6dd1703c939c8aCE2e268d -REACT_APP_KLEROS_LIQUID_XDAI_BLOCK_NUMBER=16895601 -REACT_APP_WEB3_FALLBACK_XDAI_URL=wss://rpc.gnosischain.com/wss -REACT_APP_WEB3_FALLBACK_XDAI_HTTPS_URL=https://rpc.gnosis.gateway.fm - -REACT_APP_KLEROS_LIQUID_GOERLI_ADDRESS='0x1128eD55ab2d796fa92D2F8E1f336d745354a77A' -REACT_APP_KLEROS_LIQUID_EXTRA_VIEWS_GOERLI_ADDRESS='0x36780f8011f07683aacA36d5faC42AeBeAA96Cfe' -REACT_APP_PINAKION_GOERLI_ADDRESS='0xA3B02bA6E10F55fb177637917B1b472da0110CcC' -REACT_APP_POLICY_REGISTRY_GOERLI_ADDRESS='0x28c8A3A2E3c8Cd3F795DB83764316a1129a069bA' -REACT_APP_TOKEN_BRIDGE_GOERLI_ADDRESS='0x00147c84f13764dCDAbAF1cbAe622fa6f6839085' -REACT_APP_KLEROS_LIQUID_GOERLI_BLOCK_NUMBER=5893969 -REACT_APP_WEB3_FALLBACK_GOERLI_URL='wss://goerli.infura.io/ws/v3/f1c9535b961648f7bd18209b00e11163' -REACT_APP_WEB3_FALLBACK_GOERLI_HTTPS_URL='https://rpc.ankr.com/eth_goerli' - -REACT_APP_KLEROS_LIQUID_CHIADO_ADDRESS='0xD8798DfaE8194D6B4CD6e2Da6187ae4209d06f27' -REACT_APP_KLEROS_LIQUID_EXTRA_VIEWS_CHIADO_ADDRESS='0xfDD698D6c9393d08c5DaD8488AF6d08c151e4860' -REACT_APP_PINAKION_CHIADO_ADDRESS='0xA353A70c8B3C7d38A869436d4CDeBe8e5611681a' -REACT_APP_POLICY_REGISTRY_CHIADO_ADDRESS='0x53FC70FE1EC3a60f8939A62aBCc61bf1A57938D7' -REACT_APP_TOKEN_BRIDGE_CHIADO_ADDRESS='0x09D549a48AC52F3f9945E7de6402c609c92aa2E1' -REACT_APP_KLEROS_LIQUID_CHIADO_BLOCK_NUMBER=1165867 -REACT_APP_WEB3_FALLBACK_CHIADO_URL='wss://rpc.chiadochain.net/wss' -REACT_APP_WEB3_FALLBACK_CHIADO_HTTPS_URL='https://rpc.chiadochain.net' - -REACT_APP_KLEROS_LIQUID_SEPOLIA_ADDRESS='0x90992fb4E15ce0C59aEFfb376460Fda4Ee19C879' -REACT_APP_KLEROS_LIQUID_EXTRA_VIEWS_SEPOLIA_ADDRESS='0x5562Ac605764DC4039fb6aB56a74f7321396Cdf2' -REACT_APP_PINAKION_SEPOLIA_ADDRESS='0xA1eE4D32bdBcA69cdb445D66fAA3804aFFa24bFE' -REACT_APP_POLICY_REGISTRY_SEPOLIA_ADDRESS='0x88Fb25D399310c07d35cB9091b8346d8b1893aa5' -REACT_APP_KLEROS_LIQUID_SEPOLIA_BLOCK_NUMBER=3635742 -REACT_APP_WEB3_FALLBACK_SEPOLIA_URL='wss://sepolia.infura.io/ws/v3/f1c9535b961648f7bd18209b00e11163' -REACT_APP_WEB3_FALLBACK_SEPOLIA_HTTPS_URL='https://eth-sepolia.g.alchemy.com/v2/demo' - -REACT_APP_WEB3_FALLBACK_POLYGON_HTTPS_URL='https://polygon-mainnet.g.alchemy.com/v2/Y2IRJuoY0G-LAkHTqyXdVetLFm4R2NZT' -REACT_APP_WEB3_FALLBACK_MUMBAI_HTTPS_URL='https://polygon-mumbai.g.alchemy.com/v2/demo' diff --git a/.env.development b/.env.development deleted file mode 100644 index f9f1f685..00000000 --- a/.env.development +++ /dev/null @@ -1,3 +0,0 @@ -REACT_APP_USER_SETTINGS_URL=https://hgyxlve79a.execute-api.us-east-2.amazonaws.com/production/user-settings -REACT_APP_JUSTIFICATIONS_URL=https://kleros-api.netlify.app/.netlify/functions -REACT_APP_METAEVIDENCE_URL=https://kleros-api.netlify.app/.netlify/functions/get-dispute-metaevidence diff --git a/.env.example b/.env.example new file mode 100644 index 00000000..dcd01f53 --- /dev/null +++ b/.env.example @@ -0,0 +1,31 @@ +# Backend +REACT_APP_USER_SETTINGS_URL= +REACT_APP_JUSTIFICATIONS_URL=https://kleros-api.netlify.app/.netlify/functions +REACT_APP_METAEVIDENCE_URL=https://kleros-api.netlify.app/.netlify/functions/get-dispute-metaevidence + + +# Mainnet +REACT_APP_WEB3_FALLBACK_MAINNET_URL=wss://... +REACT_APP_WEB3_FALLBACK_MAINNET_HTTPS_URL=https://... + +# Gnosis +REACT_APP_WEB3_FALLBACK_GNOSIS_URL=wss://... +REACT_APP_WEB3_FALLBACK_GNOSIS_HTTPS_URL=https://... + +# Goerli +REACT_APP_WEB3_FALLBACK_GOERLI_URL=wss://... +REACT_APP_WEB3_FALLBACK_GOERLI_HTTPS_URL=https://... + +# Chiado +REACT_APP_WEB3_FALLBACK_CHIADO_URL=wss://... +REACT_APP_WEB3_FALLBACK_CHIADO_HTTPS_URL=https://... + +# Sepolia +REACT_APP_WEB3_FALLBACK_SEPOLIA_URL=wss://... +REACT_APP_WEB3_FALLBACK_SEPOLIA_HTTPS_URL=https://... + +# Polygon +REACT_APP_WEB3_FALLBACK_POLYGON_HTTPS_URL=https://... + +# Mumbai +REACT_APP_WEB3_FALLBACK_MUMBAI_HTTPS_URL=https://... diff --git a/.env.production b/.env.production deleted file mode 100644 index f9f1f685..00000000 --- a/.env.production +++ /dev/null @@ -1,3 +0,0 @@ -REACT_APP_USER_SETTINGS_URL=https://hgyxlve79a.execute-api.us-east-2.amazonaws.com/production/user-settings -REACT_APP_JUSTIFICATIONS_URL=https://kleros-api.netlify.app/.netlify/functions -REACT_APP_METAEVIDENCE_URL=https://kleros-api.netlify.app/.netlify/functions/get-dispute-metaevidence diff --git a/README.md b/README.md index 29614c8c..f4a9fe33 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ The Kleros Court user interface. 3. Configure MetaMask on the Goerli Test Network. 4. Run `yarn` to install dependencies and then `yarn start` to start the dev server. -> To allow view-only mode, you can the REACT_APP_WEB3_FALLBACK_URL variable to a provider of your choice. Example: REACT_APP_WEB3_FALLBACK_URL=wss://mainnet.infura.io/ws/v3/ +> To allow view-only mode, you can the REACT_APP_WEB3_FALLBACK_MAINNET_URL variable to a provider of your choice. Example: REACT_APP_WEB3_FALLBACK_MAINNET_URL=wss://mainnet.infura.io/ws/v3/ ## Other Scripts diff --git a/netlify.toml b/netlify.toml index 3daa1514..9dc84817 100644 --- a/netlify.toml +++ b/netlify.toml @@ -3,68 +3,8 @@ NODE_VERSION='16.20.2' REACT_APP_CONTEXT='staging' - REACT_APP_KLEROS_ADDRESS='0x211f01e59b425253c0a0e9a7bf612605b42ce82c' - REACT_APP_KLEROS_LIQUID_ADDRESS='0x988b3a538b618c7a603e1c11ab82cd16dbe28069' - REACT_APP_KLEROS_LIQUID_EXTRA_VIEWS_ADDRESS='0x2B562ea613ad2f58746935C842d09EB147E1E940' - REACT_APP_PINAKION_ADDRESS='0x93ed3fbe21207ec2e8f2d3c3de6e058cb73bc04d' - REACT_APP_POLICY_REGISTRY_ADDRESS='0xCf1f07713d5193FaE5c1653C9f61953D048BECe4' - REACT_APP_UNISWAP_EXCHANGE_ADDRESS='0xF506828B166de88cA2EDb2A98D960aBba0D2402A' - REACT_APP_TOKEN_BRIDGE_ADDRESS='0x88ad09518695c6c3712AC10a214bE5109a655671' - REACT_APP_DRAW_EVENT_LISTENER_BLOCK_NUMBER='7303699' - REACT_APP_USER_SETTINGS_URL='https://8aoprv935h.execute-api.us-east-2.amazonaws.com/staging/user-settings' - REACT_APP_JUSTIFICATIONS_URL='https://kleros-api.netlify.app/.netlify/functions' - REACT_APP_METAEVIDENCE_URL='https://kleros-api.netlify.app/.netlify/functions/get-dispute-metaevidence' - REACT_APP_APPLICATION_SERVER_KEY='BNqPp3phfZUqu4G1SCkqNuZ_FDL4YuSeAEV97U_G3UbrOuOsTeaI9jHE3QNRJ-O8EH3F2OUdnJJ4ZOhp80FthKU' - REACT_APP_WEB3_FALLBACK_URL='wss://mainnet.infura.io/ws/v3/54fb3d87cd07464591ad2be29a1db32f' - REACT_APP_WEB3_FALLBACK_HTTPS_URL='https://mainnet.infura.io/v3/54fb3d87cd07464591ad2be29a1db32f' - - REACT_APP_KLEROS_LIQUID_GOERLI_ADDRESS='0x1128eD55ab2d796fa92D2F8E1f336d745354a77A' - REACT_APP_KLEROS_LIQUID_EXTRA_VIEWS_GOERLI_ADDRESS='0x36780f8011f07683aacA36d5faC42AeBeAA96Cfe' - REACT_APP_PINAKION_GOERLI_ADDRESS='0xA3B02bA6E10F55fb177637917B1b472da0110CcC' - REACT_APP_POLICY_REGISTRY_GOERLI_ADDRESS='0x28c8A3A2E3c8Cd3F795DB83764316a1129a069bA' - REACT_APP_TOKEN_BRIDGE_GOERLI_ADDRESS='0x00147c84f13764dCDAbAF1cbAe622fa6f6839085' - REACT_APP_KLEROS_LIQUID_GOERLI_BLOCK_NUMBER='5893969' - REACT_APP_WEB3_FALLBACK_GOERLI_URL='wss://goerli.infura.io/ws/v3/f1c9535b961648f7bd18209b00e11163' - REACT_APP_WEB3_FALLBACK_GOERLI_HTTPS_URL='https://rpc.ankr.com/eth_goerli' - - REACT_APP_KLEROS_LIQUID_CHIADO_ADDRESS='0xD8798DfaE8194D6B4CD6e2Da6187ae4209d06f27' - REACT_APP_KLEROS_LIQUID_EXTRA_VIEWS_CHIADO_ADDRESS='0xfDD698D6c9393d08c5DaD8488AF6d08c151e4860' - REACT_APP_PINAKION_CHIADO_ADDRESS='0xA353A70c8B3C7d38A869436d4CDeBe8e5611681a' - REACT_APP_POLICY_REGISTRY_CHIADO_ADDRESS='0x53FC70FE1EC3a60f8939A62aBCc61bf1A57938D7' - REACT_APP_TOKEN_BRIDGE_CHIADO_ADDRESS='0x09D549a48AC52F3f9945E7de6402c609c92aa2E1' - REACT_APP_KLEROS_LIQUID_CHIADO_BLOCK_NUMBER='1165867' - REACT_APP_WEB3_FALLBACK_CHIADO_URL='wss://rpc.chiado.gnosis.gateway.fm/ws' - REACT_APP_WEB3_FALLBACK_CHIADO_HTTPS_URL='https://rpc.chiado.gnosis.gateway.fm' - - REACT_APP_KLEROS_LIQUID_SEPOLIA_ADDRESS='0x90992fb4E15ce0C59aEFfb376460Fda4Ee19C879' - REACT_APP_KLEROS_LIQUID_EXTRA_VIEWS_SEPOLIA_ADDRESS='0x5562Ac605764DC4039fb6aB56a74f7321396Cdf2' - REACT_APP_PINAKION_SEPOLIA_ADDRESS='0xA1eE4D32bdBcA69cdb445D66fAA3804aFFa24bFE' - REACT_APP_POLICY_REGISTRY_SEPOLIA_ADDRESS='0x88Fb25D399310c07d35cB9091b8346d8b1893aa5' - REACT_APP_KLEROS_LIQUID_SEPOLIA_BLOCK_NUMBER='3635742' - REACT_APP_WEB3_FALLBACK_SEPOLIA_URL='wss://sepolia.infura.io/ws/v3/f1c9535b961648f7bd18209b00e11163' - REACT_APP_WEB3_FALLBACK_SEPOLIA_HTTPS_URL='https://eth-sepolia.g.alchemy.com/v2/demo' - - REACT_APP_KLEROS_XDAI_ADDRESS='0x0000000000000000000000000000000000000000' - REACT_APP_KLEROS_LIQUID_XDAI_ADDRESS='0x9C1dA9A04925bDfDedf0f6421bC7EEa8305F9002' - REACT_APP_KLEROS_LIQUID_EXTRA_VIEWS_XDAI_ADDRESS='0x1c0D5A1fF532715a58d0456ef10532e3eb6ec5de' - REACT_APP_PINAKION_XDAI_ADDRESS='0xcb3231aBA3b451343e0Fddfc45883c842f223846' - REACT_APP_RAW_PINAKION_XDAI_ADDRESS='0x37b60f4e9a31a64ccc0024dce7d0fd07eaa0f7b3' - REACT_APP_POLICY_REGISTRY_XDAI_ADDRESS='0x9d494768936b6bDaabc46733b8D53A937A6c6D7e' - REACT_APP_UNISWAP_V2_ROUTER_02_XDAI_ADDRESS='0x0000000000000000000000000000000000000000' - REACT_APP_UNISWAP_V2_FACTORY_XDAI_ADDRESS='0x0000000000000000000000000000000000000000' - REACT_APP_TOKEN_BRIDGE_XDAI_ADDRESS='0xf6A78083ca3e2a662D6dd1703c939c8aCE2e268d' - REACT_APP_KLEROS_LIQUID_XDAI_BLOCK_NUMBER='16895601' - REACT_APP_WEB3_FALLBACK_XDAI_URL='wss://rpc.gnosis.gateway.fm/ws' - REACT_APP_WEB3_FALLBACK_XDAI_HTTPS_URL='https://rpc.gnosis.gateway.fm' - - REACT_APP_WEB3_FALLBACK_POLYGON_HTTPS_URL='https://polygon-mainnet.g.alchemy.com/v2/Y2IRJuoY0G-LAkHTqyXdVetLFm4R2NZT' - REACT_APP_WEB3_FALLBACK_MUMBAI_HTTPS_URL='https://polygon-mumbai.g.alchemy.com/v2/demo' - [context.production.environment] REACT_APP_CONTEXT='production' - REACT_APP_USER_SETTINGS_URL='https://hgyxlve79a.execute-api.us-east-2.amazonaws.com/production/user-settings' - REACT_APP_JUSTIFICATIONS_URL='https://kleros-api.netlify.app/.netlify/functions' - REACT_APP_METAEVIDENCE_URL='https://kleros-api.netlify.app/.netlify/functions/get-dispute-metaevidence' [[redirects]] from = "/*" diff --git a/src/api/side-chain/chain-params.js b/src/api/side-chain/chain-params.js index 67780117..faaf757c 100644 --- a/src/api/side-chain/chain-params.js +++ b/src/api/side-chain/chain-params.js @@ -1,7 +1,9 @@ import logoXPNK from "../../assets/images/xPNK.png"; import logoStPNK from "../../assets/images/stPNK.png"; - +import mainnet from "../../assets/deployments/mainnet.json"; +import gnosis from "../../assets/deployments/gnosis.json"; import { getBaseUrl } from "../../helpers/block-explorer"; +import { GNOSIS, getFallbackHttpsUrl } from "../../helpers/networks"; export const Tokens = { PNK: "PNK", @@ -10,24 +12,24 @@ export const Tokens = { const supportedSideChains = { // xDai - 100: { - chainId: 100, + [GNOSIS]: { + chainId: GNOSIS, chainName: "Gnosis Chain", nativeCurrency: { name: "xDAI", symbol: "xDAI", decimals: 18 }, - rpcUrls: [ensureEnv("REACT_APP_WEB3_FALLBACK_XDAI_HTTPS_URL")], + rpcUrls: getFallbackHttpsUrl(GNOSIS), blockExplorerUrls: [getBaseUrl(100)], - bridgeAppUrl: `https://omni.gnosischain.com/bridge?from=1&to=100&token=${ensureEnv("REACT_APP_PINAKION_ADDRESS")}`, + bridgeAppUrl: `https://omni.gnosischain.com/bridge?from=1&to=100&token=${mainnet.pinakionAddress}`, bridgeAppHistoryUrl: "https://omni.gnosischain.com/history", mainChainId: 1, tokens: { [Tokens.PNK]: { - address: ensureEnv("REACT_APP_RAW_PINAKION_XDAI_ADDRESS"), + address: gnosis.rawPinakionAddress, symbol: "PNK", decimals: 18, image: `${window.location.origin}${logoXPNK}`, }, [Tokens.stPNK]: { - address: ensureEnv("REACT_APP_PINAKION_XDAI_ADDRESS"), + address: gnosis.pinakionAddress, symbol: "stPNK", decimals: 18, image: `${window.location.origin}${logoStPNK}`, @@ -88,13 +90,3 @@ const mainChainIdToSideChainParams = Object.values(supportedSideChains).reduce( (acc, chainParams) => Object.assign(acc, { [chainParams.mainChainId]: chainParams }), {} ); - -function ensureEnv(key, msg = `process.env.${key} is not defined`) { - const value = process.env[key]; - - if (value === "" || value === undefined || value === null) { - throw new Error(msg); - } - - return value; -} diff --git a/src/api/side-chain/create-side-chain-api.js b/src/api/side-chain/create-side-chain-api.js index 361ef5b3..0cf7dad7 100644 --- a/src/api/side-chain/create-side-chain-api.js +++ b/src/api/side-chain/create-side-chain-api.js @@ -4,6 +4,7 @@ import KlerosLiquid from "../../assets/contracts/kleros-liquid.json"; import TokenBridgeXDai from "../../assets/contracts/token-bridge-xdai.json"; import WrappedPinakion from "../../assets/contracts/wrapped-pinakion.json"; import XPinakion from "../../assets/contracts/x-pinakion.json"; +import gnosis from "../../assets/deployments/gnosis.json"; import { getCounterPartyChainId, isSupportedSideChain } from "./chain-params"; import * as xDai from "./xdai-api"; @@ -22,14 +23,11 @@ export default async function createSideChainApi(provider) { const xDaiParametersFactory = (web3) => { const contracts = { - tokenBridge: new web3.eth.Contract(TokenBridgeXDai.abi, ensureEnv("REACT_APP_TOKEN_BRIDGE_XDAI_ADDRESS")), - wrappedPinakion: new web3.eth.Contract(WrappedPinakion.abi, ensureEnv("REACT_APP_PINAKION_XDAI_ADDRESS")), - xPinakion: new web3.eth.Contract(XPinakion.abi, ensureEnv("REACT_APP_RAW_PINAKION_XDAI_ADDRESS")), - klerosLiquidExtraViews: new web3.eth.Contract( - KlerosLiquidExtraViews.abi, - ensureEnv("REACT_APP_KLEROS_LIQUID_EXTRA_VIEWS_XDAI_ADDRESS") - ), - klerosLiquid: new web3.eth.Contract(KlerosLiquid.abi, ensureEnv("REACT_APP_KLEROS_LIQUID_XDAI_ADDRESS")), + tokenBridge: new web3.eth.Contract(TokenBridgeXDai.abi, gnosis.tokenBridgeAddress), + wrappedPinakion: new web3.eth.Contract(WrappedPinakion.abi, gnosis.pinakionAddress), + xPinakion: new web3.eth.Contract(XPinakion.abi, gnosis.rawPinakionAddress), + klerosLiquidExtraViews: new web3.eth.Contract(KlerosLiquidExtraViews.abi, gnosis.klerosLiquidExtraViewsAddress), + klerosLiquid: new web3.eth.Contract(KlerosLiquid.abi, gnosis.klerosLiquidAddress), }; contracts.tokenBridge.options.handleRevert = true; @@ -43,13 +41,3 @@ const xDaiParametersFactory = (web3) => { destinationChainId: getCounterPartyChainId(100), }; }; - -function ensureEnv(key, msg = `process.env.${key} is not defined`) { - const value = process.env[key]; - - if (value === "" || value === undefined || value === null) { - throw new Error(msg); - } - - return value; -} diff --git a/src/assets/deployments/chiado.json b/src/assets/deployments/chiado.json new file mode 100644 index 00000000..308d3cec --- /dev/null +++ b/src/assets/deployments/chiado.json @@ -0,0 +1,8 @@ +{ + "klerosLiquidAddress": "0xD8798DfaE8194D6B4CD6e2Da6187ae4209d06f27", + "klerosLiquidExtraViewsAddress": "0xfDD698D6c9393d08c5DaD8488AF6d08c151e4860", + "pinakionAddress": "0xA353A70c8B3C7d38A869436d4CDeBe8e5611681a", + "policyRegistryAddress": "0x53FC70FE1EC3a60f8939A62aBCc61bf1A57938D7", + "tokenBridgeAddress": "0x09D549a48AC52F3f9945E7de6402c609c92aa2E1", + "klerosLiquidBlockNumber": 1165867 +} diff --git a/src/assets/deployments/gnosis.json b/src/assets/deployments/gnosis.json new file mode 100644 index 00000000..7fa267fb --- /dev/null +++ b/src/assets/deployments/gnosis.json @@ -0,0 +1,12 @@ +{ + "klerosAddress": "0x0000000000000000000000000000000000000000", + "klerosLiquidAddress": "0x9C1dA9A04925bDfDedf0f6421bC7EEa8305F9002", + "klerosLiquidExtraViewsAddress": "0x1c0D5A1fF532715a58d0456ef10532e3eb6ec5de", + "pinakionAddress": "0xcb3231aBA3b451343e0Fddfc45883c842f223846", + "rawPinakionAddress": "0x37b60f4e9a31a64ccc0024dce7d0fd07eaa0f7b3", + "policyRegistryAddress": "0x9d494768936b6bDaabc46733b8D53A937A6c6D7e", + "uniswapV2Router02Address": "0x0000000000000000000000000000000000000000", + "uniswapV2FactoryAddress": "0x0000000000000000000000000000000000000000", + "tokenBridgeAddress": "0xf6A78083ca3e2a662D6dd1703c939c8aCE2e268d", + "klerosLiquidBlockNumber": 16895601 +} diff --git a/src/assets/deployments/goerli.json b/src/assets/deployments/goerli.json new file mode 100644 index 00000000..eeba69fb --- /dev/null +++ b/src/assets/deployments/goerli.json @@ -0,0 +1,8 @@ +{ + "klerosLiquidAddress": "0x1128eD55ab2d796fa92D2F8E1f336d745354a77A", + "klerosLiquidExtraViewsAddress": "0x36780f8011f07683aacA36d5faC42AeBeAA96Cfe", + "pinakionAddress": "0xA3B02bA6E10F55fb177637917B1b472da0110CcC", + "policyRegistryAddress": "0x28c8A3A2E3c8Cd3F795DB83764316a1129a069bA", + "tokenBridgeAddress": "0x00147c84f13764dCDAbAF1cbAe622fa6f6839085", + "klerosLiquidBlockNumber": 5893969 +} diff --git a/src/assets/deployments/mainnet.json b/src/assets/deployments/mainnet.json new file mode 100644 index 00000000..028c016e --- /dev/null +++ b/src/assets/deployments/mainnet.json @@ -0,0 +1,11 @@ +{ + "klerosAddress": "0x211f01e59b425253c0a0e9a7bf612605b42ce82c", + "klerosLiquidAddress": "0x988b3a538b618c7a603e1c11ab82cd16dbe28069", + "klerosLiquidExtraViewsAddress": "0x2B562ea613ad2f58746935C842d09EB147E1E940", + "pinakionAddress": "0x93ed3fbe21207ec2e8f2d3c3de6e058cb73bc04d", + "policyRegistryAddress": "0xCf1f07713d5193FaE5c1653C9f61953D048BECe4", + "uniswapV2Router02Address": "0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D", + "uniswapV2FactoryAddress": "0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f", + "tokenBridgeAddress": "0x88ad09518695c6c3712AC10a214bE5109a655671", + "klerosLiquidBlockNumber": 7303699 +} diff --git a/src/assets/deployments/sepolia.json b/src/assets/deployments/sepolia.json new file mode 100644 index 00000000..0b69b83f --- /dev/null +++ b/src/assets/deployments/sepolia.json @@ -0,0 +1,7 @@ +{ + "klerosLiquidAddress": "0x90992fb4E15ce0C59aEFfb376460Fda4Ee19C879", + "klerosLiquidExtraViewsAddress": "0x5562Ac605764DC4039fb6aB56a74f7321396Cdf2", + "pinakionAddress": "0xA1eE4D32bdBcA69cdb445D66fAA3804aFFa24bFE", + "policyRegistryAddress": "0x88Fb25D399310c07d35cB9091b8346d8b1893aa5", + "klerosLiquidBlockNumber": 3635742 +} diff --git a/src/bootstrap/drizzle.js b/src/bootstrap/drizzle.js index ed790b5b..479ef2df 100644 --- a/src/bootstrap/drizzle.js +++ b/src/bootstrap/drizzle.js @@ -7,85 +7,47 @@ import Pinakion from "../assets/contracts/pinakion.json"; import PolicyRegistry from "../assets/contracts/policy-registry.json"; import UniswapV2Factory from "../assets/contracts/uniswap-v2-factory.json"; import UniswapV2Router02 from "../assets/contracts/uniswap-v2-router-02.json"; +import { MAINNET, GOERLI, GNOSIS, CHIADO, SEPOLIA, getFallbackUrl } from "../helpers/networks"; +import { + oldKlerosAddresses, + klerosLiquidAddresses, + klerosLiquidExtraViewsAddresses, + pinakionAddresses, + policyRegistryAddresses, + uniswapV2FactoryAddresses, + uniswapV2Router02Addresses, +} from "../helpers/deployments"; const defaultOptions = { - networkWhitelist: [ - 1, // Mainnet - 5, // Görli - 100, // xDAI - 10200, // Chiado - 11155111, // Sepolia - ], + networkWhitelist: [MAINNET, GOERLI, GNOSIS, CHIADO, SEPOLIA], contracts: [ { ...Kleros, - networks: { - 1: { address: process.env.REACT_APP_KLEROS_ADDRESS }, - 5: { address: "0x00000000219ab540356cbb839cbe05303d7705fa" }, // Dummy address for coping with Drizzle errors. - 100: { address: process.env.REACT_APP_KLEROS_XDAI_ADDRESS }, - 10200: { address: "0x00000000219ab540356cbb839cbe05303d7705fa" }, // Dummy address for coping with Drizzle errors. - 11155111: { address: "0x00000000219ab540356cbb839cbe05303d7705fa" }, // Dummy address for coping with Drizzle errors. - }, + networks: oldKlerosAddresses, }, { ...KlerosLiquid, - networks: { - 1: { address: process.env.REACT_APP_KLEROS_LIQUID_ADDRESS }, - 5: { address: process.env.REACT_APP_KLEROS_LIQUID_GOERLI_ADDRESS }, - 100: { address: process.env.REACT_APP_KLEROS_LIQUID_XDAI_ADDRESS }, - 10200: { address: process.env.REACT_APP_KLEROS_LIQUID_CHIADO_ADDRESS }, - 11155111: { address: process.env.REACT_APP_KLEROS_LIQUID_SEPOLIA_ADDRESS }, - }, + networks: klerosLiquidAddresses, }, { ...KlerosLiquidExtraViews, - networks: { - 1: { address: process.env.REACT_APP_KLEROS_LIQUID_EXTRA_VIEWS_ADDRESS }, - 5: { address: process.env.REACT_APP_KLEROS_LIQUID_EXTRA_VIEWS_GOERLI_ADDRESS }, - 100: { address: process.env.REACT_APP_KLEROS_LIQUID_EXTRA_VIEWS_XDAI_ADDRESS }, - 10200: { address: process.env.REACT_APP_KLEROS_LIQUID_EXTRA_VIEWS_CHIADO_ADDRESS }, - 11155111: { address: process.env.REACT_APP_KLEROS_LIQUID_EXTRA_VIEWS_SEPOLIA_ADDRESS }, - }, + networks: klerosLiquidExtraViewsAddresses, }, { ...Pinakion, - networks: { - 1: { address: process.env.REACT_APP_PINAKION_ADDRESS }, - 5: { address: process.env.REACT_APP_PINAKION_GOERLI_ADDRESS }, - 100: { address: process.env.REACT_APP_PINAKION_XDAI_ADDRESS }, - 10200: { address: process.env.REACT_APP_PINAKION_CHIADO_ADDRESS }, - 11155111: { address: process.env.REACT_APP_PINAKION_SEPOLIA_ADDRESS }, - }, + networks: pinakionAddresses, }, { ...PolicyRegistry, - networks: { - 1: { address: process.env.REACT_APP_POLICY_REGISTRY_ADDRESS }, - 5: { address: process.env.REACT_APP_POLICY_REGISTRY_GOERLI_ADDRESS }, - 100: { address: process.env.REACT_APP_POLICY_REGISTRY_XDAI_ADDRESS }, - 10200: { address: process.env.REACT_APP_POLICY_REGISTRY_CHIADO_ADDRESS }, - 11155111: { address: process.env.REACT_APP_POLICY_REGISTRY_SEPOLIA_ADDRESS }, - }, + networks: policyRegistryAddresses, }, { ...UniswapV2Factory, - networks: { - 1: { address: process.env.REACT_APP_UNISWAP_V2_FACTORY_ADDRESS }, - 5: { address: "0x00000000219ab540356cbb839cbe05303d7705fa" }, // Dummy address for coping with Drizzle errors. - 100: { address: process.env.REACT_APP_UNISWAP_V2_FACTORY_XDAI_ADDRESS }, - 10200: { address: "0x00000000219ab540356cbb839cbe05303d7705fa" }, // Dummy address for coping with Drizzle errors. - 11155111: { address: "0x00000000219ab540356cbb839cbe05303d7705fa" }, // Dummy address for coping with Drizzle errors. - }, + networks: uniswapV2FactoryAddresses, }, { ...UniswapV2Router02, - networks: { - 1: { address: process.env.REACT_APP_UNISWAP_V2_ROUTER_02_ADDRESS }, - 5: { address: "0x00000000219ab540356cbb839cbe05303d7705fa" }, // Dummy address for coping with Drizzle errors. - 100: { address: process.env.REACT_APP_UNISWAP_V2_ROUTER_02_XDAI_ADDRESS }, - 10200: { address: "0x00000000219ab540356cbb839cbe05303d7705fa" }, // Dummy address for coping with Drizzle errors. - 11155111: { address: "0x00000000219ab540356cbb839cbe05303d7705fa" }, // Dummy address for coping with Drizzle errors. - }, + networks: uniswapV2Router02Addresses, }, ], polls: { @@ -94,20 +56,12 @@ const defaultOptions = { }, }; -const chainIdToFallbackUrl = { - 1: process.env.REACT_APP_WEB3_FALLBACK_URL, - 5: process.env.REACT_APP_WEB3_FALLBACK_GOERLI_URL, - 100: process.env.REACT_APP_WEB3_FALLBACK_XDAI_URL, - 10200: process.env.REACT_APP_WEB3_FALLBACK_CHIADO_URL, - 11155111: process.env.REACT_APP_WEB3_FALLBACK_SEPOLIA_URL, -}; - const { DrizzleProvider, Initializer, useDrizzle } = drizzleReactHooks; export { DrizzleProvider, Initializer, useDrizzle }; function createDrizzle({ fallbackChainId }) { - const fallbackUrl = chainIdToFallbackUrl[fallbackChainId]; + const fallbackUrl = getFallbackUrl(fallbackChainId); const optionsWeb3Mixin = fallbackUrl ? { web3: { @@ -142,7 +96,7 @@ function createDrizzle({ fallbackChainId }) { * Users with web3 support will not be affected. */ const STORAGE_KEY = "@@kleros/court/fallback-chain-id"; -const DEFAULT_FALLBACK_CHAIN_ID = 1; +const DEFAULT_FALLBACK_CHAIN_ID = MAINNET; const extractFromQueryString = (param, search) => { if (typeof URLSearchParams !== "function") { diff --git a/src/bootstrap/use-notifications.js b/src/bootstrap/use-notifications.js index 0b00e55d..e6e195f6 100644 --- a/src/bootstrap/use-notifications.js +++ b/src/bootstrap/use-notifications.js @@ -1,52 +1,44 @@ import { useCallback, useEffect, useMemo, useState } from "react"; import KlerosLiquid from "../assets/contracts/kleros-liquid.json"; +import { getKlerosLiquidBlockNumber, getKlerosLiquidAddress } from "../helpers/deployments"; +import { MAINNET, GOERLI, GNOSIS, CHIADO, SEPOLIA, getUrl } from "../helpers/networks"; import Web3 from "web3"; const networkIDData = { - 1: { + [MAINNET]: { name: "", - provider: process.env.REACT_APP_WEB3_FALLBACK_HTTPS_URL, + provider: getUrl(MAINNET), nativeToken: "ETH", pnkToken: "PNK", - fromBlock: process.env.REACT_APP_KLEROS_LIQUID_BLOCK_NUMBER - ? Number(process.env.REACT_APP_KLEROS_LIQUID_BLOCK_NUMBER) - : 0, + fromBlock: getKlerosLiquidBlockNumber(1), }, - 5: { + [GOERLI]: { name: "_GOERLI", - provider: "https://goerli.infura.io/v3/261bdc527a49430b9b31d28ba9fecfde", + provider: getUrl(GOERLI), nativeToken: "ETH", pnkToken: "PNK", - fromBlock: process.env.REACT_APP_KLEROS_LIQUID_GOERLI_BLOCK_NUMBER - ? Number(process.env.REACT_APP_KLEROS_LIQUID_GOERLI_BLOCK_NUMBER) - : 0, + fromBlock: getKlerosLiquidBlockNumber(5), }, - 100: { + [GNOSIS]: { name: "_XDAI", - provider: "https://rpc.gnosischain.com", + provider: getUrl(GNOSIS), nativeToken: "xDAI", pnkToken: "stPNK", - fromBlock: process.env.REACT_APP_KLEROS_LIQUID_XDAI_BLOCK_NUMBER - ? Number(process.env.REACT_APP_KLEROS_LIQUID_XDAI_BLOCK_NUMBER) - : 0, + fromBlock: getKlerosLiquidBlockNumber(100), }, - 10200: { + [CHIADO]: { name: "_CHIADO", - provider: "https://rpc.chiadochain.net", + provider: getUrl(CHIADO), nativeToken: "xDAI", pnkToken: "PNK", - fromBlock: process.env.REACT_APP_KLEROS_LIQUID_CHIADO_BLOCK_NUMBER - ? Number(process.env.REACT_APP_KLEROS_LIQUID_CHIADO_BLOCK_NUMBER) - : 0, + fromBlock: getKlerosLiquidBlockNumber(10200), }, - 11155111: { + [SEPOLIA]: { name: "_SEPOLIA", - provider: "https://sepolia.infura.io/v3/498250ed13a94a6bbdd646ee97e9f64c", + provider: getUrl(SEPOLIA), nativeToken: "ETH", pnkToken: "PNK", - fromBlock: process.env.REACT_APP_KLEROS_LIQUID_SEPOLIA_BLOCK_NUMBER - ? Number(process.env.REACT_APP_KLEROS_LIQUID_SEPOLIA_BLOCK_NUMBER) - : 0, + fromBlock: getKlerosLiquidBlockNumber(11155111), }, }; @@ -138,10 +130,7 @@ export default (networkID, onNewNotifications) => { } const web3 = new Web3(networkIDData[networkID].provider); - const klerosLiquid = new web3.eth.Contract( - KlerosLiquid.abi, - process.env[`REACT_APP_KLEROS_LIQUID${networkIDData[networkID].name}_ADDRESS`] - ); + const klerosLiquid = new web3.eth.Contract(KlerosLiquid.abi, getKlerosLiquidAddress(networkID)); let mounted = true; web3.eth.getBlockNumber().then((blockNumber) => { const fromBlock = blockNumber - 256; diff --git a/src/bootstrap/web3.js b/src/bootstrap/web3.js index 0871d706..da37725c 100644 --- a/src/bootstrap/web3.js +++ b/src/bootstrap/web3.js @@ -1,30 +1,21 @@ import Web3 from "web3"; +import { MAINNET, getFallbackHttpsUrl, getUrl } from "../helpers/networks"; let web3; if (typeof window !== "undefined" && typeof window.ethereum !== "undefined") { web3 = new Web3(window.ethereum.currentProvider); -} else if (process.env.REACT_APP_WEB3_FALLBACK_HTTPS_URL || process.env.REACT_APP_WEB3_FALLBACK_URL) { +} else if (getUrl(MAINNET)) { // Fallback provider. - web3 = new Web3(process.env.REACT_APP_WEB3_FALLBACK_HTTPS_URL ?? process.env.REACT_APP_WEB3_FALLBACK_URL); + web3 = new Web3(getUrl(MAINNET)); } else { throw new Error("No fallback Web3 URL provided!"); } export default web3; -const chainIdToRpcEndpoint = { - 1: process.env.REACT_APP_WEB3_FALLBACK_HTTPS_URL, - 5: process.env.REACT_APP_WEB3_FALLBACK_GOERLI_HTTPS_URL, - 100: process.env.REACT_APP_WEB3_FALLBACK_XDAI_HTTPS_URL, - 137: process.env.REACT_APP_WEB3_FALLBACK_POLYGON_HTTPS_URL, - 10200: process.env.REACT_APP_WEB3_FALLBACK_CHIADO_HTTPS_URL, - 80001: process.env.REACT_APP_WEB3_FALLBACK_MUMBAI_HTTPS_URL, - 11155111: process.env.REACT_APP_WEB3_FALLBACK_SEPOLIA_HTTPS_URL, -}; - export function getReadOnlyRpcUrl(chainId) { - const url = chainIdToRpcEndpoint[chainId]; + const url = getFallbackHttpsUrl(chainId); if (!url) { throw new Error(`Unsupported chain ID: ${chainId}`); } diff --git a/src/containers/convert-pnk/wihdraw-stpnk-card.js b/src/containers/convert-pnk/wihdraw-stpnk-card.js index 9aa1a459..0c9d10cd 100644 --- a/src/containers/convert-pnk/wihdraw-stpnk-card.js +++ b/src/containers/convert-pnk/wihdraw-stpnk-card.js @@ -4,6 +4,7 @@ import Web3 from "web3"; import { useSideChainApi } from "../../api/side-chain"; import { Card, Button, Form, Input } from "antd"; import stPNKAbi from "../../assets/contracts/wrapped-pinakion.json"; +import gnosis from "../../assets/deployments/gnosis.json"; import { getTokenSymbol } from "../../helpers/get-token-symbol"; import { drizzleReactHooks } from "@drizzle/react-plugin"; import { VIEW_ONLY_ADDRESS } from "../../bootstrap/dataloader"; @@ -138,7 +139,7 @@ const WithdrawStPnkForm = Form.create()(({ form, maxAvailable, isSubmitting, dis console.debug("Form validation error:", err); return; } - const stPNKaddress = chainId === 100 && process.env.REACT_APP_PINAKION_XDAI_ADDRESS; + const stPNKaddress = chainId === 100 && gnosis.pinakionAddress; if (stPNKaddress) { const stPNK = new drizzle.web3.eth.Contract(stPNKAbi.abi, stPNKaddress); const amountInWei = toBN(toWei(values.amount)); diff --git a/src/helpers/block-numbers.js b/src/helpers/block-numbers.js deleted file mode 100644 index e593c3e1..00000000 --- a/src/helpers/block-numbers.js +++ /dev/null @@ -1,9 +0,0 @@ -const KlerosLiquidBlockNumbers = { - 1: process.env.REACT_APP_KLEROS_LIQUID_BLOCK_NUMBER, - 5: process.env.REACT_APP_KLEROS_LIQUID_GOERLI_BLOCK_NUMBER, - 100: process.env.REACT_APP_KLEROS_LIQUID_XDAI_BLOCK_NUMBER, - 10200: process.env.REACT_APP_KLEROS_LIQUID_CHIADO_BLOCK_NUMBER, - 11155111: process.env.REACT_APP_KLEROS_LIQUID_SEPOLIA_BLOCK_NUMBER, -}; - -export const getKlerosLiquidBlockNumber = (chainId) => KlerosLiquidBlockNumbers[chainId]; diff --git a/src/helpers/deployments.js b/src/helpers/deployments.js new file mode 100644 index 00000000..ce249ca0 --- /dev/null +++ b/src/helpers/deployments.js @@ -0,0 +1,81 @@ +import { MAINNET, GOERLI, GNOSIS, CHIADO, SEPOLIA } from "./networks"; +import mainnet from "../assets/deployments/mainnet.json"; +import gnosis from "../assets/deployments/gnosis.json"; +import goerli from "../assets/deployments/goerli.json"; +import sepolia from "../assets/deployments/sepolia.json"; +import chiado from "../assets/deployments/chiado.json"; + +const DUMMY_ADDRESS = "0x00000000219ab540356cbb839cbe05303d7705fa"; // Dummy address for coping with Drizzle errors. + +export const KlerosLiquidBlockNumbers = { + 1: mainnet.klerosLiquidBlockNumber, + 5: goerli.klerosLiquidBlockNumber, + 100: gnosis.klerosLiquidBlockNumber, + 10200: chiado.klerosLiquidBlockNumber, + 11155111: sepolia.klerosLiquidBlockNumber, +}; + +export const oldKlerosAddresses = { + [MAINNET]: { address: mainnet.klerosAddress }, + [GOERLI]: { address: DUMMY_ADDRESS }, + [GNOSIS]: { address: gnosis.klerosAddress }, + [CHIADO]: { address: DUMMY_ADDRESS }, + [SEPOLIA]: { address: DUMMY_ADDRESS }, +}; + +export const klerosLiquidAddresses = { + [MAINNET]: { address: mainnet.klerosLiquidAddress }, + [GOERLI]: { address: goerli.klerosLiquidAddress }, + [GNOSIS]: { address: gnosis.klerosLiquidAddress }, + [CHIADO]: { address: chiado.klerosLiquidAddress }, + [SEPOLIA]: { address: sepolia.klerosLiquidAddress }, +}; + +export const klerosLiquidExtraViewsAddresses = { + [MAINNET]: { address: mainnet.klerosLiquidExtraViewsAddress }, + [GOERLI]: { address: goerli.klerosLiquidExtraViewsAddress }, + [GNOSIS]: { address: gnosis.klerosLiquidExtraViewsAddress }, + [CHIADO]: { address: chiado.klerosLiquidExtraViewsAddress }, + [SEPOLIA]: { address: sepolia.klerosLiquidExtraViewsAddress }, +}; + +export const pinakionAddresses = { + [MAINNET]: { address: mainnet.pinakionAddress }, + [GOERLI]: { address: goerli.pinakionAddress }, + [GNOSIS]: { address: gnosis.pinakionAddress }, + [CHIADO]: { address: chiado.pinakionAddress }, + [SEPOLIA]: { address: sepolia.pinakionAddress }, +}; + +export const policyRegistryAddresses = { + [MAINNET]: { address: mainnet.policyRegistryAddress }, + [GOERLI]: { address: goerli.policyRegistryAddress }, + [GNOSIS]: { address: gnosis.policyRegistryAddress }, + [CHIADO]: { address: chiado.policyRegistryAddress }, + [SEPOLIA]: { address: sepolia.policyRegistryAddress }, +}; + +export const uniswapV2FactoryAddresses = { + [MAINNET]: { address: mainnet.uniswapV2FactoryAddress }, + [GOERLI]: { address: DUMMY_ADDRESS }, + [GNOSIS]: { address: gnosis.uniswapV2FactoryAddress }, + [CHIADO]: { address: DUMMY_ADDRESS }, + [SEPOLIA]: { address: DUMMY_ADDRESS }, +}; + +export const uniswapV2Router02Addresses = { + [MAINNET]: { address: mainnet.uniswapV2Router02Address }, + [GOERLI]: { address: DUMMY_ADDRESS }, + [GNOSIS]: { address: gnosis.uniswapV2Router02Address }, + [CHIADO]: { address: DUMMY_ADDRESS }, + [SEPOLIA]: { address: DUMMY_ADDRESS }, +}; + +export const getKlerosLiquidBlockNumber = (chainId) => KlerosLiquidBlockNumbers[chainId]; +export const getOldKlerosAddress = (chainId) => oldKlerosAddresses[chainId].address; +export const getKlerosLiquidAddress = (chainId) => klerosLiquidAddresses[chainId].address; +export const getKlerosLiquidExtraViewsAddress = (chainId) => klerosLiquidExtraViewsAddresses[chainId].address; +export const getPinakionAddress = (chainId) => pinakionAddresses[chainId].address; +export const getPolicyRegistryAddress = (chainId) => policyRegistryAddresses[chainId].address; +export const getUniswapV2FactoryAddress = (chainId) => uniswapV2FactoryAddresses[chainId].address; +export const getUniswapV2Router02Address = (chainId) => uniswapV2Router02Addresses[chainId].address; diff --git a/src/helpers/networks.js b/src/helpers/networks.js index 8f4b88a3..abc56d00 100644 --- a/src/helpers/networks.js +++ b/src/helpers/networks.js @@ -1,15 +1,45 @@ +export const MAINNET = 1; +export const GOERLI = 5; +export const GNOSIS = 100; +export const CHIADO = 10200; +export const SEPOLIA = 11155111; +export const POLYGON = 137; +export const MUMBAI = 80001; + export const chainIdToNetworkName = { - 1: "Ethereum Mainnet", - 5: "Ethereum Testnet Görli", - 100: "Gnosis Chain", - 10200: "Gnosis Testnet Chiado", - 11155111: "Ethereum Testnet Sepolia", + [MAINNET]: "Ethereum Mainnet", + [GOERLI]: "Ethereum Testnet Görli", + [GNOSIS]: "Gnosis Chain", + [CHIADO]: "Gnosis Testnet Chiado", + [SEPOLIA]: "Ethereum Testnet Sepolia", }; export const chainIdToNetworkShortName = { - 1: "Mainnet", - 5: "Görli", - 100: "Gnosis Chain", - 10200: "Chiado", - 11155111: "Sepolia", + [MAINNET]: "Mainnet", + [GOERLI]: "Görli", + [GNOSIS]: "Gnosis Chain", + [CHIADO]: "Chiado", + [SEPOLIA]: "Sepolia", +}; + +const fallbackHttpsUrl = { + [MAINNET]: process.env.REACT_APP_WEB3_FALLBACK_MAINNET_HTTPS_URL, + [GOERLI]: process.env.REACT_APP_WEB3_FALLBACK_GOERLI_HTTPS_URL, + [GNOSIS]: process.env.REACT_APP_WEB3_FALLBACK_GNOSIS_HTTPS_URL, + [POLYGON]: process.env.REACT_APP_WEB3_FALLBACK_POLYGON_HTTPS_URL, + [CHIADO]: process.env.REACT_APP_WEB3_FALLBACK_CHIADO_HTTPS_URL, + [MUMBAI]: process.env.REACT_APP_WEB3_FALLBACK_MUMBAI_HTTPS_URL, + [SEPOLIA]: process.env.REACT_APP_WEB3_FALLBACK_SEPOLIA_HTTPS_URL, }; + +const fallbackUrl = { + [MAINNET]: process.env.REACT_APP_WEB3_FALLBACK_MAINNET_URL, + [GOERLI]: process.env.REACT_APP_WEB3_FALLBACK_GOERLI_URL, + [GNOSIS]: process.env.REACT_APP_WEB3_FALLBACK_GNOSIS_URL, + [CHIADO]: process.env.REACT_APP_WEB3_FALLBACK_CHIADO_URL, + [SEPOLIA]: process.env.REACT_APP_WEB3_FALLBACK_SEPOLIA_URL, +}; + +export const getFallbackHttpsUrl = (chainId) => fallbackHttpsUrl[chainId]; +export const getFallbackUrl = (chainId) => fallbackUrl[chainId]; +export const getUrl = (chainId) => fallbackHttpsUrl[chainId] ?? fallbackUrl[chainId];