From 846de8a70a77e2e3340104e98a9faf8544065dcd Mon Sep 17 00:00:00 2001 From: mattstam <mattstam@live.com> Date: Wed, 26 Jun 2024 13:25:22 -0700 Subject: [PATCH] chain name --- contracts/.env.example | 66 ++++++++++++++----------------- contracts/foundry.toml | 40 +++++++++---------- contracts/script/utils/Base.s.sol | 14 +++---- 3 files changed, 54 insertions(+), 66 deletions(-) diff --git a/contracts/.env.example b/contracts/.env.example index cf7f750..ebf29e4 100644 --- a/contracts/.env.example +++ b/contracts/.env.example @@ -4,46 +4,38 @@ CREATE2_SALT= ### The owner of the SP1 Verifier Gateway. This is the account that will be able to add and freeze routes. OWNER= -### The chains to deploy to, specified by chain ID (e.g. CHAINS=1,11155111,17000) -CHAIN_IDS= +### The chains to deploy to, specified by chain name (e.g. CHAINS=mainnet,sepolia,arbitrum_sepolia) +CHAINS= ### RPCs for each chain ID -RPC_1= -RPC_11155111= -RPC_17000= -RPC_100= -RPC_137= -RPC_42161= -RPC_421614= -RPC_8453= -RPC_84532= -RPC_534352= -RPC_534351= +RPC_MAINNET= +RPC_SEPOLIA= +RPC_HOLESKY= +RPC_ARBITRUM= +RPC_ARBITRUM_SEPOLIA= +RPC_BASE= +RPC_BASE_SEPOLIA= +RPC_SCROLL= +RPC_SCROLL_SEPOLIA= # Etherscan API keys for each chain ID -ETHERSCAN_API_KEY_1= -ETHERSCAN_API_KEY_11155111= -ETHERSCAN_API_KEY_17000= -ETHERSCAN_API_KEY_100= -ETHERSCAN_API_KEY_137= -ETHERSCAN_API_KEY_42161= -ETHERSCAN_API_KEY_421614= -ETHERSCAN_API_KEY_8453= -ETHERSCAN_API_KEY_84532= -ETHERSCAN_API_KEY_534352= -ETHERSCAN_API_KEY_534351= +ETHERSCAN_API_KEY_MAINNET= +ETHERSCAN_API_KEY_SEPOLIA= +ETHERSCAN_API_KEY_HOLESKY= +ETHERSCAN_API_KEY_ARBITRUM= +ETHERSCAN_API_KEY_ARBITRUM_SEPOLIA= +ETHERSCAN_API_KEY_BASE= +ETHERSCAN_API_KEY_BASE_SEPOLIA= +ETHERSCAN_API_KEY_SCROLL= +ETHERSCAN_API_KEY_SCROLL_SEPOLIA= # Etherscan API URLs for each chain ID -ETHERSCAN_API_URL_1=https://api.etherscan.io/api -ETHERSCAN_API_URL_5=https://api-goerli.etherscan.io/api -ETHERSCAN_API_URL_17000=https://api-holesky.etherscan.io/api -ETHERSCAN_API_URL_11155111=https://api-sepolia.etherscan.io/api -ETHERSCAN_API_URL_100=https://api.gnosisscan.io/api -ETHERSCAN_API_URL_137=https://api.polygonscan.com/api -ETHERSCAN_API_URL_420=https://api-optimistic.etherscan.io/api -ETHERSCAN_API_URL_42161=https://api.arbiscan.io/api -ETHERSCAN_API_URL_421614=https://api-sepolia.arbiscan.io/api -ETHERSCAN_API_URL_8453=https://api.basescan.org/api -ETHERSCAN_API_URL_84532=https://api-sepolia.basescan.org/api -ETHERSCAN_API_URL_534352=https://api.scrollscan.com/api -ETHERSCAN_API_URL_534351=https://api-sepolia.scrollscan.com/api \ No newline at end of file +ETHERSCAN_API_URL_MAINNET=https://api.etherscan.io/api +ETHERSCAN_API_URL_HOLESKY=https://api-holesky.etherscan.io/api +ETHERSCAN_API_URL_SEPOLIA=https://api-sepolia.etherscan.io/api +ETHERSCAN_API_URL_ARBITRUM=https://api.arbiscan.io/api +ETHERSCAN_API_URL_ARBITRUM_SEPOLIA=https://api-sepolia.arbiscan.io/api +ETHERSCAN_API_URL_BASE=https://api.basescan.org/api +ETHERSCAN_API_URL_BASE_SEPOLIA=https://api-sepolia.basescan.org/api +ETHERSCAN_API_URL_SCROLL=https://api.scrollscan.com/api +ETHERSCAN_API_URL_SCROLL_SEPOLIA=https://api-sepolia.scrollscan.com/api \ No newline at end of file diff --git a/contracts/foundry.toml b/contracts/foundry.toml index 1b3ec7b..aac2dce 100644 --- a/contracts/foundry.toml +++ b/contracts/foundry.toml @@ -21,27 +21,23 @@ ignore = ["lib/**"] # See more config options https://github.com/foundry-rs/foundry/blob/master/crates/config/README.md#all-options [rpc_endpoints] -1 = "${RPC_1}" -11155111 = "${RPC_11155111}" -17000 = "${RPC_17000}" -100 = "${RPC_100}" -137 = "${RPC_137}" -42161 = "${RPC_42161}" -421614 = "${RPC_421614}" -8453 = "${RPC_8453}" -84532 = "${RPC_84532}" -534352 = "${RPC_534352}" -534351 = "${RPC_534351}" +mainnet = "${RPC_MAINNET}" +sepolia = "${RPC_SEPOLIA}" +holesky = "${RPC_HOLESKY}" +arbitrum = "${RPC_ARBITRUM}" +arbitrum_sepolia = "${RPC_ARBITRUM_SEPOLIA}" +base = "${RPC_BASE}" +base_sepolia = "${RPC_BASE_SEPOLIA}" +scroll = "${RPC_SCROLL}" +scroll_sepolia = "${RPC_SCROLL_SEPOLIA}" [etherscan] -1 = { key = "${ETHERSCAN_API_KEY_1}", url = "${ETHERSCAN_API_URL_1}" } -11155111 = { key = "${ETHERSCAN_API_KEY_11155111}", url = "${ETHERSCAN_API_URL_11155111}" } -17000 = { key = "${ETHERSCAN_API_KEY_17000}", url = "${ETHERSCAN_API_URL_17000}" } -100 = { key = "${ETHERSCAN_API_KEY_100}", url = "${ETHERSCAN_API_URL_100}" } -137 = { key = "${ETHERSCAN_API_KEY_137}", url = "${ETHERSCAN_API_URL_137}" } -42161 = { key = "${ETHERSCAN_API_KEY_42161}", url = "${ETHERSCAN_API_URL_42161}" } -421614 = { key = "${ETHERSCAN_API_KEY_421614}", url = "${ETHERSCAN_API_URL_421614}" } -8453 = { key = "${ETHERSCAN_API_KEY_8453}", url = "${ETHERSCAN_API_URL_8453}" } -84532 = { key = "${ETHERSCAN_API_KEY_84532}", url = "${ETHERSCAN_API_URL_84532}" } -534352 = { key = "${ETHERSCAN_API_KEY_534352}", url = "${ETHERSCAN_API_URL_534352}" } -534351 = { key = "${ETHERSCAN_API_KEY_534351}", url = "${ETHERSCAN_API_URL_534351}" } \ No newline at end of file +mainnet = { key = "${ETHERSCAN_API_KEY_MAINNET}", url = "${ETHERSCAN_API_URL_MAINNET}" } +sepolia = { key = "${ETHERSCAN_API_KEY_SEPOLIA}", url = "${ETHERSCAN_API_URL_SEPOLIA}" } +holesky = { key = "${ETHERSCAN_API_KEY_HOLESKY}", url = "${ETHERSCAN_API_URL_HOLESKY}" } +arbitrum = { key = "${ETHERSCAN_API_KEY_ARBITRUM}", url = "${ETHERSCAN_API_URL_ARBITRUM}" } +arbitrum_sepolia = { key = "${ETHERSCAN_API_KEY_ARBITRUM_SEPOLIA}", url = "${ETHERSCAN_API_URL_ARBITRUM_SEPOLIA}" } +base = { key = "${ETHERSCAN_API_KEY_BASE}", url = "${ETHERSCAN_API_URL_BASE}" } +base_sepolia = { key = "${ETHERSCAN_API_KEY_BASE_SEPOLIA}", url = "${ETHERSCAN_API_URL_BASE_SEPOLIA}" } +scroll = { key = "${ETHERSCAN_API_KEY_SCROLL}", url = "${ETHERSCAN_API_URL_SCROLL}" } +scroll_sepolia = { key = "${ETHERSCAN_API_KEY_SCROLL_SEPOLIA}", url = "${ETHERSCAN_API_URL_SCROLL_SEPOLIA}" } \ No newline at end of file diff --git a/contracts/script/utils/Base.s.sol b/contracts/script/utils/Base.s.sol index 35c37bf..7de1e9d 100644 --- a/contracts/script/utils/Base.s.sol +++ b/contracts/script/utils/Base.s.sol @@ -18,17 +18,17 @@ abstract contract BaseScript is Script { vm.stopBroadcast(); } - /// @notice When used, runs the script on the chains specified in the `CHAIN_IDS` env variable. - /// Must have a `RPC_${CHAIN_ID}` env variable set for each chain. + /// @notice When used, runs the script on the chains specified in the `CHAINS` env variable. + /// Must have a `RPC_${CHAIN}` env variable set for each chain (e.g. RPC_MAINNET). modifier multichain(string memory KEY) { - uint256[] memory chainIds = vm.envUint("CHAIN_IDS", ","); - for (uint256 i = 0; i < chainIds.length; i++) { - uint256 chainId = chainIds[i]; + string[] memory chains = vm.envString("CHAINS", ","); + for (uint256 i = 0; i < chains.length; i++) { + string memory chain = chains[i]; // Switch to the chain using the RPC - vm.createSelectFork(vm.toString(chainId)); + vm.createSelectFork(chain); - console.log("Deploying %s to chain %s", KEY, vm.toString(block.chainid)); + console.log("Deploying %s to %s", KEY, chain); _; }