From ec5d43cc4cd2b6b00c8ed3836a02893c669f905e Mon Sep 17 00:00:00 2001 From: Connor McEwen Date: Mon, 17 Jun 2024 13:12:28 -0400 Subject: [PATCH] chore: merge main to cli-2.0 (#3964) --- rust/config/mainnet_config.json | 52 +- rust/config/testnet_config.json | 50 + solidity/lib/forge-std | 2 +- typescript/helloworld/CHANGELOG.md | 253 --- typescript/helloworld/package.json | 1 + typescript/infra/CHANGELOG.md | 41 +- .../config/environments/mainnet3/agent.ts | 6 +- .../config/environments/mainnet3/chains.ts | 28 +- .../config/environments/mainnet3/funding.ts | 5 +- .../environments/mainnet3/helloworld.ts | 4 - .../config/environments/mainnet3/index.ts | 46 +- .../environments/mainnet3/liquidityLayer.ts | 2 - .../infra/config/environments/test/index.ts | 9 +- .../config/environments/testnet4/agent.ts | 5 +- .../testnet4/aw-validators/hyperlane.json | 3 + .../config/environments/testnet4/chains.ts | 15 +- .../testnet4/core/verification.json | 290 +++ .../config/environments/testnet4/funding.ts | 7 +- .../environments/testnet4/gas-oracle.ts | 2 + .../environments/testnet4/helloworld.ts | 8 +- .../config/environments/testnet4/index.ts | 33 +- .../testnet4/ism/verification.json | 1560 +++++++++-------- .../environments/testnet4/middleware.ts | 3 - .../testnet4/supportedChainNames.ts | 1 + .../environments/testnet4/validators.ts | 15 + typescript/infra/config/registry.ts | 29 +- .../helloworld-kathy/templates/_helpers.tpl | 4 - .../templates/external-secret.yaml | 4 - .../helm/key-funder/templates/cron-job.yaml | 4 - .../templates/env-var-external-secret.yaml | 4 - .../templates/circle-relayer-deployment.yaml | 4 - .../templates/env-var-external-secret.yaml | 4 - .../templates/portal-relayer-deployment.yaml | 4 - typescript/infra/package.json | 1 + typescript/infra/scripts/agent-utils.ts | 88 +- .../scripts/agents/update-agent-config.ts | 7 +- typescript/infra/scripts/check-rpc-urls.ts | 11 +- typescript/infra/scripts/deploy.ts | 10 +- .../funding/fund-keys-from-deployer.ts | 11 +- typescript/infra/scripts/helloworld/kathy.ts | 25 +- typescript/infra/scripts/helloworld/utils.ts | 5 - .../infra/scripts/print-chain-metadatas.ts | 12 +- typescript/infra/scripts/print-gas-prices.ts | 88 +- .../infra/scripts/print-token-prices.ts | 12 +- typescript/infra/scripts/verify.ts | 8 +- typescript/infra/src/agents/index.ts | 51 +- typescript/infra/src/config/chain.ts | 104 +- typescript/infra/src/config/environment.ts | 10 +- typescript/infra/src/config/funding.ts | 3 +- .../infra/src/config/helloworld/types.ts | 3 +- typescript/infra/src/config/middleware.ts | 3 - typescript/infra/src/funding/key-funder.ts | 1 - typescript/infra/src/helloworld/kathy.ts | 1 - .../src/middleware/liquidity-layer-relayer.ts | 1 - typescript/infra/src/utils/gcloud.ts | 141 +- typescript/infra/src/utils/utils.ts | 4 + typescript/sdk/CHANGELOG.md | 44 +- typescript/sdk/src/consts/multisigIsm.ts | 5 + typescript/sdk/src/metadata/agentConfig.ts | 10 + typescript/utils/CHANGELOG.md | 14 +- yarn.lock | 397 ++++- 61 files changed, 2146 insertions(+), 1422 deletions(-) diff --git a/rust/config/mainnet_config.json b/rust/config/mainnet_config.json index 25bfbb895..8b56ae474 100644 --- a/rust/config/mainnet_config.json +++ b/rust/config/mainnet_config.json @@ -634,13 +634,18 @@ }, "injective": { "bech32Prefix": "inj", + "blockExplorers": [], "blocks": { + "confirmations": 1, + "estimateBlockTime": 1, "reorgPeriod": 10 }, "canonicalAsset": "inj", "chainId": "injective-1", "contractAddressBytes": 20, - "domainId": "6909546", + "displayName": "Injective", + "domainId": 6909546, + "gasCurrencyCoinGeckoId": "injective-protocol", "gasPrice": { "amount": "700000000", "denom": "inj" @@ -658,12 +663,24 @@ "mailbox": "0x0f7fb53961d70687e352aa55cb329ca76edc0c19", "merkleTreeHook": "0x568ad3638447f07def384969f4ea39fae3802962", "name": "injective", + "nativeToken": { + "decimals": 18, + "denom": "inj", + "name": "Injective", + "symbol": "INJ" + }, "protocol": "cosmos", + "restUrls": [ + { + "http": "https://sentry.lcd.injective.network:443" + } + ], "rpcUrls": [ { - "http": "https://injective-rpc.polkachu.com" + "http": "https://sentry.tm.injective.network:443" } ], + "slip44": 118, "validatorAnnounce": "0x1fb225b2fcfbe75e614a1d627de97ff372242eed" }, "mantapacific": { @@ -837,13 +854,25 @@ }, "neutron": { "bech32Prefix": "neutron", + "blockExplorers": [ + { + "apiUrl": "https://www.mintscan.io/neutron", + "family": "other", + "name": "Mintscan", + "url": "https://www.mintscan.io/neutron" + } + ], "blocks": { + "confirmations": 1, + "estimateBlockTime": 3, "reorgPeriod": 1 }, "canonicalAsset": "untrn", "chainId": "neutron-1", "contractAddressBytes": 32, - "domainId": "1853125230", + "displayName": "Neutron", + "domainId": 1853125230, + "gasCurrencyCoinGeckoId": "neutron-3", "gasPrice": { "amount": "0.0053", "denom": "untrn" @@ -858,10 +887,22 @@ "from": 4000000 }, "interchainGasPaymaster": "0x504ee9ac43ec5814e00c7d21869a90ec52becb489636bdf893b7df9d606b5d67", + "isTestnet": false, "mailbox": "0x848426d50eb2104d5c6381ec63757930b1c14659c40db8b8081e516e7c5238fc", "merkleTreeHook": "0xcd30a0001cc1f436c41ef764a712ebabc5a144140e3fd03eafe64a9a24e4e27c", "name": "neutron", + "nativeToken": { + "decimals": 6, + "denom": "untrn", + "name": "Neutron", + "symbol": "NTRN" + }, "protocol": "cosmos", + "restUrls": [ + { + "http": "https://rest-lb.neutron.org" + } + ], "rpcUrls": [ { "http": "https://rpc-kralum.neutron-1.neutron.org" @@ -872,6 +913,7 @@ "prefix": "neutron", "type": "cosmosKey" }, + "slip44": 118, "validatorAnnounce": "0xf3aa0d652226e21ae35cd9035c492ae41725edc9036edf0d6a48701b153b90a0" }, "optimism": { @@ -998,8 +1040,8 @@ "name": "polygon", "nativeToken": { "decimals": 18, - "name": "Ether", - "symbol": "ETH" + "name": "Matic", + "symbol": "MATIC" }, "pausableHook": "0x748040afB89B8FdBb992799808215419d36A0930", "pausableIsm": "0x6741e91fFDC31c7786E3684427c628dad06299B0", diff --git a/rust/config/testnet_config.json b/rust/config/testnet_config.json index 31a60fecf..3680b07c9 100644 --- a/rust/config/testnet_config.json +++ b/rust/config/testnet_config.json @@ -207,6 +207,56 @@ "timelockController": "0x0000000000000000000000000000000000000000", "validatorAnnounce": "0x4f7179A691F8a684f56cF7Fed65171877d30739a" }, + "holesky": { + "blockExplorers": [ + { + "apiUrl": "https://api-holesky.etherscan.io/api", + "family": "etherscan", + "name": "Etherscan", + "url": "https://holesky.etherscan.io" + } + ], + "blocks": { + "confirmations": 1, + "estimateBlockTime": 13, + "reorgPeriod": 2 + }, + "chainId": 17000, + "displayName": "Holesky", + "domainId": 17000, + "domainRoutingIsmFactory": "0xDDcFEcF17586D08A5740B7D91735fcCE3dfe3eeD", + "fallbackRoutingHook": "0x07009DA2249c388aD0f416a235AfE90D784e1aAc", + "index": { + "from": 1543015 + }, + "interchainGasPaymaster": "0x5CBf4e70448Ed46c2616b04e9ebc72D29FF0cfA9", + "interchainSecurityModule": "0x751f2b684EeBb916dB777767CCb8fd793C8b2956", + "isTestnet": true, + "mailbox": "0x46f7C5D896bbeC89bE1B19e4485e59b4Be49e9Cc", + "merkleTreeHook": "0x98AAE089CaD930C64a76dD2247a2aC5773a4B8cE", + "name": "holesky", + "nativeToken": { + "decimals": 18, + "name": "Ether", + "symbol": "ETH" + }, + "pausableHook": "0xF7561c34f17A32D5620583A3397C304e7038a7F6", + "protocol": "ethereum", + "protocolFee": "0x6b1bb4ce664Bb4164AEB4d3D2E7DE7450DD8084C", + "proxyAdmin": "0x33dB966328Ea213b0f76eF96CA368AB37779F065", + "rpcUrls": [ + { + "http": "https://ethereum-holesky-rpc.publicnode.com" + } + ], + "staticAggregationHookFactory": "0x589C201a07c26b4725A4A829d772f24423da480B", + "staticAggregationIsmFactory": "0x54148470292C24345fb828B003461a9444414517", + "staticMerkleRootMultisigIsmFactory": "0xC2E36cd6e32e194EE11f15D9273B64461A4D49A2", + "staticMessageIdMultisigIsmFactory": "0x6966b0E55883d49BFB24539356a2f8A673E02039", + "storageGasOracle": "0x2b2a158B4059C840c7aC67399B153bb567D06303", + "testRecipient": "0x86fb9F1c124fB20ff130C41a79a432F770f67AFD", + "validatorAnnounce": "0xAb9B273366D794B7F80B4378bc8Aaca75C6178E2" + }, "plumetestnet": { "aggregationHook": "0x31dF0EEE7Dc7565665468698a0da221225619a1B", "blockExplorers": [ diff --git a/solidity/lib/forge-std b/solidity/lib/forge-std index e8a047e3f..52715a217 160000 --- a/solidity/lib/forge-std +++ b/solidity/lib/forge-std @@ -1 +1 @@ -Subproject commit e8a047e3f40f13fa37af6fe14e6e06283d9a060e +Subproject commit 52715a217dc51d0de15877878ab8213f6cbbbab5 diff --git a/typescript/helloworld/CHANGELOG.md b/typescript/helloworld/CHANGELOG.md index 47f1f8be2..e69de29bb 100644 --- a/typescript/helloworld/CHANGELOG.md +++ b/typescript/helloworld/CHANGELOG.md @@ -1,253 +0,0 @@ -# @hyperlane-xyz/helloworld - -## 4.0.0-alpha.2 - -### Patch Changes - -- Updated dependencies [6b63c5d82] - - @hyperlane-xyz/sdk@4.0.0-alpha.2 - - @hyperlane-xyz/core@4.0.0-alpha.2 - -## 4.0.0-alpha.0 - -### Patch Changes - -- Updated dependencies [bdcbe1d16] -- Updated dependencies [6db9fa9ad] - - @hyperlane-xyz/sdk@4.0.0-alpha.0 - - @hyperlane-xyz/core@4.0.0-alpha.0 - -## 4.0.0-alpha - -### Patch Changes - -- Updated dependencies [eb23e7729] -- Updated dependencies [1ec61debd] -- Updated dependencies [4663018fc] -- Updated dependencies [5e5886f2c] -- Updated dependencies [341b8affd] -- Updated dependencies [3dabcbdca] -- Updated dependencies [1d0d1bb36] -- Updated dependencies [74c879fa1] -- Updated dependencies [4bf7301ea] - - @hyperlane-xyz/sdk@4.0.0-alpha - - @hyperlane-xyz/core@4.0.0-alpha - -## 3.13.0 - -### Patch Changes - -- b6b26e2bb: fix: minor change was breaking in registry export -- Updated dependencies [39ea7cdef] -- Updated dependencies [babe816f8] -- Updated dependencies [b440d98be] -- Updated dependencies [0cf692e73] - - @hyperlane-xyz/sdk@3.13.0 - - @hyperlane-xyz/core@3.13.0 - -## 3.12.0 - -### Patch Changes - -- Updated dependencies [eba393680] -- Updated dependencies [69de68a66] - - @hyperlane-xyz/sdk@3.12.0 - - @hyperlane-xyz/core@3.12.0 - -## 3.11.1 - -### Patch Changes - -- Updated dependencies [c900da187] - - @hyperlane-xyz/sdk@3.11.1 - - @hyperlane-xyz/core@3.11.1 - -## 3.11.0 - -### Minor Changes - -- b63714ede: Convert all public hyperlane npm packages from CJS to pure ESM - -### Patch Changes - -- Updated dependencies [811ecfbba] -- Updated dependencies [f8b6ea467] -- Updated dependencies [d37cbab72] -- Updated dependencies [b6fdf2f7f] -- Updated dependencies [a86a8296b] -- Updated dependencies [2db77f177] -- Updated dependencies [3a08e31b6] -- Updated dependencies [917266dce] -- Updated dependencies [aab63d466] -- Updated dependencies [2e439423e] -- Updated dependencies [b63714ede] -- Updated dependencies [3528b281e] -- Updated dependencies [450e8e0d5] -- Updated dependencies [af2634207] - - @hyperlane-xyz/sdk@3.11.0 - - @hyperlane-xyz/core@3.11.0 - -## 3.10.0 - -### Minor Changes - -- 96485144a: SDK support for ICA deployment and operation. -- 4e7a43be6: Replace Debug logger with Pino - -### Patch Changes - -- Updated dependencies [96485144a] -- Updated dependencies [38358ecec] -- Updated dependencies [ed0d4188c] -- Updated dependencies [4e7a43be6] - - @hyperlane-xyz/sdk@3.10.0 - - @hyperlane-xyz/core@3.10.0 - -## 3.9.0 - -### Patch Changes - -- Updated dependencies [11f257ebc] - - @hyperlane-xyz/sdk@3.9.0 - - @hyperlane-xyz/core@3.9.0 - -## 3.8.2 - -### Patch Changes - -- @hyperlane-xyz/core@3.8.2 -- @hyperlane-xyz/sdk@3.8.2 - -## 3.8.1 - -### Patch Changes - -- Updated dependencies [5daaae274] - - @hyperlane-xyz/sdk@3.8.1 - - @hyperlane-xyz/core@3.8.1 - -## 3.8.0 - -### Minor Changes - -- 9681df08d: Enabled verification of contracts as part of the deployment flow. - - - Solidity build artifact is now included as part of the `@hyperlane-xyz/core` package. - - Updated the `HyperlaneDeployer` to perform contract verification immediately after deploying a contract. A default verifier is instantiated using the core build artifact. - - Updated the `HyperlaneIsmFactory` to re-use the `HyperlaneDeployer` for deployment where possible. - - Minor logging improvements throughout deployers. - -### Patch Changes - -- Updated dependencies [9681df08d] -- Updated dependencies [9681df08d] -- Updated dependencies [9681df08d] -- Updated dependencies [9681df08d] -- Updated dependencies [9681df08d] -- Updated dependencies [9681df08d] -- Updated dependencies [9681df08d] -- Updated dependencies [9681df08d] -- Updated dependencies [9681df08d] -- Updated dependencies [9681df08d] -- Updated dependencies [9681df08d] -- Updated dependencies [9681df08d] - - @hyperlane-xyz/sdk@3.8.0 - - @hyperlane-xyz/core@3.8.0 - -## 3.7.0 - -### Patch Changes - -- Updated dependencies [6f464eaed] -- Updated dependencies [87151c62b] -- Updated dependencies [ab17af5f7] -- Updated dependencies [7b40232af] -- Updated dependencies [54aeb6420] - - @hyperlane-xyz/sdk@3.7.0 - - @hyperlane-xyz/core@3.7.0 - -## 3.6.2 - -### Patch Changes - -- @hyperlane-xyz/core@3.6.2 -- @hyperlane-xyz/sdk@3.6.2 - -## 3.6.1 - -### Patch Changes - -- Updated dependencies [ae4476ad0] -- Updated dependencies [f3b7ddb69] -- Updated dependencies [e4e4f93fc] - - @hyperlane-xyz/sdk@3.6.1 - - @hyperlane-xyz/core@3.6.1 - -## 3.6.0 - -### Patch Changes - -- Updated dependencies [67a6d971e] -- Updated dependencies [612d4163a] -- Updated dependencies [0488ef31d] -- Updated dependencies [8d8ba3f7a] - - @hyperlane-xyz/sdk@3.6.0 - - @hyperlane-xyz/core@3.6.0 - -## 3.5.1 - -### Patch Changes - -- Updated dependencies [a04454d6d] - - @hyperlane-xyz/sdk@3.5.1 - - @hyperlane-xyz/core@3.5.1 - -## 3.5.0 - -### Patch Changes - -- Updated dependencies [655b6a0cd] -- Updated dependencies [08ba0d32b] -- Updated dependencies [f7d285e3a] - - @hyperlane-xyz/sdk@3.5.0 - - @hyperlane-xyz/core@3.5.0 - -## 3.4.0 - -### Patch Changes - -- Updated dependencies [7919417ec] -- Updated dependencies [fd4fc1898] -- Updated dependencies [e06fe0b32] -- Updated dependencies [b832e57ae] -- Updated dependencies [79c96d718] - - @hyperlane-xyz/sdk@3.4.0 - - @hyperlane-xyz/core@3.4.0 - -## 3.3.0 - -### Patch Changes - -- Updated dependencies [7e620c9df] -- Updated dependencies [350175581] -- Updated dependencies [9f2c7ce7c] - - @hyperlane-xyz/sdk@3.3.0 - - @hyperlane-xyz/core@3.3.0 - -## 3.2.0 - -### Patch Changes - -- Updated dependencies [df34198d4] -- Updated dependencies [df693708b] - - @hyperlane-xyz/core@3.2.0 - - @hyperlane-xyz/sdk@3.2.0 - -## 3.1.10 - -### Patch Changes - -- c9e0aedae: Improve client side StandardHookMetadata library interface -- Updated dependencies [c9e0aedae] - - @hyperlane-xyz/core@3.1.10 - - @hyperlane-xyz/sdk@3.1.10 diff --git a/typescript/helloworld/package.json b/typescript/helloworld/package.json index e10f34329..e35e45bd7 100644 --- a/typescript/helloworld/package.json +++ b/typescript/helloworld/package.json @@ -14,6 +14,7 @@ "@nomiclabs/hardhat-waffle": "^2.0.6", "@trivago/prettier-plugin-sort-imports": "^4.2.1", "@typechain/ethers-v5": "^11.1.2", + "@typechain/ethers-v6": "^0.5.1", "@typechain/hardhat": "^9.1.0", "@typescript-eslint/eslint-plugin": "^7.4.0", "@typescript-eslint/parser": "^7.4.0", diff --git a/typescript/infra/CHANGELOG.md b/typescript/infra/CHANGELOG.md index 6abcbec1b..e1da9e3b3 100644 --- a/typescript/infra/CHANGELOG.md +++ b/typescript/infra/CHANGELOG.md @@ -1,45 +1,12 @@ # @hyperlane-xyz/infra -## 4.0.0-alpha.2 +## 3.14.0 ### Patch Changes -- Updated dependencies [6b63c5d82] - - @hyperlane-xyz/sdk@4.0.0-alpha.2 - - @hyperlane-xyz/helloworld@4.0.0-alpha.2 - - @hyperlane-xyz/utils@4.0.0-alpha.2 - -## 4.0.0-alpha.0 - -### Patch Changes - -- Updated dependencies [bdcbe1d16] -- Updated dependencies [6db9fa9ad] - - @hyperlane-xyz/sdk@4.0.0-alpha.0 - - @hyperlane-xyz/helloworld@4.0.0-alpha.0 - - @hyperlane-xyz/utils@4.0.0-alpha.0 - -## 4.0.0-alpha - -### Minor Changes - -- 1ec61debd: Support hook config objects in warp config -- 341b8affd: Completes the EvmIsmModule for creating, reading and updating ISMs. - -### Patch Changes - -- Updated dependencies [eb23e7729] -- Updated dependencies [1ec61debd] -- Updated dependencies [4663018fc] -- Updated dependencies [5e5886f2c] -- Updated dependencies [341b8affd] -- Updated dependencies [3dabcbdca] -- Updated dependencies [1d0d1bb36] -- Updated dependencies [74c879fa1] -- Updated dependencies [4bf7301ea] - - @hyperlane-xyz/sdk@4.0.0-alpha - - @hyperlane-xyz/utils@4.0.0-alpha - - @hyperlane-xyz/helloworld@4.0.0-alpha +- @hyperlane-xyz/helloworld@3.14.0 +- @hyperlane-xyz/sdk@3.14.0 +- @hyperlane-xyz/utils@3.14.0 ## 3.13.0 diff --git a/typescript/infra/config/environments/mainnet3/agent.ts b/typescript/infra/config/environments/mainnet3/agent.ts index 971e30530..7d24fcc20 100644 --- a/typescript/infra/config/environments/mainnet3/agent.ts +++ b/typescript/infra/config/environments/mainnet3/agent.ts @@ -209,7 +209,7 @@ const hyperlane: RootAgentConfig = { rpcConsensusType: RpcConsensusType.Fallback, docker: { repo, - tag: 'd6bb976-20240520-164138', + tag: '939fa81-20240607-194607', }, gasPaymentEnforcement: gasPaymentEnforcement, metricAppContexts, @@ -226,7 +226,7 @@ const hyperlane: RootAgentConfig = { rpcConsensusType: RpcConsensusType.Fallback, docker: { repo, - tag: 'd6bb976-20240520-164138', + tag: '939fa81-20240607-194607', }, }, }; @@ -240,7 +240,7 @@ const releaseCandidate: RootAgentConfig = { rpcConsensusType: RpcConsensusType.Fallback, docker: { repo, - tag: 'c9c5d37-20240510-014327', + tag: '939fa81-20240607-194607', }, // We're temporarily (ab)using the RC relayer as a way to increase // message throughput. diff --git a/typescript/infra/config/environments/mainnet3/chains.ts b/typescript/infra/config/environments/mainnet3/chains.ts index 0e5d4144e..c511b72e6 100644 --- a/typescript/infra/config/environments/mainnet3/chains.ts +++ b/typescript/infra/config/environments/mainnet3/chains.ts @@ -1,30 +1,23 @@ import { ChainMap, ChainMetadata } from '@hyperlane-xyz/sdk'; -import { objKeys } from '@hyperlane-xyz/utils'; -import { getChainMetadatas } from '../../../src/config/chain.js'; -import { getChain } from '../../registry.js'; +import { isEthereumProtocolChain } from '../../../src/utils/utils.js'; import { supportedChainNames } from './supportedChainNames.js'; export const environment = 'mainnet3'; -const { - ethereumMetadatas: defaultEthereumMainnetConfigs, - nonEthereumMetadatas: nonEthereumMainnetConfigs, -} = getChainMetadatas(supportedChainNames); +export const ethereumChainNames = supportedChainNames.filter( + isEthereumProtocolChain, +); -export const ethereumMainnetConfigs: ChainMap = { - ...defaultEthereumMainnetConfigs, +export const chainMetadataOverrides: ChainMap> = { bsc: { - ...getChain('bsc'), transactionOverrides: { gasPrice: 3 * 10 ** 9, // 3 gwei }, }, polygon: { - ...getChain('polygon'), blocks: { - ...getChain('polygon').blocks, confirmations: 3, }, transactionOverrides: { @@ -35,9 +28,7 @@ export const ethereumMainnetConfigs: ChainMap = { }, }, ethereum: { - ...getChain('ethereum'), blocks: { - ...getChain('ethereum').blocks, confirmations: 3, }, transactionOverrides: { @@ -46,7 +37,6 @@ export const ethereumMainnetConfigs: ChainMap = { }, }, scroll: { - ...getChain('scroll'), transactionOverrides: { // Scroll doesn't use EIP 1559 and the gas price that's returned is sometimes // too low for the transaction to be included in a reasonable amount of time - @@ -55,17 +45,9 @@ export const ethereumMainnetConfigs: ChainMap = { }, }, moonbeam: { - ...getChain('moonbeam'), transactionOverrides: { maxFeePerGas: 350 * 10 ** 9, // 350 gwei maxPriorityFeePerGas: 50 * 10 ** 9, // 50 gwei }, }, }; - -export const mainnetConfigs: ChainMap = { - ...ethereumMainnetConfigs, - ...nonEthereumMainnetConfigs, -}; - -export const ethereumChainNames = objKeys(ethereumMainnetConfigs); diff --git a/typescript/infra/config/environments/mainnet3/funding.ts b/typescript/infra/config/environments/mainnet3/funding.ts index f9f15f0a8..25e01b03d 100644 --- a/typescript/infra/config/environments/mainnet3/funding.ts +++ b/typescript/infra/config/environments/mainnet3/funding.ts @@ -1,5 +1,3 @@ -import { RpcConsensusType } from '@hyperlane-xyz/sdk'; - import { KeyFunderConfig } from '../../../src/config/funding.js'; import { Role } from '../../../src/roles.js'; import { Contexts } from '../../contexts.js'; @@ -9,7 +7,7 @@ import { environment } from './chains.js'; export const keyFunderConfig: KeyFunderConfig = { docker: { repo: 'gcr.io/abacus-labs-dev/hyperlane-monorepo', - tag: 'b22a0f4-20240523-140812', + tag: '7720875-20240531-072251', }, // We're currently using the same deployer/key funder key as mainnet2. // To minimize nonce clobbering we offset the key funder cron @@ -23,7 +21,6 @@ export const keyFunderConfig: KeyFunderConfig = { [Contexts.Hyperlane]: [Role.Relayer, Role.Kathy], [Contexts.ReleaseCandidate]: [Role.Relayer, Role.Kathy], }, - connectionType: RpcConsensusType.Fallback, // desired balance config desiredBalancePerChain: { arbitrum: '0.5', diff --git a/typescript/infra/config/environments/mainnet3/helloworld.ts b/typescript/infra/config/environments/mainnet3/helloworld.ts index 4f15ba912..0df01f1d7 100644 --- a/typescript/infra/config/environments/mainnet3/helloworld.ts +++ b/typescript/infra/config/environments/mainnet3/helloworld.ts @@ -1,5 +1,3 @@ -import { RpcConsensusType } from '@hyperlane-xyz/sdk'; - import { HelloWorldConfig, HelloWorldKathyRunMode, @@ -26,7 +24,6 @@ export const hyperlane: HelloWorldConfig = { }, messageSendTimeout: 1000 * 60 * 8, // 8 min messageReceiptTimeout: 1000 * 60 * 20, // 20 min - connectionType: RpcConsensusType.Fallback, cyclesBetweenEthereumMessages: 1, // Skip 1 cycle of Ethereum, i.e. send/receive Ethereum messages every 5 days (not great since we still send like 12 in that cycle) }, }; @@ -46,7 +43,6 @@ export const releaseCandidate: HelloWorldConfig = { }, messageSendTimeout: 1000 * 60 * 8, // 8 min messageReceiptTimeout: 1000 * 60 * 20, // 20 min - connectionType: RpcConsensusType.Fallback, }, }; diff --git a/typescript/infra/config/environments/mainnet3/index.ts b/typescript/infra/config/environments/mainnet3/index.ts index a8bc14983..94c76e53a 100644 --- a/typescript/infra/config/environments/mainnet3/index.ts +++ b/typescript/infra/config/environments/mainnet3/index.ts @@ -1,16 +1,20 @@ -import { ChainMetadata, RpcConsensusType } from '@hyperlane-xyz/sdk'; -import { ProtocolType, objFilter } from '@hyperlane-xyz/utils'; +import { IRegistry } from '@hyperlane-xyz/registry'; import { getKeysForRole, + getMultiProtocolProvider, getMultiProviderForRole, } from '../../../scripts/agent-utils.js'; +import { getRegistryForEnvironment } from '../../../src/config/chain.js'; import { EnvironmentConfig } from '../../../src/config/environment.js'; import { Role } from '../../../src/roles.js'; import { Contexts } from '../../contexts.js'; import { agents } from './agent.js'; -import { environment as environmentName, mainnetConfigs } from './chains.js'; +import { + chainMetadataOverrides, + environment as environmentName, +} from './chains.js'; import { core } from './core.js'; import { keyFunderConfig } from './funding.js'; import { helloWorld } from './helloworld.js'; @@ -18,34 +22,38 @@ import { igp } from './igp.js'; import { infrastructure } from './infrastructure.js'; import { bridgeAdapterConfigs, relayerConfig } from './liquidityLayer.js'; import { owners } from './owners.js'; +import { supportedChainNames } from './supportedChainNames.js'; + +const getRegistry = async (useSecrets = true): Promise => + getRegistryForEnvironment( + environmentName, + supportedChainNames, + chainMetadataOverrides, + useSecrets, + ); export const environment: EnvironmentConfig = { environment: environmentName, - chainMetadataConfigs: mainnetConfigs, - getMultiProvider: ( + supportedChainNames, + getRegistry, + getMultiProtocolProvider: async () => + getMultiProtocolProvider(await getRegistry()), + getMultiProvider: async ( context: Contexts = Contexts.Hyperlane, role: Role = Role.Deployer, - connectionType?: RpcConsensusType, - ) => { - const config = objFilter( - mainnetConfigs, - (_, chainMetadata): chainMetadata is ChainMetadata => - chainMetadata.protocol === ProtocolType.Ethereum, - ); - - return getMultiProviderForRole( - config, + useSecrets?: boolean, + ) => + getMultiProviderForRole( environmentName, + await getRegistry(useSecrets), context, role, undefined, - connectionType, - ); - }, + ), getKeys: ( context: Contexts = Contexts.Hyperlane, role: Role = Role.Deployer, - ) => getKeysForRole(mainnetConfigs, environmentName, context, role), + ) => getKeysForRole(environmentName, supportedChainNames, context, role), agents, core, igp, diff --git a/typescript/infra/config/environments/mainnet3/liquidityLayer.ts b/typescript/infra/config/environments/mainnet3/liquidityLayer.ts index ac311f447..0f3a6d287 100644 --- a/typescript/infra/config/environments/mainnet3/liquidityLayer.ts +++ b/typescript/infra/config/environments/mainnet3/liquidityLayer.ts @@ -2,7 +2,6 @@ import { BridgeAdapterConfig, BridgeAdapterType, ChainMap, - RpcConsensusType, } from '@hyperlane-xyz/sdk'; import { LiquidityLayerRelayerConfig } from '../../../src/config/middleware.js'; @@ -50,5 +49,4 @@ export const relayerConfig: LiquidityLayerRelayerConfig = { namespace: environment, prometheusPushGateway: 'http://prometheus-prometheus-pushgateway.monitoring.svc.cluster.local:9091', - connectionType: RpcConsensusType.Single, }; diff --git a/typescript/infra/config/environments/test/index.ts b/typescript/infra/config/environments/test/index.ts index c21e411e5..cdde17fe3 100644 --- a/typescript/infra/config/environments/test/index.ts +++ b/typescript/infra/config/environments/test/index.ts @@ -5,6 +5,7 @@ import { MultiProvider, testChainMetadata } from '@hyperlane-xyz/sdk'; import { EnvironmentConfig } from '../../../src/config/environment.js'; import { agents } from './agent.js'; +import { testChainNames } from './chains.js'; import { core } from './core.js'; import { igp } from './igp.js'; import { infra } from './infra.js'; @@ -12,7 +13,13 @@ import { owners } from './owners.js'; export const environment: EnvironmentConfig = { environment: 'test', - chainMetadataConfigs: testChainMetadata, + supportedChainNames: testChainNames, + getRegistry: () => { + throw new Error('Not implemented'); + }, + getMultiProtocolProvider: () => { + throw new Error('Not implemented'); + }, agents, core, igp, diff --git a/typescript/infra/config/environments/testnet4/agent.ts b/typescript/infra/config/environments/testnet4/agent.ts index 62c162869..4ce2ab88d 100644 --- a/typescript/infra/config/environments/testnet4/agent.ts +++ b/typescript/infra/config/environments/testnet4/agent.ts @@ -36,6 +36,7 @@ export const hyperlaneContextAgentChainConfig: AgentChainConfig = { bsctestnet: true, eclipsetestnet: false, fuji: true, + holesky: true, plumetestnet: true, scrollsepolia: true, sepolia: true, @@ -46,6 +47,7 @@ export const hyperlaneContextAgentChainConfig: AgentChainConfig = { bsctestnet: true, eclipsetestnet: false, fuji: true, + holesky: true, plumetestnet: true, scrollsepolia: true, sepolia: true, @@ -57,6 +59,7 @@ export const hyperlaneContextAgentChainConfig: AgentChainConfig = { // Cannot scrape non-EVM chains eclipsetestnet: false, fuji: true, + holesky: true, plumetestnet: true, scrollsepolia: true, sepolia: true, @@ -124,7 +127,7 @@ const hyperlane: RootAgentConfig = { rpcConsensusType: RpcConsensusType.Fallback, docker: { repo, - tag: 'c9c5d37-20240510-014327', + tag: 'e09a360-20240520-090014', }, chains: validatorChainConfig(Contexts.Hyperlane), }, diff --git a/typescript/infra/config/environments/testnet4/aw-validators/hyperlane.json b/typescript/infra/config/environments/testnet4/aw-validators/hyperlane.json index 071d8e5cc..a78d0e953 100644 --- a/typescript/infra/config/environments/testnet4/aw-validators/hyperlane.json +++ b/typescript/infra/config/environments/testnet4/aw-validators/hyperlane.json @@ -20,6 +20,9 @@ "0x43e915573d9f1383cbf482049e4a012290759e7f" ] }, + "holesky": { + "validators": ["0x7ab28ad88bb45867137ea823af88e2cb02359c03"] + }, "plumetestnet": { "validators": [ "0xe765a214849f3ecdf00793b97d00422f2d408ea6", diff --git a/typescript/infra/config/environments/testnet4/chains.ts b/typescript/infra/config/environments/testnet4/chains.ts index 318d67e7b..caa3c1018 100644 --- a/typescript/infra/config/environments/testnet4/chains.ts +++ b/typescript/infra/config/environments/testnet4/chains.ts @@ -1,24 +1,19 @@ import { ChainMap, ChainMetadata } from '@hyperlane-xyz/sdk'; -import { objKeys } from '@hyperlane-xyz/utils'; -import { getChainMetadatas } from '../../../src/config/chain.js'; -import { getChain } from '../../registry.js'; +import { isEthereumProtocolChain } from '../../../src/utils/utils.js'; import { supportedChainNames } from './supportedChainNames.js'; export const environment = 'testnet4'; -const { ethereumMetadatas: defaultEthereumMainnetConfigs } = - getChainMetadatas(supportedChainNames); +export const ethereumChainNames = supportedChainNames.filter( + isEthereumProtocolChain, +); -export const testnetConfigs: ChainMap = { - ...defaultEthereumMainnetConfigs, +export const chainMetadataOverrides: ChainMap> = { bsctestnet: { - ...getChain('bsctestnet'), transactionOverrides: { gasPrice: 8 * 10 ** 9, // 8 gwei }, }, }; - -export const ethereumChainNames = objKeys(defaultEthereumMainnetConfigs); diff --git a/typescript/infra/config/environments/testnet4/core/verification.json b/typescript/infra/config/environments/testnet4/core/verification.json index 858d975ff..5abcc05a8 100644 --- a/typescript/infra/config/environments/testnet4/core/verification.json +++ b/typescript/infra/config/environments/testnet4/core/verification.json @@ -1841,6 +1841,296 @@ "name": "PausableHook" } ], + "holesky": [ + { + "address": "0x33dB966328Ea213b0f76eF96CA368AB37779F065", + "constructorArguments": "", + "isProxy": false, + "name": "ProxyAdmin" + }, + { + "address": "0xB08d78F439e55D02C398519eef61606A5926245F", + "constructorArguments": "0000000000000000000000000000000000000000000000000000000000004268", + "isProxy": false, + "name": "Mailbox" + }, + { + "address": "0x46f7C5D896bbeC89bE1B19e4485e59b4Be49e9Cc", + "constructorArguments": "000000000000000000000000b08d78f439e55d02c398519eef61606a5926245f00000000000000000000000033db966328ea213b0f76ef96ca368ab37779f06500000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000000", + "isProxy": true, + "name": "TransparentUpgradeableProxy" + }, + { + "address": "0x679Dc08cC3A4acFeea2f7CAFAa37561aE0b41Ce7", + "constructorArguments": "000000000000000000000000fad1c94469700833717fa8a3017278bc1ca8031c", + "isProxy": false, + "name": "PausableIsm" + }, + { + "address": "0x98AAE089CaD930C64a76dD2247a2aC5773a4B8cE", + "constructorArguments": "00000000000000000000000046f7c5d896bbec89be1b19e4485e59b4be49e9cc", + "isProxy": false, + "name": "MerkleTreeHook" + }, + { + "address": "0x07009DA2249c388aD0f416a235AfE90D784e1aAc", + "constructorArguments": "00000000000000000000000046f7c5d896bbec89be1b19e4485e59b4be49e9cc000000000000000000000000fad1c94469700833717fa8a3017278bc1ca8031c00000000000000000000000098aae089cad930c64a76dd2247a2ac5773a4b8ce", + "isProxy": false, + "name": "FallbackRoutingHook" + }, + { + "address": "0xF7561c34f17A32D5620583A3397C304e7038a7F6", + "constructorArguments": "", + "isProxy": false, + "name": "PausableHook" + }, + { + "address": "0x2b2a158B4059C840c7aC67399B153bb567D06303", + "constructorArguments": "", + "isProxy": false, + "name": "StorageGasOracle" + }, + { + "address": "0x5CE550e14B82a9F32A0aaF9eFc4Fce548D8A0B3e", + "constructorArguments": "", + "isProxy": false, + "name": "InterchainGasPaymaster" + }, + { + "address": "0x5CBf4e70448Ed46c2616b04e9ebc72D29FF0cfA9", + "constructorArguments": "0000000000000000000000005ce550e14b82a9f32a0aaf9efc4fce548d8a0b3e00000000000000000000000033db966328ea213b0f76ef96ca368ab37779f06500000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044485cc955000000000000000000000000fad1c94469700833717fa8a3017278bc1ca8031c000000000000000000000000fad1c94469700833717fa8a3017278bc1ca8031c00000000000000000000000000000000000000000000000000000000", + "isProxy": true, + "name": "TransparentUpgradeableProxy" + }, + { + "address": "0x2b2a158B4059C840c7aC67399B153bb567D06303", + "constructorArguments": "", + "isProxy": false, + "name": "StorageGasOracle" + }, + { + "address": "0x5CE550e14B82a9F32A0aaF9eFc4Fce548D8A0B3e", + "constructorArguments": "", + "isProxy": false, + "name": "InterchainGasPaymaster" + }, + { + "address": "0x5CBf4e70448Ed46c2616b04e9ebc72D29FF0cfA9", + "constructorArguments": "0000000000000000000000005ce550e14b82a9f32a0aaf9efc4fce548d8a0b3e00000000000000000000000033db966328ea213b0f76ef96ca368ab37779f06500000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044485cc955000000000000000000000000fad1c94469700833717fa8a3017278bc1ca8031c000000000000000000000000fad1c94469700833717fa8a3017278bc1ca8031c00000000000000000000000000000000000000000000000000000000", + "isProxy": true, + "name": "TransparentUpgradeableProxy" + }, + { + "address": "0x2b2a158B4059C840c7aC67399B153bb567D06303", + "constructorArguments": "", + "isProxy": false, + "name": "StorageGasOracle" + }, + { + "address": "0x5CE550e14B82a9F32A0aaF9eFc4Fce548D8A0B3e", + "constructorArguments": "", + "isProxy": false, + "name": "InterchainGasPaymaster" + }, + { + "address": "0x5CBf4e70448Ed46c2616b04e9ebc72D29FF0cfA9", + "constructorArguments": "0000000000000000000000005ce550e14b82a9f32a0aaf9efc4fce548d8a0b3e00000000000000000000000033db966328ea213b0f76ef96ca368ab37779f06500000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044485cc955000000000000000000000000fad1c94469700833717fa8a3017278bc1ca8031c000000000000000000000000fad1c94469700833717fa8a3017278bc1ca8031c00000000000000000000000000000000000000000000000000000000", + "isProxy": true, + "name": "TransparentUpgradeableProxy" + }, + { + "address": "0x2b2a158B4059C840c7aC67399B153bb567D06303", + "constructorArguments": "", + "isProxy": false, + "name": "StorageGasOracle" + }, + { + "address": "0x5CE550e14B82a9F32A0aaF9eFc4Fce548D8A0B3e", + "constructorArguments": "", + "isProxy": false, + "name": "InterchainGasPaymaster" + }, + { + "address": "0x5CBf4e70448Ed46c2616b04e9ebc72D29FF0cfA9", + "constructorArguments": "0000000000000000000000005ce550e14b82a9f32a0aaf9efc4fce548d8a0b3e00000000000000000000000033db966328ea213b0f76ef96ca368ab37779f06500000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044485cc955000000000000000000000000fad1c94469700833717fa8a3017278bc1ca8031c000000000000000000000000fad1c94469700833717fa8a3017278bc1ca8031c00000000000000000000000000000000000000000000000000000000", + "isProxy": true, + "name": "TransparentUpgradeableProxy" + }, + { + "address": "0x2b2a158B4059C840c7aC67399B153bb567D06303", + "constructorArguments": "", + "isProxy": false, + "name": "StorageGasOracle" + }, + { + "address": "0x5CE550e14B82a9F32A0aaF9eFc4Fce548D8A0B3e", + "constructorArguments": "", + "isProxy": false, + "name": "InterchainGasPaymaster" + }, + { + "address": "0x5CBf4e70448Ed46c2616b04e9ebc72D29FF0cfA9", + "constructorArguments": "0000000000000000000000005ce550e14b82a9f32a0aaf9efc4fce548d8a0b3e00000000000000000000000033db966328ea213b0f76ef96ca368ab37779f06500000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044485cc955000000000000000000000000fad1c94469700833717fa8a3017278bc1ca8031c000000000000000000000000fad1c94469700833717fa8a3017278bc1ca8031c00000000000000000000000000000000000000000000000000000000", + "isProxy": true, + "name": "TransparentUpgradeableProxy" + }, + { + "address": "0x2b2a158B4059C840c7aC67399B153bb567D06303", + "constructorArguments": "", + "isProxy": false, + "name": "StorageGasOracle" + }, + { + "address": "0x5CE550e14B82a9F32A0aaF9eFc4Fce548D8A0B3e", + "constructorArguments": "", + "isProxy": false, + "name": "InterchainGasPaymaster" + }, + { + "address": "0x5CBf4e70448Ed46c2616b04e9ebc72D29FF0cfA9", + "constructorArguments": "0000000000000000000000005ce550e14b82a9f32a0aaf9efc4fce548d8a0b3e00000000000000000000000033db966328ea213b0f76ef96ca368ab37779f06500000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044485cc955000000000000000000000000fad1c94469700833717fa8a3017278bc1ca8031c000000000000000000000000fad1c94469700833717fa8a3017278bc1ca8031c00000000000000000000000000000000000000000000000000000000", + "isProxy": true, + "name": "TransparentUpgradeableProxy" + }, + { + "address": "0x98AAE089CaD930C64a76dD2247a2aC5773a4B8cE", + "constructorArguments": "00000000000000000000000046f7c5d896bbec89be1b19e4485e59b4be49e9cc", + "isProxy": false, + "name": "MerkleTreeHook" + }, + { + "address": "0x07009DA2249c388aD0f416a235AfE90D784e1aAc", + "constructorArguments": "00000000000000000000000046f7c5d896bbec89be1b19e4485e59b4be49e9cc000000000000000000000000fad1c94469700833717fa8a3017278bc1ca8031c00000000000000000000000098aae089cad930c64a76dd2247a2ac5773a4b8ce", + "isProxy": false, + "name": "FallbackRoutingHook" + }, + { + "address": "0xF7561c34f17A32D5620583A3397C304e7038a7F6", + "constructorArguments": "", + "isProxy": false, + "name": "PausableHook" + }, + { + "address": "0x2b2a158B4059C840c7aC67399B153bb567D06303", + "constructorArguments": "", + "isProxy": false, + "name": "StorageGasOracle" + }, + { + "address": "0x5CE550e14B82a9F32A0aaF9eFc4Fce548D8A0B3e", + "constructorArguments": "", + "isProxy": false, + "name": "InterchainGasPaymaster" + }, + { + "address": "0x5CBf4e70448Ed46c2616b04e9ebc72D29FF0cfA9", + "constructorArguments": "0000000000000000000000005ce550e14b82a9f32a0aaf9efc4fce548d8a0b3e00000000000000000000000033db966328ea213b0f76ef96ca368ab37779f06500000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044485cc955000000000000000000000000fad1c94469700833717fa8a3017278bc1ca8031c000000000000000000000000fad1c94469700833717fa8a3017278bc1ca8031c00000000000000000000000000000000000000000000000000000000", + "isProxy": true, + "name": "TransparentUpgradeableProxy" + }, + { + "address": "0x2b2a158B4059C840c7aC67399B153bb567D06303", + "constructorArguments": "", + "isProxy": false, + "name": "StorageGasOracle" + }, + { + "address": "0x5CE550e14B82a9F32A0aaF9eFc4Fce548D8A0B3e", + "constructorArguments": "", + "isProxy": false, + "name": "InterchainGasPaymaster" + }, + { + "address": "0x5CBf4e70448Ed46c2616b04e9ebc72D29FF0cfA9", + "constructorArguments": "0000000000000000000000005ce550e14b82a9f32a0aaf9efc4fce548d8a0b3e00000000000000000000000033db966328ea213b0f76ef96ca368ab37779f06500000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044485cc955000000000000000000000000fad1c94469700833717fa8a3017278bc1ca8031c000000000000000000000000fad1c94469700833717fa8a3017278bc1ca8031c00000000000000000000000000000000000000000000000000000000", + "isProxy": true, + "name": "TransparentUpgradeableProxy" + }, + { + "address": "0x2b2a158B4059C840c7aC67399B153bb567D06303", + "constructorArguments": "", + "isProxy": false, + "name": "StorageGasOracle" + }, + { + "address": "0x5CE550e14B82a9F32A0aaF9eFc4Fce548D8A0B3e", + "constructorArguments": "", + "isProxy": false, + "name": "InterchainGasPaymaster" + }, + { + "address": "0x5CBf4e70448Ed46c2616b04e9ebc72D29FF0cfA9", + "constructorArguments": "0000000000000000000000005ce550e14b82a9f32a0aaf9efc4fce548d8a0b3e00000000000000000000000033db966328ea213b0f76ef96ca368ab37779f06500000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044485cc955000000000000000000000000fad1c94469700833717fa8a3017278bc1ca8031c000000000000000000000000fad1c94469700833717fa8a3017278bc1ca8031c00000000000000000000000000000000000000000000000000000000", + "isProxy": true, + "name": "TransparentUpgradeableProxy" + }, + { + "address": "0x2b2a158B4059C840c7aC67399B153bb567D06303", + "constructorArguments": "", + "isProxy": false, + "name": "StorageGasOracle" + }, + { + "address": "0x5CE550e14B82a9F32A0aaF9eFc4Fce548D8A0B3e", + "constructorArguments": "", + "isProxy": false, + "name": "InterchainGasPaymaster" + }, + { + "address": "0x5CBf4e70448Ed46c2616b04e9ebc72D29FF0cfA9", + "constructorArguments": "0000000000000000000000005ce550e14b82a9f32a0aaf9efc4fce548d8a0b3e00000000000000000000000033db966328ea213b0f76ef96ca368ab37779f06500000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044485cc955000000000000000000000000fad1c94469700833717fa8a3017278bc1ca8031c000000000000000000000000fad1c94469700833717fa8a3017278bc1ca8031c00000000000000000000000000000000000000000000000000000000", + "isProxy": true, + "name": "TransparentUpgradeableProxy" + }, + { + "address": "0x2b2a158B4059C840c7aC67399B153bb567D06303", + "constructorArguments": "", + "isProxy": false, + "name": "StorageGasOracle" + }, + { + "address": "0x5CE550e14B82a9F32A0aaF9eFc4Fce548D8A0B3e", + "constructorArguments": "", + "isProxy": false, + "name": "InterchainGasPaymaster" + }, + { + "address": "0x5CBf4e70448Ed46c2616b04e9ebc72D29FF0cfA9", + "constructorArguments": "0000000000000000000000005ce550e14b82a9f32a0aaf9efc4fce548d8a0b3e00000000000000000000000033db966328ea213b0f76ef96ca368ab37779f06500000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044485cc955000000000000000000000000fad1c94469700833717fa8a3017278bc1ca8031c000000000000000000000000fad1c94469700833717fa8a3017278bc1ca8031c00000000000000000000000000000000000000000000000000000000", + "isProxy": true, + "name": "TransparentUpgradeableProxy" + }, + { + "address": "0x2b2a158B4059C840c7aC67399B153bb567D06303", + "constructorArguments": "", + "isProxy": false, + "name": "StorageGasOracle" + }, + { + "address": "0x5CE550e14B82a9F32A0aaF9eFc4Fce548D8A0B3e", + "constructorArguments": "", + "isProxy": false, + "name": "InterchainGasPaymaster" + }, + { + "address": "0x5CBf4e70448Ed46c2616b04e9ebc72D29FF0cfA9", + "constructorArguments": "0000000000000000000000005ce550e14b82a9f32a0aaf9efc4fce548d8a0b3e00000000000000000000000033db966328ea213b0f76ef96ca368ab37779f06500000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044485cc955000000000000000000000000fad1c94469700833717fa8a3017278bc1ca8031c000000000000000000000000fad1c94469700833717fa8a3017278bc1ca8031c00000000000000000000000000000000000000000000000000000000", + "isProxy": true, + "name": "TransparentUpgradeableProxy" + }, + { + "address": "0x6b1bb4ce664Bb4164AEB4d3D2E7DE7450DD8084C", + "constructorArguments": "000000000000000000000000000000000000000000000000000000003b9aca000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000fad1c94469700833717fa8a3017278bc1ca8031c000000000000000000000000fad1c94469700833717fa8a3017278bc1ca8031c", + "isProxy": false, + "name": "ProtocolFee" + }, + { + "address": "0xAb9B273366D794B7F80B4378bc8Aaca75C6178E2", + "constructorArguments": "00000000000000000000000046f7c5d896bbec89be1b19e4485e59b4be49e9cc", + "isProxy": false, + "name": "ValidatorAnnounce" + } + ], "moonbasealpha": [ { "address": "0xb241991527F1C21adE14F55589E5940aC4852Fa0", diff --git a/typescript/infra/config/environments/testnet4/funding.ts b/typescript/infra/config/environments/testnet4/funding.ts index 42d9c75c9..04ec56c98 100644 --- a/typescript/infra/config/environments/testnet4/funding.ts +++ b/typescript/infra/config/environments/testnet4/funding.ts @@ -1,5 +1,3 @@ -import { RpcConsensusType } from '@hyperlane-xyz/sdk'; - import { KeyFunderConfig } from '../../../src/config/funding.js'; import { Role } from '../../../src/roles.js'; import { Contexts } from '../../contexts.js'; @@ -9,7 +7,7 @@ import { environment } from './chains.js'; export const keyFunderConfig: KeyFunderConfig = { docker: { repo: 'gcr.io/abacus-labs-dev/hyperlane-monorepo', - tag: 'b22a0f4-20240523-140812', + tag: 'efa9025-20240605-091304', }, // We're currently using the same deployer key as testnet2. // To minimize nonce clobbering we offset the key funder cron @@ -23,13 +21,14 @@ export const keyFunderConfig: KeyFunderConfig = { [Contexts.Hyperlane]: [Role.Relayer, Role.Kathy], [Contexts.ReleaseCandidate]: [Role.Relayer, Role.Kathy], }, - connectionType: RpcConsensusType.Fallback, // desired balance config desiredBalancePerChain: { alfajores: '5', bsctestnet: '5', fuji: '5', plumetestnet: '0.2', + holesky: '5', + // Funder boosts itself upto 5x balance on L2 before dispersing funds scrollsepolia: '1', sepolia: '5', }, diff --git a/typescript/infra/config/environments/testnet4/gas-oracle.ts b/typescript/infra/config/environments/testnet4/gas-oracle.ts index 18d94c2e4..f16da2ed3 100644 --- a/typescript/infra/config/environments/testnet4/gas-oracle.ts +++ b/typescript/infra/config/environments/testnet4/gas-oracle.ts @@ -19,6 +19,7 @@ import { ethereumChainNames } from './chains.js'; const gasPrices: ChainMap = { alfajores: ethers.utils.parseUnits('10', 'gwei'), fuji: ethers.utils.parseUnits('30', 'gwei'), + holesky: ethers.utils.parseUnits('10', 'gwei'), bsctestnet: ethers.utils.parseUnits('15', 'gwei'), sepolia: ethers.utils.parseUnits('5', 'gwei'), scrollsepolia: ethers.utils.parseUnits('0.5', 'gwei'), @@ -48,6 +49,7 @@ const chainTokenRarity: ChainMap = { alfajores: Rarity.Common, fuji: Rarity.Rare, bsctestnet: Rarity.Rare, + holesky: Rarity.Common, sepolia: Rarity.Mythic, scrollsepolia: Rarity.Rare, chiado: Rarity.Common, diff --git a/typescript/infra/config/environments/testnet4/helloworld.ts b/typescript/infra/config/environments/testnet4/helloworld.ts index e6f094c7d..dee5ab3f2 100644 --- a/typescript/infra/config/environments/testnet4/helloworld.ts +++ b/typescript/infra/config/environments/testnet4/helloworld.ts @@ -1,5 +1,3 @@ -import { RpcConsensusType } from '@hyperlane-xyz/sdk'; - import { HelloWorldConfig, HelloWorldKathyRunMode, @@ -15,7 +13,7 @@ export const hyperlaneHelloworld: HelloWorldConfig = { kathy: { docker: { repo: 'gcr.io/abacus-labs-dev/hyperlane-monorepo', - tag: 'b22a0f4-20240523-140812', + tag: 'efa9025-20240605-091304', }, chainsToSkip: [], runEnv: environment, @@ -26,7 +24,6 @@ export const hyperlaneHelloworld: HelloWorldConfig = { }, messageSendTimeout: 1000 * 60 * 10, // 10 min messageReceiptTimeout: 1000 * 60 * 20, // 20 min - connectionType: RpcConsensusType.Fallback, }, }; @@ -35,7 +32,7 @@ export const releaseCandidateHelloworld: HelloWorldConfig = { kathy: { docker: { repo: 'gcr.io/abacus-labs-dev/hyperlane-monorepo', - tag: 'b22a0f4-20240523-140812', + tag: 'efa9025-20240605-091304', }, chainsToSkip: [], runEnv: environment, @@ -45,7 +42,6 @@ export const releaseCandidateHelloworld: HelloWorldConfig = { }, messageSendTimeout: 1000 * 60 * 8, // 8 min messageReceiptTimeout: 1000 * 60 * 20, // 20 min - connectionType: RpcConsensusType.Fallback, }, }; diff --git a/typescript/infra/config/environments/testnet4/index.ts b/typescript/infra/config/environments/testnet4/index.ts index 9eaa66e1c..1d1204083 100644 --- a/typescript/infra/config/environments/testnet4/index.ts +++ b/typescript/infra/config/environments/testnet4/index.ts @@ -1,15 +1,21 @@ -import { RpcConsensusType } from '@hyperlane-xyz/sdk'; +import { IRegistry } from '@hyperlane-xyz/registry'; +import { objMerge } from '@hyperlane-xyz/utils'; import { getKeysForRole, + getMultiProtocolProvider, getMultiProviderForRole, } from '../../../scripts/agent-utils.js'; +import { getRegistryForEnvironment } from '../../../src/config/chain.js'; import { EnvironmentConfig } from '../../../src/config/environment.js'; import { Role } from '../../../src/roles.js'; import { Contexts } from '../../contexts.js'; import { agents } from './agent.js'; -import { environment as environmentName, testnetConfigs } from './chains.js'; +import { + chainMetadataOverrides, + environment as environmentName, +} from './chains.js'; import { core } from './core.js'; import { keyFunderConfig } from './funding.js'; import { helloWorld } from './helloworld.js'; @@ -18,27 +24,38 @@ import { infrastructure } from './infrastructure.js'; import { bridgeAdapterConfigs } from './liquidityLayer.js'; import { liquidityLayerRelayerConfig } from './middleware.js'; import { owners } from './owners.js'; +import { supportedChainNames } from './supportedChainNames.js'; + +const getRegistry = async (useSecrets = true): Promise => + getRegistryForEnvironment( + environmentName, + supportedChainNames, + chainMetadataOverrides, + useSecrets, + ); export const environment: EnvironmentConfig = { environment: environmentName, - chainMetadataConfigs: testnetConfigs, - getMultiProvider: ( + supportedChainNames, + getRegistry, + getMultiProtocolProvider: async () => + getMultiProtocolProvider(await getRegistry()), + getMultiProvider: async ( context: Contexts = Contexts.Hyperlane, role: Role = Role.Deployer, - connectionType?: RpcConsensusType, + useSecrets?: boolean, ) => getMultiProviderForRole( - testnetConfigs, environmentName, + await getRegistry(useSecrets), context, role, undefined, - connectionType, ), getKeys: ( context: Contexts = Contexts.Hyperlane, role: Role = Role.Deployer, - ) => getKeysForRole(testnetConfigs, environmentName, context, role), + ) => getKeysForRole(environmentName, supportedChainNames, context, role), agents, core, igp, diff --git a/typescript/infra/config/environments/testnet4/ism/verification.json b/typescript/infra/config/environments/testnet4/ism/verification.json index 10b6f54c1..2b2cd3331 100644 --- a/typescript/infra/config/environments/testnet4/ism/verification.json +++ b/typescript/infra/config/environments/testnet4/ism/verification.json @@ -1,1498 +1,1560 @@ { "alfajores": [ { - "name": "StaticMultisigIsmFactory", "address": "0x9AF85731EDd41E2E50F81Ef8a0A69D2fB836EDf9", "constructorArguments": "", - "isProxy": false + "isProxy": false, + "name": "StaticMultisigIsmFactory" }, { - "name": "StaticAggregationIsmFactory", "address": "0xBEd8Fd6d5c6cBd878479C25f4725C7c842a43821", "constructorArguments": "", - "isProxy": false + "isProxy": false, + "name": "StaticAggregationIsmFactory" }, { - "name": "DomainRoutingIsmFactory", "address": "0x98F44EA5b9cA6aa02a5B75f31E0621083d9096a2", "constructorArguments": "", - "isProxy": false + "isProxy": false, + "name": "DomainRoutingIsmFactory" }, { - "name": "StaticMerkleRootMultisigIsmFactory", "address": "0x6525Ac4008E38e0E70DaEf59d5f0e1721bd8aA83", "constructorArguments": "", - "isProxy": false + "isProxy": false, + "name": "StaticMerkleRootMultisigIsmFactory" }, { - "name": "StaticMessageIdMultisigIsmFactory", "address": "0x4C739E01f295B70762C0bA9D86123E1775C2f703", "constructorArguments": "", - "isProxy": false + "isProxy": false, + "name": "StaticMessageIdMultisigIsmFactory" }, { - "name": "StaticMerkleRootMultisigIsmFactory", "address": "0x9A574458497FCaB5E5673a2610C108725002DbA3", "constructorArguments": "", - "isProxy": false + "isProxy": false, + "name": "StaticMerkleRootMultisigIsmFactory" }, { - "name": "StaticMerkleRootMultisigIsmFactory", "address": "0xa9C7e306C0941896CA1fd528aA59089571D8D67E", "constructorArguments": "", - "isProxy": false + "isProxy": false, + "name": "StaticMerkleRootMultisigIsmFactory" }, { - "name": "StaticMerkleRootMultisigIsm", - "address": "0x826Ab153e944cE1B251aBD174071DF70d71132D7" + "address": "0x826Ab153e944cE1B251aBD174071DF70d71132D7", + "name": "StaticMerkleRootMultisigIsm" }, { - "name": "StaticMessageIdMultisigIsmFactory", "address": "0xC1b8c0e56D6a34940Ee2B86172450B54AFd633A7", "constructorArguments": "", - "isProxy": false + "isProxy": false, + "name": "StaticMessageIdMultisigIsmFactory" }, { - "name": "StaticMessageIdMultisigIsm", - "address": "0x78ebeCE0fCAa39F0F0C422E87EBd6BcB708aa763" + "address": "0x78ebeCE0fCAa39F0F0C422E87EBd6BcB708aa763", + "name": "StaticMessageIdMultisigIsm" }, { - "name": "StaticAggregationIsmFactory", "address": "0x4bE8AC22f506B1504C93C3A5b1579C5e7c550D9C", "constructorArguments": "", - "isProxy": false + "isProxy": false, + "name": "StaticAggregationIsmFactory" }, { - "name": "StaticAggregationIsm", - "address": "0xd93F514f36d528DCDc3af1C92788f1bf1f480A7f" + "address": "0xd93F514f36d528DCDc3af1C92788f1bf1f480A7f", + "name": "StaticAggregationIsm" }, { - "name": "StaticAggregationHookFactory", "address": "0x71bB34Ee833467443628CEdFAA188B2387827Cee", "constructorArguments": "", - "isProxy": false + "isProxy": false, + "name": "StaticAggregationHookFactory" }, { - "name": "StaticAggregationHook", - "address": "0x019e0a350D85eF67250dD88CD6477ad5E0c6E31e" + "address": "0x019e0a350D85eF67250dD88CD6477ad5E0c6E31e", + "name": "StaticAggregationHook" }, { - "name": "DomainRoutingIsmFactory", "address": "0x37308d498bc7B0f002cb02Cf8fA01770dC2169c8", "constructorArguments": "", - "isProxy": false + "isProxy": false, + "name": "DomainRoutingIsmFactory" }, { - "name": "DomaingRoutingIsm", - "address": "0x94087079Bf22D8e2BCE02e2180e738C3F21dD44E" + "address": "0x94087079Bf22D8e2BCE02e2180e738C3F21dD44E", + "name": "DomaingRoutingIsm" }, { - "name": "StaticMerkleRootMultisigIsm", - "address": "0x826Ab153e944cE1B251aBD174071DF70d71132D7" + "address": "0x826Ab153e944cE1B251aBD174071DF70d71132D7", + "name": "StaticMerkleRootMultisigIsm" }, { - "name": "StaticMessageIdMultisigIsm", - "address": "0x78ebeCE0fCAa39F0F0C422E87EBd6BcB708aa763" + "address": "0x78ebeCE0fCAa39F0F0C422E87EBd6BcB708aa763", + "name": "StaticMessageIdMultisigIsm" }, { - "name": "StaticAggregationIsm", - "address": "0xd93F514f36d528DCDc3af1C92788f1bf1f480A7f" + "address": "0xd93F514f36d528DCDc3af1C92788f1bf1f480A7f", + "name": "StaticAggregationIsm" }, { - "name": "StaticAggregationHook", - "address": "0x019e0a350D85eF67250dD88CD6477ad5E0c6E31e" + "address": "0x019e0a350D85eF67250dD88CD6477ad5E0c6E31e", + "name": "StaticAggregationHook" }, { - "name": "DomaingRoutingIsm", - "address": "0x94087079Bf22D8e2BCE02e2180e738C3F21dD44E" + "address": "0x94087079Bf22D8e2BCE02e2180e738C3F21dD44E", + "name": "DomaingRoutingIsm" }, { - "name": "StaticMerkleRootMultisigIsm", - "address": "0x826Ab153e944cE1B251aBD174071DF70d71132D7" + "address": "0x826Ab153e944cE1B251aBD174071DF70d71132D7", + "name": "StaticMerkleRootMultisigIsm" }, { - "name": "StaticMessageIdMultisigIsm", - "address": "0x78ebeCE0fCAa39F0F0C422E87EBd6BcB708aa763" + "address": "0x78ebeCE0fCAa39F0F0C422E87EBd6BcB708aa763", + "name": "StaticMessageIdMultisigIsm" }, { - "name": "StaticAggregationIsm", - "address": "0xd93F514f36d528DCDc3af1C92788f1bf1f480A7f" + "address": "0xd93F514f36d528DCDc3af1C92788f1bf1f480A7f", + "name": "StaticAggregationIsm" }, { - "name": "StaticAggregationHook", - "address": "0x019e0a350D85eF67250dD88CD6477ad5E0c6E31e" + "address": "0x019e0a350D85eF67250dD88CD6477ad5E0c6E31e", + "name": "StaticAggregationHook" }, { - "name": "DomaingRoutingIsm", - "address": "0x94087079Bf22D8e2BCE02e2180e738C3F21dD44E" + "address": "0x94087079Bf22D8e2BCE02e2180e738C3F21dD44E", + "name": "DomaingRoutingIsm" }, { - "name": "StaticMerkleRootMultisigIsm", - "address": "0x826Ab153e944cE1B251aBD174071DF70d71132D7" + "address": "0x826Ab153e944cE1B251aBD174071DF70d71132D7", + "name": "StaticMerkleRootMultisigIsm" }, { - "name": "StaticMessageIdMultisigIsm", - "address": "0x78ebeCE0fCAa39F0F0C422E87EBd6BcB708aa763" + "address": "0x78ebeCE0fCAa39F0F0C422E87EBd6BcB708aa763", + "name": "StaticMessageIdMultisigIsm" }, { - "name": "StaticAggregationIsm", - "address": "0xd93F514f36d528DCDc3af1C92788f1bf1f480A7f" + "address": "0xd93F514f36d528DCDc3af1C92788f1bf1f480A7f", + "name": "StaticAggregationIsm" }, { - "name": "StaticAggregationHook", - "address": "0x019e0a350D85eF67250dD88CD6477ad5E0c6E31e" + "address": "0x019e0a350D85eF67250dD88CD6477ad5E0c6E31e", + "name": "StaticAggregationHook" }, { - "name": "DomaingRoutingIsm", - "address": "0x94087079Bf22D8e2BCE02e2180e738C3F21dD44E" + "address": "0x94087079Bf22D8e2BCE02e2180e738C3F21dD44E", + "name": "DomaingRoutingIsm" }, { - "name": "StaticMerkleRootMultisigIsm", - "address": "0x826Ab153e944cE1B251aBD174071DF70d71132D7" + "address": "0x826Ab153e944cE1B251aBD174071DF70d71132D7", + "name": "StaticMerkleRootMultisigIsm" }, { - "name": "StaticMessageIdMultisigIsm", - "address": "0x78ebeCE0fCAa39F0F0C422E87EBd6BcB708aa763" + "address": "0x78ebeCE0fCAa39F0F0C422E87EBd6BcB708aa763", + "name": "StaticMessageIdMultisigIsm" }, { - "name": "StaticAggregationIsm", - "address": "0xd93F514f36d528DCDc3af1C92788f1bf1f480A7f" + "address": "0xd93F514f36d528DCDc3af1C92788f1bf1f480A7f", + "name": "StaticAggregationIsm" }, { - "name": "StaticAggregationHook", - "address": "0x019e0a350D85eF67250dD88CD6477ad5E0c6E31e" + "address": "0x019e0a350D85eF67250dD88CD6477ad5E0c6E31e", + "name": "StaticAggregationHook" }, { - "name": "DomaingRoutingIsm", - "address": "0x94087079Bf22D8e2BCE02e2180e738C3F21dD44E" + "address": "0x94087079Bf22D8e2BCE02e2180e738C3F21dD44E", + "name": "DomaingRoutingIsm" }, { - "name": "StaticMerkleRootMultisigIsm", - "address": "0x826Ab153e944cE1B251aBD174071DF70d71132D7" + "address": "0x826Ab153e944cE1B251aBD174071DF70d71132D7", + "name": "StaticMerkleRootMultisigIsm" }, { - "name": "StaticMessageIdMultisigIsm", - "address": "0x78ebeCE0fCAa39F0F0C422E87EBd6BcB708aa763" + "address": "0x78ebeCE0fCAa39F0F0C422E87EBd6BcB708aa763", + "name": "StaticMessageIdMultisigIsm" }, { - "name": "StaticAggregationIsm", - "address": "0xd93F514f36d528DCDc3af1C92788f1bf1f480A7f" + "address": "0xd93F514f36d528DCDc3af1C92788f1bf1f480A7f", + "name": "StaticAggregationIsm" }, { - "name": "StaticAggregationHook", - "address": "0x019e0a350D85eF67250dD88CD6477ad5E0c6E31e" + "address": "0x019e0a350D85eF67250dD88CD6477ad5E0c6E31e", + "name": "StaticAggregationHook" }, { - "name": "DomaingRoutingIsm", - "address": "0x94087079Bf22D8e2BCE02e2180e738C3F21dD44E" + "address": "0x94087079Bf22D8e2BCE02e2180e738C3F21dD44E", + "name": "DomaingRoutingIsm" }, { - "name": "StaticMerkleRootMultisigIsm", "address": "0x826Ab153e944cE1B251aBD174071DF70d71132D7", "constructorArguments": "", - "isProxy": true + "isProxy": true, + "name": "StaticMerkleRootMultisigIsm" }, { - "name": "StaticMessageIdMultisigIsm", "address": "0x78ebeCE0fCAa39F0F0C422E87EBd6BcB708aa763", "constructorArguments": "", - "isProxy": true + "isProxy": true, + "name": "StaticMessageIdMultisigIsm" }, { - "name": "StaticAggregationIsm", "address": "0xd93F514f36d528DCDc3af1C92788f1bf1f480A7f", "constructorArguments": "", - "isProxy": true + "isProxy": true, + "name": "StaticAggregationIsm" }, { - "name": "StaticAggregationHook", "address": "0x019e0a350D85eF67250dD88CD6477ad5E0c6E31e", "constructorArguments": "", - "isProxy": true + "isProxy": true, + "name": "StaticAggregationHook" }, { - "name": "DomaingRoutingIsm", "address": "0xd5ab9FaC601Ed731d5e9c87E5977D2e5fD380666", "constructorArguments": "", - "isProxy": true + "isProxy": true, + "name": "DomaingRoutingIsm" }, { - "name": "StaticMerkleRootMultisigIsm", "address": "0x826Ab153e944cE1B251aBD174071DF70d71132D7", "constructorArguments": "", - "isProxy": true + "isProxy": true, + "name": "StaticMerkleRootMultisigIsm" }, { - "name": "StaticMessageIdMultisigIsm", "address": "0x78ebeCE0fCAa39F0F0C422E87EBd6BcB708aa763", "constructorArguments": "", - "isProxy": true + "isProxy": true, + "name": "StaticMessageIdMultisigIsm" }, { - "name": "StaticAggregationIsm", "address": "0xd93F514f36d528DCDc3af1C92788f1bf1f480A7f", "constructorArguments": "", - "isProxy": true + "isProxy": true, + "name": "StaticAggregationIsm" }, { - "name": "StaticAggregationHook", "address": "0x019e0a350D85eF67250dD88CD6477ad5E0c6E31e", "constructorArguments": "", - "isProxy": true + "isProxy": true, + "name": "StaticAggregationHook" }, { - "name": "DomaingRoutingIsm", "address": "0xd5ab9FaC601Ed731d5e9c87E5977D2e5fD380666", "constructorArguments": "", - "isProxy": true + "isProxy": true, + "name": "DomaingRoutingIsm" }, { - "name": "StaticMerkleRootMultisigIsm", "address": "0x826Ab153e944cE1B251aBD174071DF70d71132D7", "constructorArguments": "", - "isProxy": true + "isProxy": true, + "name": "StaticMerkleRootMultisigIsm" }, { - "name": "StaticMessageIdMultisigIsm", "address": "0x78ebeCE0fCAa39F0F0C422E87EBd6BcB708aa763", "constructorArguments": "", - "isProxy": true + "isProxy": true, + "name": "StaticMessageIdMultisigIsm" }, { - "name": "StaticAggregationIsm", "address": "0xd93F514f36d528DCDc3af1C92788f1bf1f480A7f", "constructorArguments": "", - "isProxy": true + "isProxy": true, + "name": "StaticAggregationIsm" }, { - "name": "StaticAggregationHook", "address": "0x019e0a350D85eF67250dD88CD6477ad5E0c6E31e", "constructorArguments": "", - "isProxy": true + "isProxy": true, + "name": "StaticAggregationHook" }, { - "name": "DomaingRoutingIsm", "address": "0xd5ab9FaC601Ed731d5e9c87E5977D2e5fD380666", "constructorArguments": "", - "isProxy": true + "isProxy": true, + "name": "DomaingRoutingIsm" }, { - "name": "StaticMerkleRootMultisigIsm", "address": "0x826Ab153e944cE1B251aBD174071DF70d71132D7", "constructorArguments": "", - "isProxy": true + "isProxy": true, + "name": "StaticMerkleRootMultisigIsm" }, { - "name": "StaticMessageIdMultisigIsm", "address": "0x78ebeCE0fCAa39F0F0C422E87EBd6BcB708aa763", "constructorArguments": "", - "isProxy": true + "isProxy": true, + "name": "StaticMessageIdMultisigIsm" }, { - "name": "StaticAggregationIsm", "address": "0xd93F514f36d528DCDc3af1C92788f1bf1f480A7f", "constructorArguments": "", - "isProxy": true + "isProxy": true, + "name": "StaticAggregationIsm" }, { - "name": "StaticAggregationHook", "address": "0x019e0a350D85eF67250dD88CD6477ad5E0c6E31e", "constructorArguments": "", - "isProxy": true + "isProxy": true, + "name": "StaticAggregationHook" }, { - "name": "DomaingRoutingIsm", "address": "0xd5ab9FaC601Ed731d5e9c87E5977D2e5fD380666", "constructorArguments": "", - "isProxy": true + "isProxy": true, + "name": "DomaingRoutingIsm" } ], - "fuji": [ + "bsctestnet": [ { - "name": "StaticMultisigIsmFactory", - "address": "0x094652a8ea2153A03916771a778E7b66839A4F58", + "address": "0xfb6B94750e1307719892fBC21AC7A0C74A467869", "constructorArguments": "", - "isProxy": false + "isProxy": false, + "name": "StaticMultisigIsmFactory" }, { - "name": "StaticAggregationIsmFactory", - "address": "0x9fB5D10C07569F2EBdc8ec4432B3a52b6d0ad9A0", + "address": "0xda72972291172B9966Dec7606d45d72e2b9f2470", "constructorArguments": "", - "isProxy": false + "isProxy": false, + "name": "StaticAggregationIsmFactory" }, { - "name": "DomainRoutingIsmFactory", - "address": "0xB24C91238eA30D59CF58CEB8dd5e4eaf70544d47", + "address": "0x0CA314006fe0e7EF88ad2Bb69a7421aB2f1C5288", "constructorArguments": "", - "isProxy": false + "isProxy": false, + "name": "DomainRoutingIsmFactory" }, { - "name": "StaticMerkleRootMultisigIsmFactory", - "address": "0x76a1aaE73e9D837ceF10Ac5AF5AfDD30d7612f98", + "address": "0x8DA546024850D998Be3b65204c0F0f63C1f3B0A1", "constructorArguments": "", - "isProxy": false + "isProxy": false, + "name": "StaticMerkleRootMultisigIsmFactory" }, { - "name": "StaticMessageIdMultisigIsmFactory", - "address": "0xA1e6d12a3F5F7e05E4D6cb39E71534F27fE29561", + "address": "0x7Bc0bb71aE0E9bDC0Ac53e932870728D95FA28bF", "constructorArguments": "", - "isProxy": false + "isProxy": false, + "name": "StaticMessageIdMultisigIsmFactory" }, { - "name": "StaticMerkleRootMultisigIsmFactory", - "address": "0xc25e8cE0960fa2573AFa591484F2cA6e4497C2e5", + "address": "0x3E235B90197E1D6b5DB5ad5aD49f2c1ED6406382", "constructorArguments": "", - "isProxy": false + "isProxy": false, + "name": "StaticMerkleRootMultisigIsmFactory" }, { - "name": "StaticMerkleRootMultisigIsm", - "address": "0x074D3C4249AFdac44B70d1D220F358Ff895F7a80" + "address": "0x9b13f3d75797951f463D61092Bba7947c8cEb25c", + "name": "StaticMerkleRootMultisigIsm" }, { - "name": "StaticMerkleRootMultisigIsmFactory", - "address": "0x93F50Ac4E5663DAAb03508008d592f6260964f62", + "address": "0x0D96aF0c01c4bbbadaaF989Eb489c8783F35B763", "constructorArguments": "", - "isProxy": false + "isProxy": false, + "name": "StaticMessageIdMultisigIsmFactory" }, { - "name": "StaticMerkleRootMultisigIsm", - "address": "0x0683D0258A162a87E1F25C454BaA4e9E9DE46B0a" + "address": "0x25069c25466B1F21E0D22f467a5f91bc7b24b515", + "name": "StaticMessageIdMultisigIsm" }, { - "name": "StaticMessageIdMultisigIsmFactory", - "address": "0x90e1F9918F304645e4F6324E5C0EAc70138C84Ce", + "address": "0x40613dE82d672605Ab051C64079022Bb4F8bDE4f", "constructorArguments": "", - "isProxy": false + "isProxy": false, + "name": "StaticAggregationIsmFactory" }, { - "name": "StaticMessageIdMultisigIsm", - "address": "0xd3262339D39103a4b41379b183b0311B78c9a11F" + "address": "0x25adfb5Ddf378EC77cd5842Ff33B96277E4DD29b", + "name": "StaticAggregationIsm" }, { - "name": "StaticAggregationIsmFactory", - "address": "0xF588129ed84F219A1f0f921bE7Aa1B2176516858", + "address": "0xa1145B39F1c7Ef9aA593BC1DB1634b00CC020942", "constructorArguments": "", - "isProxy": false + "isProxy": false, + "name": "StaticAggregationHookFactory" }, { - "name": "StaticAggregationIsm", - "address": "0x6716Ef4e72c74e66eB40198B16b4379a763fCEd8" + "address": "0x3938ED4c6b5a7f9947C44e58e36a864F03228175", + "name": "StaticAggregationHook" }, { - "name": "StaticAggregationHookFactory", - "address": "0x99554CC33cBCd6EDDd2f3fc9c7C9194Cb3b5df1E", + "address": "0xea12ECFD1f241da323e93F12b4ed936403990190", "constructorArguments": "", - "isProxy": false + "isProxy": false, + "name": "DomainRoutingIsmFactory" }, { - "name": "StaticAggregationHook", - "address": "0xBDD7Cfb61D7ae89343b428D3E527BDA9705c4EAC" + "address": "0xf9E264C10E9176c97c22790E0Ece8D98927Bca71", + "name": "DomaingRoutingIsm" }, { - "name": "DomainRoutingIsmFactory", - "address": "0xf9271189Cb30AD1F272f1A9EB2272224135B9350", - "constructorArguments": "", - "isProxy": false + "address": "0x9b13f3d75797951f463D61092Bba7947c8cEb25c", + "name": "StaticMerkleRootMultisigIsm" }, { - "name": "DomaingRoutingIsm", - "address": "0x930c36A0c978B0b86B544859692A1D94c5148204" + "address": "0x25069c25466B1F21E0D22f467a5f91bc7b24b515", + "name": "StaticMessageIdMultisigIsm" }, { - "name": "StaticMerkleRootMultisigIsm", - "address": "0x0683D0258A162a87E1F25C454BaA4e9E9DE46B0a" + "address": "0x25adfb5Ddf378EC77cd5842Ff33B96277E4DD29b", + "name": "StaticAggregationIsm" }, { - "name": "StaticMessageIdMultisigIsm", - "address": "0xd3262339D39103a4b41379b183b0311B78c9a11F" + "address": "0x3938ED4c6b5a7f9947C44e58e36a864F03228175", + "name": "StaticAggregationHook" }, { - "name": "StaticAggregationIsm", - "address": "0x6716Ef4e72c74e66eB40198B16b4379a763fCEd8" + "address": "0xf9E264C10E9176c97c22790E0Ece8D98927Bca71", + "name": "DomaingRoutingIsm" }, { - "name": "StaticAggregationHook", - "address": "0xBDD7Cfb61D7ae89343b428D3E527BDA9705c4EAC" + "address": "0x9b13f3d75797951f463D61092Bba7947c8cEb25c", + "name": "StaticMerkleRootMultisigIsm" }, { - "name": "DomaingRoutingIsm", - "address": "0x930c36A0c978B0b86B544859692A1D94c5148204" + "address": "0x25069c25466B1F21E0D22f467a5f91bc7b24b515", + "name": "StaticMessageIdMultisigIsm" }, { - "name": "StaticMerkleRootMultisigIsm", - "address": "0x0683D0258A162a87E1F25C454BaA4e9E9DE46B0a" + "address": "0x25adfb5Ddf378EC77cd5842Ff33B96277E4DD29b", + "name": "StaticAggregationIsm" }, { - "name": "StaticMessageIdMultisigIsm", - "address": "0xd3262339D39103a4b41379b183b0311B78c9a11F" + "address": "0x3938ED4c6b5a7f9947C44e58e36a864F03228175", + "name": "StaticAggregationHook" }, { - "name": "StaticAggregationIsm", - "address": "0x6716Ef4e72c74e66eB40198B16b4379a763fCEd8" + "address": "0xf9E264C10E9176c97c22790E0Ece8D98927Bca71", + "name": "DomaingRoutingIsm" }, { - "name": "StaticAggregationHook", - "address": "0xBDD7Cfb61D7ae89343b428D3E527BDA9705c4EAC" + "address": "0x9b13f3d75797951f463D61092Bba7947c8cEb25c", + "name": "StaticMerkleRootMultisigIsm" }, { - "name": "DomaingRoutingIsm", - "address": "0x930c36A0c978B0b86B544859692A1D94c5148204" + "address": "0x25069c25466B1F21E0D22f467a5f91bc7b24b515", + "name": "StaticMessageIdMultisigIsm" }, { - "name": "StaticMerkleRootMultisigIsm", - "address": "0x0683D0258A162a87E1F25C454BaA4e9E9DE46B0a" + "address": "0x25adfb5Ddf378EC77cd5842Ff33B96277E4DD29b", + "name": "StaticAggregationIsm" }, { - "name": "StaticMessageIdMultisigIsm", - "address": "0xd3262339D39103a4b41379b183b0311B78c9a11F" + "address": "0x3938ED4c6b5a7f9947C44e58e36a864F03228175", + "name": "StaticAggregationHook" }, { - "name": "StaticAggregationIsm", - "address": "0x6716Ef4e72c74e66eB40198B16b4379a763fCEd8" + "address": "0xf9E264C10E9176c97c22790E0Ece8D98927Bca71", + "name": "DomaingRoutingIsm" }, { - "name": "StaticAggregationHook", - "address": "0xBDD7Cfb61D7ae89343b428D3E527BDA9705c4EAC" + "address": "0x9b13f3d75797951f463D61092Bba7947c8cEb25c", + "name": "StaticMerkleRootMultisigIsm" }, { - "name": "DomaingRoutingIsm", - "address": "0x930c36A0c978B0b86B544859692A1D94c5148204" + "address": "0x25069c25466B1F21E0D22f467a5f91bc7b24b515", + "name": "StaticMessageIdMultisigIsm" }, { - "name": "StaticMerkleRootMultisigIsm", - "address": "0x0683D0258A162a87E1F25C454BaA4e9E9DE46B0a" + "address": "0x25adfb5Ddf378EC77cd5842Ff33B96277E4DD29b", + "name": "StaticAggregationIsm" }, { - "name": "StaticMessageIdMultisigIsm", - "address": "0xd3262339D39103a4b41379b183b0311B78c9a11F" + "address": "0x3938ED4c6b5a7f9947C44e58e36a864F03228175", + "name": "StaticAggregationHook" }, { - "name": "StaticAggregationIsm", - "address": "0x6716Ef4e72c74e66eB40198B16b4379a763fCEd8" + "address": "0xf9E264C10E9176c97c22790E0Ece8D98927Bca71", + "name": "DomaingRoutingIsm" }, { - "name": "StaticAggregationHook", - "address": "0xBDD7Cfb61D7ae89343b428D3E527BDA9705c4EAC" + "address": "0x9b13f3d75797951f463D61092Bba7947c8cEb25c", + "constructorArguments": "", + "isProxy": true, + "name": "StaticMerkleRootMultisigIsm" }, { - "name": "DomaingRoutingIsm", - "address": "0x930c36A0c978B0b86B544859692A1D94c5148204" + "address": "0x25069c25466B1F21E0D22f467a5f91bc7b24b515", + "constructorArguments": "", + "isProxy": true, + "name": "StaticMessageIdMultisigIsm" }, { - "name": "StaticMerkleRootMultisigIsm", - "address": "0x0683D0258A162a87E1F25C454BaA4e9E9DE46B0a" + "address": "0x25adfb5Ddf378EC77cd5842Ff33B96277E4DD29b", + "constructorArguments": "", + "isProxy": true, + "name": "StaticAggregationIsm" }, { - "name": "StaticMessageIdMultisigIsm", - "address": "0xd3262339D39103a4b41379b183b0311B78c9a11F" + "address": "0x3938ED4c6b5a7f9947C44e58e36a864F03228175", + "constructorArguments": "", + "isProxy": true, + "name": "StaticAggregationHook" }, { - "name": "StaticAggregationIsm", - "address": "0x6716Ef4e72c74e66eB40198B16b4379a763fCEd8" + "address": "0x9b13f3d75797951f463D61092Bba7947c8cEb25c", + "constructorArguments": "", + "isProxy": true, + "name": "StaticMerkleRootMultisigIsm" }, { - "name": "StaticAggregationHook", - "address": "0xBDD7Cfb61D7ae89343b428D3E527BDA9705c4EAC" + "address": "0x25069c25466B1F21E0D22f467a5f91bc7b24b515", + "constructorArguments": "", + "isProxy": true, + "name": "StaticMessageIdMultisigIsm" }, { - "name": "DomaingRoutingIsm", - "address": "0x930c36A0c978B0b86B544859692A1D94c5148204" + "address": "0x25adfb5Ddf378EC77cd5842Ff33B96277E4DD29b", + "constructorArguments": "", + "isProxy": true, + "name": "StaticAggregationIsm" }, { - "name": "StaticMerkleRootMultisigIsm", - "address": "0x0683D0258A162a87E1F25C454BaA4e9E9DE46B0a", + "address": "0x3938ED4c6b5a7f9947C44e58e36a864F03228175", "constructorArguments": "", - "isProxy": true + "isProxy": true, + "name": "StaticAggregationHook" }, { - "name": "StaticMessageIdMultisigIsm", - "address": "0xd3262339D39103a4b41379b183b0311B78c9a11F", + "address": "0x9b13f3d75797951f463D61092Bba7947c8cEb25c", "constructorArguments": "", - "isProxy": true + "isProxy": true, + "name": "StaticMerkleRootMultisigIsm" }, { - "name": "StaticAggregationIsm", - "address": "0x6716Ef4e72c74e66eB40198B16b4379a763fCEd8", + "address": "0x25069c25466B1F21E0D22f467a5f91bc7b24b515", "constructorArguments": "", - "isProxy": true + "isProxy": true, + "name": "StaticMessageIdMultisigIsm" }, { - "name": "StaticAggregationHook", - "address": "0xBDD7Cfb61D7ae89343b428D3E527BDA9705c4EAC", + "address": "0x25adfb5Ddf378EC77cd5842Ff33B96277E4DD29b", "constructorArguments": "", - "isProxy": true + "isProxy": true, + "name": "StaticAggregationIsm" }, { - "name": "DomainRoutingIsmFactory", - "address": "0x683a81E0e1a238dcA7341e04c08d3bba6f0Cb74f", + "address": "0x3938ED4c6b5a7f9947C44e58e36a864F03228175", "constructorArguments": "", - "isProxy": false + "isProxy": true, + "name": "StaticAggregationHook" + } + ], + "fuji": [ + { + "address": "0x094652a8ea2153A03916771a778E7b66839A4F58", + "constructorArguments": "", + "isProxy": false, + "name": "StaticMultisigIsmFactory" }, { - "name": "DomaingRoutingIsm", - "address": "0xD47593C21C2429de56AcA808bb2Bbc236c6311DE", + "address": "0x9fB5D10C07569F2EBdc8ec4432B3a52b6d0ad9A0", "constructorArguments": "", - "isProxy": true + "isProxy": false, + "name": "StaticAggregationIsmFactory" }, { - "name": "StaticMerkleRootMultisigIsm", - "address": "0x0683D0258A162a87E1F25C454BaA4e9E9DE46B0a", + "address": "0xB24C91238eA30D59CF58CEB8dd5e4eaf70544d47", "constructorArguments": "", - "isProxy": true + "isProxy": false, + "name": "DomainRoutingIsmFactory" }, { - "name": "StaticMessageIdMultisigIsm", - "address": "0xd3262339D39103a4b41379b183b0311B78c9a11F", + "address": "0x76a1aaE73e9D837ceF10Ac5AF5AfDD30d7612f98", "constructorArguments": "", - "isProxy": true + "isProxy": false, + "name": "StaticMerkleRootMultisigIsmFactory" }, { - "name": "StaticAggregationIsm", - "address": "0x6716Ef4e72c74e66eB40198B16b4379a763fCEd8", + "address": "0xA1e6d12a3F5F7e05E4D6cb39E71534F27fE29561", "constructorArguments": "", - "isProxy": true + "isProxy": false, + "name": "StaticMessageIdMultisigIsmFactory" }, { - "name": "StaticAggregationHook", - "address": "0xBDD7Cfb61D7ae89343b428D3E527BDA9705c4EAC", + "address": "0xc25e8cE0960fa2573AFa591484F2cA6e4497C2e5", "constructorArguments": "", - "isProxy": true + "isProxy": false, + "name": "StaticMerkleRootMultisigIsmFactory" }, { - "name": "DomaingRoutingIsm", - "address": "0xD47593C21C2429de56AcA808bb2Bbc236c6311DE", + "address": "0x074D3C4249AFdac44B70d1D220F358Ff895F7a80", + "name": "StaticMerkleRootMultisigIsm" + }, + { + "address": "0x93F50Ac4E5663DAAb03508008d592f6260964f62", "constructorArguments": "", - "isProxy": true + "isProxy": false, + "name": "StaticMerkleRootMultisigIsmFactory" }, { - "name": "StaticMerkleRootMultisigIsm", "address": "0x0683D0258A162a87E1F25C454BaA4e9E9DE46B0a", + "name": "StaticMerkleRootMultisigIsm" + }, + { + "address": "0x90e1F9918F304645e4F6324E5C0EAc70138C84Ce", "constructorArguments": "", - "isProxy": true + "isProxy": false, + "name": "StaticMessageIdMultisigIsmFactory" }, { - "name": "StaticMessageIdMultisigIsm", "address": "0xd3262339D39103a4b41379b183b0311B78c9a11F", + "name": "StaticMessageIdMultisigIsm" + }, + { + "address": "0xF588129ed84F219A1f0f921bE7Aa1B2176516858", "constructorArguments": "", - "isProxy": true + "isProxy": false, + "name": "StaticAggregationIsmFactory" }, { - "name": "StaticAggregationIsm", "address": "0x6716Ef4e72c74e66eB40198B16b4379a763fCEd8", + "name": "StaticAggregationIsm" + }, + { + "address": "0x99554CC33cBCd6EDDd2f3fc9c7C9194Cb3b5df1E", "constructorArguments": "", - "isProxy": true + "isProxy": false, + "name": "StaticAggregationHookFactory" }, { - "name": "StaticAggregationHook", "address": "0xBDD7Cfb61D7ae89343b428D3E527BDA9705c4EAC", - "constructorArguments": "", - "isProxy": true + "name": "StaticAggregationHook" }, { - "name": "DomaingRoutingIsm", - "address": "0xD47593C21C2429de56AcA808bb2Bbc236c6311DE", + "address": "0xf9271189Cb30AD1F272f1A9EB2272224135B9350", "constructorArguments": "", - "isProxy": true + "isProxy": false, + "name": "DomainRoutingIsmFactory" + }, + { + "address": "0x930c36A0c978B0b86B544859692A1D94c5148204", + "name": "DomaingRoutingIsm" }, { - "name": "StaticMerkleRootMultisigIsm", "address": "0x0683D0258A162a87E1F25C454BaA4e9E9DE46B0a", - "constructorArguments": "", - "isProxy": true + "name": "StaticMerkleRootMultisigIsm" }, { - "name": "StaticMessageIdMultisigIsm", "address": "0xd3262339D39103a4b41379b183b0311B78c9a11F", - "constructorArguments": "", - "isProxy": true + "name": "StaticMessageIdMultisigIsm" }, { - "name": "StaticAggregationIsm", "address": "0x6716Ef4e72c74e66eB40198B16b4379a763fCEd8", - "constructorArguments": "", - "isProxy": true + "name": "StaticAggregationIsm" }, { - "name": "StaticAggregationHook", "address": "0xBDD7Cfb61D7ae89343b428D3E527BDA9705c4EAC", - "constructorArguments": "", - "isProxy": true + "name": "StaticAggregationHook" }, { - "name": "DomaingRoutingIsm", - "address": "0xD47593C21C2429de56AcA808bb2Bbc236c6311DE", - "constructorArguments": "", - "isProxy": true - } - ], - "bsctestnet": [ + "address": "0x930c36A0c978B0b86B544859692A1D94c5148204", + "name": "DomaingRoutingIsm" + }, { - "name": "StaticMultisigIsmFactory", - "address": "0xfb6B94750e1307719892fBC21AC7A0C74A467869", - "constructorArguments": "", - "isProxy": false + "address": "0x0683D0258A162a87E1F25C454BaA4e9E9DE46B0a", + "name": "StaticMerkleRootMultisigIsm" }, { - "name": "StaticAggregationIsmFactory", - "address": "0xda72972291172B9966Dec7606d45d72e2b9f2470", - "constructorArguments": "", - "isProxy": false + "address": "0xd3262339D39103a4b41379b183b0311B78c9a11F", + "name": "StaticMessageIdMultisigIsm" }, { - "name": "DomainRoutingIsmFactory", - "address": "0x0CA314006fe0e7EF88ad2Bb69a7421aB2f1C5288", - "constructorArguments": "", - "isProxy": false + "address": "0x6716Ef4e72c74e66eB40198B16b4379a763fCEd8", + "name": "StaticAggregationIsm" }, { - "name": "StaticMerkleRootMultisigIsmFactory", - "address": "0x8DA546024850D998Be3b65204c0F0f63C1f3B0A1", - "constructorArguments": "", - "isProxy": false + "address": "0xBDD7Cfb61D7ae89343b428D3E527BDA9705c4EAC", + "name": "StaticAggregationHook" }, { - "name": "StaticMessageIdMultisigIsmFactory", - "address": "0x7Bc0bb71aE0E9bDC0Ac53e932870728D95FA28bF", - "constructorArguments": "", - "isProxy": false + "address": "0x930c36A0c978B0b86B544859692A1D94c5148204", + "name": "DomaingRoutingIsm" }, { - "name": "StaticMerkleRootMultisigIsmFactory", - "address": "0x3E235B90197E1D6b5DB5ad5aD49f2c1ED6406382", - "constructorArguments": "", - "isProxy": false + "address": "0x0683D0258A162a87E1F25C454BaA4e9E9DE46B0a", + "name": "StaticMerkleRootMultisigIsm" }, { - "name": "StaticMerkleRootMultisigIsm", - "address": "0x9b13f3d75797951f463D61092Bba7947c8cEb25c" + "address": "0xd3262339D39103a4b41379b183b0311B78c9a11F", + "name": "StaticMessageIdMultisigIsm" }, { - "name": "StaticMessageIdMultisigIsmFactory", - "address": "0x0D96aF0c01c4bbbadaaF989Eb489c8783F35B763", - "constructorArguments": "", - "isProxy": false + "address": "0x6716Ef4e72c74e66eB40198B16b4379a763fCEd8", + "name": "StaticAggregationIsm" }, { - "name": "StaticMessageIdMultisigIsm", - "address": "0x25069c25466B1F21E0D22f467a5f91bc7b24b515" + "address": "0xBDD7Cfb61D7ae89343b428D3E527BDA9705c4EAC", + "name": "StaticAggregationHook" }, { - "name": "StaticAggregationIsmFactory", - "address": "0x40613dE82d672605Ab051C64079022Bb4F8bDE4f", - "constructorArguments": "", - "isProxy": false + "address": "0x930c36A0c978B0b86B544859692A1D94c5148204", + "name": "DomaingRoutingIsm" }, { - "name": "StaticAggregationIsm", - "address": "0x25adfb5Ddf378EC77cd5842Ff33B96277E4DD29b" + "address": "0x0683D0258A162a87E1F25C454BaA4e9E9DE46B0a", + "name": "StaticMerkleRootMultisigIsm" }, { - "name": "StaticAggregationHookFactory", - "address": "0xa1145B39F1c7Ef9aA593BC1DB1634b00CC020942", - "constructorArguments": "", - "isProxy": false + "address": "0xd3262339D39103a4b41379b183b0311B78c9a11F", + "name": "StaticMessageIdMultisigIsm" }, { - "name": "StaticAggregationHook", - "address": "0x3938ED4c6b5a7f9947C44e58e36a864F03228175" + "address": "0x6716Ef4e72c74e66eB40198B16b4379a763fCEd8", + "name": "StaticAggregationIsm" }, { - "name": "DomainRoutingIsmFactory", - "address": "0xea12ECFD1f241da323e93F12b4ed936403990190", - "constructorArguments": "", - "isProxy": false + "address": "0xBDD7Cfb61D7ae89343b428D3E527BDA9705c4EAC", + "name": "StaticAggregationHook" }, { - "name": "DomaingRoutingIsm", - "address": "0xf9E264C10E9176c97c22790E0Ece8D98927Bca71" + "address": "0x930c36A0c978B0b86B544859692A1D94c5148204", + "name": "DomaingRoutingIsm" }, { - "name": "StaticMerkleRootMultisigIsm", - "address": "0x9b13f3d75797951f463D61092Bba7947c8cEb25c" + "address": "0x0683D0258A162a87E1F25C454BaA4e9E9DE46B0a", + "name": "StaticMerkleRootMultisigIsm" }, { - "name": "StaticMessageIdMultisigIsm", - "address": "0x25069c25466B1F21E0D22f467a5f91bc7b24b515" + "address": "0xd3262339D39103a4b41379b183b0311B78c9a11F", + "name": "StaticMessageIdMultisigIsm" }, { - "name": "StaticAggregationIsm", - "address": "0x25adfb5Ddf378EC77cd5842Ff33B96277E4DD29b" + "address": "0x6716Ef4e72c74e66eB40198B16b4379a763fCEd8", + "name": "StaticAggregationIsm" }, { - "name": "StaticAggregationHook", - "address": "0x3938ED4c6b5a7f9947C44e58e36a864F03228175" + "address": "0xBDD7Cfb61D7ae89343b428D3E527BDA9705c4EAC", + "name": "StaticAggregationHook" }, { - "name": "DomaingRoutingIsm", - "address": "0xf9E264C10E9176c97c22790E0Ece8D98927Bca71" + "address": "0x930c36A0c978B0b86B544859692A1D94c5148204", + "name": "DomaingRoutingIsm" }, { - "name": "StaticMerkleRootMultisigIsm", - "address": "0x9b13f3d75797951f463D61092Bba7947c8cEb25c" + "address": "0x0683D0258A162a87E1F25C454BaA4e9E9DE46B0a", + "constructorArguments": "", + "isProxy": true, + "name": "StaticMerkleRootMultisigIsm" }, { - "name": "StaticMessageIdMultisigIsm", - "address": "0x25069c25466B1F21E0D22f467a5f91bc7b24b515" + "address": "0xd3262339D39103a4b41379b183b0311B78c9a11F", + "constructorArguments": "", + "isProxy": true, + "name": "StaticMessageIdMultisigIsm" }, { - "name": "StaticAggregationIsm", - "address": "0x25adfb5Ddf378EC77cd5842Ff33B96277E4DD29b" + "address": "0x6716Ef4e72c74e66eB40198B16b4379a763fCEd8", + "constructorArguments": "", + "isProxy": true, + "name": "StaticAggregationIsm" }, { - "name": "StaticAggregationHook", - "address": "0x3938ED4c6b5a7f9947C44e58e36a864F03228175" + "address": "0xBDD7Cfb61D7ae89343b428D3E527BDA9705c4EAC", + "constructorArguments": "", + "isProxy": true, + "name": "StaticAggregationHook" }, { - "name": "DomaingRoutingIsm", - "address": "0xf9E264C10E9176c97c22790E0Ece8D98927Bca71" + "address": "0x683a81E0e1a238dcA7341e04c08d3bba6f0Cb74f", + "constructorArguments": "", + "isProxy": false, + "name": "DomainRoutingIsmFactory" }, { - "name": "StaticMerkleRootMultisigIsm", - "address": "0x9b13f3d75797951f463D61092Bba7947c8cEb25c" + "address": "0xD47593C21C2429de56AcA808bb2Bbc236c6311DE", + "constructorArguments": "", + "isProxy": true, + "name": "DomaingRoutingIsm" }, { - "name": "StaticMessageIdMultisigIsm", - "address": "0x25069c25466B1F21E0D22f467a5f91bc7b24b515" + "address": "0x0683D0258A162a87E1F25C454BaA4e9E9DE46B0a", + "constructorArguments": "", + "isProxy": true, + "name": "StaticMerkleRootMultisigIsm" }, { - "name": "StaticAggregationIsm", - "address": "0x25adfb5Ddf378EC77cd5842Ff33B96277E4DD29b" + "address": "0xd3262339D39103a4b41379b183b0311B78c9a11F", + "constructorArguments": "", + "isProxy": true, + "name": "StaticMessageIdMultisigIsm" }, { - "name": "StaticAggregationHook", - "address": "0x3938ED4c6b5a7f9947C44e58e36a864F03228175" + "address": "0x6716Ef4e72c74e66eB40198B16b4379a763fCEd8", + "constructorArguments": "", + "isProxy": true, + "name": "StaticAggregationIsm" }, { - "name": "DomaingRoutingIsm", - "address": "0xf9E264C10E9176c97c22790E0Ece8D98927Bca71" + "address": "0xBDD7Cfb61D7ae89343b428D3E527BDA9705c4EAC", + "constructorArguments": "", + "isProxy": true, + "name": "StaticAggregationHook" }, { - "name": "StaticMerkleRootMultisigIsm", - "address": "0x9b13f3d75797951f463D61092Bba7947c8cEb25c" + "address": "0xD47593C21C2429de56AcA808bb2Bbc236c6311DE", + "constructorArguments": "", + "isProxy": true, + "name": "DomaingRoutingIsm" }, { - "name": "StaticMessageIdMultisigIsm", - "address": "0x25069c25466B1F21E0D22f467a5f91bc7b24b515" + "address": "0x0683D0258A162a87E1F25C454BaA4e9E9DE46B0a", + "constructorArguments": "", + "isProxy": true, + "name": "StaticMerkleRootMultisigIsm" }, { - "name": "StaticAggregationIsm", - "address": "0x25adfb5Ddf378EC77cd5842Ff33B96277E4DD29b" + "address": "0xd3262339D39103a4b41379b183b0311B78c9a11F", + "constructorArguments": "", + "isProxy": true, + "name": "StaticMessageIdMultisigIsm" }, { - "name": "StaticAggregationHook", - "address": "0x3938ED4c6b5a7f9947C44e58e36a864F03228175" + "address": "0x6716Ef4e72c74e66eB40198B16b4379a763fCEd8", + "constructorArguments": "", + "isProxy": true, + "name": "StaticAggregationIsm" }, { - "name": "DomaingRoutingIsm", - "address": "0xf9E264C10E9176c97c22790E0Ece8D98927Bca71" + "address": "0xBDD7Cfb61D7ae89343b428D3E527BDA9705c4EAC", + "constructorArguments": "", + "isProxy": true, + "name": "StaticAggregationHook" }, { - "name": "StaticMerkleRootMultisigIsm", - "address": "0x9b13f3d75797951f463D61092Bba7947c8cEb25c", + "address": "0xD47593C21C2429de56AcA808bb2Bbc236c6311DE", "constructorArguments": "", - "isProxy": true + "isProxy": true, + "name": "DomaingRoutingIsm" }, { - "name": "StaticMessageIdMultisigIsm", - "address": "0x25069c25466B1F21E0D22f467a5f91bc7b24b515", + "address": "0x0683D0258A162a87E1F25C454BaA4e9E9DE46B0a", "constructorArguments": "", - "isProxy": true + "isProxy": true, + "name": "StaticMerkleRootMultisigIsm" }, { - "name": "StaticAggregationIsm", - "address": "0x25adfb5Ddf378EC77cd5842Ff33B96277E4DD29b", + "address": "0xd3262339D39103a4b41379b183b0311B78c9a11F", "constructorArguments": "", - "isProxy": true + "isProxy": true, + "name": "StaticMessageIdMultisigIsm" }, { - "name": "StaticAggregationHook", - "address": "0x3938ED4c6b5a7f9947C44e58e36a864F03228175", + "address": "0x6716Ef4e72c74e66eB40198B16b4379a763fCEd8", "constructorArguments": "", - "isProxy": true + "isProxy": true, + "name": "StaticAggregationIsm" }, { - "name": "StaticMerkleRootMultisigIsm", - "address": "0x9b13f3d75797951f463D61092Bba7947c8cEb25c", + "address": "0xBDD7Cfb61D7ae89343b428D3E527BDA9705c4EAC", "constructorArguments": "", - "isProxy": true + "isProxy": true, + "name": "StaticAggregationHook" }, { - "name": "StaticMessageIdMultisigIsm", - "address": "0x25069c25466B1F21E0D22f467a5f91bc7b24b515", + "address": "0xD47593C21C2429de56AcA808bb2Bbc236c6311DE", "constructorArguments": "", - "isProxy": true + "isProxy": true, + "name": "DomaingRoutingIsm" + } + ], + "holesky": [ + { + "address": "0xC2E36cd6e32e194EE11f15D9273B64461A4D49A2", + "constructorArguments": "", + "isProxy": false, + "name": "StaticMerkleRootMultisigIsmFactory" }, { - "name": "StaticAggregationIsm", - "address": "0x25adfb5Ddf378EC77cd5842Ff33B96277E4DD29b", + "address": "0x7fFe8C9c17F46F94D784E148FbadD4bF66477722", "constructorArguments": "", - "isProxy": true + "isProxy": true, + "name": "StaticMerkleRootMultisigIsm" }, { - "name": "StaticAggregationHook", - "address": "0x3938ED4c6b5a7f9947C44e58e36a864F03228175", + "address": "0x6966b0E55883d49BFB24539356a2f8A673E02039", "constructorArguments": "", - "isProxy": true + "isProxy": false, + "name": "StaticMessageIdMultisigIsmFactory" }, { - "name": "StaticMerkleRootMultisigIsm", - "address": "0x9b13f3d75797951f463D61092Bba7947c8cEb25c", + "address": "0x4863236F3a05A1A1F0850fF8cd09afeBAE82d953", "constructorArguments": "", - "isProxy": true + "isProxy": true, + "name": "StaticMessageIdMultisigIsm" }, { - "name": "StaticMessageIdMultisigIsm", - "address": "0x25069c25466B1F21E0D22f467a5f91bc7b24b515", + "address": "0x54148470292C24345fb828B003461a9444414517", "constructorArguments": "", - "isProxy": true + "isProxy": false, + "name": "StaticAggregationIsmFactory" }, { - "name": "StaticAggregationIsm", - "address": "0x25adfb5Ddf378EC77cd5842Ff33B96277E4DD29b", + "address": "0x10c9FF6EEE4BaD29734322467f541C84001422C2", "constructorArguments": "", - "isProxy": true + "isProxy": true, + "name": "StaticAggregationIsm" }, { - "name": "StaticAggregationHook", - "address": "0x3938ED4c6b5a7f9947C44e58e36a864F03228175", + "address": "0x589C201a07c26b4725A4A829d772f24423da480B", + "constructorArguments": "", + "isProxy": false, + "name": "StaticAggregationHookFactory" + }, + { + "address": "0xD6B8D6C372e07f67FeAb75403c0Ec88E3cce7Ab7", + "constructorArguments": "", + "isProxy": true, + "name": "StaticAggregationHook" + }, + { + "address": "0xDDcFEcF17586D08A5740B7D91735fcCE3dfe3eeD", "constructorArguments": "", - "isProxy": true + "isProxy": false, + "name": "DomainRoutingIsmFactory" + }, + { + "address": "0x8CF9aB5F805072A007dAd0ae56E0099e83B14b61", + "constructorArguments": "", + "isProxy": true, + "name": "DomaingRoutingIsm" } ], - "sepolia": [ + "moonbasealpha": [ { - "name": "StaticMultisigIsmFactory", - "address": "0xD356C996277eFb7f75Ee8bd61b31cC781A12F54f", + "address": "0x4266D8Dd66D8Eb3934c8942968d1e54214D072d3", "constructorArguments": "", - "isProxy": false + "isProxy": false, + "name": "StaticMultisigIsmFactory" }, { - "name": "StaticAggregationIsmFactory", - "address": "0x01812D60958798695391dacF092BAc4a715B1718", + "address": "0x759c4Eb4575B651a9f0Fb46653dd7B2F32fD7310", "constructorArguments": "", - "isProxy": false + "isProxy": false, + "name": "StaticAggregationIsmFactory" }, { - "name": "DomainRoutingIsmFactory", - "address": "0xE67CfA164cDa449Ae38a0a09391eF6bCDf8e4e2c", + "address": "0x561331FafB7f2ABa77E77780178ADdD1A37bdaBD", "constructorArguments": "", - "isProxy": false + "isProxy": false, + "name": "DomainRoutingIsmFactory" }, { - "name": "StaticMerkleRootMultisigIsmFactory", - "address": "0xA9999B4abC373FF2BB95B8725FABC96CA883d811", + "address": "0x0616A79374e81eB1d2275eCe5837aD050f9c53f1", "constructorArguments": "", - "isProxy": false + "isProxy": false, + "name": "StaticMerkleRootMultisigIsmFactory" }, { - "name": "StaticMessageIdMultisigIsmFactory", - "address": "0xCCC126d96efcc342BF2781A7d224D3AB1F25B19C", + "address": "0x3D696c38Dd958e635f9077e65b64aA9cf7c92627", "constructorArguments": "", - "isProxy": false + "isProxy": false, + "name": "StaticMessageIdMultisigIsmFactory" }, { - "name": "StaticMerkleRootMultisigIsmFactory", - "address": "0x0a71AcC99967829eE305a285750017C4916Ca269", + "address": "0xA59Ba0A8D4ea5A5DC9c8B0101ba7E6eE6C3399A4", "constructorArguments": "", - "isProxy": false + "isProxy": false, + "name": "StaticMerkleRootMultisigIsmFactory" }, { - "name": "StaticMerkleRootMultisigIsm", - "address": "0xbe94Cd5d0973dB4A6E63Cb9e6b2b2042D99F9Bcd" + "address": "0x97B07A8BCc0d212A4C76679b303A4C6441BB6186", + "name": "StaticMerkleRootMultisigIsm" }, { - "name": "StaticMessageIdMultisigIsmFactory", - "address": "0xFEb9585b2f948c1eD74034205a7439261a9d27DD", + "address": "0x8f919348F9C4619A196Acb5e377f49E5E2C0B569", "constructorArguments": "", - "isProxy": false + "isProxy": false, + "name": "StaticMessageIdMultisigIsmFactory" }, { - "name": "StaticMessageIdMultisigIsm", - "address": "0x218C5DFb7C2bC1e051FCFebBa8C6D66Dda28617E" + "address": "0xb1Fc72f251A6b6c37CD4Ef8f9287578BCc7CE9Eb", + "name": "StaticMessageIdMultisigIsm" }, { - "name": "StaticAggregationIsmFactory", - "address": "0xC83e12EF2627ACE445C298e6eC418684918a6002", + "address": "0x0048FaB53526D9a0478f66D660059E3E3611FE3E", "constructorArguments": "", - "isProxy": false + "isProxy": false, + "name": "StaticAggregationIsmFactory" }, { - "name": "StaticAggregationIsm", - "address": "0x3dD1aB6B71EBfEd239869365FE5B8b47E0507d89" + "address": "0x13b6Cb8d51C7e15e5fFee432CBB1d4614972A87e", + "name": "StaticAggregationIsm" }, { - "name": "StaticAggregationHookFactory", - "address": "0x160C28C92cA453570aD7C031972b58d5Dd128F72", + "address": "0x00DFB81Bfc45fa03060b605273147F274ea807E5", "constructorArguments": "", - "isProxy": false + "isProxy": false, + "name": "StaticAggregationHookFactory" }, { - "name": "StaticAggregationHook", - "address": "0x4BC580FF77Dd1Eb320E96D34FddC97F0F04D3feD" + "address": "0x713496A1477a08230E526a4e9449FCCE4d6523e9", + "name": "StaticAggregationHook" }, { - "name": "DomainRoutingIsmFactory", - "address": "0x3603458990BfEb30f99E61B58427d196814D8ce1", + "address": "0x385C7f179168f5Da92c72E17AE8EF50F3874077f", "constructorArguments": "", - "isProxy": false + "isProxy": false, + "name": "DomainRoutingIsmFactory" }, { - "name": "DomaingRoutingIsm", - "address": "0x67543F48DBe592F1A15FD9aE37b1AbD104c70cf3" + "address": "0xCd76aC44337BbA003bb4Bed2Ac37604148F36bA9", + "name": "DomaingRoutingIsm" }, { - "name": "StaticMerkleRootMultisigIsm", - "address": "0xbe94Cd5d0973dB4A6E63Cb9e6b2b2042D99F9Bcd" + "address": "0x97B07A8BCc0d212A4C76679b303A4C6441BB6186", + "name": "StaticMerkleRootMultisigIsm" }, { - "name": "StaticMessageIdMultisigIsm", - "address": "0x218C5DFb7C2bC1e051FCFebBa8C6D66Dda28617E" + "address": "0xb1Fc72f251A6b6c37CD4Ef8f9287578BCc7CE9Eb", + "name": "StaticMessageIdMultisigIsm" }, { - "name": "StaticAggregationIsm", - "address": "0x3dD1aB6B71EBfEd239869365FE5B8b47E0507d89" + "address": "0x13b6Cb8d51C7e15e5fFee432CBB1d4614972A87e", + "name": "StaticAggregationIsm" }, { - "name": "StaticAggregationHook", - "address": "0x4BC580FF77Dd1Eb320E96D34FddC97F0F04D3feD" + "address": "0x713496A1477a08230E526a4e9449FCCE4d6523e9", + "name": "StaticAggregationHook" }, { - "name": "DomaingRoutingIsm", - "address": "0x67543F48DBe592F1A15FD9aE37b1AbD104c70cf3" + "address": "0xCd76aC44337BbA003bb4Bed2Ac37604148F36bA9", + "name": "DomaingRoutingIsm" }, { - "name": "StaticMerkleRootMultisigIsm", - "address": "0xbe94Cd5d0973dB4A6E63Cb9e6b2b2042D99F9Bcd" + "address": "0x97B07A8BCc0d212A4C76679b303A4C6441BB6186", + "name": "StaticMerkleRootMultisigIsm" }, { - "name": "StaticMessageIdMultisigIsm", - "address": "0x218C5DFb7C2bC1e051FCFebBa8C6D66Dda28617E" + "address": "0xb1Fc72f251A6b6c37CD4Ef8f9287578BCc7CE9Eb", + "name": "StaticMessageIdMultisigIsm" }, { - "name": "StaticAggregationIsm", - "address": "0x3dD1aB6B71EBfEd239869365FE5B8b47E0507d89" + "address": "0x13b6Cb8d51C7e15e5fFee432CBB1d4614972A87e", + "name": "StaticAggregationIsm" }, { - "name": "StaticAggregationHook", - "address": "0x4BC580FF77Dd1Eb320E96D34FddC97F0F04D3feD" + "address": "0x713496A1477a08230E526a4e9449FCCE4d6523e9", + "name": "StaticAggregationHook" }, { - "name": "DomaingRoutingIsm", - "address": "0x67543F48DBe592F1A15FD9aE37b1AbD104c70cf3" + "address": "0xCd76aC44337BbA003bb4Bed2Ac37604148F36bA9", + "name": "DomaingRoutingIsm" }, { - "name": "StaticMerkleRootMultisigIsm", - "address": "0xbe94Cd5d0973dB4A6E63Cb9e6b2b2042D99F9Bcd" + "address": "0x97B07A8BCc0d212A4C76679b303A4C6441BB6186", + "name": "StaticMerkleRootMultisigIsm" }, { - "name": "StaticMessageIdMultisigIsm", - "address": "0x218C5DFb7C2bC1e051FCFebBa8C6D66Dda28617E" + "address": "0xb1Fc72f251A6b6c37CD4Ef8f9287578BCc7CE9Eb", + "name": "StaticMessageIdMultisigIsm" }, { - "name": "StaticAggregationIsm", - "address": "0x3dD1aB6B71EBfEd239869365FE5B8b47E0507d89" + "address": "0x13b6Cb8d51C7e15e5fFee432CBB1d4614972A87e", + "name": "StaticAggregationIsm" }, { - "name": "StaticAggregationHook", - "address": "0x4BC580FF77Dd1Eb320E96D34FddC97F0F04D3feD" + "address": "0x713496A1477a08230E526a4e9449FCCE4d6523e9", + "name": "StaticAggregationHook" }, { - "name": "DomaingRoutingIsm", - "address": "0x67543F48DBe592F1A15FD9aE37b1AbD104c70cf3" + "address": "0xCd76aC44337BbA003bb4Bed2Ac37604148F36bA9", + "name": "DomaingRoutingIsm" }, { - "name": "StaticMerkleRootMultisigIsm", - "address": "0xbe94Cd5d0973dB4A6E63Cb9e6b2b2042D99F9Bcd" + "address": "0x97B07A8BCc0d212A4C76679b303A4C6441BB6186", + "name": "StaticMerkleRootMultisigIsm" }, { - "name": "StaticMessageIdMultisigIsm", - "address": "0x218C5DFb7C2bC1e051FCFebBa8C6D66Dda28617E" + "address": "0xb1Fc72f251A6b6c37CD4Ef8f9287578BCc7CE9Eb", + "name": "StaticMessageIdMultisigIsm" }, { - "name": "StaticAggregationIsm", - "address": "0x3dD1aB6B71EBfEd239869365FE5B8b47E0507d89" + "address": "0x13b6Cb8d51C7e15e5fFee432CBB1d4614972A87e", + "name": "StaticAggregationIsm" }, { - "name": "StaticAggregationHook", - "address": "0x4BC580FF77Dd1Eb320E96D34FddC97F0F04D3feD" + "address": "0x713496A1477a08230E526a4e9449FCCE4d6523e9", + "name": "StaticAggregationHook" }, { - "name": "DomaingRoutingIsm", - "address": "0x67543F48DBe592F1A15FD9aE37b1AbD104c70cf3" + "address": "0xCd76aC44337BbA003bb4Bed2Ac37604148F36bA9", + "name": "DomaingRoutingIsm" }, { - "name": "StaticMerkleRootMultisigIsm", - "address": "0xbe94Cd5d0973dB4A6E63Cb9e6b2b2042D99F9Bcd", + "address": "0x97B07A8BCc0d212A4C76679b303A4C6441BB6186", "constructorArguments": "", - "isProxy": true + "isProxy": true, + "name": "StaticMerkleRootMultisigIsm" }, { - "name": "StaticMessageIdMultisigIsm", - "address": "0x218C5DFb7C2bC1e051FCFebBa8C6D66Dda28617E", + "address": "0xb1Fc72f251A6b6c37CD4Ef8f9287578BCc7CE9Eb", "constructorArguments": "", - "isProxy": true + "isProxy": true, + "name": "StaticMessageIdMultisigIsm" }, { - "name": "StaticAggregationIsm", - "address": "0x3dD1aB6B71EBfEd239869365FE5B8b47E0507d89", + "address": "0x13b6Cb8d51C7e15e5fFee432CBB1d4614972A87e", "constructorArguments": "", - "isProxy": true + "isProxy": true, + "name": "StaticAggregationIsm" }, { - "name": "StaticAggregationHook", - "address": "0x4BC580FF77Dd1Eb320E96D34FddC97F0F04D3feD", + "address": "0x713496A1477a08230E526a4e9449FCCE4d6523e9", "constructorArguments": "", - "isProxy": true + "isProxy": true, + "name": "StaticAggregationHook" }, { - "name": "DomainRoutingIsmFactory", - "address": "0x3F100cBBE5FD5466BdB4B3a15Ac226957e7965Ad", + "address": "0xE8F752e5C4E1A6a2e3eAfa42d44D601A22d78f2b", "constructorArguments": "", - "isProxy": false + "isProxy": false, + "name": "DomainRoutingIsmFactory" }, { - "name": "DomaingRoutingIsm", - "address": "0x9b0CC3BD9030CE269EF3124Bb36Cf954a490688e", + "address": "0x063C2D908EAb532Cd207F309F0fd176ae6b2e1d1", "constructorArguments": "", - "isProxy": true + "isProxy": true, + "name": "DomaingRoutingIsm" } ], - "moonbasealpha": [ + "plumetestnet": [ { - "name": "StaticMultisigIsmFactory", - "address": "0x4266D8Dd66D8Eb3934c8942968d1e54214D072d3", + "address": "0x16B710b86CAd07E6F1C531861a16F5feC29dba37", "constructorArguments": "", - "isProxy": false + "isProxy": false, + "name": "StaticMerkleRootMultisigIsmFactory" }, { - "name": "StaticAggregationIsmFactory", - "address": "0x759c4Eb4575B651a9f0Fb46653dd7B2F32fD7310", + "address": "0x87935eB971eaA9826060261b07a919451dfd0409", "constructorArguments": "", - "isProxy": false + "isProxy": true, + "name": "StaticMerkleRootMultisigIsm" }, { - "name": "DomainRoutingIsmFactory", - "address": "0x561331FafB7f2ABa77E77780178ADdD1A37bdaBD", + "address": "0x44b764045BfDC68517e10e783E69B376cef196B2", "constructorArguments": "", - "isProxy": false + "isProxy": false, + "name": "StaticMessageIdMultisigIsmFactory" }, { - "name": "StaticMerkleRootMultisigIsmFactory", - "address": "0x0616A79374e81eB1d2275eCe5837aD050f9c53f1", + "address": "0xE5cA56294dA5Bd490D5Bc489B177B002ad16AF83", "constructorArguments": "", - "isProxy": false + "isProxy": true, + "name": "StaticMessageIdMultisigIsm" }, { - "name": "StaticMessageIdMultisigIsmFactory", - "address": "0x3D696c38Dd958e635f9077e65b64aA9cf7c92627", + "address": "0xC2E36cd6e32e194EE11f15D9273B64461A4D49A2", "constructorArguments": "", - "isProxy": false + "isProxy": false, + "name": "StaticAggregationIsmFactory" }, { - "name": "StaticMerkleRootMultisigIsmFactory", - "address": "0xA59Ba0A8D4ea5A5DC9c8B0101ba7E6eE6C3399A4", + "address": "0x7fFe8C9c17F46F94D784E148FbadD4bF66477722", "constructorArguments": "", - "isProxy": false + "isProxy": true, + "name": "StaticAggregationIsm" }, { - "name": "StaticMerkleRootMultisigIsm", - "address": "0x97B07A8BCc0d212A4C76679b303A4C6441BB6186" + "address": "0x6966b0E55883d49BFB24539356a2f8A673E02039", + "constructorArguments": "", + "isProxy": false, + "name": "StaticAggregationHookFactory" }, { - "name": "StaticMessageIdMultisigIsmFactory", - "address": "0x8f919348F9C4619A196Acb5e377f49E5E2C0B569", + "address": "0x4863236F3a05A1A1F0850fF8cd09afeBAE82d953", "constructorArguments": "", - "isProxy": false + "isProxy": true, + "name": "StaticAggregationHook" }, { - "name": "StaticMessageIdMultisigIsm", - "address": "0xb1Fc72f251A6b6c37CD4Ef8f9287578BCc7CE9Eb" + "address": "0x54148470292C24345fb828B003461a9444414517", + "constructorArguments": "", + "isProxy": false, + "name": "DomainRoutingIsmFactory" }, { - "name": "StaticAggregationIsmFactory", - "address": "0x0048FaB53526D9a0478f66D660059E3E3611FE3E", + "address": "0x10c9FF6EEE4BaD29734322467f541C84001422C2", + "constructorArguments": "", + "isProxy": true, + "name": "DomaingRoutingIsm" + } + ], + "scrollsepolia": [ + { + "address": "0x6E7b29CB2A7617405B4d30C6f84bBD51b4Bb4be8", "constructorArguments": "", - "isProxy": false + "isProxy": false, + "name": "StaticMerkleRootMultisigIsmFactory" }, { - "name": "StaticAggregationIsm", - "address": "0x13b6Cb8d51C7e15e5fFee432CBB1d4614972A87e" + "address": "0x209e7F9d40954E230008B9bb076a0901d32695e5", + "name": "StaticMerkleRootMultisigIsm" }, { - "name": "StaticAggregationHookFactory", - "address": "0x00DFB81Bfc45fa03060b605273147F274ea807E5", + "address": "0x275aCcCa81cAD931dC6fB6E49ED233Bc99Bed4A7", "constructorArguments": "", - "isProxy": false + "isProxy": false, + "name": "StaticMerkleRootMultisigIsmFactory" }, { - "name": "StaticAggregationHook", - "address": "0x713496A1477a08230E526a4e9449FCCE4d6523e9" + "address": "0x33999AB153F68D481AAB1B238368Ffd1Fe81F360", + "name": "StaticMerkleRootMultisigIsm" }, { - "name": "DomainRoutingIsmFactory", - "address": "0x385C7f179168f5Da92c72E17AE8EF50F3874077f", + "address": "0xeb6f11189197223c656807a83B0DD374f9A6dF44", "constructorArguments": "", - "isProxy": false + "isProxy": false, + "name": "StaticMessageIdMultisigIsmFactory" }, { - "name": "DomaingRoutingIsm", - "address": "0xCd76aC44337BbA003bb4Bed2Ac37604148F36bA9" + "address": "0x3e6F45B03314bD21BcE4201666d483291575E391", + "name": "StaticMessageIdMultisigIsm" }, { - "name": "StaticMerkleRootMultisigIsm", - "address": "0x97B07A8BCc0d212A4C76679b303A4C6441BB6186" + "address": "0x16B710b86CAd07E6F1C531861a16F5feC29dba37", + "constructorArguments": "", + "isProxy": false, + "name": "StaticAggregationIsmFactory" }, { - "name": "StaticMessageIdMultisigIsm", - "address": "0xb1Fc72f251A6b6c37CD4Ef8f9287578BCc7CE9Eb" + "address": "0x87935eB971eaA9826060261b07a919451dfd0409", + "name": "StaticAggregationIsm" }, { - "name": "StaticAggregationIsm", - "address": "0x13b6Cb8d51C7e15e5fFee432CBB1d4614972A87e" + "address": "0x44b764045BfDC68517e10e783E69B376cef196B2", + "constructorArguments": "", + "isProxy": false, + "name": "StaticAggregationHookFactory" }, { - "name": "StaticAggregationHook", - "address": "0x713496A1477a08230E526a4e9449FCCE4d6523e9" + "address": "0xE5cA56294dA5Bd490D5Bc489B177B002ad16AF83", + "name": "StaticAggregationHook" }, { - "name": "DomaingRoutingIsm", - "address": "0xCd76aC44337BbA003bb4Bed2Ac37604148F36bA9" + "address": "0xC2E36cd6e32e194EE11f15D9273B64461A4D49A2", + "constructorArguments": "", + "isProxy": false, + "name": "DomainRoutingIsmFactory" }, { - "name": "StaticMerkleRootMultisigIsm", - "address": "0x97B07A8BCc0d212A4C76679b303A4C6441BB6186" + "address": "0x7fFe8C9c17F46F94D784E148FbadD4bF66477722", + "name": "DomaingRoutingIsm" }, { - "name": "StaticMessageIdMultisigIsm", - "address": "0xb1Fc72f251A6b6c37CD4Ef8f9287578BCc7CE9Eb" + "address": "0x33999AB153F68D481AAB1B238368Ffd1Fe81F360", + "name": "StaticMerkleRootMultisigIsm" }, { - "name": "StaticAggregationIsm", - "address": "0x13b6Cb8d51C7e15e5fFee432CBB1d4614972A87e" + "address": "0x3e6F45B03314bD21BcE4201666d483291575E391", + "name": "StaticMessageIdMultisigIsm" }, { - "name": "StaticAggregationHook", - "address": "0x713496A1477a08230E526a4e9449FCCE4d6523e9" + "address": "0x87935eB971eaA9826060261b07a919451dfd0409", + "name": "StaticAggregationIsm" }, { - "name": "DomaingRoutingIsm", - "address": "0xCd76aC44337BbA003bb4Bed2Ac37604148F36bA9" + "address": "0xE5cA56294dA5Bd490D5Bc489B177B002ad16AF83", + "name": "StaticAggregationHook" }, { - "name": "StaticMerkleRootMultisigIsm", - "address": "0x97B07A8BCc0d212A4C76679b303A4C6441BB6186" + "address": "0x7fFe8C9c17F46F94D784E148FbadD4bF66477722", + "name": "DomaingRoutingIsm" }, { - "name": "StaticMessageIdMultisigIsm", - "address": "0xb1Fc72f251A6b6c37CD4Ef8f9287578BCc7CE9Eb" + "address": "0x33999AB153F68D481AAB1B238368Ffd1Fe81F360", + "name": "StaticMerkleRootMultisigIsm" }, { - "name": "StaticAggregationIsm", - "address": "0x13b6Cb8d51C7e15e5fFee432CBB1d4614972A87e" + "address": "0x3e6F45B03314bD21BcE4201666d483291575E391", + "name": "StaticMessageIdMultisigIsm" }, { - "name": "StaticAggregationHook", - "address": "0x713496A1477a08230E526a4e9449FCCE4d6523e9" + "address": "0x87935eB971eaA9826060261b07a919451dfd0409", + "name": "StaticAggregationIsm" }, { - "name": "DomaingRoutingIsm", - "address": "0xCd76aC44337BbA003bb4Bed2Ac37604148F36bA9" + "address": "0xE5cA56294dA5Bd490D5Bc489B177B002ad16AF83", + "name": "StaticAggregationHook" }, { - "name": "StaticMerkleRootMultisigIsm", - "address": "0x97B07A8BCc0d212A4C76679b303A4C6441BB6186" + "address": "0x7fFe8C9c17F46F94D784E148FbadD4bF66477722", + "name": "DomaingRoutingIsm" }, { - "name": "StaticMessageIdMultisigIsm", - "address": "0xb1Fc72f251A6b6c37CD4Ef8f9287578BCc7CE9Eb" + "address": "0x33999AB153F68D481AAB1B238368Ffd1Fe81F360", + "name": "StaticMerkleRootMultisigIsm" }, { - "name": "StaticAggregationIsm", - "address": "0x13b6Cb8d51C7e15e5fFee432CBB1d4614972A87e" + "address": "0x3e6F45B03314bD21BcE4201666d483291575E391", + "name": "StaticMessageIdMultisigIsm" }, { - "name": "StaticAggregationHook", - "address": "0x713496A1477a08230E526a4e9449FCCE4d6523e9" + "address": "0x87935eB971eaA9826060261b07a919451dfd0409", + "name": "StaticAggregationIsm" }, { - "name": "DomaingRoutingIsm", - "address": "0xCd76aC44337BbA003bb4Bed2Ac37604148F36bA9" + "address": "0xE5cA56294dA5Bd490D5Bc489B177B002ad16AF83", + "name": "StaticAggregationHook" }, { - "name": "StaticMerkleRootMultisigIsm", - "address": "0x97B07A8BCc0d212A4C76679b303A4C6441BB6186", - "constructorArguments": "", - "isProxy": true + "address": "0x7fFe8C9c17F46F94D784E148FbadD4bF66477722", + "name": "DomaingRoutingIsm" }, { - "name": "StaticMessageIdMultisigIsm", - "address": "0xb1Fc72f251A6b6c37CD4Ef8f9287578BCc7CE9Eb", - "constructorArguments": "", - "isProxy": true + "address": "0x33999AB153F68D481AAB1B238368Ffd1Fe81F360", + "name": "StaticMerkleRootMultisigIsm" }, { - "name": "StaticAggregationIsm", - "address": "0x13b6Cb8d51C7e15e5fFee432CBB1d4614972A87e", - "constructorArguments": "", - "isProxy": true + "address": "0x3e6F45B03314bD21BcE4201666d483291575E391", + "name": "StaticMessageIdMultisigIsm" }, { - "name": "StaticAggregationHook", - "address": "0x713496A1477a08230E526a4e9449FCCE4d6523e9", - "constructorArguments": "", - "isProxy": true + "address": "0x87935eB971eaA9826060261b07a919451dfd0409", + "name": "StaticAggregationIsm" }, { - "name": "DomainRoutingIsmFactory", - "address": "0xE8F752e5C4E1A6a2e3eAfa42d44D601A22d78f2b", - "constructorArguments": "", - "isProxy": false + "address": "0xE5cA56294dA5Bd490D5Bc489B177B002ad16AF83", + "name": "StaticAggregationHook" }, { - "name": "DomaingRoutingIsm", - "address": "0x063C2D908EAb532Cd207F309F0fd176ae6b2e1d1", - "constructorArguments": "", - "isProxy": true - } - ], - "scrollsepolia": [ + "address": "0x7fFe8C9c17F46F94D784E148FbadD4bF66477722", + "name": "DomaingRoutingIsm" + }, { - "name": "StaticMerkleRootMultisigIsmFactory", - "address": "0x6E7b29CB2A7617405B4d30C6f84bBD51b4Bb4be8", + "address": "0x33999AB153F68D481AAB1B238368Ffd1Fe81F360", "constructorArguments": "", - "isProxy": false + "isProxy": true, + "name": "StaticMerkleRootMultisigIsm" }, { - "name": "StaticMerkleRootMultisigIsm", - "address": "0x209e7F9d40954E230008B9bb076a0901d32695e5" + "address": "0x3e6F45B03314bD21BcE4201666d483291575E391", + "constructorArguments": "", + "isProxy": true, + "name": "StaticMessageIdMultisigIsm" }, { - "name": "StaticMerkleRootMultisigIsmFactory", - "address": "0x275aCcCa81cAD931dC6fB6E49ED233Bc99Bed4A7", + "address": "0x87935eB971eaA9826060261b07a919451dfd0409", "constructorArguments": "", - "isProxy": false + "isProxy": true, + "name": "StaticAggregationIsm" }, { - "name": "StaticMerkleRootMultisigIsm", - "address": "0x33999AB153F68D481AAB1B238368Ffd1Fe81F360" + "address": "0xE5cA56294dA5Bd490D5Bc489B177B002ad16AF83", + "constructorArguments": "", + "isProxy": true, + "name": "StaticAggregationHook" }, { - "name": "StaticMessageIdMultisigIsmFactory", - "address": "0xeb6f11189197223c656807a83B0DD374f9A6dF44", + "address": "0x17866ebE0e503784a9461d3e753dEeD0d3F61153", "constructorArguments": "", - "isProxy": false + "isProxy": false, + "name": "DomainRoutingIsmFactory" }, { - "name": "StaticMessageIdMultisigIsm", - "address": "0x3e6F45B03314bD21BcE4201666d483291575E391" - }, + "address": "0xea80345322520d37770dbDeD3FE9c53ba93E70D8", + "constructorArguments": "", + "isProxy": true, + "name": "DomaingRoutingIsm" + } + ], + "sepolia": [ { - "name": "StaticAggregationIsmFactory", - "address": "0x16B710b86CAd07E6F1C531861a16F5feC29dba37", + "address": "0xD356C996277eFb7f75Ee8bd61b31cC781A12F54f", "constructorArguments": "", - "isProxy": false + "isProxy": false, + "name": "StaticMultisigIsmFactory" }, { - "name": "StaticAggregationIsm", - "address": "0x87935eB971eaA9826060261b07a919451dfd0409" + "address": "0x01812D60958798695391dacF092BAc4a715B1718", + "constructorArguments": "", + "isProxy": false, + "name": "StaticAggregationIsmFactory" }, { - "name": "StaticAggregationHookFactory", - "address": "0x44b764045BfDC68517e10e783E69B376cef196B2", + "address": "0xE67CfA164cDa449Ae38a0a09391eF6bCDf8e4e2c", "constructorArguments": "", - "isProxy": false + "isProxy": false, + "name": "DomainRoutingIsmFactory" }, { - "name": "StaticAggregationHook", - "address": "0xE5cA56294dA5Bd490D5Bc489B177B002ad16AF83" + "address": "0xA9999B4abC373FF2BB95B8725FABC96CA883d811", + "constructorArguments": "", + "isProxy": false, + "name": "StaticMerkleRootMultisigIsmFactory" }, { - "name": "DomainRoutingIsmFactory", - "address": "0xC2E36cd6e32e194EE11f15D9273B64461A4D49A2", + "address": "0xCCC126d96efcc342BF2781A7d224D3AB1F25B19C", "constructorArguments": "", - "isProxy": false + "isProxy": false, + "name": "StaticMessageIdMultisigIsmFactory" }, { - "name": "DomaingRoutingIsm", - "address": "0x7fFe8C9c17F46F94D784E148FbadD4bF66477722" + "address": "0x0a71AcC99967829eE305a285750017C4916Ca269", + "constructorArguments": "", + "isProxy": false, + "name": "StaticMerkleRootMultisigIsmFactory" }, { - "name": "StaticMerkleRootMultisigIsm", - "address": "0x33999AB153F68D481AAB1B238368Ffd1Fe81F360" + "address": "0xbe94Cd5d0973dB4A6E63Cb9e6b2b2042D99F9Bcd", + "name": "StaticMerkleRootMultisigIsm" }, { - "name": "StaticMessageIdMultisigIsm", - "address": "0x3e6F45B03314bD21BcE4201666d483291575E391" + "address": "0xFEb9585b2f948c1eD74034205a7439261a9d27DD", + "constructorArguments": "", + "isProxy": false, + "name": "StaticMessageIdMultisigIsmFactory" }, { - "name": "StaticAggregationIsm", - "address": "0x87935eB971eaA9826060261b07a919451dfd0409" + "address": "0x218C5DFb7C2bC1e051FCFebBa8C6D66Dda28617E", + "name": "StaticMessageIdMultisigIsm" }, { - "name": "StaticAggregationHook", - "address": "0xE5cA56294dA5Bd490D5Bc489B177B002ad16AF83" + "address": "0xC83e12EF2627ACE445C298e6eC418684918a6002", + "constructorArguments": "", + "isProxy": false, + "name": "StaticAggregationIsmFactory" }, { - "name": "DomaingRoutingIsm", - "address": "0x7fFe8C9c17F46F94D784E148FbadD4bF66477722" + "address": "0x3dD1aB6B71EBfEd239869365FE5B8b47E0507d89", + "name": "StaticAggregationIsm" }, { - "name": "StaticMerkleRootMultisigIsm", - "address": "0x33999AB153F68D481AAB1B238368Ffd1Fe81F360" + "address": "0x160C28C92cA453570aD7C031972b58d5Dd128F72", + "constructorArguments": "", + "isProxy": false, + "name": "StaticAggregationHookFactory" }, { - "name": "StaticMessageIdMultisigIsm", - "address": "0x3e6F45B03314bD21BcE4201666d483291575E391" + "address": "0x4BC580FF77Dd1Eb320E96D34FddC97F0F04D3feD", + "name": "StaticAggregationHook" }, { - "name": "StaticAggregationIsm", - "address": "0x87935eB971eaA9826060261b07a919451dfd0409" + "address": "0x3603458990BfEb30f99E61B58427d196814D8ce1", + "constructorArguments": "", + "isProxy": false, + "name": "DomainRoutingIsmFactory" }, { - "name": "StaticAggregationHook", - "address": "0xE5cA56294dA5Bd490D5Bc489B177B002ad16AF83" + "address": "0x67543F48DBe592F1A15FD9aE37b1AbD104c70cf3", + "name": "DomaingRoutingIsm" }, { - "name": "DomaingRoutingIsm", - "address": "0x7fFe8C9c17F46F94D784E148FbadD4bF66477722" + "address": "0xbe94Cd5d0973dB4A6E63Cb9e6b2b2042D99F9Bcd", + "name": "StaticMerkleRootMultisigIsm" }, { - "name": "StaticMerkleRootMultisigIsm", - "address": "0x33999AB153F68D481AAB1B238368Ffd1Fe81F360" + "address": "0x218C5DFb7C2bC1e051FCFebBa8C6D66Dda28617E", + "name": "StaticMessageIdMultisigIsm" }, { - "name": "StaticMessageIdMultisigIsm", - "address": "0x3e6F45B03314bD21BcE4201666d483291575E391" + "address": "0x3dD1aB6B71EBfEd239869365FE5B8b47E0507d89", + "name": "StaticAggregationIsm" }, { - "name": "StaticAggregationIsm", - "address": "0x87935eB971eaA9826060261b07a919451dfd0409" + "address": "0x4BC580FF77Dd1Eb320E96D34FddC97F0F04D3feD", + "name": "StaticAggregationHook" }, { - "name": "StaticAggregationHook", - "address": "0xE5cA56294dA5Bd490D5Bc489B177B002ad16AF83" + "address": "0x67543F48DBe592F1A15FD9aE37b1AbD104c70cf3", + "name": "DomaingRoutingIsm" }, { - "name": "DomaingRoutingIsm", - "address": "0x7fFe8C9c17F46F94D784E148FbadD4bF66477722" + "address": "0xbe94Cd5d0973dB4A6E63Cb9e6b2b2042D99F9Bcd", + "name": "StaticMerkleRootMultisigIsm" }, { - "name": "StaticMerkleRootMultisigIsm", - "address": "0x33999AB153F68D481AAB1B238368Ffd1Fe81F360" + "address": "0x218C5DFb7C2bC1e051FCFebBa8C6D66Dda28617E", + "name": "StaticMessageIdMultisigIsm" }, { - "name": "StaticMessageIdMultisigIsm", - "address": "0x3e6F45B03314bD21BcE4201666d483291575E391" + "address": "0x3dD1aB6B71EBfEd239869365FE5B8b47E0507d89", + "name": "StaticAggregationIsm" }, { - "name": "StaticAggregationIsm", - "address": "0x87935eB971eaA9826060261b07a919451dfd0409" + "address": "0x4BC580FF77Dd1Eb320E96D34FddC97F0F04D3feD", + "name": "StaticAggregationHook" }, { - "name": "StaticAggregationHook", - "address": "0xE5cA56294dA5Bd490D5Bc489B177B002ad16AF83" + "address": "0x67543F48DBe592F1A15FD9aE37b1AbD104c70cf3", + "name": "DomaingRoutingIsm" }, { - "name": "DomaingRoutingIsm", - "address": "0x7fFe8C9c17F46F94D784E148FbadD4bF66477722" + "address": "0xbe94Cd5d0973dB4A6E63Cb9e6b2b2042D99F9Bcd", + "name": "StaticMerkleRootMultisigIsm" }, { - "name": "StaticMerkleRootMultisigIsm", - "address": "0x33999AB153F68D481AAB1B238368Ffd1Fe81F360", - "constructorArguments": "", - "isProxy": true + "address": "0x218C5DFb7C2bC1e051FCFebBa8C6D66Dda28617E", + "name": "StaticMessageIdMultisigIsm" }, { - "name": "StaticMessageIdMultisigIsm", - "address": "0x3e6F45B03314bD21BcE4201666d483291575E391", - "constructorArguments": "", - "isProxy": true + "address": "0x3dD1aB6B71EBfEd239869365FE5B8b47E0507d89", + "name": "StaticAggregationIsm" }, { - "name": "StaticAggregationIsm", - "address": "0x87935eB971eaA9826060261b07a919451dfd0409", - "constructorArguments": "", - "isProxy": true + "address": "0x4BC580FF77Dd1Eb320E96D34FddC97F0F04D3feD", + "name": "StaticAggregationHook" }, { - "name": "StaticAggregationHook", - "address": "0xE5cA56294dA5Bd490D5Bc489B177B002ad16AF83", - "constructorArguments": "", - "isProxy": true + "address": "0x67543F48DBe592F1A15FD9aE37b1AbD104c70cf3", + "name": "DomaingRoutingIsm" }, { - "name": "DomainRoutingIsmFactory", - "address": "0x17866ebE0e503784a9461d3e753dEeD0d3F61153", - "constructorArguments": "", - "isProxy": false + "address": "0xbe94Cd5d0973dB4A6E63Cb9e6b2b2042D99F9Bcd", + "name": "StaticMerkleRootMultisigIsm" }, { - "name": "DomaingRoutingIsm", - "address": "0xea80345322520d37770dbDeD3FE9c53ba93E70D8", - "constructorArguments": "", - "isProxy": true - } - ], - "plumetestnet": [ - { - "name": "StaticMerkleRootMultisigIsmFactory", - "address": "0x16B710b86CAd07E6F1C531861a16F5feC29dba37", - "constructorArguments": "", - "isProxy": false + "address": "0x218C5DFb7C2bC1e051FCFebBa8C6D66Dda28617E", + "name": "StaticMessageIdMultisigIsm" }, { - "name": "StaticMerkleRootMultisigIsm", - "address": "0x87935eB971eaA9826060261b07a919451dfd0409", - "constructorArguments": "", - "isProxy": true + "address": "0x3dD1aB6B71EBfEd239869365FE5B8b47E0507d89", + "name": "StaticAggregationIsm" }, { - "name": "StaticMessageIdMultisigIsmFactory", - "address": "0x44b764045BfDC68517e10e783E69B376cef196B2", - "constructorArguments": "", - "isProxy": false + "address": "0x4BC580FF77Dd1Eb320E96D34FddC97F0F04D3feD", + "name": "StaticAggregationHook" }, { - "name": "StaticMessageIdMultisigIsm", - "address": "0xE5cA56294dA5Bd490D5Bc489B177B002ad16AF83", - "constructorArguments": "", - "isProxy": true + "address": "0x67543F48DBe592F1A15FD9aE37b1AbD104c70cf3", + "name": "DomaingRoutingIsm" }, { - "name": "StaticAggregationIsmFactory", - "address": "0xC2E36cd6e32e194EE11f15D9273B64461A4D49A2", + "address": "0xbe94Cd5d0973dB4A6E63Cb9e6b2b2042D99F9Bcd", "constructorArguments": "", - "isProxy": false + "isProxy": true, + "name": "StaticMerkleRootMultisigIsm" }, { - "name": "StaticAggregationIsm", - "address": "0x7fFe8C9c17F46F94D784E148FbadD4bF66477722", + "address": "0x218C5DFb7C2bC1e051FCFebBa8C6D66Dda28617E", "constructorArguments": "", - "isProxy": true + "isProxy": true, + "name": "StaticMessageIdMultisigIsm" }, { - "name": "StaticAggregationHookFactory", - "address": "0x6966b0E55883d49BFB24539356a2f8A673E02039", + "address": "0x3dD1aB6B71EBfEd239869365FE5B8b47E0507d89", "constructorArguments": "", - "isProxy": false + "isProxy": true, + "name": "StaticAggregationIsm" }, { - "name": "StaticAggregationHook", - "address": "0x4863236F3a05A1A1F0850fF8cd09afeBAE82d953", + "address": "0x4BC580FF77Dd1Eb320E96D34FddC97F0F04D3feD", "constructorArguments": "", - "isProxy": true + "isProxy": true, + "name": "StaticAggregationHook" }, { - "name": "DomainRoutingIsmFactory", - "address": "0x54148470292C24345fb828B003461a9444414517", + "address": "0x3F100cBBE5FD5466BdB4B3a15Ac226957e7965Ad", "constructorArguments": "", - "isProxy": false + "isProxy": false, + "name": "DomainRoutingIsmFactory" }, { - "name": "DomaingRoutingIsm", - "address": "0x10c9FF6EEE4BaD29734322467f541C84001422C2", + "address": "0x9b0CC3BD9030CE269EF3124Bb36Cf954a490688e", "constructorArguments": "", - "isProxy": true + "isProxy": true, + "name": "DomaingRoutingIsm" } ] } diff --git a/typescript/infra/config/environments/testnet4/middleware.ts b/typescript/infra/config/environments/testnet4/middleware.ts index 607b4a3f6..cf3d2782c 100644 --- a/typescript/infra/config/environments/testnet4/middleware.ts +++ b/typescript/infra/config/environments/testnet4/middleware.ts @@ -1,5 +1,3 @@ -import { RpcConsensusType } from '@hyperlane-xyz/sdk'; - import { LiquidityLayerRelayerConfig } from '../../../src/config/middleware.js'; import { environment } from './chains.js'; @@ -12,5 +10,4 @@ export const liquidityLayerRelayerConfig: LiquidityLayerRelayerConfig = { namespace: environment, prometheusPushGateway: 'http://prometheus-prometheus-pushgateway.monitoring.svc.cluster.local:9091', - connectionType: RpcConsensusType.Single, }; diff --git a/typescript/infra/config/environments/testnet4/supportedChainNames.ts b/typescript/infra/config/environments/testnet4/supportedChainNames.ts index c65393e55..c966447a1 100644 --- a/typescript/infra/config/environments/testnet4/supportedChainNames.ts +++ b/typescript/infra/config/environments/testnet4/supportedChainNames.ts @@ -4,6 +4,7 @@ export const supportedChainNames = [ 'alfajores', 'bsctestnet', 'eclipsetestnet', + 'holesky', 'fuji', 'plumetestnet', 'scrollsepolia', diff --git a/typescript/infra/config/environments/testnet4/validators.ts b/typescript/infra/config/environments/testnet4/validators.ts index 6e594ffa7..965f0f38b 100644 --- a/typescript/infra/config/environments/testnet4/validators.ts +++ b/typescript/infra/config/environments/testnet4/validators.ts @@ -70,6 +70,21 @@ export const validatorChainConfig = ( 'bsctestnet', ), }, + holesky: { + interval: 13, + reorgPeriod: getReorgPeriod('holesky'), + validators: validatorsConfig( + { + [Contexts.Hyperlane]: ['0x7ab28ad88bb45867137ea823af88e2cb02359c03'], + [Contexts.ReleaseCandidate]: [ + '0x7ab28ad88bb45867137ea823af88e2cb02359c03', + ], + [Contexts.Neutron]: [], + }, + 'holesky', + ), + }, + scrollsepolia: { interval: 5, reorgPeriod: getReorgPeriod('scrollsepolia'), diff --git a/typescript/infra/config/registry.ts b/typescript/infra/config/registry.ts index a85488014..3b05cf47e 100644 --- a/typescript/infra/config/registry.ts +++ b/typescript/infra/config/registry.ts @@ -1,7 +1,11 @@ import { dirname, join } from 'path'; import { fileURLToPath } from 'url'; -import { ChainAddresses } from '@hyperlane-xyz/registry'; +import { + ChainAddresses, + MergedRegistry, + PartialRegistry, +} from '@hyperlane-xyz/registry'; import { FileSystemRegistry } from '@hyperlane-xyz/registry/fs'; import { ChainMap, @@ -111,3 +115,26 @@ export function getMainnetAddresses(): ChainMap { export function getTestnetAddresses(): ChainMap { return getEnvAddresses('testnet4'); } + +/** + * Gets a registry, applying the provided overrides. The base registry + * that the overrides are applied to is the registry returned by `getRegistry`. + * @param chainMetadataOverrides Chain metadata overrides. + * @param chainAddressesOverrides Chain address overrides. + * @returns A MergedRegistry merging the registry from `getRegistry` and the overrides. + */ +export function getRegistryWithOverrides( + chainMetadataOverrides: ChainMap> = {}, + chainAddressesOverrides: ChainMap> = {}, +): MergedRegistry { + const baseRegistry = getRegistry(); + + const overrideRegistry = new PartialRegistry({ + chainMetadata: chainMetadataOverrides, + chainAddresses: chainAddressesOverrides, + }); + + return new MergedRegistry({ + registries: [baseRegistry, overrideRegistry], + }); +} diff --git a/typescript/infra/helm/helloworld-kathy/templates/_helpers.tpl b/typescript/infra/helm/helloworld-kathy/templates/_helpers.tpl index 12b1e0db9..286fd126a 100644 --- a/typescript/infra/helm/helloworld-kathy/templates/_helpers.tpl +++ b/typescript/infra/helm/helloworld-kathy/templates/_helpers.tpl @@ -91,10 +91,6 @@ The helloworld-kathy container {{- if .Values.hyperlane.cycleOnce }} - --cycle-once {{- end }} -{{- if .Values.hyperlane.connectionType }} - - --connection-type - - {{ .Values.hyperlane.connectionType }} -{{- end }} {{- if .Values.hyperlane.cyclesBetweenEthereumMessages }} - --cycles-between-ethereum-messages - "{{ .Values.hyperlane.cyclesBetweenEthereumMessages }}" diff --git a/typescript/infra/helm/helloworld-kathy/templates/external-secret.yaml b/typescript/infra/helm/helloworld-kathy/templates/external-secret.yaml index f0870da0a..115e249cd 100644 --- a/typescript/infra/helm/helloworld-kathy/templates/external-secret.yaml +++ b/typescript/infra/helm/helloworld-kathy/templates/external-secret.yaml @@ -33,7 +33,6 @@ spec: */}} {{- range .Values.hyperlane.chains }} GCP_SECRET_OVERRIDE_{{ $.Values.hyperlane.runEnv | upper }}_RPC_ENDPOINTS_{{ . | upper }}: {{ printf "'{{ .%s_rpcs | toString }}'" . }} - GCP_SECRET_OVERRIDE_{{ $.Values.hyperlane.runEnv | upper }}_RPC_ENDPOINT_{{ . | upper }}: {{ printf "'{{ .%s_rpc | toString }}'" . }} {{- end }} {{- if .Values.hyperlane.aws }} AWS_ACCESS_KEY_ID: {{ print "'{{ .aws_access_key_id | toString }}'" }} @@ -51,9 +50,6 @@ spec: - secretKey: {{ printf "%s_rpcs" . }} remoteRef: key: {{ printf "%s-rpc-endpoints-%s" $.Values.hyperlane.runEnv . }} - - secretKey: {{ printf "%s_rpc" . }} - remoteRef: - key: {{ printf "%s-rpc-endpoint-%s" $.Values.hyperlane.runEnv . }} {{- end }} {{- if .Values.hyperlane.aws }} - secretKey: aws_access_key_id diff --git a/typescript/infra/helm/key-funder/templates/cron-job.yaml b/typescript/infra/helm/key-funder/templates/cron-job.yaml index 610ebf8bb..b89122281 100644 --- a/typescript/infra/helm/key-funder/templates/cron-job.yaml +++ b/typescript/infra/helm/key-funder/templates/cron-job.yaml @@ -29,10 +29,6 @@ spec: - --contexts-and-roles - {{ $context }}={{ join "," $roles }} {{- end }} -{{- if .Values.hyperlane.connectionType }} - - --connection-type - - {{ .Values.hyperlane.connectionType }} -{{- end }} {{- range $chain, $balance := .Values.hyperlane.desiredBalancePerChain }} - --desired-balance-per-chain - {{ $chain }}={{ $balance }} diff --git a/typescript/infra/helm/key-funder/templates/env-var-external-secret.yaml b/typescript/infra/helm/key-funder/templates/env-var-external-secret.yaml index de6577bfa..2a95d627e 100644 --- a/typescript/infra/helm/key-funder/templates/env-var-external-secret.yaml +++ b/typescript/infra/helm/key-funder/templates/env-var-external-secret.yaml @@ -29,7 +29,6 @@ spec: */}} {{- range .Values.hyperlane.chains }} GCP_SECRET_OVERRIDE_{{ $.Values.hyperlane.runEnv | upper }}_RPC_ENDPOINTS_{{ . | upper }}: {{ printf "'{{ .%s_rpcs | toString }}'" . }} - GCP_SECRET_OVERRIDE_{{ $.Values.hyperlane.runEnv | upper }}_RPC_ENDPOINT_{{ . | upper }}: {{ printf "'{{ .%s_rpc | toString }}'" . }} {{- end }} data: - secretKey: deployer_key @@ -43,7 +42,4 @@ spec: - secretKey: {{ printf "%s_rpcs" . }} remoteRef: key: {{ printf "%s-rpc-endpoints-%s" $.Values.hyperlane.runEnv . }} - - secretKey: {{ printf "%s_rpc" . }} - remoteRef: - key: {{ printf "%s-rpc-endpoint-%s" $.Values.hyperlane.runEnv . }} {{- end }} diff --git a/typescript/infra/helm/liquidity-layer-relayers/templates/circle-relayer-deployment.yaml b/typescript/infra/helm/liquidity-layer-relayers/templates/circle-relayer-deployment.yaml index 02dc71378..a41589924 100644 --- a/typescript/infra/helm/liquidity-layer-relayers/templates/circle-relayer-deployment.yaml +++ b/typescript/infra/helm/liquidity-layer-relayers/templates/circle-relayer-deployment.yaml @@ -21,10 +21,6 @@ spec: - ./typescript/infra/scripts/middleware/circle-relayer.ts - -e - {{ .Values.hyperlane.runEnv }} -{{- if .Values.hyperlane.connectionType }} - - --connection-type - - {{ .Values.hyperlane.connectionType }} -{{- end }} envFrom: - secretRef: name: liquidity-layer-env-var-secret diff --git a/typescript/infra/helm/liquidity-layer-relayers/templates/env-var-external-secret.yaml b/typescript/infra/helm/liquidity-layer-relayers/templates/env-var-external-secret.yaml index a8d44b48c..62b311712 100644 --- a/typescript/infra/helm/liquidity-layer-relayers/templates/env-var-external-secret.yaml +++ b/typescript/infra/helm/liquidity-layer-relayers/templates/env-var-external-secret.yaml @@ -29,7 +29,6 @@ spec: */}} {{- range .Values.hyperlane.chains }} GCP_SECRET_OVERRIDE_{{ $.Values.hyperlane.runEnv | upper }}_RPC_ENDPOINTS_{{ . | upper }}: {{ printf "'{{ .%s_rpcs | toString }}'" . }} - GCP_SECRET_OVERRIDE_{{ $.Values.hyperlane.runEnv | upper }}_RPC_ENDPOINT_{{ . | upper }}: {{ printf "'{{ .%s_rpc | toString }}'" . }} {{- end }} data: - secretKey: deployer_key @@ -43,7 +42,4 @@ spec: - secretKey: {{ printf "%s_rpcs" . }} remoteRef: key: {{ printf "%s-rpc-endpoints-%s" $.Values.hyperlane.runEnv . }} - - secretKey: {{ printf "%s_rpc" . }} - remoteRef: - key: {{ printf "%s-rpc-endpoint-%s" $.Values.hyperlane.runEnv . }} {{- end }} diff --git a/typescript/infra/helm/liquidity-layer-relayers/templates/portal-relayer-deployment.yaml b/typescript/infra/helm/liquidity-layer-relayers/templates/portal-relayer-deployment.yaml index 8f1828424..933210d8d 100644 --- a/typescript/infra/helm/liquidity-layer-relayers/templates/portal-relayer-deployment.yaml +++ b/typescript/infra/helm/liquidity-layer-relayers/templates/portal-relayer-deployment.yaml @@ -21,10 +21,6 @@ spec: - ./typescript/infra/scripts/middleware/portal-relayer.ts - -e - {{ .Values.hyperlane.runEnv }} -{{- if .Values.hyperlane.connectionType }} - - --connection-type - - {{ .Values.hyperlane.connectionType }} -{{- end }} envFrom: - secretRef: name: liquidity-layer-env-var-secret diff --git a/typescript/infra/package.json b/typescript/infra/package.json index 7d97bf316..66ecf3131 100644 --- a/typescript/infra/package.json +++ b/typescript/infra/package.json @@ -12,6 +12,7 @@ "@ethersproject/experimental": "^5.7.0", "@ethersproject/hardware-wallets": "^5.7.0", "@ethersproject/providers": "^5.7.2", + "@google-cloud/secret-manager": "^5.5.0", "@hyperlane-xyz/helloworld": "4.0.0-alpha.2", "@hyperlane-xyz/registry": "1.3.0", "@hyperlane-xyz/sdk": "4.0.0-alpha.2", diff --git a/typescript/infra/scripts/agent-utils.ts b/typescript/infra/scripts/agent-utils.ts index d027d5aad..313af5d44 100644 --- a/typescript/infra/scripts/agent-utils.ts +++ b/typescript/infra/scripts/agent-utils.ts @@ -1,14 +1,14 @@ import path, { join } from 'path'; import yargs, { Argv } from 'yargs'; -import { ChainAddresses } from '@hyperlane-xyz/registry'; +import { ChainAddresses, IRegistry } from '@hyperlane-xyz/registry'; import { ChainMap, ChainMetadata, ChainName, CoreConfig, + MultiProtocolProvider, MultiProvider, - RpcConsensusType, collectValidators, } from '@hyperlane-xyz/sdk'; import { @@ -16,6 +16,7 @@ import { ProtocolType, objFilter, objMap, + objMerge, promiseObjAll, rootLogger, symmetricDifference, @@ -35,7 +36,10 @@ import { getCurrentKubernetesContext } from '../src/agents/index.js'; import { getCloudAgentKey } from '../src/agents/key-utils.js'; import { CloudAgentKey } from '../src/agents/keys.js'; import { RootAgentConfig } from '../src/config/agent/agent.js'; -import { fetchProvider } from '../src/config/chain.js'; +import { + fetchProvider, + getSecretMetadataOverrides, +} from '../src/config/chain.js'; import { AgentEnvironment, DeployEnvironment, @@ -47,6 +51,7 @@ import { assertContext, assertRole, getInfraPath, + inCIMode, readJSONAtPath, writeMergedJSONAtPath, } from '../src/utils/utils.js'; @@ -96,13 +101,6 @@ export function withModuleAndFork(args: Argv) { .alias('f', 'fork'); } -export function withNetwork(args: Argv) { - return args - .describe('network', 'network to target') - .choices('network', getChains()) - .alias('n', 'network'); -} - export function withContext(args: Argv) { return args .describe('context', 'deploy context') @@ -112,6 +110,17 @@ export function withContext(args: Argv) { .demandOption('context'); } +export function withChainRequired(args: Argv) { + return withChain(args).demandOption('chain'); +} + +export function withChain(args: Argv) { + return args + .describe('chain', 'chain name') + .choices('chain', getChains()) + .alias('c', 'chain'); +} + export function withProtocol(args: Argv) { return args .describe('protocol', 'protocol type') @@ -171,6 +180,17 @@ export function withConcurrentDeploy(args: Argv) { .default('concurrentDeploy', false); } +export function withRpcUrls(args: Argv) { + return args + .describe( + 'rpcUrls', + 'rpc urls in a comma separated list, in order of preference', + ) + .string('rpcUrls') + .demandOption('rpcUrls') + .alias('r', 'rpcUrls'); +} + // not requiring to build coreConfig to get agentConfig export async function getAgentConfigsBasedOnArgs(argv?: { environment: DeployEnvironment; @@ -283,8 +303,8 @@ export function ensureValidatorConfigConsistency(agentConfig: RootAgentConfig) { export function getKeyForRole( environment: DeployEnvironment, context: Contexts, - chain: ChainName, role: Role, + chain?: ChainName, index?: number, ): CloudAgentKey { debugLog(`Getting key for ${role} role`); @@ -292,33 +312,32 @@ export function getKeyForRole( return getCloudAgentKey(agentConfig, role, chain, index); } +export async function getMultiProtocolProvider( + registry: IRegistry, +): Promise { + const chainMetadata = await registry.getMetadata(); + return new MultiProtocolProvider(chainMetadata); +} + export async function getMultiProviderForRole( - txConfigs: ChainMap, environment: DeployEnvironment, + registry: IRegistry, context: Contexts, role: Role, index?: number, - // TODO: rename to consensusType? - connectionType?: RpcConsensusType, ): Promise { + const chainMetadata = await registry.getMetadata(); debugLog(`Getting multiprovider for ${role} role`); - const multiProvider = new MultiProvider(txConfigs); - if (process.env.CI === 'true') { - debugLog('Returning multiprovider with default RPCs in CI'); - // Return the multiProvider with default RPCs + const multiProvider = new MultiProvider(chainMetadata); + if (inCIMode()) { + debugLog('Running in CI, returning multiprovider without secret keys'); return multiProvider; } await promiseObjAll( - objMap(txConfigs, async (chain, _) => { + objMap(chainMetadata, async (chain, _) => { if (multiProvider.getProtocol(chain) === ProtocolType.Ethereum) { - const provider = await fetchProvider( - environment, - chain, - connectionType, - ); - const key = getKeyForRole(environment, context, chain, role, index); - const signer = await key.getSigner(provider); - multiProvider.setProvider(chain, provider); + const key = getKeyForRole(environment, context, role, chain, index); + const signer = await key.getSigner(); multiProvider.setSigner(chain, signer); } }), @@ -330,23 +349,22 @@ export async function getMultiProviderForRole( // Note: this will only work for keystores that allow key's to be extracted. // I.e. GCP will work but AWS HSMs will not. export async function getKeysForRole( - txConfigs: ChainMap, environment: DeployEnvironment, + supportedChainNames: ChainName[], context: Contexts, role: Role, index?: number, ): Promise> { - if (process.env.CI === 'true') { + if (inCIMode()) { debugLog('No keys to return in CI'); return {}; } - const keys = await promiseObjAll( - objMap(txConfigs, async (chain, _) => - getKeyForRole(environment, context, chain, role, index), - ), - ); - return keys; + const keyEntries = supportedChainNames.map((chain) => [ + chain, + getKeyForRole(environment, context, role, chain, index), + ]); + return Object.fromEntries(keyEntries); } export function getEnvironmentDirectory(environment: DeployEnvironment) { diff --git a/typescript/infra/scripts/agents/update-agent-config.ts b/typescript/infra/scripts/agents/update-agent-config.ts index 2ec6431b8..6b0ed65fd 100644 --- a/typescript/infra/scripts/agents/update-agent-config.ts +++ b/typescript/infra/scripts/agents/update-agent-config.ts @@ -6,7 +6,12 @@ async function main() { const { environment } = await getArgs().argv; const envConfig = getEnvironmentConfig(environment); - let multiProvider = await envConfig.getMultiProvider(); + let multiProvider = await envConfig.getMultiProvider( + undefined, + undefined, + // Don't use secrets + false, + ); await writeAgentConfig(multiProvider, environment); } diff --git a/typescript/infra/scripts/check-rpc-urls.ts b/typescript/infra/scripts/check-rpc-urls.ts index 2ab70835b..307e4515c 100644 --- a/typescript/infra/scripts/check-rpc-urls.ts +++ b/typescript/infra/scripts/check-rpc-urls.ts @@ -2,25 +2,20 @@ import { ethers } from 'ethers'; import { rootLogger } from '@hyperlane-xyz/utils'; -import { getSecretRpcEndpoint } from '../src/agents/index.js'; +import { getSecretRpcEndpoints } from '../src/agents/index.js'; import { getArgs } from './agent-utils.js'; import { getEnvironmentConfig } from './core-utils.js'; -// TODO remove this script as part of migration to CLI -// It's redundant with metadata-check.ts in the SDK async function main() { const { environment } = await getArgs().argv; - const config = await getEnvironmentConfig(environment); + const config = getEnvironmentConfig(environment); const multiProvider = await config.getMultiProvider(); const chains = multiProvider.getKnownChainNames(); const providers: [string, ethers.providers.JsonRpcProvider][] = []; for (const chain of chains) { rootLogger.debug(`Building providers for ${chain}`); - const rpcData = [ - ...(await getSecretRpcEndpoint(environment, chain, false)), - ...(await getSecretRpcEndpoint(environment, chain, true)), - ]; + const rpcData = await getSecretRpcEndpoints(environment, chain); for (const url of rpcData) providers.push([chain, new ethers.providers.StaticJsonRpcProvider(url)]); } diff --git a/typescript/infra/scripts/deploy.ts b/typescript/infra/scripts/deploy.ts index 73ce91679..4ecd59eed 100644 --- a/typescript/infra/scripts/deploy.ts +++ b/typescript/infra/scripts/deploy.ts @@ -40,10 +40,10 @@ import { getArgs, getModuleDirectory, withBuildArtifactPath, + withChain, withConcurrentDeploy, withContext, withModuleAndFork, - withNetwork, } from './agent-utils.js'; import { getEnvironmentConfig, getHyperlaneCore } from './core-utils.js'; @@ -53,12 +53,12 @@ async function main() { module, fork, environment, - network, + chain, buildArtifactPath, concurrentDeploy, } = await withContext( withConcurrentDeploy( - withNetwork(withModuleAndFork(withBuildArtifactPath(getArgs()))), + withChain(withModuleAndFork(withBuildArtifactPath(getArgs()))), ), ).argv; const envConfig = getEnvironmentConfig(environment); @@ -227,7 +227,7 @@ async function main() { // prompt for confirmation in production environments if (environment !== 'test' && !fork) { - const confirmConfig = network ? config[network] : config; + const confirmConfig = chain ? config[chain] : config; console.log(JSON.stringify(confirmConfig, null, 2)); const { value: confirmed } = await prompts({ type: 'confirm', @@ -244,7 +244,7 @@ async function main() { config, deployer, cache, - network ?? fork, + chain ?? fork, agentConfig, ); } diff --git a/typescript/infra/scripts/funding/fund-keys-from-deployer.ts b/typescript/infra/scripts/funding/fund-keys-from-deployer.ts index 02b15a978..b949b9a32 100644 --- a/typescript/infra/scripts/funding/fund-keys-from-deployer.ts +++ b/typescript/infra/scripts/funding/fund-keys-from-deployer.ts @@ -9,7 +9,6 @@ import { ChainName, HyperlaneIgp, MultiProvider, - RpcConsensusType, } from '@hyperlane-xyz/sdk'; import { Address, objFilter, objMap, rootLogger } from '@hyperlane-xyz/utils'; @@ -177,11 +176,6 @@ async function main() { ) .coerce('desired-kathy-balance-per-chain', parseBalancePerChain) - .string('connection-type') - .describe('connection-type', 'The provider connection type to use for RPCs') - .default('connection-type', RpcConsensusType.Single) - .demandOption('connection-type') - .boolean('skip-igp-claim') .describe('skip-igp-claim', 'If true, never claims funds from the IGP') .default('skip-igp-claim', false).argv; @@ -191,7 +185,6 @@ async function main() { const multiProvider = await config.getMultiProvider( Contexts.Hyperlane, // Always fund from the hyperlane context Role.Deployer, // Always fund from the deployer - argv.connectionType, ); let contextFunders: ContextFunder[]; @@ -381,7 +374,7 @@ class ContextFunder { [Role.Kathy]: '', }; const roleKeysPerChain: ChainMap> = {}; - const chains = getEnvironmentConfig(environment).chainMetadataConfigs; + const { supportedChainNames } = getEnvironmentConfig(environment); for (const role of rolesToFund) { assertFundableRole(role); // only the relayer and kathy are fundable keys const roleAddress = fetchLocalKeyAddresses(role)[environment][context]; @@ -392,7 +385,7 @@ class ContextFunder { } fundableRoleKeys[role] = roleAddress; - for (const chain of Object.keys(chains)) { + for (const chain of supportedChainNames) { if (!roleKeysPerChain[chain as ChainName]) { roleKeysPerChain[chain as ChainName] = { [Role.Relayer]: [], diff --git a/typescript/infra/scripts/helloworld/kathy.ts b/typescript/infra/scripts/helloworld/kathy.ts index 7c212831e..cea226d4f 100644 --- a/typescript/infra/scripts/helloworld/kathy.ts +++ b/typescript/infra/scripts/helloworld/kathy.ts @@ -11,7 +11,6 @@ import { MultiProtocolCore, MultiProvider, ProviderType, - RpcConsensusType, TypedTransactionReceipt, } from '@hyperlane-xyz/sdk'; import { @@ -19,6 +18,7 @@ import { ProtocolType, ensure0x, objMap, + pick, retryAsync, rootLogger, sleep, @@ -27,7 +27,6 @@ import { } from '@hyperlane-xyz/utils'; import { Contexts } from '../../config/contexts.js'; -import { testnetConfigs } from '../../config/environments/testnet4/chains.js'; import { hyperlaneHelloworld, releaseCandidateHelloworld, @@ -127,16 +126,6 @@ function getKathyArgs() { chainStrs.map((chainStr: string) => assertChain(chainStr)), ) - .string('connection-type') - .describe('connection-type', 'The provider connection type to use for RPCs') - .default('connection-type', RpcConsensusType.Single) - .choices('connection-type', [ - RpcConsensusType.Single, - RpcConsensusType.Quorum, - RpcConsensusType.Fallback, - ]) - .demandOption('connection-type') - .number('cycles-between-ethereum-messages') .describe( 'cycles-between-ethereum-messages', @@ -155,7 +144,6 @@ async function main(): Promise { fullCycleTime, messageSendTimeout, messageReceiptTimeout, - connectionType, cyclesBetweenEthereumMessages, } = await getKathyArgs(); @@ -165,7 +153,6 @@ async function main(): Promise { logger.debug('Starting up', { environment }); const coreConfig = getEnvironmentConfig(environment); - // const coreConfig = getCoreConfigStub(environment); const { app, core, igp, multiProvider, keys } = await getHelloWorldMultiProtocolApp( @@ -173,7 +160,6 @@ async function main(): Promise { context, Role.Kathy, undefined, - connectionType, ); const appChains = app.chains(); @@ -544,7 +530,14 @@ async function updateWalletBalanceMetricFor( } // Get a core config intended for testing Kathy without secret access -export function getCoreConfigStub(environment: DeployEnvironment) { +export async function getCoreConfigStub(environment: DeployEnvironment) { + const environmentConfig = getEnvironmentConfig(environment); + // Don't fetch any secrets. + const registry = await environmentConfig.getRegistry(false); + const testnetConfigs = pick( + await registry.getMetadata(), + environmentConfig.supportedChainNames, + ); const multiProvider = new MultiProvider({ // Desired chains here. Key must have funds on these chains ...testnetConfigs, diff --git a/typescript/infra/scripts/helloworld/utils.ts b/typescript/infra/scripts/helloworld/utils.ts index 38ab8969f..03cb408eb 100644 --- a/typescript/infra/scripts/helloworld/utils.ts +++ b/typescript/infra/scripts/helloworld/utils.ts @@ -8,7 +8,6 @@ import { MultiProtocolCore, MultiProtocolProvider, MultiProvider, - RpcConsensusType, attachContractsMap, attachContractsMapAndGetForeignDeployments, filterChainMapToProtocol, @@ -28,12 +27,10 @@ export async function getHelloWorldApp( context: Contexts, keyRole: Role, keyContext: Contexts = context, - connectionType: RpcConsensusType = RpcConsensusType.Single, ) { const multiProvider: MultiProvider = await coreConfig.getMultiProvider( keyContext, keyRole, - connectionType, ); const helloworldConfig = getHelloWorldConfig(coreConfig, context); @@ -61,12 +58,10 @@ export async function getHelloWorldMultiProtocolApp( context: Contexts, keyRole: Role, keyContext: Contexts = context, - connectionType: RpcConsensusType = RpcConsensusType.Single, ) { const multiProvider: MultiProvider = await coreConfig.getMultiProvider( keyContext, keyRole, - connectionType, ); const envAddresses = getEnvAddresses(coreConfig.environment); diff --git a/typescript/infra/scripts/print-chain-metadatas.ts b/typescript/infra/scripts/print-chain-metadatas.ts index 8653ef908..ff8f771fe 100644 --- a/typescript/infra/scripts/print-chain-metadatas.ts +++ b/typescript/infra/scripts/print-chain-metadatas.ts @@ -1,3 +1,5 @@ +import { pick } from '@hyperlane-xyz/utils'; + import { getArgs } from './agent-utils.js'; import { getEnvironmentConfig } from './core-utils.js'; @@ -9,7 +11,15 @@ async function main() { const environmentConfig = getEnvironmentConfig(args.environment); - console.log(JSON.stringify(environmentConfig.chainMetadataConfigs, null, 2)); + // Intentionally do not include any secrets in the output + const registry = await environmentConfig.getRegistry(false); + const allMetadata = await registry.getMetadata(); + const environmentMetadata = pick( + allMetadata, + environmentConfig.supportedChainNames, + ); + + console.log(JSON.stringify(environmentMetadata, null, 2)); } main().catch((err) => { diff --git a/typescript/infra/scripts/print-gas-prices.ts b/typescript/infra/scripts/print-gas-prices.ts index e06f13421..61126c371 100644 --- a/typescript/infra/scripts/print-gas-prices.ts +++ b/typescript/infra/scripts/print-gas-prices.ts @@ -1,47 +1,67 @@ import { ethers } from 'ethers'; -import { MultiProtocolProvider, ProviderType } from '@hyperlane-xyz/sdk'; -import { objMap, promiseObjAll } from '@hyperlane-xyz/utils'; +import { + ChainMap, + MultiProtocolProvider, + ProviderType, +} from '@hyperlane-xyz/sdk'; -import { mainnetConfigs } from '../config/environments/mainnet3/chains.js'; -import { getCosmosChainGasPrice } from '../src/config/gas-oracle.js'; +import { + GasPriceConfig, + getCosmosChainGasPrice, +} from '../src/config/gas-oracle.js'; + +import { getEnvironmentConfig } from './core-utils.js'; async function main() { - const allMetadatas = mainnetConfigs; - - const mpp = new MultiProtocolProvider(allMetadatas); - - const prices = await promiseObjAll( - objMap(allMetadatas, async (chain, metadata) => { - const provider = mpp.getProvider(chain); - switch (provider.type) { - case ProviderType.EthersV5: { - const gasPrice = await provider.provider.getGasPrice(); - return { - amount: ethers.utils.formatUnits(gasPrice, 'gwei'), - decimals: 9, - }; - } - case ProviderType.CosmJsWasm: { - const { amount } = await getCosmosChainGasPrice(chain); - - return { - amount, - decimals: 1, - }; - } - case ProviderType.SolanaWeb3: - // TODO get a reasonable value - return '0.001'; - default: - throw new Error(`Unsupported provider type: ${provider.type}`); - } - }), + const environmentConfig = getEnvironmentConfig('mainnet3'); + + const mpp = await environmentConfig.getMultiProtocolProvider(); + + const prices: ChainMap = Object.fromEntries( + await Promise.all( + environmentConfig.supportedChainNames.map(async (chain) => [ + chain, + await getGasPrice(mpp, chain), + ]), + ), ); console.log(JSON.stringify(prices, null, 2)); } +async function getGasPrice( + mpp: MultiProtocolProvider, + chain: string, +): Promise { + const provider = mpp.getProvider(chain); + switch (provider.type) { + case ProviderType.EthersV5: { + const gasPrice = await provider.provider.getGasPrice(); + return { + amount: ethers.utils.formatUnits(gasPrice, 'gwei'), + decimals: 9, + }; + } + case ProviderType.CosmJsWasm: { + const { amount } = await getCosmosChainGasPrice(chain); + + return { + amount, + decimals: 1, + }; + } + case ProviderType.SolanaWeb3: + // TODO get a reasonable value + return { + amount: '0.001', + decimals: 9, + }; + default: + throw new Error(`Unsupported provider type: ${provider.type}`); + } +} + main() .then() .catch((err) => { diff --git a/typescript/infra/scripts/print-token-prices.ts b/typescript/infra/scripts/print-token-prices.ts index 35c30fb5b..b125bac95 100644 --- a/typescript/infra/scripts/print-token-prices.ts +++ b/typescript/infra/scripts/print-token-prices.ts @@ -1,11 +1,17 @@ -import { objMap } from '@hyperlane-xyz/utils'; +import { objMap, pick } from '@hyperlane-xyz/utils'; -import { mainnetConfigs } from '../config/environments/mainnet3/chains.js'; +import { getEnvironmentConfig } from './core-utils.js'; const CURRENCY = 'usd'; async function main() { - const metadata = mainnetConfigs; + const environmentConfig = getEnvironmentConfig('mainnet3'); + + const registry = await environmentConfig.getRegistry(); + const metadata = pick( + await registry.getMetadata(), + environmentConfig.supportedChainNames, + ); const ids = objMap( metadata, diff --git a/typescript/infra/scripts/verify.ts b/typescript/infra/scripts/verify.ts index 9c15c6597..0e1f782d4 100644 --- a/typescript/infra/scripts/verify.ts +++ b/typescript/infra/scripts/verify.ts @@ -12,12 +12,12 @@ import { } from '../src/deployment/verify.js'; import { readJSONAtPath } from '../src/utils/utils.js'; -import { getArgs, withBuildArtifactPath, withNetwork } from './agent-utils.js'; +import { getArgs, withBuildArtifactPath, withChain } from './agent-utils.js'; import { getEnvironmentConfig } from './core-utils.js'; async function main() { - const { environment, buildArtifactPath, verificationArtifactPath, network } = - await withNetwork(withBuildArtifactPath(getArgs())) + const { environment, buildArtifactPath, verificationArtifactPath, chain } = + await withChain(withBuildArtifactPath(getArgs())) .string('verificationArtifactPath') .describe( 'verificationArtifactPath', @@ -54,7 +54,7 @@ async function main() { // verify all the things const failedResults = ( - await verifier.verify(network ? [network] : undefined) + await verifier.verify(chain ? [chain] : undefined) ).filter((result) => result.status === 'rejected'); // only log the failed verifications to console diff --git a/typescript/infra/src/agents/index.ts b/typescript/infra/src/agents/index.ts index 41eabefae..c959bca65 100644 --- a/typescript/infra/src/agents/index.ts +++ b/typescript/infra/src/agents/index.ts @@ -17,7 +17,12 @@ import { ScraperConfigHelper } from '../config/agent/scraper.js'; import { ValidatorConfigHelper } from '../config/agent/validator.js'; import { DeployEnvironment } from '../config/environment.js'; import { AgentRole, Role } from '../roles.js'; -import { fetchGCPSecret } from '../utils/gcloud.js'; +import { + fetchGCPSecret, + gcpSecretExistsUsingClient, + getGcpSecretLatestVersionName, + setGCPSecretUsingClient, +} from '../utils/gcloud.js'; import { HelmCommand, buildHelmChartDependencies, @@ -287,6 +292,13 @@ export class ValidatorHelmManager extends MultichainAgentHelmManager { } } +export function getSecretName( + environment: string, + chainName: ChainName, +): string { + return `${environment}-rpc-endpoints-${chainName}`; +} + export async function getSecretAwsCredentials(agentConfig: AgentContextConfig) { return { accessKeyId: await fetchGCPSecret( @@ -300,20 +312,14 @@ export async function getSecretAwsCredentials(agentConfig: AgentContextConfig) { }; } -export async function getSecretRpcEndpoint( +export async function getSecretRpcEndpoints( environment: string, chainName: ChainName, - quorum = false, ): Promise { - const secret = await fetchGCPSecret( - `${environment}-rpc-endpoint${quorum ? 's' : ''}-${chainName}`, - quorum, - ); - if (typeof secret != 'string' && !Array.isArray(secret)) { - throw Error(`Expected secret for ${chainName} rpc endpoint`); - } + const secret = await fetchGCPSecret(getSecretName(environment, chainName)); + if (!Array.isArray(secret)) { - return [secret.trimEnd()]; + throw Error(`Expected secret for ${chainName} rpc endpoint`); } return secret.map((i) => { @@ -323,6 +329,29 @@ export async function getSecretRpcEndpoint( }); } +export async function getSecretRpcEndpointsLatestVersionName( + environment: string, + chainName: ChainName, +) { + return getGcpSecretLatestVersionName(getSecretName(environment, chainName)); +} + +export async function secretRpcEndpointsExist( + environment: string, + chainName: ChainName, +): Promise { + return gcpSecretExistsUsingClient(getSecretName(environment, chainName)); +} + +export async function setSecretRpcEndpoints( + environment: string, + chainName: ChainName, + endpoints: string, +) { + const secretName = getSecretName(environment, chainName); + await setGCPSecretUsingClient(secretName, endpoints); +} + export async function getSecretDeployerKey( environment: DeployEnvironment, context: Contexts, diff --git a/typescript/infra/src/config/chain.ts b/typescript/infra/src/config/chain.ts index b64035b2b..51584fc37 100644 --- a/typescript/infra/src/config/chain.ts +++ b/typescript/infra/src/config/chain.ts @@ -1,16 +1,19 @@ +import { SecretManagerServiceClient } from '@google-cloud/secret-manager'; import { providers } from 'ethers'; +import { IRegistry } from '@hyperlane-xyz/registry'; import { + ChainMap, ChainMetadata, ChainName, HyperlaneSmartProvider, ProviderRetryOptions, - RpcConsensusType, } from '@hyperlane-xyz/sdk'; -import { ProtocolType, objFilter } from '@hyperlane-xyz/utils'; +import { ProtocolType, objFilter, objMerge } from '@hyperlane-xyz/utils'; -import { getChain } from '../../config/registry.js'; -import { getSecretRpcEndpoint } from '../agents/index.js'; +import { getChain, getRegistryWithOverrides } from '../../config/registry.js'; +import { getSecretRpcEndpoints } from '../agents/index.js'; +import { inCIMode } from '../utils/utils.js'; import { DeployEnvironment } from './environment.js'; @@ -20,37 +23,24 @@ export const defaultRetry: ProviderRetryOptions = { }; export async function fetchProvider( - environment: DeployEnvironment, chainName: ChainName, - connectionType: RpcConsensusType = RpcConsensusType.Single, ): Promise { const chainMetadata = getChain(chainName); if (!chainMetadata) { throw Error(`Unsupported chain: ${chainName}`); } const chainId = chainMetadata.chainId; - const single = connectionType === RpcConsensusType.Single; let rpcData = chainMetadata.rpcUrls.map((url) => url.http); if (rpcData.length === 0) { - rpcData = await getSecretRpcEndpoint(environment, chainName, !single); + throw Error(`No RPC URLs found for chain: ${chainName}`); } - if (connectionType === RpcConsensusType.Single) { - return HyperlaneSmartProvider.fromRpcUrl(chainId, rpcData[0], defaultRetry); - } else if ( - connectionType === RpcConsensusType.Quorum || - connectionType === RpcConsensusType.Fallback - ) { - return new HyperlaneSmartProvider( - chainId, - rpcData.map((url) => ({ http: url })), - undefined, - // disable retry for quorum - connectionType === RpcConsensusType.Fallback ? defaultRetry : undefined, - ); - } else { - throw Error(`Unsupported connectionType: ${connectionType}`); - } + return new HyperlaneSmartProvider( + chainId, + rpcData.map((url) => ({ http: url })), + undefined, + defaultRetry, + ); } export function getChainMetadatas(chains: Array) { @@ -73,3 +63,69 @@ export function getChainMetadatas(chains: Array) { return { ethereumMetadatas, nonEthereumMetadatas }; } + +/** + * Gets the registry for the given environment, with optional overrides and + * the ability to get overrides from secrets. + * @param deployEnv The deploy environment. + * @param chains The chains to get metadata for. + * @param defaultChainMetadataOverrides The default chain metadata overrides. If + * secret overrides are used, the secret overrides will be merged with these and + * take precedence. + * @param useSecrets Whether to fetch metadata overrides from secrets. + * @returns A registry with overrides for the given environment. + */ +export async function getRegistryForEnvironment( + deployEnv: DeployEnvironment, + chains: ChainName[], + defaultChainMetadataOverrides: ChainMap> = {}, + useSecrets: boolean = true, +): Promise { + let overrides = defaultChainMetadataOverrides; + if (useSecrets && !inCIMode()) { + overrides = objMerge( + overrides, + await getSecretMetadataOverrides(deployEnv, chains), + ); + } + const registry = getRegistryWithOverrides(overrides); + return registry; +} + +/** + * Gets chain metadata overrides from GCP secrets. + * @param deployEnv The deploy environment. + * @param chains The chains to get metadata overrides for. + * @returns A partial chain metadata map with the secret overrides. + */ +export async function getSecretMetadataOverrides( + deployEnv: DeployEnvironment, + chains: string[], +): Promise>> { + const chainMetadataOverrides: ChainMap> = {}; + + const secretRpcUrls = await Promise.all( + chains.map(async (chain) => { + const rpcUrls = await getSecretRpcEndpoints(deployEnv, chain); + return { + chain, + rpcUrls, + }; + }), + ); + + for (const { chain, rpcUrls } of secretRpcUrls) { + if (rpcUrls.length === 0) { + throw Error(`No secret RPC URLs found for chain: ${chain}`); + } + // Need explicit casting here because Zod expects a non-empty array. + const metadataRpcUrls = rpcUrls.map((rpcUrl: string) => ({ + http: rpcUrl, + })) as ChainMetadata['rpcUrls']; + chainMetadataOverrides[chain] = { + rpcUrls: metadataRpcUrls, + }; + } + + return chainMetadataOverrides; +} diff --git a/typescript/infra/src/config/environment.ts b/typescript/infra/src/config/environment.ts index fbb9b74c7..5b6fa0350 100644 --- a/typescript/infra/src/config/environment.ts +++ b/typescript/infra/src/config/environment.ts @@ -1,3 +1,4 @@ +import { IRegistry } from '@hyperlane-xyz/registry'; import { BridgeAdapterConfig, ChainMap, @@ -5,9 +6,9 @@ import { ChainName, CoreConfig, IgpConfig, + MultiProtocolProvider, MultiProvider, OwnableConfig, - RpcConsensusType, } from '@hyperlane-xyz/sdk'; import { objKeys } from '@hyperlane-xyz/utils'; @@ -39,17 +40,20 @@ export const envNameToAgentEnv: Record = { export type EnvironmentConfig = { environment: DeployEnvironment; - chainMetadataConfigs: ChainMap; + supportedChainNames: ChainName[]; + // Get the registry with or without environment-specific secrets. + getRegistry: (useSecrets?: boolean) => Promise; // Each AgentConfig, keyed by the context agents: Partial>; core: ChainMap; igp: ChainMap; owners: ChainMap; infra: InfrastructureConfig; + getMultiProtocolProvider: () => Promise; getMultiProvider: ( context?: Contexts, role?: Role, - connectionType?: RpcConsensusType, + useSecrets?: boolean, ) => Promise; getKeys: ( context?: Contexts, diff --git a/typescript/infra/src/config/funding.ts b/typescript/infra/src/config/funding.ts index a55a6524f..f75d19cfd 100644 --- a/typescript/infra/src/config/funding.ts +++ b/typescript/infra/src/config/funding.ts @@ -1,4 +1,4 @@ -import { ChainMap, RpcConsensusType } from '@hyperlane-xyz/sdk'; +import { ChainMap } from '@hyperlane-xyz/sdk'; import { Contexts } from '../../config/contexts.js'; import { FundableRole, Role } from '../roles.js'; @@ -20,7 +20,6 @@ export interface KeyFunderConfig { contextsAndRolesToFund: ContextAndRolesMap; cyclesBetweenEthereumMessages?: number; prometheusPushGateway: string; - connectionType: RpcConsensusType; desiredBalancePerChain: ChainMap; desiredKathyBalancePerChain: ChainMap; } diff --git a/typescript/infra/src/config/helloworld/types.ts b/typescript/infra/src/config/helloworld/types.ts index 1345894d8..ba2be0750 100644 --- a/typescript/infra/src/config/helloworld/types.ts +++ b/typescript/infra/src/config/helloworld/types.ts @@ -1,4 +1,4 @@ -import { ChainMap, ChainName, RpcConsensusType } from '@hyperlane-xyz/sdk'; +import { ChainMap, ChainName } from '@hyperlane-xyz/sdk'; import { DockerConfig } from '../agent/agent.js'; @@ -29,7 +29,6 @@ export interface HelloWorldKathyConfig { messageReceiptTimeout: number; // Which type of provider to use - connectionType: RpcConsensusType; // How many cycles to skip between a cycles that send messages to/from Ethereum. Defaults to 0. cyclesBetweenEthereumMessages?: number; } diff --git a/typescript/infra/src/config/middleware.ts b/typescript/infra/src/config/middleware.ts index e6f25f92b..19fc3d848 100644 --- a/typescript/infra/src/config/middleware.ts +++ b/typescript/infra/src/config/middleware.ts @@ -1,10 +1,7 @@ -import { RpcConsensusType } from '@hyperlane-xyz/sdk'; - import { DockerConfig } from './agent/agent.js'; export interface LiquidityLayerRelayerConfig { docker: DockerConfig; namespace: string; - connectionType: RpcConsensusType.Single | RpcConsensusType.Quorum; prometheusPushGateway: string; } diff --git a/typescript/infra/src/funding/key-funder.ts b/typescript/infra/src/funding/key-funder.ts index b149b6a0b..ae29c7842 100644 --- a/typescript/infra/src/funding/key-funder.ts +++ b/typescript/infra/src/funding/key-funder.ts @@ -48,7 +48,6 @@ function getKeyFunderHelmValues( chains: agentConfig.environmentChainNames, contextFundingFrom: keyFunderConfig.contextFundingFrom, contextsAndRolesToFund: keyFunderConfig.contextsAndRolesToFund, - connectionType: keyFunderConfig.connectionType, desiredBalancePerChain: keyFunderConfig.desiredBalancePerChain, desiredKathyBalancePerChain: keyFunderConfig.desiredKathyBalancePerChain, }, diff --git a/typescript/infra/src/helloworld/kathy.ts b/typescript/infra/src/helloworld/kathy.ts index 44651380d..6366049fa 100644 --- a/typescript/infra/src/helloworld/kathy.ts +++ b/typescript/infra/src/helloworld/kathy.ts @@ -85,7 +85,6 @@ function getHelloworldKathyHelmValues( messageReceiptTimeout: kathyConfig.messageReceiptTimeout, cycleOnce, fullCycleTime, - connectionType: kathyConfig.connectionType, cyclesBetweenEthereumMessages: kathyConfig.cyclesBetweenEthereumMessages, }, image: { diff --git a/typescript/infra/src/middleware/liquidity-layer-relayer.ts b/typescript/infra/src/middleware/liquidity-layer-relayer.ts index e334c921e..4a1c3d7a1 100644 --- a/typescript/infra/src/middleware/liquidity-layer-relayer.ts +++ b/typescript/infra/src/middleware/liquidity-layer-relayer.ts @@ -44,7 +44,6 @@ function getLiquidityLayerRelayerHelmValues( runEnv: agentConfig.runEnv, // Only used for fetching RPC urls as env vars chains: agentConfig.contextChainNames, - connectionType: relayerConfig.connectionType, }, image: { repository: relayerConfig.docker.repo, diff --git a/typescript/infra/src/utils/gcloud.ts b/typescript/infra/src/utils/gcloud.ts index 0ce5e21f3..56d913b7c 100644 --- a/typescript/infra/src/utils/gcloud.ts +++ b/typescript/infra/src/utils/gcloud.ts @@ -1,3 +1,4 @@ +import { SecretManagerServiceClient } from '@google-cloud/secret-manager'; import fs from 'fs'; import { rootLogger } from '@hyperlane-xyz/utils'; @@ -6,6 +7,8 @@ import { rm, writeFile } from 'fs/promises'; import { execCmd, execCmdAndParseJson } from './utils.js'; +export const GCP_PROJECT_ID = 'abacus-labs-dev'; + interface IamCondition { title: string; expression: string; @@ -32,9 +35,7 @@ export async function fetchGCPSecret( ); output = envVarOverride; } else { - [output] = await execCmd( - `gcloud secrets versions access latest --secret ${secretName}`, - ); + output = await fetchLatestGCPSecret(secretName); } if (parseJson) { @@ -43,6 +44,27 @@ export async function fetchGCPSecret( return output; } +export async function fetchLatestGCPSecret(secretName: string) { + const client = await getSecretManagerServiceClient(); + const [secretVersion] = await client.accessSecretVersion({ + name: `projects/${GCP_PROJECT_ID}/secrets/${secretName}/versions/latest`, + }); + const secretData = secretVersion.payload?.data; + if (!secretData) { + throw new Error(`Secret ${secretName} missing payload`); + } + + // Handle both string and Uint8Array + let dataStr: string; + if (typeof secretData === 'string') { + dataStr = secretData; + } else { + dataStr = new TextDecoder().decode(secretData); + } + + return dataStr; +} + // If the environment variable GCP_SECRET_OVERRIDES_ENABLED is `true`, // this will attempt to find an environment variable of the form: // `GCP_SECRET_OVERRIDE_${gcpSecretName.replaceAll('-', '_').toUpperCase()}` @@ -60,6 +82,12 @@ function tryGCPSecretFromEnvVariable(gcpSecretName: string) { return process.env[overrideEnvVarName]; } +/** + * Checks if a secret exists in GCP using the gcloud CLI. + * @deprecated Use gcpSecretExistsUsingClient instead. + * @param secretName The name of the secret to check. + * @returns A boolean indicating whether the secret exists. + */ export async function gcpSecretExists(secretName: string) { const fullName = `projects/${await getCurrentProjectNumber()}/secrets/${secretName}`; debugLog(`Checking if GCP secret exists for ${fullName}`); @@ -71,6 +99,55 @@ export async function gcpSecretExists(secretName: string) { return matches.length > 0; } +/** + * Uses the SecretManagerServiceClient to check if a secret exists. + * @param secretName The name of the secret to check. + * @returns A boolean indicating whether the secret exists. + */ +export async function gcpSecretExistsUsingClient( + secretName: string, + client?: SecretManagerServiceClient, +): Promise { + if (!client) { + client = await getSecretManagerServiceClient(); + } + + try { + const fullSecretName = `projects/${await getCurrentProjectNumber()}/secrets/${secretName}`; + const [secrets] = await client.listSecrets({ + parent: `projects/${GCP_PROJECT_ID}`, + filter: `name=${fullSecretName}`, + }); + + return secrets.length > 0; + } catch (e) { + debugLog(`Error checking if secret exists: ${e}`); + throw e; + } +} + +export async function getGcpSecretLatestVersionName(secretName: string) { + const client = await getSecretManagerServiceClient(); + const [version] = await client.getSecretVersion({ + name: `projects/${GCP_PROJECT_ID}/secrets/${secretName}/versions/latest`, + }); + + return version?.name; +} + +export async function getSecretManagerServiceClient() { + return new SecretManagerServiceClient({ + projectId: GCP_PROJECT_ID, + }); +} + +/** + * Sets a GCP secret using the gcloud CLI. Create secret if it doesn't exist and add a new version or update the existing one. + * @deprecated Use setGCPSecretUsingClient instead. + * @param secretName The name of the secret to set. + * @param secret The secret to set. + * @param labels The labels to set on the secret. + */ export async function setGCPSecret( secretName: string, secret: string, @@ -97,6 +174,64 @@ export async function setGCPSecret( await rm(fileName); } +/** + * Sets a GCP secret using the SecretManagerServiceClient. Create secret if it doesn't exist and add a new version or update the existing one. + * @param secretName The name of the secret to set. + * @param secret The secret to set. + */ +export async function setGCPSecretUsingClient( + secretName: string, + secret: string, + labels?: Record, +) { + const client = await getSecretManagerServiceClient(); + + const exists = await gcpSecretExistsUsingClient(secretName, client); + if (!exists) { + // Create the secret + await client.createSecret({ + parent: `projects/${GCP_PROJECT_ID}`, + secretId: secretName, + secret: { + name: secretName, + replication: { + automatic: {}, + }, + labels, + }, + }); + debugLog(`Created new GCP secret for ${secretName}`); + } + await addGCPSecretVersion(secretName, secret, client); +} + +export async function addGCPSecretVersion( + secretName: string, + secret: string, + client?: SecretManagerServiceClient, +) { + if (!client) { + client = await getSecretManagerServiceClient(); + } + + const [version] = await client.addSecretVersion({ + parent: `projects/${GCP_PROJECT_ID}/secrets/${secretName}`, + payload: { + data: Buffer.from(secret, 'utf8'), + }, + }); + debugLog(`Added secret version ${version?.name}`); +} + +export async function disableGCPSecretVersion(secretName: string) { + const client = await getSecretManagerServiceClient(); + + const [version] = await client.disableSecretVersion({ + name: secretName, + }); + debugLog(`Disabled secret version ${version?.name}`); +} + // Returns the email of the service account export async function createServiceAccountIfNotExists( serviceAccountName: string, diff --git a/typescript/infra/src/utils/utils.ts b/typescript/infra/src/utils/utils.ts index 476fe3913..d3a8075ff 100644 --- a/typescript/infra/src/utils/utils.ts +++ b/typescript/infra/src/utils/utils.ts @@ -269,3 +269,7 @@ export function isEthereumProtocolChain(chainName: ChainName) { export function getInfraPath() { return join(dirname(fileURLToPath(import.meta.url)), '../../'); } + +export function inCIMode() { + return process.env.CI === 'true'; +} diff --git a/typescript/sdk/CHANGELOG.md b/typescript/sdk/CHANGELOG.md index f7b5bff47..245e84426 100644 --- a/typescript/sdk/CHANGELOG.md +++ b/typescript/sdk/CHANGELOG.md @@ -1,48 +1,12 @@ # @hyperlane-xyz/sdk -## 4.0.0-alpha.2 +## 3.14.0 ### Patch Changes -- 6b63c5d82: Adds deployment support for IsmConfig within a WarpRouteConfig - - @hyperlane-xyz/core@4.0.0-alpha.2 - - @hyperlane-xyz/utils@4.0.0-alpha.2 - -## 4.0.0-alpha.0 - -### Minor Changes - -- bdcbe1d16: Add EvmWarpModule with create() -- 6db9fa9ad: Implement hyperlane warp deploy - -### Patch Changes - -- @hyperlane-xyz/core@4.0.0-alpha.0 -- @hyperlane-xyz/utils@4.0.0-alpha.0 - -## 4.0.0-alpha - -### Major Changes - -- 74c879fa1: Merge branch 'cli-2.0' into main. - -### Minor Changes - -- eb23e7729: Add create() with EvmCoreModule -- 1ec61debd: Support hook config objects in warp config -- 4663018fc: Implement hyperlane core config to return CoreConfig -- 5e5886f2c: Add EvmIcaModule.create() -- 341b8affd: Completes the EvmIsmModule for creating, reading and updating ISMs. -- 3dabcbdca: Adds zod validation on tx submitter populated txs & re-uses ICA params for transformer. -- 1d0d1bb36: Implements `hyperlane core deploy` -- 4bf7301ea: Adds further zod schema validation support throughout the SDK, namely for /transactions. - -### Patch Changes - -- Updated dependencies [341b8affd] -- Updated dependencies [74c879fa1] - - @hyperlane-xyz/utils@4.0.0-alpha - - @hyperlane-xyz/core@4.0.0-alpha +- Updated dependencies [a8a68f6f6] + - @hyperlane-xyz/core@3.14.0 + - @hyperlane-xyz/utils@3.14.0 ## 3.13.0 diff --git a/typescript/sdk/src/consts/multisigIsm.ts b/typescript/sdk/src/consts/multisigIsm.ts index c6f8d8568..6dd1ba4c9 100644 --- a/typescript/sdk/src/consts/multisigIsm.ts +++ b/typescript/sdk/src/consts/multisigIsm.ts @@ -135,6 +135,11 @@ export const defaultMultisigConfigs: ChainMap = { ], }, + holesky: { + threshold: 1, + validators: ['0x7ab28ad88bb45867137ea823af88e2cb02359c03'], // TODO + }, + inevm: { threshold: 2, validators: [ diff --git a/typescript/sdk/src/metadata/agentConfig.ts b/typescript/sdk/src/metadata/agentConfig.ts index 0885a3e4a..49f05e883 100644 --- a/typescript/sdk/src/metadata/agentConfig.ts +++ b/typescript/sdk/src/metadata/agentConfig.ts @@ -399,6 +399,16 @@ export function buildAgentConfig( const chainConfigs: ChainMap = {}; for (const chain of [...chains].sort()) { const metadata = multiProvider.tryGetChainMetadata(chain); + if (metadata?.protocol === ProtocolType.Cosmos) { + // Note: the gRPC URL format in the registry lacks a correct http:// or https:// prefix at the moment, + // which is expected by the agents. For now, we intentionally skip this. + delete metadata.grpcUrls; + + // The agents expect gasPrice.amount and gasPrice.denom and ignore the transaction overrides. + // To reduce confusion when looking at the config, we remove the transaction overrides. + delete metadata.transactionOverrides; + } + const chainConfig: AgentChainMetadata = { ...metadata, ...addresses[chain], diff --git a/typescript/utils/CHANGELOG.md b/typescript/utils/CHANGELOG.md index 887e7681d..e0ab748ce 100644 --- a/typescript/utils/CHANGELOG.md +++ b/typescript/utils/CHANGELOG.md @@ -1,18 +1,6 @@ # @hyperlane-xyz/utils -## 4.0.0-alpha.2 - -## 4.0.0-alpha.0 - -## 4.0.0-alpha - -### Major Changes - -- 74c879fa1: Merge branch 'cli-2.0' into main. - -### Minor Changes - -- 341b8affd: Completes the EvmIsmModule for creating, reading and updating ISMs. +## 3.14.0 ## 3.13.0 diff --git a/yarn.lock b/yarn.lock index e8bf9eb8c..a5ec94b7a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4503,6 +4503,17 @@ __metadata: languageName: node linkType: hard +"@eslint/config-array@npm:^0.15.1": + version: 0.15.1 + resolution: "@eslint/config-array@npm:0.15.1" + dependencies: + "@eslint/object-schema": "npm:^2.1.3" + debug: "npm:^4.3.1" + minimatch: "npm:^3.0.5" + checksum: cf8f68a24498531180fad6846cb52dac4e852b0296d2664930bc15d6a2944ad427827bbaebfddf3f87b9c5db0e36c13974d6dc89fff8ba0d3d2b4357b8d52b4e + languageName: node + linkType: hard + "@eslint/eslintrc@npm:^2.1.4": version: 2.1.4 resolution: "@eslint/eslintrc@npm:2.1.4" @@ -4520,9 +4531,9 @@ __metadata: languageName: node linkType: hard -"@eslint/eslintrc@npm:^3.0.2": - version: 3.0.2 - resolution: "@eslint/eslintrc@npm:3.0.2" +"@eslint/eslintrc@npm:^3.1.0": + version: 3.1.0 + resolution: "@eslint/eslintrc@npm:3.1.0" dependencies: ajv: "npm:^6.12.4" debug: "npm:^4.3.2" @@ -4533,7 +4544,7 @@ __metadata: js-yaml: "npm:^4.1.0" minimatch: "npm:^3.1.2" strip-json-comments: "npm:^3.1.1" - checksum: 04e3d7de2b16fd59ba8985ecd6922eb488e630f94e4433858567a8a6c99b478bb7b47854b166b830b44905759547d0a03654eb1265952c812d5d1d70e3e4ccf9 + checksum: 02bf892d1397e1029209dea685e9f4f87baf643315df2a632b5f121ec7e8548a3b34f428a007234fa82772218fa8a3ac2d10328637b9ce63b7f8344035b74db3 languageName: node linkType: hard @@ -4544,10 +4555,17 @@ __metadata: languageName: node linkType: hard -"@eslint/js@npm:9.0.0": - version: 9.0.0 - resolution: "@eslint/js@npm:9.0.0" - checksum: b14b20af72410ef53e3e77e7d83cc1d6e6554b0092ceb9f969d25d765f4d775b4be32b0cd99bbfd6ce72eb2e4fb6b39b42a159b31909fbe1b3a5e88d75211687 +"@eslint/js@npm:9.4.0": + version: 9.4.0 + resolution: "@eslint/js@npm:9.4.0" + checksum: f1fa9acda8bab02dad21e9b7f46c6ba8cb3949979846caf7667f0c682ed0b56d9e8db143b00aab587ef2d02603df202eb5f7017d8f3a98be94be6efa763865ab + languageName: node + linkType: hard + +"@eslint/object-schema@npm:^2.1.3": + version: 2.1.4 + resolution: "@eslint/object-schema@npm:2.1.4" + checksum: 221e8d9f281c605948cd6e030874aacce83fe097f8f9c1964787037bccf08e82b7aa9eff1850a30fffac43f1d76555727ec22a2af479d91e268e89d1e035131e languageName: node linkType: hard @@ -5608,6 +5626,39 @@ __metadata: languageName: node linkType: hard +"@google-cloud/secret-manager@npm:^5.5.0": + version: 5.5.0 + resolution: "@google-cloud/secret-manager@npm:5.5.0" + dependencies: + google-gax: "npm:^4.0.3" + checksum: 487267dab1e260a0da79012194bb61c85f8b02b642330fdec32cac1fe37900f0fd6709ff4928fe631ab227b0d758bd3e59b1e3dc1d0682de566a64ef4fb42bba + languageName: node + linkType: hard + +"@grpc/grpc-js@npm:~1.10.3": + version: 1.10.8 + resolution: "@grpc/grpc-js@npm:1.10.8" + dependencies: + "@grpc/proto-loader": "npm:^0.7.13" + "@js-sdsl/ordered-map": "npm:^4.4.2" + checksum: cb7903e93db38a86bd2ddffb84313de78144454ad988801ede90f0c794d6a5f666a1b24f50e950b50d633b4bacc7416c7cabf4a6791b91c4fa89c001122edba8 + languageName: node + linkType: hard + +"@grpc/proto-loader@npm:^0.7.0, @grpc/proto-loader@npm:^0.7.13": + version: 0.7.13 + resolution: "@grpc/proto-loader@npm:0.7.13" + dependencies: + lodash.camelcase: "npm:^4.3.0" + long: "npm:^5.0.0" + protobufjs: "npm:^7.2.5" + yargs: "npm:^17.7.2" + bin: + proto-loader-gen-types: build/bin/proto-loader-gen-types.js + checksum: 7e2d842c2061cbaf6450c71da0077263be3bab165454d5c8a3e1ae4d3c6d2915f02fd27da63ff01f05e127b1221acd40705273f5d29303901e60514e852992f4 + languageName: node + linkType: hard + "@headlessui/react@npm:^1.7.17": version: 1.7.18 resolution: "@headlessui/react@npm:1.7.18" @@ -5632,17 +5683,6 @@ __metadata: languageName: node linkType: hard -"@humanwhocodes/config-array@npm:^0.12.3": - version: 0.12.3 - resolution: "@humanwhocodes/config-array@npm:0.12.3" - dependencies: - "@humanwhocodes/object-schema": "npm:^2.0.3" - debug: "npm:^4.3.1" - minimatch: "npm:^3.0.5" - checksum: b05f528c110aa1657d95d213e4ad2662f4161e838806af01a4d3f3b6ee3878d9b6f87d1b10704917f5c2f116757cb5c818480c32c4c4c6f84fe775a170b5f758 - languageName: node - linkType: hard - "@humanwhocodes/module-importer@npm:^1.0.1": version: 1.0.1 resolution: "@humanwhocodes/module-importer@npm:1.0.1" @@ -5657,10 +5697,10 @@ __metadata: languageName: node linkType: hard -"@humanwhocodes/object-schema@npm:^2.0.3": - version: 2.0.3 - resolution: "@humanwhocodes/object-schema@npm:2.0.3" - checksum: 05bb99ed06c16408a45a833f03a732f59bf6184795d4efadd33238ff8699190a8c871ad1121241bb6501589a9598dc83bf25b99dcbcf41e155cdf36e35e937a3 +"@humanwhocodes/retry@npm:^0.3.0": + version: 0.3.0 + resolution: "@humanwhocodes/retry@npm:0.3.0" + checksum: e574bab58680867414e225c9002e9a97eb396f85871c180fbb1a9bcdf9ded4b4de0b327f7d0c43b775873362b7c92956d4b322e8bc4b90be56077524341f04b2 languageName: node linkType: hard @@ -5786,6 +5826,7 @@ __metadata: "@openzeppelin/contracts-upgradeable": "npm:^4.9.3" "@trivago/prettier-plugin-sort-imports": "npm:^4.2.1" "@typechain/ethers-v5": "npm:^11.1.2" + "@typechain/ethers-v6": "npm:^0.5.1" "@typechain/hardhat": "npm:^9.1.0" "@typescript-eslint/eslint-plugin": "npm:^7.4.0" "@typescript-eslint/parser": "npm:^7.4.0" @@ -5825,6 +5866,7 @@ __metadata: "@ethersproject/experimental": "npm:^5.7.0" "@ethersproject/hardware-wallets": "npm:^5.7.0" "@ethersproject/providers": "npm:^5.7.2" + "@google-cloud/secret-manager": "npm:^5.5.0" "@hyperlane-xyz/helloworld": "npm:4.0.0-alpha.2" "@hyperlane-xyz/registry": "npm:1.3.0" "@hyperlane-xyz/sdk": "npm:4.0.0-alpha.2" @@ -6502,6 +6544,13 @@ __metadata: languageName: node linkType: hard +"@js-sdsl/ordered-map@npm:^4.4.2": + version: 4.4.2 + resolution: "@js-sdsl/ordered-map@npm:4.4.2" + checksum: ac64e3f0615ecc015461c9f527f124d2edaa9e68de153c1e270c627e01e83d046522d7e872692fd57a8c514578b539afceff75831c0d8b2a9a7a347fbed35af4 + languageName: node + linkType: hard + "@layerzerolabs/lz-evm-messagelib-v2@npm:^2.0.2": version: 2.0.6 resolution: "@layerzerolabs/lz-evm-messagelib-v2@npm:2.0.6" @@ -9339,6 +9388,20 @@ __metadata: languageName: node linkType: hard +"@typechain/ethers-v6@npm:^0.5.1": + version: 0.5.1 + resolution: "@typechain/ethers-v6@npm:0.5.1" + dependencies: + lodash: "npm:^4.17.15" + ts-essentials: "npm:^7.0.1" + peerDependencies: + ethers: 6.x + typechain: ^8.3.2 + typescript: ">=4.7.0" + checksum: 51dd8be3548fe3c061d2a5372beb9214e767e2b69f10c12424b699bba7ff409a13c4bdff2e513ef49046b51153db56489752205541be8fb1775f3b9ad884b85b + languageName: node + linkType: hard + "@typechain/hardhat@npm:^9.1.0": version: 9.1.0 resolution: "@typechain/hardhat@npm:9.1.0" @@ -9440,6 +9503,13 @@ __metadata: languageName: node linkType: hard +"@types/caseless@npm:*": + version: 0.12.5 + resolution: "@types/caseless@npm:0.12.5" + checksum: f6a3628add76d27005495914c9c3873a93536957edaa5b69c63b46fe10b4649a6fecf16b676c1695f46aab851da47ec6047dcf3570fa8d9b6883492ff6d074e0 + languageName: node + linkType: hard + "@types/chai@npm:*, @types/chai@npm:^4.2.21": version: 4.3.1 resolution: "@types/chai@npm:4.3.1" @@ -9608,7 +9678,7 @@ __metadata: languageName: node linkType: hard -"@types/long@npm:^4.0.1": +"@types/long@npm:^4.0.0, @types/long@npm:^4.0.1": version: 4.0.2 resolution: "@types/long@npm:4.0.2" checksum: 68afa05fb20949d88345876148a76f6ccff5433310e720db51ac5ca21cb8cc6714286dbe04713840ddbd25a8b56b7a23aa87d08472fabf06463a6f2ed4967707 @@ -9815,6 +9885,18 @@ __metadata: languageName: node linkType: hard +"@types/request@npm:^2.48.8": + version: 2.48.12 + resolution: "@types/request@npm:2.48.12" + dependencies: + "@types/caseless": "npm:*" + "@types/node": "npm:*" + "@types/tough-cookie": "npm:*" + form-data: "npm:^2.5.0" + checksum: a7b3f9f14cacc18fe235bb8e57eff1232a04bd3fa3dad29371f24a5d96db2cd295a0c8b6b34ed7efa3efbbcff845febb02c9635cd68c54811c947ea66ae22090 + languageName: node + linkType: hard + "@types/resolve@npm:^0.0.8": version: 0.0.8 resolution: "@types/resolve@npm:0.0.8" @@ -9905,6 +9987,13 @@ __metadata: languageName: node linkType: hard +"@types/tough-cookie@npm:*": + version: 4.0.5 + resolution: "@types/tough-cookie@npm:4.0.5" + checksum: 01fd82efc8202670865928629697b62fe9bf0c0dcbc5b1c115831caeb073a2c0abb871ff393d7df1ae94ea41e256cb87d2a5a91fd03cdb1b0b4384e08d4ee482 + languageName: node + linkType: hard + "@types/trusted-types@npm:^2.0.2": version: 2.0.7 resolution: "@types/trusted-types@npm:2.0.7" @@ -10903,6 +10992,15 @@ __metadata: languageName: node linkType: hard +"agent-base@npm:^7.0.2": + version: 7.1.1 + resolution: "agent-base@npm:7.1.1" + dependencies: + debug: "npm:^4.3.4" + checksum: c478fec8f79953f118704d007a38f2a185458853f5c45579b9669372bd0e12602e88dc2ad0233077831504f7cd6fcc8251c383375bba5eaaf563b102938bda26 + languageName: node + linkType: hard + "agentkeepalive@npm:^4.2.1": version: 4.2.1 resolution: "agentkeepalive@npm:4.2.1" @@ -11957,6 +12055,13 @@ __metadata: languageName: node linkType: hard +"buffer-equal-constant-time@npm:1.0.1": + version: 1.0.1 + resolution: "buffer-equal-constant-time@npm:1.0.1" + checksum: 80bb945f5d782a56f374b292770901065bad21420e34936ecbe949e57724b4a13874f735850dd1cc61f078773c4fb5493a41391e7bda40d1fa388d6bd80daaab + languageName: node + linkType: hard + "buffer-from@npm:^1.0.0": version: 1.1.2 resolution: "buffer-from@npm:1.1.2" @@ -13652,6 +13757,18 @@ __metadata: languageName: node linkType: hard +"duplexify@npm:^4.0.0": + version: 4.1.3 + resolution: "duplexify@npm:4.1.3" + dependencies: + end-of-stream: "npm:^1.4.1" + inherits: "npm:^2.0.3" + readable-stream: "npm:^3.1.1" + stream-shift: "npm:^1.0.2" + checksum: b44b98ba0ffac3a658b4b1bf877219e996db288c5ae6f3dc55ca9b2cbef7df60c10eabfdd947f3d73a623eb9975a74a66d6d61e6f26bff90155315adb362aa77 + languageName: node + linkType: hard + "duplexify@npm:^4.1.2": version: 4.1.2 resolution: "duplexify@npm:4.1.2" @@ -13681,6 +13798,15 @@ __metadata: languageName: node linkType: hard +"ecdsa-sig-formatter@npm:1.0.11, ecdsa-sig-formatter@npm:^1.0.11": + version: 1.0.11 + resolution: "ecdsa-sig-formatter@npm:1.0.11" + dependencies: + safe-buffer: "npm:^5.0.1" + checksum: 878e1aab8a42773320bc04c6de420bee21aebd71810e40b1799880a8a1c4594bcd6adc3d4213a0fb8147d4c3f529d8f9a618d7f59ad5a9a41b142058aceda23f + languageName: node + linkType: hard + "ee-first@npm:1.1.1": version: 1.1.1 resolution: "ee-first@npm:1.1.1" @@ -14280,15 +14406,16 @@ __metadata: linkType: hard "eslint@npm:^9.0.0": - version: 9.0.0 - resolution: "eslint@npm:9.0.0" + version: 9.4.0 + resolution: "eslint@npm:9.4.0" dependencies: "@eslint-community/eslint-utils": "npm:^4.2.0" "@eslint-community/regexpp": "npm:^4.6.1" - "@eslint/eslintrc": "npm:^3.0.2" - "@eslint/js": "npm:9.0.0" - "@humanwhocodes/config-array": "npm:^0.12.3" + "@eslint/config-array": "npm:^0.15.1" + "@eslint/eslintrc": "npm:^3.1.0" + "@eslint/js": "npm:9.4.0" "@humanwhocodes/module-importer": "npm:^1.0.1" + "@humanwhocodes/retry": "npm:^0.3.0" "@nodelib/fs.walk": "npm:^1.2.8" ajv: "npm:^6.12.4" chalk: "npm:^4.0.0" @@ -14304,7 +14431,6 @@ __metadata: file-entry-cache: "npm:^8.0.0" find-up: "npm:^5.0.0" glob-parent: "npm:^6.0.2" - graphemer: "npm:^1.4.0" ignore: "npm:^5.2.0" imurmurhash: "npm:^0.1.4" is-glob: "npm:^4.0.0" @@ -14319,7 +14445,7 @@ __metadata: text-table: "npm:^0.2.0" bin: eslint: bin/eslint.js - checksum: 5cf03e14eb114f95bc4e553c8ae2da65ec09d519779beb08e326d98518bce647ce9c8bf3467bcea4cab35a2657cc3a8e945717e784afa4b1bdb9d1ecd9173ba0 + checksum: e2eaae18eb79d543a1ca5420495ea9bf1278f9e25bfa6309ec4e4dae981cba4d731a9b857f5e2f8b5e467adaaf871a635a7eb143a749e7cdcdff4716821628d2 languageName: node linkType: hard @@ -14913,7 +15039,7 @@ __metadata: languageName: node linkType: hard -"extend@npm:~3.0.2": +"extend@npm:^3.0.2, extend@npm:~3.0.2": version: 3.0.2 resolution: "extend@npm:3.0.2" checksum: 59e89e2dc798ec0f54b36d82f32a27d5f6472c53974f61ca098db5d4648430b725387b53449a34df38fd0392045434426b012f302b3cc049a6500ccf82877e4e @@ -15304,7 +15430,7 @@ __metadata: languageName: node linkType: hard -"form-data@npm:^2.2.0": +"form-data@npm:^2.2.0, form-data@npm:^2.5.0": version: 2.5.1 resolution: "form-data@npm:2.5.1" dependencies: @@ -15667,6 +15793,29 @@ __metadata: languageName: node linkType: hard +"gaxios@npm:^6.0.0, gaxios@npm:^6.1.1": + version: 6.6.0 + resolution: "gaxios@npm:6.6.0" + dependencies: + extend: "npm:^3.0.2" + https-proxy-agent: "npm:^7.0.1" + is-stream: "npm:^2.0.0" + node-fetch: "npm:^2.6.9" + uuid: "npm:^9.0.1" + checksum: 9f035590374fd168e7bb3ddda369fc8bd487f16a2308fde18284ccc0f685d0af4ac5e3e38d680a8c6342a9000fbf9d77ce691ee110dbed2feebb659e729c640a + languageName: node + linkType: hard + +"gcp-metadata@npm:^6.1.0": + version: 6.1.0 + resolution: "gcp-metadata@npm:6.1.0" + dependencies: + gaxios: "npm:^6.0.0" + json-bigint: "npm:^1.0.0" + checksum: a0d12a9cb7499fdb9de0fff5406aa220310c1326b80056be8d9b747aae26414f99d14bd795c0ec52ef7d0473eef9d61bb657b8cd3d8186c8a84c4ddbff025fe9 + languageName: node + linkType: hard + "gensync@npm:^1.0.0-beta.2": version: 1.0.0-beta.2 resolution: "gensync@npm:1.0.0-beta.2" @@ -16035,6 +16184,40 @@ __metadata: languageName: node linkType: hard +"google-auth-library@npm:^9.3.0": + version: 9.10.0 + resolution: "google-auth-library@npm:9.10.0" + dependencies: + base64-js: "npm:^1.3.0" + ecdsa-sig-formatter: "npm:^1.0.11" + gaxios: "npm:^6.1.1" + gcp-metadata: "npm:^6.1.0" + gtoken: "npm:^7.0.0" + jws: "npm:^4.0.0" + checksum: 10d5863493f9426107b0f6c4df244b1413a2cacff9589076f906924336d894fe8bc4153d4a3756cebec8a58784ff1a3900c621924f75f004908611fa46d3caa6 + languageName: node + linkType: hard + +"google-gax@npm:^4.0.3": + version: 4.3.3 + resolution: "google-gax@npm:4.3.3" + dependencies: + "@grpc/grpc-js": "npm:~1.10.3" + "@grpc/proto-loader": "npm:^0.7.0" + "@types/long": "npm:^4.0.0" + abort-controller: "npm:^3.0.0" + duplexify: "npm:^4.0.0" + google-auth-library: "npm:^9.3.0" + node-fetch: "npm:^2.6.1" + object-hash: "npm:^3.0.0" + proto3-json-serializer: "npm:^2.0.0" + protobufjs: "npm:7.2.6" + retry-request: "npm:^7.0.0" + uuid: "npm:^9.0.1" + checksum: 63335724e741737b90689e43f8ea5804d82b8f4eaa013ba07166bf6119ef7474d06682d580d72f6b708d6c55251204b1f05db615c3cd84abf2f8f295c50882ec + languageName: node + linkType: hard + "gopd@npm:^1.0.1": version: 1.0.1 resolution: "gopd@npm:1.0.1" @@ -16167,6 +16350,16 @@ __metadata: languageName: node linkType: hard +"gtoken@npm:^7.0.0": + version: 7.1.0 + resolution: "gtoken@npm:7.1.0" + dependencies: + gaxios: "npm:^6.0.0" + jws: "npm:^4.0.0" + checksum: 640392261e55c9242137a81a4af8feb053b57061762cedddcbb6a0d62c2314316161808ac2529eea67d06d69fdc56d82361af50f2d840a04a87ea29e124d7382 + languageName: node + linkType: hard + "h3@npm:^1.10.1, h3@npm:^1.8.2": version: 1.10.2 resolution: "h3@npm:1.10.2" @@ -16726,6 +16919,16 @@ __metadata: languageName: node linkType: hard +"https-proxy-agent@npm:^7.0.1": + version: 7.0.4 + resolution: "https-proxy-agent@npm:7.0.4" + dependencies: + agent-base: "npm:^7.0.2" + debug: "npm:4" + checksum: 405fe582bba461bfe5c7e2f8d752b384036854488b828ae6df6a587c654299cbb2c50df38c4b6ab303502c3c5e029a793fbaac965d1e86ee0be03faceb554d63 + languageName: node + linkType: hard + "human-id@npm:^1.0.2": version: 1.0.2 resolution: "human-id@npm:1.0.2" @@ -18337,6 +18540,27 @@ __metadata: languageName: node linkType: hard +"jwa@npm:^2.0.0": + version: 2.0.0 + resolution: "jwa@npm:2.0.0" + dependencies: + buffer-equal-constant-time: "npm:1.0.1" + ecdsa-sig-formatter: "npm:1.0.11" + safe-buffer: "npm:^5.0.1" + checksum: ab983f6685d99d13ddfbffef9b1c66309a536362a8412d49ba6e687d834a1240ce39290f30ac7dbe241e0ab6c76fee7ff795776ce534e11d148158c9b7193498 + languageName: node + linkType: hard + +"jws@npm:^4.0.0": + version: 4.0.0 + resolution: "jws@npm:4.0.0" + dependencies: + jwa: "npm:^2.0.0" + safe-buffer: "npm:^5.0.1" + checksum: 1d15f4cdea376c6bd6a81002bd2cb0bf3d51d83da8f0727947b5ba3e10cf366721b8c0d099bf8c1eb99eb036e2c55e5fd5efd378ccff75a2b4e0bd10002348b9 + languageName: node + linkType: hard + "keccak@npm:3.0.1": version: 3.0.1 resolution: "keccak@npm:3.0.1" @@ -18919,6 +19143,13 @@ __metadata: languageName: node linkType: hard +"long@npm:^5.0.0": + version: 5.2.3 + resolution: "long@npm:5.2.3" + checksum: 9167ec6947a825b827c30da169a7384eec6c0c9ec2f0b9c74da2e93d81159bbe39fb09c3f13dae9721d4b807ccfa09797a7dd1012f5d478e3e33ca3c78b608e6 + languageName: node + linkType: hard + "loose-envify@npm:^1.0.0, loose-envify@npm:^1.1.0": version: 1.4.0 resolution: "loose-envify@npm:1.4.0" @@ -20114,7 +20345,7 @@ __metadata: languageName: node linkType: hard -"node-fetch@npm:^2.6.0, node-fetch@npm:^2.6.1, node-fetch@npm:^2.6.12": +"node-fetch@npm:^2.6.0, node-fetch@npm:^2.6.1, node-fetch@npm:^2.6.12, node-fetch@npm:^2.6.9": version: 2.7.0 resolution: "node-fetch@npm:2.7.0" dependencies: @@ -20423,6 +20654,13 @@ __metadata: languageName: node linkType: hard +"object-hash@npm:^3.0.0": + version: 3.0.0 + resolution: "object-hash@npm:3.0.0" + checksum: f498d456a20512ba7be500cef4cf7b3c183cc72c65372a549c9a0e6dd78ce26f375e9b1315c07592d3fde8f10d5019986eba35970570d477ed9a2a702514432a + languageName: node + linkType: hard + "object-inspect@npm:^1.12.0, object-inspect@npm:^1.12.2, object-inspect@npm:^1.9.0": version: 1.12.2 resolution: "object-inspect@npm:1.12.2" @@ -21345,6 +21583,35 @@ __metadata: languageName: node linkType: hard +"proto3-json-serializer@npm:^2.0.0": + version: 2.0.1 + resolution: "proto3-json-serializer@npm:2.0.1" + dependencies: + protobufjs: "npm:^7.2.5" + checksum: dc4319c90e2412b9647f13dd1df2a6338ee3a07e2fd693c5ce4d1728c3730d913ebdb6d656f400ae4214a70bf0791ca0bc04d53b2cbdd75394bf0b175898443b + languageName: node + linkType: hard + +"protobufjs@npm:7.2.6": + version: 7.2.6 + resolution: "protobufjs@npm:7.2.6" + dependencies: + "@protobufjs/aspromise": "npm:^1.1.2" + "@protobufjs/base64": "npm:^1.1.2" + "@protobufjs/codegen": "npm:^2.0.4" + "@protobufjs/eventemitter": "npm:^1.1.0" + "@protobufjs/fetch": "npm:^1.1.0" + "@protobufjs/float": "npm:^1.0.2" + "@protobufjs/inquire": "npm:^1.1.0" + "@protobufjs/path": "npm:^1.1.2" + "@protobufjs/pool": "npm:^1.1.0" + "@protobufjs/utf8": "npm:^1.1.0" + "@types/node": "npm:>=13.7.0" + long: "npm:^5.0.0" + checksum: 81ab853d28c71998d056d6b34f83c4bc5be40cb0b416585f99ed618aed833d64b2cf89359bad7474d345302f2b5e236c4519165f8483d7ece7fd5b0d9ac13f8b + languageName: node + linkType: hard + "protobufjs@npm:^6.8.8, protobufjs@npm:~6.11.2, protobufjs@npm:~6.11.3": version: 6.11.4 resolution: "protobufjs@npm:6.11.4" @@ -21369,6 +21636,26 @@ __metadata: languageName: node linkType: hard +"protobufjs@npm:^7.2.5": + version: 7.3.0 + resolution: "protobufjs@npm:7.3.0" + dependencies: + "@protobufjs/aspromise": "npm:^1.1.2" + "@protobufjs/base64": "npm:^1.1.2" + "@protobufjs/codegen": "npm:^2.0.4" + "@protobufjs/eventemitter": "npm:^1.1.0" + "@protobufjs/fetch": "npm:^1.1.0" + "@protobufjs/float": "npm:^1.0.2" + "@protobufjs/inquire": "npm:^1.1.0" + "@protobufjs/path": "npm:^1.1.2" + "@protobufjs/pool": "npm:^1.1.0" + "@protobufjs/utf8": "npm:^1.1.0" + "@types/node": "npm:>=13.7.0" + long: "npm:^5.0.0" + checksum: aff4aa2a3a2f011accb51e23fcae122acbee35cb761abe51f799675a61ab39ad9a506911f307e0fdb9a1703bed1f522cfbdaafaeefd2b3aaca2ddc18f03029d9 + languageName: node + linkType: hard + "proxy-addr@npm:~2.0.7": version: 2.0.7 resolution: "proxy-addr@npm:2.0.7" @@ -22254,6 +22541,17 @@ __metadata: languageName: node linkType: hard +"retry-request@npm:^7.0.0": + version: 7.0.2 + resolution: "retry-request@npm:7.0.2" + dependencies: + "@types/request": "npm:^2.48.8" + extend: "npm:^3.0.2" + teeny-request: "npm:^9.0.0" + checksum: 8f4c927d41dd575fc460aad7b762fb0a33542097201c3c1a31529ad17fa8af3ac0d2a45bf4a2024d079913e9c2dd431566070fe33321c667ac87ebb400de5917 + languageName: node + linkType: hard + "retry@npm:0.13.1": version: 0.13.1 resolution: "retry@npm:0.13.1" @@ -23391,7 +23689,16 @@ __metadata: languageName: node linkType: hard -"stream-shift@npm:^1.0.0": +"stream-events@npm:^1.0.5": + version: 1.0.5 + resolution: "stream-events@npm:1.0.5" + dependencies: + stubs: "npm:^3.0.0" + checksum: 969ce82e34bfbef5734629cc06f9d7f3705a9ceb8fcd6a526332f9159f1f8bbfdb1a453f3ced0b728083454f7706adbbe8428bceb788a0287ca48ba2642dc3fc + languageName: node + linkType: hard + +"stream-shift@npm:^1.0.0, stream-shift@npm:^1.0.2": version: 1.0.3 resolution: "stream-shift@npm:1.0.3" checksum: a24c0a3f66a8f9024bd1d579a533a53be283b4475d4e6b4b3211b964031447bdf6532dd1f3c2b0ad66752554391b7c62bd7ca4559193381f766534e723d50242 @@ -23691,6 +23998,13 @@ __metadata: languageName: node linkType: hard +"stubs@npm:^3.0.0": + version: 3.0.0 + resolution: "stubs@npm:3.0.0" + checksum: dec7b82186e3743317616235c59bfb53284acc312cb9f4c3e97e2205c67a5c158b0ca89db5927e52351582e90a2672822eeaec9db396e23e56893d2a8676e024 + languageName: node + linkType: hard + "styled-jsx@npm:5.1.1": version: 5.1.1 resolution: "styled-jsx@npm:5.1.1" @@ -23944,6 +24258,19 @@ __metadata: languageName: node linkType: hard +"teeny-request@npm:^9.0.0": + version: 9.0.0 + resolution: "teeny-request@npm:9.0.0" + dependencies: + http-proxy-agent: "npm:^5.0.0" + https-proxy-agent: "npm:^5.0.0" + node-fetch: "npm:^2.6.9" + stream-events: "npm:^1.0.5" + uuid: "npm:^9.0.0" + checksum: 44daabb6c2e239c3daed0218ebdafb50c7141c16d7257a6cfef786dbff56d7853c2c02c97934f7ed57818ce5861ac16c5f52f3a16fa292bd4caf53483d386443 + languageName: node + linkType: hard + "term-size@npm:^2.1.0": version: 2.2.1 resolution: "term-size@npm:2.2.1"