From a8f0ccd14f5805792c1d0ca39057a3910fc12002 Mon Sep 17 00:00:00 2001 From: Paul Balaji <10051819+paulbalaji@users.noreply.github.com> Date: Mon, 16 Sep 2024 12:59:17 +0100 Subject: [PATCH] chore: general fixes from enrolling new validators and chains (#4483) feat: enroll new validators and chains on core mailboxes - update token/gas prices - update to latest registry, containing the new ISM addresses - required some tooling fixes to handle solana/eclipse addresses being present - fix tooling where required - actually filter for EVM chains in HyperlaneAppChecker drive-by: - fix github-proxy changeset - fix print balances script - fix agent config update script - fix getRouterConfig - fix setting manual submission if unable to check on safe --- .changeset/famous-ants-tan.md | 2 +- .registryrc | 2 +- rust/main/config/mainnet_config.json | 118 ++++++++--------- typescript/cli/package.json | 2 +- typescript/helloworld/package.json | 2 +- .../environments/mainnet3/gasPrices.json | 14 +- .../environments/mainnet3/tokenPrices.json | 122 +++++++++--------- typescript/infra/package.json | 2 +- .../scripts/agents/update-agent-config.ts | 82 +++++++----- typescript/infra/scripts/check-owner-ica.ts | 64 +++++++++ typescript/infra/scripts/print-balances.ts | 94 +++++++++----- .../infra/src/govern/HyperlaneAppGovernor.ts | 63 +++++---- typescript/sdk/src/core/HyperlaneCore.ts | 22 ++-- .../sdk/src/core/HyperlaneCoreChecker.ts | 8 +- .../sdk/src/deploy/HyperlaneAppChecker.ts | 31 +++-- typescript/widgets/package.json | 2 +- yarn.lock | 16 +-- 17 files changed, 389 insertions(+), 257 deletions(-) create mode 100644 typescript/infra/scripts/check-owner-ica.ts diff --git a/.changeset/famous-ants-tan.md b/.changeset/famous-ants-tan.md index 5bc059463..927bdc346 100644 --- a/.changeset/famous-ants-tan.md +++ b/.changeset/famous-ants-tan.md @@ -1,5 +1,5 @@ --- -'github-proxy': major +'@hyperlane-xyz/github-proxy': major --- Add github proxy to reduce github API load diff --git a/.registryrc b/.registryrc index a3ab34ee4..b913b7c65 100644 --- a/.registryrc +++ b/.registryrc @@ -1 +1 @@ -8e93ecb4fa207fc4822393a4c13627be3da89eaa +v4.1.0 diff --git a/rust/main/config/mainnet_config.json b/rust/main/config/mainnet_config.json index 60e0a6217..fa99ee61a 100644 --- a/rust/main/config/mainnet_config.json +++ b/rust/main/config/mainnet_config.json @@ -34,7 +34,7 @@ "interchainAccountIsm": "0xd766e7C7517f2d0D92754b2fe4aE7AdEf7bDEC3e", "interchainAccountRouter": "0x25C87e735021F72d8728438C2130b02E3141f2cb", "interchainGasPaymaster": "0x8F1E22d309baa69D398a03cc88E9b46037e988AA", - "interchainSecurityModule": "0x6C73cA7bF00FFd3617eF28E26B28EbC1e53D6075", + "interchainSecurityModule": "0x565C280Cdb56095Cf6BF23b5fF140180208CBa9e", "isTestnet": false, "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0x811808Dd29ba8B0FC6C0ec0b5537035E59745162", @@ -100,7 +100,7 @@ "interchainAccountIsm": "0x2A7574358Ec53522CE2452887661AB4c86F7d400", "interchainAccountRouter": "0x91874Dbed74925dFe6059B90385EEb90DdE0B2E6", "interchainGasPaymaster": "0x3b6044acd6767f017e99318AA6Ef93b7B06A5a22", - "interchainSecurityModule": "0xC270F9DF86bb320A31757a64d1d5429B4D7a516e", + "interchainSecurityModule": "0x3d0BE14dFbB1Eb736303260c1724B6ea270c8Dc4", "mailbox": "0x979Ca5202784112f4738403dBec5D0F3B9daabB9", "merkleTreeHook": "0x748040afB89B8FdBb992799808215419d36A0930", "name": "arbitrum", @@ -172,7 +172,7 @@ "interchainAccountIsm": "0x27a3233c05C1Df7c163123301D14bE9349E3Cb48", "interchainAccountRouter": "0xa82a0227e6d6db53AF4B264A852bfF91C6504a51", "interchainGasPaymaster": "0x95519ba800BBd0d34eeAE026fEc620AD978176C0", - "interchainSecurityModule": "0xCBcE96dAa697A2A51f488a47264D623c3593bb18", + "interchainSecurityModule": "0x6723A49c12FE37ccBD08512dd586C8471743676f", "mailbox": "0xFf06aFcaABaDDd1fb08371f9ccA15D73D51FeBD6", "merkleTreeHook": "0x84eea61D679F42D92145fA052C89900CBAccE95A", "name": "avalanche", @@ -244,7 +244,7 @@ "interchainAccountIsm": "0x223F7D3f27E6272266AE4B5B91Fd5C7A2d798cD8", "interchainAccountRouter": "0x4767D22117bBeeb295413000B620B93FD8522d53", "interchainGasPaymaster": "0xc3F23848Ed2e04C0c6d41bd7804fa8f89F940B94", - "interchainSecurityModule": "0xf1d67752c6399933d850dC27F41F581a198fbEdE", + "interchainSecurityModule": "0xaeEf8f7D049C03181E0B5f2746CA2Db4d25C0B82", "mailbox": "0xeA87ae93Fa0019a82A727bfd3eBd1cFCa8f64f1D", "merkleTreeHook": "0x19dc38aeae620380430C200a6E990D5Af5480117", "name": "base", @@ -314,7 +314,7 @@ "interchainAccountIsm": "0xe93f2f409ad8B5000431D234472973fe848dcBEC", "interchainAccountRouter": "0x2f4Eb04189e11Af642237Da62d163Ab714614498", "interchainGasPaymaster": "0xB3fCcD379ad66CED0c91028520C64226611A48c9", - "interchainSecurityModule": "0x0aa862a0039ed2d7908d749049ed2766Ff03AABb", + "interchainSecurityModule": "0xbCe3469E8C270e04ea9ccd20Efdeed2b90c9d57C", "mailbox": "0x3a867fCfFeC2B790970eeBDC9023E75B0a172aa7", "merkleTreeHook": "0xC9B8ea6230d6687a4b13fD3C0b8f0Ec607B26465", "name": "blast", @@ -382,7 +382,7 @@ "interchainAccountIsm": "0x451dF8AB0936D85526D816f0b4dCaDD934A034A4", "interchainAccountRouter": "0x5C02157068a52cEcfc98EDb6115DE6134EcB4764", "interchainGasPaymaster": "0x62B7592C1B6D1E43f4630B8e37f4377097840C05", - "interchainSecurityModule": "0x83a33bc769aE0b830cdbACbC82a151A1217EbD60", + "interchainSecurityModule": "0x26eA240CB4cABd7B75A9F17E7f4e224170270Ee3", "mailbox": "0x8358D8291e3bEDb04804975eEa0fe9fe0fAfB147", "merkleTreeHook": "0x781bE492F1232E66990d83a9D3AC3Ec26f56DAfB", "name": "bob", @@ -448,7 +448,7 @@ "interchainAccountIsm": "0x9e22945bE593946618383B108CC5bce09eBA4C26", "interchainAccountRouter": "0x32A07c1B7a7fe8D4A0e44B0181873aB9d64C16c1", "interchainGasPaymaster": "0x78E25e7f84416e69b9339B0A6336EB6EFfF6b451", - "interchainSecurityModule": "0x6a46c4db32c06bF8D6A4E2e1ed311427E8087E47", + "interchainSecurityModule": "0x0A7cE15E3cc638abC3B5FfA7Fc8F3295Ae3595D1", "mailbox": "0x2971b9Aec44bE4eb673DF1B88cDB57b96eefe8a4", "merkleTreeHook": "0xFDb9Cd5f9daAA2E4474019405A328a88E7484f26", "name": "bsc", @@ -528,7 +528,7 @@ "interchainAccountIsm": "0xB732c83aeE29596E3163Da2260710eAB67Bc0B29", "interchainAccountRouter": "0x27a6cAe33378bB6A6663b382070427A01fc9cB37", "interchainGasPaymaster": "0x571f1435613381208477ac5d6974310d88AC7cB7", - "interchainSecurityModule": "0x8718d2867085C065BE7a65ec669ceE4a6d0902E1", + "interchainSecurityModule": "0x33BC62504248F4cb43813532067ccAEd46a5e61C", "mailbox": "0x50da3B3907A08a24fe4999F4Dcf337E8dC7954bb", "merkleTreeHook": "0x04dB778f05854f26E67e0a66b740BBbE9070D366", "name": "celo", @@ -592,7 +592,7 @@ "interchainAccountIsm": "0x4Eb82Ee35b0a1c1d776E3a3B547f9A9bA6FCC9f2", "interchainAccountRouter": "0xEF9A332Ec1fD233Bf9344A58be56ff9E104B4f60", "interchainGasPaymaster": "0x7E27456a839BFF31CA642c060a2b68414Cb6e503", - "interchainSecurityModule": "0xbf8c84422e09BB9866F9E416d6f447A33e261D05", + "interchainSecurityModule": "0xc1FF2bf7a4C315bE2a06941D236457EB02F93993", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0x0054D19613f20dD72721A146ED408971a2CCA9BD", "name": "cheesechain", @@ -655,7 +655,7 @@ "from": 4842212 }, "interchainGasPaymaster": "0x9844aFFaBE17c37F791ff99ABa58B0FbB75e22AF", - "interchainSecurityModule": "0x18E1F88A882cE015b135Acdf356dd4F5773763B9", + "interchainSecurityModule": "0xEfFaEddFf4FFd6F8a6D714bf149b114fD34E5Fd4", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0xF5da68b2577EF5C0A0D98aA2a58483a68C2f232a", "name": "cyber", @@ -721,7 +721,7 @@ "from": 23783929 }, "interchainGasPaymaster": "0x9844aFFaBE17c37F791ff99ABa58B0FbB75e22AF", - "interchainSecurityModule": "0xcCdAcCCc5defCb56852e2945eaF0Ba2b3751B1aF", + "interchainSecurityModule": "0xB5e6AA45E117f9fD2a3F8e78432fCAfdB833d316", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0xF5da68b2577EF5C0A0D98aA2a58483a68C2f232a", "name": "degenchain", @@ -796,7 +796,8 @@ "http": "https://mainnetbeta-rpc.eclipse.xyz" } ], - "validatorAnnounce": "Hqnn593pqDZWLy6bKZ4NbY767wFhUNBShDrLktuQa3Q2" + "validatorAnnounce": "Hqnn593pqDZWLy6bKZ4NbY767wFhUNBShDrLktuQa3Q2", + "interchainSecurityModule": "BgG35GxoaMgmiam3EJzcwivwQ2DTYGPTLfUCg7bhiH6V" }, "endurance": { "aggregationHook": "0x62c39B0500760c46Ae9Ae312A30f63445dc24C3a", @@ -831,7 +832,7 @@ "interchainAccountIsm": "0xCeafc098e5c3c7768b9229Be2FEC275862A81Abd", "interchainAccountRouter": "0xed9a722c543883FB7e07E78F3879762DE09eA7D5", "interchainGasPaymaster": "0xB30EAB08aa87138D57168D0e236850A530f49921", - "interchainSecurityModule": "0x0A5bB58D8C66Dee715C22E6Dc2FFAABBc2E2473d", + "interchainSecurityModule": "0xC0737f1EA1d0aF287c2804090370b1715c593385", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0xC831271c1fB212012811a91Dd43e5926C1020563", "name": "endurance", @@ -901,7 +902,7 @@ "interchainAccountIsm": "0x292C614ED53DaaDBf971521bc2C652d1ca51cB47", "interchainAccountRouter": "0x5E532F7B610618eE73C2B462978e94CB1F7995Ce", "interchainGasPaymaster": "0x9e6B1022bE9BBF5aFd152483DAD9b88911bC8611", - "interchainSecurityModule": "0x33F9760969408cc5138Bc6683F42514a74114a53", + "interchainSecurityModule": "0xFc440a9c946Bf4840623E4adf49646089361584a", "mailbox": "0xc005dc82818d67AF737725bD4bf75435d065D239", "merkleTreeHook": "0x48e6c30B97748d1e2e03bf3e9FbE3890ca5f8CCA", "name": "ethereum", @@ -973,7 +974,7 @@ "interchainAccountIsm": "0x7C012DCA02C42cfA3Fd7Da3B0ED7234B52AE68eF", "interchainAccountRouter": "0xbed53B5C5BCE9433f25A2A702e6df13E22d84Ae9", "interchainGasPaymaster": "0x2Fca7f6eC3d4A0408900f2BB30004d4616eE985E", - "interchainSecurityModule": "0xDEFa968CE11b3F707C785cEF07e2cFb79b6B0D14", + "interchainSecurityModule": "0x2bed66bbfE45f1d73928179e72B73e5eCF7B9900", "mailbox": "0x2f9DB5616fa3fAd1aB06cB2C906830BA63d135e3", "merkleTreeHook": "0x8358D8291e3bEDb04804975eEa0fe9fe0fAfB147", "name": "fraxtal", @@ -1040,7 +1041,7 @@ "interchainAccountIsm": "0x9629c28990F11c31735765A6FD59E1E1bC197DbD", "interchainAccountRouter": "0x2351FBe24C1212F253b7a300ff0cBCFd97952a19", "interchainGasPaymaster": "0xFB9e40D811Cea562cc8a322b029eF2BDcC3ef6ed", - "interchainSecurityModule": "0x94f9670390f63CFA0Bf49944ccD28322922b4B14", + "interchainSecurityModule": "0x1E12bdb6a33442102FEF2ab766b93c863653B4bE", "mailbox": "0x3071D4DA6020C956Fe15Bfd0a9Ca8D4574f16696", "merkleTreeHook": "0xfBc08389224d23b79cb21cDc16c5d42F0ad0F57f", "name": "fusemainnet", @@ -1113,7 +1114,7 @@ "interchainAccountIsm": "0x07E2062A1bC66a2C1d05cb5C3870a4AF86e0056E", "interchainAccountRouter": "0xBE70Ab882D1F7E37e04a70CDd9Ec23b37a234064", "interchainGasPaymaster": "0xDd260B99d302f0A3fF885728c086f729c06f227f", - "interchainSecurityModule": "0x46902BD2e22A6672eD2E8D04771cC8CB5eD06481", + "interchainSecurityModule": "0x996Be332325DA49Ea590A9772a515d62dD90C74c", "mailbox": "0xaD09d78f4c6b9dA2Ae82b1D34107802d380Bb74f", "merkleTreeHook": "0x2684C6F89E901987E1FdB7649dC5Be0c57C61645", "name": "gnosis", @@ -1183,7 +1184,7 @@ "interchainAccountIsm": "0x708E002637792FDC031E6B62f23DD60014AC976a", "interchainAccountRouter": "0xfB8cea1c7F45608Da30655b50bbF355D123A4358", "interchainGasPaymaster": "0x19dc38aeae620380430C200a6E990D5Af5480117", - "interchainSecurityModule": "0x2dcFd91eCd43adfd5644De57387575F97539C18a", + "interchainSecurityModule": "0x1Bff27a1c1319b0704348895b67426a4Eb1b629e", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0x0972954923a1e2b2aAb04Fa0c4a0797e5989Cd65", "name": "inevm", @@ -1303,7 +1304,7 @@ "from": 14616307 }, "interchainGasPaymaster": "0x9844aFFaBE17c37F791ff99ABa58B0FbB75e22AF", - "interchainSecurityModule": "0x58D6fb4aADd3ae83ec529d3d0f42Ae904207a336", + "interchainSecurityModule": "0xcaE599dD2142CD8F09a68bAC89b4d809A038d2E9", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0xF5da68b2577EF5C0A0D98aA2a58483a68C2f232a", "name": "kroma", @@ -1375,7 +1376,7 @@ "interchainAccountIsm": "0xdcA646C56E7768DD11654956adE24bfFf9Ba4893", "interchainAccountRouter": "0xD59dA396F162Ed93a41252Cebb8d5DD4F093238C", "interchainGasPaymaster": "0x8105a095368f1a184CceA86cCe21318B5Ee5BE28", - "interchainSecurityModule": "0x72CC2baC9e33Eb96395FE8caC142D368fbF8Dc50", + "interchainSecurityModule": "0x916e612358dA3F7E8e19f51ba2Cf7af3285a6793", "mailbox": "0x02d16BC51af6BfD153d67CA61754cF912E82C4d9", "merkleTreeHook": "0xC077A0Cc408173349b1c9870C667B40FE3C01dd7", "name": "linea", @@ -1445,7 +1446,7 @@ "from": 4195553 }, "interchainGasPaymaster": "0x9844aFFaBE17c37F791ff99ABa58B0FbB75e22AF", - "interchainSecurityModule": "0x1b9cDC236760f40064863DA3d67f5553208B65DE", + "interchainSecurityModule": "0xa660FA2047105E0341b356393218586ED2191d14", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0xF5da68b2577EF5C0A0D98aA2a58483a68C2f232a", "name": "lisk", @@ -1508,7 +1509,7 @@ "from": 3088760 }, "interchainGasPaymaster": "0x441a01Fca2eD731C0Fc4633998332f9FEDB17575", - "interchainSecurityModule": "0xc6ec1364d1ce3E963Fa65A0bDF57eC722478e1FB", + "interchainSecurityModule": "0x391BD8dD2709F77d39dab4fB3bf4BCAfd5EC3248", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0x062200d92dF6bB7bA89Ce4D6800110450f94784e", "name": "lukso", @@ -1581,7 +1582,7 @@ "interchainAccountIsm": "0x8Ea50255C282F89d1A14ad3F159437EE5EF0507f", "interchainAccountRouter": "0x693A4cE39d99e46B04cb562329e3F0141cA17331", "interchainGasPaymaster": "0x0D63128D887159d63De29497dfa45AFc7C699AE4", - "interchainSecurityModule": "0x855a679627f8A283861d363E8Daaf2e6fac74230", + "interchainSecurityModule": "0xBcB96842301c659B575c40C3f93F7311D09c93d9", "isTestnet": false, "mailbox": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", "merkleTreeHook": "0x149db7afD694722747035d5AEC7007ccb6F8f112", @@ -1650,7 +1651,7 @@ "interchainAccountIsm": "0xe039DA3A0071BEd087A12660D7b03cf669c7776E", "interchainAccountRouter": "0x45285463352c53a481e882cD5E2AF2E25BBdAd0D", "interchainGasPaymaster": "0x8105a095368f1a184CceA86cCe21318B5Ee5BE28", - "interchainSecurityModule": "0xDA06C0c607CdbcED8B01d7b7caafeeDA550b4120", + "interchainSecurityModule": "0xe542Ed13B5782aF0AFAe7f232bB867FB0208Ab7B", "mailbox": "0x398633D19f4371e1DB5a8EFE90468eB70B1176AA", "merkleTreeHook": "0x5332D1AC0A626D265298c14ff681c0A8D28dB86d", "name": "mantle", @@ -1712,7 +1713,7 @@ "from": 13523607 }, "interchainGasPaymaster": "0x9844aFFaBE17c37F791ff99ABa58B0FbB75e22AF", - "interchainSecurityModule": "0xD89521A871B43f1116083d79A937445D2675Be37", + "interchainSecurityModule": "0x5725a9Bf3bdaF104Ce1A0098308DD974F6395365", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0xF5da68b2577EF5C0A0D98aA2a58483a68C2f232a", "name": "merlin", @@ -1778,7 +1779,7 @@ "from": 17966274 }, "interchainGasPaymaster": "0x9844aFFaBE17c37F791ff99ABa58B0FbB75e22AF", - "interchainSecurityModule": "0x1ffca4c17aEe10a8fCAd338750191ce1C2188b6f", + "interchainSecurityModule": "0xfd810678075502F76A6ef79cedffe58cff6Cc410", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0xF5da68b2577EF5C0A0D98aA2a58483a68C2f232a", "name": "metis", @@ -1843,7 +1844,7 @@ "from": 3752032 }, "interchainGasPaymaster": "0x9844aFFaBE17c37F791ff99ABa58B0FbB75e22AF", - "interchainSecurityModule": "0x1ffca4c17aEe10a8fCAd338750191ce1C2188b6f", + "interchainSecurityModule": "0xfd810678075502F76A6ef79cedffe58cff6Cc410", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0xF5da68b2577EF5C0A0D98aA2a58483a68C2f232a", "name": "mint", @@ -1909,7 +1910,7 @@ "interchainAccountIsm": "0xa377b8269e0A47cdd2fD5AAeAe860b45623c6d82", "interchainAccountRouter": "0x6e1B9f776bd415d7cC3C7458A5f0d801016918f8", "interchainGasPaymaster": "0x931dFCc8c1141D6F532FD023bd87DAe0080c835d", - "interchainSecurityModule": "0x691ca7575ff8D2415158b95f4F4D9307aD9115d5", + "interchainSecurityModule": "0x1ab6985E0e15d293e71d01510fa6B57311C69718", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0xE2ee936bEa8e42671c400aC96dE198E06F2bA2A6", "name": "mode", @@ -1977,7 +1978,7 @@ "interchainAccountIsm": "0x79b3730CE3685f65802aF1771319992bA960EB9D", "interchainAccountRouter": "0xc4482f66191754a8629D35289043C4EB0285F10E", "interchainGasPaymaster": "0x14760E32C0746094cF14D97124865BC7F0F7368F", - "interchainSecurityModule": "0x3E4c6E0f336657467175cFeC13fdecC78BaE253d", + "interchainSecurityModule": "0x105215D46F45a88B3793B798Fb87AF231Ad9f611", "mailbox": "0x094d03E751f49908080EFf000Dd6FD177fd44CC3", "merkleTreeHook": "0x87403b85f6f316e7ba91ba1fa6C3Fb7dD4095547", "name": "moonbeam", @@ -2117,7 +2118,7 @@ "interchainAccountIsm": "0x2c46BF14641d00549ECa4779BF5CBf91602C1DEd", "interchainAccountRouter": "0x03D6cC17d45E9EA27ED757A8214d1F07F7D901aD", "interchainGasPaymaster": "0xD8A76C4D91fCbB7Cc8eA795DFDF870E48368995C", - "interchainSecurityModule": "0x1bc5500Cc5d338e2daDBa6db936b4046030aF3A3", + "interchainSecurityModule": "0x1E491c93Ab56A298bBC34B4Fca8A4cE68E8d540a", "mailbox": "0xd4C1905BB1D26BC93DAC913e13CaCC278CdCC80D", "merkleTreeHook": "0x68eE9bec9B4dbB61f69D9D293Ae26a5AACb2e28f", "name": "optimism", @@ -2250,7 +2251,7 @@ "interchainAccountIsm": "0xBAC4529cdfE7CCe9E858BF706e41F8Ed096C1BAd", "interchainAccountRouter": "0xF163949AD9F88977ebF649D0461398Ca752E64B9", "interchainGasPaymaster": "0x0071740Bf129b05C4684abfbBeD248D80971cce2", - "interchainSecurityModule": "0x017B4ee44A205B3c9576512F83c583F59da3f1f4", + "interchainSecurityModule": "0x0D408EF040ca0E7a75f03c41Aa46cAc904770D45", "mailbox": "0x5d934f4e2f797775e53561bB72aca21ba36B96BB", "merkleTreeHook": "0x73FbD25c3e817DC4B4Cd9d00eff6D83dcde2DfF6", "name": "polygon", @@ -2326,7 +2327,7 @@ "interchainAccountIsm": "0xc1198e241DAe48BF5AEDE5DCE49Fe4A6064cF7a7", "interchainAccountRouter": "0x20a0A32a110362920597F72974E1E0d7e25cA20a", "interchainGasPaymaster": "0x0D63128D887159d63De29497dfa45AFc7C699AE4", - "interchainSecurityModule": "0x6d1c7Cba7fa5cA1895EBC2045A93D53719C47Fed", + "interchainSecurityModule": "0x5C622f40365F57D06b5e7132B1483fcbc9566560", "mailbox": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", "merkleTreeHook": "0x149db7afD694722747035d5AEC7007ccb6F8f112", "name": "polygonzkevm", @@ -2393,7 +2394,7 @@ "from": 32018468 }, "interchainGasPaymaster": "0x9844aFFaBE17c37F791ff99ABa58B0FbB75e22AF", - "interchainSecurityModule": "0xA00CCe6085E4fae65EfD61cEfd080cb99B6d750f", + "interchainSecurityModule": "0x336306ADB3c510A318107c01D109D2072c7abB6B", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0xF5da68b2577EF5C0A0D98aA2a58483a68C2f232a", "name": "proofofplay", @@ -2457,7 +2458,7 @@ "from": 363159 }, "interchainGasPaymaster": "0x3071D4DA6020C956Fe15Bfd0a9Ca8D4574f16696", - "interchainSecurityModule": "0x20c612974cBAE138e76b991C1FBA829b7E52C070", + "interchainSecurityModule": "0x06567d07b49ad922A821A641F1C962569a255dbB", "mailbox": "0xeA87ae93Fa0019a82A727bfd3eBd1cFCa8f64f1D", "merkleTreeHook": "0x55E4F0bc6b7Bb493D50839A8592e7ad8d5e93cf7", "name": "real", @@ -2524,7 +2525,7 @@ "interchainAccountIsm": "0x5DA60220C5dDe35b7aE91c042ff5979047FA0785", "interchainAccountRouter": "0x7a4d31a686A36285d68e14EDD53631417eB19603", "interchainGasPaymaster": "0x2Fa570E83009eaEef3a1cbd496a9a30F05266634", - "interchainSecurityModule": "0xbB8D11681396d410fa00B92Bc92Fff1e61a31C3F", + "interchainSecurityModule": "0x5a3bB91853CfDaDb1bC95D2E061B50d433fbe3E8", "mailbox": "0xeA87ae93Fa0019a82A727bfd3eBd1cFCa8f64f1D", "merkleTreeHook": "0x8F1E22d309baa69D398a03cc88E9b46037e988AA", "name": "redstone", @@ -2585,7 +2586,7 @@ "from": 937117 }, "interchainGasPaymaster": "0x9844aFFaBE17c37F791ff99ABa58B0FbB75e22AF", - "interchainSecurityModule": "0x597DB3036b5E7bE9b2216F599e1Ba92734c4cd6f", + "interchainSecurityModule": "0xA76F4620ac1e97d273B2C9Ca71805c8afD792098", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0xF5da68b2577EF5C0A0D98aA2a58483a68C2f232a", "name": "sanko", @@ -2653,7 +2654,7 @@ "interchainAccountIsm": "0x32af5Df81fEd5E26119F6640FBB13f3d63a94CDe", "interchainAccountRouter": "0x0B48a744698ba8dFa514742dFEB6728f52fD66f7", "interchainGasPaymaster": "0xBF12ef4B9f307463D3FB59c3604F294dDCe287E2", - "interchainSecurityModule": "0xBf15bABBB938F0F734F77Eda8b583429838490E7", + "interchainSecurityModule": "0x37e17723b665A9F95F4aecEEc40D9eF39624764e", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0x6119E37Bd66406A1Db74920aC79C15fB8411Ba76", "name": "scroll", @@ -2720,7 +2721,7 @@ "interchainAccountIsm": "0xf35dc7B9eE4Ebf0cd3546Bd6EE3b403dE2b9F5D6", "interchainAccountRouter": "0xBcaedE97a98573A88242B3b0CB0A255F3f90d4d5", "interchainGasPaymaster": "0xFC62DeF1f08793aBf0E67f69257c6be258194F72", - "interchainSecurityModule": "0xf0FcAb13ACec74402fFC5006bBEb81E3C14f071f", + "interchainSecurityModule": "0x26184898fA27D3471B50BD956AB5b3E9Aa14763C", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0xca1b69fA4c4a7c7fD839bC50867c589592bcfe49", "name": "sei", @@ -2796,7 +2797,8 @@ "http": "https://api.mainnet-beta.solana.com" } ], - "validatorAnnounce": "pRgs5vN4Pj7WvFbxf6QDHizo2njq2uksqEUbaSghVA8" + "validatorAnnounce": "pRgs5vN4Pj7WvFbxf6QDHizo2njq2uksqEUbaSghVA8", + "interchainSecurityModule": "372D5YP7jMYUgYBXTVJ7BZtzKv1mq1J6wvjSFLNTRreC" }, "taiko": { "aggregationHook": "0x1175A31f66C5e3d0ce0ca3B7F80Abe72c6FcE272", @@ -2831,7 +2833,7 @@ "interchainAccountIsm": "0xAE557e108b3336130370aC74836f1356B4b30Cf2", "interchainAccountRouter": "0x1F8CF09F060A2AE962c0Bb1F92e209a1E7b0E10B", "interchainGasPaymaster": "0x273Bc6b01D9E88c064b6E5e409BdF998246AEF42", - "interchainSecurityModule": "0xbCF47BFb1f863e349b588d6b0A817161541a82A6", + "interchainSecurityModule": "0x478D0e5d221C8d7CA1A6353315fac6FA88Ff1B97", "mailbox": "0x28EFBCadA00A7ed6772b3666F3898d276e88CAe3", "merkleTreeHook": "0x6A55822cf11f9fcBc4c75BC2638AfE8Eb942cAdd", "name": "taiko", @@ -2893,7 +2895,7 @@ "from": 1678063 }, "interchainGasPaymaster": "0x9844aFFaBE17c37F791ff99ABa58B0FbB75e22AF", - "interchainSecurityModule": "0xA00CCe6085E4fae65EfD61cEfd080cb99B6d750f", + "interchainSecurityModule": "0x336306ADB3c510A318107c01D109D2072c7abB6B", "isTestnet": false, "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0xF5da68b2577EF5C0A0D98aA2a58483a68C2f232a", @@ -2960,7 +2962,7 @@ "interchainAccountIsm": "0x551BbEc45FD665a8C95ca8731CbC32b7653Bc59B", "interchainAccountRouter": "0xc11f8Cf2343d3788405582F65B8af6A4F7a6FfC8", "interchainGasPaymaster": "0x0D63128D887159d63De29497dfa45AFc7C699AE4", - "interchainSecurityModule": "0x37E2EBF4DD9F6636f28Ac2a20284d2d47f93Cc3A", + "interchainSecurityModule": "0x5542503cBde841c336Afef014FE80b0F1c9d716d", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0x149db7afD694722747035d5AEC7007ccb6F8f112", "name": "viction", @@ -3027,7 +3029,7 @@ "interchainAccountIsm": "0xCB9f90EE5d83Ea52ABd922BD70898f0155D54798", "interchainAccountRouter": "0x473884010F0C1742DA8Ad01E7E295624B931076b", "interchainGasPaymaster": "0x7E27456a839BFF31CA642c060a2b68414Cb6e503", - "interchainSecurityModule": "0xbf8c84422e09BB9866F9E416d6f447A33e261D05", + "interchainSecurityModule": "0xc1FF2bf7a4C315bE2a06941D236457EB02F93993", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0x0054D19613f20dD72721A146ED408971a2CCA9BD", "name": "worldchain", @@ -3088,7 +3090,7 @@ "from": 24395308 }, "interchainGasPaymaster": "0x9844aFFaBE17c37F791ff99ABa58B0FbB75e22AF", - "interchainSecurityModule": "0x18E1F88A882cE015b135Acdf356dd4F5773763B9", + "interchainSecurityModule": "0xC630ef37e03534721557026FeC397Ec05f85584C", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0xF5da68b2577EF5C0A0D98aA2a58483a68C2f232a", "name": "xai", @@ -3156,7 +3158,7 @@ "interchainAccountIsm": "0x29B37088724B745C0ABcE591449Cf042772160C2", "interchainAccountRouter": "0x03cF708E42C89623bd83B281A56935cB562b9258", "interchainGasPaymaster": "0x7E27456a839BFF31CA642c060a2b68414Cb6e503", - "interchainSecurityModule": "0x6455CbF559E2227aA23409930D0F860e2f244B70", + "interchainSecurityModule": "0x0811C6250965E7Ba1A872A12249B1b2300d85CFD", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0x0054D19613f20dD72721A146ED408971a2CCA9BD", "name": "xlayer", @@ -3223,7 +3225,7 @@ "interchainAccountIsm": "0x2b6d3F7d28B5EC8C3C028fBCAdcf774D9709Dd29", "interchainAccountRouter": "0x3AdCBc94ab8C48EC52D06dc65Bb787fD1981E3d5", "interchainGasPaymaster": "0x931dFCc8c1141D6F532FD023bd87DAe0080c835d", - "interchainSecurityModule": "0xCAc4123018406911D43e778410313A594276c96E", + "interchainSecurityModule": "0x858a077945bCC4afA40DaE5a75faB9237e899b30", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0xE2ee936bEa8e42671c400aC96dE198E06F2bA2A6", "name": "zetachain", @@ -3288,7 +3290,7 @@ "from": 1511458 }, "interchainGasPaymaster": "0x03cF708E42C89623bd83B281A56935cB562b9258", - "interchainSecurityModule": "0xe569C2cC7f2e41ABF1c1CFdE7BBd1694BEF5cc5D", + "interchainSecurityModule": "0xb04DE6Cbc6E258E8f2D2B00EBdcD2Ea901791EAA", "mailbox": "0xc2FbB9411186AB3b1a6AFCCA702D1a80B48b197c", "merkleTreeHook": "0x4C97D35c668EE5194a13c8DE8Afc18cce40C9F28", "name": "zircuit", @@ -3360,7 +3362,7 @@ "interchainAccountIsm": "0xb2674E213019972f937CCFc5e23BF963D915809e", "interchainAccountRouter": "0x11b76D93a9D39Eb51F54eBf5566308640cDe882b", "interchainGasPaymaster": "0x18B0688990720103dB63559a3563f7E8d0f63EDb", - "interchainSecurityModule": "0xe2089faE2D98f2CF280E8d218E5a36966ee04d39", + "interchainSecurityModule": "0xDede6e50E548460FB6a939320F707214CFfC701C", "mailbox": "0xF5da68b2577EF5C0A0D98aA2a58483a68C2f232a", "merkleTreeHook": "0x886BB0f329781b98f98FDeb1ce7a8957F2d43B9F", "name": "zoramainnet", @@ -3430,7 +3432,7 @@ "domainRoutingIsmFactory": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908", "fallbackRoutingHook": "0xc401e251CCa7A364114504A994D6fC7cb1c243AB", "interchainGasPaymaster": "0x4E55aDA3ef1942049EA43E904EB01F4A0a9c39bd", - "interchainSecurityModule": "0x78A31fF00D79158c22C09DC6D7Fa7188e21925E4", + "interchainSecurityModule": "0x2b19CEB3ef3B1D7428b0788d44401E44E381B62B", "mailbox": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", "merkleTreeHook": "0x441a01Fca2eD731C0Fc4633998332f9FEDB17575", "pausableHook": "0x5Ed813B8b41f25c8002B01A72bbDBe6A0232Fe27", @@ -3496,7 +3498,7 @@ "domainRoutingIsmFactory": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908", "fallbackRoutingHook": "0xc401e251CCa7A364114504A994D6fC7cb1c243AB", "interchainGasPaymaster": "0x4E55aDA3ef1942049EA43E904EB01F4A0a9c39bd", - "interchainSecurityModule": "0x71c9bB4297518034f89cDb243fBfd37d549bEbAa", + "interchainSecurityModule": "0x8Ad4d573D7EafC4Ca58f1dB704B8Db804814D674", "mailbox": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", "merkleTreeHook": "0x441a01Fca2eD731C0Fc4633998332f9FEDB17575", "pausableHook": "0x5Ed813B8b41f25c8002B01A72bbDBe6A0232Fe27", @@ -3565,7 +3567,7 @@ "domainRoutingIsmFactory": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908", "fallbackRoutingHook": "0xc401e251CCa7A364114504A994D6fC7cb1c243AB", "interchainGasPaymaster": "0x4E55aDA3ef1942049EA43E904EB01F4A0a9c39bd", - "interchainSecurityModule": "0x78A31fF00D79158c22C09DC6D7Fa7188e21925E4", + "interchainSecurityModule": "0x2b19CEB3ef3B1D7428b0788d44401E44E381B62B", "mailbox": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", "merkleTreeHook": "0x441a01Fca2eD731C0Fc4633998332f9FEDB17575", "pausableHook": "0x5Ed813B8b41f25c8002B01A72bbDBe6A0232Fe27", @@ -3640,7 +3642,7 @@ "domainRoutingIsmFactory": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908", "fallbackRoutingHook": "0xc401e251CCa7A364114504A994D6fC7cb1c243AB", "interchainGasPaymaster": "0x4E55aDA3ef1942049EA43E904EB01F4A0a9c39bd", - "interchainSecurityModule": "0x78A31fF00D79158c22C09DC6D7Fa7188e21925E4", + "interchainSecurityModule": "0x2b19CEB3ef3B1D7428b0788d44401E44E381B62B", "mailbox": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", "merkleTreeHook": "0x441a01Fca2eD731C0Fc4633998332f9FEDB17575", "pausableHook": "0x5Ed813B8b41f25c8002B01A72bbDBe6A0232Fe27", @@ -3703,7 +3705,7 @@ "domainRoutingIsmFactory": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908", "fallbackRoutingHook": "0xc401e251CCa7A364114504A994D6fC7cb1c243AB", "interchainGasPaymaster": "0x4E55aDA3ef1942049EA43E904EB01F4A0a9c39bd", - "interchainSecurityModule": "0x78A31fF00D79158c22C09DC6D7Fa7188e21925E4", + "interchainSecurityModule": "0x2b19CEB3ef3B1D7428b0788d44401E44E381B62B", "mailbox": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", "merkleTreeHook": "0x441a01Fca2eD731C0Fc4633998332f9FEDB17575", "pausableHook": "0x5Ed813B8b41f25c8002B01A72bbDBe6A0232Fe27", @@ -3775,7 +3777,7 @@ "domainRoutingIsmFactory": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908", "fallbackRoutingHook": "0xc401e251CCa7A364114504A994D6fC7cb1c243AB", "interchainGasPaymaster": "0x4E55aDA3ef1942049EA43E904EB01F4A0a9c39bd", - "interchainSecurityModule": "0x78A31fF00D79158c22C09DC6D7Fa7188e21925E4", + "interchainSecurityModule": "0x2b19CEB3ef3B1D7428b0788d44401E44E381B62B", "mailbox": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", "merkleTreeHook": "0x441a01Fca2eD731C0Fc4633998332f9FEDB17575", "pausableHook": "0x5Ed813B8b41f25c8002B01A72bbDBe6A0232Fe27", @@ -3842,7 +3844,7 @@ "domainRoutingIsmFactory": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908", "fallbackRoutingHook": "0xc401e251CCa7A364114504A994D6fC7cb1c243AB", "interchainGasPaymaster": "0x4E55aDA3ef1942049EA43E904EB01F4A0a9c39bd", - "interchainSecurityModule": "0x78A31fF00D79158c22C09DC6D7Fa7188e21925E4", + "interchainSecurityModule": "0x2b19CEB3ef3B1D7428b0788d44401E44E381B62B", "mailbox": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", "merkleTreeHook": "0x441a01Fca2eD731C0Fc4633998332f9FEDB17575", "pausableHook": "0x5Ed813B8b41f25c8002B01A72bbDBe6A0232Fe27", @@ -3905,7 +3907,7 @@ "domainRoutingIsmFactory": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908", "fallbackRoutingHook": "0xc401e251CCa7A364114504A994D6fC7cb1c243AB", "interchainGasPaymaster": "0x4E55aDA3ef1942049EA43E904EB01F4A0a9c39bd", - "interchainSecurityModule": "0x78A31fF00D79158c22C09DC6D7Fa7188e21925E4", + "interchainSecurityModule": "0x12C8cfA5B97Df96AaB2795a4186675dA49938968", "mailbox": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", "merkleTreeHook": "0x441a01Fca2eD731C0Fc4633998332f9FEDB17575", "pausableHook": "0x5Ed813B8b41f25c8002B01A72bbDBe6A0232Fe27", @@ -3974,7 +3976,7 @@ "interchainAccountIsm": "0xcd9D3744512F07AE844c40E27912092d7c503565", "interchainAccountRouter": "0x92cdbF0Ccdf8E93467FA858fb986fa650A02f2A8", "interchainGasPaymaster": "0xb58257cc81E47EC72fD38aE16297048de23163b4", - "interchainSecurityModule": "0x47F57D08d01544Ed082152B73807A9D39305Fac6", + "interchainSecurityModule": "0xD5a72d4EF4D7db52C12802d0e3fBEF47b268e0dB", "mailbox": "0x7f50C5776722630a0024fAE05fDe8b47571D7B39", "merkleTreeHook": "0xCC3D1659D50461d27a2F025dDb2c9B06B584B7e1", "pausableHook": "0x4E55aDA3ef1942049EA43E904EB01F4A0a9c39bd", @@ -4034,7 +4036,7 @@ "interchainAccountIsm": "0xc23BaF5Eb5848D19701BbE7f139645e6bd58a319", "interchainAccountRouter": "0x7c58Cadcc2b60ACF794eE1843488d6f5703f76BE", "interchainGasPaymaster": "0xb4fc9B5fD57499Ef6FfF3995728a55F7A618ef86", - "interchainSecurityModule": "0xdc2da0D5d7A69fa86366235E426ff4a0E214cC60", + "interchainSecurityModule": "0x9E59d69F8e23dc159761Ca713C61a081422d1d47", "mailbox": "0xb129828B9EDa48192D0B2db35D0E40dCF51B3594", "merkleTreeHook": "0x3E969bA938E6A993eeCD6F65b0dd8712B07dFe59", "pausableHook": "0x6Fb36672365C7c797028C400A61c58c0ECc53cD2", diff --git a/typescript/cli/package.json b/typescript/cli/package.json index 6725dddd1..b44e7fb50 100644 --- a/typescript/cli/package.json +++ b/typescript/cli/package.json @@ -5,7 +5,7 @@ "dependencies": { "@aws-sdk/client-kms": "^3.577.0", "@aws-sdk/client-s3": "^3.577.0", - "@hyperlane-xyz/registry": "4.0.0", + "@hyperlane-xyz/registry": "4.1.0", "@hyperlane-xyz/sdk": "5.1.0", "@hyperlane-xyz/utils": "5.1.0", "@inquirer/prompts": "^3.0.0", diff --git a/typescript/helloworld/package.json b/typescript/helloworld/package.json index 34aba2ec9..b3fc92a52 100644 --- a/typescript/helloworld/package.json +++ b/typescript/helloworld/package.json @@ -4,7 +4,7 @@ "version": "5.1.0", "dependencies": { "@hyperlane-xyz/core": "5.1.0", - "@hyperlane-xyz/registry": "4.0.0", + "@hyperlane-xyz/registry": "4.1.0", "@hyperlane-xyz/sdk": "5.1.0", "@openzeppelin/contracts-upgradeable": "^4.9.3", "ethers": "^5.7.2" diff --git a/typescript/infra/config/environments/mainnet3/gasPrices.json b/typescript/infra/config/environments/mainnet3/gasPrices.json index 042437b60..3542719f7 100644 --- a/typescript/infra/config/environments/mainnet3/gasPrices.json +++ b/typescript/infra/config/environments/mainnet3/gasPrices.json @@ -4,7 +4,7 @@ "decimals": 9 }, "arbitrum": { - "amount": "0.5", + "amount": "0.1", "decimals": 9 }, "astar": { @@ -12,7 +12,7 @@ "decimals": 9 }, "astarzkevm": { - "amount": "0.0097", + "amount": "0.0562", "decimals": 9 }, "avalanche": { @@ -20,7 +20,7 @@ "decimals": 9 }, "base": { - "amount": "0.013311447", + "amount": "0.013571998", "decimals": 9 }, "bitlayer": { @@ -72,7 +72,7 @@ "decimals": 9 }, "ethereum": { - "amount": "6.654595701", + "amount": "10", "decimals": 9 }, "everclear": { @@ -120,7 +120,7 @@ "decimals": 9 }, "mantapacific": { - "amount": "0.113932514", + "amount": "0.011", "decimals": 9 }, "mantle": { @@ -140,7 +140,7 @@ "decimals": 9 }, "mode": { - "amount": "0.1", + "amount": "0.01", "decimals": 9 }, "molten": { @@ -168,7 +168,7 @@ "decimals": 1 }, "polygon": { - "amount": "101.76455238", + "amount": "219.572738168", "decimals": 9 }, "polygonzkevm": { diff --git a/typescript/infra/config/environments/mainnet3/tokenPrices.json b/typescript/infra/config/environments/mainnet3/tokenPrices.json index 121d89832..0abb12d06 100644 --- a/typescript/infra/config/environments/mainnet3/tokenPrices.json +++ b/typescript/infra/config/environments/mainnet3/tokenPrices.json @@ -1,63 +1,63 @@ { - "ancient8": "2342.46", - "arbitrum": "2342.46", - "astar": "0.054438", - "astarzkevm": "2342.46", - "avalanche": "23.83", - "base": "2342.46", - "bitlayer": "56880", - "blast": "2342.46", - "bob": "2342.46", - "bsc": "519.43", - "celo": "0.444294", - "cheesechain": "0.00249894", - "coredao": "0.942068", - "cyber": "2342.46", - "degenchain": "0.00324668", - "dogechain": "0.102724", - "eclipsemainnet": "2342.46", - "endurance": "2.14", - "ethereum": "2342.46", - "everclear": "2342.46", - "flare": "0.01473859", - "fraxtal": "2335.15", - "fusemainnet": "0.02525184", - "gnosis": "0.990366", - "inevm": "17.79", - "injective": "17.79", - "kroma": "2342.46", - "linea": "2342.46", - "lisk": "2342.46", - "lukso": "2.1", - "mantapacific": "2342.46", - "mantle": "0.563082", - "merlin": "56884", - "metis": "29.99", - "mint": "2342.46", - "mode": "2342.46", - "molten": "0.663236", - "moonbeam": "0.159678", - "neutron": "0.359547", - "oortmainnet": "0.089435", - "optimism": "2342.46", - "osmosis": "0.39708", - "polygon": "0.384058", - "polygonzkevm": "2342.46", - "proofofplay": "2342.46", - "real": "2342.46", - "redstone": "2342.46", - "sanko": "39.51", - "scroll": "2342.46", - "sei": "0.290644", - "shibarium": "0.398366", - "solanamainnet": "133.81", - "taiko": "2342.46", - "tangle": "0.999864", - "viction": "0.438134", - "worldchain": "2342.46", - "xai": "0.183944", - "xlayer": "37.86", - "zetachain": "0.465693", - "zircuit": "2342.46", - "zoramainnet": "2342.46" + "ancient8": "2411.78", + "arbitrum": "2411.78", + "astar": "0.058925", + "astarzkevm": "2411.78", + "avalanche": "24.66", + "base": "2411.78", + "bitlayer": "59677", + "blast": "2411.78", + "bob": "2411.78", + "bsc": "552.99", + "celo": "0.444888", + "cheesechain": "0.00192649", + "coredao": "0.936135", + "cyber": "2411.78", + "degenchain": "0.00324113", + "dogechain": "0.107549", + "eclipsemainnet": "2411.78", + "endurance": "2.28", + "ethereum": "2411.78", + "everclear": "2411.78", + "flare": "0.01486694", + "fraxtal": "2389.6", + "fusemainnet": "0.0254922", + "gnosis": "1.011", + "inevm": "19.13", + "injective": "19.13", + "kroma": "2411.78", + "linea": "2411.78", + "lisk": "2411.78", + "lukso": "2.11", + "mantapacific": "2411.78", + "mantle": "0.571121", + "merlin": "59786", + "metis": "31.92", + "mint": "2411.78", + "mode": "2411.78", + "molten": "0.671515", + "moonbeam": "0.170166", + "neutron": "0.368584", + "oortmainnet": "0.091528", + "optimism": "2411.78", + "osmosis": "0.412102", + "polygon": "0.426289", + "polygonzkevm": "2411.78", + "proofofplay": "2411.78", + "real": "2411.78", + "redstone": "2411.78", + "sanko": "34.23", + "scroll": "2411.78", + "sei": "0.304985", + "shibarium": "0.407481", + "solanamainnet": "137.07", + "taiko": "2411.78", + "tangle": "1.001", + "viction": "0.437209", + "worldchain": "2411.78", + "xai": "0.190543", + "xlayer": "40.24", + "zetachain": "0.489689", + "zircuit": "2411.78", + "zoramainnet": "2411.78" } diff --git a/typescript/infra/package.json b/typescript/infra/package.json index bda53492c..174906ae1 100644 --- a/typescript/infra/package.json +++ b/typescript/infra/package.json @@ -14,7 +14,7 @@ "@ethersproject/providers": "^5.7.2", "@google-cloud/secret-manager": "^5.5.0", "@hyperlane-xyz/helloworld": "5.1.0", - "@hyperlane-xyz/registry": "4.0.0", + "@hyperlane-xyz/registry": "4.1.0", "@hyperlane-xyz/sdk": "5.1.0", "@hyperlane-xyz/utils": "5.1.0", "@inquirer/prompts": "^5.3.8", diff --git a/typescript/infra/scripts/agents/update-agent-config.ts b/typescript/infra/scripts/agents/update-agent-config.ts index 551be6cda..4584348cf 100644 --- a/typescript/infra/scripts/agents/update-agent-config.ts +++ b/typescript/infra/scripts/agents/update-agent-config.ts @@ -2,12 +2,19 @@ import { ChainAddresses } from '@hyperlane-xyz/registry'; import { ChainMap, ChainTechnicalStack, + CoreFactories, + HyperlaneContracts, HyperlaneCore, HyperlaneDeploymentArtifacts, MultiProvider, buildAgentConfig, } from '@hyperlane-xyz/sdk'; -import { ProtocolType, objMap, promiseObjAll } from '@hyperlane-xyz/utils'; +import { + ProtocolType, + objFilter, + objMap, + promiseObjAll, +} from '@hyperlane-xyz/utils'; import { Contexts } from '../../config/contexts.js'; import { @@ -18,6 +25,7 @@ import { getCosmosChainGasPrice } from '../../src/config/gas-oracle.js'; import { chainIsProtocol, filterRemoteDomainMetadata, + isEthereumProtocolChain, writeMergedJSONAtPath, } from '../../src/utils/utils.js'; import { @@ -50,41 +58,53 @@ export async function writeAgentConfig( const addressesForEnv = filterRemoteDomainMetadata(addressesMap); const core = HyperlaneCore.fromAddressesMap(addressesForEnv, multiProvider); + const evmContractsMap = objFilter( + core.contractsMap, + (chain, _): _ is HyperlaneContracts => + isEthereumProtocolChain(chain), + ); + // Write agent config indexing from the deployed Mailbox which stores the block number at deployment const startBlocks = await promiseObjAll( - objMap(addressesForEnv, async (chain: string, _) => { - const { index, technicalStack } = multiProvider.getChainMetadata(chain); - const indexFrom = index?.from; + objMap( + evmContractsMap, + async (chain: string, contracts: HyperlaneContracts) => { + const { index, technicalStack } = multiProvider.getChainMetadata(chain); + const indexFrom = index?.from; - // Arbitrum Nitro chains record the L1 block number they were deployed at, - // not the L2 block number. - // See: https://docs.arbitrum.io/build-decentralized-apps/arbitrum-vs-ethereum/block-numbers-and-time#ethereum-block-numbers-within-arbitrum - if (technicalStack === ChainTechnicalStack.ArbitrumNitro && !indexFrom) { - // Should never get here because registry should enforce this, but we're being defensive. - throw new Error( - `index.from is not set for Arbitrum Nitro chain ${chain}`, - ); - } + // Arbitrum Nitro chains record the L1 block number they were deployed at, + // not the L2 block number. + // See: https://docs.arbitrum.io/build-decentralized-apps/arbitrum-vs-ethereum/block-numbers-and-time#ethereum-block-numbers-within-arbitrum + if ( + technicalStack === ChainTechnicalStack.ArbitrumNitro && + !indexFrom + ) { + // Should never get here because registry should enforce this, but we're being defensive. + throw new Error( + `index.from is not set for Arbitrum Nitro chain ${chain}`, + ); + } - // If the index.from is specified in the chain metadata, use that. - if (indexFrom) { - return indexFrom; - } + // If the index.from is specified in the chain metadata, use that. + if (indexFrom) { + return indexFrom; + } - const mailbox = core.getContracts(chain).mailbox; - try { - const deployedBlock = await mailbox.deployedBlock(); - return deployedBlock.toNumber(); - } catch (err) { - console.error( - 'Failed to get deployed block, defaulting to 0. Chain:', - chain, - 'Error:', - err, - ); - return 0; - } - }), + const mailbox = contracts.mailbox; + try { + const deployedBlock = await mailbox.deployedBlock(); + return deployedBlock.toNumber(); + } catch (err) { + console.error( + 'Failed to get deployed block, defaulting to 0. Chain:', + chain, + 'Error:', + err, + ); + return 0; + } + }, + ), ); // Get gas prices for Cosmos chains. diff --git a/typescript/infra/scripts/check-owner-ica.ts b/typescript/infra/scripts/check-owner-ica.ts new file mode 100644 index 000000000..1866eeb10 --- /dev/null +++ b/typescript/infra/scripts/check-owner-ica.ts @@ -0,0 +1,64 @@ +import { AccountConfig, InterchainAccount } from '@hyperlane-xyz/sdk'; +import { Address, eqAddress } from '@hyperlane-xyz/utils'; + +import { icas } from '../config/environments/mainnet3/owners.js'; + +import { getArgs as getEnvArgs } from './agent-utils.js'; +import { getEnvironmentConfig, getHyperlaneCore } from './core-utils.js'; + +function getArgs() { + return getEnvArgs().option('ownerChain', { + type: 'string', + description: 'Origin chain where the Safe owner lives', + default: 'ethereum', + }).argv; +} + +async function main() { + const { environment, ownerChain } = await getArgs(); + const config = getEnvironmentConfig(environment); + const multiProvider = await config.getMultiProvider(); + + const owner = config.owners[ownerChain].ownerOverrides?._safeAddress; + if (!owner) { + console.error(`No Safe owner found for ${ownerChain}`); + process.exit(1); + } + + console.log(`Safe owner on ${ownerChain}: ${owner}`); + + const { chainAddresses } = await getHyperlaneCore(environment, multiProvider); + const ica = InterchainAccount.fromAddressesMap(chainAddresses, multiProvider); + + const ownerConfig: AccountConfig = { + origin: ownerChain, + owner: owner, + }; + + const mismatchedResults: Record< + string, + { Expected: Address; Actual: Address } + > = {}; + for (const [chain, expectedAddress] of Object.entries(icas)) { + const actualAccount = await ica.getAccount(chain, ownerConfig); + if (!eqAddress(expectedAddress, actualAccount)) { + mismatchedResults[chain] = { + Expected: expectedAddress, + Actual: actualAccount, + }; + } + } + + if (Object.keys(mismatchedResults).length > 0) { + console.error('\nMismatched ICAs found:'); + console.table(mismatchedResults); + process.exit(1); + } else { + console.log('✅ All ICAs match the expected addresses.'); + } +} + +main().catch((err) => { + console.error('Error:', err); + process.exit(1); +}); diff --git a/typescript/infra/scripts/print-balances.ts b/typescript/infra/scripts/print-balances.ts index f46ca4634..b528be05d 100644 --- a/typescript/infra/scripts/print-balances.ts +++ b/typescript/infra/scripts/print-balances.ts @@ -39,42 +39,68 @@ async function main() { const balancesObject = await Promise.all( chainsToCheck.map(async (chain) => { - const provider = multiProvider.getProvider(chain); - const { decimals, symbol } = await multiProvider.getNativeToken(chain); - const roleBalances = await Promise.all( - roles.map(async (role) => { - // Fetch key - const keys = await envConfig.getKeys(context, role as Role); - await Promise.all(Object.values(keys).map((key) => key.fetch())); + try { + const provider = multiProvider.getProvider(chain); + const { decimals, symbol } = await multiProvider.getNativeToken(chain); + const roleBalances = await Promise.all( + roles.map(async (role) => { + try { + let address: string | undefined; - // Default to known deployer/relayer addresses if not found - let address = keys[chain]?.address; - if (!address) { - if (role === Role.Deployer) { - address = - environment === 'mainnet3' ? MainnetDeployer : TestnetDeployer; - } else if (role === Role.Relayer) { - address = - environment === 'mainnet3' ? MainnetRelayer : TestnetRelayer; - } - } + if ( + role === Role.Deployer && + (environment === 'mainnet3' || environment === 'testnet4') + ) { + address = + environment === 'mainnet3' + ? MainnetDeployer + : TestnetDeployer; + } else if ( + role === Role.Relayer && + (environment === 'mainnet3' || environment === 'testnet4') + ) { + address = + environment === 'mainnet3' ? MainnetRelayer : TestnetRelayer; + } else { + // Fetch key only if role is not deployer/relayer or env is not mainnet/testnet + const keys = await envConfig.getKeys(context, role as Role); + await Promise.all( + Object.values(keys).map((key) => key.fetch()), + ); + address = keys[chain]?.address; + } - // Fetch balance - if (address) { - const balance = await provider.getBalance(address); - const formattedBalance = formatUnits(balance, decimals); - return Number(formattedBalance).toFixed(3); - } - return null; - }), - ); - return { - chain, - symbol, - ...Object.fromEntries( - roles.map((role, index) => [role, roleBalances[index]]), - ), - }; + // Fetch balance + if (address) { + const balance = await provider.getBalance(address); + const formattedBalance = formatUnits(balance, decimals); + return Number(formattedBalance).toFixed(3); + } + return null; + } catch (error) { + console.error( + `Error fetching balance for ${role} on ${chain}:`, + error, + ); + return null; + } + }), + ); + return { + chain, + symbol, + ...Object.fromEntries( + roles.map((role, index) => [role, roleBalances[index]]), + ), + }; + } catch (error) { + console.error(`Error processing chain ${chain}:`, error); + return { + chain, + symbol: 'ERROR', + ...Object.fromEntries(roles.map((role) => [role, null])), + }; + } }), ); diff --git a/typescript/infra/src/govern/HyperlaneAppGovernor.ts b/typescript/infra/src/govern/HyperlaneAppGovernor.ts index f901e9c67..d91465d24 100644 --- a/typescript/infra/src/govern/HyperlaneAppGovernor.ts +++ b/typescript/infra/src/govern/HyperlaneAppGovernor.ts @@ -99,52 +99,56 @@ export abstract class HyperlaneAppGovernor< } protected async sendCalls(chain: ChainName, requestConfirmation: boolean) { - const calls = this.calls[chain]; + const calls = this.calls[chain] || []; console.log(`\nFound ${calls.length} transactions for ${chain}`); const filterCalls = (submissionType: SubmissionType) => calls.filter((call) => call.submissionType == submissionType); const summarizeCalls = async ( submissionType: SubmissionType, - calls: AnnotatedCallData[], + callsForSubmissionType: AnnotatedCallData[], ): Promise => { - if (calls.length > 0) { - console.log( - `> ${calls.length} calls will be submitted via ${SubmissionType[submissionType]}`, - ); - calls.map((c) => { - console.log(`> > ${c.description}`); - console.log(`> > > to: ${c.to}`); - console.log(`> > > data: ${c.data}`); - console.log(`> > > value: ${c.value}`); - }); - if (!requestConfirmation) return true; + if (!callsForSubmissionType || callsForSubmissionType.length === 0) { + return false; + } - const { value: confirmed } = await prompts({ - type: 'confirm', - name: 'value', - message: 'Can you confirm?', - initial: false, - }); + console.log( + `> ${callsForSubmissionType.length} calls will be submitted via ${SubmissionType[submissionType]}`, + ); + callsForSubmissionType.map((c) => { + console.log(`> > ${c.description.trim()}`); + console.log(`> > > to: ${c.to}`); + console.log(`> > > data: ${c.data}`); + console.log(`> > > value: ${c.value}`); + }); + if (!requestConfirmation) return true; - return !!confirmed; - } - return false; + const { value: confirmed } = await prompts({ + type: 'confirm', + name: 'value', + message: 'Can you confirm?', + initial: false, + }); + + return !!confirmed; }; const sendCallsForType = async ( submissionType: SubmissionType, multiSend: MultiSend, ) => { - const calls = filterCalls(submissionType); - if (calls.length > 0) { - const confirmed = await summarizeCalls(submissionType, calls); + const callsForSubmissionType = filterCalls(submissionType) || []; + if (callsForSubmissionType.length > 0) { + const confirmed = await summarizeCalls( + submissionType, + callsForSubmissionType, + ); if (confirmed) { console.log( `Submitting calls on ${chain} via ${SubmissionType[submissionType]}`, ); try { await multiSend.sendTransactions( - calls.map((call) => ({ + callsForSubmissionType.map((call) => ({ to: call.to, data: call.data, value: call.value, @@ -411,8 +415,13 @@ export abstract class HyperlaneAppGovernor< }; } else { console.error( - `Failed to determine if signer can propose safe transactions: ${error}`, + `Failed to determine if signer can propose safe transactions on ${chain}. Setting submission type to MANUAL. Error: ${error}`, ); + return { + type: SubmissionType.MANUAL, + chain, + call, + }; } } } diff --git a/typescript/sdk/src/core/HyperlaneCore.ts b/typescript/sdk/src/core/HyperlaneCore.ts index 16391b2a8..4dc133bc8 100644 --- a/typescript/sdk/src/core/HyperlaneCore.ts +++ b/typescript/sdk/src/core/HyperlaneCore.ts @@ -25,7 +25,10 @@ import { import { HyperlaneApp } from '../app/HyperlaneApp.js'; import { appFromAddressesMapHelper } from '../contracts/contracts.js'; -import { HyperlaneAddressesMap } from '../contracts/types.js'; +import { + HyperlaneAddressesMap, + HyperlaneContracts, +} from '../contracts/types.js'; import { OwnableConfig } from '../deploy/types.js'; import { DerivedHookConfig, EvmHookReader } from '../hook/EvmHookReader.js'; import { DerivedIsmConfig, EvmIsmReader } from '../ism/EvmIsmReader.js'; @@ -54,9 +57,16 @@ export class HyperlaneCore extends HyperlaneApp { getRouterConfig = ( owners: Address | ChainMap, ): ChainMap => { + // filter for EVM chains + const evmContractsMap = objFilter( + this.contractsMap, + (chainName, _): _ is HyperlaneContracts => + this.multiProvider.getProtocol(chainName) === ProtocolType.Ethereum, + ); + // get config const config = objMap( - this.contractsMap, + evmContractsMap, (chain, contracts): RouterConfig => ({ mailbox: contracts.mailbox.address, owner: typeof owners === 'string' ? owners : owners[chain].owner, @@ -64,12 +74,8 @@ export class HyperlaneCore extends HyperlaneApp { typeof owners === 'string' ? undefined : owners[chain].ownerOverrides, }), ); - // filter for EVM chains - return objFilter( - config, - (chainName, _): _ is RouterConfig => - this.multiProvider.getProtocol(chainName) === ProtocolType.Ethereum, - ); + + return config; }; quoteGasPayment = ( diff --git a/typescript/sdk/src/core/HyperlaneCoreChecker.ts b/typescript/sdk/src/core/HyperlaneCoreChecker.ts index 5fc7f014d..cb7bb9046 100644 --- a/typescript/sdk/src/core/HyperlaneCoreChecker.ts +++ b/typescript/sdk/src/core/HyperlaneCoreChecker.ts @@ -1,6 +1,6 @@ import { ethers, utils as ethersUtils } from 'ethers'; -import { assert, eqAddress } from '@hyperlane-xyz/utils'; +import { assert, eqAddress, rootLogger } from '@hyperlane-xyz/utils'; import { BytecodeHash } from '../consts/bytecode.js'; import { HyperlaneAppChecker } from '../deploy/HyperlaneAppChecker.js'; @@ -36,6 +36,12 @@ export class HyperlaneCoreChecker extends HyperlaneAppChecker< async checkChain(chain: ChainName): Promise { const config = this.configMap[chain]; + + if (!config) { + rootLogger.warn(`No config for chain ${chain}`); + return; + } + // skip chains that are configured to be removed if (config.remove) { return; diff --git a/typescript/sdk/src/deploy/HyperlaneAppChecker.ts b/typescript/sdk/src/deploy/HyperlaneAppChecker.ts index 753e2c0ea..63672be18 100644 --- a/typescript/sdk/src/deploy/HyperlaneAppChecker.ts +++ b/typescript/sdk/src/deploy/HyperlaneAppChecker.ts @@ -35,30 +35,24 @@ export abstract class HyperlaneAppChecker< App extends HyperlaneApp, Config, > { - readonly multiProvider: MultiProvider; - readonly app: App; - readonly configMap: ChainMap; - readonly violations: CheckerViolation[]; + readonly violations: CheckerViolation[] = []; constructor( - multiProvider: MultiProvider, - app: App, - configMap: ChainMap, - ) { - this.multiProvider = multiProvider; - this.app = app; - this.violations = []; - this.configMap = configMap; - } + readonly multiProvider: MultiProvider, + readonly app: App, + readonly configMap: ChainMap, + ) {} abstract checkChain(chain: ChainName): Promise; async check(): Promise { + const appChains = this.app.chains(); + Object.keys(this.configMap) .filter( (chain) => this.multiProvider.getChainMetadata(chain).protocol === - ProtocolType.Ethereum && !this.app.chains().includes(chain), + ProtocolType.Ethereum && !appChains.includes(chain), ) .forEach((chain: string) => this.addViolation({ @@ -70,8 +64,13 @@ export abstract class HyperlaneAppChecker< ); return Promise.all( - // this.app.chains() will only return Ethereum chains that can be interacted with. - this.app.chains().map((chain) => this.checkChain(chain)), + appChains + .filter( + (chain) => + this.multiProvider.getChainMetadata(chain).protocol === + ProtocolType.Ethereum, + ) + .map((chain) => this.checkChain(chain)), ); } diff --git a/typescript/widgets/package.json b/typescript/widgets/package.json index dfcacb8b9..373917e0e 100644 --- a/typescript/widgets/package.json +++ b/typescript/widgets/package.json @@ -7,7 +7,7 @@ "react-dom": "^18" }, "dependencies": { - "@hyperlane-xyz/registry": "4.0.0", + "@hyperlane-xyz/registry": "4.1.0", "@hyperlane-xyz/sdk": "5.1.0" }, "devDependencies": { diff --git a/yarn.lock b/yarn.lock index 8adeeb70f..31d1ea72a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7590,7 +7590,7 @@ __metadata: "@aws-sdk/client-s3": "npm:^3.577.0" "@ethersproject/abi": "npm:*" "@ethersproject/providers": "npm:*" - "@hyperlane-xyz/registry": "npm:4.0.0" + "@hyperlane-xyz/registry": "npm:4.1.0" "@hyperlane-xyz/sdk": "npm:5.1.0" "@hyperlane-xyz/utils": "npm:5.1.0" "@inquirer/prompts": "npm:^3.0.0" @@ -7683,7 +7683,7 @@ __metadata: resolution: "@hyperlane-xyz/helloworld@workspace:typescript/helloworld" dependencies: "@hyperlane-xyz/core": "npm:5.1.0" - "@hyperlane-xyz/registry": "npm:4.0.0" + "@hyperlane-xyz/registry": "npm:4.1.0" "@hyperlane-xyz/sdk": "npm:5.1.0" "@nomiclabs/hardhat-ethers": "npm:^2.2.3" "@nomiclabs/hardhat-waffle": "npm:^2.0.6" @@ -7732,7 +7732,7 @@ __metadata: "@ethersproject/providers": "npm:^5.7.2" "@google-cloud/secret-manager": "npm:^5.5.0" "@hyperlane-xyz/helloworld": "npm:5.1.0" - "@hyperlane-xyz/registry": "npm:4.0.0" + "@hyperlane-xyz/registry": "npm:4.1.0" "@hyperlane-xyz/sdk": "npm:5.1.0" "@hyperlane-xyz/utils": "npm:5.1.0" "@inquirer/prompts": "npm:^5.3.8" @@ -7790,13 +7790,13 @@ __metadata: languageName: unknown linkType: soft -"@hyperlane-xyz/registry@npm:4.0.0": - version: 4.0.0 - resolution: "@hyperlane-xyz/registry@npm:4.0.0" +"@hyperlane-xyz/registry@npm:4.1.0": + version: 4.1.0 + resolution: "@hyperlane-xyz/registry@npm:4.1.0" dependencies: yaml: "npm:2.4.5" zod: "npm:^3.21.2" - checksum: 90dfe259343fa68315ea58a58e60d47261a6af33fab63f1d0708e2c19ff057977a878b1e0079811388634e08ddf40fd4f99d03ea519cb8ad96d2ce1063ebdff5 + checksum: 5de3ef5539abfaadbfefb82e6e69fdb2413f404d8321456c91810fb50a5a70e9f93b38789495efce6ab5963682536e95a2abe636c7d0ad91ee158cc0ce6b063a languageName: node linkType: hard @@ -7874,7 +7874,7 @@ __metadata: version: 0.0.0-use.local resolution: "@hyperlane-xyz/widgets@workspace:typescript/widgets" dependencies: - "@hyperlane-xyz/registry": "npm:4.0.0" + "@hyperlane-xyz/registry": "npm:4.1.0" "@hyperlane-xyz/sdk": "npm:5.1.0" "@storybook/addon-essentials": "npm:^7.6.14" "@storybook/addon-interactions": "npm:^7.6.14"