diff --git a/.changeset/gold-weeks-lay.md b/.changeset/gold-weeks-lay.md new file mode 100644 index 000000000..f112dfde1 --- /dev/null +++ b/.changeset/gold-weeks-lay.md @@ -0,0 +1,5 @@ +--- +'@hyperlane-xyz/sdk': minor +--- + +Update cosmos zod schema and enroll new validators for cheesechain, xlayer, zircuit, worldchain. diff --git a/.registryrc b/.registryrc index 21222ceed..44f823d4b 100644 --- a/.registryrc +++ b/.registryrc @@ -1 +1 @@ -v2.5.0 +a000b2a0e64b6cdd27b3edd98cbf2495f2725c64 diff --git a/rust/config/mainnet_config.json b/rust/config/mainnet_config.json index 9c9ad4f88..692516f12 100644 --- a/rust/config/mainnet_config.json +++ b/rust/config/mainnet_config.json @@ -34,7 +34,7 @@ "interchainAccountIsm": "0xd766e7C7517f2d0D92754b2fe4aE7AdEf7bDEC3e", "interchainAccountRouter": "0x25C87e735021F72d8728438C2130b02E3141f2cb", "interchainGasPaymaster": "0x8F1E22d309baa69D398a03cc88E9b46037e988AA", - "interchainSecurityModule": "0x46AC0093B93D9F1d90d68492adb23Fa5a95417Cb", + "interchainSecurityModule": "0x9Bb850d2a2e9aBCd55B6E73fE1515877A7eD50fb", "isTestnet": false, "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0x811808Dd29ba8B0FC6C0ec0b5537035E59745162", @@ -98,7 +98,7 @@ "interchainAccountIsm": "0x2A7574358Ec53522CE2452887661AB4c86F7d400", "interchainAccountRouter": "0x91874Dbed74925dFe6059B90385EEb90DdE0B2E6", "interchainGasPaymaster": "0x3b6044acd6767f017e99318AA6Ef93b7B06A5a22", - "interchainSecurityModule": "0xE665100047d75E174581F7C4fA5F0ACb18d291dE", + "interchainSecurityModule": "0x9636e3601697185Ab24D0f9e23Ac0cEC2ab6e558", "mailbox": "0x979Ca5202784112f4738403dBec5D0F3B9daabB9", "merkleTreeHook": "0x748040afB89B8FdBb992799808215419d36A0930", "name": "arbitrum", @@ -168,7 +168,7 @@ "interchainAccountIsm": "0x27a3233c05C1Df7c163123301D14bE9349E3Cb48", "interchainAccountRouter": "0xa82a0227e6d6db53AF4B264A852bfF91C6504a51", "interchainGasPaymaster": "0x95519ba800BBd0d34eeAE026fEc620AD978176C0", - "interchainSecurityModule": "0x6b64ff9aB7398256A36e24b2E5A6D7F38Df747fc", + "interchainSecurityModule": "0xB0Ba58230e9a8125123c732783FC738B0a2ECa81", "mailbox": "0xFf06aFcaABaDDd1fb08371f9ccA15D73D51FeBD6", "merkleTreeHook": "0x84eea61D679F42D92145fA052C89900CBAccE95A", "name": "avalanche", @@ -238,7 +238,7 @@ "interchainAccountIsm": "0x223F7D3f27E6272266AE4B5B91Fd5C7A2d798cD8", "interchainAccountRouter": "0x4767D22117bBeeb295413000B620B93FD8522d53", "interchainGasPaymaster": "0xc3F23848Ed2e04C0c6d41bd7804fa8f89F940B94", - "interchainSecurityModule": "0xEF296B8663701c10B41E64fc79C1d54066E7A269", + "interchainSecurityModule": "0x3fB45446b0003D98fD728E426Ef7026b507b5669", "mailbox": "0xeA87ae93Fa0019a82A727bfd3eBd1cFCa8f64f1D", "merkleTreeHook": "0x19dc38aeae620380430C200a6E990D5Af5480117", "name": "base", @@ -306,7 +306,7 @@ "interchainAccountIsm": "0xe93f2f409ad8B5000431D234472973fe848dcBEC", "interchainAccountRouter": "0x2f4Eb04189e11Af642237Da62d163Ab714614498", "interchainGasPaymaster": "0xB3fCcD379ad66CED0c91028520C64226611A48c9", - "interchainSecurityModule": "0xfF940cE4bf10Ad26EC8c879136D66958082E04E9", + "interchainSecurityModule": "0x88263fc724Bf58fcA198d4D9F2E961fA30c745Fc", "mailbox": "0x3a867fCfFeC2B790970eeBDC9023E75B0a172aa7", "merkleTreeHook": "0xC9B8ea6230d6687a4b13fD3C0b8f0Ec607B26465", "name": "blast", @@ -372,7 +372,7 @@ "interchainAccountIsm": "0x451dF8AB0936D85526D816f0b4dCaDD934A034A4", "interchainAccountRouter": "0x5C02157068a52cEcfc98EDb6115DE6134EcB4764", "interchainGasPaymaster": "0x62B7592C1B6D1E43f4630B8e37f4377097840C05", - "interchainSecurityModule": "0xfce46c0C7976F33779883e012cb2902fE3C048c7", + "interchainSecurityModule": "0x713E6ceCaaBeb148755D3490fbB87EB731b7cDA7", "mailbox": "0x8358D8291e3bEDb04804975eEa0fe9fe0fAfB147", "merkleTreeHook": "0x781bE492F1232E66990d83a9D3AC3Ec26f56DAfB", "name": "bob", @@ -436,7 +436,7 @@ "interchainAccountIsm": "0x9e22945bE593946618383B108CC5bce09eBA4C26", "interchainAccountRouter": "0x32A07c1B7a7fe8D4A0e44B0181873aB9d64C16c1", "interchainGasPaymaster": "0x78E25e7f84416e69b9339B0A6336EB6EFfF6b451", - "interchainSecurityModule": "0x843919C5D3256FC533dC4A23bDdA59D037a491F8", + "interchainSecurityModule": "0x1bDbFF788eD269C113a7140709D4ee5556420fC3", "mailbox": "0x2971b9Aec44bE4eb673DF1B88cDB57b96eefe8a4", "merkleTreeHook": "0xFDb9Cd5f9daAA2E4474019405A328a88E7484f26", "name": "bsc", @@ -514,7 +514,7 @@ "interchainAccountIsm": "0xB732c83aeE29596E3163Da2260710eAB67Bc0B29", "interchainAccountRouter": "0x27a6cAe33378bB6A6663b382070427A01fc9cB37", "interchainGasPaymaster": "0x571f1435613381208477ac5d6974310d88AC7cB7", - "interchainSecurityModule": "0x07cC4EE3eB2AEA5c045C72725AA3fdC7F5d73474", + "interchainSecurityModule": "0x73Ee35655c8269F8D04C2Be6c67915Db7C862FCb", "mailbox": "0x50da3B3907A08a24fe4999F4Dcf337E8dC7954bb", "merkleTreeHook": "0x04dB778f05854f26E67e0a66b740BBbE9070D366", "name": "celo", @@ -576,7 +576,7 @@ "interchainAccountIsm": "0x4Eb82Ee35b0a1c1d776E3a3B547f9A9bA6FCC9f2", "interchainAccountRouter": "0xEF9A332Ec1fD233Bf9344A58be56ff9E104B4f60", "interchainGasPaymaster": "0x7E27456a839BFF31CA642c060a2b68414Cb6e503", - "interchainSecurityModule": "0xD3bd8f20e169364d14c7dBFE698258D780FC71e3", + "interchainSecurityModule": "0x6455CbF559E2227aA23409930D0F860e2f244B70", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0x0054D19613f20dD72721A146ED408971a2CCA9BD", "name": "cheesechain", @@ -607,6 +607,7 @@ "validatorAnnounce": "0x047ba6c9949baB22d13C347B40819b7A20C4C53a" }, "cyber": { + "aggregationHook": "0xF6C1769d5390Be0f77080eF7791fBbA7eF4D5659", "blockExplorers": [ { "apiUrl": "https://api.socialscan.io/cyber", @@ -635,7 +636,7 @@ "from": 4842212 }, "interchainGasPaymaster": "0x9844aFFaBE17c37F791ff99ABa58B0FbB75e22AF", - "interchainSecurityModule": "0x5F3C25e6AfDC6953fF1c7a661963D5a54E239A8D", + "interchainSecurityModule": "0xd3A6fD5338656353D48693B797b6EcEFC5d3D317", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0xF5da68b2577EF5C0A0D98aA2a58483a68C2f232a", "name": "cyber", @@ -647,6 +648,7 @@ "pausableHook": "0x61594D2cA900C44ab51d07776465397FefC643C6", "pausableIsm": "0xbB22547D1dc681fe925f568f637Ff67aC06c20fc", "protocol": "ethereum", + "protocolFee": "0x089DdA086dCbfA0C2cCa69B45F2eB6DE7Fd71F38", "proxyAdmin": "0x0761b0827849abbf7b0cC09CE14e1C93D87f5004", "rpcUrls": [ { @@ -687,6 +689,7 @@ }, "displayName": "Degen", "domainId": 666666666, + "domainRoutingIsm": "0xaDc0cB48E8DB81855A930C0C1165ea3dCe4Ba5C7", "domainRoutingIsmFactory": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908", "fallbackRoutingHook": "0xd21192429df453021e896f2897Dc8B1167DD61E5", "gasCurrencyCoinGeckoId": "degen-base", @@ -694,7 +697,7 @@ "from": 23783929 }, "interchainGasPaymaster": "0x9844aFFaBE17c37F791ff99ABa58B0FbB75e22AF", - "interchainSecurityModule": "0x768DDd89D239FB3a48A7774aE6d786D72441D0e0", + "interchainSecurityModule": "0xE89fF24e1979F6AbD6b71b733cc62d1289d193c4", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0xF5da68b2577EF5C0A0D98aA2a58483a68C2f232a", "name": "degenchain", @@ -704,6 +707,7 @@ "symbol": "DEGEN" }, "pausableHook": "0x61594D2cA900C44ab51d07776465397FefC643C6", + "pausableIsm": "0x089DdA086dCbfA0C2cCa69B45F2eB6DE7Fd71F38", "protocol": "ethereum", "protocolFee": "0x4E55aDA3ef1942049EA43E904EB01F4A0a9c39bd", "proxyAdmin": "0x0761b0827849abbf7b0cC09CE14e1C93D87f5004", @@ -713,6 +717,7 @@ } ], "staticAggregationHookFactory": "0xEb9FcFDC9EfDC17c1EC5E1dc085B98485da213D6", + "staticAggregationIsm": "0xE89fF24e1979F6AbD6b71b733cc62d1289d193c4", "staticAggregationIsmFactory": "0x8F7454AC98228f3504Bb91eA3D8Adafe6406110A", "staticMerkleRootMultisigIsmFactory": "0x2C1FAbEcd7bFBdEBF27CcdB67baADB38b6Df90fC", "staticMessageIdMultisigIsmFactory": "0x8b83fefd896fAa52057798f6426E9f0B080FCCcE", @@ -797,7 +802,7 @@ "interchainAccountIsm": "0xCeafc098e5c3c7768b9229Be2FEC275862A81Abd", "interchainAccountRouter": "0xed9a722c543883FB7e07E78F3879762DE09eA7D5", "interchainGasPaymaster": "0xB30EAB08aa87138D57168D0e236850A530f49921", - "interchainSecurityModule": "0xF965C301f1FD550ae31c06c9EbDd23F1b478B61d", + "interchainSecurityModule": "0x24B58bD54F4421D175A36f8C1FF437f811589382", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0xC831271c1fB212012811a91Dd43e5926C1020563", "name": "endurance", @@ -865,7 +870,7 @@ "interchainAccountIsm": "0x292C614ED53DaaDBf971521bc2C652d1ca51cB47", "interchainAccountRouter": "0x5E532F7B610618eE73C2B462978e94CB1F7995Ce", "interchainGasPaymaster": "0x9e6B1022bE9BBF5aFd152483DAD9b88911bC8611", - "interchainSecurityModule": "0xBdE8c1C9bddCEa702B7926DeCfB685aCD856C71B", + "interchainSecurityModule": "0xBC1e8b6de1EB71DEb4F5504E6cE2797878C643B8", "mailbox": "0xc005dc82818d67AF737725bD4bf75435d065D239", "merkleTreeHook": "0x48e6c30B97748d1e2e03bf3e9FbE3890ca5f8CCA", "name": "ethereum", @@ -935,7 +940,7 @@ "interchainAccountIsm": "0x7C012DCA02C42cfA3Fd7Da3B0ED7234B52AE68eF", "interchainAccountRouter": "0xbed53B5C5BCE9433f25A2A702e6df13E22d84Ae9", "interchainGasPaymaster": "0x2Fca7f6eC3d4A0408900f2BB30004d4616eE985E", - "interchainSecurityModule": "0x5F7CC9c543a23B30c75aEF6D01fd6fB256d75c1E", + "interchainSecurityModule": "0x5Fc05d27A2E77035fb5566FF739BBbe0087C5B5B", "mailbox": "0x2f9DB5616fa3fAd1aB06cB2C906830BA63d135e3", "merkleTreeHook": "0x8358D8291e3bEDb04804975eEa0fe9fe0fAfB147", "name": "fraxtal", @@ -1000,7 +1005,7 @@ "interchainAccountIsm": "0x9629c28990F11c31735765A6FD59E1E1bC197DbD", "interchainAccountRouter": "0x2351FBe24C1212F253b7a300ff0cBCFd97952a19", "interchainGasPaymaster": "0xFB9e40D811Cea562cc8a322b029eF2BDcC3ef6ed", - "interchainSecurityModule": "0x5DaF24d97283cb512773824CcC79b5003064C07D", + "interchainSecurityModule": "0x3Cfc6227274f77Aa463630d619dCaECf582C82Db", "mailbox": "0x3071D4DA6020C956Fe15Bfd0a9Ca8D4574f16696", "merkleTreeHook": "0xfBc08389224d23b79cb21cDc16c5d42F0ad0F57f", "name": "fusemainnet", @@ -1017,6 +1022,15 @@ "rpcUrls": [ { "http": "https://rpc.fuse.io" + }, + { + "http": "https://fuse.drpc.org" + }, + { + "http": "https://fuse.liquify.com" + }, + { + "http": "https://fuse-pokt.nodies.app" } ], "staticAggregationHookFactory": "0x40Ca055683d9aA603f73EDcb62874a1BaAa1d6dA", @@ -1062,7 +1076,7 @@ "interchainAccountIsm": "0x07E2062A1bC66a2C1d05cb5C3870a4AF86e0056E", "interchainAccountRouter": "0xBE70Ab882D1F7E37e04a70CDd9Ec23b37a234064", "interchainGasPaymaster": "0xDd260B99d302f0A3fF885728c086f729c06f227f", - "interchainSecurityModule": "0x1eC334Bd525296D47262c7849BEC8a7A7CBae1e0", + "interchainSecurityModule": "0x90BD2692d7C0412bd6b5070D5e34d733b0540131", "mailbox": "0xaD09d78f4c6b9dA2Ae82b1D34107802d380Bb74f", "merkleTreeHook": "0x2684C6F89E901987E1FdB7649dC5Be0c57C61645", "name": "gnosis", @@ -1130,7 +1144,7 @@ "interchainAccountIsm": "0x708E002637792FDC031E6B62f23DD60014AC976a", "interchainAccountRouter": "0xfB8cea1c7F45608Da30655b50bbF355D123A4358", "interchainGasPaymaster": "0x19dc38aeae620380430C200a6E990D5Af5480117", - "interchainSecurityModule": "0x1bD6a052a006F71F2292f1BB9F39455567f97021", + "interchainSecurityModule": "0x4FC9FBb6e426277c7876864084D075315248f2B4", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0x0972954923a1e2b2aAb04Fa0c4a0797e5989Cd65", "name": "inevm", @@ -1220,6 +1234,7 @@ "validatorAnnounce": "0x1fb225b2fcfbe75e614a1d627de97ff372242eed" }, "kroma": { + "aggregationHook": "0xF6C1769d5390Be0f77080eF7791fBbA7eF4D5659", "blockExplorers": [ { "apiUrl": "https://blockscout.kroma.network/api", @@ -1240,6 +1255,7 @@ }, "displayName": "Kroma", "domainId": 255, + "domainRoutingIsm": "0xaDc0cB48E8DB81855A930C0C1165ea3dCe4Ba5C7", "domainRoutingIsmFactory": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908", "fallbackRoutingHook": "0xd21192429df453021e896f2897Dc8B1167DD61E5", "gasCurrencyCoinGeckoId": "ethereum", @@ -1247,7 +1263,7 @@ "from": 14616307 }, "interchainGasPaymaster": "0x9844aFFaBE17c37F791ff99ABa58B0FbB75e22AF", - "interchainSecurityModule": "0x768DDd89D239FB3a48A7774aE6d786D72441D0e0", + "interchainSecurityModule": "0xe274f228f87c0D72241CF9aAC15d91e3630aE6f6", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0xF5da68b2577EF5C0A0D98aA2a58483a68C2f232a", "name": "kroma", @@ -1257,7 +1273,9 @@ "symbol": "ETH" }, "pausableHook": "0x61594D2cA900C44ab51d07776465397FefC643C6", + "pausableIsm": "0x662771d29DFf0d7C36bB9BB6d4241a02e77585d9", "protocol": "ethereum", + "protocolFee": "0x9c44E6b8F0dB517C2c3a0478caaC5349b614F912", "proxyAdmin": "0x0761b0827849abbf7b0cC09CE14e1C93D87f5004", "rpcUrls": [ { @@ -1271,6 +1289,7 @@ } ], "staticAggregationHookFactory": "0xEb9FcFDC9EfDC17c1EC5E1dc085B98485da213D6", + "staticAggregationIsm": "0xe274f228f87c0D72241CF9aAC15d91e3630aE6f6", "staticAggregationIsmFactory": "0x8F7454AC98228f3504Bb91eA3D8Adafe6406110A", "staticMerkleRootMultisigIsmFactory": "0x2C1FAbEcd7bFBdEBF27CcdB67baADB38b6Df90fC", "staticMessageIdMultisigIsmFactory": "0x8b83fefd896fAa52057798f6426E9f0B080FCCcE", @@ -1311,7 +1330,7 @@ "interchainAccountIsm": "0xdcA646C56E7768DD11654956adE24bfFf9Ba4893", "interchainAccountRouter": "0xD59dA396F162Ed93a41252Cebb8d5DD4F093238C", "interchainGasPaymaster": "0x8105a095368f1a184CceA86cCe21318B5Ee5BE28", - "interchainSecurityModule": "0x3391dd1120461DF175077A34b2595B8897FE22a7", + "interchainSecurityModule": "0x18Ec250dC6ac6a440A13140B812226baE1787E88", "mailbox": "0x02d16BC51af6BfD153d67CA61754cF912E82C4d9", "merkleTreeHook": "0xC077A0Cc408173349b1c9870C667B40FE3C01dd7", "name": "linea", @@ -1365,6 +1384,7 @@ }, "displayName": "Lisk", "domainId": 1135, + "domainRoutingIsm": "0x55d6f15ce95B7570d215bE0306706d39877a64d0", "domainRoutingIsmFactory": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908", "fallbackRoutingHook": "0xd21192429df453021e896f2897Dc8B1167DD61E5", "gasCurrencyCoinGeckoId": "ethereum", @@ -1372,7 +1392,7 @@ "from": 4195553 }, "interchainGasPaymaster": "0x9844aFFaBE17c37F791ff99ABa58B0FbB75e22AF", - "interchainSecurityModule": "0x768DDd89D239FB3a48A7774aE6d786D72441D0e0", + "interchainSecurityModule": "0x36d5F5b369639489c75D6B522eA2465041d2f79B", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0xF5da68b2577EF5C0A0D98aA2a58483a68C2f232a", "name": "lisk", @@ -1382,6 +1402,7 @@ "symbol": "ETH" }, "pausableHook": "0x61594D2cA900C44ab51d07776465397FefC643C6", + "pausableIsm": "0x53e912b41125d6094590a7DBEf1360d3d56EEa19", "protocol": "ethereum", "protocolFee": "0x4E55aDA3ef1942049EA43E904EB01F4A0a9c39bd", "proxyAdmin": "0x0761b0827849abbf7b0cC09CE14e1C93D87f5004", @@ -1391,6 +1412,7 @@ } ], "staticAggregationHookFactory": "0xEb9FcFDC9EfDC17c1EC5E1dc085B98485da213D6", + "staticAggregationIsm": "0x36d5F5b369639489c75D6B522eA2465041d2f79B", "staticAggregationIsmFactory": "0x8F7454AC98228f3504Bb91eA3D8Adafe6406110A", "staticMerkleRootMultisigIsmFactory": "0x2C1FAbEcd7bFBdEBF27CcdB67baADB38b6Df90fC", "staticMessageIdMultisigIsmFactory": "0x8b83fefd896fAa52057798f6426E9f0B080FCCcE", @@ -1428,7 +1450,7 @@ "from": 3088760 }, "interchainGasPaymaster": "0x441a01Fca2eD731C0Fc4633998332f9FEDB17575", - "interchainSecurityModule": "0x51C6A5106EF680d11e8fD9EE1d090c07fdaD2e3D", + "interchainSecurityModule": "0x138965Cfc3F63aE0A32cD505DeD6DB95D9d60399", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0x062200d92dF6bB7bA89Ce4D6800110450f94784e", "name": "lukso", @@ -1496,7 +1518,7 @@ "interchainAccountIsm": "0x8Ea50255C282F89d1A14ad3F159437EE5EF0507f", "interchainAccountRouter": "0x693A4cE39d99e46B04cb562329e3F0141cA17331", "interchainGasPaymaster": "0x0D63128D887159d63De29497dfa45AFc7C699AE4", - "interchainSecurityModule": "0xEA2A8F45Fd40aa233E51A54f8956fEB63B6879E6", + "interchainSecurityModule": "0x1165cCEfF6CFB95006eBd33A72eAf23981Fe6bEA", "isTestnet": false, "mailbox": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", "merkleTreeHook": "0x149db7afD694722747035d5AEC7007ccb6F8f112", @@ -1563,7 +1585,7 @@ "interchainAccountIsm": "0xe039DA3A0071BEd087A12660D7b03cf669c7776E", "interchainAccountRouter": "0x45285463352c53a481e882cD5E2AF2E25BBdAd0D", "interchainGasPaymaster": "0x8105a095368f1a184CceA86cCe21318B5Ee5BE28", - "interchainSecurityModule": "0x79C105d9c4eeec06acf5532B8e4079F6acAc5ED0", + "interchainSecurityModule": "0xb57Ff2792A8BA6af557467bbBa70fCBB330D3d52", "mailbox": "0x398633D19f4371e1DB5a8EFE90468eB70B1176AA", "merkleTreeHook": "0x5332D1AC0A626D265298c14ff681c0A8D28dB86d", "name": "mantle", @@ -1594,6 +1616,7 @@ "validatorAnnounce": "0x1956848601549de5aa0c887892061fA5aB4f6fC4" }, "merlin": { + "aggregationHook": "0x68c48C397DBADdC05c9dd469CF6f9DC0dBE745D8", "blockExplorers": [ { "apiUrl": "https://scan.merlinchain.io/api", @@ -1622,7 +1645,7 @@ "from": 13523607 }, "interchainGasPaymaster": "0x9844aFFaBE17c37F791ff99ABa58B0FbB75e22AF", - "interchainSecurityModule": "0x768DDd89D239FB3a48A7774aE6d786D72441D0e0", + "interchainSecurityModule": "0x21C5aa77617DCF34b58a7315B4a13473b18ff460", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0xF5da68b2577EF5C0A0D98aA2a58483a68C2f232a", "name": "merlin", @@ -1634,6 +1657,7 @@ "pausableHook": "0xDd1CddEd982e4d271d4D6Bc4cdE8d4F3338733B5", "pausableIsm": "0x632b4F32d65F7b25B37a27C57dD510f8e4a58Bf9", "protocol": "ethereum", + "protocolFee": "0xb4fc9B5fD57499Ef6FfF3995728a55F7A618ef86", "proxyAdmin": "0x0761b0827849abbf7b0cC09CE14e1C93D87f5004", "rpcUrls": [ { @@ -1674,6 +1698,7 @@ }, "displayName": "Metis Andromeda", "domainId": 1088, + "domainRoutingIsm": "0xaDc0cB48E8DB81855A930C0C1165ea3dCe4Ba5C7", "domainRoutingIsmFactory": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908", "fallbackRoutingHook": "0xd21192429df453021e896f2897Dc8B1167DD61E5", "gasCurrencyCoinGeckoId": "metis-token", @@ -1681,7 +1706,7 @@ "from": 17966274 }, "interchainGasPaymaster": "0x9844aFFaBE17c37F791ff99ABa58B0FbB75e22AF", - "interchainSecurityModule": "0x768DDd89D239FB3a48A7774aE6d786D72441D0e0", + "interchainSecurityModule": "0x64946Bc95d9b12aBd7CF02507D5E2b709670eD48", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0xF5da68b2577EF5C0A0D98aA2a58483a68C2f232a", "name": "metis", @@ -1691,6 +1716,7 @@ "symbol": "METIS" }, "pausableHook": "0x61594D2cA900C44ab51d07776465397FefC643C6", + "pausableIsm": "0xDab56C5A1EffFdd23f6BD1243E457B1575984Bc6", "protocol": "ethereum", "protocolFee": "0x4E55aDA3ef1942049EA43E904EB01F4A0a9c39bd", "proxyAdmin": "0x0761b0827849abbf7b0cC09CE14e1C93D87f5004", @@ -1700,6 +1726,7 @@ } ], "staticAggregationHookFactory": "0xEb9FcFDC9EfDC17c1EC5E1dc085B98485da213D6", + "staticAggregationIsm": "0x64946Bc95d9b12aBd7CF02507D5E2b709670eD48", "staticAggregationIsmFactory": "0x8F7454AC98228f3504Bb91eA3D8Adafe6406110A", "staticMerkleRootMultisigIsmFactory": "0x2C1FAbEcd7bFBdEBF27CcdB67baADB38b6Df90fC", "staticMessageIdMultisigIsmFactory": "0x8b83fefd896fAa52057798f6426E9f0B080FCCcE", @@ -1709,6 +1736,7 @@ "validatorAnnounce": "0x062200d92dF6bB7bA89Ce4D6800110450f94784e" }, "mint": { + "aggregationHook": "0xF6C1769d5390Be0f77080eF7791fBbA7eF4D5659", "blockExplorers": [ { "apiUrl": "https://explorer.mintchain.io/api/eth-rpc", @@ -1729,6 +1757,7 @@ }, "displayName": "Mint", "domainId": 185, + "domainRoutingIsm": "0xaDc0cB48E8DB81855A930C0C1165ea3dCe4Ba5C7", "domainRoutingIsmFactory": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908", "fallbackRoutingHook": "0xd21192429df453021e896f2897Dc8B1167DD61E5", "gasCurrencyCoinGeckoId": "ethereum", @@ -1737,7 +1766,7 @@ "from": 3752032 }, "interchainGasPaymaster": "0x9844aFFaBE17c37F791ff99ABa58B0FbB75e22AF", - "interchainSecurityModule": "0x768DDd89D239FB3a48A7774aE6d786D72441D0e0", + "interchainSecurityModule": "0x64946Bc95d9b12aBd7CF02507D5E2b709670eD48", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0xF5da68b2577EF5C0A0D98aA2a58483a68C2f232a", "name": "mint", @@ -1747,7 +1776,9 @@ "symbol": "ETH" }, "pausableHook": "0x61594D2cA900C44ab51d07776465397FefC643C6", + "pausableIsm": "0xDab56C5A1EffFdd23f6BD1243E457B1575984Bc6", "protocol": "ethereum", + "protocolFee": "0x53e912b41125d6094590a7DBEf1360d3d56EEa19", "proxyAdmin": "0x0761b0827849abbf7b0cC09CE14e1C93D87f5004", "rpcUrls": [ { @@ -1755,6 +1786,7 @@ } ], "staticAggregationHookFactory": "0xEb9FcFDC9EfDC17c1EC5E1dc085B98485da213D6", + "staticAggregationIsm": "0x64946Bc95d9b12aBd7CF02507D5E2b709670eD48", "staticAggregationIsmFactory": "0x8F7454AC98228f3504Bb91eA3D8Adafe6406110A", "staticMerkleRootMultisigIsmFactory": "0x2C1FAbEcd7bFBdEBF27CcdB67baADB38b6Df90fC", "staticMessageIdMultisigIsmFactory": "0x8b83fefd896fAa52057798f6426E9f0B080FCCcE", @@ -1795,7 +1827,7 @@ "interchainAccountIsm": "0xa377b8269e0A47cdd2fD5AAeAe860b45623c6d82", "interchainAccountRouter": "0x6e1B9f776bd415d7cC3C7458A5f0d801016918f8", "interchainGasPaymaster": "0x931dFCc8c1141D6F532FD023bd87DAe0080c835d", - "interchainSecurityModule": "0x7b04FB03Fd1bc89b4Ca8FADDa330f9937f88589b", + "interchainSecurityModule": "0x1764af123824d753B8F51b3DA92E06C0643b15C1", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0xE2ee936bEa8e42671c400aC96dE198E06F2bA2A6", "name": "mode", @@ -1861,7 +1893,7 @@ "interchainAccountIsm": "0x79b3730CE3685f65802aF1771319992bA960EB9D", "interchainAccountRouter": "0xc4482f66191754a8629D35289043C4EB0285F10E", "interchainGasPaymaster": "0x14760E32C0746094cF14D97124865BC7F0F7368F", - "interchainSecurityModule": "0xA201676D4F38F0821254B4F6c01CC6E2aeFD45fC", + "interchainSecurityModule": "0xB917b4C28096f185D615F2D52d5001D83F40A546", "mailbox": "0x094d03E751f49908080EFf000Dd6FD177fd44CC3", "merkleTreeHook": "0x87403b85f6f316e7ba91ba1fa6C3Fb7dD4095547", "name": "moonbeam", @@ -1996,7 +2028,7 @@ "interchainAccountIsm": "0x2c46BF14641d00549ECa4779BF5CBf91602C1DEd", "interchainAccountRouter": "0x03D6cC17d45E9EA27ED757A8214d1F07F7D901aD", "interchainGasPaymaster": "0xD8A76C4D91fCbB7Cc8eA795DFDF870E48368995C", - "interchainSecurityModule": "0xC1A59f23f08A714748c227376Ed28057b330ED40", + "interchainSecurityModule": "0x048e40b98D251FbD5520D7148736a42eB6F8af1b", "mailbox": "0xd4C1905BB1D26BC93DAC913e13CaCC278CdCC80D", "merkleTreeHook": "0x68eE9bec9B4dbB61f69D9D293Ae26a5AACb2e28f", "name": "optimism", @@ -2127,7 +2159,7 @@ "interchainAccountIsm": "0xBAC4529cdfE7CCe9E858BF706e41F8Ed096C1BAd", "interchainAccountRouter": "0xF163949AD9F88977ebF649D0461398Ca752E64B9", "interchainGasPaymaster": "0x0071740Bf129b05C4684abfbBeD248D80971cce2", - "interchainSecurityModule": "0x89DE7d4ab97e3729Cbecb56AdbaA89a8955dB6C1", + "interchainSecurityModule": "0x55173a981c0c6C9E4dEedEE53400Cdfe568B3B95", "mailbox": "0x5d934f4e2f797775e53561bB72aca21ba36B96BB", "merkleTreeHook": "0x73FbD25c3e817DC4B4Cd9d00eff6D83dcde2DfF6", "name": "polygon", @@ -2201,7 +2233,7 @@ "interchainAccountIsm": "0xc1198e241DAe48BF5AEDE5DCE49Fe4A6064cF7a7", "interchainAccountRouter": "0x20a0A32a110362920597F72974E1E0d7e25cA20a", "interchainGasPaymaster": "0x0D63128D887159d63De29497dfa45AFc7C699AE4", - "interchainSecurityModule": "0x78C39ACb76d948dA60a0C9ad184A8Ec9ef711963", + "interchainSecurityModule": "0xAc27452E5744f3807c2548f99473A14ee51bb667", "mailbox": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", "merkleTreeHook": "0x149db7afD694722747035d5AEC7007ccb6F8f112", "name": "polygonzkevm", @@ -2237,6 +2269,7 @@ "validatorAnnounce": "0x2fa5F5C96419C222cDbCeC797D696e6cE428A7A9" }, "proofofplay": { + "aggregationHook": "0xF6C1769d5390Be0f77080eF7791fBbA7eF4D5659", "blockExplorers": [ { "apiUrl": "https://explorer.apex.proofofplay.com/api/eth-rpc", @@ -2257,6 +2290,7 @@ }, "displayName": "Proof of Play Apex", "domainId": 70700, + "domainRoutingIsm": "0xaDc0cB48E8DB81855A930C0C1165ea3dCe4Ba5C7", "domainRoutingIsmFactory": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908", "fallbackRoutingHook": "0xd21192429df453021e896f2897Dc8B1167DD61E5", "gasCurrencyCoinGeckoId": "ethereum", @@ -2264,7 +2298,7 @@ "from": 32018468 }, "interchainGasPaymaster": "0x9844aFFaBE17c37F791ff99ABa58B0FbB75e22AF", - "interchainSecurityModule": "0x768DDd89D239FB3a48A7774aE6d786D72441D0e0", + "interchainSecurityModule": "0xB0525d808721426c56377469B92db16857384deF", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0xF5da68b2577EF5C0A0D98aA2a58483a68C2f232a", "name": "proofofplay", @@ -2274,7 +2308,9 @@ "symbol": "ETH" }, "pausableHook": "0x61594D2cA900C44ab51d07776465397FefC643C6", + "pausableIsm": "0x5d69BC38eF3eDb491c0b7186BEc4eC45c4013f93", "protocol": "ethereum", + "protocolFee": "0x73db9c7430548f399e335f3424e8d56080e9010c", "proxyAdmin": "0x0761b0827849abbf7b0cC09CE14e1C93D87f5004", "rpcUrls": [ { @@ -2282,6 +2318,7 @@ } ], "staticAggregationHookFactory": "0xEb9FcFDC9EfDC17c1EC5E1dc085B98485da213D6", + "staticAggregationIsm": "0xB0525d808721426c56377469B92db16857384deF", "staticAggregationIsmFactory": "0x8F7454AC98228f3504Bb91eA3D8Adafe6406110A", "staticMerkleRootMultisigIsmFactory": "0x2C1FAbEcd7bFBdEBF27CcdB67baADB38b6Df90fC", "staticMessageIdMultisigIsmFactory": "0x8b83fefd896fAa52057798f6426E9f0B080FCCcE", @@ -2291,6 +2328,7 @@ "validatorAnnounce": "0x062200d92dF6bB7bA89Ce4D6800110450f94784e" }, "real": { + "aggregationHook": "0x32B06f415955B35d77AF855b9ec77381485D763c", "blockExplorers": [ { "apiUrl": "https://explorer.re.al/api/eth-rpc", @@ -2319,7 +2357,7 @@ "from": 363159 }, "interchainGasPaymaster": "0x3071D4DA6020C956Fe15Bfd0a9Ca8D4574f16696", - "interchainSecurityModule": "0x1455e33232088BeEf545DaF12dFF6CA867FD6787", + "interchainSecurityModule": "0x331A729ad53214eFC66a6529fBAc04E42490ac0C", "mailbox": "0xeA87ae93Fa0019a82A727bfd3eBd1cFCa8f64f1D", "merkleTreeHook": "0x55E4F0bc6b7Bb493D50839A8592e7ad8d5e93cf7", "name": "real", @@ -2331,6 +2369,7 @@ "pausableHook": "0xc965292958794f59ec3e9538738dD252873F07CC", "pausableIsm": "0xB9712fAbFaDb3624Dc12B6b261FEB76F8F8278aE", "protocol": "ethereum", + "protocolFee": "0x59C2dB903937EbE55B59c3415FD55e970FF5f2DC", "proxyAdmin": "0x4Ed7d626f1E96cD1C0401607Bf70D95243E3dEd1", "rpcUrls": [ { @@ -2380,7 +2419,7 @@ "interchainAccountIsm": "0x5DA60220C5dDe35b7aE91c042ff5979047FA0785", "interchainAccountRouter": "0x7a4d31a686A36285d68e14EDD53631417eB19603", "interchainGasPaymaster": "0x2Fa570E83009eaEef3a1cbd496a9a30F05266634", - "interchainSecurityModule": "0x144f19c1162A99e7E366D5688004958445ba0Eab", + "interchainSecurityModule": "0x1c6bc0369a7528D8B0968a9e5e7C599567778350", "mailbox": "0xeA87ae93Fa0019a82A727bfd3eBd1cFCa8f64f1D", "merkleTreeHook": "0x8F1E22d309baa69D398a03cc88E9b46037e988AA", "name": "redstone", @@ -2410,6 +2449,7 @@ "validatorAnnounce": "0x12582c7B0f43c6A667CBaA7fA8b112F7fb1E69F0" }, "sanko": { + "aggregationHook": "0xF6C1769d5390Be0f77080eF7791fBbA7eF4D5659", "blockExplorers": [ { "apiUrl": "https://explorer.sanko.xyz/api/eth-rpc", @@ -2430,6 +2470,7 @@ }, "displayName": "Sanko", "domainId": 1996, + "domainRoutingIsm": "0xaDc0cB48E8DB81855A930C0C1165ea3dCe4Ba5C7", "domainRoutingIsmFactory": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908", "fallbackRoutingHook": "0xd21192429df453021e896f2897Dc8B1167DD61E5", "gasCurrencyCoinGeckoId": "dream-machine-token", @@ -2437,7 +2478,7 @@ "from": 937117 }, "interchainGasPaymaster": "0x9844aFFaBE17c37F791ff99ABa58B0FbB75e22AF", - "interchainSecurityModule": "0x768DDd89D239FB3a48A7774aE6d786D72441D0e0", + "interchainSecurityModule": "0x203B8cEe54c0875d7b3384722636B5Ef4A4D81f7", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0xF5da68b2577EF5C0A0D98aA2a58483a68C2f232a", "name": "sanko", @@ -2447,7 +2488,9 @@ "symbol": "DMT" }, "pausableHook": "0x61594D2cA900C44ab51d07776465397FefC643C6", + "pausableIsm": "0x92cdbF0Ccdf8E93467FA858fb986fa650A02f2A8", "protocol": "ethereum", + "protocolFee": "0xDab56C5A1EffFdd23f6BD1243E457B1575984Bc6", "proxyAdmin": "0x0761b0827849abbf7b0cC09CE14e1C93D87f5004", "rpcUrls": [ { @@ -2455,6 +2498,7 @@ } ], "staticAggregationHookFactory": "0xEb9FcFDC9EfDC17c1EC5E1dc085B98485da213D6", + "staticAggregationIsm": "0x203B8cEe54c0875d7b3384722636B5Ef4A4D81f7", "staticAggregationIsmFactory": "0x8F7454AC98228f3504Bb91eA3D8Adafe6406110A", "staticMerkleRootMultisigIsmFactory": "0x2C1FAbEcd7bFBdEBF27CcdB67baADB38b6Df90fC", "staticMessageIdMultisigIsmFactory": "0x8b83fefd896fAa52057798f6426E9f0B080FCCcE", @@ -2497,7 +2541,7 @@ "interchainAccountIsm": "0x32af5Df81fEd5E26119F6640FBB13f3d63a94CDe", "interchainAccountRouter": "0x0B48a744698ba8dFa514742dFEB6728f52fD66f7", "interchainGasPaymaster": "0xBF12ef4B9f307463D3FB59c3604F294dDCe287E2", - "interchainSecurityModule": "0xA0aB8BeA8F8ce88519EB6E95C38B2155fDE80978", + "interchainSecurityModule": "0x92fd21a745172B48ed0392C4A9f3e08a2Ed2561a", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0x6119E37Bd66406A1Db74920aC79C15fB8411Ba76", "name": "scroll", @@ -2562,7 +2606,7 @@ "interchainAccountIsm": "0xf35dc7B9eE4Ebf0cd3546Bd6EE3b403dE2b9F5D6", "interchainAccountRouter": "0xBcaedE97a98573A88242B3b0CB0A255F3f90d4d5", "interchainGasPaymaster": "0xFC62DeF1f08793aBf0E67f69257c6be258194F72", - "interchainSecurityModule": "0x40e1EacEDdd7105288537Db7B2D148685037566C", + "interchainSecurityModule": "0x01Fd7e91B2118b90f1a2F3d13cfF97E8e655bf5f", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0xca1b69fA4c4a7c7fD839bC50867c589592bcfe49", "name": "sei", @@ -2671,7 +2715,7 @@ "interchainAccountIsm": "0xAE557e108b3336130370aC74836f1356B4b30Cf2", "interchainAccountRouter": "0x1F8CF09F060A2AE962c0Bb1F92e209a1E7b0E10B", "interchainGasPaymaster": "0x273Bc6b01D9E88c064b6E5e409BdF998246AEF42", - "interchainSecurityModule": "0x8162B1E340e7B3DAc27E98a533Fcc75EfEA059F9", + "interchainSecurityModule": "0xfB4d48ffDc8Ca2F05A5B76cC070b51ed58E6cC05", "mailbox": "0x28EFBCadA00A7ed6772b3666F3898d276e88CAe3", "merkleTreeHook": "0x6A55822cf11f9fcBc4c75BC2638AfE8Eb942cAdd", "name": "taiko", @@ -2723,6 +2767,7 @@ }, "displayName": "Tangle", "domainId": 5845, + "domainRoutingIsm": "0xaDc0cB48E8DB81855A930C0C1165ea3dCe4Ba5C7", "domainRoutingIsmFactory": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908", "fallbackRoutingHook": "0xd21192429df453021e896f2897Dc8B1167DD61E5", "gasCurrencyCoinGeckoId": "tangle-network", @@ -2730,7 +2775,7 @@ "from": 1678063 }, "interchainGasPaymaster": "0x9844aFFaBE17c37F791ff99ABa58B0FbB75e22AF", - "interchainSecurityModule": "0x768DDd89D239FB3a48A7774aE6d786D72441D0e0", + "interchainSecurityModule": "0xB0525d808721426c56377469B92db16857384deF", "isTestnet": false, "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0xF5da68b2577EF5C0A0D98aA2a58483a68C2f232a", @@ -2741,6 +2786,7 @@ "symbol": "TNT" }, "pausableHook": "0x61594D2cA900C44ab51d07776465397FefC643C6", + "pausableIsm": "0x5d69BC38eF3eDb491c0b7186BEc4eC45c4013f93", "protocol": "ethereum", "protocolFee": "0x4E55aDA3ef1942049EA43E904EB01F4A0a9c39bd", "proxyAdmin": "0x0761b0827849abbf7b0cC09CE14e1C93D87f5004", @@ -2750,6 +2796,7 @@ } ], "staticAggregationHookFactory": "0xEb9FcFDC9EfDC17c1EC5E1dc085B98485da213D6", + "staticAggregationIsm": "0xB0525d808721426c56377469B92db16857384deF", "staticAggregationIsmFactory": "0x8F7454AC98228f3504Bb91eA3D8Adafe6406110A", "staticMerkleRootMultisigIsmFactory": "0x2C1FAbEcd7bFBdEBF27CcdB67baADB38b6Df90fC", "staticMessageIdMultisigIsmFactory": "0x8b83fefd896fAa52057798f6426E9f0B080FCCcE", @@ -2790,7 +2837,7 @@ "interchainAccountIsm": "0x551BbEc45FD665a8C95ca8731CbC32b7653Bc59B", "interchainAccountRouter": "0xc11f8Cf2343d3788405582F65B8af6A4F7a6FfC8", "interchainGasPaymaster": "0x0D63128D887159d63De29497dfa45AFc7C699AE4", - "interchainSecurityModule": "0xb867cD0B7C3B1A3cE6fBBcb165D43Cb273bb26fE", + "interchainSecurityModule": "0xAeAd5b4Ab9dA529452C7fe7b0f39902Ff4345772", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0x149db7afD694722747035d5AEC7007ccb6F8f112", "name": "viction", @@ -2855,7 +2902,7 @@ "interchainAccountIsm": "0xCB9f90EE5d83Ea52ABd922BD70898f0155D54798", "interchainAccountRouter": "0x473884010F0C1742DA8Ad01E7E295624B931076b", "interchainGasPaymaster": "0x7E27456a839BFF31CA642c060a2b68414Cb6e503", - "interchainSecurityModule": "0xD3bd8f20e169364d14c7dBFE698258D780FC71e3", + "interchainSecurityModule": "0x6455CbF559E2227aA23409930D0F860e2f244B70", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0x0054D19613f20dD72721A146ED408971a2CCA9BD", "name": "worldchain", @@ -2885,6 +2932,7 @@ "validatorAnnounce": "0x047ba6c9949baB22d13C347B40819b7A20C4C53a" }, "xai": { + "aggregationHook": "0xF6C1769d5390Be0f77080eF7791fBbA7eF4D5659", "blockExplorers": [ { "apiUrl": "https://explorer.xai-chain.net/api", @@ -2913,7 +2961,7 @@ "from": 24395308 }, "interchainGasPaymaster": "0x9844aFFaBE17c37F791ff99ABa58B0FbB75e22AF", - "interchainSecurityModule": "0x5F3C25e6AfDC6953fF1c7a661963D5a54E239A8D", + "interchainSecurityModule": "0xd3A6fD5338656353D48693B797b6EcEFC5d3D317", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0xF5da68b2577EF5C0A0D98aA2a58483a68C2f232a", "name": "xai", @@ -2925,6 +2973,7 @@ "pausableHook": "0x61594D2cA900C44ab51d07776465397FefC643C6", "pausableIsm": "0xbB22547D1dc681fe925f568f637Ff67aC06c20fc", "protocol": "ethereum", + "protocolFee": "0xe8d5590F2e969F9d21f0132f2b596273f8a03Ef2", "proxyAdmin": "0x0761b0827849abbf7b0cC09CE14e1C93D87f5004", "rpcUrls": [ { @@ -2975,7 +3024,7 @@ "interchainAccountIsm": "0x29B37088724B745C0ABcE591449Cf042772160C2", "interchainAccountRouter": "0x03cF708E42C89623bd83B281A56935cB562b9258", "interchainGasPaymaster": "0x7E27456a839BFF31CA642c060a2b68414Cb6e503", - "interchainSecurityModule": "0xD3bd8f20e169364d14c7dBFE698258D780FC71e3", + "interchainSecurityModule": "0x4fc18464D39118b2B6F93c304AfF84336368a60E", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0x0054D19613f20dD72721A146ED408971a2CCA9BD", "name": "xlayer", @@ -3040,7 +3089,7 @@ "interchainAccountIsm": "0x2b6d3F7d28B5EC8C3C028fBCAdcf774D9709Dd29", "interchainAccountRouter": "0x3AdCBc94ab8C48EC52D06dc65Bb787fD1981E3d5", "interchainGasPaymaster": "0x931dFCc8c1141D6F532FD023bd87DAe0080c835d", - "interchainSecurityModule": "0xcd886efC3a5b1599d1eAD60F6dD74b3BffB5410D", + "interchainSecurityModule": "0x4FdFC989d10273A01073111f447e19aCF2a04A0c", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "merkleTreeHook": "0xE2ee936bEa8e42671c400aC96dE198E06F2bA2A6", "name": "zetachain", @@ -3103,7 +3152,7 @@ "from": 1511458 }, "interchainGasPaymaster": "0x03cF708E42C89623bd83B281A56935cB562b9258", - "interchainSecurityModule": "0x0f58B192d64DAe7389502b1c3F4a8A0ddBeEC488", + "interchainSecurityModule": "0x636bB3fCa3B74B942bA8C258c44109384B252979", "mailbox": "0xc2FbB9411186AB3b1a6AFCCA702D1a80B48b197c", "merkleTreeHook": "0x4C97D35c668EE5194a13c8DE8Afc18cce40C9F28", "name": "zircuit", @@ -3167,7 +3216,7 @@ "interchainAccountIsm": "0xb2674E213019972f937CCFc5e23BF963D915809e", "interchainAccountRouter": "0x11b76D93a9D39Eb51F54eBf5566308640cDe882b", "interchainGasPaymaster": "0x18B0688990720103dB63559a3563f7E8d0f63EDb", - "interchainSecurityModule": "0x19665b36916A5048E969386044fA4AEeB55d6744", + "interchainSecurityModule": "0xFAc2723298549ECC6FC631d13048d2B65930fd13", "mailbox": "0xF5da68b2577EF5C0A0D98aA2a58483a68C2f232a", "merkleTreeHook": "0x886BB0f329781b98f98FDeb1ce7a8957F2d43B9F", "name": "zoramainnet", diff --git a/typescript/infra/config/environments/mainnet3/core/verification.json b/typescript/infra/config/environments/mainnet3/core/verification.json index 346f84ae1..e1084b5b2 100644 --- a/typescript/infra/config/environments/mainnet3/core/verification.json +++ b/typescript/infra/config/environments/mainnet3/core/verification.json @@ -2307,6 +2307,12 @@ "constructorArguments": "000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba", "isProxy": false, "name": "PausableIsm" + }, + { + "address": "0x089DdA086dCbfA0C2cCa69B45F2eB6DE7Fd71F38", + "constructorArguments": "000000000000000000000000000000000000000000000000000000003b9aca000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba", + "isProxy": false, + "name": "ProtocolFee" } ], "degenchain": [ @@ -2371,6 +2377,24 @@ "constructorArguments": "000000000000000000000000000000000000000000000000000000003b9aca000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba", "isProxy": false, "name": "ProtocolFee" + }, + { + "address": "0x92cdbF0Ccdf8E93467FA858fb986fa650A02f2A8", + "constructorArguments": "000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba", + "isProxy": false, + "name": "PausableIsm" + }, + { + "address": "0x089DdA086dCbfA0C2cCa69B45F2eB6DE7Fd71F38", + "constructorArguments": "000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba", + "isProxy": false, + "name": "PausableIsm" + }, + { + "address": "0x089DdA086dCbfA0C2cCa69B45F2eB6DE7Fd71F38", + "constructorArguments": "000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba", + "isProxy": false, + "name": "PausableIsm" } ], "endurance": [ @@ -3916,6 +3940,30 @@ "expectedimplementation": "0x4Ed7d626f1E96cD1C0401607Bf70D95243E3dEd1", "isProxy": true, "name": "TransparentUpgradeableProxy" + }, + { + "address": "0xF15D70941dE2Bf95A23d6488eBCbedE0a444137f", + "constructorArguments": "000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba", + "isProxy": false, + "name": "PausableIsm" + }, + { + "address": "0x662771d29DFf0d7C36bB9BB6d4241a02e77585d9", + "constructorArguments": "000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba", + "isProxy": false, + "name": "PausableIsm" + }, + { + "address": "0x662771d29DFf0d7C36bB9BB6d4241a02e77585d9", + "constructorArguments": "000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba", + "isProxy": false, + "name": "PausableIsm" + }, + { + "address": "0x9c44E6b8F0dB517C2c3a0478caaC5349b614F912", + "constructorArguments": "000000000000000000000000000000000000000000000000000000003b9aca000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba", + "isProxy": false, + "name": "ProtocolFee" } ], "linea": [ @@ -4858,6 +4906,24 @@ "constructorArguments": "000000000000000000000000000000000000000000000000000000003b9aca000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba", "isProxy": false, "name": "ProtocolFee" + }, + { + "address": "0x92cdbF0Ccdf8E93467FA858fb986fa650A02f2A8", + "constructorArguments": "000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba", + "isProxy": false, + "name": "PausableIsm" + }, + { + "address": "0x53e912b41125d6094590a7DBEf1360d3d56EEa19", + "constructorArguments": "000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba", + "isProxy": false, + "name": "PausableIsm" + }, + { + "address": "0x53e912b41125d6094590a7DBEf1360d3d56EEa19", + "constructorArguments": "000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba", + "isProxy": false, + "name": "PausableIsm" } ], "lukso": [ @@ -5115,6 +5181,12 @@ "constructorArguments": "000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba", "isProxy": false, "name": "PausableIsm" + }, + { + "address": "0xb4fc9B5fD57499Ef6FfF3995728a55F7A618ef86", + "constructorArguments": "000000000000000000000000000000000000000000000000000000003b9aca000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba", + "isProxy": false, + "name": "ProtocolFee" } ], "metis": [ @@ -5179,6 +5251,24 @@ "constructorArguments": "000000000000000000000000000000000000000000000000000000003b9aca000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba", "isProxy": false, "name": "ProtocolFee" + }, + { + "address": "0xD7EcB0396406682a27E87F7946c25Ac531140959", + "constructorArguments": "000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba", + "isProxy": false, + "name": "PausableIsm" + }, + { + "address": "0xDab56C5A1EffFdd23f6BD1243E457B1575984Bc6", + "constructorArguments": "000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba", + "isProxy": false, + "name": "PausableIsm" + }, + { + "address": "0xDab56C5A1EffFdd23f6BD1243E457B1575984Bc6", + "constructorArguments": "000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba", + "isProxy": false, + "name": "PausableIsm" } ], "mint": [ @@ -5200,6 +5290,36 @@ "expectedimplementation": "0x4Ed7d626f1E96cD1C0401607Bf70D95243E3dEd1", "isProxy": true, "name": "TransparentUpgradeableProxy" + }, + { + "address": "0xcd9D3744512F07AE844c40E27912092d7c503565", + "constructorArguments": "000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba", + "isProxy": false, + "name": "PausableIsm" + }, + { + "address": "0xDab56C5A1EffFdd23f6BD1243E457B1575984Bc6", + "constructorArguments": "000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba", + "isProxy": false, + "name": "PausableIsm" + }, + { + "address": "0x53e912b41125d6094590a7DBEf1360d3d56EEa19", + "constructorArguments": "000000000000000000000000000000000000000000000000000000003b9aca000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba", + "isProxy": false, + "name": "ProtocolFee" + }, + { + "address": "0xDab56C5A1EffFdd23f6BD1243E457B1575984Bc6", + "constructorArguments": "000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba", + "isProxy": false, + "name": "PausableIsm" + }, + { + "address": "0x53e912b41125d6094590a7DBEf1360d3d56EEa19", + "constructorArguments": "000000000000000000000000000000000000000000000000000000003b9aca000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba", + "isProxy": false, + "name": "ProtocolFee" } ], "mode": [ @@ -6605,6 +6725,42 @@ "expectedimplementation": "0x4Ed7d626f1E96cD1C0401607Bf70D95243E3dEd1", "isProxy": true, "name": "TransparentUpgradeableProxy" + }, + { + "address": "0xC88bAD76EC7acD9fd3b9Bb264f7f5C18097c5710", + "constructorArguments": "000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba", + "isProxy": false, + "name": "PausableIsm" + }, + { + "address": "0x92cdbF0Ccdf8E93467FA858fb986fa650A02f2A8", + "constructorArguments": "000000000000000000000000000000000000000000000000000000003b9aca000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba", + "isProxy": false, + "name": "ProtocolFee" + }, + { + "address": "0x5d69BC38eF3eDb491c0b7186BEc4eC45c4013f93", + "constructorArguments": "000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba", + "isProxy": false, + "name": "PausableIsm" + }, + { + "address": "0x73db9c7430548f399e335f3424e8d56080e9010c", + "constructorArguments": "000000000000000000000000000000000000000000000000000000003b9aca000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba", + "isProxy": false, + "name": "ProtocolFee" + }, + { + "address": "0x5d69BC38eF3eDb491c0b7186BEc4eC45c4013f93", + "constructorArguments": "000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba", + "isProxy": false, + "name": "PausableIsm" + }, + { + "address": "0x73db9c7430548f399e335f3424e8d56080e9010c", + "constructorArguments": "000000000000000000000000000000000000000000000000000000003b9aca000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba", + "isProxy": false, + "name": "ProtocolFee" } ], "real": [ @@ -6632,6 +6788,12 @@ "constructorArguments": "000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba", "isProxy": false, "name": "PausableIsm" + }, + { + "address": "0x59C2dB903937EbE55B59c3415FD55e970FF5f2DC", + "constructorArguments": "000000000000000000000000000000000000000000000000000000003b9aca000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba", + "isProxy": false, + "name": "ProtocolFee" } ], "redstone": [ @@ -7417,6 +7579,30 @@ "expectedimplementation": "0x4Ed7d626f1E96cD1C0401607Bf70D95243E3dEd1", "isProxy": true, "name": "TransparentUpgradeableProxy" + }, + { + "address": "0xC88bAD76EC7acD9fd3b9Bb264f7f5C18097c5710", + "constructorArguments": "000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba", + "isProxy": false, + "name": "PausableIsm" + }, + { + "address": "0x92cdbF0Ccdf8E93467FA858fb986fa650A02f2A8", + "constructorArguments": "000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba", + "isProxy": false, + "name": "PausableIsm" + }, + { + "address": "0x92cdbF0Ccdf8E93467FA858fb986fa650A02f2A8", + "constructorArguments": "000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba", + "isProxy": false, + "name": "PausableIsm" + }, + { + "address": "0xDab56C5A1EffFdd23f6BD1243E457B1575984Bc6", + "constructorArguments": "000000000000000000000000000000000000000000000000000000003b9aca000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba", + "isProxy": false, + "name": "ProtocolFee" } ], "scroll": [ @@ -8579,6 +8765,24 @@ "constructorArguments": "000000000000000000000000000000000000000000000000000000003b9aca000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba", "isProxy": false, "name": "ProtocolFee" + }, + { + "address": "0xF15D70941dE2Bf95A23d6488eBCbedE0a444137f", + "constructorArguments": "000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba", + "isProxy": false, + "name": "PausableIsm" + }, + { + "address": "0x5d69BC38eF3eDb491c0b7186BEc4eC45c4013f93", + "constructorArguments": "000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba", + "isProxy": false, + "name": "PausableIsm" + }, + { + "address": "0x5d69BC38eF3eDb491c0b7186BEc4eC45c4013f93", + "constructorArguments": "000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba", + "isProxy": false, + "name": "PausableIsm" } ], "viction": [ @@ -8967,6 +9171,12 @@ "constructorArguments": "000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba", "isProxy": false, "name": "PausableIsm" + }, + { + "address": "0xe8d5590F2e969F9d21f0132f2b596273f8a03Ef2", + "constructorArguments": "000000000000000000000000000000000000000000000000000000003b9aca000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba", + "isProxy": false, + "name": "ProtocolFee" } ], "xlayer": [ diff --git a/typescript/infra/scripts/check-deploy.ts b/typescript/infra/scripts/check-deploy.ts index 7c425eb77..a1f29ae52 100644 --- a/typescript/infra/scripts/check-deploy.ts +++ b/typescript/infra/scripts/check-deploy.ts @@ -106,6 +106,7 @@ async function check() { core, envConfig.core, ismFactory, + chainAddresses, ); governor = new HyperlaneCoreGovernor(checker, ica); } else if (module === Modules.INTERCHAIN_GAS_PAYMASTER) { diff --git a/typescript/infra/src/config/gas-oracle.ts b/typescript/infra/src/config/gas-oracle.ts index 2c3748e7a..acc232c5a 100644 --- a/typescript/infra/src/config/gas-oracle.ts +++ b/typescript/infra/src/config/gas-oracle.ts @@ -239,11 +239,13 @@ export async function getCosmosChainGasPrice( const nativeToken = mustGetChainNativeToken(chain); - const fee = cosmosRegistryChain.fees?.fee_tokens.find((fee) => { - return ( - fee.denom === nativeToken.denom || fee.denom === `u${nativeToken.denom}` - ); - }); + const fee = cosmosRegistryChain.fees?.fee_tokens.find( + (fee: { denom: string }) => { + return ( + fee.denom === nativeToken.denom || fee.denom === `u${nativeToken.denom}` + ); + }, + ); if (!fee || fee.average_gas_price === undefined) { throw new Error(`No gas price found for Cosmos chain ${chain}`); } diff --git a/typescript/sdk/src/consts/multisigIsm.ts b/typescript/sdk/src/consts/multisigIsm.ts index e50ef7155..400a00f0b 100644 --- a/typescript/sdk/src/consts/multisigIsm.ts +++ b/typescript/sdk/src/consts/multisigIsm.ts @@ -518,8 +518,13 @@ export const defaultMultisigConfigs: ChainMap = { }, zircuit: { - threshold: 1, - validators: ['0x169ec400cc758fef3df6a0d6c51fbc6cdd1015bb'], + threshold: 3, + validators: [ + '0x169ec400cc758fef3df6a0d6c51fbc6cdd1015bb', + '0x7aC6584c068eb2A72d4Db82A7B7cd5AB34044061', // luganodes + '0x0180444c9342BD672867Df1432eb3dA354413a6E', // hashkey cloud + '0x1da9176C2CE5cC7115340496fa7D1800a98911CE', // renzo + ], }, zoramainnet: { diff --git a/typescript/sdk/src/core/CoreDeployer.hardhat-test.ts b/typescript/sdk/src/core/CoreDeployer.hardhat-test.ts index 2664d0ee2..525ca4acd 100644 --- a/typescript/sdk/src/core/CoreDeployer.hardhat-test.ts +++ b/typescript/sdk/src/core/CoreDeployer.hardhat-test.ts @@ -265,6 +265,7 @@ describe('core', async () => { core, coreConfig, ismFactory, + {}, ); await checker.check(); }); diff --git a/typescript/sdk/src/core/HyperlaneCoreChecker.ts b/typescript/sdk/src/core/HyperlaneCoreChecker.ts index 66c4bd004..49aa2ccb2 100644 --- a/typescript/sdk/src/core/HyperlaneCoreChecker.ts +++ b/typescript/sdk/src/core/HyperlaneCoreChecker.ts @@ -29,6 +29,7 @@ export class HyperlaneCoreChecker extends HyperlaneAppChecker< app: HyperlaneCore, configMap: ChainMap, readonly ismFactory: HyperlaneIsmFactory, + readonly chainAddresses: ChainMap>, ) { super(multiProvider, app, configMap); } @@ -78,22 +79,53 @@ export class HyperlaneCoreChecker extends HyperlaneAppChecker< ); if (!matches) { - const ismReader = new EvmIsmReader(this.ismFactory.multiProvider, chain); - let actualConfig: string | DerivedIsmConfig = - ethers.constants.AddressZero; - if (actualIsmAddress !== ethers.constants.AddressZero) { - actualConfig = await ismReader.deriveIsmConfig(actualIsmAddress); - } - - const violation: MailboxViolation = { - type: CoreViolationType.Mailbox, - subType: MailboxViolationType.DefaultIsm, - contract: mailbox, + const registryIsmAddress = + this.chainAddresses[chain].interchainSecurityModule; + const registryIsmMatches = await moduleMatchesConfig( chain, - actual: actualConfig, - expected: config.defaultIsm, - }; - this.addViolation(violation); + registryIsmAddress, + config.defaultIsm, + this.ismFactory.multiProvider, + this.ismFactory.getContracts(chain), + ); + + if (registryIsmMatches) { + // if the ISM in registry matches the expected config, then we can assume + // that the mailbox should be using that ISM instead of the current one + // and we should report just an address violation + const violation: MailboxViolation = { + type: CoreViolationType.Mailbox, + subType: MailboxViolationType.DefaultIsm, + contract: mailbox, + chain, + actual: actualIsmAddress, + expected: registryIsmAddress, + }; + this.addViolation(violation); + } else { + const ismReader = new EvmIsmReader( + this.ismFactory.multiProvider, + chain, + ); + let actualConfig: string | DerivedIsmConfig = + ethers.constants.AddressZero; + if (actualIsmAddress !== ethers.constants.AddressZero) { + actualConfig = await ismReader.deriveIsmConfig(actualIsmAddress); + } + + // If the config doesn't match either onchain or the registry + // then we have a full config violation, which the governor will need to + // fix by deploying a new ISM + const violation: MailboxViolation = { + type: CoreViolationType.Mailbox, + subType: MailboxViolationType.DefaultIsm, + contract: mailbox, + chain, + actual: actualConfig, + expected: config.defaultIsm, + }; + this.addViolation(violation); + } } } diff --git a/typescript/sdk/src/utils/cosmos.ts b/typescript/sdk/src/utils/cosmos.ts index 3e6ed196c..30e9bcb00 100644 --- a/typescript/sdk/src/utils/cosmos.ts +++ b/typescript/sdk/src/utils/cosmos.ts @@ -7,47 +7,91 @@ export const CosmosChainSchema = z $schema: z .string() .regex(new RegExp('^(\\.\\./)+chain\\.schema\\.json$')) + .min(1) .optional(), - chain_name: z.string().regex(new RegExp('[a-z0-9]+')), - chain_type: z.string().regex(new RegExp('[a-z0-9]+')), - chain_id: z.string(), - pre_fork_chain_name: z.string().regex(new RegExp('[a-z0-9]+')).optional(), - pretty_name: z.string().optional(), - website: z.string().url().optional(), - update_link: z.string().url().optional(), + chain_name: z.string().regex(new RegExp('[a-z0-9]+')).min(1), + chain_type: z + .enum([ + 'cosmos', + 'eip155', + 'bip122', + 'polkadot', + 'solana', + 'algorand', + 'arweave', + 'ergo', + 'fil', + 'hedera', + 'monero', + 'reef', + 'stacks', + 'starknet', + 'stellar', + 'tezos', + 'vechain', + 'waves', + 'xrpl', + 'unknown', + ]) + .describe( + "The 'type' of chain as the corresponding CAIP-2 Namespace value. E.G., 'cosmos' or 'eip155'. Namespaces can be found here: https://github.com/ChainAgnostic/namespaces/tree/main.", + ), + chain_id: z.string().min(1).optional(), + pre_fork_chain_name: z + .string() + .regex(new RegExp('[a-z0-9]+')) + .min(1) + .optional(), + pretty_name: z.string().min(1).optional(), + website: z.string().url().min(1).optional(), + update_link: z.string().url().min(1).optional(), status: z.enum(['live', 'upcoming', 'killed']).optional(), network_type: z.enum(['mainnet', 'testnet', 'devnet']).optional(), bech32_prefix: z .string() + .min(1) .describe( "The default prefix for the human-readable part of addresses that identifies the coin type. Must be registered with SLIP-0173. E.g., 'cosmos'", - ), + ) + .optional(), bech32_config: z .object({ - bech32PrefixAccAddr: z.string().describe("e.g., 'cosmos'").optional(), - bech32PrefixAccPub: z.string().describe("e.g., 'cosmospub'").optional(), + bech32PrefixAccAddr: z + .string() + .min(1) + .describe("e.g., 'cosmos'") + .optional(), + bech32PrefixAccPub: z + .string() + .min(1) + .describe("e.g., 'cosmospub'") + .optional(), bech32PrefixValAddr: z .string() + .min(1) .describe("e.g., 'cosmosvaloper'") .optional(), bech32PrefixValPub: z .string() + .min(1) .describe("e.g., 'cosmosvaloperpub'") .optional(), bech32PrefixConsAddr: z .string() + .min(1) .describe("e.g., 'cosmosvalcons'") .optional(), bech32PrefixConsPub: z .string() + .min(1) .describe("e.g., 'cosmosvalconspub'") .optional(), }) .strict() .describe('Used to override the bech32_prefix for specific uses.') .optional(), - daemon_name: z.string().optional(), - node_home: z.string().optional(), + daemon_name: z.string().min(1).optional(), + node_home: z.string().min(1).optional(), key_algos: z .array( z.enum(['secp256k1', 'ethsecp256k1', 'ed25519', 'sr25519', 'bn254']), @@ -60,7 +104,7 @@ export const CosmosChainSchema = z fee_tokens: z.array( z .object({ - denom: z.string(), + denom: z.string().min(1), fixed_min_gas_price: z.number().optional(), low_gas_price: z.number().optional(), average_gas_price: z.number().optional(), @@ -80,7 +124,9 @@ export const CosmosChainSchema = z .optional(), staking: z .object({ - staking_tokens: z.array(z.object({ denom: z.string() }).strict()), + staking_tokens: z.array( + z.object({ denom: z.string().min(1) }).strict(), + ), lock_duration: z .object({ blocks: z @@ -91,6 +137,7 @@ export const CosmosChainSchema = z .optional(), time: z .string() + .min(1) .describe( 'The approximate time for which the staked tokens are locked.', ) @@ -103,43 +150,142 @@ export const CosmosChainSchema = z .optional(), codebase: z .object({ - git_repo: z.string().url().optional(), - recommended_version: z.string().optional(), + git_repo: z.string().url().min(1).optional(), + recommended_version: z.string().min(1).optional(), + compatible_versions: z.array(z.string().min(1)).optional(), go_version: z .string() .regex(new RegExp('^[0-9]+\\.[0-9]+(\\.[0-9]+)?$')) + .min(1) .describe('Minimum accepted go version to build the binary.') .optional(), - compatible_versions: z.array(z.string()).optional(), + language: z + .object({ + type: z.enum(['go', 'rust', 'solidity', 'other']), + version: z + .string() + .min(1) + .describe("Simple version string (e.g., 'v1.0.0').") + .optional(), + repo: z + .string() + .url() + .min(1) + .describe('URL of the code repository.') + .optional(), + tag: z + .string() + .min(1) + .describe( + "Detailed version identifier (e.g., 'v1.0.0-a1s2f43g').", + ) + .optional(), + }) + .strict() + .optional(), binaries: z .object({ - 'linux/amd64': z.string().url().optional(), - 'linux/arm64': z.string().url().optional(), - 'darwin/amd64': z.string().url().optional(), - 'darwin/arm64': z.string().url().optional(), - 'windows/amd64': z.string().url().optional(), - 'windows/arm64': z.string().url().optional(), + 'linux/amd64': z.string().url().min(1).optional(), + 'linux/arm64': z.string().url().min(1).optional(), + 'darwin/amd64': z.string().url().min(1).optional(), + 'darwin/arm64': z.string().url().min(1).optional(), + 'windows/amd64': z.string().url().min(1).optional(), + 'windows/arm64': z.string().url().min(1).optional(), + }) + .strict() + .optional(), + cosmos_sdk_version: z.string().min(1).optional(), + sdk: z + .object({ + type: z.enum(['cosmos', 'penumbra', 'other']), + version: z + .string() + .min(1) + .describe("Simple version string (e.g., 'v1.0.0').") + .optional(), + repo: z + .string() + .url() + .min(1) + .describe('URL of the code repository.') + .optional(), + tag: z + .string() + .min(1) + .describe( + "Detailed version identifier (e.g., 'v1.0.0-a1s2f43g').", + ) + .optional(), }) .strict() .optional(), - cosmos_sdk_version: z.string().optional(), consensus: z .object({ type: z.enum(['tendermint', 'cometbft', 'sei-tendermint']), - version: z.string().optional(), + version: z + .string() + .min(1) + .describe("Simple version string (e.g., 'v1.0.0').") + .optional(), + repo: z + .string() + .url() + .min(1) + .describe('URL of the code repository.') + .optional(), + tag: z + .string() + .min(1) + .describe( + "Detailed version identifier (e.g., 'v1.0.0-a1s2f43g').", + ) + .optional(), }) .strict() .optional(), - cosmwasm_version: z.string().optional(), + cosmwasm_version: z.string().min(1).optional(), cosmwasm_enabled: z.boolean().optional(), cosmwasm_path: z .string() .regex(new RegExp('^\\$HOME.*$')) + .min(1) .describe( 'Relative path to the cosmwasm directory. ex. $HOME/.juno/data/wasm', ) .optional(), - ibc_go_version: z.string().optional(), + cosmwasm: z + .object({ + version: z + .string() + .min(1) + .describe("Simple version string (e.g., 'v1.0.0').") + .optional(), + repo: z + .string() + .url() + .min(1) + .describe('URL of the code repository.') + .optional(), + tag: z + .string() + .min(1) + .describe( + "Detailed version identifier (e.g., 'v1.0.0-a1s2f43g').", + ) + .optional(), + enabled: z.boolean().optional(), + path: z + .string() + .regex(new RegExp('^\\$HOME.*$')) + .min(1) + .describe( + 'Relative path to the cosmwasm directory. ex. $HOME/.juno/data/wasm', + ) + .optional(), + }) + .strict() + .optional(), + ibc_go_version: z.string().min(1).optional(), ics_enabled: z .array( z @@ -150,11 +296,45 @@ export const CosmosChainSchema = z 'List of IBC apps (usually corresponding to a ICS standard) which have been enabled on the network.', ) .optional(), + ibc: z + .object({ + type: z.enum(['go', 'rust', 'other']), + version: z + .string() + .min(1) + .describe("Simple version string (e.g., 'v1.0.0').") + .optional(), + repo: z + .string() + .url() + .min(1) + .describe('URL of the code repository.') + .optional(), + tag: z + .string() + .min(1) + .describe( + "Detailed version identifier (e.g., 'v1.0.0-a1s2f43g').", + ) + .optional(), + ics_enabled: z + .array( + z + .enum(['ics20-1', 'ics27-1', 'mauth']) + .describe('IBC app or ICS standard.'), + ) + .describe( + 'List of IBC apps (usually corresponding to a ICS standard) which have been enabled on the network.', + ) + .optional(), + }) + .strict() + .optional(), genesis: z .object({ - name: z.string().optional(), - genesis_url: z.string().url(), - ics_ccv_url: z.string().url().optional(), + name: z.string().min(1).optional(), + genesis_url: z.string().url().min(1), + ics_ccv_url: z.string().url().min(1).optional(), }) .strict() .optional(), @@ -162,8 +342,8 @@ export const CosmosChainSchema = z .array( z .object({ - name: z.string().describe('Official Upgrade Name'), - tag: z.string().describe('Git Upgrade Tag').optional(), + name: z.string().min(1).describe('Official Upgrade Name'), + tag: z.string().min(1).describe('Git Upgrade Tag').optional(), height: z.number().describe('Block Height').optional(), proposal: z .number() @@ -173,37 +353,138 @@ export const CosmosChainSchema = z .optional(), previous_version_name: z .string() + .min(1) .describe('[Optional] Name of the previous version') .optional(), next_version_name: z .string() + .min(0) .describe('[Optional] Name of the following version') .optional(), - recommended_version: z.string().optional(), + recommended_version: z.string().min(1).optional(), + compatible_versions: z.array(z.string().min(1)).optional(), go_version: z .string() .regex(new RegExp('^[0-9]+\\.[0-9]+(\\.[0-9]+)?$')) + .min(1) .describe('Minimum accepted go version to build the binary.') .optional(), - compatible_versions: z.array(z.string()).optional(), - cosmos_sdk_version: z.string().optional(), + language: z + .object({ + type: z.enum(['go', 'rust', 'solidity', 'other']), + version: z + .string() + .min(1) + .describe("Simple version string (e.g., 'v1.0.0').") + .optional(), + repo: z + .string() + .url() + .min(1) + .describe('URL of the code repository.') + .optional(), + tag: z + .string() + .min(1) + .describe( + "Detailed version identifier (e.g., 'v1.0.0-a1s2f43g').", + ) + .optional(), + }) + .strict() + .optional(), + cosmos_sdk_version: z.string().min(1).optional(), + sdk: z + .object({ + type: z.enum(['cosmos', 'penumbra', 'other']), + version: z + .string() + .min(1) + .describe("Simple version string (e.g., 'v1.0.0').") + .optional(), + repo: z + .string() + .url() + .min(1) + .describe('URL of the code repository.') + .optional(), + tag: z + .string() + .min(1) + .describe( + "Detailed version identifier (e.g., 'v1.0.0-a1s2f43g').", + ) + .optional(), + }) + .strict() + .optional(), consensus: z .object({ type: z.enum(['tendermint', 'cometbft', 'sei-tendermint']), - version: z.string().optional(), + version: z + .string() + .min(1) + .describe("Simple version string (e.g., 'v1.0.0').") + .optional(), + repo: z + .string() + .url() + .min(1) + .describe('URL of the code repository.') + .optional(), + tag: z + .string() + .min(1) + .describe( + "Detailed version identifier (e.g., 'v1.0.0-a1s2f43g').", + ) + .optional(), }) .strict() .optional(), - cosmwasm_version: z.string().optional(), + cosmwasm_version: z.string().min(1).optional(), cosmwasm_enabled: z.boolean().optional(), cosmwasm_path: z .string() .regex(new RegExp('^\\$HOME.*$')) + .min(1) .describe( 'Relative path to the cosmwasm directory. ex. $HOME/.juno/data/wasm', ) .optional(), - ibc_go_version: z.string().optional(), + cosmwasm: z + .object({ + version: z + .string() + .min(1) + .describe("Simple version string (e.g., 'v1.0.0').") + .optional(), + repo: z + .string() + .url() + .min(1) + .describe('URL of the code repository.') + .optional(), + tag: z + .string() + .min(1) + .describe( + "Detailed version identifier (e.g., 'v1.0.0-a1s2f43g').", + ) + .optional(), + enabled: z.boolean().optional(), + path: z + .string() + .regex(new RegExp('^\\$HOME.*$')) + .min(1) + .describe( + 'Relative path to the cosmwasm directory. ex. $HOME/.juno/data/wasm', + ) + .optional(), + }) + .strict() + .optional(), + ibc_go_version: z.string().min(1).optional(), ics_enabled: z .array( z @@ -214,14 +495,48 @@ export const CosmosChainSchema = z 'List of IBC apps (usually corresponding to a ICS standard) which have been enabled on the network.', ) .optional(), + ibc: z + .object({ + type: z.enum(['go', 'rust', 'other']), + version: z + .string() + .min(1) + .describe("Simple version string (e.g., 'v1.0.0').") + .optional(), + repo: z + .string() + .url() + .min(1) + .describe('URL of the code repository.') + .optional(), + tag: z + .string() + .min(1) + .describe( + "Detailed version identifier (e.g., 'v1.0.0-a1s2f43g').", + ) + .optional(), + ics_enabled: z + .array( + z + .enum(['ics20-1', 'ics27-1', 'mauth']) + .describe('IBC app or ICS standard.'), + ) + .describe( + 'List of IBC apps (usually corresponding to a ICS standard) which have been enabled on the network.', + ) + .optional(), + }) + .strict() + .optional(), binaries: z .object({ - 'linux/amd64': z.string().url().optional(), - 'linux/arm64': z.string().url().optional(), - 'darwin/amd64': z.string().url().optional(), - 'darwin/arm64': z.string().url().optional(), - 'windows/amd64': z.string().url().optional(), - 'windows/arm64': z.string().url().optional(), + 'linux/amd64': z.string().url().min(1).optional(), + 'linux/arm64': z.string().url().min(1).optional(), + 'darwin/amd64': z.string().url().min(1).optional(), + 'darwin/arm64': z.string().url().min(1).optional(), + 'windows/amd64': z.string().url().min(1).optional(), + 'windows/arm64': z.string().url().min(1).optional(), }) .strict() .optional(), @@ -240,11 +555,13 @@ export const CosmosChainSchema = z .object({ chain_name: z .string() + .min(1) .describe( "The chain name or platform from which the object resides. E.g., 'cosmoshub', 'ethereum', 'forex', or 'nasdaq'", ), base_denom: z .string() + .min(1) .describe( "The base denom of the asset from which the object originates. E.g., when describing ATOM from Cosmos Hub, specify 'uatom', NOT 'atom' nor 'ATOM'; base units are unique per platform.", ) @@ -262,6 +579,7 @@ export const CosmosChainSchema = z '^https://raw\\.githubusercontent\\.com/cosmos/chain-registry/master/(|testnets/|_non-cosmos/)[a-z0-9]+/images/.+\\.png$', ), ) + .min(1) .optional(), svg: z .string() @@ -270,38 +588,28 @@ export const CosmosChainSchema = z '^https://raw\\.githubusercontent\\.com/cosmos/chain-registry/master/(|testnets/|_non-cosmos/)[a-z0-9]+/images/.+\\.svg$', ), ) + .min(1) .optional(), theme: z .object({ primary_color_hex: z .string() - .min(1) .regex(new RegExp('^#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})$')) + .min(1) .optional(), background_color_hex: z .string() - .min(1) .regex( new RegExp('^(#([0-9a-fA-F]{6}|[0-9a-fA-F]{8})|none)$'), ) + .min(1) .optional(), circle: z.boolean().optional(), dark_mode: z.boolean().optional(), + monochrome: z.boolean().optional(), }) .strict() .optional(), - layout: z - .enum(['logo', 'logomark', 'logotype']) - .describe( - 'logomark == icon only; logotype == text only; logo == icon + text.', - ) - .optional(), - text_position: z - .enum(['top', 'bottom', 'left', 'right', 'integrated']) - .describe( - "Indicates in which position the text is placed, in case the layout is 'icon' type, it's required only in this case.", - ) - .optional(), }) .strict() .and(z.union([z.any(), z.any()])), @@ -316,6 +624,7 @@ export const CosmosChainSchema = z '^https://raw\\.githubusercontent\\.com/cosmos/chain-registry/master/(|testnets/|_non-cosmos/)[a-z0-9]+/images/.+\\.png$', ), ) + .min(1) .optional(), svg: z .string() @@ -324,20 +633,21 @@ export const CosmosChainSchema = z '^https://raw\\.githubusercontent\\.com/cosmos/chain-registry/master/(|testnets/|_non-cosmos/)[a-z0-9]+/images/.+\\.svg$', ), ) + .min(1) .optional(), }) .strict() .optional(), - description: z.string().max(3000).optional(), + description: z.string().min(1).max(3000).optional(), peers: z .object({ seeds: z .array( z .object({ - id: z.string(), - address: z.string(), - provider: z.string().optional(), + id: z.string().min(1), + address: z.string().min(1), + provider: z.string().min(1).optional(), }) .strict(), ) @@ -346,9 +656,9 @@ export const CosmosChainSchema = z .array( z .object({ - id: z.string(), - address: z.string(), - provider: z.string().optional(), + id: z.string().min(1), + address: z.string().min(1), + provider: z.string().min(1).optional(), }) .strict(), ) @@ -362,8 +672,8 @@ export const CosmosChainSchema = z .array( z .object({ - address: z.string(), - provider: z.string().optional(), + address: z.string().min(1), + provider: z.string().min(1).optional(), archive: z.boolean().default(false), }) .strict(), @@ -373,8 +683,8 @@ export const CosmosChainSchema = z .array( z .object({ - address: z.string(), - provider: z.string().optional(), + address: z.string().min(1), + provider: z.string().min(1).optional(), archive: z.boolean().default(false), }) .strict(), @@ -384,8 +694,8 @@ export const CosmosChainSchema = z .array( z .object({ - address: z.string(), - provider: z.string().optional(), + address: z.string().min(1), + provider: z.string().min(1).optional(), archive: z.boolean().default(false), }) .strict(), @@ -395,8 +705,8 @@ export const CosmosChainSchema = z .array( z .object({ - address: z.string(), - provider: z.string().optional(), + address: z.string().min(1), + provider: z.string().min(1).optional(), archive: z.boolean().default(false), }) .strict(), @@ -406,8 +716,8 @@ export const CosmosChainSchema = z .array( z .object({ - address: z.string(), - provider: z.string().optional(), + address: z.string().min(1), + provider: z.string().min(1).optional(), archive: z.boolean().default(false), }) .strict(), @@ -417,8 +727,8 @@ export const CosmosChainSchema = z .array( z .object({ - address: z.string(), - provider: z.string().optional(), + address: z.string().min(1), + provider: z.string().min(1).optional(), archive: z.boolean().default(false), }) .strict(), @@ -431,22 +741,29 @@ export const CosmosChainSchema = z .array( z .object({ - kind: z.string().optional(), - url: z.string().optional(), - tx_page: z.string().optional(), - account_page: z.string().optional(), + kind: z.string().min(1).optional(), + url: z.string().min(1).optional(), + tx_page: z.string().min(1).optional(), + account_page: z.string().min(1).optional(), + validator_page: z.string().min(1).optional(), + proposal_page: z.string().min(1).optional(), + block_page: z.string().min(1).optional(), }) .strict(), ) .optional(), - keywords: z.array(z.string()).optional(), + keywords: z.array(z.string().min(1)).optional(), extra_codecs: z.array(z.enum(['ethermint', 'injective'])).optional(), }) - .passthrough() + .strict() + .and(z.intersection(z.any(), z.any())) .describe( 'Cosmos Chain.json is a metadata file that contains information about a cosmos sdk based chain.', ); +// .strict().and(z.intersection(z.any(), z.any())) is similar to .passthrough() +// using this way as it's exactly as generated by the tool + export async function getCosmosRegistryChain(chain: string) { const json = await fetch( `https://raw.githubusercontent.com/cosmos/chain-registry/master/${chain}/chain.json`,