From 91f7ea8adb49893fc2c25080fd3c9d3a16b6f036 Mon Sep 17 00:00:00 2001 From: pbio <10051819+paulbalaji@users.noreply.github.com> Date: Tue, 11 Feb 2025 11:14:46 +0000 Subject: [PATCH] feat: configure HyperlaneCCIPDeployer in infra --- .../config/environments/mainnet3/ccip.ts | 14 +++++++++++ typescript/infra/scripts/agent-utils.ts | 2 ++ typescript/infra/scripts/deploy.ts | 25 ++++++++++++++----- typescript/sdk/src/index.ts | 1 + 4 files changed, 36 insertions(+), 6 deletions(-) create mode 100644 typescript/infra/config/environments/mainnet3/ccip.ts diff --git a/typescript/infra/config/environments/mainnet3/ccip.ts b/typescript/infra/config/environments/mainnet3/ccip.ts new file mode 100644 index 0000000000..33e766219f --- /dev/null +++ b/typescript/infra/config/environments/mainnet3/ccip.ts @@ -0,0 +1,14 @@ +import { ChainMap, ChainName, getCCIPChains } from '@hyperlane-xyz/sdk'; + +export function getCCIPDeployConfig( + targetNetworks: ChainName[], +): ChainMap> { + const ccipConfig: ChainMap> = {}; + const chains = getCCIPChains().filter((chain) => + targetNetworks.includes(chain), + ); + for (const origin of chains) { + ccipConfig[origin] = new Set(chains.filter((chain) => chain !== origin)); + } + return ccipConfig; +} diff --git a/typescript/infra/scripts/agent-utils.ts b/typescript/infra/scripts/agent-utils.ts index 07b9abfb24..6fd2987b92 100644 --- a/typescript/infra/scripts/agent-utils.ts +++ b/typescript/infra/scripts/agent-utils.ts @@ -72,6 +72,7 @@ export enum Modules { HELLO_WORLD = 'helloworld', WARP = 'warp', HAAS = 'haas', + CCIP = 'ccip', } export const REGISTRY_MODULES = [ @@ -82,6 +83,7 @@ export const REGISTRY_MODULES = [ Modules.INTERCHAIN_QUERY_SYSTEM, Modules.TEST_RECIPIENT, Modules.HOOK, + Modules.CCIP, ]; export function getArgs() { diff --git a/typescript/infra/scripts/deploy.ts b/typescript/infra/scripts/deploy.ts index 347f4d5d38..2c52965b6e 100644 --- a/typescript/infra/scripts/deploy.ts +++ b/typescript/infra/scripts/deploy.ts @@ -9,6 +9,7 @@ import { ContractVerifier, ExplorerLicenseType, HypERC20Deployer, + HyperlaneCCIPDeployer, HyperlaneCoreDeployer, HyperlaneDeployer, HyperlaneHookDeployer, @@ -24,6 +25,7 @@ import { import { objFilter, objMap } from '@hyperlane-xyz/utils'; import { Contexts } from '../config/contexts.js'; +import { getCCIPDeployConfig } from '../config/environments/mainnet3/ccip.js'; import { core as coreConfig } from '../config/environments/mainnet3/core.js'; import { getEnvAddresses } from '../config/registry.js'; import { getWarpConfig } from '../config/warp.js'; @@ -79,6 +81,13 @@ async function main() { chains, ); + const targetNetworks = + chains && chains.length > 0 ? chains : !fork ? [] : [fork]; + + const filteredTargetNetworks = targetNetworks.filter( + (chain) => !chainsToSkip.includes(chain), + ); + if (fork) { multiProvider = multiProvider.extendChainMetadata({ [fork]: { blocks: { confirmations: 0 } }, @@ -241,6 +250,16 @@ async function main() { config = { ethereum: coreConfig.ethereum.defaultHook, }; + } else if (module === Modules.CCIP) { + if (environment !== 'mainnet3') { + throw new Error('CCIP is only supported on mainnet3'); + } + config = getCCIPDeployConfig(filteredTargetNetworks); + deployer = new HyperlaneCCIPDeployer( + multiProvider, + getEnvAddresses(environment), + contractVerifier, + ); } else { console.log(`Skipping ${module}, deployer unimplemented`); return; @@ -284,12 +303,6 @@ async function main() { } } - const targetNetworks = - chains && chains.length > 0 ? chains : !fork ? [] : [fork]; - - const filteredTargetNetworks = targetNetworks.filter( - (chain) => !chainsToSkip.includes(chain), - ); chainsToSkip.forEach((chain) => delete config[chain]); await deployWithArtifacts({ diff --git a/typescript/sdk/src/index.ts b/typescript/sdk/src/index.ts index b907740a83..e5bf0edc82 100644 --- a/typescript/sdk/src/index.ts +++ b/typescript/sdk/src/index.ts @@ -648,3 +648,4 @@ export { getCCIPRouterAddress, getCCIPChains, } from './ccip/utils.js'; +export { HyperlaneCCIPDeployer } from './ccip/HyperlaneCCIPDeployer.js';