diff --git a/.changeset/smooth-rocks-hammer.md b/.changeset/smooth-rocks-hammer.md deleted file mode 100644 index 8cc170aac9..0000000000 --- a/.changeset/smooth-rocks-hammer.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -'@hyperlane-xyz/sdk': patch ---- - -Update default validator sets for alephzeroevmmainnet, appchain, lisk, lumiaprism, swell, treasure, vana, zklink. diff --git a/rust/main/Cargo.lock b/rust/main/Cargo.lock index 110954d2f7..e8831b6029 100644 --- a/rust/main/Cargo.lock +++ b/rust/main/Cargo.lock @@ -2901,7 +2901,7 @@ dependencies = [ [[package]] name = "ethers" version = "1.0.2" -source = "git+https://github.com/hyperlane-xyz/ethers-rs?tag=2024-12-10#d9f822ef9dd3d63b88cae74973540ef9e6773015" +source = "git+https://github.com/hyperlane-xyz/ethers-rs?tag=2024-12-03-3#edf703a6e515266245b88bb4f1daad24f7c6566c" dependencies = [ "ethers-addressbook", "ethers-contract", @@ -2915,7 +2915,7 @@ dependencies = [ [[package]] name = "ethers-addressbook" version = "1.0.2" -source = "git+https://github.com/hyperlane-xyz/ethers-rs?tag=2024-12-10#d9f822ef9dd3d63b88cae74973540ef9e6773015" +source = "git+https://github.com/hyperlane-xyz/ethers-rs?tag=2024-12-03-3#edf703a6e515266245b88bb4f1daad24f7c6566c" dependencies = [ "ethers-core", "once_cell", @@ -2926,7 +2926,7 @@ dependencies = [ [[package]] name = "ethers-contract" version = "1.0.2" -source = "git+https://github.com/hyperlane-xyz/ethers-rs?tag=2024-12-10#d9f822ef9dd3d63b88cae74973540ef9e6773015" +source = "git+https://github.com/hyperlane-xyz/ethers-rs?tag=2024-12-03-3#edf703a6e515266245b88bb4f1daad24f7c6566c" dependencies = [ "ethers-contract-abigen", "ethers-contract-derive", @@ -2944,7 +2944,7 @@ dependencies = [ [[package]] name = "ethers-contract-abigen" version = "1.0.2" -source = "git+https://github.com/hyperlane-xyz/ethers-rs?tag=2024-12-10#d9f822ef9dd3d63b88cae74973540ef9e6773015" +source = "git+https://github.com/hyperlane-xyz/ethers-rs?tag=2024-12-03-3#edf703a6e515266245b88bb4f1daad24f7c6566c" dependencies = [ "Inflector", "cfg-if", @@ -2968,7 +2968,7 @@ dependencies = [ [[package]] name = "ethers-contract-derive" version = "1.0.2" -source = "git+https://github.com/hyperlane-xyz/ethers-rs?tag=2024-12-10#d9f822ef9dd3d63b88cae74973540ef9e6773015" +source = "git+https://github.com/hyperlane-xyz/ethers-rs?tag=2024-12-03-3#edf703a6e515266245b88bb4f1daad24f7c6566c" dependencies = [ "ethers-contract-abigen", "ethers-core", @@ -2982,7 +2982,7 @@ dependencies = [ [[package]] name = "ethers-core" version = "1.0.2" -source = "git+https://github.com/hyperlane-xyz/ethers-rs?tag=2024-12-10#d9f822ef9dd3d63b88cae74973540ef9e6773015" +source = "git+https://github.com/hyperlane-xyz/ethers-rs?tag=2024-12-03-3#edf703a6e515266245b88bb4f1daad24f7c6566c" dependencies = [ "arrayvec", "bytes", @@ -3012,7 +3012,7 @@ dependencies = [ [[package]] name = "ethers-etherscan" version = "1.0.2" -source = "git+https://github.com/hyperlane-xyz/ethers-rs?tag=2024-12-10#d9f822ef9dd3d63b88cae74973540ef9e6773015" +source = "git+https://github.com/hyperlane-xyz/ethers-rs?tag=2024-12-03-3#edf703a6e515266245b88bb4f1daad24f7c6566c" dependencies = [ "ethers-core", "getrandom 0.2.15", @@ -3028,7 +3028,7 @@ dependencies = [ [[package]] name = "ethers-middleware" version = "1.0.2" -source = "git+https://github.com/hyperlane-xyz/ethers-rs?tag=2024-12-10#d9f822ef9dd3d63b88cae74973540ef9e6773015" +source = "git+https://github.com/hyperlane-xyz/ethers-rs?tag=2024-12-03-3#edf703a6e515266245b88bb4f1daad24f7c6566c" dependencies = [ "async-trait", "auto_impl 0.5.0", @@ -3076,7 +3076,7 @@ dependencies = [ [[package]] name = "ethers-providers" version = "1.0.2" -source = "git+https://github.com/hyperlane-xyz/ethers-rs?tag=2024-12-10#d9f822ef9dd3d63b88cae74973540ef9e6773015" +source = "git+https://github.com/hyperlane-xyz/ethers-rs?tag=2024-12-03-3#edf703a6e515266245b88bb4f1daad24f7c6566c" dependencies = [ "async-trait", "auto_impl 1.2.0", @@ -3112,7 +3112,7 @@ dependencies = [ [[package]] name = "ethers-signers" version = "1.0.2" -source = "git+https://github.com/hyperlane-xyz/ethers-rs?tag=2024-12-10#d9f822ef9dd3d63b88cae74973540ef9e6773015" +source = "git+https://github.com/hyperlane-xyz/ethers-rs?tag=2024-12-03-3#edf703a6e515266245b88bb4f1daad24f7c6566c" dependencies = [ "async-trait", "coins-bip32 0.7.0", diff --git a/rust/main/Cargo.toml b/rust/main/Cargo.toml index 6a0b7cbb35..3fcdfa294c 100644 --- a/rust/main/Cargo.toml +++ b/rust/main/Cargo.toml @@ -197,27 +197,27 @@ overflow-checks = true [workspace.dependencies.ethers] features = [] git = "https://github.com/hyperlane-xyz/ethers-rs" -tag = "2024-12-10" +tag = "2024-12-03-3" [workspace.dependencies.ethers-contract] features = ["legacy"] git = "https://github.com/hyperlane-xyz/ethers-rs" -tag = "2024-12-10" +tag = "2024-12-03-3" [workspace.dependencies.ethers-core] features = [] git = "https://github.com/hyperlane-xyz/ethers-rs" -tag = "2024-12-10" +tag = "2024-12-03-3" [workspace.dependencies.ethers-providers] features = [] git = "https://github.com/hyperlane-xyz/ethers-rs" -tag = "2024-12-10" +tag = "2024-12-03-3" [workspace.dependencies.ethers-signers] features = ["aws"] git = "https://github.com/hyperlane-xyz/ethers-rs" -tag = "2024-12-10" +tag = "2024-12-03-3" [patch.crates-io.curve25519-dalek] branch = "v3.2.2-relax-zeroize" diff --git a/typescript/cli/src/commands/signCommands.ts b/typescript/cli/src/commands/signCommands.ts index 8cfa6d4c1a..d9fa5391d1 100644 --- a/typescript/cli/src/commands/signCommands.ts +++ b/typescript/cli/src/commands/signCommands.ts @@ -32,5 +32,4 @@ export enum CommandType { STATUS = 'status:', SUBMIT = 'submit:', RELAYER = 'relayer:', - CORE_APPLY = 'core:apply', } diff --git a/typescript/cli/src/context/strategies/chain/ChainResolverFactory.ts b/typescript/cli/src/context/strategies/chain/ChainResolverFactory.ts index e417ba27b3..fa62038a61 100644 --- a/typescript/cli/src/context/strategies/chain/ChainResolverFactory.ts +++ b/typescript/cli/src/context/strategies/chain/ChainResolverFactory.ts @@ -20,7 +20,6 @@ export class ChainResolverFactory { [CommandType.STATUS, () => MultiChainResolver.forOriginDestination()], [CommandType.SUBMIT, () => MultiChainResolver.forStrategyConfig()], [CommandType.RELAYER, () => MultiChainResolver.forRelayer()], - [CommandType.CORE_APPLY, () => MultiChainResolver.forCoreApply()], ]); /** diff --git a/typescript/cli/src/context/strategies/chain/MultiChainResolver.ts b/typescript/cli/src/context/strategies/chain/MultiChainResolver.ts index 64f3257520..b61b27a5d8 100644 --- a/typescript/cli/src/context/strategies/chain/MultiChainResolver.ts +++ b/typescript/cli/src/context/strategies/chain/MultiChainResolver.ts @@ -1,14 +1,7 @@ -import { - ChainMap, - ChainName, - DeployedCoreAddresses, - DeployedCoreAddressesSchema, - EvmCoreModule, -} from '@hyperlane-xyz/sdk'; +import { ChainMap, ChainName } from '@hyperlane-xyz/sdk'; import { assert } from '@hyperlane-xyz/utils'; import { DEFAULT_WARP_ROUTE_DEPLOYMENT_CONFIG_PATH } from '../../../commands/options.js'; -import { readCoreDeployConfigs } from '../../../config/core.js'; import { readChainSubmissionStrategyConfig } from '../../../config/strategy.js'; import { log } from '../../../logger.js'; import { @@ -32,7 +25,6 @@ enum ChainSelectionMode { WARP_READ, STRATEGY, RELAYER, - CORE_APPLY, } // This class could be broken down into multiple strategies @@ -56,8 +48,6 @@ export class MultiChainResolver implements ChainResolver { return this.resolveStrategyChains(argv); case ChainSelectionMode.RELAYER: return this.resolveRelayerChains(argv); - case ChainSelectionMode.CORE_APPLY: - return this.resolveCoreApplyChains(argv); case ChainSelectionMode.ORIGIN_DESTINATION: default: return this.resolveOriginDestinationChains(argv); @@ -184,41 +174,6 @@ export class MultiChainResolver implements ChainResolver { return chains; } - private async resolveCoreApplyChains( - argv: Record, - ): Promise { - try { - const config = readCoreDeployConfigs(argv.config); - - if (!config?.interchainAccountRouter) { - return [argv.chain]; - } - - const addresses = await argv.context.registry.getChainAddresses( - argv.chain, - ); - const coreAddresses = DeployedCoreAddressesSchema.parse( - addresses, - ) as DeployedCoreAddresses; - - const evmCoreModule = new EvmCoreModule(argv.context.multiProvider, { - chain: argv.chain, - config, - addresses: coreAddresses, - }); - - const transactions = await evmCoreModule.update(config); - - return Array.from(new Set(transactions.map((tx) => tx.chainId))).map( - (chainId) => argv.context.multiProvider.getChainName(chainId), - ); - } catch (error) { - throw new Error(`Failed to resolve core apply chains`, { - cause: error, - }); - } - } - static forAgentKurtosis(): MultiChainResolver { return new MultiChainResolver(ChainSelectionMode.AGENT_KURTOSIS); } @@ -242,8 +197,4 @@ export class MultiChainResolver implements ChainResolver { static forWarpCoreConfig(): MultiChainResolver { return new MultiChainResolver(ChainSelectionMode.WARP_READ); } - - static forCoreApply(): MultiChainResolver { - return new MultiChainResolver(ChainSelectionMode.CORE_APPLY); - } } diff --git a/typescript/infra/config/environments/mainnet3/agent.ts b/typescript/infra/config/environments/mainnet3/agent.ts index ad075baccc..58c42ffd81 100644 --- a/typescript/infra/config/environments/mainnet3/agent.ts +++ b/typescript/infra/config/environments/mainnet3/agent.ts @@ -276,7 +276,8 @@ export const hyperlaneContextAgentChainConfig: AgentChainConfig< degenchain: true, dogechain: true, duckchain: true, - eclipsemainnet: true, + // Cannot scrape Sealevel chains + eclipsemainnet: false, endurance: true, ethereum: true, everclear: true, @@ -327,7 +328,8 @@ export const hyperlaneContextAgentChainConfig: AgentChainConfig< sei: true, shibarium: true, snaxchain: true, - solanamainnet: true, + // Cannot scrape Sealevel chains + solanamainnet: false, stride: true, superseed: true, superpositionmainnet: true, diff --git a/typescript/infra/config/environments/mainnet3/chains.ts b/typescript/infra/config/environments/mainnet3/chains.ts index f0d7f66400..66d12a8937 100644 --- a/typescript/infra/config/environments/mainnet3/chains.ts +++ b/typescript/infra/config/environments/mainnet3/chains.ts @@ -65,16 +65,6 @@ export const chainMetadataOverrides: ChainMap> = { // maxFeePerGas: 100000 * 10 ** 9, // 100,000 gwei // }, // }, - // taiko: { - // transactionOverrides: { - // gasPrice: 25 * 10 ** 7, // 0.25 gwei - // }, - // }, - // linea: { - // transactionOverrides: { - // gasPrice: 5 * 10 ** 8, // 0.5 gwei - // }, - // }, // zircuit: { // blocks: { // confirmations: 3, diff --git a/typescript/infra/config/environments/mainnet3/gasPrices.json b/typescript/infra/config/environments/mainnet3/gasPrices.json index 1c5f05b28a..1009f5eee1 100644 --- a/typescript/infra/config/environments/mainnet3/gasPrices.json +++ b/typescript/infra/config/environments/mainnet3/gasPrices.json @@ -28,7 +28,7 @@ "decimals": 9 }, "astarzkevm": { - "amount": "0.0988", + "amount": "0.24", "decimals": 9 }, "flame": { @@ -36,11 +36,11 @@ "decimals": 9 }, "avalanche": { - "amount": "27.735398516", + "amount": "25.0", "decimals": 9 }, "b3": { - "amount": "0.001000253", + "amount": "0.001000252", "decimals": 9 }, "base": { @@ -60,7 +60,7 @@ "decimals": 9 }, "boba": { - "amount": "0.001000059", + "amount": "0.001000047", "decimals": 9 }, "bsc": { @@ -140,7 +140,7 @@ "decimals": 9 }, "gnosis": { - "amount": "1.500000007", + "amount": "1.500000008", "decimals": 9 }, "gravity": { @@ -176,11 +176,11 @@ "decimals": 9 }, "lisk": { - "amount": "0.001001147", + "amount": "0.00100103", "decimals": 9 }, "lukso": { - "amount": "1.109955713", + "amount": "0.921815267", "decimals": 9 }, "lumia": { @@ -192,7 +192,7 @@ "decimals": 9 }, "mantapacific": { - "amount": "0.003000983", + "amount": "0.00300029", "decimals": 9 }, "mantle": { @@ -216,7 +216,7 @@ "decimals": 9 }, "mode": { - "amount": "0.001001363", + "amount": "0.001000252", "decimals": 9 }, "molten": { @@ -240,7 +240,7 @@ "decimals": 9 }, "optimism": { - "amount": "0.001000469", + "amount": "0.001065045", "decimals": 9 }, "orderly": { @@ -264,7 +264,7 @@ "decimals": 9 }, "prom": { - "amount": "51.9", + "amount": "546.0", "decimals": 9 }, "proofofplay": { @@ -276,7 +276,7 @@ "decimals": 9 }, "real": { - "amount": "0.022", + "amount": "0.04", "decimals": 9 }, "redstone": { @@ -296,7 +296,7 @@ "decimals": 9 }, "sei": { - "amount": "3.328028877", + "amount": "100.0", "decimals": 9 }, "shibarium": { @@ -336,7 +336,7 @@ "decimals": 9 }, "treasure": { - "amount": "702.999550885", + "amount": "10000.0", "decimals": 9 }, "unichain": { @@ -344,7 +344,7 @@ "decimals": 9 }, "vana": { - "amount": "0.002986", + "amount": "0.002488334", "decimals": 9 }, "viction": { @@ -352,7 +352,7 @@ "decimals": 9 }, "worldchain": { - "amount": "0.001000255", + "amount": "0.00100026", "decimals": 9 }, "xai": { diff --git a/typescript/infra/config/environments/mainnet3/owners.ts b/typescript/infra/config/environments/mainnet3/owners.ts index 5b495d316f..f37ac77af8 100644 --- a/typescript/infra/config/environments/mainnet3/owners.ts +++ b/typescript/infra/config/environments/mainnet3/owners.ts @@ -56,7 +56,6 @@ export const safes: ChainMap
= { endurance: '0xaCD1865B262C89Fb0b50dcc8fB095330ae8F35b5', zircuit: '0x9e2fe7723b018d02cDE4f5cC1A9bC9C65b922Fc8', zeronetwork: '0xCB21F61A3c8139F18e635d45aD1e62A4A61d2c3D', - swell: '0x5F7771EA40546e2932754C263455Cb0023a55ca7', }; export const icaOwnerChain = 'ethereum'; @@ -167,12 +166,6 @@ export const icas: Partial< vana: '0x29dfa34765e29ea353FC8aB70A19e32a5578E603', bsquared: '0xd9564EaaA68A327933f758A54450D3A0531E60BB', superseed: '0x29dfa34765e29ea353FC8aB70A19e32a5578E603', - - // Dec 4, 2024 batch - // ---------------------------------------------------------- - // swell: '0xff8326468e7AaB51c53D3569cf7C45Dd54c11687', // already has a safe - lumiaprism: '0xAFfA863646D1bC74ecEC0dB1070f069Af065EBf5', - appchain: '0x4F25DFFd10A6D61C365E1a605d07B2ab0E82A7E6', } as const; export const DEPLOYER = '0xa7ECcdb9Be08178f896c26b7BbD8C3D4E844d9Ba'; diff --git a/typescript/infra/config/environments/mainnet3/tokenPrices.json b/typescript/infra/config/environments/mainnet3/tokenPrices.json index 9567a31775..e340241632 100644 --- a/typescript/infra/config/environments/mainnet3/tokenPrices.json +++ b/typescript/infra/config/environments/mainnet3/tokenPrices.json @@ -1,99 +1,99 @@ { - "ancient8": "3849.95", - "alephzeroevmmainnet": "0.563568", - "apechain": "1.66", - "appchain": "3849.95", - "arbitrum": "3849.95", - "arbitrumnova": "3849.95", - "astar": "0.078825", - "astarzkevm": "3849.95", - "flame": "7.62", - "avalanche": "49.4", - "b3": "3849.95", - "base": "3849.95", - "bitlayer": "98047", - "blast": "3849.95", - "bob": "3849.95", - "boba": "3849.95", - "bsc": "714.94", - "bsquared": "98047", - "celo": "0.916567", - "cheesechain": "0.0015485", - "chilizmainnet": "0.119182", - "coredao": "1.42", - "cyber": "3849.95", - "degenchain": "0.01880045", - "dogechain": "0.429424", - "duckchain": "6.4", - "eclipsemainnet": "3849.95", - "endurance": "3.21", - "ethereum": "3849.95", - "everclear": "3849.95", - "fantom": "1.23", - "flare": "0.02912373", - "flowmainnet": "1.048", - "fraxtal": "3847.8", - "fusemainnet": "0.04124996", - "gnosis": "1.001", - "gravity": "0.03951512", - "harmony": "0.03939191", - "immutablezkevmmainnet": "1.89", - "inevm": "30.43", - "injective": "30.43", - "kaia": "0.282109", - "kroma": "3849.95", - "linea": "3849.95", - "lisk": "3849.95", - "lukso": "2.81", - "lumia": "2.25", - "lumiaprism": "2.25", - "mantapacific": "3849.95", - "mantle": "1.13", - "merlin": "99320", - "metal": "3849.95", - "metis": "59.74", - "mint": "3849.95", - "mode": "3849.95", - "molten": "0.382952", - "moonbeam": "0.345164", - "morph": "3849.95", - "neutron": "0.571583", - "oortmainnet": "0.22645", - "optimism": "3849.95", - "orderly": "3849.95", - "osmosis": "0.699208", - "polygon": "0.633271", - "polygonzkevm": "3849.95", - "polynomialfi": "3849.95", - "prom": "7.16", - "proofofplay": "3849.95", - "rarichain": "3849.95", + "ancient8": "3628.85", + "alephzeroevmmainnet": "0.61841", + "apechain": "1.52", + "appchain": "3628.85", + "arbitrum": "3628.85", + "arbitrumnova": "3628.85", + "astar": "0.078025", + "astarzkevm": "3628.85", + "flame": "7.36", + "avalanche": "48.31", + "b3": "3628.85", + "base": "3628.85", + "bitlayer": "95794", + "blast": "3628.85", + "bob": "3628.85", + "boba": "3628.85", + "bsc": "639.49", + "bsquared": "95794", + "celo": "0.983257", + "cheesechain": "0.00180324", + "chilizmainnet": "0.104233", + "coredao": "1.43", + "cyber": "3628.85", + "degenchain": "0.01711559", + "dogechain": "0.421781", + "duckchain": "6.5", + "eclipsemainnet": "3628.85", + "endurance": "3.09", + "ethereum": "3628.85", + "everclear": "3628.85", + "fantom": "1.034", + "flare": "0.03388989", + "flowmainnet": "1.01", + "fraxtal": "3614.4", + "fusemainnet": "0.03486937", + "gnosis": "0.997956", + "gravity": "0.03730451", + "harmony": "0.02834153", + "immutablezkevmmainnet": "1.94", + "inevm": "30.08", + "injective": "30.08", + "kaia": "0.357047", + "kroma": "3628.85", + "linea": "3628.85", + "lisk": "3628.85", + "lukso": "3.33", + "lumia": "1.7", + "lumiaprism": "1.7", + "mantapacific": "3628.85", + "mantle": "0.888186", + "merlin": "95787", + "metal": "3628.85", + "metis": "60.01", + "mint": "3628.85", + "mode": "3628.85", + "molten": "0.284308", + "moonbeam": "0.313413", + "morph": "3628.85", + "neutron": "0.523303", + "oortmainnet": "0.255252", + "optimism": "3628.85", + "orderly": "3628.85", + "osmosis": "0.589662", + "polygon": "0.621246", + "polygonzkevm": "3628.85", + "polynomialfi": "3628.85", + "prom": "6.5", + "proofofplay": "3628.85", + "rarichain": "3628.85", "real": "1", - "redstone": "3849.95", - "rootstockmainnet": "98004", - "sanko": "58.27", - "scroll": "3849.95", - "sei": "0.625869", - "shibarium": "0.670964", - "snaxchain": "3849.95", - "solanamainnet": "226.39", - "stride": "0.779753", - "superseed": "3849.95", - "superpositionmainnet": "3849.95", - "swell": "3849.95", - "taiko": "3849.95", + "redstone": "3628.85", + "rootstockmainnet": "95652", + "sanko": "53.86", + "scroll": "3628.85", + "sei": "0.613723", + "shibarium": "0.59728", + "snaxchain": "3628.85", + "solanamainnet": "223.96", + "stride": "0.675504", + "superseed": "3628.85", + "superpositionmainnet": "3628.85", + "swell": "3628.85", + "taiko": "3628.85", "tangle": "1", - "treasure": "0.638598", - "unichain": "3849.95", + "treasure": "0.64326", + "unichain": "3628.85", "vana": "1", - "viction": "0.50166", - "worldchain": "3849.95", - "xai": "0.368066", - "xlayer": "56.38", - "zeronetwork": "3849.95", - "zetachain": "0.805386", - "zircuit": "3849.95", - "zklink": "3849.95", - "zksync": "3849.95", - "zoramainnet": "3849.95" + "viction": "0.479042", + "worldchain": "3628.85", + "xai": "0.37142", + "xlayer": "53.81", + "zeronetwork": "3628.85", + "zetachain": "0.819612", + "zircuit": "3628.85", + "zklink": "3628.85", + "zksync": "3628.85", + "zoramainnet": "3628.85" } diff --git a/typescript/infra/config/environments/mainnet3/warp/configGetters/getEthereumVictionETHWarpConfig.ts b/typescript/infra/config/environments/mainnet3/warp/configGetters/getEthereumVictionETHWarpConfig.ts index f058edb64b..4617aec50e 100644 --- a/typescript/infra/config/environments/mainnet3/warp/configGetters/getEthereumVictionETHWarpConfig.ts +++ b/typescript/infra/config/environments/mainnet3/warp/configGetters/getEthereumVictionETHWarpConfig.ts @@ -1,10 +1,10 @@ -import { ethers } from 'ethers'; - import { ChainMap, HypTokenRouterConfig, OwnableConfig, TokenType, + buildAggregationIsmConfigs, + defaultMultisigConfigs, } from '@hyperlane-xyz/sdk'; import { RouterConfigWithoutOwner } from '../../../../../src/config/warp.js'; @@ -13,6 +13,12 @@ export const getEthereumVictionETHWarpConfig = async ( routerConfig: ChainMap, abacusWorksEnvOwnerConfig: ChainMap, ): Promise> => { + const ismConfig = buildAggregationIsmConfigs( + 'ethereum', + ['viction'], + defaultMultisigConfigs, + ).viction; + const viction: HypTokenRouterConfig = { ...routerConfig.viction, ...abacusWorksEnvOwnerConfig.viction, @@ -22,7 +28,6 @@ export const getEthereumVictionETHWarpConfig = async ( decimals: 18, totalSupply: 0, gas: 50_000, - interchainSecurityModule: ethers.constants.AddressZero, }; const ethereum: HypTokenRouterConfig = { @@ -30,7 +35,7 @@ export const getEthereumVictionETHWarpConfig = async ( ...abacusWorksEnvOwnerConfig.ethereum, type: TokenType.native, gas: 65_000, - interchainSecurityModule: ethers.constants.AddressZero, + interchainSecurityModule: ismConfig, }; return { diff --git a/typescript/infra/config/environments/mainnet3/warp/configGetters/getEthereumVictionUSDCWarpConfig.ts b/typescript/infra/config/environments/mainnet3/warp/configGetters/getEthereumVictionUSDCWarpConfig.ts index 7bcf283573..8ea4026b82 100644 --- a/typescript/infra/config/environments/mainnet3/warp/configGetters/getEthereumVictionUSDCWarpConfig.ts +++ b/typescript/infra/config/environments/mainnet3/warp/configGetters/getEthereumVictionUSDCWarpConfig.ts @@ -1,10 +1,10 @@ -import { ethers } from 'ethers'; - import { ChainMap, HypTokenRouterConfig, OwnableConfig, TokenType, + buildAggregationIsmConfigs, + defaultMultisigConfigs, } from '@hyperlane-xyz/sdk'; import { @@ -16,6 +16,13 @@ export const getEthereumVictionUSDCWarpConfig = async ( routerConfig: ChainMap, abacusWorksEnvOwnerConfig: ChainMap, ): Promise> => { + // commit that the config was copied from https://github.com/hyperlane-xyz/hyperlane-monorepo/pull/3067/commits/7ed5b460034ea5e140c6ff86bcd6baf6ebb824c4#diff-fab5dd1a27c76e4310699c57ccf92ab6274ef0acf17e079b17270cedf4057775R109 + const ismConfig = buildAggregationIsmConfigs( + 'ethereum', + ['viction'], + defaultMultisigConfigs, + ).viction; + const viction: HypTokenRouterConfig = { ...routerConfig.viction, ...abacusWorksEnvOwnerConfig.viction, @@ -25,7 +32,6 @@ export const getEthereumVictionUSDCWarpConfig = async ( decimals: 6, totalSupply: 0, gas: 75_000, - interchainSecurityModule: ethers.constants.AddressZero, }; const ethereum: HypTokenRouterConfig = { @@ -34,7 +40,7 @@ export const getEthereumVictionUSDCWarpConfig = async ( type: TokenType.collateral, token: tokens.ethereum.USDC, gas: 65_000, - interchainSecurityModule: ethers.constants.AddressZero, + interchainSecurityModule: ismConfig, }; return { diff --git a/typescript/infra/config/environments/mainnet3/warp/configGetters/getEthereumVictionUSDTWarpConfig.ts b/typescript/infra/config/environments/mainnet3/warp/configGetters/getEthereumVictionUSDTWarpConfig.ts index 3001880aa3..3b98d5debc 100644 --- a/typescript/infra/config/environments/mainnet3/warp/configGetters/getEthereumVictionUSDTWarpConfig.ts +++ b/typescript/infra/config/environments/mainnet3/warp/configGetters/getEthereumVictionUSDTWarpConfig.ts @@ -1,10 +1,10 @@ -import { ethers } from 'ethers'; - import { ChainMap, HypTokenRouterConfig, OwnableConfig, TokenType, + buildAggregationIsmConfigs, + defaultMultisigConfigs, } from '@hyperlane-xyz/sdk'; import { @@ -16,6 +16,12 @@ export const getEthereumVictionUSDTWarpConfig = async ( routerConfig: ChainMap, abacusWorksEnvOwnerConfig: ChainMap, ): Promise> => { + const ismConfig = buildAggregationIsmConfigs( + 'ethereum', + ['viction'], + defaultMultisigConfigs, + ).viction; + const viction: HypTokenRouterConfig = { ...routerConfig.viction, ...abacusWorksEnvOwnerConfig.viction, @@ -25,7 +31,6 @@ export const getEthereumVictionUSDTWarpConfig = async ( decimals: 6, totalSupply: 0, gas: 75_000, - interchainSecurityModule: ethers.constants.AddressZero, }; const ethereum: HypTokenRouterConfig = { @@ -34,7 +39,7 @@ export const getEthereumVictionUSDTWarpConfig = async ( type: TokenType.collateral, token: tokens.ethereum.USDT, gas: 65_000, - interchainSecurityModule: ethers.constants.AddressZero, + interchainSecurityModule: ismConfig, }; return { diff --git a/typescript/infra/config/environments/testnet4/agent.ts b/typescript/infra/config/environments/testnet4/agent.ts index 2bab1291ac..4f984ebfe8 100644 --- a/typescript/infra/config/environments/testnet4/agent.ts +++ b/typescript/infra/config/environments/testnet4/agent.ts @@ -121,6 +121,7 @@ export const hyperlaneContextAgentChainConfig: AgentChainConfig< citreatestnet: true, connextsepolia: false, ecotestnet: true, + // Cannot scrape non-EVM chains eclipsetestnet: false, formtestnet: true, fuji: true, @@ -134,6 +135,7 @@ export const hyperlaneContextAgentChainConfig: AgentChainConfig< polygonamoy: true, scrollsepolia: true, sepolia: true, + // Cannot scrape non-EVM chains solanatestnet: false, soneiumtestnet: true, sonictestnet: true, diff --git a/typescript/infra/scripts/check/check-utils.ts b/typescript/infra/scripts/check/check-utils.ts index ef7a2b1215..a8289671a0 100644 --- a/typescript/infra/scripts/check/check-utils.ts +++ b/typescript/infra/scripts/check/check-utils.ts @@ -30,7 +30,6 @@ import { DeployEnvironment } from '../../src/config/environment.js'; import { HyperlaneAppGovernor } from '../../src/govern/HyperlaneAppGovernor.js'; import { HyperlaneCoreGovernor } from '../../src/govern/HyperlaneCoreGovernor.js'; import { HyperlaneHaasGovernor } from '../../src/govern/HyperlaneHaasGovernor.js'; -import { HyperlaneICAChecker } from '../../src/govern/HyperlaneICAChecker.js'; import { HyperlaneIgpGovernor } from '../../src/govern/HyperlaneIgpGovernor.js'; import { ProxiedRouterGovernor } from '../../src/govern/ProxiedRouterGovernor.js'; import { Role } from '../../src/roles.js'; @@ -149,7 +148,7 @@ export async function getGovernor( governor = new ProxiedRouterGovernor(checker); } else if (module === Modules.HAAS) { chainsToSkip.forEach((chain) => delete routerConfig[chain]); - const icaChecker = new HyperlaneICAChecker( + const icaChecker = new InterchainAccountChecker( multiProvider, ica, objFilter( diff --git a/typescript/infra/scripts/safes/parse-txs.ts b/typescript/infra/scripts/safes/parse-txs.ts index 21e8f87eed..ac897cd279 100644 --- a/typescript/infra/scripts/safes/parse-txs.ts +++ b/typescript/infra/scripts/safes/parse-txs.ts @@ -1,12 +1,7 @@ import { BigNumber } from 'ethers'; import { AnnotatedEV5Transaction } from '@hyperlane-xyz/sdk'; -import { - LogFormat, - LogLevel, - configureRootLogger, - stringifyObject, -} from '@hyperlane-xyz/utils'; +import { stringifyObject } from '@hyperlane-xyz/utils'; import { GovernTransactionReader } from '../../src/tx/govern-transaction-reader.js'; import { getSafeTx } from '../../src/utils/safe.js'; @@ -18,8 +13,6 @@ async function main() { withChainsRequired(getArgs()), ).argv; - configureRootLogger(LogFormat.Pretty, LogLevel.Info); - const config = getEnvironmentConfig(environment); const multiProvider = await config.getMultiProvider(); const { chainAddresses } = await getHyperlaneCore(environment, multiProvider); diff --git a/typescript/infra/src/govern/HyperlaneAppGovernor.ts b/typescript/infra/src/govern/HyperlaneAppGovernor.ts index 1d7b5167e3..a704b3d9b8 100644 --- a/typescript/infra/src/govern/HyperlaneAppGovernor.ts +++ b/typescript/infra/src/govern/HyperlaneAppGovernor.ts @@ -486,20 +486,6 @@ export abstract class HyperlaneAppGovernor< await this.checkSubmitterBalance(chain, submitterAddress, call.value); } - // Check if the submitter is the owner of the contract - try { - const ownable = Ownable__factory.connect(call.to, signer); - const owner = await ownable.owner(); - const isOwner = eqAddress(owner, submitterAddress); - - if (!isOwner) { - return false; - } - } catch { - // If the contract does not implement Ownable, just continue - // with the next check. - } - // Check if the transaction has additional success criteria if ( additionalTxSuccessCriteria && diff --git a/typescript/infra/src/govern/HyperlaneHaasGovernor.ts b/typescript/infra/src/govern/HyperlaneHaasGovernor.ts index 6fa6ebcd18..921649c5b9 100644 --- a/typescript/infra/src/govern/HyperlaneHaasGovernor.ts +++ b/typescript/infra/src/govern/HyperlaneHaasGovernor.ts @@ -5,6 +5,7 @@ import { HyperlaneCore, HyperlaneCoreChecker, InterchainAccount, + InterchainAccountChecker, } from '@hyperlane-xyz/sdk'; import { @@ -12,7 +13,6 @@ import { HyperlaneAppGovernor, } from './HyperlaneAppGovernor.js'; import { HyperlaneCoreGovernor } from './HyperlaneCoreGovernor.js'; -import { HyperlaneICAChecker } from './HyperlaneICAChecker.js'; import { ProxiedRouterGovernor } from './ProxiedRouterGovernor.js'; export class HyperlaneHaasGovernor extends HyperlaneAppGovernor< @@ -24,7 +24,7 @@ export class HyperlaneHaasGovernor extends HyperlaneAppGovernor< constructor( ica: InterchainAccount, - private readonly icaChecker: HyperlaneICAChecker, + private readonly icaChecker: InterchainAccountChecker, private readonly coreChecker: HyperlaneCoreChecker, ) { super(coreChecker, ica); diff --git a/typescript/infra/src/govern/HyperlaneICAChecker.ts b/typescript/infra/src/govern/HyperlaneICAChecker.ts deleted file mode 100644 index cb72bd73a6..0000000000 --- a/typescript/infra/src/govern/HyperlaneICAChecker.ts +++ /dev/null @@ -1,63 +0,0 @@ -import { - ChainMap, - ChainName, - InterchainAccountChecker, - RouterViolation, - RouterViolationType, -} from '@hyperlane-xyz/sdk'; -import { AddressBytes32, addressToBytes32 } from '@hyperlane-xyz/utils'; - -export class HyperlaneICAChecker extends InterchainAccountChecker { - /* - * Check that the Ethereum router is enrolled correctly, - * and that remote chains have the correct router enrolled. - */ - async checkEthRouterEnrollment(chain: ChainName): Promise { - // If the chain is Ethereum, do the regular full check - if (chain === 'ethereum') { - return super.checkEnrolledRouters(chain); - } - - // Get the Ethereum router address and domain id - const ethereumRouterAddress = this.app.routerAddress('ethereum'); - const ethereumDomainId = this.multiProvider.getDomainId('ethereum'); - // Get the expected Ethereum router address (with padding) - const expectedRouter = addressToBytes32(ethereumRouterAddress); - - // Get the actual Ethereum router address - const router = this.app.router(this.app.getContracts(chain)); - const actualRouter = await router.routers(ethereumDomainId); - - // Check if the actual router address matches the expected router address - if (actualRouter !== expectedRouter) { - const currentRouters: ChainMap = { ethereum: actualRouter }; - const expectedRouters: ChainMap = { - ethereum: expectedRouter, - }; - const routerDiff: ChainMap<{ - actual: AddressBytes32; - expected: AddressBytes32; - }> = { - ethereum: { actual: actualRouter, expected: expectedRouter }, - }; - - const violation: RouterViolation = { - chain, - type: RouterViolationType.EnrolledRouter, - contract: router, - actual: currentRouters, - expected: expectedRouters, - routerDiff, - description: `Ethereum router is not enrolled correctly`, - }; - this.addViolation(violation); - } - } - - async checkChain(chain: ChainName): Promise { - await this.checkMailboxClient(chain); - await this.checkEthRouterEnrollment(chain); - await this.checkProxiedContracts(chain); - await this.checkOwnership(chain); - } -} diff --git a/typescript/infra/src/tx/govern-transaction-reader.ts b/typescript/infra/src/tx/govern-transaction-reader.ts index ef82ab1e1a..fadde0f87e 100644 --- a/typescript/infra/src/tx/govern-transaction-reader.ts +++ b/typescript/infra/src/tx/govern-transaction-reader.ts @@ -8,7 +8,7 @@ import assert from 'assert'; import chalk from 'chalk'; import { BigNumber, ethers } from 'ethers'; -import { ProxyAdmin__factory, TokenRouter__factory } from '@hyperlane-xyz/core'; +import { TokenRouter__factory } from '@hyperlane-xyz/core'; import { AnnotatedEV5Transaction, ChainMap, @@ -123,11 +123,6 @@ export class GovernTransactionReader { return this.readMailboxTransaction(chain, tx); } - // If it's to a Proxy Admin - if (this.isProxyAdminTransaction(chain, tx)) { - return this.readProxyAdminTransaction(chain, tx); - } - // If it's a Multisend if (await this.isMultisendTransaction(chain, tx)) { return this.readMultisendTransaction(chain, tx); @@ -159,7 +154,6 @@ export class GovernTransactionReader { ): boolean { return ( tx.to !== undefined && - this.warpRouteIndex[chain] !== undefined && this.warpRouteIndex[chain][tx.to.toLowerCase()] !== undefined ); } @@ -387,43 +381,6 @@ export class GovernTransactionReader { }; } - private async readProxyAdminTransaction( - chain: ChainName, - tx: AnnotatedEV5Transaction, - ): Promise { - if (!tx.data) { - throw new Error('⚠️ No data in proxyAdmin transaction'); - } - - const proxyAdminInterface = ProxyAdmin__factory.createInterface(); - const decoded = proxyAdminInterface.parseTransaction({ - data: tx.data, - value: tx.value, - }); - - const args = formatFunctionFragmentArgs( - decoded.args, - decoded.functionFragment, - ); - - let insight; - if ( - decoded.functionFragment.name === - proxyAdminInterface.functions['transferOwnership(address)'].name - ) { - const [newOwner] = decoded.args; - insight = `Transfer ownership to ${newOwner}`; - } - - return { - chain, - to: `Proxy Admin (${chain} ${this.chainAddresses[chain].proxyAdmin})`, - insight, - signature: decoded.signature, - args, - }; - } - private ismDerivationsInProgress: ChainMap = {}; private async deriveIsmConfig( @@ -643,16 +600,6 @@ export class GovernTransactionReader { ); } - isProxyAdminTransaction( - chain: ChainName, - tx: AnnotatedEV5Transaction, - ): boolean { - return ( - tx.to !== undefined && - eqAddress(tx.to, this.chainAddresses[chain].proxyAdmin) - ); - } - async isMultisendTransaction( chain: ChainName, tx: AnnotatedEV5Transaction, diff --git a/typescript/sdk/src/consts/multisigIsm.ts b/typescript/sdk/src/consts/multisigIsm.ts index 867059be1d..eaa675b327 100644 --- a/typescript/sdk/src/consts/multisigIsm.ts +++ b/typescript/sdk/src/consts/multisigIsm.ts @@ -45,7 +45,7 @@ export const defaultMultisigConfigs: ChainMap = { }, alephzeroevmmainnet: { - threshold: 3, + threshold: 2, validators: [ { address: '0x33f20e6e775747d60301c6ea1c50e51f0389740c', @@ -53,10 +53,6 @@ export const defaultMultisigConfigs: ChainMap = { }, DEFAULT_MERKLY_VALIDATOR, DEFAULT_MITOSIS_VALIDATOR, - { - address: '0xCbf382214825F8c2f347dd4f23F0aDFaFad55dAa', - alias: 'Aleph Zero', - }, ], }, @@ -119,14 +115,12 @@ export const defaultMultisigConfigs: ChainMap = { }, appchain: { - threshold: 2, + threshold: 1, validators: [ { address: '0x0531251bbadc1f9f19ccce3ca6b3f79f08eae1be', alias: AW_VALIDATOR_ALIAS, }, - DEFAULT_MERKLY_VALIDATOR, - DEFAULT_MITOSIS_VALIDATOR, ], }, @@ -894,10 +888,6 @@ export const defaultMultisigConfigs: ChainMap = { address: '0xf0da628f3fb71652d48260bad4691054045832ce', alias: 'Luganodes', }, - { - address: '0xead4141b6ea149901ce4f4b556953f66d04b1d0c', - alias: 'Lisk', - }, ], }, @@ -929,14 +919,12 @@ export const defaultMultisigConfigs: ChainMap = { }, lumiaprism: { - threshold: 2, + threshold: 1, validators: [ { address: '0xb69731640ffd4338a2c9358a935b0274c6463f85', alias: AW_VALIDATOR_ALIAS, }, - DEFAULT_MERKLY_VALIDATOR, - DEFAULT_MITOSIS_VALIDATOR, ], }, @@ -1595,18 +1583,12 @@ export const defaultMultisigConfigs: ChainMap = { }, swell: { - threshold: 3, + threshold: 1, validators: [ { address: '0x4f51e4f4c7fb45d82f91568480a1a2cfb69216ed', alias: AW_VALIDATOR_ALIAS, }, - { - address: '0x9eadf9217be22d9878e0e464727a2176d5c69ff8', - alias: 'Luganodes', - }, - DEFAULT_MERKLY_VALIDATOR, - DEFAULT_MITOSIS_VALIDATOR, ], }, @@ -1642,21 +1624,12 @@ export const defaultMultisigConfigs: ChainMap = { }, treasure: { - threshold: 3, + threshold: 1, validators: [ { address: '0x6ad994819185553e8baa01533f0cd2c7cadfe6cc', alias: AW_VALIDATOR_ALIAS, }, - { - address: '0x278460fa51ff448eb53ffa62951b4b8e3e8f74e3', - alias: 'P2P', - }, - { - address: '0xe92ff70bb463e2aa93426fd2ba51afc39567d426', - alias: 'Treasure', - }, - DEFAULT_MITOSIS_VALIDATOR, ], }, @@ -1693,7 +1666,7 @@ export const defaultMultisigConfigs: ChainMap = { }, vana: { - threshold: 3, + threshold: 2, validators: [ { address: '0xfdf3b0dfd4b822d10cacb15c8ae945ea269e7534', @@ -1701,10 +1674,6 @@ export const defaultMultisigConfigs: ChainMap = { }, DEFAULT_MERKLY_VALIDATOR, DEFAULT_MITOSIS_VALIDATOR, - { - address: '0xba2f4f89cae6863d8b49e4ca0208ed48ad9ac354', - alias: 'P2P', - }, ], }, @@ -1813,14 +1782,12 @@ export const defaultMultisigConfigs: ChainMap = { }, zklink: { - threshold: 2, + threshold: 1, validators: [ { address: '0x217a8cb4789fc45abf56cb6e2ca96f251a5ac181', alias: AW_VALIDATOR_ALIAS, }, - DEFAULT_MERKLY_VALIDATOR, - DEFAULT_MITOSIS_VALIDATOR, ], }, diff --git a/typescript/sdk/src/providers/transactions/submitter/ethersV5/types.ts b/typescript/sdk/src/providers/transactions/submitter/ethersV5/types.ts index bf0d29d540..d1e1c7a90c 100644 --- a/typescript/sdk/src/providers/transactions/submitter/ethersV5/types.ts +++ b/typescript/sdk/src/providers/transactions/submitter/ethersV5/types.ts @@ -23,8 +23,6 @@ export type EV5GnosisSafeTxBuilderProps = z.infer< export const EV5JsonRpcTxSubmitterPropsSchema = z.object({ chain: ZChainName, - userAddress: ZHash.optional(), - privateKey: ZHash.optional(), }); export type EV5JsonRpcTxSubmitterProps = z.infer<