feat: nov 8 enrollments (#4841)

### Description

- enroll new validators for alephzeroevmmainnet, chilizmainnet,
flowmainnet, immutablezkevmmainnet, metal, polynomialfi, rarichain,
rootstockmainnet, superpositionmainnet, flame, prom
- update validators for inevm
- update ownership for recent two deploy batches
	- ICAs re-enabled
	- zeronetwork safe configured

### Drive-by changes

- igp updates
- fix some infra helper scripts
	- skip all chains to skip for ICA
	- only skip lumia for validator announce check

### Related issues

<!--
- Fixes #[issue number here]
-->

### Backward compatibility

<!--
Are these changes backward compatible? Are there any infrastructure
implications, e.g. changes that would prohibit deploying older commits
using this infra tooling?

Yes/No
-->

### Testing

manual + infra helper scripts
trevor/fix-inaccurate-svm-comment
Paul Balaji 2 weeks ago committed by GitHub
parent 92b5fe777e
commit 1159e0f4ba
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 5
      .changeset/mighty-panthers-play.md
  2. 38
      typescript/infra/config/environments/mainnet3/gasPrices.json
  3. 39
      typescript/infra/config/environments/mainnet3/owners.ts
  4. 166
      typescript/infra/config/environments/mainnet3/tokenPrices.json
  5. 1
      typescript/infra/scripts/announce-validators.ts
  6. 14
      typescript/infra/scripts/check/check-owner-ica.ts
  7. 3
      typescript/infra/scripts/check/check-validator-announce.ts
  8. 5
      typescript/infra/scripts/get-owner-ica.ts
  9. 4
      typescript/infra/src/config/chain.ts
  10. 90
      typescript/sdk/src/consts/multisigIsm.ts

@ -0,0 +1,5 @@
---
'@hyperlane-xyz/sdk': minor
---
Enroll new validators for alephzeroevmmainnet, chilizmainnet, flowmainnet, immutablezkevmmainnet, metal, polynomialfi, rarichain, rootstockmainnet, superpositionmainnet, flame, prom, inevm.

@ -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
}
}

@ -55,6 +55,7 @@ export const safes: ChainMap<Address> = {
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';

@ -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"
}

@ -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;
}

@ -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,

@ -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<string[]> = {};

@ -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<string, { ICA: Address; Deployed?: string }> = {};
const settledResults = await Promise.allSettled(

@ -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

@ -9,8 +9,12 @@ export const defaultMultisigConfigs: ChainMap<MultisigConfig> = {
},
alephzeroevmmainnet: {
threshold: 1,
validators: ['0x33f20e6e775747d60301c6ea1c50e51f0389740c'],
threshold: 2,
validators: [
'0x33f20e6e775747d60301c6ea1c50e51f0389740c',
'0xcf0211fafbb91fd9d06d7e306b30032dc3a1934f', // merkly
'0x4f977a59fdc2d9e39f6d780a84d5b4add1495a36', // mitosis
],
},
alephzeroevmtestnet: {
@ -213,8 +217,12 @@ export const defaultMultisigConfigs: ChainMap<MultisigConfig> = {
},
chilizmainnet: {
threshold: 1,
validators: ['0x7403e5d58b48b0f5f715d9c78fbc581f01a625cb'],
threshold: 2,
validators: [
'0x7403e5d58b48b0f5f715d9c78fbc581f01a625cb',
'0xcf0211fafbb91fd9d06d7e306b30032dc3a1934f', // merkly
'0x4f977a59fdc2d9e39f6d780a84d5b4add1495a36', // mitosis
],
},
citreatestnet: {
@ -324,8 +332,12 @@ export const defaultMultisigConfigs: ChainMap<MultisigConfig> = {
},
flame: {
threshold: 1,
validators: ['0x1fa928ce884fa16357d4b8866e096392d4d81f43'],
threshold: 2,
validators: [
'0x1fa928ce884fa16357d4b8866e096392d4d81f43',
'0xa6c998f0db2b56d7a63faf30a9b677c8b9b6faab', // p-ops
'0x0d4c1394a255568ec0ecd11795b28d1bda183ca4', // tessellated
],
},
flare: {
@ -338,8 +350,12 @@ export const defaultMultisigConfigs: ChainMap<MultisigConfig> = {
},
flowmainnet: {
threshold: 1,
validators: ['0xe132235c958ca1f3f24d772e5970dd58da4c0f6e'],
threshold: 2,
validators: [
'0xe132235c958ca1f3f24d772e5970dd58da4c0f6e',
'0xcf0211fafbb91fd9d06d7e306b30032dc3a1934f', // merkly
'0x4f977a59fdc2d9e39f6d780a84d5b4add1495a36', // mitosis
],
},
formtestnet: {
@ -413,15 +429,19 @@ export const defaultMultisigConfigs: ChainMap<MultisigConfig> = {
},
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<MultisigConfig> = {
},
metal: {
threshold: 1,
validators: ['0xd9f7f1a05826197a93df51e86cefb41dfbfb896a'],
threshold: 2,
validators: [
'0xd9f7f1a05826197a93df51e86cefb41dfbfb896a',
'0xcf0211fafbb91fd9d06d7e306b30032dc3a1934f', // merkly
'0x4f977a59fdc2d9e39f6d780a84d5b4add1495a36', // mitosis
],
},
metis: {
@ -679,13 +703,21 @@ export const defaultMultisigConfigs: ChainMap<MultisigConfig> = {
},
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<MultisigConfig> = {
},
rarichain: {
threshold: 1,
validators: ['0xeac012df7530720dd7d6f9b727e4fe39807d1516'],
threshold: 2,
validators: [
'0xeac012df7530720dd7d6f9b727e4fe39807d1516',
'0xcf0211fafbb91fd9d06d7e306b30032dc3a1934f', // merkly
'0x4f977a59fdc2d9e39f6d780a84d5b4add1495a36', // mitosis
],
},
real: {
@ -722,8 +758,12 @@ export const defaultMultisigConfigs: ChainMap<MultisigConfig> = {
},
rootstockmainnet: {
threshold: 1,
validators: ['0x8675eb603d62ab64e3efe90df914e555966e04ac'],
threshold: 2,
validators: [
'0x8675eb603d62ab64e3efe90df914e555966e04ac',
'0xcf0211fafbb91fd9d06d7e306b30032dc3a1934f', // merkly
'0x4f977a59fdc2d9e39f6d780a84d5b4add1495a36', // mitosis
],
},
sanko: {
@ -848,8 +888,12 @@ export const defaultMultisigConfigs: ChainMap<MultisigConfig> = {
},
superpositionmainnet: {
threshold: 1,
validators: ['0x3f489acdd341c6b4dd86293fa2cc5ecc8ccf4f84'],
threshold: 2,
validators: [
'0x3f489acdd341c6b4dd86293fa2cc5ecc8ccf4f84',
'0xcf0211fafbb91fd9d06d7e306b30032dc3a1934f', // merkly
'0x4f977a59fdc2d9e39f6d780a84d5b4add1495a36', // mitosis
],
},
superpositiontestnet: {

Loading…
Cancel
Save