diff --git a/.changeset/mighty-panthers-play.md b/.changeset/mighty-panthers-play.md new file mode 100644 index 000000000..ef054787b --- /dev/null +++ b/.changeset/mighty-panthers-play.md @@ -0,0 +1,5 @@ +--- +'@hyperlane-xyz/sdk': minor +--- + +Enroll new validators for alephzeroevmmainnet, chilizmainnet, flowmainnet, immutablezkevmmainnet, metal, polynomialfi, rarichain, rootstockmainnet, superpositionmainnet, flame, prom, inevm. diff --git a/typescript/infra/config/environments/mainnet3/gasPrices.json b/typescript/infra/config/environments/mainnet3/gasPrices.json index 0973b4625..e0eb03093 100644 --- a/typescript/infra/config/environments/mainnet3/gasPrices.json +++ b/typescript/infra/config/environments/mainnet3/gasPrices.json @@ -24,7 +24,7 @@ "decimals": 9 }, "astarzkevm": { - "amount": "0.105", + "amount": "0.078", "decimals": 9 }, "flame": { @@ -36,11 +36,11 @@ "decimals": 9 }, "b3": { - "amount": "0.001000252", + "amount": "0.001000254", "decimals": 9 }, "base": { - "amount": "0.010198987", + "amount": "0.004893247", "decimals": 9 }, "bitlayer": { @@ -48,7 +48,7 @@ "decimals": 9 }, "blast": { - "amount": "0.005065432", + "amount": "0.005018176", "decimals": 9 }, "bob": { @@ -96,7 +96,7 @@ "decimals": 9 }, "ethereum": { - "amount": "13.154482028", + "amount": "15.0", "decimals": 9 }, "everclear": { @@ -104,7 +104,7 @@ "decimals": 9 }, "fantom": { - "amount": "6.313597562", + "amount": "6.971582929", "decimals": 9 }, "flare": { @@ -112,7 +112,7 @@ "decimals": 9 }, "flowmainnet": { - "amount": "0.0000001", + "amount": "0.1", "decimals": 9 }, "fraxtal": { @@ -124,7 +124,7 @@ "decimals": 9 }, "gnosis": { - "amount": "1.500000008", + "amount": "1.500000007", "decimals": 9 }, "gravity": { @@ -136,7 +136,7 @@ "decimals": 9 }, "immutablezkevmmainnet": { - "amount": "10.000000051", + "amount": "10.000000056", "decimals": 9 }, "inevm": { @@ -156,7 +156,7 @@ "decimals": 9 }, "linea": { - "amount": "0.327116635", + "amount": "0.160485013", "decimals": 9 }, "lisk": { @@ -164,7 +164,7 @@ "decimals": 9 }, "lukso": { - "amount": "0.323509518", + "amount": "0.475094399", "decimals": 9 }, "lumia": { @@ -172,7 +172,7 @@ "decimals": 9 }, "mantapacific": { - "amount": "0.003000426", + "amount": "0.003001158", "decimals": 9 }, "mantle": { @@ -208,7 +208,7 @@ "decimals": 9 }, "morph": { - "amount": "0.201", + "amount": "0.002", "decimals": 9 }, "neutron": { @@ -220,7 +220,7 @@ "decimals": 9 }, "optimism": { - "amount": "0.001000638", + "amount": "0.001010111", "decimals": 9 }, "orderly": { @@ -232,11 +232,11 @@ "decimals": 1 }, "polygon": { - "amount": "36.937366533", + "amount": "47.07124319", "decimals": 9 }, "polygonzkevm": { - "amount": "0.217", + "amount": "0.146", "decimals": 9 }, "polynomialfi": { @@ -312,7 +312,7 @@ "decimals": 9 }, "worldchain": { - "amount": "0.001000279", + "amount": "0.00100025", "decimals": 9 }, "xai": { @@ -320,7 +320,7 @@ "decimals": 9 }, "xlayer": { - "amount": "10.982428125", + "amount": "7.04", "decimals": 9 }, "zeronetwork": { @@ -340,7 +340,7 @@ "decimals": 9 }, "zoramainnet": { - "amount": "0.001000252", + "amount": "0.001000269", "decimals": 9 } } diff --git a/typescript/infra/config/environments/mainnet3/owners.ts b/typescript/infra/config/environments/mainnet3/owners.ts index 4cd756763..f97eafe17 100644 --- a/typescript/infra/config/environments/mainnet3/owners.ts +++ b/typescript/infra/config/environments/mainnet3/owners.ts @@ -55,6 +55,7 @@ export const safes: ChainMap
= { fusemainnet: '0x29a526227CB864C90Cf078d03872da913B473139', endurance: '0xaCD1865B262C89Fb0b50dcc8fB095330ae8F35b5', zircuit: '0x9e2fe7723b018d02cDE4f5cC1A9bC9C65b922Fc8', + zeronetwork: '0xCB21F61A3c8139F18e635d45aD1e62A4A61d2c3D', }; export const icaOwnerChain = 'ethereum'; @@ -130,18 +131,32 @@ export const icas: Partial< // ---------------------------------------------------------- // lumia: '0x418E10Ac9e0b84022d0636228d05bc74172e0e41', - // // Oct 30, 2024 batch - // // ---------------------------------------------------------- - // apechain: '0xe68b0aB6BB8c11D855556A5d3539524f6DB3bdc6', - // arbitrumnova: '0x8965d9f19336EB4e910d5f1B9070205FdBee6837', - // b3: '0x8965d9f19336EB4e910d5f1B9070205FdBee6837', - // fantom: '0x8965d9f19336EB4e910d5f1B9070205FdBee6837', - // gravity: '0x3104ADE26e21AEbdB325321433541DfE8B5dCF23', - // harmony: '0x8965d9f19336EB4e910d5f1B9070205FdBee6837', - // kaia: '0x8965d9f19336EB4e910d5f1B9070205FdBee6837', - // morph: '0x8965d9f19336EB4e910d5f1B9070205FdBee6837', - // orderly: '0x8965d9f19336EB4e910d5f1B9070205FdBee6837', - // snaxchain: '0x8965d9f19336EB4e910d5f1B9070205FdBee6837', + // Oct 30, 2024 batch + // ---------------------------------------------------------- + apechain: '0xe68b0aB6BB8c11D855556A5d3539524f6DB3bdc6', + arbitrumnova: '0x8965d9f19336EB4e910d5f1B9070205FdBee6837', + b3: '0x8965d9f19336EB4e910d5f1B9070205FdBee6837', + fantom: '0x8965d9f19336EB4e910d5f1B9070205FdBee6837', + gravity: '0x3104ADE26e21AEbdB325321433541DfE8B5dCF23', + harmony: '0x8965d9f19336EB4e910d5f1B9070205FdBee6837', + kaia: '0x8965d9f19336EB4e910d5f1B9070205FdBee6837', + morph: '0x8965d9f19336EB4e910d5f1B9070205FdBee6837', + orderly: '0x8965d9f19336EB4e910d5f1B9070205FdBee6837', + snaxchain: '0x8965d9f19336EB4e910d5f1B9070205FdBee6837', + + // Nov 8, 2024 batch + // ---------------------------------------------------------- + alephzeroevmmainnet: '0xDE91AC081E12107a033728A287b06B1Fc640A637', + chilizmainnet: '0x54AF0FCDCD58428f8dF3f825267DfB58f2C710eb', + flowmainnet: '0x65528D447C93CC1A1A7186CB4449d9fE0d5C1928', + immutablezkevmmainnet: '0x54AF0FCDCD58428f8dF3f825267DfB58f2C710eb', + metal: '0xf1d25462e1f82BbF25b3ef7A4C94F738a30a968B', + polynomialfi: '0x6ACa36E710dC0C80400090EA0bC55dA913a3D20D', + rarichain: '0xD0A4Ad2Ca0251BBc6541f8c2a594F1A82b67F114', + rootstockmainnet: '0x0C15f7479E0B46868693568a3f1C747Fdec9f17d', + superpositionmainnet: '0x5F17Dc2e1fd1371dc6e694c51f22aBAF8E27667B', + flame: '0x4F3d85360840497Cd1bc34Ca55f27629eee2AA2e', + prom: '0x1cDd3C143387cD1FaE23e2B66bc3F409D073aC3D', } as const; export const DEPLOYER = '0xa7ECcdb9Be08178f896c26b7BbD8C3D4E844d9Ba'; diff --git a/typescript/infra/config/environments/mainnet3/tokenPrices.json b/typescript/infra/config/environments/mainnet3/tokenPrices.json index 1051ca61c..106c5831f 100644 --- a/typescript/infra/config/environments/mainnet3/tokenPrices.json +++ b/typescript/infra/config/environments/mainnet3/tokenPrices.json @@ -1,88 +1,88 @@ { - "ancient8": "2709.5", - "alephzeroevmmainnet": "0.338269", - "apechain": "1.072", - "arbitrum": "2709.5", - "arbitrumnova": "2709.5", - "astar": "0.056141", - "astarzkevm": "2709.5", + "ancient8": "2901.97", + "alephzeroevmmainnet": "0.352558", + "apechain": "1.021", + "arbitrum": "2901.97", + "arbitrumnova": "2901.97", + "astar": "0.05516", + "astarzkevm": "2901.97", "flame": "5.14", - "avalanche": "27.18", - "b3": "2709.5", - "base": "2709.5", - "bitlayer": "75285", - "blast": "2709.5", - "bob": "2709.5", - "bsc": "595.27", - "celo": "0.639237", - "cheesechain": "0.00284839", - "chilizmainnet": "0.061694", - "coredao": "0.910171", - "cyber": "2709.5", - "degenchain": "0.00905774", - "dogechain": "0.195154", - "eclipsemainnet": "2709.5", - "endurance": "2.12", - "ethereum": "2709.5", - "everclear": "2709.5", - "fantom": "0.694411", - "flare": "0.01312677", - "flowmainnet": "0.541194", - "fraxtal": "2700.36", - "fusemainnet": "0.02836395", - "gnosis": "0.999944", - "gravity": "0.0295987", - "harmony": "0.01263325", - "immutablezkevmmainnet": "1.23", - "inevm": "21.24", - "injective": "21.24", - "kaia": "0.123184", - "kroma": "2709.5", - "linea": "2709.5", - "lisk": "2709.5", - "lukso": "1.47", - "lumia": "1.09", - "mantapacific": "2709.5", - "mantle": "0.598548", - "merlin": "75305", - "metal": "2709.5", - "metis": "44.4", - "mint": "2709.5", - "mode": "2709.5", - "molten": "0.23804", - "moonbeam": "0.166004", - "morph": "2709.5", - "neutron": "0.380957", - "oortmainnet": "0.097843", - "optimism": "2709.5", - "orderly": "2709.5", - "osmosis": "0.438116", - "polygon": "0.332225", - "polygonzkevm": "2709.5", - "polynomialfi": "2709.5", - "prom": "5.37", - "proofofplay": "2709.5", - "rarichain": "2709.5", + "avalanche": "27.43", + "b3": "2901.97", + "base": "2901.97", + "bitlayer": "75858", + "blast": "2901.97", + "bob": "2901.97", + "bsc": "596.14", + "celo": "0.63787", + "cheesechain": "0.00211859", + "chilizmainnet": "0.061174", + "coredao": "0.886582", + "cyber": "2901.97", + "degenchain": "0.00776785", + "dogechain": "0.197113", + "eclipsemainnet": "2901.97", + "endurance": "2.02", + "ethereum": "2901.97", + "everclear": "2901.97", + "fantom": "0.708456", + "flare": "0.01303515", + "flowmainnet": "0.5289", + "fraxtal": "2892.2", + "fusemainnet": "0.02930522", + "gnosis": "1.001", + "gravity": "0.02864739", + "harmony": "0.01246587", + "immutablezkevmmainnet": "1.18", + "inevm": "21.99", + "injective": "21.99", + "kaia": "0.121813", + "kroma": "2901.97", + "linea": "2901.97", + "lisk": "2901.97", + "lukso": "1.48", + "lumia": "1.059", + "mantapacific": "2901.97", + "mantle": "0.651888", + "merlin": "75853", + "metal": "2901.97", + "metis": "44.6", + "mint": "2901.97", + "mode": "2901.97", + "molten": "0.25598", + "moonbeam": "0.169922", + "morph": "2901.97", + "neutron": "0.374494", + "oortmainnet": "0.092246", + "optimism": "2901.97", + "orderly": "2901.97", + "osmosis": "0.43997", + "polygon": "0.343626", + "polygonzkevm": "2901.97", + "polynomialfi": "2901.97", + "prom": "5.38", + "proofofplay": "2901.97", + "rarichain": "2901.97", "real": "1", - "redstone": "2709.5", - "rootstockmainnet": "75239", - "sanko": "47.08", - "scroll": "2709.5", - "sei": "0.40953", - "shibarium": "0.393606", - "snaxchain": "2709.5", - "solanamainnet": "186.76", - "stride": "0.625491", - "superpositionmainnet": "2709.5", - "taiko": "2709.5", + "redstone": "2901.97", + "rootstockmainnet": "75541", + "sanko": "53.25", + "scroll": "2901.97", + "sei": "0.404683", + "shibarium": "0.407901", + "snaxchain": "2901.97", + "solanamainnet": "199.51", + "stride": "0.583853", + "superpositionmainnet": "2901.97", + "taiko": "2901.97", "tangle": "1", - "viction": "0.349089", - "worldchain": "2709.5", - "xai": "0.213165", - "xlayer": "39.31", - "zeronetwork": "2709.5", - "zetachain": "0.691041", - "zircuit": "2709.5", - "zksync": "2709.5", - "zoramainnet": "2709.5" + "viction": "0.340844", + "worldchain": "2901.97", + "xai": "0.2107", + "xlayer": "40.21", + "zeronetwork": "2901.97", + "zetachain": "0.680925", + "zircuit": "2901.97", + "zksync": "2901.97", + "zoramainnet": "2901.97" } diff --git a/typescript/infra/scripts/announce-validators.ts b/typescript/infra/scripts/announce-validators.ts index b09e58b1f..9bc3e664f 100644 --- a/typescript/infra/scripts/announce-validators.ts +++ b/typescript/infra/scripts/announce-validators.ts @@ -73,6 +73,7 @@ async function main() { await Promise.all( Object.entries(agentConfig.validators.chains) .filter(([validatorChain, _]) => { + // Ensure we skip lumia, as we don't have the addresses in registry. if (validatorChain === 'lumia') { return false; } diff --git a/typescript/infra/scripts/check/check-owner-ica.ts b/typescript/infra/scripts/check/check-owner-ica.ts index bd52ad922..308093bf5 100644 --- a/typescript/infra/scripts/check/check-owner-ica.ts +++ b/typescript/infra/scripts/check/check-owner-ica.ts @@ -1,14 +1,8 @@ -import { ethers } from 'ethers'; - import { AccountConfig, InterchainAccount } from '@hyperlane-xyz/sdk'; -import { - Address, - eqAddress, - isZeroish, - isZeroishAddress, -} from '@hyperlane-xyz/utils'; +import { Address, eqAddress, isZeroishAddress } from '@hyperlane-xyz/utils'; import { icas } from '../../config/environments/mainnet3/owners.js'; +import { chainsToSkip } from '../../src/config/chain.js'; import { isEthereumProtocolChain } from '../../src/utils/utils.js'; import { getArgs as getEnvArgs, withChains } from '../agent-utils.js'; import { getEnvironmentConfig, getHyperlaneCore } from '../core-utils.js'; @@ -39,7 +33,9 @@ async function main() { const checkOwnerIcaChains = ( chains?.length ? chains : Object.keys(icas) - ).filter(isEthereumProtocolChain); + ).filter( + (chain) => isEthereumProtocolChain(chain) && !chainsToSkip.includes(chain), + ); const ownerConfig: AccountConfig = { origin: ownerChain, diff --git a/typescript/infra/scripts/check/check-validator-announce.ts b/typescript/infra/scripts/check/check-validator-announce.ts index fec2f2e07..0f484329f 100644 --- a/typescript/infra/scripts/check/check-validator-announce.ts +++ b/typescript/infra/scripts/check/check-validator-announce.ts @@ -23,9 +23,10 @@ async function main() { const config = getEnvironmentConfig(environment); const { core } = await getHyperlaneCore(environment); + // Ensure we skip lumia, as we don't have the addresses in registry. const targetNetworks = ( chains && chains.length > 0 ? chains : config.supportedChainNames - ).filter(isEthereumProtocolChain); + ).filter((chain) => isEthereumProtocolChain(chain) && chain !== 'lumia'); const chainsWithUnannouncedValidators: ChainMap = {}; diff --git a/typescript/infra/scripts/get-owner-ica.ts b/typescript/infra/scripts/get-owner-ica.ts index bfb348cb3..16c6db99e 100644 --- a/typescript/infra/scripts/get-owner-ica.ts +++ b/typescript/infra/scripts/get-owner-ica.ts @@ -1,6 +1,7 @@ import { AccountConfig, InterchainAccount } from '@hyperlane-xyz/sdk'; import { Address, eqAddress, isZeroishAddress } from '@hyperlane-xyz/utils'; +import { chainsToSkip } from '../src/config/chain.js'; import { isEthereumProtocolChain } from '../src/utils/utils.js'; import { getArgs as getEnvArgs, withChains } from './agent-utils.js'; @@ -62,7 +63,9 @@ async function main() { const getOwnerIcaChains = ( chains?.length ? chains : config.supportedChainNames - ).filter(isEthereumProtocolChain); + ).filter( + (chain) => isEthereumProtocolChain(chain) && !chainsToSkip.includes(chain), + ); const results: Record = {}; const settledResults = await Promise.allSettled( diff --git a/typescript/infra/src/config/chain.ts b/typescript/infra/src/config/chain.ts index 49941e77d..a7bb7c9f9 100644 --- a/typescript/infra/src/config/chain.ts +++ b/typescript/infra/src/config/chain.ts @@ -16,7 +16,9 @@ import { inCIMode } from '../utils/utils.js'; import { DeployEnvironment } from './environment.js'; -// Temporarily skip some chains +// A list of chains to skip during deploy, check-deploy and ICA operations. +// Used by scripts like check-owner-ica.ts to exclude chains that are temporarily +// unsupported (e.g. zksync, zeronetwork) or have known issues (e.g. lumia). export const chainsToSkip: ChainName[] = [ // TODO: remove once zksync PR is merged into main // mainnets diff --git a/typescript/sdk/src/consts/multisigIsm.ts b/typescript/sdk/src/consts/multisigIsm.ts index 55a52e1d7..88f42c782 100644 --- a/typescript/sdk/src/consts/multisigIsm.ts +++ b/typescript/sdk/src/consts/multisigIsm.ts @@ -9,8 +9,12 @@ export const defaultMultisigConfigs: ChainMap = { }, alephzeroevmmainnet: { - threshold: 1, - validators: ['0x33f20e6e775747d60301c6ea1c50e51f0389740c'], + threshold: 2, + validators: [ + '0x33f20e6e775747d60301c6ea1c50e51f0389740c', + '0xcf0211fafbb91fd9d06d7e306b30032dc3a1934f', // merkly + '0x4f977a59fdc2d9e39f6d780a84d5b4add1495a36', // mitosis + ], }, alephzeroevmtestnet: { @@ -213,8 +217,12 @@ export const defaultMultisigConfigs: ChainMap = { }, chilizmainnet: { - threshold: 1, - validators: ['0x7403e5d58b48b0f5f715d9c78fbc581f01a625cb'], + threshold: 2, + validators: [ + '0x7403e5d58b48b0f5f715d9c78fbc581f01a625cb', + '0xcf0211fafbb91fd9d06d7e306b30032dc3a1934f', // merkly + '0x4f977a59fdc2d9e39f6d780a84d5b4add1495a36', // mitosis + ], }, citreatestnet: { @@ -324,8 +332,12 @@ export const defaultMultisigConfigs: ChainMap = { }, flame: { - threshold: 1, - validators: ['0x1fa928ce884fa16357d4b8866e096392d4d81f43'], + threshold: 2, + validators: [ + '0x1fa928ce884fa16357d4b8866e096392d4d81f43', + '0xa6c998f0db2b56d7a63faf30a9b677c8b9b6faab', // p-ops + '0x0d4c1394a255568ec0ecd11795b28d1bda183ca4', // tessellated + ], }, flare: { @@ -338,8 +350,12 @@ export const defaultMultisigConfigs: ChainMap = { }, flowmainnet: { - threshold: 1, - validators: ['0xe132235c958ca1f3f24d772e5970dd58da4c0f6e'], + threshold: 2, + validators: [ + '0xe132235c958ca1f3f24d772e5970dd58da4c0f6e', + '0xcf0211fafbb91fd9d06d7e306b30032dc3a1934f', // merkly + '0x4f977a59fdc2d9e39f6d780a84d5b4add1495a36', // mitosis + ], }, formtestnet: { @@ -413,15 +429,19 @@ export const defaultMultisigConfigs: ChainMap = { }, immutablezkevmmainnet: { - threshold: 1, - validators: ['0xbdda85b19a5efbe09e52a32db1a072f043dd66da'], + threshold: 2, + validators: [ + '0xbdda85b19a5efbe09e52a32db1a072f043dd66da', + '0xcf0211fafbb91fd9d06d7e306b30032dc3a1934f', // merkly + '0x4f977a59fdc2d9e39f6d780a84d5b4add1495a36', // mitosis + ], }, inevm: { threshold: 2, validators: [ '0xf9e35ee88e4448a3673b4676a4e153e3584a08eb', - '0x6B1d09A97b813D53e9D4b7523DA36604C0B52242', // caldera + '0x0d4e7e64f3a032db30b75fe7acae4d2c877883bc', // decentrio '0x9ab11f38a609940153850df611c9a2175dcffe0f', // imperator ], }, @@ -529,8 +549,12 @@ export const defaultMultisigConfigs: ChainMap = { }, metal: { - threshold: 1, - validators: ['0xd9f7f1a05826197a93df51e86cefb41dfbfb896a'], + threshold: 2, + validators: [ + '0xd9f7f1a05826197a93df51e86cefb41dfbfb896a', + '0xcf0211fafbb91fd9d06d7e306b30032dc3a1934f', // merkly + '0x4f977a59fdc2d9e39f6d780a84d5b4add1495a36', // mitosis + ], }, metis: { @@ -679,13 +703,21 @@ export const defaultMultisigConfigs: ChainMap = { }, polynomialfi: { - threshold: 1, - validators: ['0x23d348c2d365040e56f3fee07e6897122915f513'], + threshold: 2, + validators: [ + '0x23d348c2d365040e56f3fee07e6897122915f513', + '0xcf0211fafbb91fd9d06d7e306b30032dc3a1934f', // merkly + '0x4f977a59fdc2d9e39f6d780a84d5b4add1495a36', // mitosis + ], }, prom: { - threshold: 1, - validators: ['0xb0c4042b7c9a95345be8913f4cdbf4043b923d98'], + threshold: 2, + validators: [ + '0xb0c4042b7c9a95345be8913f4cdbf4043b923d98', + '0xcf0211fafbb91fd9d06d7e306b30032dc3a1934f', // merkly + '0x4f977a59fdc2d9e39f6d780a84d5b4add1495a36', // mitosis + ], }, proofofplay: { @@ -698,8 +730,12 @@ export const defaultMultisigConfigs: ChainMap = { }, rarichain: { - threshold: 1, - validators: ['0xeac012df7530720dd7d6f9b727e4fe39807d1516'], + threshold: 2, + validators: [ + '0xeac012df7530720dd7d6f9b727e4fe39807d1516', + '0xcf0211fafbb91fd9d06d7e306b30032dc3a1934f', // merkly + '0x4f977a59fdc2d9e39f6d780a84d5b4add1495a36', // mitosis + ], }, real: { @@ -722,8 +758,12 @@ export const defaultMultisigConfigs: ChainMap = { }, rootstockmainnet: { - threshold: 1, - validators: ['0x8675eb603d62ab64e3efe90df914e555966e04ac'], + threshold: 2, + validators: [ + '0x8675eb603d62ab64e3efe90df914e555966e04ac', + '0xcf0211fafbb91fd9d06d7e306b30032dc3a1934f', // merkly + '0x4f977a59fdc2d9e39f6d780a84d5b4add1495a36', // mitosis + ], }, sanko: { @@ -848,8 +888,12 @@ export const defaultMultisigConfigs: ChainMap = { }, superpositionmainnet: { - threshold: 1, - validators: ['0x3f489acdd341c6b4dd86293fa2cc5ecc8ccf4f84'], + threshold: 2, + validators: [ + '0x3f489acdd341c6b4dd86293fa2cc5ecc8ccf4f84', + '0xcf0211fafbb91fd9d06d7e306b30032dc3a1934f', // merkly + '0x4f977a59fdc2d9e39f6d780a84d5b4add1495a36', // mitosis + ], }, superpositiontestnet: {