feat: deploy to BOB, Mantle, Taiko (#4051)

resolves https://github.com/hyperlane-xyz/issues/issues/1289

- feat: deploy to BOB, Mantle, Taiko
- drive-by: fix deploying to specific chain
- drive-by: adding AVS operators for eth
- drive-by: support non-evm remotes in mainnet3 core config

---------

Signed-off-by: pbio <10051819+paulbalaji@users.noreply.github.com>
pull/3136/merge
Paul Balaji 5 months ago committed by GitHub
parent c3c002a8fe
commit d316772243
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 6
      .changeset/large-taxis-fly.md
  2. 2
      .registryrc
  3. 24
      rust/agents/scraper/migration/src/m20230309_000001_create_table_domain.rs
  4. 214
      rust/config/mainnet_config.json
  5. 13
      rust/hyperlane-core/src/chain.rs
  6. 21
      typescript/infra/config/environments/mainnet3/agent.ts
  7. 9
      typescript/infra/config/environments/mainnet3/aw-validators/hyperlane.json
  8. 5
      typescript/infra/config/environments/mainnet3/chains.ts
  9. 160
      typescript/infra/config/environments/mainnet3/core.ts
  10. 60
      typescript/infra/config/environments/mainnet3/core/verification.json
  11. 11
      typescript/infra/config/environments/mainnet3/funding.ts
  12. 14
      typescript/infra/config/environments/mainnet3/gasPrices.json
  13. 4
      typescript/infra/config/environments/mainnet3/igp.ts
  14. 13
      typescript/infra/config/environments/mainnet3/index.ts
  15. 940
      typescript/infra/config/environments/mainnet3/ism/verification.json
  16. 6
      typescript/infra/config/environments/mainnet3/owners.ts
  17. 3
      typescript/infra/config/environments/mainnet3/supportedChainNames.ts
  18. 55
      typescript/infra/config/environments/mainnet3/tokenPrices.json
  19. 36
      typescript/infra/config/environments/mainnet3/validators.ts
  20. 2
      typescript/infra/scripts/deploy.ts
  21. 3
      typescript/infra/src/config/gas-oracle.ts
  22. 8
      typescript/infra/src/deployment/deploy.ts
  23. 29
      typescript/sdk/src/consts/multisigIsm.ts

@ -0,0 +1,6 @@
---
'@hyperlane-xyz/infra': minor
'@hyperlane-xyz/sdk': minor
---
Deploy to bob, mantle, taiko

@ -1 +1 @@
v2.1.1 v2.2.1

@ -62,6 +62,14 @@ const DOMAINS: &[RawDomain] = &[
is_test_net: false, is_test_net: false,
is_deprecated: false, is_deprecated: false,
}, },
RawDomain {
name: "bob",
token: "ETH",
domain: 60808,
chain_id: 60808,
is_test_net: false,
is_deprecated: false,
},
RawDomain { RawDomain {
name: "bsc", name: "bsc",
token: "BNB", token: "BNB",
@ -134,6 +142,14 @@ const DOMAINS: &[RawDomain] = &[
is_test_net: false, is_test_net: false,
is_deprecated: false, is_deprecated: false,
}, },
RawDomain {
name: "mantle",
token: "MNT",
domain: 5000,
chain_id: 5000,
is_test_net: false,
is_deprecated: false,
},
RawDomain { RawDomain {
name: "mode", name: "mode",
token: "ETH", token: "ETH",
@ -214,6 +230,14 @@ const DOMAINS: &[RawDomain] = &[
is_test_net: true, is_test_net: true,
is_deprecated: false, is_deprecated: false,
}, },
RawDomain {
name: "taiko",
token: "ETH",
domain: 167000,
chain_id: 167000,
is_test_net: false,
is_deprecated: false,
},
RawDomain { RawDomain {
name: "viction", name: "viction",
token: "VIC", token: "VIC",

@ -27,7 +27,7 @@
"from": 2507127 "from": 2507127
}, },
"interchainGasPaymaster": "0x8F1E22d309baa69D398a03cc88E9b46037e988AA", "interchainGasPaymaster": "0x8F1E22d309baa69D398a03cc88E9b46037e988AA",
"interchainSecurityModule": "0xa10686c87d47C8b78c846E77BE2f96607C7c44F4", "interchainSecurityModule": "0x609ad94304896607A6D81DB00d882245045B79da",
"isTestnet": false, "isTestnet": false,
"mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7",
"merkleTreeHook": "0x811808Dd29ba8B0FC6C0ec0b5537035E59745162", "merkleTreeHook": "0x811808Dd29ba8B0FC6C0ec0b5537035E59745162",
@ -86,7 +86,7 @@
"interchainAccountIsm": "0xfa8bfcE55B3A0631dF38257615cEF7FCD3523A48", "interchainAccountIsm": "0xfa8bfcE55B3A0631dF38257615cEF7FCD3523A48",
"interchainAccountRouter": "0xCD0CFFf6eFD943b4b81f2c15847730dbcD30e3aE", "interchainAccountRouter": "0xCD0CFFf6eFD943b4b81f2c15847730dbcD30e3aE",
"interchainGasPaymaster": "0x3b6044acd6767f017e99318AA6Ef93b7B06A5a22", "interchainGasPaymaster": "0x3b6044acd6767f017e99318AA6Ef93b7B06A5a22",
"interchainSecurityModule": "0xd12C017529BE32c23150313F1E473B76e6B19773", "interchainSecurityModule": "0x270b97f88B01fc436e5c8053C30A31d5a3Ca90E9",
"mailbox": "0x979Ca5202784112f4738403dBec5D0F3B9daabB9", "mailbox": "0x979Ca5202784112f4738403dBec5D0F3B9daabB9",
"merkleTreeHook": "0x748040afB89B8FdBb992799808215419d36A0930", "merkleTreeHook": "0x748040afB89B8FdBb992799808215419d36A0930",
"name": "arbitrum", "name": "arbitrum",
@ -152,7 +152,7 @@
"interchainAccountIsm": "0x786c26C1857032617c215f265509d6E44e44Bfe3", "interchainAccountIsm": "0x786c26C1857032617c215f265509d6E44e44Bfe3",
"interchainAccountRouter": "0xA967A6CE0e73fAf672843DECaA372511996E8852", "interchainAccountRouter": "0xA967A6CE0e73fAf672843DECaA372511996E8852",
"interchainGasPaymaster": "0x95519ba800BBd0d34eeAE026fEc620AD978176C0", "interchainGasPaymaster": "0x95519ba800BBd0d34eeAE026fEc620AD978176C0",
"interchainSecurityModule": "0xB7D96FcD923267640BcffC7c3F23530E6C7A4209", "interchainSecurityModule": "0x899305387C0d8f0aA52C07E20f64D3Ea021B71A8",
"mailbox": "0xFf06aFcaABaDDd1fb08371f9ccA15D73D51FeBD6", "mailbox": "0xFf06aFcaABaDDd1fb08371f9ccA15D73D51FeBD6",
"merkleTreeHook": "0x84eea61D679F42D92145fA052C89900CBAccE95A", "merkleTreeHook": "0x84eea61D679F42D92145fA052C89900CBAccE95A",
"name": "avalanche", "name": "avalanche",
@ -218,7 +218,7 @@
"interchainAccountIsm": "0x861908E6c8F992537F557da5Fb5876836036b347", "interchainAccountIsm": "0x861908E6c8F992537F557da5Fb5876836036b347",
"interchainAccountRouter": "0xa85F9e4fdA2FFF1c07f2726a630443af3faDF830", "interchainAccountRouter": "0xa85F9e4fdA2FFF1c07f2726a630443af3faDF830",
"interchainGasPaymaster": "0xc3F23848Ed2e04C0c6d41bd7804fa8f89F940B94", "interchainGasPaymaster": "0xc3F23848Ed2e04C0c6d41bd7804fa8f89F940B94",
"interchainSecurityModule": "0xe7aaFbA826B0bDC60aD09b7b8cA8175c9A89cE0b", "interchainSecurityModule": "0xc0021e56772fD4f0cEA3322a237116b6E8Ce7caE",
"mailbox": "0xeA87ae93Fa0019a82A727bfd3eBd1cFCa8f64f1D", "mailbox": "0xeA87ae93Fa0019a82A727bfd3eBd1cFCa8f64f1D",
"merkleTreeHook": "0x19dc38aeae620380430C200a6E990D5Af5480117", "merkleTreeHook": "0x19dc38aeae620380430C200a6E990D5Af5480117",
"name": "base", "name": "base",
@ -280,7 +280,7 @@
"from": 2496427 "from": 2496427
}, },
"interchainGasPaymaster": "0xB3fCcD379ad66CED0c91028520C64226611A48c9", "interchainGasPaymaster": "0xB3fCcD379ad66CED0c91028520C64226611A48c9",
"interchainSecurityModule": "0xdE516712D58166257E03254BD596CA726417a837", "interchainSecurityModule": "0x91a6102E235B1e74914804Fb150E1A0542b98b8E",
"mailbox": "0x3a867fCfFeC2B790970eeBDC9023E75B0a172aa7", "mailbox": "0x3a867fCfFeC2B790970eeBDC9023E75B0a172aa7",
"merkleTreeHook": "0xC9B8ea6230d6687a4b13fD3C0b8f0Ec607B26465", "merkleTreeHook": "0xC9B8ea6230d6687a4b13fD3C0b8f0Ec607B26465",
"name": "blast", "name": "blast",
@ -309,6 +309,62 @@
"testRecipient": "0x17E216fBb22dF4ef8A6640ae9Cb147C92710ac84", "testRecipient": "0x17E216fBb22dF4ef8A6640ae9Cb147C92710ac84",
"validatorAnnounce": "0xFC62DeF1f08793aBf0E67f69257c6be258194F72" "validatorAnnounce": "0xFC62DeF1f08793aBf0E67f69257c6be258194F72"
}, },
"bob": {
"aggregationHook": "0x87893ae9DF41fF6e41a7c982AA884edDd8770840",
"blockExplorers": [
{
"apiUrl": "https://explorer.gobob.xyz/api",
"family": "blockscout",
"name": "BOB Explorer",
"url": "https://explorer.gobob.xyz"
}
],
"blocks": {
"confirmations": 1,
"estimateBlockTime": 2,
"reorgPeriod": 1
},
"chainId": 60808,
"displayName": "BOB",
"domainId": 60808,
"domainRoutingIsm": "0x93e62F2c9a89f8b1e62A3c726Bbf6BD1A7b7FA3e",
"domainRoutingIsmFactory": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908",
"fallbackRoutingHook": "0xF5165f115ba4E1Adc09f0EB392232D65F219806a",
"gasCurrencyCoinGeckoId": "ethereum",
"gnosisSafeTransactionServiceUrl": "https://transaction.safe.gobob.xyz",
"index": {
"from": 3225119
},
"interchainGasPaymaster": "0x62B7592C1B6D1E43f4630B8e37f4377097840C05",
"interchainSecurityModule": "0x81900eC6CAfC44F418d2d763C3dA437014ddf5CD",
"mailbox": "0x8358D8291e3bEDb04804975eEa0fe9fe0fAfB147",
"merkleTreeHook": "0x781bE492F1232E66990d83a9D3AC3Ec26f56DAfB",
"name": "bob",
"nativeToken": {
"decimals": 18,
"name": "Ether",
"symbol": "ETH"
},
"pausableHook": "0xc22B646edf6c9A43d83fDBc8D5E1B3c6DAfACb83",
"pausableIsm": "0x4E1c88DD261BEe2941e6c1814597e30F53330428",
"protocol": "ethereum",
"protocolFee": "0x2E4B42D3d0FC105E7A729e0Ca757761A61258d14",
"proxyAdmin": "0x95878Fd41bC26f7045C0b98e381c22f010745A75",
"rpcUrls": [
{
"http": "https://rpc.gobob.xyz"
}
],
"staticAggregationHookFactory": "0xEb9FcFDC9EfDC17c1EC5E1dc085B98485da213D6",
"staticAggregationIsm": "0x132280A4110A22Cf2D7279AD33d875b445793948",
"staticAggregationIsmFactory": "0x8F7454AC98228f3504Bb91eA3D8Adafe6406110A",
"staticMerkleRootMultisigIsmFactory": "0x2C1FAbEcd7bFBdEBF27CcdB67baADB38b6Df90fC",
"staticMessageIdMultisigIsmFactory": "0x8b83fefd896fAa52057798f6426E9f0B080FCCcE",
"storageGasOracle": "0x2Fca7f6eC3d4A0408900f2BB30004d4616eE985E",
"technicalStack": "other",
"testRecipient": "0xe03dad16074BC5EEA9A9311257BF02Eb0B6AAA2b",
"validatorAnnounce": "0x7E27456a839BFF31CA642c060a2b68414Cb6e503"
},
"bsc": { "bsc": {
"aggregationHook": "0x402Fc106576462a892355d69ACF03D46A888ae88", "aggregationHook": "0x402Fc106576462a892355d69ACF03D46A888ae88",
"blockExplorers": [ "blockExplorers": [
@ -339,7 +395,7 @@
"interchainAccountIsm": "0xB274Bbbc1df5f1d1763216A93d473fde6f5de043", "interchainAccountIsm": "0xB274Bbbc1df5f1d1763216A93d473fde6f5de043",
"interchainAccountRouter": "0x4BBd67dC995572b40Dc6B3eB6CdE5185a5373868", "interchainAccountRouter": "0x4BBd67dC995572b40Dc6B3eB6CdE5185a5373868",
"interchainGasPaymaster": "0x78E25e7f84416e69b9339B0A6336EB6EFfF6b451", "interchainGasPaymaster": "0x78E25e7f84416e69b9339B0A6336EB6EFfF6b451",
"interchainSecurityModule": "0x4C23e778aF68a54cb59A44581b90E78b35763C83", "interchainSecurityModule": "0xA27bf8601a8952588b9561332597Ef8Af5029Bc4",
"mailbox": "0x2971b9Aec44bE4eb673DF1B88cDB57b96eefe8a4", "mailbox": "0x2971b9Aec44bE4eb673DF1B88cDB57b96eefe8a4",
"merkleTreeHook": "0xFDb9Cd5f9daAA2E4474019405A328a88E7484f26", "merkleTreeHook": "0xFDb9Cd5f9daAA2E4474019405A328a88E7484f26",
"name": "bsc", "name": "bsc",
@ -412,7 +468,7 @@
"interchainAccountIsm": "0x30a8DEc5318e2aAa9ad5b069fC606c4CfF6f5676", "interchainAccountIsm": "0x30a8DEc5318e2aAa9ad5b069fC606c4CfF6f5676",
"interchainAccountRouter": "0x4ED23E3885e1651E62564F78817D91865beba575", "interchainAccountRouter": "0x4ED23E3885e1651E62564F78817D91865beba575",
"interchainGasPaymaster": "0x571f1435613381208477ac5d6974310d88AC7cB7", "interchainGasPaymaster": "0x571f1435613381208477ac5d6974310d88AC7cB7",
"interchainSecurityModule": "0x1b90cCF49e45a87F751b344864e4246D1a57a100", "interchainSecurityModule": "0xcb6658E0f2211730aB9c95A5c7159393a7f470EE",
"mailbox": "0x50da3B3907A08a24fe4999F4Dcf337E8dC7954bb", "mailbox": "0x50da3B3907A08a24fe4999F4Dcf337E8dC7954bb",
"merkleTreeHook": "0x04dB778f05854f26E67e0a66b740BBbE9070D366", "merkleTreeHook": "0x04dB778f05854f26E67e0a66b740BBbE9070D366",
"name": "celo", "name": "celo",
@ -477,7 +533,7 @@
"interchainAccountIsm": "0x609707355a53d2aAb6366f48E2b607C599D26B29", "interchainAccountIsm": "0x609707355a53d2aAb6366f48E2b607C599D26B29",
"interchainAccountRouter": "0x8dBae9B1616c46A20591fE0006Bf015E28ca5cC9", "interchainAccountRouter": "0x8dBae9B1616c46A20591fE0006Bf015E28ca5cC9",
"interchainGasPaymaster": "0x9e6B1022bE9BBF5aFd152483DAD9b88911bC8611", "interchainGasPaymaster": "0x9e6B1022bE9BBF5aFd152483DAD9b88911bC8611",
"interchainSecurityModule": "0x355F2c5532521ca6Df8A908641Ed69eD0619466d", "interchainSecurityModule": "0x8b3674adc97Cb670B0D6A6155EBe879F6d75E3fD",
"mailbox": "0xc005dc82818d67AF737725bD4bf75435d065D239", "mailbox": "0xc005dc82818d67AF737725bD4bf75435d065D239",
"merkleTreeHook": "0x48e6c30B97748d1e2e03bf3e9FbE3890ca5f8CCA", "merkleTreeHook": "0x48e6c30B97748d1e2e03bf3e9FbE3890ca5f8CCA",
"name": "ethereum", "name": "ethereum",
@ -540,7 +596,7 @@
"from": 5350807 "from": 5350807
}, },
"interchainGasPaymaster": "0x2Fca7f6eC3d4A0408900f2BB30004d4616eE985E", "interchainGasPaymaster": "0x2Fca7f6eC3d4A0408900f2BB30004d4616eE985E",
"interchainSecurityModule": "0xf1465DB845d0978e74d45EF195734b43bB739094", "interchainSecurityModule": "0x3d8FbBbD14932249e98BA9d9FB42c078FbEaa4CF",
"mailbox": "0x2f9DB5616fa3fAd1aB06cB2C906830BA63d135e3", "mailbox": "0x2f9DB5616fa3fAd1aB06cB2C906830BA63d135e3",
"merkleTreeHook": "0x8358D8291e3bEDb04804975eEa0fe9fe0fAfB147", "merkleTreeHook": "0x8358D8291e3bEDb04804975eEa0fe9fe0fAfB147",
"name": "fraxtal", "name": "fraxtal",
@ -597,7 +653,7 @@
"interchainAccountIsm": "0x5a56dff3D92D635372718f86e6dF09C1129CFf53", "interchainAccountIsm": "0x5a56dff3D92D635372718f86e6dF09C1129CFf53",
"interchainAccountRouter": "0x5E59EBAedeB691408EBAcF6C37218fa2cFcaC9f2", "interchainAccountRouter": "0x5E59EBAedeB691408EBAcF6C37218fa2cFcaC9f2",
"interchainGasPaymaster": "0xDd260B99d302f0A3fF885728c086f729c06f227f", "interchainGasPaymaster": "0xDd260B99d302f0A3fF885728c086f729c06f227f",
"interchainSecurityModule": "0x613D9ab2dd6cCFa2763d86FdEE3d96C4Ef4C2E96", "interchainSecurityModule": "0xB4722A94aED7E8cf8adc1839F24b3e3329264Fd5",
"mailbox": "0xaD09d78f4c6b9dA2Ae82b1D34107802d380Bb74f", "mailbox": "0xaD09d78f4c6b9dA2Ae82b1D34107802d380Bb74f",
"merkleTreeHook": "0x2684C6F89E901987E1FdB7649dC5Be0c57C61645", "merkleTreeHook": "0x2684C6F89E901987E1FdB7649dC5Be0c57C61645",
"name": "gnosis", "name": "gnosis",
@ -661,7 +717,7 @@
"interchainAccountIsm": "0x31894E7a734540B343d67E491148EB4FC9f7A45B", "interchainAccountIsm": "0x31894E7a734540B343d67E491148EB4FC9f7A45B",
"interchainAccountRouter": "0x4E55aDA3ef1942049EA43E904EB01F4A0a9c39bd", "interchainAccountRouter": "0x4E55aDA3ef1942049EA43E904EB01F4A0a9c39bd",
"interchainGasPaymaster": "0x19dc38aeae620380430C200a6E990D5Af5480117", "interchainGasPaymaster": "0x19dc38aeae620380430C200a6E990D5Af5480117",
"interchainSecurityModule": "0xC1a7a7b15d2B243f7c6Dbbdd6e8A2C2434cdf7BF", "interchainSecurityModule": "0xa5fD5Ae4424dd6069a399492299eff6CD370Fc11",
"mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7",
"merkleTreeHook": "0x0972954923a1e2b2aAb04Fa0c4a0797e5989Cd65", "merkleTreeHook": "0x0972954923a1e2b2aAb04Fa0c4a0797e5989Cd65",
"name": "inevm", "name": "inevm",
@ -769,7 +825,7 @@
"from": 5154574 "from": 5154574
}, },
"interchainGasPaymaster": "0x8105a095368f1a184CceA86cCe21318B5Ee5BE28", "interchainGasPaymaster": "0x8105a095368f1a184CceA86cCe21318B5Ee5BE28",
"interchainSecurityModule": "0xF8aD4EB8aBA13ae546B8D01501c63e4543Ff0660", "interchainSecurityModule": "0xd03F639c5aaE951A3F7C83dBd5F39C824f7B891F",
"mailbox": "0x02d16BC51af6BfD153d67CA61754cF912E82C4d9", "mailbox": "0x02d16BC51af6BfD153d67CA61754cF912E82C4d9",
"merkleTreeHook": "0xC077A0Cc408173349b1c9870C667B40FE3C01dd7", "merkleTreeHook": "0xC077A0Cc408173349b1c9870C667B40FE3C01dd7",
"name": "linea", "name": "linea",
@ -827,7 +883,7 @@
"interchainAccountIsm": "0xA34ceDf9068C5deE726C67A4e1DCfCc2D6E2A7fD", "interchainAccountIsm": "0xA34ceDf9068C5deE726C67A4e1DCfCc2D6E2A7fD",
"interchainAccountRouter": "0x0f6fF770Eda6Ba1433C39cCf47d4059b254224Aa", "interchainAccountRouter": "0x0f6fF770Eda6Ba1433C39cCf47d4059b254224Aa",
"interchainGasPaymaster": "0x0D63128D887159d63De29497dfa45AFc7C699AE4", "interchainGasPaymaster": "0x0D63128D887159d63De29497dfa45AFc7C699AE4",
"interchainSecurityModule": "0x83319BD846D54E49C850027191D094D5E9114339", "interchainSecurityModule": "0xaC7C2a9bc61C9A7c2Fe426c51CC5800d2672d330",
"isTestnet": false, "isTestnet": false,
"mailbox": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", "mailbox": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E",
"merkleTreeHook": "0x149db7afD694722747035d5AEC7007ccb6F8f112", "merkleTreeHook": "0x149db7afD694722747035d5AEC7007ccb6F8f112",
@ -858,6 +914,62 @@
"timelockController": "0x0000000000000000000000000000000000000000", "timelockController": "0x0000000000000000000000000000000000000000",
"validatorAnnounce": "0x2fa5F5C96419C222cDbCeC797D696e6cE428A7A9" "validatorAnnounce": "0x2fa5F5C96419C222cDbCeC797D696e6cE428A7A9"
}, },
"mantle": {
"aggregationHook": "0x76b396EaCBF3580B80Ee34C94e780a1Dee76EC72",
"blockExplorers": [
{
"apiUrl": "https://explorer.mantle.xyz/api",
"family": "blockscout",
"name": "Mantle Mainnet Explorer",
"url": "https://explorer.mantle.xyz"
}
],
"blocks": {
"confirmations": 3,
"estimateBlockTime": 2,
"reorgPeriod": 1
},
"chainId": 5000,
"displayName": "Mantle",
"domainId": 5000,
"domainRoutingIsm": "0xBD70Ea9D599a0FC8158B026797177773C3445730",
"domainRoutingIsmFactory": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908",
"fallbackRoutingHook": "0xdB670e1a1e312BF17425b08cE55Bdf2cD8F8eD54",
"gasCurrencyCoinGeckoId": "mantle",
"gnosisSafeTransactionServiceUrl": "https://transaction.multisig.mantle.xyz",
"index": {
"from": 65590958
},
"interchainGasPaymaster": "0x8105a095368f1a184CceA86cCe21318B5Ee5BE28",
"interchainSecurityModule": "0x05A2E0C12177c6eDD95c805Ab27908d2Bf593466",
"mailbox": "0x398633D19f4371e1DB5a8EFE90468eB70B1176AA",
"merkleTreeHook": "0x5332D1AC0A626D265298c14ff681c0A8D28dB86d",
"name": "mantle",
"nativeToken": {
"decimals": 18,
"name": "Mantle",
"symbol": "MNT"
},
"pausableHook": "0x9fA986ACB22953c504Fcf5985DFA476d481C3b1B",
"pausableIsm": "0x83c2DB237e93Ce52565AB110124f78fdf159E3f4",
"protocol": "ethereum",
"protocolFee": "0x7556a0E61d577D921Cba8Fca0d7D6299d36E607E",
"proxyAdmin": "0x14c3CEee8F431aE947364f43429a98EA89800238",
"rpcUrls": [
{
"http": "https://rpc.mantle.xyz"
}
],
"staticAggregationHookFactory": "0xEb9FcFDC9EfDC17c1EC5E1dc085B98485da213D6",
"staticAggregationIsm": "0xeacA9Ff0Cc6dBFc541c567deD2Fc46bA2012b4a9",
"staticAggregationIsmFactory": "0x8F7454AC98228f3504Bb91eA3D8Adafe6406110A",
"staticMerkleRootMultisigIsmFactory": "0x2C1FAbEcd7bFBdEBF27CcdB67baADB38b6Df90fC",
"staticMessageIdMultisigIsmFactory": "0x8b83fefd896fAa52057798f6426E9f0B080FCCcE",
"storageGasOracle": "0xf9DbC8776Bc2812c4DBEc45383A1783Ac758Fb55",
"technicalStack": "other",
"testRecipient": "0x62B7592C1B6D1E43f4630B8e37f4377097840C05",
"validatorAnnounce": "0x1956848601549de5aa0c887892061fA5aB4f6fC4"
},
"mode": { "mode": {
"aggregationHook": "0x80D80cfBa98dD2d456ECd43Dcc1f852D5C4EeD7a", "aggregationHook": "0x80D80cfBa98dD2d456ECd43Dcc1f852D5C4EeD7a",
"blockExplorers": [ "blockExplorers": [
@ -885,7 +997,7 @@
"from": 6817759 "from": 6817759
}, },
"interchainGasPaymaster": "0x931dFCc8c1141D6F532FD023bd87DAe0080c835d", "interchainGasPaymaster": "0x931dFCc8c1141D6F532FD023bd87DAe0080c835d",
"interchainSecurityModule": "0xEe9443bc2Df7C10327077c605120CDd95e8Ca75F", "interchainSecurityModule": "0x84CF2C35fB6b59a73aDe2B208585FeFBFE0A044F",
"mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7",
"merkleTreeHook": "0xE2ee936bEa8e42671c400aC96dE198E06F2bA2A6", "merkleTreeHook": "0xE2ee936bEa8e42671c400aC96dE198E06F2bA2A6",
"name": "mode", "name": "mode",
@ -942,7 +1054,7 @@
"interchainAccountIsm": "0x799eA6f430f5CA901b59335fFC2fA10531106009", "interchainAccountIsm": "0x799eA6f430f5CA901b59335fFC2fA10531106009",
"interchainAccountRouter": "0x6b142f596FFc761ac3fFaaC1ecaDe54f4EE09977", "interchainAccountRouter": "0x6b142f596FFc761ac3fFaaC1ecaDe54f4EE09977",
"interchainGasPaymaster": "0x14760E32C0746094cF14D97124865BC7F0F7368F", "interchainGasPaymaster": "0x14760E32C0746094cF14D97124865BC7F0F7368F",
"interchainSecurityModule": "0x3db9D7c5cD0Aa312AB1262C711C10DeBA8303388", "interchainSecurityModule": "0x63f51e56DF09b10F8Cb8d5B1918152542aC04994",
"mailbox": "0x094d03E751f49908080EFf000Dd6FD177fd44CC3", "mailbox": "0x094d03E751f49908080EFf000Dd6FD177fd44CC3",
"merkleTreeHook": "0x87403b85f6f316e7ba91ba1fa6C3Fb7dD4095547", "merkleTreeHook": "0x87403b85f6f316e7ba91ba1fa6C3Fb7dD4095547",
"name": "moonbeam", "name": "moonbeam",
@ -1069,7 +1181,7 @@
"interchainAccountIsm": "0x0389faCac114023C123E22F3E54394944cAbcb48", "interchainAccountIsm": "0x0389faCac114023C123E22F3E54394944cAbcb48",
"interchainAccountRouter": "0x33Ef006E7083BB38E0AFe3C3979F4e9b84415bf1", "interchainAccountRouter": "0x33Ef006E7083BB38E0AFe3C3979F4e9b84415bf1",
"interchainGasPaymaster": "0xD8A76C4D91fCbB7Cc8eA795DFDF870E48368995C", "interchainGasPaymaster": "0xD8A76C4D91fCbB7Cc8eA795DFDF870E48368995C",
"interchainSecurityModule": "0x32Ce76b9FfD0BbA0e43a2C27c2cAc90E82C48B95", "interchainSecurityModule": "0xb6266a775255dFD5631763605547D0A733e27E6b",
"mailbox": "0xd4C1905BB1D26BC93DAC913e13CaCC278CdCC80D", "mailbox": "0xd4C1905BB1D26BC93DAC913e13CaCC278CdCC80D",
"merkleTreeHook": "0x68eE9bec9B4dbB61f69D9D293Ae26a5AACb2e28f", "merkleTreeHook": "0x68eE9bec9B4dbB61f69D9D293Ae26a5AACb2e28f",
"name": "optimism", "name": "optimism",
@ -1192,7 +1304,7 @@
"interchainAccountIsm": "0x90384bC552e3C48af51Ef7D9473A9bF87431f5c7", "interchainAccountIsm": "0x90384bC552e3C48af51Ef7D9473A9bF87431f5c7",
"interchainAccountRouter": "0x5e80f3474825B61183c0F0f0726796F589082420", "interchainAccountRouter": "0x5e80f3474825B61183c0F0f0726796F589082420",
"interchainGasPaymaster": "0x0071740Bf129b05C4684abfbBeD248D80971cce2", "interchainGasPaymaster": "0x0071740Bf129b05C4684abfbBeD248D80971cce2",
"interchainSecurityModule": "0x1c39BD73C933c6B1b14685ABD28F996A6a0e306f", "interchainSecurityModule": "0x04f34f0f98CF07d8F68Af5e0e3403C5E40bE8265",
"mailbox": "0x5d934f4e2f797775e53561bB72aca21ba36B96BB", "mailbox": "0x5d934f4e2f797775e53561bB72aca21ba36B96BB",
"merkleTreeHook": "0x73FbD25c3e817DC4B4Cd9d00eff6D83dcde2DfF6", "merkleTreeHook": "0x73FbD25c3e817DC4B4Cd9d00eff6D83dcde2DfF6",
"name": "polygon", "name": "polygon",
@ -1262,7 +1374,7 @@
"interchainAccountIsm": "0xC49aF4965264FA7BB6424CE37aA06773ad177224", "interchainAccountIsm": "0xC49aF4965264FA7BB6424CE37aA06773ad177224",
"interchainAccountRouter": "0xF15D70941dE2Bf95A23d6488eBCbedE0a444137f", "interchainAccountRouter": "0xF15D70941dE2Bf95A23d6488eBCbedE0a444137f",
"interchainGasPaymaster": "0x0D63128D887159d63De29497dfa45AFc7C699AE4", "interchainGasPaymaster": "0x0D63128D887159d63De29497dfa45AFc7C699AE4",
"interchainSecurityModule": "0xb7556707f04BEF8888294C18c447bE1e4446bF7D", "interchainSecurityModule": "0x3eF37B803368A7cd060819C67a14430E1c4C45B7",
"mailbox": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E", "mailbox": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E",
"merkleTreeHook": "0x149db7afD694722747035d5AEC7007ccb6F8f112", "merkleTreeHook": "0x149db7afD694722747035d5AEC7007ccb6F8f112",
"name": "polygonzkevm", "name": "polygonzkevm",
@ -1323,7 +1435,7 @@
"from": 1797579 "from": 1797579
}, },
"interchainGasPaymaster": "0x2Fa570E83009eaEef3a1cbd496a9a30F05266634", "interchainGasPaymaster": "0x2Fa570E83009eaEef3a1cbd496a9a30F05266634",
"interchainSecurityModule": "0xD10AD7d927817558468Ce0F0ab1edEF8D230E2d8", "interchainSecurityModule": "0x1f41b5FeC09B50f526a2ABADE02a681131c7d296",
"mailbox": "0xeA87ae93Fa0019a82A727bfd3eBd1cFCa8f64f1D", "mailbox": "0xeA87ae93Fa0019a82A727bfd3eBd1cFCa8f64f1D",
"merkleTreeHook": "0x8F1E22d309baa69D398a03cc88E9b46037e988AA", "merkleTreeHook": "0x8F1E22d309baa69D398a03cc88E9b46037e988AA",
"name": "redstone", "name": "redstone",
@ -1381,7 +1493,7 @@
"interchainAccountIsm": "0xb89c6ED617f5F46175E41551350725A09110bbCE", "interchainAccountIsm": "0xb89c6ED617f5F46175E41551350725A09110bbCE",
"interchainAccountRouter": "0x9629c28990F11c31735765A6FD59E1E1bC197DbD", "interchainAccountRouter": "0x9629c28990F11c31735765A6FD59E1E1bC197DbD",
"interchainGasPaymaster": "0xBF12ef4B9f307463D3FB59c3604F294dDCe287E2", "interchainGasPaymaster": "0xBF12ef4B9f307463D3FB59c3604F294dDCe287E2",
"interchainSecurityModule": "0x0E6aFC8a7b5223cAD7a7c346da1B2e6ECBaA93f0", "interchainSecurityModule": "0xddaC512B7faDfd36AAfc7e65ECF786EAa9b52686",
"mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7",
"merkleTreeHook": "0x6119E37Bd66406A1Db74920aC79C15fB8411Ba76", "merkleTreeHook": "0x6119E37Bd66406A1Db74920aC79C15fB8411Ba76",
"name": "scroll", "name": "scroll",
@ -1439,7 +1551,7 @@
"from": 80809403 "from": 80809403
}, },
"interchainGasPaymaster": "0xFC62DeF1f08793aBf0E67f69257c6be258194F72", "interchainGasPaymaster": "0xFC62DeF1f08793aBf0E67f69257c6be258194F72",
"interchainSecurityModule": "0x10FF77061869714E92E574FcE9025a419f5b999d", "interchainSecurityModule": "0x8322954E0027C9e7ff95ACA52448f9919fe1fa29",
"mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7",
"merkleTreeHook": "0xca1b69fA4c4a7c7fD839bC50867c589592bcfe49", "merkleTreeHook": "0xca1b69fA4c4a7c7fD839bC50867c589592bcfe49",
"name": "sei", "name": "sei",
@ -1470,6 +1582,62 @@
}, },
"validatorAnnounce": "0x5332D1AC0A626D265298c14ff681c0A8D28dB86d" "validatorAnnounce": "0x5332D1AC0A626D265298c14ff681c0A8D28dB86d"
}, },
"taiko": {
"aggregationHook": "0x1175A31f66C5e3d0ce0ca3B7F80Abe72c6FcE272",
"blockExplorers": [
{
"apiUrl": "https://api.taikoscan.io/api",
"family": "etherscan",
"name": "Taikoscan",
"url": "https://taikoscan.io"
}
],
"blocks": {
"confirmations": 1,
"estimateBlockTime": 12,
"reorgPeriod": 1
},
"chainId": 167000,
"displayName": "Taiko",
"domainId": 167000,
"domainRoutingIsm": "0x5D1e7D7c5B9e6dDC8439F67F10c578f2A1084f6F",
"domainRoutingIsmFactory": "0x0761b0827849abbf7b0cC09CE14e1C93D87f5004",
"fallbackRoutingHook": "0x79B1257BDBCaeF98Da685A7c225b6e61a119Cb7a",
"gasCurrencyCoinGeckoId": "ethereum",
"gnosisSafeTransactionServiceUrl": "https://transaction.safe.taiko.xyz",
"index": {
"from": 98997
},
"interchainGasPaymaster": "0x273Bc6b01D9E88c064b6E5e409BdF998246AEF42",
"interchainSecurityModule": "0xdc39E8682A1aD8eBe76C2dE0334091F0a96EA6e6",
"mailbox": "0x28EFBCadA00A7ed6772b3666F3898d276e88CAe3",
"merkleTreeHook": "0x6A55822cf11f9fcBc4c75BC2638AfE8Eb942cAdd",
"name": "taiko",
"nativeToken": {
"decimals": 18,
"name": "Ether",
"symbol": "ETH"
},
"pausableHook": "0xD1E267d2d7876e97E217BfE61c34AB50FEF52807",
"pausableIsm": "0xD670c00C0Cad3D32436d7cF270e739772314A8CE",
"protocol": "ethereum",
"protocolFee": "0x4006E7434086E7f2548582cfD5ff5Ebb0e44839d",
"proxyAdmin": "0x398633D19f4371e1DB5a8EFE90468eB70B1176AA",
"rpcUrls": [
{
"http": "https://rpc.mainnet.taiko.xyz"
}
],
"staticAggregationHookFactory": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908",
"staticAggregationIsm": "0xBa2C27984b3Bd991b1CA8C26ce91E07A7208b472",
"staticAggregationIsmFactory": "0xEb9FcFDC9EfDC17c1EC5E1dc085B98485da213D6",
"staticMerkleRootMultisigIsmFactory": "0x8b83fefd896fAa52057798f6426E9f0B080FCCcE",
"staticMessageIdMultisigIsmFactory": "0x8F7454AC98228f3504Bb91eA3D8Adafe6406110A",
"storageGasOracle": "0x7556a0E61d577D921Cba8Fca0d7D6299d36E607E",
"technicalStack": "other",
"testRecipient": "0x5fC427653b175F6De5A494DE17d1c7636d7E7965",
"validatorAnnounce": "0x01aE937A7B05d187bBCBE80F44F41879D3D335a4"
},
"viction": { "viction": {
"aggregationHook": "0x5c7890FAf9c99dC55926F00d624D7Bc6D7ac6834", "aggregationHook": "0x5c7890FAf9c99dC55926F00d624D7Bc6D7ac6834",
"blockExplorers": [ "blockExplorers": [
@ -1499,7 +1667,7 @@
"interchainAccountIsm": "0xD1E267d2d7876e97E217BfE61c34AB50FEF52807", "interchainAccountIsm": "0xD1E267d2d7876e97E217BfE61c34AB50FEF52807",
"interchainAccountRouter": "0x1956848601549de5aa0c887892061fA5aB4f6fC4", "interchainAccountRouter": "0x1956848601549de5aa0c887892061fA5aB4f6fC4",
"interchainGasPaymaster": "0x0D63128D887159d63De29497dfa45AFc7C699AE4", "interchainGasPaymaster": "0x0D63128D887159d63De29497dfa45AFc7C699AE4",
"interchainSecurityModule": "0xA76F4620ac1e97d273B2C9Ca71805c8afD792098", "interchainSecurityModule": "0x7E3003Ad3042C70cdA13461Af9EEd6FD7b7B5CcA",
"mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7",
"merkleTreeHook": "0x149db7afD694722747035d5AEC7007ccb6F8f112", "merkleTreeHook": "0x149db7afD694722747035d5AEC7007ccb6F8f112",
"name": "viction", "name": "viction",
@ -1558,7 +1726,7 @@
"from": 3068132 "from": 3068132
}, },
"interchainGasPaymaster": "0x931dFCc8c1141D6F532FD023bd87DAe0080c835d", "interchainGasPaymaster": "0x931dFCc8c1141D6F532FD023bd87DAe0080c835d",
"interchainSecurityModule": "0x8fB4297373f1f11032856693Cf6eee5eC8d7FF4F", "interchainSecurityModule": "0xb44DE9FB31fab40698C334C7BFA7E5f2AC61f64c",
"mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7", "mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7",
"merkleTreeHook": "0xE2ee936bEa8e42671c400aC96dE198E06F2bA2A6", "merkleTreeHook": "0xE2ee936bEa8e42671c400aC96dE198E06F2bA2A6",
"name": "zetachain", "name": "zetachain",

@ -105,6 +105,12 @@ pub enum KnownHyperlaneDomain {
Sei = 1329, Sei = 1329,
Bob = 60808,
Mantle = 5000,
Taiko = 167000,
// -- Local test chains -- // -- Local test chains --
/// Test1 local chain /// Test1 local chain
Test1 = 13371, Test1 = 13371,
@ -237,7 +243,8 @@ impl KnownHyperlaneDomain {
Mainnet: [ Mainnet: [
Ethereum, Avalanche, Arbitrum, Polygon, Optimism, BinanceSmartChain, Celo, Ethereum, Avalanche, Arbitrum, Polygon, Optimism, BinanceSmartChain, Celo,
Moonbeam, Gnosis, MantaPacific, Neutron, Injective, InEvm, Ancient8, Blast, Moonbeam, Gnosis, MantaPacific, Neutron, Injective, InEvm, Ancient8, Blast,
Mode, Redstone, Viction, Zetachain, Fraxtal, Linea, Sei, Osmosis Mode, Redstone, Viction, Zetachain, Fraxtal, Linea, Sei, Osmosis,
Bob, Mantle, Taiko
], ],
Testnet: [ Testnet: [
Alfajores, MoonbaseAlpha, Sepolia, ScrollSepolia, Chiado, PlumeTestnet, Fuji, BinanceSmartChainTestnet, Holesky Alfajores, MoonbaseAlpha, Sepolia, ScrollSepolia, Chiado, PlumeTestnet, Fuji, BinanceSmartChainTestnet, Holesky
@ -255,7 +262,7 @@ impl KnownHyperlaneDomain {
Optimism, BinanceSmartChain, BinanceSmartChainTestnet, Celo, Gnosis, Optimism, BinanceSmartChain, BinanceSmartChainTestnet, Celo, Gnosis,
Alfajores, Moonbeam, InEvm, Ancient8, Blast, Mode, Redstone, Viction, Alfajores, Moonbeam, InEvm, Ancient8, Blast, Mode, Redstone, Viction,
Zetachain, MoonbaseAlpha, ScrollSepolia, Chiado, MantaPacific, PlumeTestnet, Zetachain, MoonbaseAlpha, ScrollSepolia, Chiado, MantaPacific, PlumeTestnet,
Fraxtal, Linea, Sei, Fraxtal, Linea, Sei, Bob, Mantle, Taiko,
Test1, Test2, Test3 Test1, Test2, Test3
], ],
HyperlaneDomainProtocol::Fuel: [FuelTest1], HyperlaneDomainProtocol::Fuel: [FuelTest1],
@ -273,7 +280,7 @@ impl KnownHyperlaneDomain {
Ethereum, Sepolia, Holesky, Polygon, Avalanche, Fuji, Optimism, Ethereum, Sepolia, Holesky, Polygon, Avalanche, Fuji, Optimism,
BinanceSmartChain, BinanceSmartChainTestnet, Celo, Gnosis, Alfajores, Moonbeam, MoonbaseAlpha, BinanceSmartChain, BinanceSmartChainTestnet, Celo, Gnosis, Alfajores, Moonbeam, MoonbaseAlpha,
ScrollSepolia, Chiado, MantaPacific, Neutron, Injective, InEvm, Ancient8, Blast, Mode, Redstone, ScrollSepolia, Chiado, MantaPacific, Neutron, Injective, InEvm, Ancient8, Blast, Mode, Redstone,
Viction, Zetachain, Fraxtal, Linea, Sei, Osmosis, Viction, Zetachain, Fraxtal, Linea, Sei, Osmosis, Bob, Mantle, Taiko,
Test1, Test2, Test3, FuelTest1, SealevelTest1, SealevelTest2, CosmosTest99990, CosmosTest99991 Test1, Test2, Test3, FuelTest1, SealevelTest1, SealevelTest2, CosmosTest99990, CosmosTest99991
], ],
}) })

