Ancient8 deploy (#3472)

### Description

- Deploys ancient8 core
- Deploys a USDC warp route from Ethereum to ancient8
- Some changes to the key generation step - specifically:
- `scripts/create-keys.ts` now expects `--newChainValidators
chainname=1` instead of the flag `--newChains`
- fixed the logic around adding new validators, which previously was
broken
- Adds a hook module to deploy.ts - this is meant to be used in a
similar fashion to the warp module, where configs are built ad-hoc
- changes `aw-multisig.json` to be `aw-multisig-${context}.json`, as
previously the entire aw-multisig.json would be overridden no matter
what the current context was
pull/3561/head
Trevor Porter 8 months ago committed by GitHub
parent 24e1f86d25
commit 526d27db04
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
  1. 843
      rust/config/mainnet3_config.json
  2. 3
      typescript/infra/config/aw-multisig-hyperlane.json
  3. 179
      typescript/infra/config/aw-multisig-rc.json
  4. 14
      typescript/infra/config/environments/mainnet3/agent.ts
  5. 2960
      typescript/infra/config/environments/mainnet3/core/verification.json
  6. 1
      typescript/infra/config/environments/mainnet3/gasPrices.json
  7. 2392
      typescript/infra/config/environments/mainnet3/ism/verification.json
  8. 1
      typescript/infra/config/environments/mainnet3/testrecipient/verification.json
  9. 1
      typescript/infra/config/environments/mainnet3/tokenPrices.json
  10. 14
      typescript/infra/config/environments/mainnet3/validators.ts
  11. 12
      typescript/infra/config/environments/mainnet3/warp/addresses.json
  12. 8
      typescript/infra/config/environments/mainnet3/warp/ancient8-USDC-addresses.json
  13. 130
      typescript/infra/config/environments/mainnet3/warp/verification.json
  14. 72
      typescript/infra/scripts/agent-utils.ts
  15. 71
      typescript/infra/scripts/deploy.ts
  16. 14
      typescript/infra/scripts/print-token-prices.ts
  17. 14
      typescript/infra/src/agents/key-utils.ts
  18. 9
      typescript/infra/src/config/warp.ts
  19. 27
      typescript/sdk/src/consts/chainMetadata.ts
  20. 2
      typescript/sdk/src/consts/chains.ts
  21. 213
      typescript/sdk/src/consts/environments/mainnet.json
  22. 5
      typescript/sdk/src/consts/multisigIsm.ts
  23. 2
      typescript/sdk/src/ism/HyperlaneIsmFactory.ts

File diff suppressed because it is too large Load Diff

@ -6,6 +6,9 @@
"0x86485dcec5f7bb8478dd251676372d054dea6653"
]
},
"ancient8": {
"validators": ["0xbb5842ae0e05215b53df4787a29144efb7e67551"]
},
"arbitrum": {
"validators": [
"0x4d966438fe9e2b1e7124c87bbb90cb4f0f6c59a1",

@ -0,0 +1,179 @@
{
"alfajores": {
"validators": [
"0x2233a5ce12f814bd64c9cdd73410bb8693124d40",
"0xba279f965489d90f90490e3c49e860e0b43c2ae6",
"0x86485dcec5f7bb8478dd251676372d054dea6653"
]
},
"ancient8": {
"validators": ["0xaae4d879a04e3d8b956eb4ffbefd57fdbed09cae"]
},
"arbitrum": {
"validators": [
"0xb4c18167c163391facb345bb069d12d0430a6a89",
"0x2f6dc057ae079997f76205903b85c8302164a78c",
"0x229d4dc6a740212da746b0e35314419a24bc2a5b"
]
},
"avalanche": {
"validators": [
"0x2c7cf6d1796e37676ba95f056ff21bf536c6c2d3",
"0xcd250d48d16e2ce4b939d44b5215f9e978975152",
"0x26691cd3e9c1b8a82588606b31d9d69b14cb2729"
]
},
"base": {
"validators": [
"0xa8363570749080c7faa1de714e0782ff444af4cc",
"0x3b55d9febe02a9038ef8c867fa8bbfdd8d70f9b8",
"0xed7703e06572768bb09e03d88e6b788d8800b9fb"
]
},
"bsc": {
"validators": [
"0x911dfcc19dd5b723e84be452f6af52adef020bc8",
"0xee2d4fd5fe2170e51c6279552297117feaeb19e1",
"0x50ff94984161976a13e9ec3b2a7647da5319448f"
]
},
"bsctestnet": {
"validators": [
"0x242d8a855a8c932dec51f7999ae7d1e48b10c95e",
"0xf620f5e3d25a3ae848fec74bccae5de3edcd8796",
"0x1f030345963c54ff8229720dd3a711c15c554aeb"
]
},
"celo": {
"validators": [
"0xb51768c1388e976486a43dbbbbf9ce04cf45e990",
"0x6325de37b33e20089c091950518a471e29c52883",
"0xd796c1d4fcfb3c63acfa6e4113aa6ae1399b337c"
]
},
"eclipsetestnet": {
"validators": ["0xf344f34abca9a444545b5295066348a0ae22dda3"]
},
"ethereum": {
"validators": [
"0x0580884289890805802012b9872afa5ae41a5fa6",
"0xa5465cb5095a2e6093587e644d6121d6ed55c632",
"0x87cf8a85465118aff9ec728ca157798201b1e368"
]
},
"fuji": {
"validators": [
"0xd8154f73d04cc7f7f0c332793692e6e6f6b2402e",
"0x895ae30bc83ff1493b9cf7781b0b813d23659857",
"0x43e915573d9f1383cbf482049e4a012290759e7f"
]
},
"gnosis": {
"validators": [
"0xd5122daa0c3dfc94a825ae928f3ea138cdb6a2e1",
"0x2d1f367e942585f8a1c25c742397dc8be9a61dee",
"0x2111141b7f985d305f392c502ad52dd74ef9c569"
]
},
"inevm": {
"validators": [
"0x52a0376903294c796c091c785a66c62943d99aa8",
"0xc2ea1799664f753bedb9872d617e3ebc60b2e0ab",
"0xe83d36fd00d9ef86243d9f7147b29e98d11df0ee"
]
},
"injective": {
"validators": [
"0xbfb8911b72cfb138c7ce517c57d9c691535dc517",
"0x6faa139c33a7e6f53cb101f6b2ae392298283ed2",
"0x0115e3a66820fb99da30d30e2ce52a453ba99d92"
]
},
"mantapacific": {
"validators": [
"0x84fcb05e6e5961df2dfd9f36e8f2b3e87ede7d76",
"0x45f3e2655a08feda821ee7b495cf2595401e1569",
"0x4cfccfd66dbb702b643b56f6986a928ed1b50c7e"
]
},
"moonbeam": {
"validators": [
"0x75e3cd4e909089ae6c9f3a42b1468b33eec84161",
"0xc28418d0858a82a46a11e07db75f8bf4eed43881",
"0xcaa9c6e6efa35e4a8b47565f3ce98845fa638bf3"
]
},
"mumbai": {
"validators": [
"0xebc301013b6cd2548e347c28d2dc43ec20c068f2",
"0x315db9868fc8813b221b1694f8760ece39f45447",
"0x17517c98358c5937c5d9ee47ce1f5b4c2b7fc9f5"
]
},
"neutron": {
"validators": [
"0x307a8fe091b8273c7ce3d277b161b4a2167279b1",
"0xb825c1bd020cb068f477b320f591b32e26814b5b",
"0x0a5b31090d4c3c207b9ea6708f938e328f895fce"
]
},
"optimism": {
"validators": [
"0x7e4391786e0b5b0cbaada12d32c931e46e44f104",
"0x138ca73e805afa14e85d80f6e35c46e6f235429e",
"0x2d58cdb2bed9aac57b488b1bad06839ddc280a78"
]
},
"plumetestnet": {
"validators": [
"0xe765a214849f3ecdf00793b97d00422f2d408ea6",
"0xb59998f71efc65190a85ac5e81b66bd72a192a3b",
"0xc906470a73e6b5aad65a4ceb4acd73e3eaf80e2c"
]
},
"polygon": {
"validators": [
"0xf0a990959f833ccde624c8bcd4c7669286a57a0f",
"0x456b636bdde99d69176261d7a4fba42c16f57f56",
"0xe78d3681d4f59e0768be8b1171f920ed4d52409f"
]
},
"polygonzkevm": {
"validators": [
"0x75cffb90391d7ecf58a84e9e70c67e7b306211c0",
"0x82c10acb56f3d7ed6738b61668111a6b5250283e",
"0x1cd73544c000fd519784f56e59bc380a5fef53d6"
]
},
"scroll": {
"validators": [
"0x11387d89856219cf685f22781bf4e85e00468d54",
"0x64b98b96ccae6e660ecf373b5dd61bcc34fd19ee",
"0x07c2f32a402543badc3141f6b98969d75ef2ac28"
]
},
"scrollsepolia": {
"validators": [
"0xbe18dbd758afb367180260b524e6d4bcd1cb6d05",
"0x9a11ed23ae962974018ab45bc133caabff7b3271",
"0x7867bea3c9761fe64e6d124b171f91fd5dd79644"
]
},
"sepolia": {
"validators": [
"0xb22b65f202558adf86a8bb2847b76ae1036686a5",
"0x469f0940684d147defc44f3647146cb90dd0bc8e",
"0xd3c75dcf15056012a4d74c483a0c6ea11d8c2b83"
]
},
"solanatestnet": {
"validators": ["0xd4ce8fa138d4e083fc0e480cca0dbfa4f5f30bd5"]
},
"viction": {
"validators": [
"0xe858971cd865b11d3e8fb6b6af72db0d85881baf",
"0xad94659e2383214e4a1c4e8d3c17caffb75bc31b",
"0x0f9e5775ac4d3b73dd28e5a3f8394443186cb70c"
]
}
}

@ -22,6 +22,7 @@ import { Contexts } from '../../contexts';
import { environment, supportedChainNames } from './chains';
import { helloWorld } from './helloworld';
import { validatorChainConfig } from './validators';
import ancient8EthereumUsdcAddresses from './warp/ancient8-USDC-addresses.json';
import arbitrumTIAAddresses from './warp/arbitrum-TIA-addresses.json';
import inevmEthereumUsdcAddresses from './warp/inevm-USDC-addresses.json';
import inevmEthereumUsdtAddresses from './warp/inevm-USDT-addresses.json';
@ -46,6 +47,7 @@ export const hyperlaneContextAgentChainConfig: AgentChainConfig = {
// Generally, we run all production validators in the Hyperlane context.
[Role.Validator]: {
[Chains.arbitrum]: true,
[Chains.ancient8]: true,
[Chains.avalanche]: true,
[Chains.bsc]: true,
[Chains.celo]: true,
@ -65,6 +67,7 @@ export const hyperlaneContextAgentChainConfig: AgentChainConfig = {
},
[Role.Relayer]: {
[Chains.arbitrum]: true,
[Chains.ancient8]: true,
[Chains.avalanche]: true,
[Chains.bsc]: true,
[Chains.celo]: true,
@ -85,6 +88,7 @@ export const hyperlaneContextAgentChainConfig: AgentChainConfig = {
},
[Role.Scraper]: {
[Chains.arbitrum]: true,
[Chains.ancient8]: false,
[Chains.avalanche]: true,
[Chains.bsc]: true,
[Chains.celo]: true,
@ -136,8 +140,7 @@ const hyperlane: RootAgentConfig = {
rpcConsensusType: RpcConsensusType.Fallback,
docker: {
repo,
// Includes Cosmos block-by-block indexing.
tag: 'ff6b060-20240328-112429',
tag: '2150e58-20240404-105923',
},
gasPaymentEnforcement: [
// Temporary measure to ensure all inEVM warp route messages are delivered -
@ -179,12 +182,16 @@ const hyperlane: RootAgentConfig = {
name: 'viction_ethereum_usdt',
matchingList: routerMatchingList(victionEthereumUsdtAddresses),
},
{
name: 'ancient8_ethereum_usdc',
matchingList: routerMatchingList(ancient8EthereumUsdcAddresses),
},
],
},
validators: {
docker: {
repo,
tag: 'ae0990a-20240313-215426',
tag: 'c1da894-20240321-175000',
},
rpcConsensusType: RpcConsensusType.Quorum,
chains: validatorChainConfig(Contexts.Hyperlane),
@ -243,7 +250,6 @@ const neutron: RootAgentConfig = {
rpcConsensusType: RpcConsensusType.Fallback,
docker: {
repo,
// Includes Cosmos block-by-block indexing.
tag: 'a72c3cf-20240314-173418',
},
gasPaymentEnforcement: [

@ -1,4 +1,5 @@
{
"ancient8": "1",
"arbitrum": "0.1",
"avalanche": "43.212830197",
"bsc": "1.350070319",

@ -1,4 +1,5 @@
{
"ancient8": "2914.61",
"arbitrum": "2914.61",
"avalanche": "35.71",
"bsc": "373.19",

@ -11,6 +11,20 @@ export const validatorChainConfig = (
): ValidatorBaseChainConfigMap => {
const validatorsConfig = validatorBaseConfigsFn(environment, context);
return {
ancient8: {
interval: 5,
reorgPeriod: getReorgPeriod(chainMetadata.ancient8),
validators: validatorsConfig(
{
[Contexts.Hyperlane]: ['0xbb5842ae0e05215b53df4787a29144efb7e67551'],
[Contexts.ReleaseCandidate]: [
'0xaae4d879a04e3d8b956eb4ffbefd57fdbed09cae',
],
[Contexts.Neutron]: [],
},
'ancient8',
),
},
celo: {
interval: 5,
reorgPeriod: getReorgPeriod(chainMetadata.celo),

@ -1,10 +1,10 @@
{
"injective": {
"native": "inj1mv9tjvkaw7x8w8y9vds8pkfq46g2vcfkjehc6k",
"router": "inj1mv9tjvkaw7x8w8y9vds8pkfq46g2vcfkjehc6k"
"ancient8": {
"HypERC20": "0x97423A68BAe94b5De52d767a17aBCc54c157c0E5",
"synthetic": "0x97423A68BAe94b5De52d767a17aBCc54c157c0E5"
},
"inevm": {
"native": "0x26f32245fCF5Ad53159E875d5Cae62aEcf19c2d4",
"router": "0x26f32245fCF5Ad53159E875d5Cae62aEcf19c2d4"
"ethereum": {
"HypERC20Collateral": "0x8b4192B9Ad1fCa440A5808641261e5289e6de95D",
"collateral": "0x8b4192B9Ad1fCa440A5808641261e5289e6de95D"
}
}

@ -0,0 +1,8 @@
{
"ancient8": {
"router": "0x97423A68BAe94b5De52d767a17aBCc54c157c0E5"
},
"ethereum": {
"router": "0x8b4192B9Ad1fCa440A5808641261e5289e6de95D"
}
}

@ -1,76 +1,138 @@
{
"arbitrum": [
"ancient8": [
{
"name": "HypERC20",
"address": "0x93ca0d85837FF83158Cd14D65B169CdB223b1921",
"constructorArguments": "0000000000000000000000000000000000000000000000000000000000000006000000000000000000000000979ca5202784112f4738403dbec5d0f3b9daabb9",
"isProxy": false
}
],
"viction": [
"address": "0xB3fCcD379ad66CED0c91028520C64226611A48c9",
"constructorArguments": "00000000000000000000000000000000000000000000000000000000000000060000000000000000000000002f2afae1139ce54fefc03593fee8ab2adf4a85a7",
"isProxy": false,
"name": "Synthetic"
},
{
"name": "HypERC20",
"address": "0x182E8d7c5F1B06201b102123FC7dF0EaeB445a7B",
"constructorArguments": "00000000000000000000000000000000000000000000000000000000000000120000000000000000000000002f2afae1139ce54fefc03593fee8ab2adf4a85a7",
"isProxy": false
"address": "0xdB670e1a1e312BF17425b08cE55Bdf2cD8F8eD54",
"constructorArguments": "",
"isProxy": false,
"name": "ProxyAdmin"
},
{
"name": "HypERC20",
"address": "0x811808Dd29ba8B0FC6C0ec0b5537035E59745162",
"constructorArguments": "00000000000000000000000000000000000000000000000000000000000000120000000000000000000000002f2afae1139ce54fefc03593fee8ab2adf4a85a7",
"isProxy": false
"address": "0x9fA986ACB22953c504Fcf5985DFA476d481C3b1B",
"constructorArguments": "00000000000000000000000000000000000000000000000000000000000000060000000000000000000000002f2afae1139ce54fefc03593fee8ab2adf4a85a7",
"isProxy": false,
"name": "HypERC20"
},
{
"name": "HypERC20",
"address": "0x61DDB465eEA5bc3708Cf8B53156aC91a77A2f029",
"constructorArguments": "00000000000000000000000000000000000000000000000000000000000000120000000000000000000000002f2afae1139ce54fefc03593fee8ab2adf4a85a7",
"isProxy": false
"address": "0x97423A68BAe94b5De52d767a17aBCc54c157c0E5",
"constructorArguments": "0000000000000000000000009fa986acb22953c504fcf5985dfa476d481c3b1b000000000000000000000000db670e1a1e312bf17425b08ce55bdf2cd8f8ed5400000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000144e80a7c79000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba000000000000000000000000000000000000000000000000000000000000000855534420436f696e0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004555344430000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"isProxy": true,
"name": "TransparentUpgradeableProxy"
}
],
"arbitrum": [
{
"address": "0x93ca0d85837FF83158Cd14D65B169CdB223b1921",
"constructorArguments": "0000000000000000000000000000000000000000000000000000000000000006000000000000000000000000979ca5202784112f4738403dbec5d0f3b9daabb9",
"isProxy": false,
"name": "HypERC20"
}
],
"ethereum": [
{
"name": "HypNative",
"address": "0x15b5D6B614242B118AA404528A7f3E2Ad241e4A4",
"constructorArguments": "000000000000000000000000c005dc82818d67af737725bd4bf75435d065d239",
"isProxy": false
"isProxy": false,
"name": "HypNative"
},
{
"name": "HypERC20Collateral",
"address": "0x31Dca7762930f56D81292f85E65c9D67575804fE",
"constructorArguments": "000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000c005dc82818d67af737725bd4bf75435d065d239",
"isProxy": false
"isProxy": false,
"name": "HypERC20Collateral"
},
{
"name": "HypERC20Collateral",
"address": "0x4221a16A01F61c2b38A03C52d828a7041f6AAA49",
"constructorArguments": "000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000c005dc82818d67af737725bd4bf75435d065d239",
"isProxy": false
"isProxy": false,
"name": "HypERC20Collateral"
},
{
"name": "HypERC20Collateral",
"address": "0xab852e67bf03E74C89aF67C4BA97dd1088D3dA19",
"constructorArguments": "000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000c005dc82818d67af737725bd4bf75435d065d239",
"isProxy": false
"isProxy": false,
"name": "HypERC20Collateral"
},
{
"name": "HypERC20Collateral",
"address": "0xED56728fb977b0bBdacf65bCdD5e17Bb7e84504f",
"constructorArguments": "000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000c005dc82818d67af737725bd4bf75435d065d239",
"isProxy": false
"isProxy": false,
"name": "HypERC20Collateral"
},
{
"address": "0x9f5cF636b4F2DC6D83c9d21c8911876C235DbC9f",
"constructorArguments": "000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000c005dc82818d67af737725bd4bf75435d065d239",
"isProxy": false,
"name": "Collateral"
},
{
"address": "0x870464fE2EA3a6b3c242f30BDa1f1EFdDf580890",
"constructorArguments": "",
"isProxy": false,
"name": "ProxyAdmin"
},
{
"address": "0x870464fE2EA3a6b3c242f30BDa1f1EFdDf580890",
"constructorArguments": "",
"isProxy": false,
"name": "ProxyAdmin"
},
{
"address": "0xEd96482beA3C51a33b4c1aDa8b438e33A2367413",
"constructorArguments": "",
"isProxy": false,
"name": "ProxyAdmin"
},
{
"address": "0x7D0C8B23C5b35091972023cCc689cfeDcD881c7d",
"constructorArguments": "000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000c005dc82818d67af737725bd4bf75435d065d239",
"isProxy": false,
"name": "HypERC20Collateral"
},
{
"address": "0x8b4192B9Ad1fCa440A5808641261e5289e6de95D",
"constructorArguments": "0000000000000000000000007d0c8b23c5b35091972023ccc689cfedcd881c7d000000000000000000000000ed96482bea3c51a33b4c1ada8b438e33a236741300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000000064c0c53b8b00000000000000000000000019b2cf952b70b217c90fc408714fbc1acd29a6a8000000000000000000000000d17b4100cc66a2f1b9a452007ff26365aaeb7ec3000000000000000000000000a7eccdb9be08178f896c26b7bbd8c3d4e844d9ba00000000000000000000000000000000000000000000000000000000",
"isProxy": true,
"name": "TransparentUpgradeableProxy"
}
],
"inevm": [
{
"name": "HypERC20",
"address": "0x97423A68BAe94b5De52d767a17aBCc54c157c0E5",
"constructorArguments": "00000000000000000000000000000000000000000000000000000000000000060000000000000000000000002f2afae1139ce54fefc03593fee8ab2adf4a85a7",
"isProxy": false
"isProxy": false,
"name": "HypERC20"
},
{
"name": "HypERC20",
"address": "0x8358D8291e3bEDb04804975eEa0fe9fe0fAfB147",
"constructorArguments": "00000000000000000000000000000000000000000000000000000000000000060000000000000000000000002f2afae1139ce54fefc03593fee8ab2adf4a85a7",
"isProxy": false
"isProxy": false,
"name": "HypERC20"
}
],
"viction": [
{
"address": "0x182E8d7c5F1B06201b102123FC7dF0EaeB445a7B",
"constructorArguments": "00000000000000000000000000000000000000000000000000000000000000120000000000000000000000002f2afae1139ce54fefc03593fee8ab2adf4a85a7",
"isProxy": false,
"name": "HypERC20"
},
{
"address": "0x811808Dd29ba8B0FC6C0ec0b5537035E59745162",
"constructorArguments": "00000000000000000000000000000000000000000000000000000000000000120000000000000000000000002f2afae1139ce54fefc03593fee8ab2adf4a85a7",
"isProxy": false,
"name": "HypERC20"
},
{
"address": "0x61DDB465eEA5bc3708Cf8B53156aC91a77A2f029",
"constructorArguments": "00000000000000000000000000000000000000000000000000000000000000120000000000000000000000002f2afae1139ce54fefc03593fee8ab2adf4a85a7",
"isProxy": false,
"name": "HypERC20"
}
]
}

@ -14,7 +14,12 @@ import {
chainMetadata,
collectValidators,
} from '@hyperlane-xyz/sdk';
import { ProtocolType, objMap, promiseObjAll } from '@hyperlane-xyz/utils';
import {
ProtocolType,
objMap,
promiseObjAll,
symmetricDifference,
} from '@hyperlane-xyz/utils';
import { Contexts } from '../config/contexts';
import { agents } from '../config/environments/agents';
@ -56,6 +61,7 @@ export const SDK_MODULES = [
Modules.INTERCHAIN_ACCOUNTS,
Modules.INTERCHAIN_QUERY_SYSTEM,
Modules.TEST_RECIPIENT,
Modules.HOOK,
];
export function getArgs() {
@ -127,11 +133,14 @@ export function withKeyRoleAndChain<T>(args: yargs.Argv<T>) {
}
// missing chains are chains needed which are not as part of defaultMultisigConfigs in sdk/src/consts/ but are in chainMetadata
export function withMissingChains<T>(args: yargs.Argv<T>) {
export function withNewChainValidators<T>(args: yargs.Argv<T>) {
return args
.describe('newChains', 'new chains to add')
.string('newChains')
.alias('n', 'newChains');
.describe(
'newChainValidators',
'new chains to add and how many validators, e.g. "mynewchain=3,myothernewchain=5"',
)
.string('newChainValidators')
.alias('n', 'newChainValidators');
}
export function withBuildArtifactPath<T>(args: yargs.Argv<T>) {
@ -154,17 +163,17 @@ export function assertEnvironment(env: string): DeployEnvironment {
export async function getAgentConfigsBasedOnArgs(argv?: {
environment: DeployEnvironment;
context: Contexts;
newChains: string;
newChainValidators: string;
}) {
const {
environment,
context = Contexts.Hyperlane,
newChains,
} = argv ? argv : await withMissingChains(withContext(getArgs())).argv;
newChainValidators,
} = argv ? argv : await withNewChainValidators(withContext(getArgs())).argv;
const newValidatorCounts: ChainMap<number> = {};
if (newChains) {
const chains = newChains.split(',');
if (newChainValidators) {
const chains = newChainValidators.split(',');
for (const chain of chains) {
const [chainName, newValidatorCount] = chain.split('=');
newValidatorCounts[chainName] = parseInt(newValidatorCount, 10);
@ -172,14 +181,8 @@ export async function getAgentConfigsBasedOnArgs(argv?: {
}
const agentConfig = getAgentConfig(context, environment);
// check if new chains are needed
const missingChains = checkIfValidatorsArePersisted(agentConfig);
// if you include a chain in chainMetadata but not in the aw-multisig.json, you need to specify the new chain in new-chains
for (const chain of missingChains) {
if (!Object.keys(newValidatorCounts).includes(chain)) {
throw new Error(`Missing chain ${chain} not specified in new-chains`);
}
for (const [chain, validatorCount] of Object.entries(newValidatorCounts)) {
const baseConfig = {
[Contexts.Hyperlane]: [],
[Contexts.ReleaseCandidate]: [],
@ -191,7 +194,7 @@ export async function getAgentConfigsBasedOnArgs(argv?: {
const validators = validatorsConfig(
{
...baseConfig,
[context]: Array(newValidatorCounts[chain]).fill('0x0'),
[context]: Array(validatorCount).fill('0x0'),
},
chain as Chains,
);
@ -206,8 +209,17 @@ export async function getAgentConfigsBasedOnArgs(argv?: {
reorgPeriod: chainMetadata[chain].blocks?.reorgPeriod ?? 0, // dummy value
validators,
};
// In addition to creating a new entry in agentConfig.validators, we update
// the contextChainNames.validator array to include the new chain.
if (!agentConfig.contextChainNames.validator.includes(chain)) {
agentConfig.contextChainNames.validator.push(chain);
}
}
// Sanity check that the validator agent config is valid.
ensureValidatorConfigConsistency(agentConfig);
return {
agentConfig,
context,
@ -233,15 +245,23 @@ export function getAgentConfig(
return agentsForEnvironment[context];
}
// check if validators are persisted in agentConfig
export function checkIfValidatorsArePersisted(
agentConfig: RootAgentConfig,
): Set<ChainName> {
const supportedChainNames = agentConfig.contextChainNames.validator;
const persistedChainNames = Object.keys(agentConfig.validators?.chains || {});
return new Set(
supportedChainNames.filter((x) => !persistedChainNames.includes(x)),
// Ensures that the validator context chain names are in sync with the validator config.
export function ensureValidatorConfigConsistency(agentConfig: RootAgentConfig) {
const validatorContextChainNames = new Set(
agentConfig.contextChainNames.validator,
);
const validatorConfigChains = new Set(
Object.keys(agentConfig.validators?.chains || {}),
);
const symDiff = symmetricDifference(
validatorContextChainNames,
validatorConfigChains,
);
if (symDiff.size > 0) {
throw new Error(
`Validator config invalid. Validator context chain names: ${validatorContextChainNames}, validator config chains: ${validatorConfigChains}, diff: ${symDiff}`,
);
}
}
export function getKeyForRole(

@ -7,25 +7,34 @@ import {
ChainMap,
ContractVerifier,
ExplorerLicenseType,
FallbackRoutingHookConfig,
HypERC20Deployer,
HyperlaneCore,
HyperlaneCoreDeployer,
HyperlaneDeployer,
HyperlaneHookDeployer,
HyperlaneIgpDeployer,
HyperlaneIsmFactory,
HyperlaneProxyFactoryDeployer,
InterchainAccount,
InterchainAccountDeployer,
InterchainQueryDeployer,
IsmConfig,
IsmType,
LiquidityLayerDeployer,
TestRecipientDeployer,
TokenType,
buildAggregationIsmConfigs,
defaultMultisigConfigs,
hyperlaneEnvironments,
} from '@hyperlane-xyz/sdk';
import { objMap } from '@hyperlane-xyz/utils';
import { Contexts } from '../config/contexts';
import { safes } from '../config/environments/mainnet3/owners';
import { core as coreConfig } from '../config/environments/mainnet3/core';
import { DEPLOYER } from '../config/environments/mainnet3/owners';
import { deployEnvToSdkEnv } from '../src/config/environment';
import { tokens } from '../src/config/warp';
import { deployWithArtifacts } from '../src/deployment/deploy';
import { TestQuerySenderDeployer } from '../src/deployment/testcontracts/testquerysender';
import {
@ -122,19 +131,41 @@ async function main() {
multiProvider,
);
const routerConfig = core.getRouterConfig(envConfig.owners);
const inevm = {
...routerConfig.inevm,
type: TokenType.native,
interchainSecurityModule: ethers.constants.AddressZero,
owner: safes.inevm,
const ethereum = {
...routerConfig.ethereum,
type: TokenType.collateral,
token: tokens.ethereum.USDC,
// Really, this should be an object config from something like:
// buildAggregationIsmConfigs(
// 'ethereum',
// ['ancient8'],
// defaultMultisigConfigs,
// ).ancient8
// However ISM objects are no longer able to be passed directly to the warp route
// deployer. As a temporary workaround, I'm using an ISM address from a previous
// ethereum <> ancient8 warp route deployment:
// $ cast call 0x9f5cF636b4F2DC6D83c9d21c8911876C235DbC9f 'interchainSecurityModule()(address)' --rpc-url https://rpc.ankr.com/eth
// 0xD17B4100cC66A2F1B9a452007ff26365aaeB7EC3
interchainSecurityModule: '0xD17B4100cC66A2F1B9a452007ff26365aaeB7EC3',
// This hook was recovered from running the deploy script
// for the hook module. The hook configuration is the Ethereum
// default hook for the Ancient8 remote (no routing).
hook: '0x19b2cF952b70b217c90FC408714Fbc1acD29A6A8',
owner: DEPLOYER,
};
const injective = {
...routerConfig.injective,
type: TokenType.native,
const ancient8 = {
...routerConfig.ancient8,
type: TokenType.synthetic,
// Uses the default ISM
interchainSecurityModule: ethers.constants.AddressZero,
owner: DEPLOYER,
};
config = {
inevm,
injective,
ethereum,
ancient8,
};
deployer = new HypERC20Deployer(
multiProvider,
@ -197,6 +228,24 @@ async function main() {
undefined,
contractVerifier,
);
} else if (module === Modules.HOOK) {
const ismFactory = HyperlaneIsmFactory.fromAddressesMap(
getAddresses(environment, Modules.PROXY_FACTORY),
multiProvider,
);
deployer = new HyperlaneHookDeployer(
multiProvider,
hyperlaneEnvironments[env],
ismFactory,
);
// Config is intended to be changed for ad-hoc use cases:
config = {
ethereum: {
...(coreConfig.ethereum.defaultHook as FallbackRoutingHookConfig)
.domains.ancient8,
owner: DEPLOYER,
},
};
} else {
console.log(`Skipping ${module}, deployer unimplemented`);
return;

@ -20,7 +20,19 @@ async function main() {
const idPrices = await resp.json();
const prices = objMap(ids, (_, id) => idPrices[id][CURRENCY].toString());
const prices = objMap(ids, (_, id) => {
const idData = idPrices[id];
if (!idData) {
throw new Error(
`No data for ${id}, did you set gasCurrencyCoinGeckoId in the metadata?`,
);
}
const price = idData[CURRENCY];
if (!price) {
throw new Error(`No ${CURRENCY} price for ${id}`);
}
return price.toString();
});
console.log(JSON.stringify(prices, null, 2));
}

@ -5,7 +5,7 @@ import path from 'path';
import { ChainMap, ChainName } from '@hyperlane-xyz/sdk';
import { Address, objMap } from '@hyperlane-xyz/utils';
import localAWMultisigAddresses from '../../config/aw-multisig.json';
import localAWMultisigAddresses from '../../config/aw-multisig-hyperlane.json';
// AW - Abacus Works
import { Contexts } from '../../config/contexts';
import { helloworld } from '../../config/environments/helloworld';
@ -436,7 +436,10 @@ async function persistAddressesLocally(
relayerAddresses,
);
await persistValidatorAddressesToLocalArtifacts(multisigValidatorKeys);
await persistValidatorAddressesToLocalArtifacts(
agentConfig.context,
multisigValidatorKeys,
);
}
// non-validator roles
@ -457,6 +460,7 @@ export async function persistRoleAddressesToLocalArtifacts(
// maintaining the multisigIsm schema sans threshold
export async function persistValidatorAddressesToLocalArtifacts(
context: Contexts,
fetchedValidatorAddresses: ChainMap<{ validators: Address[] }>,
) {
for (const chain of Object.keys(fetchedValidatorAddresses)) {
@ -465,7 +469,11 @@ export async function persistValidatorAddressesToLocalArtifacts(
};
}
// Write the updated object back to the file
writeJSON(CONFIG_DIRECTORY_PATH, 'aw-multisig.json', awMultisigAddresses);
writeJSON(
CONFIG_DIRECTORY_PATH,
`aw-multisig-${context}.json`,
awMultisigAddresses,
);
}
export function fetchLocalKeyAddresses(role: Role): LocalRoleAddresses {

@ -0,0 +1,9 @@
import { ChainMap } from '@hyperlane-xyz/sdk';
import { Address } from '@hyperlane-xyz/utils';
// Common collateral tokens to be used by warp route deployments.
export const tokens: ChainMap<Record<string, Address>> = {
ethereum: {
USDC: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48',
},
};

@ -50,6 +50,32 @@ export const alfajores: ChainMetadata = {
rpcUrls: [{ http: 'https://alfajores-forno.celo-testnet.org' }],
};
export const ancient8: ChainMetadata = {
blockExplorers: [
{
apiUrl: 'https://scan.ancient8.gg/api',
family: ExplorerFamily.Blockscout,
name: 'Ancient8 Explorer',
url: 'https://scan.ancient8.gg',
},
],
blocks: {
confirmations: 1,
estimateBlockTime: 2,
reorgPeriod: 0,
},
chainId: 888888888,
displayName: 'Ancient8',
domainId: 888888888,
gasCurrencyCoinGeckoId: 'ethereum',
isTestnet: false,
name: Chains.ancient8,
nativeToken: etherToken,
protocol: ProtocolType.Ethereum,
rpcUrls: [{ http: 'https://rpc.ancient8.gg' }],
technicalStack: ChainTechnicalStack.Other,
};
export const arbitrum: ChainMetadata = {
blockExplorers: [
{
@ -934,6 +960,7 @@ export const viction: ChainMetadata = {
*/
export const chainMetadata: ChainMap<ChainMetadata> = {
alfajores,
ancient8,
arbitrum,
avalanche,
base,

@ -4,6 +4,7 @@
*/
export enum Chains {
alfajores = 'alfajores',
ancient8 = 'ancient8',
arbitrum = 'arbitrum',
avalanche = 'avalanche',
base = 'base',
@ -53,6 +54,7 @@ export const AllDeprecatedChains = Object.keys(DeprecatedChains) as string[];
export const Mainnets: Array<CoreChainName> = [
Chains.arbitrum,
Chains.ancient8,
Chains.avalanche,
Chains.bsc,
Chains.celo,

@ -1,342 +1,315 @@
{
"ancient8": {
"staticAggregationHookFactory": "0xEb9FcFDC9EfDC17c1EC5E1dc085B98485da213D6",
"staticAggregationIsmFactory": "0x8F7454AC98228f3504Bb91eA3D8Adafe6406110A",
"fallbackRoutingHook": "0x5E01d8F34b629E3f92d69546bbc4142A7Adee7e9",
"interchainGasPaymaster": "0x8F1E22d309baa69D398a03cc88E9b46037e988AA",
"interchainSecurityModule": "0x6E3387e12C6e181BF8e712eCa9c60ccEEaBD1c67",
"mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7",
"staticMerkleRootMultisigIsmFactory": "0x2C1FAbEcd7bFBdEBF27CcdB67baADB38b6Df90fC",
"merkleTreeHook": "0x811808Dd29ba8B0FC6C0ec0b5537035E59745162",
"staticMessageIdMultisigIsmFactory": "0x8b83fefd896fAa52057798f6426E9f0B080FCCcE",
"pausableHook": "0x66DC49405Ae2956f7E87FEAa9fE8f506C8987462",
"protocolFee": "0xE0C452DDA7506f0F4dE5C8C1d383F7aD866eA4F0",
"proxyAdmin": "0x0761b0827849abbf7b0cC09CE14e1C93D87f5004",
"domainRoutingIsmFactory": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908",
"storageGasOracle": "0x59Bf7c7b458375b1A7c453aE70EaCb376E65CDAF",
"testRecipient": "0x2Fa570E83009eaEef3a1cbd496a9a30F05266634",
"validatorAnnounce": "0x931dFCc8c1141D6F532FD023bd87DAe0080c835d"
},
"arbitrum": {
"aggregationHook": "0xe0cb37cFc47296f1c4eD77EFf92Aed478644d10c",
"domainRoutingIsmFactory": "0xa2931C37957f3079d3B21b877d56E1db930e02a5",
"staticAggregationHookFactory": "0x9B5f440bBb64Fee337F37e03362b628711Ea09C7",
"staticAggregationIsmFactory": "0xD4883084389fC1Eeb4dAfB2ADcFc36B711c310EB",
"fallbackRoutingHook": "0x9e8fFb1c26099e75Dd5D794030e2E9AA51471c25",
"interchainAccountIsm": "0xfa8bfcE55B3A0631dF38257615cEF7FCD3523A48",
"interchainAccountRouter": "0xCD0CFFf6eFD943b4b81f2c15847730dbcD30e3aE",
"interchainGasPaymaster": "0x3b6044acd6767f017e99318AA6Ef93b7B06A5a22",
"interchainSecurityModule": "0xD0DBBF922076352cC50B285A0023536561F00EEa",
"mailbox": "0x979Ca5202784112f4738403dBec5D0F3B9daabB9",
"staticMerkleRootMultisigIsmFactory": "0x3C330D4A2e2b8443AFaB8E326E64ab4251B7Eae0",
"merkleTreeHook": "0x748040afB89B8FdBb992799808215419d36A0930",
"staticMessageIdMultisigIsmFactory": "0x12Df53079d399a47e9E730df095b712B0FDFA791",
"pausableHook": "0xEf30f29Dcd3FCB1DCcDA9C7Cbf2A5957E8Ee9Cc3",
"protocolFee": "0xD0199067DACb8526e7dc524a9a7DCBb57Cd25421",
"proxyAdmin": "0x80Cebd56A65e46c474a1A101e89E76C4c51D179c",
"staticAggregationHookFactory": "0x9B5f440bBb64Fee337F37e03362b628711Ea09C7",
"staticAggregationIsmFactory": "0xD4883084389fC1Eeb4dAfB2ADcFc36B711c310EB",
"staticMerkleRootMultisigIsmFactory": "0x3C330D4A2e2b8443AFaB8E326E64ab4251B7Eae0",
"staticMessageIdMultisigIsmFactory": "0x12Df53079d399a47e9E730df095b712B0FDFA791",
"domainRoutingIsmFactory": "0xa2931C37957f3079d3B21b877d56E1db930e02a5",
"storageGasOracle": "0xD3805207b65d99C075ceA938Fa7c0587026a5DF5",
"testRecipient": "0x36FdA966CfffF8a9Cdc814f546db0e6378bFef35",
"testTokenRecipient": "0x85ac1164878e017b67660a74ff1f41f3D05C02Bb",
"timelockController": "0x0000000000000000000000000000000000000000",
"validatorAnnounce": "0x1df063280C4166AF9a725e3828b4dAC6c7113B08"
},
"avalanche": {
"aggregationHook": "0x0165a22BA489F7DA37DAf6397781777D9FCB5708",
"domainRoutingIsmFactory": "0x28F7907911C7E321c596686AE6D1F20516450037",
"staticAggregationHookFactory": "0x3bF6Ac986C7Af9A9Ac356C0e99C0041EFd8D96e7",
"staticAggregationIsmFactory": "0xa5E13796eB7d2EDCc88012c8cfF90D69B51FcF9f",
"fallbackRoutingHook": "0x61D15D571D5f7A9eF0D1938f072f430bBF024747",
"interchainAccountIsm": "0x786c26C1857032617c215f265509d6E44e44Bfe3",
"interchainAccountRouter": "0xA967A6CE0e73fAf672843DECaA372511996E8852",
"interchainGasPaymaster": "0x95519ba800BBd0d34eeAE026fEc620AD978176C0",
"interchainSecurityModule": "0xA36B02a83564f52d9244310Ea439ee6F6AfeFb60",
"mailbox": "0xFf06aFcaABaDDd1fb08371f9ccA15D73D51FeBD6",
"staticMerkleRootMultisigIsmFactory": "0x896cF1D1B66cD211633eDd589fF158E8Cfaf9B54",
"merkleTreeHook": "0x84eea61D679F42D92145fA052C89900CBAccE95A",
"staticMessageIdMultisigIsmFactory": "0x8819D653DF5b1FC0DdB32189a2704E471AF8483c",
"pausableHook": "0x239eB860770F1C48ABAC9bE9825d20e3E7c018df",
"protocolFee": "0xEc4AdA26E51f2685279F37C8aE62BeAd8212D597",
"proxyAdmin": "0xd7CF8c05fd81b8cA7CfF8E6C49B08a9D63265c9B",
"staticAggregationHookFactory": "0x3bF6Ac986C7Af9A9Ac356C0e99C0041EFd8D96e7",
"staticAggregationIsmFactory": "0xa5E13796eB7d2EDCc88012c8cfF90D69B51FcF9f",
"staticMerkleRootMultisigIsmFactory": "0x896cF1D1B66cD211633eDd589fF158E8Cfaf9B54",
"staticMessageIdMultisigIsmFactory": "0x8819D653DF5b1FC0DdB32189a2704E471AF8483c",
"domainRoutingIsmFactory": "0x28F7907911C7E321c596686AE6D1F20516450037",
"storageGasOracle": "0x175821F30AdCAA4bbB72Ce98eF76C2E0De2C3f21",
"testRecipient": "0x36FdA966CfffF8a9Cdc814f546db0e6378bFef35",
"testTokenRecipient": "0x85ac1164878e017b67660a74ff1f41f3D05C02Bb",
"timelockController": "0x0000000000000000000000000000000000000000",
"validatorAnnounce": "0x9Cad0eC82328CEE2386Ec14a12E81d070a27712f"
},
"base": {
"aggregationHook": "0x13f3d4B0Ee0a713430fded9E18f7fb6c91A6E41F",
"domainRoutingIsmFactory": "0x7E27456a839BFF31CA642c060a2b68414Cb6e503",
"staticAggregationHookFactory": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908",
"staticAggregationIsmFactory": "0xEb9FcFDC9EfDC17c1EC5E1dc085B98485da213D6",
"fallbackRoutingHook": "0x4Eb82Ee35b0a1c1d776E3a3B547f9A9bA6FCC9f2",
"interchainAccountIsm": "0x861908E6c8F992537F557da5Fb5876836036b347",
"interchainAccountRouter": "0xa85F9e4fdA2FFF1c07f2726a630443af3faDF830",
"interchainGasPaymaster": "0xc3F23848Ed2e04C0c6d41bd7804fa8f89F940B94",
"interchainSecurityModule": "0x5D1e7D7c5B9e6dDC8439F67F10c578f2A1084f6F",
"mailbox": "0xeA87ae93Fa0019a82A727bfd3eBd1cFCa8f64f1D",
"staticMerkleRootMultisigIsmFactory": "0x8b83fefd896fAa52057798f6426E9f0B080FCCcE",
"merkleTreeHook": "0x19dc38aeae620380430C200a6E990D5Af5480117",
"staticMessageIdMultisigIsmFactory": "0x8F7454AC98228f3504Bb91eA3D8Adafe6406110A",
"pausableHook": "0x46fa3A5780e5B90Eaf34BDED554d5353B5ABE9E7",
"protocolFee": "0x99ca8c74cE7Cfa9d72A51fbb05F9821f5f826b3a",
"proxyAdmin": "0x4Ed7d626f1E96cD1C0401607Bf70D95243E3dEd1",
"staticAggregationHookFactory": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908",
"staticAggregationIsmFactory": "0xEb9FcFDC9EfDC17c1EC5E1dc085B98485da213D6",
"staticMerkleRootMultisigIsmFactory": "0x8b83fefd896fAa52057798f6426E9f0B080FCCcE",
"staticMessageIdMultisigIsmFactory": "0x8F7454AC98228f3504Bb91eA3D8Adafe6406110A",
"domainRoutingIsmFactory": "0x7E27456a839BFF31CA642c060a2b68414Cb6e503",
"storageGasOracle": "0xBF12ef4B9f307463D3FB59c3604F294dDCe287E2",
"timelockController": "0x0000000000000000000000000000000000000000",
"validatorAnnounce": "0x182E8d7c5F1B06201b102123FC7dF0EaeB445a7B"
},
"bsc": {
"aggregationHook": "0x402Fc106576462a892355d69ACF03D46A888ae88",
"domainRoutingIsmFactory": "0xe6Af5720d34213C805C08e2470aea979e3F72F75",
"staticAggregationHookFactory": "0xe70E86a7D1e001D419D71F960Cb6CaD59b6A3dB6",
"staticAggregationIsmFactory": "0x38B3878c4fb44d201DA924c4a04bae3EE728c065",
"fallbackRoutingHook": "0x237E81f87F57Badad9e09f13CC676D986cA852e7",
"interchainAccountIsm": "0xB274Bbbc1df5f1d1763216A93d473fde6f5de043",
"interchainAccountRouter": "0x4BBd67dC995572b40Dc6B3eB6CdE5185a5373868",
"interchainGasPaymaster": "0x78E25e7f84416e69b9339B0A6336EB6EFfF6b451",
"interchainSecurityModule": "0xab3df354baBee6c2B88E2CeD3b2e030e31aA5e61",
"mailbox": "0x2971b9Aec44bE4eb673DF1B88cDB57b96eefe8a4",
"staticMerkleRootMultisigIsmFactory": "0xfADBc81Ca8A957F1Bf7c78bCc575b28DBDE042b6",
"merkleTreeHook": "0xFDb9Cd5f9daAA2E4474019405A328a88E7484f26",
"staticMessageIdMultisigIsmFactory": "0x4B1d8352E35e3BDE36dF5ED2e73C24E35c4a96b7",
"pausableHook": "0x7DBdAd1b4A922B65d37d7258a4227b6658344b7f",
"protocolFee": "0xA8Aa5f14a5463a78E45CC068F11c867949F3E367",
"proxyAdmin": "0x65993Af9D0D3a64ec77590db7ba362D6eB78eF70",
"staticAggregationHookFactory": "0xe70E86a7D1e001D419D71F960Cb6CaD59b6A3dB6",
"staticAggregationIsmFactory": "0x38B3878c4fb44d201DA924c4a04bae3EE728c065",
"staticMerkleRootMultisigIsmFactory": "0xfADBc81Ca8A957F1Bf7c78bCc575b28DBDE042b6",
"staticMessageIdMultisigIsmFactory": "0x4B1d8352E35e3BDE36dF5ED2e73C24E35c4a96b7",
"domainRoutingIsmFactory": "0xe6Af5720d34213C805C08e2470aea979e3F72F75",
"storageGasOracle": "0x91d23D603d60445411C06e6443d81395593B7940",
"testRecipient": "0x36FdA966CfffF8a9Cdc814f546db0e6378bFef35",
"testTokenRecipient": "0x85ac1164878e017b67660a74ff1f41f3D05C02Bb",
"timelockController": "0x0000000000000000000000000000000000000000",
"validatorAnnounce": "0x7024078130D9c2100fEA474DAD009C2d1703aCcd"
},
"celo": {
"aggregationHook": "0xc65890329066FB20c339Bc5C22f1756e9D3a4fF5",
"staticAggregationHookFactory": "0xc3745652EFB8555A8b064A0EA78d295133d326D2",
"staticAggregationIsmFactory": "0x1722dd970a1F56040712129f5Eeb76B003fd7500",
"domainRoutingIsm": "0xf18E32428dad0802C5D6F723cB80A6Da889777c4",
"domainRoutingIsmFactory": "0x2A2c22B0a8615ad24839fA6Af302E896Af32d1a3",
"fallbackRoutingHook": "0xDC98a856fb9112894c2fE32267DA8bF35645FAF3",
"interchainAccountIsm": "0x30a8DEc5318e2aAa9ad5b069fC606c4CfF6f5676",
"interchainAccountRouter": "0x4ED23E3885e1651E62564F78817D91865beba575",
"interchainGasPaymaster": "0x571f1435613381208477ac5d6974310d88AC7cB7",
"interchainSecurityModule": "0x99e8E56Dce3402D6E09A82718937fc1cA2A9491E",
"mailbox": "0x50da3B3907A08a24fe4999F4Dcf337E8dC7954bb",
"staticMerkleRootMultisigIsmFactory": "0x4C96a1abc44dc846775CE702C9E9BE821D3b487c",
"merkleTreeHook": "0x04dB778f05854f26E67e0a66b740BBbE9070D366",
"staticMessageIdMultisigIsmFactory": "0xaB402f227e892Ef37C105bf06619c0fa106a1fB2",
"pausableHook": "0x80672c5D9Fd26B235654C24adc1CFcDeb8d15115",
"pausableIsm": "0x6Bc4437ce69696C9461Cbc89582c259AC8847A58",
"protocolFee": "0x89886d431f9c3eEE64DCD6dAbA3f7D689D98D899",
"proxyAdmin": "0x90f9a2E9eCe93516d65FdaB726a3c62F5960a1b9",
"staticAggregationHookFactory": "0xc3745652EFB8555A8b064A0EA78d295133d326D2",
"domainRoutingIsmFactory": "0x2A2c22B0a8615ad24839fA6Af302E896Af32d1a3",
"staticAggregationIsm": "0x99e8E56Dce3402D6E09A82718937fc1cA2A9491E",
"staticAggregationIsmFactory": "0x1722dd970a1F56040712129f5Eeb76B003fd7500",
"staticMerkleRootMultisigIsmFactory": "0x4C96a1abc44dc846775CE702C9E9BE821D3b487c",
"staticMessageIdMultisigIsmFactory": "0xaB402f227e892Ef37C105bf06619c0fa106a1fB2",
"storageGasOracle": "0xD9A9966E7dA9a7f0032bF449FB12696a638E673C",
"testRecipient": "0x36FdA966CfffF8a9Cdc814f546db0e6378bFef35",
"testTokenRecipient": "0x85ac1164878e017b67660a74ff1f41f3D05C02Bb",
"timelockController": "0x0000000000000000000000000000000000000000",
"validatorAnnounce": "0xCeF677b65FDaA6804d4403083bb12B8dB3991FE1"
},
"ethereum": {
"aggregationHook": "0xb87AC8EA4533AE017604E44470F7c1E550AC6F10",
"domainRoutingIsmFactory": "0x28fA9552F19039b450498B0d8e5DEAe0d0aAc559",
"staticAggregationHookFactory": "0x6D2555A8ba483CcF4409C39013F5e9a3285D3C9E",
"staticAggregationIsmFactory": "0x46FA191Ad972D9674Ed752B69f9659A0d7b22846",
"fallbackRoutingHook": "0x571f1435613381208477ac5d6974310d88AC7cB7",
"interchainAccountIsm": "0x609707355a53d2aAb6366f48E2b607C599D26B29",
"interchainAccountRouter": "0x8dBae9B1616c46A20591fE0006Bf015E28ca5cC9",
"interchainGasPaymaster": "0x9e6B1022bE9BBF5aFd152483DAD9b88911bC8611",
"interchainSecurityModule": "0x43Ce4Eb4aE3585dDe9Ac6967Db5b06f7f6764C8a",
"mailbox": "0xc005dc82818d67AF737725bD4bf75435d065D239",
"staticMerkleRootMultisigIsmFactory": "0x47e8aF9e30C32Ab91060ED587894288786761B45",
"merkleTreeHook": "0x48e6c30B97748d1e2e03bf3e9FbE3890ca5f8CCA",
"staticMessageIdMultisigIsmFactory": "0xfA21D9628ADce86531854C2B7ef00F07394B0B69",
"pausableHook": "0x3A66Dc852e56d3748838b3C27CF381105b83705b",
"protocolFee": "0x8B05BF30F6247a90006c5837eA63C7905D79e6d8",
"proxyAdmin": "0x75EE15Ee1B4A75Fa3e2fDF5DF3253c25599cc659",
"staticAggregationHookFactory": "0x6D2555A8ba483CcF4409C39013F5e9a3285D3C9E",
"staticAggregationIsmFactory": "0x46FA191Ad972D9674Ed752B69f9659A0d7b22846",
"staticMerkleRootMultisigIsmFactory": "0x47e8aF9e30C32Ab91060ED587894288786761B45",
"staticMessageIdMultisigIsmFactory": "0xfA21D9628ADce86531854C2B7ef00F07394B0B69",
"domainRoutingIsmFactory": "0x28fA9552F19039b450498B0d8e5DEAe0d0aAc559",
"storageGasOracle": "0xc9a103990A8dB11b4f627bc5CD1D0c2685484Ec5",
"testRecipient": "0x36FdA966CfffF8a9Cdc814f546db0e6378bFef35",
"testTokenRecipient": "0x85ac1164878e017b67660a74ff1f41f3D05C02Bb",
"timelockController": "0x0000000000000000000000000000000000000000",
"validatorAnnounce": "0xCe74905e51497b4adD3639366708b821dcBcff96"
},
"gnosis": {
"aggregationHook": "0xdD1FA1C12496474c1dDC67a658Ba81437F818861",
"domainRoutingIsmFactory": "0xbB5Df000113e767dE11343A16f83De733e5bCC0F",
"staticAggregationHookFactory": "0xbC8AA096dabDf4A0200BB9f8D4Cbb644C3D86d7B",
"staticAggregationIsmFactory": "0x11EF91d17c5ad3330DbCa709a8841743d3Af6819",
"fallbackRoutingHook": "0x24f5E353dD03E103Ba2372F7D6FC0cf3A66f849c",
"interchainAccountIsm": "0x5a56dff3D92D635372718f86e6dF09C1129CFf53",
"interchainAccountRouter": "0x5E59EBAedeB691408EBAcF6C37218fa2cFcaC9f2",
"interchainGasPaymaster": "0xDd260B99d302f0A3fF885728c086f729c06f227f",
"interchainSecurityModule": "0x8e1aa0687B6d939D5a44304D13B7c922ebB012f1",
"mailbox": "0xaD09d78f4c6b9dA2Ae82b1D34107802d380Bb74f",
"staticMerkleRootMultisigIsmFactory": "0x8E273260EAd8B72A085B19346A676d355740e875",
"merkleTreeHook": "0x2684C6F89E901987E1FdB7649dC5Be0c57C61645",
"staticMessageIdMultisigIsmFactory": "0x603f46cc520d2fc22957b81e206408590808F02F",
"pausableHook": "0xf728C884De5275a608dEC222dACd0f2BF2E23AB6",
"protocolFee": "0x9c2214467Daf9e2e1F45b36d08ce0b9C65BFeA88",
"proxyAdmin": "0x81a92A1a272cb09d7b4970b07548463dC7aE0cB7",
"staticAggregationHookFactory": "0xbC8AA096dabDf4A0200BB9f8D4Cbb644C3D86d7B",
"staticAggregationIsmFactory": "0x11EF91d17c5ad3330DbCa709a8841743d3Af6819",
"staticMerkleRootMultisigIsmFactory": "0x8E273260EAd8B72A085B19346A676d355740e875",
"staticMessageIdMultisigIsmFactory": "0x603f46cc520d2fc22957b81e206408590808F02F",
"domainRoutingIsmFactory": "0xbB5Df000113e767dE11343A16f83De733e5bCC0F",
"storageGasOracle": "0x5E01d8F34b629E3f92d69546bbc4142A7Adee7e9",
"testRecipient": "0x36FdA966CfffF8a9Cdc814f546db0e6378bFef35",
"testTokenRecipient": "0x85ac1164878e017b67660a74ff1f41f3D05C02Bb",
"timelockController": "0x0000000000000000000000000000000000000000",
"validatorAnnounce": "0x87ED6926abc9E38b9C7C19f835B41943b622663c"
},
"inevm": {
"aggregationHook": "0xe0dDb5dE7D52918237cC1Ae131F29dcAbcb0F62B",
"staticAggregationHookFactory": "0xEb9FcFDC9EfDC17c1EC5E1dc085B98485da213D6",
"staticAggregationIsmFactory": "0x8F7454AC98228f3504Bb91eA3D8Adafe6406110A",
"domainRoutingIsm": "0xBD70Ea9D599a0FC8158B026797177773C3445730",
"domainRoutingIsmFactory": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908",
"interchainAccountIsm": "0x31894E7a734540B343d67E491148EB4FC9f7A45B",
"interchainAccountRouter": "0x4E55aDA3ef1942049EA43E904EB01F4A0a9c39bd",
"interchainGasPaymaster": "0x19dc38aeae620380430C200a6E990D5Af5480117",
"interchainSecurityModule": "0x3052aD50De54aAAc5D364d80bBE681d29e924597",
"mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7",
"staticMerkleRootMultisigIsmFactory": "0x2C1FAbEcd7bFBdEBF27CcdB67baADB38b6Df90fC",
"merkleTreeHook": "0x0972954923a1e2b2aAb04Fa0c4a0797e5989Cd65",
"staticMessageIdMultisigIsmFactory": "0x8b83fefd896fAa52057798f6426E9f0B080FCCcE",
"pausableHook": "0xBDa330Ea8F3005C421C8088e638fBB64fA71b9e0",
"pausableIsm": "0x6Fae4D9935E2fcb11fC79a64e917fb2BF14DaFaa",
"protocolFee": "0x0D63128D887159d63De29497dfa45AFc7C699AE4",
"proxyAdmin": "0x0761b0827849abbf7b0cC09CE14e1C93D87f5004",
"staticAggregationHookFactory": "0xEb9FcFDC9EfDC17c1EC5E1dc085B98485da213D6",
"domainRoutingIsmFactory": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908",
"staticAggregationIsm": "0x3052aD50De54aAAc5D364d80bBE681d29e924597",
"staticAggregationIsmFactory": "0x8F7454AC98228f3504Bb91eA3D8Adafe6406110A",
"staticMerkleRootMultisigIsmFactory": "0x2C1FAbEcd7bFBdEBF27CcdB67baADB38b6Df90fC",
"staticMessageIdMultisigIsmFactory": "0x8b83fefd896fAa52057798f6426E9f0B080FCCcE",
"storageGasOracle": "0x6119E37Bd66406A1Db74920aC79C15fB8411Ba76",
"timelockController": "0x0000000000000000000000000000000000000000",
"validatorAnnounce": "0x15ab173bDB6832f9b64276bA128659b0eD77730B"
},
"mantapacific": {
"aggregationHook": "0x8464aF853363B8d6844070F68b0AB34Cb6523d0F",
"staticAggregationHookFactory": "0x0761b0827849abbf7b0cC09CE14e1C93D87f5004",
"staticAggregationIsmFactory": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908",
"domainRoutingIsm": "0xDEed16fe4b1c9b2a93483EDFf34C77A9b57D31Ff",
"domainRoutingIsmFactory": "0x8358D8291e3bEDb04804975eEa0fe9fe0fAfB147",
"fallbackRoutingHook": "0xD1E267d2d7876e97E217BfE61c34AB50FEF52807",
"interchainAccountIsm": "0xA34ceDf9068C5deE726C67A4e1DCfCc2D6E2A7fD",
"interchainAccountRouter": "0x0f6fF770Eda6Ba1433C39cCf47d4059b254224Aa",
"interchainGasPaymaster": "0x0D63128D887159d63De29497dfa45AFc7C699AE4",
"interchainSecurityModule": "0xDEed16fe4b1c9b2a93483EDFf34C77A9b57D31Ff",
"mailbox": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E",
"staticMerkleRootMultisigIsmFactory": "0x8F7454AC98228f3504Bb91eA3D8Adafe6406110A",
"merkleTreeHook": "0x149db7afD694722747035d5AEC7007ccb6F8f112",
"staticMessageIdMultisigIsmFactory": "0xEb9FcFDC9EfDC17c1EC5E1dc085B98485da213D6",
"pausableHook": "0x7556a0E61d577D921Cba8Fca0d7D6299d36E607E",
"protocolFee": "0xd83A4F747fE80Ed98839e05079B1B7Fe037b1638",
"proxyAdmin": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7",
"staticAggregationHookFactory": "0x0761b0827849abbf7b0cC09CE14e1C93D87f5004",
"staticAggregationIsmFactory": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908",
"staticMerkleRootMultisigIsmFactory": "0x8F7454AC98228f3504Bb91eA3D8Adafe6406110A",
"staticMessageIdMultisigIsmFactory": "0xEb9FcFDC9EfDC17c1EC5E1dc085B98485da213D6",
"domainRoutingIsmFactory": "0x8358D8291e3bEDb04804975eEa0fe9fe0fAfB147",
"storageGasOracle": "0x19dc38aeae620380430C200a6E990D5Af5480117",
"testRecipient": "0x4E1c88DD261BEe2941e6c1814597e30F53330428",
"testTokenRecipient": "0x5060eCD5dFAD300A90592C04e504600A7cdcF70b",
"timelockController": "0x0000000000000000000000000000000000000000",
"validatorAnnounce": "0x2fa5F5C96419C222cDbCeC797D696e6cE428A7A9"
},
"moonbeam": {
"aggregationHook": "0x23cca255aE83F57F39EAf9D14fB9FdaDF22D5863",
"domainRoutingIsmFactory": "0x8061Af3A459093540d17823D651BC5E2A92669a7",
"staticAggregationHookFactory": "0x59cC3E7A49DdC4893eB8754c7908f96072A7DbE8",
"staticAggregationIsmFactory": "0x40c6Abcb6A2CdC8882d4bEcaC47927005c7Bb8c2",
"fallbackRoutingHook": "0x6C2D6eA0969F7Aa0A850CCA88c7BFACa563B2361",
"interchainAccountIsm": "0x799eA6f430f5CA901b59335fFC2fA10531106009",
"interchainAccountRouter": "0x6b142f596FFc761ac3fFaaC1ecaDe54f4EE09977",
"interchainGasPaymaster": "0x14760E32C0746094cF14D97124865BC7F0F7368F",
"interchainSecurityModule": "0x373836DFa82f2D27ec79Ca32A197Aa1665F0E1e9",
"mailbox": "0x094d03E751f49908080EFf000Dd6FD177fd44CC3",
"staticMerkleRootMultisigIsmFactory": "0xE2f485bc031Feb5a4C41C1967bf028653d75f0C3",
"merkleTreeHook": "0x87403b85f6f316e7ba91ba1fa6C3Fb7dD4095547",
"staticMessageIdMultisigIsmFactory": "0x84Df48F8f241f11d0fA302d09d73030429Bd9C73",
"pausableHook": "0xe28f2AEEB42ee83CAd068D9A9a449c8b868C137f",
"protocolFee": "0xCd3e29A9D293DcC7341295996a118913F7c582c0",
"proxyAdmin": "0x6A9cdA3dd1F593983BFd142Eb35e6ce4137bd5ce",
"staticAggregationHookFactory": "0x59cC3E7A49DdC4893eB8754c7908f96072A7DbE8",
"staticAggregationIsmFactory": "0x40c6Abcb6A2CdC8882d4bEcaC47927005c7Bb8c2",
"staticMerkleRootMultisigIsmFactory": "0xE2f485bc031Feb5a4C41C1967bf028653d75f0C3",
"staticMessageIdMultisigIsmFactory": "0x84Df48F8f241f11d0fA302d09d73030429Bd9C73",
"domainRoutingIsmFactory": "0x8061Af3A459093540d17823D651BC5E2A92669a7",
"storageGasOracle": "0x448b7ADB0dA36d41AA2AfDc9d63b97541A7b3819",
"testRecipient": "0x36FdA966CfffF8a9Cdc814f546db0e6378bFef35",
"testTokenRecipient": "0x85ac1164878e017b67660a74ff1f41f3D05C02Bb",
"timelockController": "0x0000000000000000000000000000000000000000",
"validatorAnnounce": "0x8c1001eBee6F25b31863A55EadfF149aF88B356F"
},
"optimism": {
"aggregationHook": "0x4ccC6d8eB79f2a1EC9bcb0f211fef7907631F91f",
"domainRoutingIsmFactory": "0xD2e905108c5e44dADA680274740f896Ea96Cf2Fb",
"staticAggregationHookFactory": "0x15DEeAB8dECDe553bb0B1F9C00984cbcae1af3D7",
"staticAggregationIsmFactory": "0x7491843F3A5Ba24E0f17a22645bDa04A1Ae2c584",
"fallbackRoutingHook": "0xD4b132C6d4AA93A4247F1A91e1ED929c0572a43d",
"interchainAccountIsm": "0x0389faCac114023C123E22F3E54394944cAbcb48",
"interchainAccountRouter": "0x33Ef006E7083BB38E0AFe3C3979F4e9b84415bf1",
"interchainGasPaymaster": "0xD8A76C4D91fCbB7Cc8eA795DFDF870E48368995C",
"interchainSecurityModule": "0x04938856bE60c8e734ffDe5f720E2238302BE8D2",
"mailbox": "0xd4C1905BB1D26BC93DAC913e13CaCC278CdCC80D",
"staticMerkleRootMultisigIsmFactory": "0xCA6Cb9Bc3cfF9E11003A06617cF934B684Bc78BC",
"merkleTreeHook": "0x68eE9bec9B4dbB61f69D9D293Ae26a5AACb2e28f",
"staticMessageIdMultisigIsmFactory": "0xAa4Be20E9957fE21602c74d7C3cF5CB1112EA9Ef",
"pausableHook": "0xf753CA2269c8A7693ce1808b5709Fbf36a65D47A",
"protocolFee": "0xD71Ff941120e8f935b8b1E2C1eD72F5d140FF458",
"proxyAdmin": "0xE047cb95FB3b7117989e911c6afb34771183fC35",
"staticAggregationHookFactory": "0x15DEeAB8dECDe553bb0B1F9C00984cbcae1af3D7",
"staticAggregationIsmFactory": "0x7491843F3A5Ba24E0f17a22645bDa04A1Ae2c584",
"staticMerkleRootMultisigIsmFactory": "0xCA6Cb9Bc3cfF9E11003A06617cF934B684Bc78BC",
"staticMessageIdMultisigIsmFactory": "0xAa4Be20E9957fE21602c74d7C3cF5CB1112EA9Ef",
"domainRoutingIsmFactory": "0xD2e905108c5e44dADA680274740f896Ea96Cf2Fb",
"storageGasOracle": "0x27e88AeB8EA4B159d81df06355Ea3d20bEB1de38",
"testRecipient": "0x36FdA966CfffF8a9Cdc814f546db0e6378bFef35",
"testTokenRecipient": "0x85ac1164878e017b67660a74ff1f41f3D05C02Bb",
"timelockController": "0x0000000000000000000000000000000000000000",
"validatorAnnounce": "0x30f5b08e01808643221528BB2f7953bf2830Ef38"
},
"polygon": {
"aggregationHook": "0x34dAb05650Cf590088bA18aF9d597f3e081bCc47",
"domainRoutingIsmFactory": "0x0d0E816eE4557689d34fAd5885C53b9393C1D9fA",
"staticAggregationHookFactory": "0xFeeB86e70e4a640cDd29636CCE19BD6fe8628135",
"staticAggregationIsmFactory": "0x81AdDD9Ca89105063DaDEBd5B4408551Ce850E22",
"fallbackRoutingHook": "0xca4cCe24E7e06241846F5EA0cda9947F0507C40C",
"interchainAccountIsm": "0x90384bC552e3C48af51Ef7D9473A9bF87431f5c7",
"interchainAccountRouter": "0x5e80f3474825B61183c0F0f0726796F589082420",
"interchainGasPaymaster": "0x0071740Bf129b05C4684abfbBeD248D80971cce2",
"interchainSecurityModule": "0x9a795fB62f86146ec06e2377e3C95Af65c7C20eB",
"mailbox": "0x5d934f4e2f797775e53561bB72aca21ba36B96BB",
"staticMerkleRootMultisigIsmFactory": "0xa9E0E18E78b098c2DE36c42E4DDEA13ce214c592",
"merkleTreeHook": "0x73FbD25c3e817DC4B4Cd9d00eff6D83dcde2DfF6",
"staticMessageIdMultisigIsmFactory": "0xEa5Be2AD66BB1BA321B7aCf0A079fBE304B09Ca0",
"pausableHook": "0x748040afB89B8FdBb992799808215419d36A0930",
"protocolFee": "0xF8F3629e308b4758F8396606405989F8D8C9c578",
"proxyAdmin": "0xC4F7590C5d30BE959225dC75640657954A86b980",
"staticAggregationHookFactory": "0xFeeB86e70e4a640cDd29636CCE19BD6fe8628135",
"staticAggregationIsmFactory": "0x81AdDD9Ca89105063DaDEBd5B4408551Ce850E22",
"staticMerkleRootMultisigIsmFactory": "0xa9E0E18E78b098c2DE36c42E4DDEA13ce214c592",
"staticMessageIdMultisigIsmFactory": "0xEa5Be2AD66BB1BA321B7aCf0A079fBE304B09Ca0",
"domainRoutingIsmFactory": "0x0d0E816eE4557689d34fAd5885C53b9393C1D9fA",
"storageGasOracle": "0xA3a24EC5670F1F416AB9fD554FcE2f226AE9D7eB",
"testRecipient": "0x36FdA966CfffF8a9Cdc814f546db0e6378bFef35",
"testTokenRecipient": "0x85ac1164878e017b67660a74ff1f41f3D05C02Bb",
"timelockController": "0x0000000000000000000000000000000000000000",
"validatorAnnounce": "0x454E1a1E1CA8B51506090f1b5399083658eA4Fc5"
},
"polygonzkevm": {
"aggregationHook": "0x8464aF853363B8d6844070F68b0AB34Cb6523d0F",
"domainRoutingIsmFactory": "0xe4057c5B0c43Dc18E36b08C39B419F190D29Ac2d",
"staticAggregationHookFactory": "0x0761b0827849abbf7b0cC09CE14e1C93D87f5004",
"staticAggregationIsmFactory": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908",
"fallbackRoutingHook": "0x01aE937A7B05d187bBCBE80F44F41879D3D335a4",
"interchainAccountIsm": "0xC49aF4965264FA7BB6424CE37aA06773ad177224",
"interchainAccountRouter": "0xF15D70941dE2Bf95A23d6488eBCbedE0a444137f",
"interchainGasPaymaster": "0x0D63128D887159d63De29497dfa45AFc7C699AE4",
"interchainSecurityModule": "0xf2BEE9D2c15Ba9D7e06799B5912dE1F05533c141",
"mailbox": "0x3a464f746D23Ab22155710f44dB16dcA53e0775E",
"staticMerkleRootMultisigIsmFactory": "0x8F7454AC98228f3504Bb91eA3D8Adafe6406110A",
"merkleTreeHook": "0x149db7afD694722747035d5AEC7007ccb6F8f112",
"staticMessageIdMultisigIsmFactory": "0xEb9FcFDC9EfDC17c1EC5E1dc085B98485da213D6",
"pausableHook": "0xc2FbB9411186AB3b1a6AFCCA702D1a80B48b197c",
"protocolFee": "0xd83A4F747fE80Ed98839e05079B1B7Fe037b1638",
"proxyAdmin": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7",
"staticAggregationHookFactory": "0x0761b0827849abbf7b0cC09CE14e1C93D87f5004",
"staticAggregationIsmFactory": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908",
"staticMerkleRootMultisigIsmFactory": "0x8F7454AC98228f3504Bb91eA3D8Adafe6406110A",
"staticMessageIdMultisigIsmFactory": "0xEb9FcFDC9EfDC17c1EC5E1dc085B98485da213D6",
"domainRoutingIsmFactory": "0xe4057c5B0c43Dc18E36b08C39B419F190D29Ac2d",
"storageGasOracle": "0x19dc38aeae620380430C200a6E990D5Af5480117",
"timelockController": "0x0000000000000000000000000000000000000000",
"validatorAnnounce": "0x2fa5F5C96419C222cDbCeC797D696e6cE428A7A9"
},
"scroll": {
"aggregationHook": "0x9Bc0FAf446E128a618A88a2F28960Fb2Ca169faE",
"domainRoutingIsmFactory": "0xe03dad16074BC5EEA9A9311257BF02Eb0B6AAA2b",
"staticAggregationHookFactory": "0xEb9FcFDC9EfDC17c1EC5E1dc085B98485da213D6",
"staticAggregationIsmFactory": "0x8F7454AC98228f3504Bb91eA3D8Adafe6406110A",
"fallbackRoutingHook": "0xDa7cECb05C4aeB02c1aFDE277d4306a2da7Bd762",
"interchainAccountIsm": "0xb89c6ED617f5F46175E41551350725A09110bbCE",
"interchainAccountRouter": "0x9629c28990F11c31735765A6FD59E1E1bC197DbD",
"interchainGasPaymaster": "0xBF12ef4B9f307463D3FB59c3604F294dDCe287E2",
"interchainSecurityModule": "0xaDc0cB48E8DB81855A930C0C1165ea3dCe4Ba5C7",
"mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7",
"staticMerkleRootMultisigIsmFactory": "0x2C1FAbEcd7bFBdEBF27CcdB67baADB38b6Df90fC",
"merkleTreeHook": "0x6119E37Bd66406A1Db74920aC79C15fB8411Ba76",
"staticMessageIdMultisigIsmFactory": "0x8b83fefd896fAa52057798f6426E9f0B080FCCcE",
"pausableHook": "0x4Eb82Ee35b0a1c1d776E3a3B547f9A9bA6FCC9f2",
"protocolFee": "0xc3F23848Ed2e04C0c6d41bd7804fa8f89F940B94",
"proxyAdmin": "0x0761b0827849abbf7b0cC09CE14e1C93D87f5004",
"staticAggregationHookFactory": "0xEb9FcFDC9EfDC17c1EC5E1dc085B98485da213D6",
"staticAggregationIsmFactory": "0x8F7454AC98228f3504Bb91eA3D8Adafe6406110A",
"staticMerkleRootMultisigIsmFactory": "0x2C1FAbEcd7bFBdEBF27CcdB67baADB38b6Df90fC",
"staticMessageIdMultisigIsmFactory": "0x8b83fefd896fAa52057798f6426E9f0B080FCCcE",
"domainRoutingIsmFactory": "0xe03dad16074BC5EEA9A9311257BF02Eb0B6AAA2b",
"storageGasOracle": "0x481171eb1aad17eDE6a56005B7F1aB00C581ef13",
"timelockController": "0x0000000000000000000000000000000000000000",
"validatorAnnounce": "0xd83A4F747fE80Ed98839e05079B1B7Fe037b1638"
},
"viction": {
"domainRoutingIsmFactory": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908",
"interchainAccountIsm": "0xD1E267d2d7876e97E217BfE61c34AB50FEF52807",
"interchainAccountRouter": "0x1956848601549de5aa0c887892061fA5aB4f6fC4",
"staticAggregationHookFactory": "0xEb9FcFDC9EfDC17c1EC5E1dc085B98485da213D6",
"staticAggregationIsmFactory": "0x8F7454AC98228f3504Bb91eA3D8Adafe6406110A",
"interchainGasPaymaster": "0x0D63128D887159d63De29497dfa45AFc7C699AE4",
"interchainSecurityModule": "0xBD70Ea9D599a0FC8158B026797177773C3445730",
"mailbox": "0x2f2aFaE1139Ce54feFC03593FeE8AB2aDF4a85A7",
"staticMerkleRootMultisigIsmFactory": "0x2C1FAbEcd7bFBdEBF27CcdB67baADB38b6Df90fC",
"merkleTreeHook": "0x149db7afD694722747035d5AEC7007ccb6F8f112",
"staticMessageIdMultisigIsmFactory": "0x8b83fefd896fAa52057798f6426E9f0B080FCCcE",
"protocolFee": "0xd83A4F747fE80Ed98839e05079B1B7Fe037b1638",
"proxyAdmin": "0x0761b0827849abbf7b0cC09CE14e1C93D87f5004",
"staticAggregationHookFactory": "0xEb9FcFDC9EfDC17c1EC5E1dc085B98485da213D6",
"staticAggregationIsmFactory": "0x8F7454AC98228f3504Bb91eA3D8Adafe6406110A",
"staticMerkleRootMultisigIsmFactory": "0x2C1FAbEcd7bFBdEBF27CcdB67baADB38b6Df90fC",
"staticMessageIdMultisigIsmFactory": "0x8b83fefd896fAa52057798f6426E9f0B080FCCcE",
"domainRoutingIsmFactory": "0x1052eF3419f26Bec74Ed7CEf4a4FA6812Bc09908",
"storageGasOracle": "0x19dc38aeae620380430C200a6E990D5Af5480117",
"testRecipient": "0x17E216fBb22dF4ef8A6640ae9Cb147C92710ac84",
"testTokenRecipient": "0xe042D1fbDf59828dd16b9649Ede7abFc856F7a6c",
"timelockController": "0x0000000000000000000000000000000000000000",
"validatorAnnounce": "0x2fa5F5C96419C222cDbCeC797D696e6cE428A7A9"
}
}

@ -11,6 +11,11 @@ export const defaultMultisigConfigs: ChainMap<MultisigConfig> = {
],
},
ancient8: {
threshold: 1,
validators: ['0xbb5842ae0e05215b53df4787a29144efb7e67551'],
},
arbitrum: {
threshold: 3,
validators: [

@ -470,7 +470,7 @@ export class HyperlaneIsmFactory extends HyperlaneApp<ProxyFactoryFactories> {
// TODO: add proxy verification artifact?
} else {
logger.debug(
`Recovered ${threshold} of ${values.length} address set on ${chain}`,
`Recovered ${threshold} of ${values.length} address set on ${chain}: ${address}`,
);
}
return address;

Loading…
Cancel
Save