diff --git a/typescript/infra/fork.sh b/typescript/infra/fork.sh index 00ee1578f..2060d15fa 100755 --- a/typescript/infra/fork.sh +++ b/typescript/infra/fork.sh @@ -17,7 +17,7 @@ else exit 1 fi -anvil --fork-url $RPC_URL --block-time 3 --silent > /dev/null & +anvil --fork-url $RPC_URL --block-time 1 --silent > /dev/null & ANVIL_PID=$! while ! cast bn &> /dev/null; do diff --git a/typescript/sdk/src/HyperlaneApp.ts b/typescript/sdk/src/HyperlaneApp.ts index f5e274dc7..c6bb39d43 100644 --- a/typescript/sdk/src/HyperlaneApp.ts +++ b/typescript/sdk/src/HyperlaneApp.ts @@ -1,3 +1,5 @@ +import debug from 'debug'; + import { HyperlaneAddresses, HyperlaneContracts, @@ -17,6 +19,7 @@ export class HyperlaneApp< constructor( public readonly contractsMap: HyperlaneContractsMap, public readonly multiProvider: MultiProvider, + public readonly logger = debug('hyperlane:App'), ) { const connectedContractsMap = objMap(contractsMap, (chain, contracts) => connectContracts(contracts, multiProvider.getSignerOrProvider(chain)), diff --git a/typescript/sdk/src/consts/environments/mainnet.json b/typescript/sdk/src/consts/environments/mainnet.json index 04c97e043..630d7982c 100644 --- a/typescript/sdk/src/consts/environments/mainnet.json +++ b/typescript/sdk/src/consts/environments/mainnet.json @@ -11,7 +11,6 @@ "interchainQueryRouter": "0x234b19282985882d6d6fd54dEBa272271f4eb784", "interchainAccountRouter": "0xB193eBf06faD5D66492BB41DBbCd202640aE83fF", "interchainAccountIsm": "0x5e8ee6840caa4f367aff1FF28aA36D5B1b836d35", - "multisigIsmFactory": "0x9bf473968629b8f8cF4ab59Aeb9640b0c93411dd", "aggregationIsmFactory": "0xc864fa3B662613cA5051f41e157d0a997f9a5A87", "routingIsmFactory": "0x1fdfD1486b8339638C6b92f8a96D698D8182D2b1" }, @@ -27,7 +26,6 @@ "interchainQueryRouter": "0x234b19282985882d6d6fd54dEBa272271f4eb784", "interchainAccountRouter": "0x5fD075C2157567F7F80e6cB20dDd75F40905bd87", "interchainAccountIsm": "0x943303Ad7D2B87BB363E0BACC901486337d9B316", - "multisigIsmFactory": "0xfD548D8a8EB8366D802F24e1bC6D1d21dB057EF1", "aggregationIsmFactory": "0x30B3Ef3e98B1FF72f03f71f68115E18F203Ec794", "routingIsmFactory": "0xBF30B4F328d1F6AC47ecCcF23836F3CbB2422c9f" }, @@ -43,7 +41,6 @@ "interchainQueryRouter": "0x234b19282985882d6d6fd54dEBa272271f4eb784", "interchainAccountRouter": "0x77c509140A45B4B85E1A28f8c21AaEB3Ca8788B3", "interchainAccountIsm": "0x88C01B64dCe0032796a1967E2b3447B397c6c7AC", - "multisigIsmFactory": "0x270d0334bC98a02f7A4e2328B319EDEDcd7a2000", "aggregationIsmFactory": "0x070d4f61b05eD9e20C9194f29Df073f2110705fc", "routingIsmFactory": "0x0FC1A9DFAca9b6Ba11bC470Bf284Da7c107fDfF2" }, @@ -59,7 +56,6 @@ "interchainQueryRouter": "0x234b19282985882d6d6fd54dEBa272271f4eb784", "interchainAccountRouter": "0x4a4D878c41C7F71eCff182F526b7691aDC6e4150", "interchainAccountIsm": "0xCd8ACf2254641bD3Eaa32C1B8D36f0983de8C0E6", - "multisigIsmFactory": "0xfF4872B62225c1f029a894D4682b250dD5577AC7", "aggregationIsmFactory": "0x10Add66Db9C837000A43F3601aa9c54c6744F4c8", "routingIsmFactory": "0x0B48a744698ba8dFa514742dFEB6728f52fD66f7" }, @@ -75,7 +71,6 @@ "interchainQueryRouter": "0x234b19282985882d6d6fd54dEBa272271f4eb784", "interchainAccountRouter": "0xF9A4e3BA5e532906c241310f6832d2Ee8D1c5609", "interchainAccountIsm": "0x1d3Bdf44887744007C7C62c85924c445C9e825DE", - "multisigIsmFactory": "0x4F5db88EEdEBd6a8303ed13491169d4229D9A735", "aggregationIsmFactory": "0x4084054Fc83af652A1f21EA2FF2a668D796e2514", "routingIsmFactory": "0x85392758524EEE2323Bd3029E77aFc9bA9E60216" }, @@ -91,7 +86,6 @@ "interchainQueryRouter": "0x234b19282985882d6d6fd54dEBa272271f4eb784", "interchainAccountRouter": "0xAC2BE81884C66E6c05B80C05C907B54C74eA2C49", "interchainAccountIsm": "0xC1d10a99C382Dd224d7F513C7e0f74D7689071f4", - "multisigIsmFactory": "0x2A87BF6aE678569545B258fA11087C6F57dd9012", "aggregationIsmFactory": "0x9E3075E067932d744119e583B34d11b144CE1e4A", "routingIsmFactory": "0xcC2fA09fa13857942fae408EcCEc8De307344e99" }, @@ -107,7 +101,6 @@ "interchainQueryRouter": "0x234b19282985882d6d6fd54dEBa272271f4eb784", "interchainAccountRouter": "0x652e2F475Af7b1154817E09f5408f9011037492a", "interchainAccountIsm": "0x3de63b62BeF9Da290F51f856cA9F3dB4225EDc05", - "multisigIsmFactory": "0x21581dE0CB0Ce91E87b9d5124543C75Fa01ED9CC", "aggregationIsmFactory": "0xb7d42f065E32eB6fCAac7ef83902c56164328fE2", "routingIsmFactory": "0x4ef980034E631CC0CFb3b065aB793611f1B6511A" }, @@ -123,7 +116,6 @@ "interchainQueryRouter": "0x234b19282985882d6d6fd54dEBa272271f4eb784", "interchainAccountRouter": "0x5b6311e0417CfD3Fb10318108897E63777CFE8D7", "interchainAccountIsm": "0x88d346eEc75b6D22428bbaB569b6eBB0bE183c4F", - "multisigIsmFactory": "0xe3DB9EdafBA60629308166B21DE2B4970bF94969", "aggregationIsmFactory": "0x20E1897CD584C3788A3C24f5e424345a55ADf90C", "routingIsmFactory": "0xB5ec4e94ec47A70C6A38370666F713423816ce4c" }, @@ -140,7 +132,6 @@ "interchainQueryRouter": "0x234b19282985882d6d6fd54dEBa272271f4eb784", "interchainAccountRouter": "0x32e77b20bf0cf034eB80ea9DD02De881016B01B3", "interchainAccountIsm": "0x8AB7A6FaC052518A39628497735C855a2Beb515B", - "multisigIsmFactory": "0xb58257cc81E47EC72fD38aE16297048de23163b4", "aggregationIsmFactory": "0xb4fc9B5fD57499Ef6FfF3995728a55F7A618ef86", "routingIsmFactory": "0xbB22547D1dc681fe925f568f637Ff67aC06c20fc" } diff --git a/typescript/sdk/src/consts/environments/testnet.json b/typescript/sdk/src/consts/environments/testnet.json index baf647bb1..72f621bcf 100644 --- a/typescript/sdk/src/consts/environments/testnet.json +++ b/typescript/sdk/src/consts/environments/testnet.json @@ -11,7 +11,6 @@ "interchainQueryRouter": "0xF782C6C4A02f2c71BB8a1Db0166FAB40ea956818", "interchainAccountRouter": "0xDb91D575F17d8AAf1aFEC0eaDBD5Ac9e5Cef4ad0", "interchainAccountIsm": "0x0aA320a1bD450152B4C500613335CeBA4f6073cF", - "multisigIsmFactory": "0x9AF85731EDd41E2E50F81Ef8a0A69D2fB836EDf9", "aggregationIsmFactory": "0xBEd8Fd6d5c6cBd878479C25f4725C7c842a43821", "routingIsmFactory": "0x98F44EA5b9cA6aa02a5B75f31E0621083d9096a2" }, @@ -27,7 +26,6 @@ "interchainQueryRouter": "0xF782C6C4A02f2c71BB8a1Db0166FAB40ea956818", "interchainAccountRouter": "0xf82b58Bf348a6CEA6e19413e9DE040dB1a363128", "interchainAccountIsm": "0x333C9A8c70Ea4F0498Fb58bEe40DEa40e63a9962", - "multisigIsmFactory": "0x094652a8ea2153A03916771a778E7b66839A4F58", "aggregationIsmFactory": "0x9fB5D10C07569F2EBdc8ec4432B3a52b6d0ad9A0", "routingIsmFactory": "0xB24C91238eA30D59CF58CEB8dd5e4eaf70544d47" }, @@ -43,7 +41,6 @@ "interchainQueryRouter": "0xF782C6C4A02f2c71BB8a1Db0166FAB40ea956818", "interchainAccountRouter": "0x6a9CeD0e13E738517558aA283DA0E93e5904D49b", "interchainAccountIsm": "0x40c2d6cA6F5A8857705C128b2c1A5f0Ae20880dc", - "multisigIsmFactory": "0x32268e45724626972650837A26eEF0Dd9E6aEEE3", "aggregationIsmFactory": "0xD095B3ADa705e171f40187e10eD07Ee5fe291704", "routingIsmFactory": "0xdc8BC001FB649EfD51eEDD33151d428b917AaE3d" }, @@ -59,7 +56,6 @@ "interchainQueryRouter": "0xF782C6C4A02f2c71BB8a1Db0166FAB40ea956818", "interchainAccountRouter": "0x951c74D83a85833b53A448caaB7397bd3fa6CFB2", "interchainAccountIsm": "0x9034f60Dec10cFa162369444081685F542d0C24D", - "multisigIsmFactory": "0xfb6B94750e1307719892fBC21AC7A0C74A467869", "aggregationIsmFactory": "0xda72972291172B9966Dec7606d45d72e2b9f2470", "routingIsmFactory": "0x0CA314006fe0e7EF88ad2Bb69a7421aB2f1C5288" }, @@ -75,7 +71,6 @@ "interchainQueryRouter": "0xF782C6C4A02f2c71BB8a1Db0166FAB40ea956818", "interchainAccountRouter": "0xCb0ba89F564e31180A101Df54b7971206e03ee9b", "interchainAccountIsm": "0x70835F3C2845394842DEA9f40cbe8087b2cE5712", - "multisigIsmFactory": "0xFa13bd2BD45644bAF0797e41D1a4D56601a4059a", "aggregationIsmFactory": "0x11413a6Ea76a55eAec950894ba8fdd7683E41b06", "routingIsmFactory": "0x129A80Fe557153B5F48B4292F8C177bACdcf7dB3" }, @@ -91,7 +86,6 @@ "interchainQueryRouter": "0xF782C6C4A02f2c71BB8a1Db0166FAB40ea956818", "interchainAccountRouter": "0x209Ccdbe13BB913104117B1D6f7801684e98FA1F", "interchainAccountIsm": "0xD699ff94f3FFd60A3a09bBff96181325B6C73FB8", - "multisigIsmFactory": "0x4266D8Dd66D8Eb3934c8942968d1e54214D072d3", "aggregationIsmFactory": "0x759c4Eb4575B651a9f0Fb46653dd7B2F32fD7310", "routingIsmFactory": "0x561331FafB7f2ABa77E77780178ADdD1A37bdaBD" }, @@ -107,7 +101,6 @@ "interchainQueryRouter": "0xF782C6C4A02f2c71BB8a1Db0166FAB40ea956818", "interchainAccountRouter": "0x12EBd8cb561c68b587C392e0c5405B9866FD5820", "interchainAccountIsm": "0x82F5a960a4e4Cc0614253e4977bb3BE10344a30C", - "multisigIsmFactory": "0x0bA75fBC56FEb7e4F5EF4a8F042272cfec152ABc", "aggregationIsmFactory": "0x919AD6f6DFE1C17b89DAC2eE526F153C08afE305", "routingIsmFactory": "0x1D7b8aBa2494Ec82e80D6206d2B3df9f8C3F1862" }, @@ -123,7 +116,6 @@ "interchainQueryRouter": "0xF782C6C4A02f2c71BB8a1Db0166FAB40ea956818", "interchainAccountRouter": "0x4266D8Dd66D8Eb3934c8942968d1e54214D072d3", "interchainAccountIsm": "0xA8978fdB093b1C5b892291A36e8527b34B749d6f", - "multisigIsmFactory": "0x71cCc98689B48Dd50Fd5950815A56d76477349B2", "aggregationIsmFactory": "0xa27F4a2bD624CF1cB3605c532E95E27BB0AC0BB3", "routingIsmFactory": "0xa68022e53Fd28119D07C8336a8eC84A298Fd38Fd" }, @@ -138,7 +130,6 @@ "testRecipient": "0xBC3cFeca7Df5A45d61BC60E7898E63670e1654aE", "interchainAccountRouter": "0xB057Fb841027a8554521DcCdeC3c3474CaC99AB5", "interchainAccountIsm": "0x7483faD0Bc297667664A43A064bA7c9911659f57", - "multisigIsmFactory": "0xD356C996277eFb7f75Ee8bd61b31cC781A12F54f", "aggregationIsmFactory": "0x01812D60958798695391dacF092BAc4a715B1718", "routingIsmFactory": "0xE67CfA164cDa449Ae38a0a09391eF6bCDf8e4e2c" } diff --git a/typescript/sdk/src/core/HyperlaneCoreDeployer.ts b/typescript/sdk/src/core/HyperlaneCoreDeployer.ts index 495e0208d..0bac77540 100644 --- a/typescript/sdk/src/core/HyperlaneCoreDeployer.ts +++ b/typescript/sdk/src/core/HyperlaneCoreDeployer.ts @@ -66,22 +66,22 @@ export class HyperlaneCoreDeployer extends HyperlaneDeployer< const cachedMailbox = this.deployedContracts[chain]?.mailbox; if (cachedMailbox) { const module = await cachedMailbox.defaultIsm(); - const matches = await moduleMatchesConfig( - chain, - module, - config, - this.ismFactory.multiProvider, - this.ismFactory.getContracts(chain), - ); - if (!matches) { - const ism = await this.ismFactory.deploy(chain, config); - return ism.address; + if ( + await moduleMatchesConfig( + chain, + module, + config, + this.ismFactory.multiProvider, + this.ismFactory.getContracts(chain), + ) + ) { + this.logger(`Default ISM matches config for ${chain}`); + return module; } - return module; - } else { - const ism = await this.ismFactory.deploy(chain, config); - return ism.address; } + this.logger(`Deploying new ISM to ${chain}`); + const ism = await this.ismFactory.deploy(chain, config); + return ism.address; } async deployContracts( diff --git a/typescript/sdk/src/ism/HyperlaneIsmFactory.ts b/typescript/sdk/src/ism/HyperlaneIsmFactory.ts index c8421f5aa..ad313ea2f 100644 --- a/typescript/sdk/src/ism/HyperlaneIsmFactory.ts +++ b/typescript/sdk/src/ism/HyperlaneIsmFactory.ts @@ -1,3 +1,4 @@ +import { debug } from 'debug'; import { ethers } from 'ethers'; import { @@ -56,7 +57,11 @@ export class HyperlaneIsmFactory extends HyperlaneApp { ismFactoryFactories, multiProvider, ); - return new HyperlaneIsmFactory(helper.contractsMap, helper.multiProvider); + return new HyperlaneIsmFactory( + helper.contractsMap, + helper.multiProvider, + debug('hyperlane:IsmFactoryApp'), + ); } async deploy( @@ -69,10 +74,17 @@ export class HyperlaneIsmFactory extends HyperlaneApp { config.type === ModuleType.MESSAGE_ID_MULTISIG || config.type === ModuleType.LEGACY_MULTISIG ) { + this.logger(`Deploying Multisig ISM to ${chain} for verifying ${origin}`); return this.deployMultisigIsm(chain, config, origin); } else if (config.type === ModuleType.ROUTING) { + this.logger( + `Deploying Routing ISM to ${chain} for verifying ${Object.keys( + config.domains, + )}`, + ); return this.deployRoutingIsm(chain, config); } else if (config.type === ModuleType.AGGREGATION) { + this.logger(`Deploying Aggregation ISM to ${chain}`); return this.deployAggregationIsm(chain, config); } else { throw new Error(`Unsupported ISM type`); @@ -87,7 +99,7 @@ export class HyperlaneIsmFactory extends HyperlaneApp { const signer = this.multiProvider.getSigner(chain); let address: string; if (config.type === ModuleType.LEGACY_MULTISIG) { - if (process.env.E2E_CI_MODE !== 'true') { + if (process.env.CI !== 'true') { throw new Error( 'Legacy multisig ISM is being deprecated, do not deploy', ); @@ -184,7 +196,14 @@ export class HyperlaneIsmFactory extends HyperlaneApp { const provider = this.multiProvider.getProvider(chain); const code = await provider.getCode(address); if (code === '0x') { + this.logger( + `Deploying new ${threshold} of ${values.length} address set to ${chain}`, + ); await factory.deploy(sorted, threshold); + } else { + this.logger( + `Recovered ${threshold} of ${values.length} address set on ${chain}`, + ); } return address; } @@ -388,7 +407,11 @@ export function collectValidators( config: IsmConfig, ): Set { let validators: string[] = []; - if (config.type === ModuleType.MERKLE_ROOT_MULTISIG) { + if ( + config.type === ModuleType.MERKLE_ROOT_MULTISIG || + config.type === ModuleType.MESSAGE_ID_MULTISIG || + config.type === ModuleType.LEGACY_MULTISIG + ) { validators = config.validators; } else if (config.type === ModuleType.ROUTING) { if (Object.keys(config.domains).includes(origin)) {