@ -15,6 +15,7 @@ import {
} from '../../../src/config/agent/relayer.js'; } from '../../../src/config/agent/relayer.js';
import { ALL_KEY_ROLES, Role } from '../../../src/roles.js'; import { ALL_KEY_ROLES, Role } from '../../../src/roles.js';
import { Contexts } from '../../contexts.js'; import { Contexts } from '../../contexts.js';
import { getDomainId } from '../../registry.js';
import { environment } from './chains.js'; import { environment } from './chains.js';
import { helloWorld } from './helloworld.js'; import { helloWorld } from './helloworld.js';
@ -51,6 +52,7 @@ export const hyperlaneContextAgentChainConfig: AgentChainConfig = {
avalanche: true, avalanche: true,
base: true, base: true,
blast: true, blast: true,
bob: true,
bsc: true, bsc: true,
celo: true, celo: true,
ethereum: true, ethereum: true,
@ -60,6 +62,7 @@ export const hyperlaneContextAgentChainConfig: AgentChainConfig = {
inevm: true, inevm: true,
linea: true, linea: true,
mantapacific: true, mantapacific: true,
mantle: true,
mode: true, mode: true,
moonbeam: true, moonbeam: true,
neutron: true, neutron: true,
@ -70,6 +73,7 @@ export const hyperlaneContextAgentChainConfig: AgentChainConfig = {
redstone: true, redstone: true,
scroll: true, scroll: true,
sei: true, sei: true,
taiko: true,
viction: true, viction: true,
zetachain: true, zetachain: true,
}, },
@ -79,6 +83,7 @@ export const hyperlaneContextAgentChainConfig: AgentChainConfig = {
avalanche: true, avalanche: true,
base: true, base: true,
blast: true, blast: true,
bob: true,
bsc: true, bsc: true,
celo: true, celo: true,
ethereum: true, ethereum: true,
@ -88,6 +93,7 @@ export const hyperlaneContextAgentChainConfig: AgentChainConfig = {
inevm: true, inevm: true,
linea: true, linea: true,
mantapacific: true, mantapacific: true,
mantle: true,
mode: true, mode: true,
moonbeam: true, moonbeam: true,
// At the moment, we only relay between Neutron and Manta Pacific on the neutron context. // At the moment, we only relay between Neutron and Manta Pacific on the neutron context.
@ -99,6 +105,7 @@ export const hyperlaneContextAgentChainConfig: AgentChainConfig = {
redstone: true, redstone: true,
scroll: true, scroll: true,
sei: true, sei: true,
taiko: true,
viction: true, viction: true,
zetachain: true, zetachain: true,
}, },
@ -108,6 +115,7 @@ export const hyperlaneContextAgentChainConfig: AgentChainConfig = {
avalanche: true, avalanche: true,
base: true, base: true,
blast: true, blast: true,
bob: true,
bsc: true, bsc: true,
celo: true, celo: true,
ethereum: true, ethereum: true,
@ -118,6 +126,7 @@ export const hyperlaneContextAgentChainConfig: AgentChainConfig = {
inevm: true, inevm: true,
linea: true, linea: true,
mantapacific: true, mantapacific: true,
mantle: true,
mode: true, mode: true,
moonbeam: true, moonbeam: true,
// Cannot scrape non-EVM chains // Cannot scrape non-EVM chains
@ -132,6 +141,7 @@ export const hyperlaneContextAgentChainConfig: AgentChainConfig = {
// and the scraper not gracefully handling txs that may not exist via the eth RPC, we don't run the scraper. // and the scraper not gracefully handling txs that may not exist via the eth RPC, we don't run the scraper.
sei: false, sei: false,
scroll: true, scroll: true,
taiko: true,
// Has RPC non-compliance that breaks scraping. // Has RPC non-compliance that breaks scraping.
viction: false, viction: false,
zetachain: true, zetachain: true,
@ -153,6 +163,11 @@ const contextBase = {
} as const; } as const;
const gasPaymentEnforcement: GasPaymentEnforcement[] = [ const gasPaymentEnforcement: GasPaymentEnforcement[] = [
{
type: GasPaymentEnforcementPolicyType.Minimum,
payment: '1',
matchingList: [{ destinationDomain: getDomainId('mantle') }],
},
// To cover ourselves against IGP indexing issues and to ensure Nexus // To cover ourselves against IGP indexing issues and to ensure Nexus
// users have the best possible experience, we whitelist messages between // users have the best possible experience, we whitelist messages between
// warp routes that we know are certainly paying for gas. // warp routes that we know are certainly paying for gas.
@ -251,7 +266,7 @@ const hyperlane: RootAgentConfig = {
rpcConsensusType: RpcConsensusType.Fallback, rpcConsensusType: RpcConsensusType.Fallback,
docker: { docker: {
repo, repo,
tag: '4cc9327-20240701-214057', tag: '7a8478b-20240703-113821',
}, },
gasPaymentEnforcement: gasPaymentEnforcement, gasPaymentEnforcement: gasPaymentEnforcement,
metricAppContexts, metricAppContexts,
@ -260,7 +275,7 @@ const hyperlane: RootAgentConfig = {
validators: { validators: {
docker: { docker: {
repo, repo,
tag: '0d12ff3-20240620-173353', tag: '7a8478b-20240703-113821',
}, },
rpcConsensusType: RpcConsensusType.Quorum, rpcConsensusType: RpcConsensusType.Quorum,
chains: validatorChainConfig(Contexts.Hyperlane), chains: validatorChainConfig(Contexts.Hyperlane),
@ -270,7 +285,7 @@ const hyperlane: RootAgentConfig = {
rpcConsensusType: RpcConsensusType.Fallback, rpcConsensusType: RpcConsensusType.Fallback,
docker: { docker: {
repo, repo,
tag: '0d12ff3-20240620-173353', tag: '7a8478b-20240703-113821',
}, },
resources: scraperResources, resources: scraperResources,
}, },

@ -26,6 +26,9 @@
"blast": { "blast": {
"validators": ["0xf20c0b09f597597c8d2430d3d72dfddaf09177d1"] "validators": ["0xf20c0b09f597597c8d2430d3d72dfddaf09177d1"]
}, },
"bob": {
"validators": ["0x20f283be1eb0e81e22f51705dcb79883cfdd34aa"]
},
"bsc": { "bsc": {
"validators": [ "validators": [
"0x570af9b7b36568c8877eebba6c6727aa9dab7268", "0x570af9b7b36568c8877eebba6c6727aa9dab7268",
@ -77,6 +80,9 @@
"0x5dda0c4cf18de3b3ab637f8df82b24921082b54c" "0x5dda0c4cf18de3b3ab637f8df82b24921082b54c"
] ]
}, },
"mantle": {
"validators": ["0xf930636c5a1a8bf9302405f72e3af3c96ebe4a52"]
},
"mode": { "mode": {
"validators": ["0x7eb2e1920a4166c19d6884c1cec3d2cf356fc9b7"] "validators": ["0x7eb2e1920a4166c19d6884c1cec3d2cf356fc9b7"]
}, },
@ -131,6 +137,9 @@
"sei": { "sei": {
"validators": ["0x9920d2dbf6c85ffc228fdc2e810bf895732c6aa5"] "validators": ["0x9920d2dbf6c85ffc228fdc2e810bf895732c6aa5"]
}, },
"taiko": {
"validators": ["0xa930073c8f2d0b2f7423ea32293e0d1362e65d79"]
},
"viction": { "viction": {
"validators": ["0x1f87c368f8e05a85ef9126d984a980a20930cb9c"] "validators": ["0x1f87c368f8e05a85ef9126d984a980a20930cb9c"]
}, },

@ -29,6 +29,11 @@ export const chainMetadataOverrides: ChainMap<Partial<ChainMetadata>> = {
maxPriorityFeePerGas: 50 * 10 ** 9, // 50 gwei maxPriorityFeePerGas: 50 * 10 ** 9, // 50 gwei
}, },
}, },
polygonzkevm: {
transactionOverrides: {
gasPrice: 1 * 10 ** 9, // 1 gwei
},
},
ethereum: { ethereum: {
blocks: { blocks: {
confirmations: 3, confirmations: 3,

@ -17,97 +17,97 @@ import {
RoutingIsmConfig, RoutingIsmConfig,
defaultMultisigConfigs, defaultMultisigConfigs,
} from '@hyperlane-xyz/sdk'; } from '@hyperlane-xyz/sdk';
import { Address, ProtocolType, objMap } from '@hyperlane-xyz/utils'; import { Address, objMap } from '@hyperlane-xyz/utils';
import { getChain } from '../../registry.js';
import { igp } from './igp.js'; import { igp } from './igp.js';
import { DEPLOYER, owners } from './owners.js'; import { DEPLOYER, ethereumChainOwners } from './owners.js';
import { supportedChainNames } from './supportedChainNames.js'; import { supportedChainNames } from './supportedChainNames.js';
export const core: ChainMap<CoreConfig> = objMap(owners, (local, owner) => { export const core: ChainMap<CoreConfig> = objMap(
const originMultisigs: ChainMap<MultisigConfig> = Object.fromEntries( ethereumChainOwners,
supportedChainNames (local, owner) => {
.filter((chain) => getChain(chain).protocol === ProtocolType.Ethereum) const originMultisigs: ChainMap<MultisigConfig> = Object.fromEntries(
.filter((chain) => chain !== local) supportedChainNames
.map((origin) => [origin, defaultMultisigConfigs[origin]]), .filter((chain) => chain !== local)
); .map((origin) => [origin, defaultMultisigConfigs[origin]]),
);
const merkleRoot = (multisig: MultisigConfig): MultisigIsmConfig => ({ const merkleRoot = (multisig: MultisigConfig): MultisigIsmConfig => ({
type: IsmType.MERKLE_ROOT_MULTISIG, type: IsmType.MERKLE_ROOT_MULTISIG,
...multisig, ...multisig,
}); });
const messageIdIsm = (multisig: MultisigConfig): MultisigIsmConfig => ({ const messageIdIsm = (multisig: MultisigConfig): MultisigIsmConfig => ({
type: IsmType.MESSAGE_ID_MULTISIG, type: IsmType.MESSAGE_ID_MULTISIG,
...multisig, ...multisig,
}); });
const routingIsm: RoutingIsmConfig = { const routingIsm: RoutingIsmConfig = {
type: IsmType.ROUTING, type: IsmType.ROUTING,
domains: objMap( domains: objMap(
originMultisigs, originMultisigs,
(_, multisig): AggregationIsmConfig => ({ (_, multisig): AggregationIsmConfig => ({
type: IsmType.AGGREGATION, type: IsmType.AGGREGATION,
modules: [messageIdIsm(multisig), merkleRoot(multisig)], modules: [messageIdIsm(multisig), merkleRoot(multisig)],
threshold: 1, threshold: 1,
}), }),
), ),
...owner, ...owner,
}; };
const pausableIsm: PausableIsmConfig = { const pausableIsm: PausableIsmConfig = {
type: IsmType.PAUSABLE, type: IsmType.PAUSABLE,
paused: false, paused: false,
owner: DEPLOYER, // keep pausable hot owner: DEPLOYER, // keep pausable hot
}; };
const defaultIsm: AggregationIsmConfig = { const defaultIsm: AggregationIsmConfig = {
type: IsmType.AGGREGATION, type: IsmType.AGGREGATION,
modules: [routingIsm, pausableIsm], modules: [routingIsm, pausableIsm],
threshold: 2, threshold: 2,
}; };
const merkleHook: MerkleTreeHookConfig = { const merkleHook: MerkleTreeHookConfig = {
type: HookType.MERKLE_TREE, type: HookType.MERKLE_TREE,
}; };
const igpHook = igp[local]; const igpHook = igp[local];
const pausableHook: PausableHookConfig = { const pausableHook: PausableHookConfig = {
type: HookType.PAUSABLE, type: HookType.PAUSABLE,
paused: false, paused: false,
owner: DEPLOYER, // keep pausable hot owner: DEPLOYER, // keep pausable hot
}; };
const aggregationHooks = objMap( const aggregationHooks = objMap(
originMultisigs, originMultisigs,
(_origin, _): AggregationHookConfig => ({ (_origin, _): AggregationHookConfig => ({
type: HookType.AGGREGATION, type: HookType.AGGREGATION,
hooks: [pausableHook, merkleHook, igpHook], hooks: [pausableHook, merkleHook, igpHook],
}), }),
); );
const defaultHook: FallbackRoutingHookConfig = { const defaultHook: FallbackRoutingHookConfig = {
type: HookType.FALLBACK_ROUTING, type: HookType.FALLBACK_ROUTING,
...owner, ...owner,
domains: aggregationHooks, domains: aggregationHooks,
fallback: merkleHook, fallback: merkleHook,
}; };
if (typeof owner.owner !== 'string') { if (typeof owner.owner !== 'string') {
throw new Error('beneficiary must be a string'); throw new Error('beneficiary must be a string');
} }
const requiredHook: ProtocolFeeHookConfig = { const requiredHook: ProtocolFeeHookConfig = {
type: HookType.PROTOCOL_FEE, type: HookType.PROTOCOL_FEE,
maxProtocolFee: ethers.utils.parseUnits('1', 'gwei').toString(), // 1 gwei of native token maxProtocolFee: ethers.utils.parseUnits('1', 'gwei').toString(), // 1 gwei of native token
protocolFee: BigNumber.from(0).toString(), // 0 wei protocolFee: BigNumber.from(0).toString(), // 0 wei
beneficiary: owner.owner as Address, // Owner can be AccountConfig beneficiary: owner.owner as Address, // Owner can be AccountConfig
...owner, ...owner,
}; };
return { return {
defaultIsm, defaultIsm,
defaultHook, defaultHook,
requiredHook, requiredHook,
...owner, ...owner,
}; };
}); },
);

@ -1989,6 +1989,20 @@
"name": "PausableIsm" "name": "PausableIsm"
} }
], ],
"bob": [
{
"address": "0x2E4B42D3d0FC105E7A729e0Ca757761A61258d14",
"constructorArguments": "000000000000000000000000000000000000000000000000000000003b9aca000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba",
"isProxy": false,
"name": "ProtocolFee"
},
{
"address": "0x7E27456a839BFF31CA642c060a2b68414Cb6e503",
"constructorArguments": "0000000000000000000000008358d8291e3bedb04804975eea0fe9fe0fafb147",
"isProxy": false,
"name": "ValidatorAnnounce"
}
],
"bsc": [ "bsc": [
{ {
"address": "0xBFA300164A04437D64Afda390736e6DC45096da1", "address": "0xBFA300164A04437D64Afda390736e6DC45096da1",
@ -4423,6 +4437,32 @@
"name": "PausableIsm" "name": "PausableIsm"
} }
], ],
"mantle": [
{
"address": "0x83c2DB237e93Ce52565AB110124f78fdf159E3f4",
"constructorArguments": "000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba",
"isProxy": false,
"name": "PausableIsm"
},
{
"address": "0x8105a095368f1a184CceA86cCe21318B5Ee5BE28",
"constructorArguments": "000000000000000000000000a805695c20ed9f4ce9905cd1afae7877a81ec0d700000000000000000000000014c3ceee8f431ae947364f43429a98ea8980023800000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000044485cc955000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba00000000000000000000000000000000000000000000000000000000",
"isProxy": true,
"name": "TransparentUpgradeableProxy"
},
{
"address": "0x7556a0E61d577D921Cba8Fca0d7D6299d36E607E",
"constructorArguments": "000000000000000000000000000000000000000000000000000000003b9aca000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba",
"isProxy": false,
"name": "ProtocolFee"
},
{
"address": "0x1956848601549de5aa0c887892061fA5aB4f6fC4",
"constructorArguments": "000000000000000000000000398633d19f4371e1db5a8efe90468eb70b1176aa",
"isProxy": false,
"name": "ValidatorAnnounce"
}
],
"mode": [ "mode": [
{ {
"address": "0x0761b0827849abbf7b0cC09CE14e1C93D87f5004", "address": "0x0761b0827849abbf7b0cC09CE14e1C93D87f5004",
@ -7649,6 +7689,26 @@
"name": "ValidatorAnnounce" "name": "ValidatorAnnounce"
} }
], ],
"taiko": [
{
"address": "0x4006E7434086E7f2548582cfD5ff5Ebb0e44839d",
"constructorArguments": "000000000000000000000000000000000000000000000000000000003b9aca000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba",
"isProxy": false,
"name": "ProtocolFee"
},
{
"address": "0x01aE937A7B05d187bBCBE80F44F41879D3D335a4",
"constructorArguments": "00000000000000000000000028efbcada00a7ed6772b3666f3898d276e88cae3",
"isProxy": false,
"name": "ValidatorAnnounce"
},
{
"address": "0xD670c00C0Cad3D32436d7cF270e739772314A8CE",
"constructorArguments": "000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba",
"isProxy": false,
"name": "PausableIsm"
}
],
"viction": [ "viction": [
{ {
"address": "0x0761b0827849abbf7b0cC09CE14e1C93D87f5004", "address": "0x0761b0827849abbf7b0cC09CE14e1C93D87f5004",

@ -7,7 +7,7 @@ import { environment } from './chains.js';
export const keyFunderConfig: KeyFunderConfig = { export const keyFunderConfig: KeyFunderConfig = {
docker: { docker: {
repo: 'gcr.io/abacus-labs-dev/hyperlane-monorepo', repo: 'gcr.io/abacus-labs-dev/hyperlane-monorepo',
tag: 'e248ad9-20240701-155415', tag: '1b5e4d4-20240702-152903',
}, },
// We're currently using the same deployer/key funder key as mainnet2. // We're currently using the same deployer/key funder key as mainnet2.
// To minimize nonce clobbering we offset the key funder cron // To minimize nonce clobbering we offset the key funder cron
@ -28,6 +28,7 @@ export const keyFunderConfig: KeyFunderConfig = {
avalanche: '5', avalanche: '5',
base: '0.5', base: '0.5',
blast: '0.2', blast: '0.2',
bob: '0.2',
bsc: '5', bsc: '5',
celo: '3', celo: '3',
ethereum: '0.5', ethereum: '0.5',
@ -36,6 +37,7 @@ export const keyFunderConfig: KeyFunderConfig = {
inevm: '3', inevm: '3',
linea: '0.2', linea: '0.2',
mantapacific: '0.2', mantapacific: '0.2',
mantle: '20',
mode: '0.2', mode: '0.2',
moonbeam: '5', moonbeam: '5',
optimism: '0.5', optimism: '0.5',
@ -44,6 +46,7 @@ export const keyFunderConfig: KeyFunderConfig = {
redstone: '0.2', redstone: '0.2',
scroll: '0.5', scroll: '0.5',
sei: '10', sei: '10',
taiko: '0.2',
viction: '3', viction: '3',
zetachain: '20', zetachain: '20',
}, },
@ -53,6 +56,7 @@ export const keyFunderConfig: KeyFunderConfig = {
avalanche: '6', avalanche: '6',
base: '0.05', base: '0.05',
blast: '0', blast: '0',
bob: '0',
bsc: '0.35', bsc: '0.35',
celo: '150', celo: '150',
ethereum: '0.4', ethereum: '0.4',
@ -61,6 +65,7 @@ export const keyFunderConfig: KeyFunderConfig = {
inevm: '0.05', inevm: '0.05',
linea: '0', linea: '0',
mantapacific: '0', mantapacific: '0',
mantle: '0',
mode: '0', mode: '0',
moonbeam: '250', moonbeam: '250',
optimism: '0.1', optimism: '0.1',
@ -69,6 +74,7 @@ export const keyFunderConfig: KeyFunderConfig = {
redstone: '0', redstone: '0',
scroll: '0.05', scroll: '0.05',
sei: '0', sei: '0',
taiko: '0',
viction: '0.05', viction: '0.05',
zetachain: '0', zetachain: '0',
}, },
@ -78,6 +84,7 @@ export const keyFunderConfig: KeyFunderConfig = {
avalanche: '2', avalanche: '2',
base: '0.1', base: '0.1',
blast: '0.1', blast: '0.1',
bob: '0.1',
bsc: '0.3', bsc: '0.3',
celo: '5', celo: '5',
ethereum: '0.2', ethereum: '0.2',
@ -86,6 +93,7 @@ export const keyFunderConfig: KeyFunderConfig = {
inevm: '3', inevm: '3',
linea: '0.1', linea: '0.1',
mantapacific: '0.1', mantapacific: '0.1',
mantle: '10',
mode: '0.1', mode: '0.1',
moonbeam: '5', moonbeam: '5',
optimism: '0.1', optimism: '0.1',
@ -94,6 +102,7 @@ export const keyFunderConfig: KeyFunderConfig = {
redstone: '0.1', redstone: '0.1',
scroll: '0.1', scroll: '0.1',
sei: '2', sei: '2',
taiko: '0.1',
viction: '2', viction: '2',
zetachain: '20', zetachain: '20',
}, },

@ -19,6 +19,10 @@
"amount": "0.5", "amount": "0.5",
"decimals": 9 "decimals": 9
}, },
"bob": {
"amount": "0.001000252",
"decimals": 9
},
"bsc": { "bsc": {
"amount": "5.0", "amount": "5.0",
"decimals": 9 "decimals": 9
@ -52,7 +56,11 @@
"decimals": 9 "decimals": 9
}, },
"mantapacific": { "mantapacific": {
"amount": "0.101967574", "amount": "0.101416541",
"decimals": 9
},
"mantle": {
"amount": "0.02",
"decimals": 9 "decimals": 9
}, },
"mode": { "mode": {
@ -95,6 +103,10 @@
"amount": "1.0", "amount": "1.0",
"decimals": 9 "decimals": 9
}, },
"taiko": {
"amount": "0.010000001",
"decimals": 9
},
"viction": { "viction": {
"amount": "0.25", "amount": "0.25",
"decimals": 9 "decimals": 9

@ -19,7 +19,7 @@ import {
import { ethereumChainNames } from './chains.js'; import { ethereumChainNames } from './chains.js';
import gasPrices from './gasPrices.json'; import gasPrices from './gasPrices.json';
import { DEPLOYER, owners } from './owners.js'; import { DEPLOYER, ethereumChainOwners } from './owners.js';
import { supportedChainNames } from './supportedChainNames.js'; import { supportedChainNames } from './supportedChainNames.js';
import rawTokenPrices from './tokenPrices.json'; import rawTokenPrices from './tokenPrices.json';
@ -59,7 +59,7 @@ const storageGasOracleConfig: AllStorageGasOracleConfigs =
); );
export const igp: ChainMap<IgpConfig> = objMap( export const igp: ChainMap<IgpConfig> = objMap(
owners, ethereumChainOwners,
(local, owner): IgpConfig => ({ (local, owner): IgpConfig => ({
type: HookType.INTERCHAIN_GAS_PAYMASTER, type: HookType.INTERCHAIN_GAS_PAYMASTER,
...owner, ...owner,

@ -1,28 +1,21 @@
import { IRegistry } from '@hyperlane-xyz/registry';
import { import {
getKeysForRole, getKeysForRole,
getMultiProtocolProvider, getMultiProtocolProvider,
getMultiProviderForRole, getMultiProviderForRole,
} from '../../../scripts/agent-utils.js'; } from '../../../scripts/agent-utils.js';
import { getRegistryForEnvironment } from '../../../src/config/chain.js';
import { EnvironmentConfig } from '../../../src/config/environment.js'; import { EnvironmentConfig } from '../../../src/config/environment.js';
import { Role } from '../../../src/roles.js'; import { Role } from '../../../src/roles.js';
import { Contexts } from '../../contexts.js'; import { Contexts } from '../../contexts.js';
import { agents } from './agent.js'; import { agents } from './agent.js';
import { import { environment as environmentName, getRegistry } from './chains.js';
chainMetadataOverrides,
environment as environmentName,
getRegistry,
} from './chains.js';
import { core } from './core.js'; import { core } from './core.js';
import { keyFunderConfig } from './funding.js'; import { keyFunderConfig } from './funding.js';
import { helloWorld } from './helloworld.js'; import { helloWorld } from './helloworld.js';
import { igp } from './igp.js'; import { igp } from './igp.js';
import { infrastructure } from './infrastructure.js'; import { infrastructure } from './infrastructure.js';
import { bridgeAdapterConfigs, relayerConfig } from './liquidityLayer.js'; import { bridgeAdapterConfigs, relayerConfig } from './liquidityLayer.js';
import { owners } from './owners.js'; import { ethereumChainOwners } from './owners.js';
import { supportedChainNames } from './supportedChainNames.js'; import { supportedChainNames } from './supportedChainNames.js';
export const environment: EnvironmentConfig = { export const environment: EnvironmentConfig = {
@ -50,7 +43,7 @@ export const environment: EnvironmentConfig = {
agents, agents,
core, core,
igp, igp,
owners, owners: ethereumChainOwners,
infra: infrastructure, infra: infrastructure,
helloWorld, helloWorld,
keyFunderConfig, keyFunderConfig,

@ -13,12 +13,12 @@ export function localAccountRouters(): ChainMap<Address> {
const coreAddresses: ChainMap<AddressesMap> = getMainnetAddresses(); const coreAddresses: ChainMap<AddressesMap> = getMainnetAddresses();
const filteredAddresses = objFilter( const filteredAddresses = objFilter(
coreAddresses, coreAddresses,
(local, addressMap): addressMap is AddressesMap => (_, addressMap): addressMap is AddressesMap =>
addressMap.interchainAccountRouter !== undefined, addressMap.interchainAccountRouter !== undefined,
); );
return objMap( return objMap(
filteredAddresses, filteredAddresses,
(local, addressMap) => addressMap.interchainAccountRouter, (_, addressMap) => addressMap.interchainAccountRouter,
); );
} }
@ -49,7 +49,7 @@ export const DEPLOYER = '0xa7ECcdb9Be08178f896c26b7BbD8C3D4E844d9Ba';
// NOTE: if you wanna use ICA governance, you can do the following: // NOTE: if you wanna use ICA governance, you can do the following:
// const localRouters = localAccountRouters(); // const localRouters = localAccountRouters();
// owner: {origin: <HUB_CHAIN>, owner: <SAFE_ADDRESS>, localRouter: localRouters[chain]} // owner: {origin: <HUB_CHAIN>, owner: <SAFE_ADDRESS>, localRouter: localRouters[chain]}
export const owners: ChainMap<OwnableConfig> = Object.fromEntries( export const ethereumChainOwners: ChainMap<OwnableConfig> = Object.fromEntries(
ethereumChainNames.map((local) => [ ethereumChainNames.map((local) => [
local, local,
{ {

@ -6,6 +6,7 @@ export const supportedChainNames = [
'avalanche', 'avalanche',
'base', 'base',
'blast', 'blast',
'bob',
'bsc', 'bsc',
'celo', 'celo',
'ethereum', 'ethereum',
@ -15,6 +16,7 @@ export const supportedChainNames = [
'injective', 'injective',
'linea', 'linea',
'mantapacific', 'mantapacific',
'mantle',
'mode', 'mode',
'moonbeam', 'moonbeam',
'neutron', 'neutron',
@ -25,6 +27,7 @@ export const supportedChainNames = [
'redstone', 'redstone',
'scroll', 'scroll',
'sei', 'sei',
'taiko',
'viction', 'viction',
'zetachain', 'zetachain',
]; ];

@ -1,28 +1,31 @@
{ {
"arbitrum": "3537.12", "arbitrum": "3286.72",
"ancient8": "3537.12", "ancient8": "3286.72",
"avalanche": "32.04", "avalanche": "24.05",
"base": "3537.12", "base": "3286.72",
"blast": "3537.12", "blast": "3286.72",
"bsc": "611.69", "bob": "3286.72",
"celo": "0.709793", "bsc": "563.4",
"ethereum": "3537.12", "celo": "0.572951",
"fraxtal": "3519.8", "ethereum": "3286.72",
"gnosis": "1.001", "fraxtal": "3288.13",
"inevm": "28.61", "gnosis": "0.999461",
"injective": "28.61", "inevm": "20.98",
"linea": "3537.12", "injective": "20.98",
"mantapacific": "3537.12", "linea": "3286.72",
"mode": "3537.12", "mantapacific": "3286.72",
"moonbeam": "0.278261", "mantle": "0.737097",
"neutron": "0.623705", "mode": "3286.72",
"optimism": "3537.12", "moonbeam": "0.194356",
"osmosis": "0.649286", "neutron": "0.428175",
"polygon": "0.643148", "optimism": "3286.72",
"polygonzkevm": "3537.12", "osmosis": "0.530468",
"redstone": "3537.12", "polygon": "0.5493",
"scroll": "3537.12", "polygonzkevm": "3286.72",
"sei": "0.477119", "redstone": "3286.72",
"viction": "0.404896", "scroll": "3286.72",
"zetachain": "1.16" "sei": "0.34564",
"taiko": "3286.72",
"viction": "0.363521",
"zetachain": "0.818829"
} }

@ -236,6 +236,18 @@ export const validatorChainConfig = (
'base', 'base',
), ),
}, },
bob: {
interval: 5,
reorgPeriod: getReorgPeriod('bob'),
validators: validatorsConfig(
{
[Contexts.Hyperlane]: ['0x20f283be1eb0e81e22f51705dcb79883cfdd34aa'],
[Contexts.ReleaseCandidate]: [],
[Contexts.Neutron]: [],
},
'bob',
),
},
injective: { injective: {
interval: 5, interval: 5,
reorgPeriod: getReorgPeriod('injective'), reorgPeriod: getReorgPeriod('injective'),
@ -296,6 +308,18 @@ export const validatorChainConfig = (
'linea', 'linea',
), ),
}, },
mantle: {
interval: 5,
reorgPeriod: getReorgPeriod('mantle'),
validators: validatorsConfig(
{
[Contexts.Hyperlane]: ['0xf930636c5a1a8bf9302405f72e3af3c96ebe4a52'],
[Contexts.ReleaseCandidate]: [],
[Contexts.Neutron]: [],
},
'mantle',
),
},
sei: { sei: {
interval: 5, interval: 5,
reorgPeriod: getReorgPeriod('sei'), reorgPeriod: getReorgPeriod('sei'),
@ -330,6 +354,18 @@ export const validatorChainConfig = (
'scroll', 'scroll',
), ),
}, },
taiko: {
interval: 5,
reorgPeriod: getReorgPeriod('taiko'),
validators: validatorsConfig(
{
[Contexts.Hyperlane]: ['0xa930073c8f2d0b2f7423ea32293e0d1362e65d79'],
[Contexts.ReleaseCandidate]: [],
[Contexts.Neutron]: [],
},
'taiko',
),
},
polygonzkevm: { polygonzkevm: {
interval: 5, interval: 5,
reorgPeriod: getReorgPeriod('polygonzkevm'), reorgPeriod: getReorgPeriod('polygonzkevm'),

@ -253,7 +253,7 @@ async function main() {
cache, cache,
// Use chains if provided, otherwise deploy to all chains // Use chains if provided, otherwise deploy to all chains
// If fork is provided, deploy to fork only // If fork is provided, deploy to fork only
targetNetworks: chains ?? !fork ? [] : [fork], targetNetworks: chains && chains.length > 0 ? chains : !fork ? [] : [fork],
agentConfig, agentConfig,
}); });
} }

@ -141,14 +141,17 @@ function getMinUsdCost(local: ChainName, remote: ChainName): number {
ancient8: 0.5, ancient8: 0.5,
base: 0.5, base: 0.5,
blast: 0.5, blast: 0.5,
bob: 0.5,
fraxtal: 0.5, fraxtal: 0.5,
linea: 0.5, linea: 0.5,
mantapacific: 0.5, mantapacific: 0.5,
mantle: 0.5,
mode: 0.5, mode: 0.5,
optimism: 0.5, optimism: 0.5,
polygonzkevm: 0.5, polygonzkevm: 0.5,
// Scroll is more expensive than the rest due to higher L1 fees // Scroll is more expensive than the rest due to higher L1 fees
scroll: 1.5, scroll: 1.5,
taiko: 0.5,
// Nexus adjustment // Nexus adjustment
neutron: 0.5, neutron: 0.5,
}; };

@ -82,8 +82,12 @@ export async function deployWithArtifacts<Config extends object>({
// Deploy the contracts // Deploy the contracts
try { try {
await deployer.deploy(targetConfigMap); await deployer.deploy(targetConfigMap);
} catch (e) { } catch (e: any) {
console.error('Failed to deploy contracts', e); if (e?.message.includes('Timed out')) {
console.warn('Contract deployment exceeding configured timeout', e);
} else {
console.error('Contract deployment failed', e);
}
} }
await postDeploy(deployer, cache, agentConfig); await postDeploy(deployer, cache, agentConfig);

@ -61,6 +61,15 @@ export const defaultMultisigConfigs: ChainMap<MultisigConfig> = {
], ],
}, },
bob: {
threshold: 2,
validators: [
'0x20f283be1eb0e81e22f51705dcb79883cfdd34aa',
'0xcf0211fafbb91fd9d06d7e306b30032dc3a1934f', // merkly
'0x4f977a59fdc2d9e39f6d780a84d5b4add1495a36', // mitosis
],
},
bsc: { bsc: {
threshold: 2, threshold: 2,
validators: [ validators: [
@ -113,6 +122,8 @@ export const defaultMultisigConfigs: ChainMap<MultisigConfig> = {
'0x5450447aee7b544c462c9352bef7cad049b0c2dc', // zeeprime '0x5450447aee7b544c462c9352bef7cad049b0c2dc', // zeeprime
'0xce327111035dd38698c92c3778884dbbb0ca8103', // everstake '0xce327111035dd38698c92c3778884dbbb0ca8103', // everstake
'0xb2f5a6a6e6046e2ede213617e989329666a6c4bc', // staked '0xb2f5a6a6e6046e2ede213617e989329666a6c4bc', // staked
'0xb683b742b378632a5f73a2a5a45801b3489bba44', // avs: luganodes
'0xbf1023eff3dba21263bf2db2add67a0d6bcda2de', // avs: pier two
], ],
}, },
@ -188,6 +199,15 @@ export const defaultMultisigConfigs: ChainMap<MultisigConfig> = {
], ],
}, },
mantle: {
threshold: 2,
validators: [
'0xf930636c5a1a8bf9302405f72e3af3c96ebe4a52',
'0xcf0211fafbb91fd9d06d7e306b30032dc3a1934f', // merkly
'0x4f977a59fdc2d9e39f6d780a84d5b4add1495a36', // mitosis
],
},
mode: { mode: {
threshold: 2, threshold: 2,
validators: [ validators: [
@ -317,6 +337,15 @@ export const defaultMultisigConfigs: ChainMap<MultisigConfig> = {
validators: ['0xd4ce8fa138d4e083fc0e480cca0dbfa4f5f30bd5'], validators: ['0xd4ce8fa138d4e083fc0e480cca0dbfa4f5f30bd5'],
}, },
taiko: {
threshold: 2,
validators: [
'0xa930073c8f2d0b2f7423ea32293e0d1362e65d79',
'0xcf0211fafbb91fd9d06d7e306b30032dc3a1934f', // merkly
'0x4f977a59fdc2d9e39f6d780a84d5b4add1495a36', // mitosis
],
},
viction: { viction: {
threshold: 2, threshold: 2,
validators: [ validators: [

Loading…
Cancel
Save