From 62626e5e2bd7a439cc0f803531dee3a79f532a88 Mon Sep 17 00:00:00 2001 From: Le Yu <6251863+ltyu@users.noreply.github.com> Date: Mon, 2 Dec 2024 14:30:25 -0500 Subject: [PATCH 01/21] Initial commit --- .../configGetters/getRenzoEZETHWarpConfig.ts | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoEZETHWarpConfig.ts b/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoEZETHWarpConfig.ts index 198a708d1c..b16f644b15 100644 --- a/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoEZETHWarpConfig.ts +++ b/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoEZETHWarpConfig.ts @@ -1,5 +1,6 @@ import { ChainMap, + HookType, IsmType, MultisigConfig, TokenRouterConfig, @@ -164,6 +165,16 @@ export const ezEthValidators: ChainMap = { { address: '0x952df7f0cb8611573a53dd7cbf29768871d9f8b0', alias: 'Renzo' }, ], }, + swell: { + threshold: 1, + validators: [ + { + address: '0x7a0f4a8672f603e0c12468551db03f3956d10910', + alias: 'Luganodes', + }, + { address: '0x952df7f0cb8611573a53dd7cbf29768871d9f8b0', alias: 'Renzo' }, + ], + }, }; export const ezEthSafes: Record = { @@ -179,6 +190,7 @@ export const ezEthSafes: Record = { zircuit: '0x8410927C286A38883BC23721e640F31D3E3E79F8', taiko: '0x8410927C286A38883BC23721e640F31D3E3E79F8', sei: '0x0e60fd361fF5b90088e1782e6b21A7D177d462C5', + swell: '0x0e60fd361fF5b90088e1782e6b21A7D177d462C5', }; export const getRenzoEZETHWarpConfig = async (): Promise< @@ -254,6 +266,13 @@ export const getRenzoEZETHWarpConfig = async (): Promise< }, ], }, + hook: { + type: HookType.PROTOCOL_FEE, + owner: ezEthSafes[chain], + beneficiary: ezEthSafes[chain], + maxProtocolFee: 'x', + protocolFee: 'x', + }, }, ]; From 08e47e7e6035947910369cf385cb5d82773bfa3a Mon Sep 17 00:00:00 2001 From: Le Yu <6251863+ltyu@users.noreply.github.com> Date: Mon, 2 Dec 2024 14:49:48 -0500 Subject: [PATCH 02/21] Additional updates --- .../warp/configGetters/getRenzoEZETHWarpConfig.ts | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoEZETHWarpConfig.ts b/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoEZETHWarpConfig.ts index b16f644b15..30e0616ecc 100644 --- a/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoEZETHWarpConfig.ts +++ b/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoEZETHWarpConfig.ts @@ -1,3 +1,5 @@ +import { parseUnits } from 'ethers/lib/utils.js'; + import { ChainMap, HookType, @@ -24,6 +26,7 @@ const chainsToDeploy = [ 'zircuit', 'taiko', 'sei', + 'swell', ]; const lockboxChain = 'ethereum'; // over the default 100k to account for xerc20 gas + ISM overhead over the default ISM https://github.com/hyperlane-xyz/hyperlane-monorepo/blob/49f41d9759fd515bfd89e6e22e799c41b27b4119/typescript/sdk/src/router/GasRouterDeployer.ts#L14 @@ -42,6 +45,7 @@ const xERC20: Record<(typeof chainsToDeploy)[number], string> = { zircuit: '0x2416092f143378750bb29b79eD961ab195CcEea5', taiko: '0x2416092f143378750bb29b79eD961ab195CcEea5', sei: '0x6DCfbF4729890043DFd34A93A2694E5303BA2703', // redEth + swell: '0x6DCfbF4729890043DFd34A93A2694E5303BA2703', }; export const ezEthValidators: ChainMap = { @@ -270,8 +274,8 @@ export const getRenzoEZETHWarpConfig = async (): Promise< type: HookType.PROTOCOL_FEE, owner: ezEthSafes[chain], beneficiary: ezEthSafes[chain], - maxProtocolFee: 'x', - protocolFee: 'x', + maxProtocolFee: parseUnits('100', 'ether').toString(), + protocolFee: parseUnits('100', 'ether').toString(), }, }, ]; From 22fa5fe81f8eab77b720ec81f24a16da3fb032c3 Mon Sep 17 00:00:00 2001 From: Le Yu <6251863+ltyu@users.noreply.github.com> Date: Tue, 3 Dec 2024 11:19:38 -0500 Subject: [PATCH 03/21] Fix conflicts; Add protocol fee --- .../configGetters/getRenzoEZETHWarpConfig.ts | 18 +++++++----- typescript/sdk/src/providers/MultiProvider.ts | 29 ++++++++++++++++++- 2 files changed, 39 insertions(+), 8 deletions(-) diff --git a/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoEZETHWarpConfig.ts b/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoEZETHWarpConfig.ts index 30e0616ecc..039cda09c5 100644 --- a/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoEZETHWarpConfig.ts +++ b/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoEZETHWarpConfig.ts @@ -1,4 +1,4 @@ -import { parseUnits } from 'ethers/lib/utils.js'; +import { parseEther } from 'ethers/lib/utils.js'; import { ChainMap, @@ -28,6 +28,10 @@ const chainsToDeploy = [ 'sei', 'swell', ]; + +const MAX_PROTOCOL_FEE = parseEther('100').toString(); // Changing this will redeploy the PROTOCOL_FEE hook +const CURRENT_ETH_PRICE = 3500; // Changing this will update the existing PROTOCOL_FEE hook +const protocolFee = (0.5 / CURRENT_ETH_PRICE).toFixed(10).toString(); // ~$0.50 USD const lockboxChain = 'ethereum'; // over the default 100k to account for xerc20 gas + ISM overhead over the default ISM https://github.com/hyperlane-xyz/hyperlane-monorepo/blob/49f41d9759fd515bfd89e6e22e799c41b27b4119/typescript/sdk/src/router/GasRouterDeployer.ts#L14 const warpRouteOverheadGas = 200_000; @@ -45,7 +49,7 @@ const xERC20: Record<(typeof chainsToDeploy)[number], string> = { zircuit: '0x2416092f143378750bb29b79eD961ab195CcEea5', taiko: '0x2416092f143378750bb29b79eD961ab195CcEea5', sei: '0x6DCfbF4729890043DFd34A93A2694E5303BA2703', // redEth - swell: '0x6DCfbF4729890043DFd34A93A2694E5303BA2703', + swell: '0x6DCfbF4729890043DFd34A93A2694E5303BA2703', // TODO: NOT READY }; export const ezEthValidators: ChainMap = { @@ -173,10 +177,10 @@ export const ezEthValidators: ChainMap = { threshold: 1, validators: [ { - address: '0x7a0f4a8672f603e0c12468551db03f3956d10910', + address: '0x7a0f4a8672f603e0c12468551db03f3956d10910', // TODO: NOT READY alias: 'Luganodes', }, - { address: '0x952df7f0cb8611573a53dd7cbf29768871d9f8b0', alias: 'Renzo' }, + { address: '0xb6b9b4bd4eb6eb3aef5e9826e7f8b8455947f67c', alias: 'Renzo' }, ], }, }; @@ -194,7 +198,7 @@ export const ezEthSafes: Record = { zircuit: '0x8410927C286A38883BC23721e640F31D3E3E79F8', taiko: '0x8410927C286A38883BC23721e640F31D3E3E79F8', sei: '0x0e60fd361fF5b90088e1782e6b21A7D177d462C5', - swell: '0x0e60fd361fF5b90088e1782e6b21A7D177d462C5', + swell: '0x0e60fd361fF5b90088e1782e6b21A7D177d462C5', // TODO: NOT READY }; export const getRenzoEZETHWarpConfig = async (): Promise< @@ -274,8 +278,8 @@ export const getRenzoEZETHWarpConfig = async (): Promise< type: HookType.PROTOCOL_FEE, owner: ezEthSafes[chain], beneficiary: ezEthSafes[chain], - maxProtocolFee: parseUnits('100', 'ether').toString(), - protocolFee: parseUnits('100', 'ether').toString(), + protocolFee: parseEther(protocolFee).toString(), + maxProtocolFee: MAX_PROTOCOL_FEE, }, }, ]; diff --git a/typescript/sdk/src/providers/MultiProvider.ts b/typescript/sdk/src/providers/MultiProvider.ts index 7b5f923061..6ffc94e8c0 100644 --- a/typescript/sdk/src/providers/MultiProvider.ts +++ b/typescript/sdk/src/providers/MultiProvider.ts @@ -9,6 +9,7 @@ import { } from 'ethers'; import { Logger } from 'pino'; +import { buildArtifact as coreBuildArtifact } from '@hyperlane-xyz/core/buildArtifact.js'; import { Address, addBufferToGasLimit, @@ -17,6 +18,9 @@ import { } from '@hyperlane-xyz/utils'; import { testChainMetadata, testChains } from '../consts/testChains.js'; +import { ContractVerifier } from '../deploy/verify/ContractVerifier.js'; +import { ExplorerLicenseType } from '../deploy/verify/types.js'; +import { getContractVerificationInput } from '../deploy/verify/utils.js'; import { ChainMetadataManager } from '../metadata/ChainMetadataManager.js'; import { ChainMetadata } from '../metadata/chainMetadataTypes.js'; import { ChainMap, ChainName, ChainNameOrId } from '../types.js'; @@ -46,7 +50,6 @@ export class MultiProvider extends ChainMetadataManager { signers: ChainMap; useSharedSigner = false; // A single signer to be used for all chains readonly logger: Logger; - /** * Create a new MultiProvider with the given chainMetadata, * or the SDK's default metadata if not provided @@ -336,6 +339,30 @@ export class MultiProvider extends ChainMetadataManager { // wait for deploy tx to be confirmed await this.handleTx(chainNameOrId, contract.deployTransaction); + // verify deployed contracts + try { + const chain = this.getChainName(chainNameOrId); + const explorerApi = this.getExplorerApi(chain); + const contractVerifier = new ContractVerifier( + this as MultiProvider, + { [chain]: explorerApi.apiKey ?? '' }, + coreBuildArtifact, + ExplorerLicenseType.MIT, + ); + const factoryName = factory.constructor.name; + console.log(`trying to verify ${factoryName}`); + const verificationInput = getContractVerificationInput({ + name: factoryName.substring(0, factoryName.indexOf('__factory')), + contract, + bytecode: factory.bytecode, + expectedimplementation: contract.address, + }); + + contractVerifier.verifyContract(chain, verificationInput, this.logger); + } catch (e) { + this.logger.debug(`Failed to verify contracts in MultiProvider ${e}`); + } + // return deployed contract return contract as Awaited>; } From dd66c18afec9b99001088865451a0b8fea6d603d Mon Sep 17 00:00:00 2001 From: Le Yu <6251863+ltyu@users.noreply.github.com> Date: Tue, 3 Dec 2024 11:22:31 -0500 Subject: [PATCH 04/21] Revert local change as a result of merge --- typescript/sdk/src/providers/MultiProvider.ts | 29 +------------------ 1 file changed, 1 insertion(+), 28 deletions(-) diff --git a/typescript/sdk/src/providers/MultiProvider.ts b/typescript/sdk/src/providers/MultiProvider.ts index 6ffc94e8c0..7b5f923061 100644 --- a/typescript/sdk/src/providers/MultiProvider.ts +++ b/typescript/sdk/src/providers/MultiProvider.ts @@ -9,7 +9,6 @@ import { } from 'ethers'; import { Logger } from 'pino'; -import { buildArtifact as coreBuildArtifact } from '@hyperlane-xyz/core/buildArtifact.js'; import { Address, addBufferToGasLimit, @@ -18,9 +17,6 @@ import { } from '@hyperlane-xyz/utils'; import { testChainMetadata, testChains } from '../consts/testChains.js'; -import { ContractVerifier } from '../deploy/verify/ContractVerifier.js'; -import { ExplorerLicenseType } from '../deploy/verify/types.js'; -import { getContractVerificationInput } from '../deploy/verify/utils.js'; import { ChainMetadataManager } from '../metadata/ChainMetadataManager.js'; import { ChainMetadata } from '../metadata/chainMetadataTypes.js'; import { ChainMap, ChainName, ChainNameOrId } from '../types.js'; @@ -50,6 +46,7 @@ export class MultiProvider extends ChainMetadataManager { signers: ChainMap; useSharedSigner = false; // A single signer to be used for all chains readonly logger: Logger; + /** * Create a new MultiProvider with the given chainMetadata, * or the SDK's default metadata if not provided @@ -339,30 +336,6 @@ export class MultiProvider extends ChainMetadataManager { // wait for deploy tx to be confirmed await this.handleTx(chainNameOrId, contract.deployTransaction); - // verify deployed contracts - try { - const chain = this.getChainName(chainNameOrId); - const explorerApi = this.getExplorerApi(chain); - const contractVerifier = new ContractVerifier( - this as MultiProvider, - { [chain]: explorerApi.apiKey ?? '' }, - coreBuildArtifact, - ExplorerLicenseType.MIT, - ); - const factoryName = factory.constructor.name; - console.log(`trying to verify ${factoryName}`); - const verificationInput = getContractVerificationInput({ - name: factoryName.substring(0, factoryName.indexOf('__factory')), - contract, - bytecode: factory.bytecode, - expectedimplementation: contract.address, - }); - - contractVerifier.verifyContract(chain, verificationInput, this.logger); - } catch (e) { - this.logger.debug(`Failed to verify contracts in MultiProvider ${e}`); - } - // return deployed contract return contract as Awaited>; } From 01c4183fd6874e7d9abbce28a4bfec723f94f592 Mon Sep 17 00:00:00 2001 From: Le Yu <6251863+ltyu@users.noreply.github.com> Date: Fri, 6 Dec 2024 15:57:07 -0500 Subject: [PATCH 05/21] Add swell addresses. fix according to PR --- .../warp/configGetters/getRenzoEZETHWarpConfig.ts | 12 +++++++----- .../config/environments/mainnet3/warp/warpIds.ts | 2 +- typescript/infra/config/warp.ts | 2 +- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoEZETHWarpConfig.ts b/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoEZETHWarpConfig.ts index 039cda09c5..2c133167e8 100644 --- a/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoEZETHWarpConfig.ts +++ b/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoEZETHWarpConfig.ts @@ -12,7 +12,9 @@ import { import { symmetricDifference } from '@hyperlane-xyz/utils'; import { getRegistry as getMainnet3Registry } from '../../chains.js'; +import rawTokenPrices from '../../tokenPrices.json'; +const tokenPrices: ChainMap = rawTokenPrices; const chainsToDeploy = [ 'arbitrum', 'optimism', @@ -30,8 +32,8 @@ const chainsToDeploy = [ ]; const MAX_PROTOCOL_FEE = parseEther('100').toString(); // Changing this will redeploy the PROTOCOL_FEE hook -const CURRENT_ETH_PRICE = 3500; // Changing this will update the existing PROTOCOL_FEE hook -const protocolFee = (0.5 / CURRENT_ETH_PRICE).toFixed(10).toString(); // ~$0.50 USD + +const protocolFee = (0.5 / Number(tokenPrices.ethereum)).toFixed(10).toString(); // ~$0.50 USD const lockboxChain = 'ethereum'; // over the default 100k to account for xerc20 gas + ISM overhead over the default ISM https://github.com/hyperlane-xyz/hyperlane-monorepo/blob/49f41d9759fd515bfd89e6e22e799c41b27b4119/typescript/sdk/src/router/GasRouterDeployer.ts#L14 const warpRouteOverheadGas = 200_000; @@ -49,7 +51,7 @@ const xERC20: Record<(typeof chainsToDeploy)[number], string> = { zircuit: '0x2416092f143378750bb29b79eD961ab195CcEea5', taiko: '0x2416092f143378750bb29b79eD961ab195CcEea5', sei: '0x6DCfbF4729890043DFd34A93A2694E5303BA2703', // redEth - swell: '0x6DCfbF4729890043DFd34A93A2694E5303BA2703', // TODO: NOT READY + swell: '0x2416092f143378750bb29b79eD961ab195CcEea5', }; export const ezEthValidators: ChainMap = { @@ -177,7 +179,7 @@ export const ezEthValidators: ChainMap = { threshold: 1, validators: [ { - address: '0x7a0f4a8672f603e0c12468551db03f3956d10910', // TODO: NOT READY + address: '0x9eadf9217be22d9878e0e464727a2176d5c69ff8', alias: 'Luganodes', }, { address: '0xb6b9b4bd4eb6eb3aef5e9826e7f8b8455947f67c', alias: 'Renzo' }, @@ -198,7 +200,7 @@ export const ezEthSafes: Record = { zircuit: '0x8410927C286A38883BC23721e640F31D3E3E79F8', taiko: '0x8410927C286A38883BC23721e640F31D3E3E79F8', sei: '0x0e60fd361fF5b90088e1782e6b21A7D177d462C5', - swell: '0x0e60fd361fF5b90088e1782e6b21A7D177d462C5', // TODO: NOT READY + swell: '0x435E8c9652Da151292F3981bbf663EBEB6668501', }; export const getRenzoEZETHWarpConfig = async (): Promise< diff --git a/typescript/infra/config/environments/mainnet3/warp/warpIds.ts b/typescript/infra/config/environments/mainnet3/warp/warpIds.ts index 3d23bdc087..f3a115e697 100644 --- a/typescript/infra/config/environments/mainnet3/warp/warpIds.ts +++ b/typescript/infra/config/environments/mainnet3/warp/warpIds.ts @@ -1,6 +1,6 @@ export enum WarpRouteIds { Ancient8EthereumUSDC = 'USDC/ancient8-ethereum', - ArbitrumBaseBlastBscEthereumFraxtalLineaModeOptimismSeiTaikoZircuitEZETH = 'EZETH/arbitrum-base-blast-bsc-ethereum-fraxtal-linea-mode-optimism-sei-taiko-zircuit', + ArbitrumBaseBlastBscEthereumFraxtalLineaModeOptimismSeiSwellTaikoZircuitEZETH = 'EZETH/arbitrum-base-blast-bsc-ethereum-fraxtal-linea-mode-optimism-sei-swell-taiko-zircuit', ArbitrumBaseEnduranceUSDC = 'USDC/arbitrum-base-endurance', ArbitrumEthereumZircuitAMPHRETH = 'AMPHRETH/arbitrum-ethereum-zircuit', ArbitrumNeutronEclip = 'ECLIP/arbitrum-neutron', diff --git a/typescript/infra/config/warp.ts b/typescript/infra/config/warp.ts index 0d93e10ddc..5b14712774 100644 --- a/typescript/infra/config/warp.ts +++ b/typescript/infra/config/warp.ts @@ -53,7 +53,7 @@ export const warpConfigGetterMap: Record = { [WarpRouteIds.EthereumInevmUSDT]: getEthereumInevmUSDTWarpConfig, [WarpRouteIds.ArbitrumNeutronEclip]: getArbitrumNeutronEclipWarpConfig, [WarpRouteIds.ArbitrumNeutronTIA]: getArbitrumNeutronTiaWarpConfig, - [WarpRouteIds.ArbitrumBaseBlastBscEthereumFraxtalLineaModeOptimismSeiTaikoZircuitEZETH]: + [WarpRouteIds.ArbitrumBaseBlastBscEthereumFraxtalLineaModeOptimismSeiSwellTaikoZircuitEZETH]: getRenzoEZETHWarpConfig, [WarpRouteIds.InevmInjectiveINJ]: getInevmInjectiveINJWarpConfig, [WarpRouteIds.EthereumFlowCbBTC]: getEthereumFlowCbBTCWarpConfig, From 669d2b1d7a13af72e75a767f0218dd704a16dcdc Mon Sep 17 00:00:00 2001 From: Le Yu <6251863+ltyu@users.noreply.github.com> Date: Mon, 9 Dec 2024 13:40:55 -0500 Subject: [PATCH 06/21] Add feehook and swell to pzEth --- .../configGetters/getRenzoPZETHWarpConfig.ts | 21 +++++++++++++++++-- .../environments/mainnet3/warp/warpIds.ts | 2 +- typescript/infra/config/warp.ts | 2 +- 3 files changed, 21 insertions(+), 4 deletions(-) diff --git a/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoPZETHWarpConfig.ts b/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoPZETHWarpConfig.ts index b9e9b42bbd..13bb15a903 100644 --- a/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoPZETHWarpConfig.ts +++ b/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoPZETHWarpConfig.ts @@ -1,5 +1,8 @@ +import { parseEther } from 'ethers/lib/utils.js'; + import { ChainMap, + HookType, IsmType, TokenRouterConfig, TokenType, @@ -9,7 +12,12 @@ import { symmetricDifference } from '@hyperlane-xyz/utils'; import { getRegistry as getMainnet3Registry } from '../../chains.js'; -import { ezEthSafes, ezEthValidators } from './getRenzoEZETHWarpConfig.js'; +import { + MAX_PROTOCOL_FEE, + ezEthSafes, + ezEthValidators, + protocolFee, +} from './getRenzoEZETHWarpConfig.js'; const lockbox = '0xbC5511354C4A9a50DE928F56DB01DD327c4e56d5'; const xERC20 = '0x9cb41CD74D01ae4b4f640EC40f7A60cA1bCF83E7'; @@ -17,16 +25,18 @@ const lockboxChain = 'ethereum'; // over the default 100k to account for xerc20 gas + ISM overhead over the default ISM https://github.com/hyperlane-xyz/hyperlane-monorepo/blob/49f41d9759fd515bfd89e6e22e799c41b27b4119/typescript/sdk/src/router/GasRouterDeployer.ts#L14 const warpRouteOverheadGas = 200_000; -const chainsToDeploy = ['ethereum', 'zircuit']; +const chainsToDeploy = ['ethereum', 'swell', 'zircuit']; const pzEthValidators = { ethereum: ezEthValidators.ethereum, zircuit: ezEthValidators.zircuit, + swell: ezEthValidators.swell, }; const pzEthSafes: Record = { ethereum: ezEthSafes.ethereum, zircuit: ezEthSafes.zircuit, + swell: ezEthSafes.swell, }; export const getRenzoPZETHWarpConfig = async (): Promise< @@ -91,6 +101,13 @@ export const getRenzoPZETHWarpConfig = async (): Promise< }, ], }, + hook: { + type: HookType.PROTOCOL_FEE, + owner: ezEthSafes[chain], + beneficiary: ezEthSafes[chain], + protocolFee: parseEther(protocolFee).toString(), + maxProtocolFee: MAX_PROTOCOL_FEE, + }, }, ]; diff --git a/typescript/infra/config/environments/mainnet3/warp/warpIds.ts b/typescript/infra/config/environments/mainnet3/warp/warpIds.ts index f3a115e697..31c033e8ed 100644 --- a/typescript/infra/config/environments/mainnet3/warp/warpIds.ts +++ b/typescript/infra/config/environments/mainnet3/warp/warpIds.ts @@ -24,7 +24,7 @@ export enum WarpRouteIds { EthereumVictionETH = 'ETH/ethereum-viction', EthereumVictionUSDC = 'USDC/ethereum-viction', EthereumVictionUSDT = 'USDT/ethereum-viction', - EthereumZircuitPZETH = 'PZETH/ethereum-zircuit', + EthereumZircuitSwellPZETH = 'PZETH/ethereum-swell-zircuit', EthereumBscLumiaLUMIA = 'LUMIA/bsc-ethereum-lumia', InevmInjectiveINJ = 'INJ/inevm-injective', MantapacificNeutronTIA = 'TIA/mantapacific-neutron', diff --git a/typescript/infra/config/warp.ts b/typescript/infra/config/warp.ts index 5b14712774..55da23886c 100644 --- a/typescript/infra/config/warp.ts +++ b/typescript/infra/config/warp.ts @@ -61,7 +61,7 @@ export const warpConfigGetterMap: Record = { [WarpRouteIds.EthereumVictionETH]: getEthereumVictionETHWarpConfig, [WarpRouteIds.EthereumVictionUSDC]: getEthereumVictionUSDCWarpConfig, [WarpRouteIds.EthereumVictionUSDT]: getEthereumVictionUSDTWarpConfig, - [WarpRouteIds.EthereumZircuitPZETH]: getRenzoPZETHWarpConfig, + [WarpRouteIds.EthereumZircuitSwellPZETH]: getRenzoPZETHWarpConfig, [WarpRouteIds.EthereumBscLumiaLUMIA]: getEthereumBscLUMIAWarpConfig, [WarpRouteIds.MantapacificNeutronTIA]: getMantapacificNeutronTiaWarpConfig, [WarpRouteIds.EclipseEthereumApxEth]: getEclipseEthereumApxEthWarpConfig, From a91e4a11fe59b9587504d8c6fcf7296743d9953f Mon Sep 17 00:00:00 2001 From: Le Yu <6251863+ltyu@users.noreply.github.com> Date: Mon, 9 Dec 2024 16:08:48 -0500 Subject: [PATCH 07/21] Add ProxyAdmin --- .../warp/configGetters/getRenzoPZETHWarpConfig.ts | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoPZETHWarpConfig.ts b/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoPZETHWarpConfig.ts index 13bb15a903..475ff3b5f4 100644 --- a/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoPZETHWarpConfig.ts +++ b/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoPZETHWarpConfig.ts @@ -39,6 +39,17 @@ const pzEthSafes: Record = { swell: ezEthSafes.swell, }; +const existingProxyAdmins: ChainMap<{ address: string; owner: string }> = { + ethereum: { + address: '0x4f4671Ce69c9af15e33eB7Cf6D1358d1B39Af3bF', + owner: '0xD1e6626310fD54Eceb5b9a51dA2eC329D6D4B68A', + }, + zircuit: { + address: '0x8b789B4A56675240c9f0985B467752b870c75711', + owner: '0x8410927C286A38883BC23721e640F31D3E3E79F8', + }, +}; + export const getRenzoPZETHWarpConfig = async (): Promise< ChainMap > => { @@ -108,6 +119,7 @@ export const getRenzoPZETHWarpConfig = async (): Promise< protocolFee: parseEther(protocolFee).toString(), maxProtocolFee: MAX_PROTOCOL_FEE, }, + proxyAdmin: existingProxyAdmins[chain], }, ]; From d3c65e9a98cfcbbcf7805533639d2fcb0b7f148f Mon Sep 17 00:00:00 2001 From: Le Yu <6251863+ltyu@users.noreply.github.com> Date: Mon, 9 Dec 2024 16:15:33 -0500 Subject: [PATCH 08/21] Rename Ids --- typescript/infra/config/environments/mainnet3/warp/warpIds.ts | 2 +- typescript/infra/config/warp.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/typescript/infra/config/environments/mainnet3/warp/warpIds.ts b/typescript/infra/config/environments/mainnet3/warp/warpIds.ts index 31c033e8ed..685567e4ad 100644 --- a/typescript/infra/config/environments/mainnet3/warp/warpIds.ts +++ b/typescript/infra/config/environments/mainnet3/warp/warpIds.ts @@ -24,7 +24,7 @@ export enum WarpRouteIds { EthereumVictionETH = 'ETH/ethereum-viction', EthereumVictionUSDC = 'USDC/ethereum-viction', EthereumVictionUSDT = 'USDT/ethereum-viction', - EthereumZircuitSwellPZETH = 'PZETH/ethereum-swell-zircuit', + EthereumSwellZircuitPZETH = 'PZETH/ethereum-swell-zircuit', EthereumBscLumiaLUMIA = 'LUMIA/bsc-ethereum-lumia', InevmInjectiveINJ = 'INJ/inevm-injective', MantapacificNeutronTIA = 'TIA/mantapacific-neutron', diff --git a/typescript/infra/config/warp.ts b/typescript/infra/config/warp.ts index 55da23886c..9ae3f66def 100644 --- a/typescript/infra/config/warp.ts +++ b/typescript/infra/config/warp.ts @@ -61,7 +61,7 @@ export const warpConfigGetterMap: Record = { [WarpRouteIds.EthereumVictionETH]: getEthereumVictionETHWarpConfig, [WarpRouteIds.EthereumVictionUSDC]: getEthereumVictionUSDCWarpConfig, [WarpRouteIds.EthereumVictionUSDT]: getEthereumVictionUSDTWarpConfig, - [WarpRouteIds.EthereumZircuitSwellPZETH]: getRenzoPZETHWarpConfig, + [WarpRouteIds.EthereumSwellZircuitPZETH]: getRenzoPZETHWarpConfig, [WarpRouteIds.EthereumBscLumiaLUMIA]: getEthereumBscLUMIAWarpConfig, [WarpRouteIds.MantapacificNeutronTIA]: getMantapacificNeutronTiaWarpConfig, [WarpRouteIds.EclipseEthereumApxEth]: getEclipseEthereumApxEthWarpConfig, From cc52505f80356cf6da42ae2fb58217d17afa03c0 Mon Sep 17 00:00:00 2001 From: Le Yu <6251863+ltyu@users.noreply.github.com> Date: Mon, 9 Dec 2024 16:26:10 -0500 Subject: [PATCH 09/21] Export constants --- .../mainnet3/warp/configGetters/getRenzoEZETHWarpConfig.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoEZETHWarpConfig.ts b/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoEZETHWarpConfig.ts index 2c133167e8..b0e07ad144 100644 --- a/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoEZETHWarpConfig.ts +++ b/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoEZETHWarpConfig.ts @@ -31,9 +31,11 @@ const chainsToDeploy = [ 'swell', ]; -const MAX_PROTOCOL_FEE = parseEther('100').toString(); // Changing this will redeploy the PROTOCOL_FEE hook +export const MAX_PROTOCOL_FEE = parseEther('100').toString(); // Changing this will redeploy the PROTOCOL_FEE hook -const protocolFee = (0.5 / Number(tokenPrices.ethereum)).toFixed(10).toString(); // ~$0.50 USD +export const protocolFee = (0.5 / Number(tokenPrices.ethereum)) + .toFixed(10) + .toString(); // ~$0.50 USD const lockboxChain = 'ethereum'; // over the default 100k to account for xerc20 gas + ISM overhead over the default ISM https://github.com/hyperlane-xyz/hyperlane-monorepo/blob/49f41d9759fd515bfd89e6e22e799c41b27b4119/typescript/sdk/src/router/GasRouterDeployer.ts#L14 const warpRouteOverheadGas = 200_000; From 239d629050ef0a59d31bc4b3770c6cdebbf433be Mon Sep 17 00:00:00 2001 From: Le Yu <6251863+ltyu@users.noreply.github.com> Date: Wed, 11 Dec 2024 12:49:57 -0500 Subject: [PATCH 10/21] Add Agg hook with igp and merkle tree --- .../configGetters/getRenzoEZETHWarpConfig.ts | 83 ++++++++++++++++--- .../configGetters/getRenzoPZETHWarpConfig.ts | 23 +++-- 2 files changed, 89 insertions(+), 17 deletions(-) diff --git a/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoEZETHWarpConfig.ts b/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoEZETHWarpConfig.ts index 5db2fc9d93..a08e9f12e5 100644 --- a/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoEZETHWarpConfig.ts +++ b/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoEZETHWarpConfig.ts @@ -2,6 +2,8 @@ import { parseEther } from 'ethers/lib/utils.js'; import { ChainMap, + ChainName, + HookType, HypTokenRouterConfig, IsmType, MultisigConfig, @@ -29,12 +31,12 @@ const chainsToDeploy = [ 'sei', 'swell', ]; - export const MAX_PROTOCOL_FEE = parseEther('100').toString(); // Changing this will redeploy the PROTOCOL_FEE hook -export const protocolFee = (0.5 / Number(tokenPrices.ethereum)) - .toFixed(10) - .toString(); // ~$0.50 USD +export function getProtocolFee(chain: ChainName) { + return (0.5 / Number(tokenPrices[chain])).toFixed(10).toString(); // ~$0.50 USD +} + const lockboxChain = 'ethereum'; // over the default 100k to account for xerc20 gas + ISM overhead over the default ISM https://github.com/hyperlane-xyz/hyperlane-monorepo/blob/49f41d9759fd515bfd89e6e22e799c41b27b4119/typescript/sdk/src/router/GasRouterDeployer.ts#L14 const warpRouteOverheadGas = 200_000; @@ -204,6 +206,57 @@ export const ezEthSafes: Record = { swell: '0x435E8c9652Da151292F3981bbf663EBEB6668501', }; +const existingProxyAdmins: ChainMap<{ address: string; owner: string }> = { + arbitrum: { + address: '0xdcB558d5C0F9A35C53Fa343c77eD0d346576e2Cf', + owner: ezEthSafes.arbitrum, + }, + optimism: { + address: '0xa50910ae66Df6A5F8e85dac032FD45BC2b7be6fF', + owner: ezEthSafes.optimism, + }, + base: { + address: '0xec1DdF05ff85D2B22B7d27E5b5E0B82961B7D889', + owner: ezEthSafes.base, + }, + blast: { + address: '0xA26F8cE2E21A503bf9e18c213965d7BC14997F48', + owner: ezEthSafes.blast, + }, + bsc: { + address: '0x486b39378f99f073A3043C6Aabe8666876A8F3C5', + owner: ezEthSafes.bsc, + }, + mode: { + address: '0x2F78F22a1D7491500C9ED9352b8239fbAbcDd84E', + owner: ezEthSafes.mode, + }, + fraxtal: { + address: '0x8bB69721B4E9b9df08bEdaeaA193008C7317Db59', + owner: ezEthSafes.fraxtal, + }, + linea: { + address: '0x2F78F22a1D7491500C9ED9352b8239fbAbcDd84E', + owner: ezEthSafes.linea, + }, + ethereum: { + address: '0x2F78F22a1D7491500C9ED9352b8239fbAbcDd84E', + owner: ezEthSafes.ethereum, + }, + zircuit: { + address: '0xec1DdF05ff85D2B22B7d27E5b5E0B82961B7D889', + owner: ezEthSafes.zircuit, + }, + sei: { + address: '0x33219fEF24C198d979F05d692a17507E41a0A73e', + owner: ezEthSafes.sei, + }, + taiko: { + address: '0xA3666f8a327AADB666F1906A38B17937e5F11f92', + owner: ezEthSafes.taiko, + }, +}; + export const getRenzoEZETHWarpConfig = async (): Promise< ChainMap > => { @@ -245,6 +298,8 @@ export const getRenzoEZETHWarpConfig = async (): Promise< await Promise.all( chainsToDeploy.map( async (chain): Promise<[string, HypTokenRouterConfig]> => { + const { mailbox, merkleTreeHook, interchainGasPaymaster } = + (await registry.getChainAddresses(chain))!; const ret: [string, HypTokenRouterConfig] = [ chain, { @@ -256,7 +311,7 @@ export const getRenzoEZETHWarpConfig = async (): Promise< token: chain === lockboxChain ? lockbox : xERC20[chain], owner: ezEthSafes[chain], gas: warpRouteOverheadGas, - mailbox: (await registry.getChainAddresses(chain))!.mailbox, + mailbox, interchainSecurityModule: { type: IsmType.AGGREGATION, threshold: 2, @@ -278,12 +333,20 @@ export const getRenzoEZETHWarpConfig = async (): Promise< ], }, hook: { - type: HookType.PROTOCOL_FEE, - owner: ezEthSafes[chain], - beneficiary: ezEthSafes[chain], - protocolFee: parseEther(protocolFee).toString(), - maxProtocolFee: MAX_PROTOCOL_FEE, + type: HookType.AGGREGATION, + hooks: [ + merkleTreeHook, + interchainGasPaymaster, + { + type: HookType.PROTOCOL_FEE, + owner: ezEthSafes[chain], + beneficiary: ezEthSafes[chain], + protocolFee: parseEther(getProtocolFee(chain)).toString(), + maxProtocolFee: MAX_PROTOCOL_FEE, + }, + ], }, + proxyAdmin: existingProxyAdmins[chain], }, ]; diff --git a/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoPZETHWarpConfig.ts b/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoPZETHWarpConfig.ts index a106111243..ff9106b5bb 100644 --- a/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoPZETHWarpConfig.ts +++ b/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoPZETHWarpConfig.ts @@ -16,7 +16,7 @@ import { MAX_PROTOCOL_FEE, ezEthSafes, ezEthValidators, - protocolFee, + getProtocolFee, } from './getRenzoEZETHWarpConfig.js'; const lockbox = '0xbC5511354C4A9a50DE928F56DB01DD327c4e56d5'; @@ -80,6 +80,8 @@ export const getRenzoPZETHWarpConfig = async (): Promise< await Promise.all( chainsToDeploy.map( async (chain): Promise<[string, HypTokenRouterConfig]> => { + const { mailbox, merkleTreeHook, interchainGasPaymaster } = + (await registry.getChainAddresses(chain))!; const ret: [string, HypTokenRouterConfig] = [ chain, { @@ -91,7 +93,7 @@ export const getRenzoPZETHWarpConfig = async (): Promise< token: chain === lockboxChain ? lockbox : xERC20, owner: pzEthSafes[chain], gas: warpRouteOverheadGas, - mailbox: (await registry.getChainAddresses(chain))!.mailbox, + mailbox, interchainSecurityModule: { type: IsmType.AGGREGATION, threshold: 2, @@ -113,11 +115,18 @@ export const getRenzoPZETHWarpConfig = async (): Promise< ], }, hook: { - type: HookType.PROTOCOL_FEE, - owner: ezEthSafes[chain], - beneficiary: ezEthSafes[chain], - protocolFee: parseEther(protocolFee).toString(), - maxProtocolFee: MAX_PROTOCOL_FEE, + type: HookType.AGGREGATION, + hooks: [ + merkleTreeHook, + interchainGasPaymaster, + { + type: HookType.PROTOCOL_FEE, + owner: ezEthSafes[chain], + beneficiary: ezEthSafes[chain], + protocolFee: parseEther(getProtocolFee(chain)).toString(), + maxProtocolFee: MAX_PROTOCOL_FEE, + }, + ], }, proxyAdmin: existingProxyAdmins[chain], }, From 914f91d0f44ffe471a1d0fecd1ae00940c6e4704 Mon Sep 17 00:00:00 2001 From: Le Yu <6251863+ltyu@users.noreply.github.com> Date: Wed, 11 Dec 2024 15:57:31 -0500 Subject: [PATCH 11/21] Update Ezeth config getter to use mailbox default hook --- .../configGetters/getRenzoEZETHWarpConfig.ts | 16 ++++++++++++---- .../configGetters/getRenzoPZETHWarpConfig.ts | 16 ++++++++++++---- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoEZETHWarpConfig.ts b/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoEZETHWarpConfig.ts index a08e9f12e5..eb07c477bc 100644 --- a/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoEZETHWarpConfig.ts +++ b/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoEZETHWarpConfig.ts @@ -1,5 +1,6 @@ import { parseEther } from 'ethers/lib/utils.js'; +import { Mailbox__factory } from '@hyperlane-xyz/core'; import { ChainMap, ChainName, @@ -12,6 +13,7 @@ import { } from '@hyperlane-xyz/sdk'; import { symmetricDifference } from '@hyperlane-xyz/utils'; +import { getEnvironmentConfig } from '../../../../../scripts/core-utils.js'; import { getRegistry as getMainnet3Registry } from '../../chains.js'; import rawTokenPrices from '../../tokenPrices.json'; @@ -260,6 +262,8 @@ const existingProxyAdmins: ChainMap<{ address: string; owner: string }> = { export const getRenzoEZETHWarpConfig = async (): Promise< ChainMap > => { + const config = getEnvironmentConfig('mainnet3'); + const multiProvider = await config.getMultiProvider(); const registry = await getMainnet3Registry(); const validatorDiff = symmetricDifference( @@ -298,8 +302,13 @@ export const getRenzoEZETHWarpConfig = async (): Promise< await Promise.all( chainsToDeploy.map( async (chain): Promise<[string, HypTokenRouterConfig]> => { - const { mailbox, merkleTreeHook, interchainGasPaymaster } = - (await registry.getChainAddresses(chain))!; + const { mailbox } = (await registry.getChainAddresses(chain))!; + + const mailboxContract = Mailbox__factory.connect( + mailbox, + multiProvider.getProvider(chain), + ); + const defaultHook = await mailboxContract.defaultHook(); const ret: [string, HypTokenRouterConfig] = [ chain, { @@ -335,8 +344,7 @@ export const getRenzoEZETHWarpConfig = async (): Promise< hook: { type: HookType.AGGREGATION, hooks: [ - merkleTreeHook, - interchainGasPaymaster, + defaultHook, { type: HookType.PROTOCOL_FEE, owner: ezEthSafes[chain], diff --git a/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoPZETHWarpConfig.ts b/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoPZETHWarpConfig.ts index ff9106b5bb..483f1df551 100644 --- a/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoPZETHWarpConfig.ts +++ b/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoPZETHWarpConfig.ts @@ -1,5 +1,6 @@ import { parseEther } from 'ethers/lib/utils.js'; +import { Mailbox__factory } from '@hyperlane-xyz/core'; import { ChainMap, HookType, @@ -10,6 +11,7 @@ import { } from '@hyperlane-xyz/sdk'; import { symmetricDifference } from '@hyperlane-xyz/utils'; +import { getEnvironmentConfig } from '../../../../../scripts/core-utils.js'; import { getRegistry as getMainnet3Registry } from '../../chains.js'; import { @@ -53,6 +55,8 @@ const existingProxyAdmins: ChainMap<{ address: string; owner: string }> = { export const getRenzoPZETHWarpConfig = async (): Promise< ChainMap > => { + const config = getEnvironmentConfig('mainnet3'); + const multiProvider = await config.getMultiProvider(); const registry = await getMainnet3Registry(); const validatorDiff = symmetricDifference( @@ -80,8 +84,13 @@ export const getRenzoPZETHWarpConfig = async (): Promise< await Promise.all( chainsToDeploy.map( async (chain): Promise<[string, HypTokenRouterConfig]> => { - const { mailbox, merkleTreeHook, interchainGasPaymaster } = - (await registry.getChainAddresses(chain))!; + const { mailbox } = (await registry.getChainAddresses(chain))!; + + const mailboxContract = Mailbox__factory.connect( + mailbox, + multiProvider.getProvider(chain), + ); + const defaultHook = await mailboxContract.defaultHook(); const ret: [string, HypTokenRouterConfig] = [ chain, { @@ -117,8 +126,7 @@ export const getRenzoPZETHWarpConfig = async (): Promise< hook: { type: HookType.AGGREGATION, hooks: [ - merkleTreeHook, - interchainGasPaymaster, + defaultHook, { type: HookType.PROTOCOL_FEE, owner: ezEthSafes[chain], From c390f4d32ab311e01e617dc3cb2ac95ef4dfab50 Mon Sep 17 00:00:00 2001 From: Le Yu <6251863+ltyu@users.noreply.github.com> Date: Wed, 11 Dec 2024 16:17:40 -0500 Subject: [PATCH 12/21] Remove existingProxyAdmins --- .../configGetters/getRenzoEZETHWarpConfig.ts | 53 +------------------ .../configGetters/getRenzoPZETHWarpConfig.ts | 12 ----- 2 files changed, 1 insertion(+), 64 deletions(-) diff --git a/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoEZETHWarpConfig.ts b/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoEZETHWarpConfig.ts index eb07c477bc..05a7082b31 100644 --- a/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoEZETHWarpConfig.ts +++ b/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoEZETHWarpConfig.ts @@ -208,57 +208,6 @@ export const ezEthSafes: Record = { swell: '0x435E8c9652Da151292F3981bbf663EBEB6668501', }; -const existingProxyAdmins: ChainMap<{ address: string; owner: string }> = { - arbitrum: { - address: '0xdcB558d5C0F9A35C53Fa343c77eD0d346576e2Cf', - owner: ezEthSafes.arbitrum, - }, - optimism: { - address: '0xa50910ae66Df6A5F8e85dac032FD45BC2b7be6fF', - owner: ezEthSafes.optimism, - }, - base: { - address: '0xec1DdF05ff85D2B22B7d27E5b5E0B82961B7D889', - owner: ezEthSafes.base, - }, - blast: { - address: '0xA26F8cE2E21A503bf9e18c213965d7BC14997F48', - owner: ezEthSafes.blast, - }, - bsc: { - address: '0x486b39378f99f073A3043C6Aabe8666876A8F3C5', - owner: ezEthSafes.bsc, - }, - mode: { - address: '0x2F78F22a1D7491500C9ED9352b8239fbAbcDd84E', - owner: ezEthSafes.mode, - }, - fraxtal: { - address: '0x8bB69721B4E9b9df08bEdaeaA193008C7317Db59', - owner: ezEthSafes.fraxtal, - }, - linea: { - address: '0x2F78F22a1D7491500C9ED9352b8239fbAbcDd84E', - owner: ezEthSafes.linea, - }, - ethereum: { - address: '0x2F78F22a1D7491500C9ED9352b8239fbAbcDd84E', - owner: ezEthSafes.ethereum, - }, - zircuit: { - address: '0xec1DdF05ff85D2B22B7d27E5b5E0B82961B7D889', - owner: ezEthSafes.zircuit, - }, - sei: { - address: '0x33219fEF24C198d979F05d692a17507E41a0A73e', - owner: ezEthSafes.sei, - }, - taiko: { - address: '0xA3666f8a327AADB666F1906A38B17937e5F11f92', - owner: ezEthSafes.taiko, - }, -}; - export const getRenzoEZETHWarpConfig = async (): Promise< ChainMap > => { @@ -354,7 +303,7 @@ export const getRenzoEZETHWarpConfig = async (): Promise< }, ], }, - proxyAdmin: existingProxyAdmins[chain], + // proxyAdmin: existingProxyAdmins[chain], }, ]; diff --git a/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoPZETHWarpConfig.ts b/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoPZETHWarpConfig.ts index 483f1df551..d6f775a222 100644 --- a/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoPZETHWarpConfig.ts +++ b/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoPZETHWarpConfig.ts @@ -41,17 +41,6 @@ const pzEthSafes: Record = { swell: ezEthSafes.swell, }; -const existingProxyAdmins: ChainMap<{ address: string; owner: string }> = { - ethereum: { - address: '0x4f4671Ce69c9af15e33eB7Cf6D1358d1B39Af3bF', - owner: '0xD1e6626310fD54Eceb5b9a51dA2eC329D6D4B68A', - }, - zircuit: { - address: '0x8b789B4A56675240c9f0985B467752b870c75711', - owner: '0x8410927C286A38883BC23721e640F31D3E3E79F8', - }, -}; - export const getRenzoPZETHWarpConfig = async (): Promise< ChainMap > => { @@ -136,7 +125,6 @@ export const getRenzoPZETHWarpConfig = async (): Promise< }, ], }, - proxyAdmin: existingProxyAdmins[chain], }, ]; From b13b4b6459345cdb4e49e652c2ce208f3017f90a Mon Sep 17 00:00:00 2001 From: Le Yu <6251863+ltyu@users.noreply.github.com> Date: Wed, 11 Dec 2024 16:21:47 -0500 Subject: [PATCH 13/21] add getRenzoHook() --- .../configGetters/getRenzoEZETHWarpConfig.ts | 33 ++++++++++--------- .../configGetters/getRenzoPZETHWarpConfig.ts | 15 ++------- 2 files changed, 20 insertions(+), 28 deletions(-) diff --git a/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoEZETHWarpConfig.ts b/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoEZETHWarpConfig.ts index 05a7082b31..6be2c0c372 100644 --- a/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoEZETHWarpConfig.ts +++ b/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoEZETHWarpConfig.ts @@ -11,7 +11,7 @@ import { TokenType, buildAggregationIsmConfigs, } from '@hyperlane-xyz/sdk'; -import { symmetricDifference } from '@hyperlane-xyz/utils'; +import { Address, symmetricDifference } from '@hyperlane-xyz/utils'; import { getEnvironmentConfig } from '../../../../../scripts/core-utils.js'; import { getRegistry as getMainnet3Registry } from '../../chains.js'; @@ -39,6 +39,22 @@ export function getProtocolFee(chain: ChainName) { return (0.5 / Number(tokenPrices[chain])).toFixed(10).toString(); // ~$0.50 USD } +export function getRenzoHook(defaultHook: Address, chain: ChainName) { + return { + type: HookType.AGGREGATION, + hooks: [ + defaultHook, + { + type: HookType.PROTOCOL_FEE, + owner: ezEthSafes[chain], + beneficiary: ezEthSafes[chain], + protocolFee: parseEther(getProtocolFee(chain)).toString(), + maxProtocolFee: MAX_PROTOCOL_FEE, + }, + ], + }; +} + const lockboxChain = 'ethereum'; // over the default 100k to account for xerc20 gas + ISM overhead over the default ISM https://github.com/hyperlane-xyz/hyperlane-monorepo/blob/49f41d9759fd515bfd89e6e22e799c41b27b4119/typescript/sdk/src/router/GasRouterDeployer.ts#L14 const warpRouteOverheadGas = 200_000; @@ -290,20 +306,7 @@ export const getRenzoEZETHWarpConfig = async (): Promise< }, ], }, - hook: { - type: HookType.AGGREGATION, - hooks: [ - defaultHook, - { - type: HookType.PROTOCOL_FEE, - owner: ezEthSafes[chain], - beneficiary: ezEthSafes[chain], - protocolFee: parseEther(getProtocolFee(chain)).toString(), - maxProtocolFee: MAX_PROTOCOL_FEE, - }, - ], - }, - // proxyAdmin: existingProxyAdmins[chain], + hook: getRenzoHook(defaultHook, chain), }, ]; diff --git a/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoPZETHWarpConfig.ts b/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoPZETHWarpConfig.ts index d6f775a222..01e0200bb2 100644 --- a/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoPZETHWarpConfig.ts +++ b/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoPZETHWarpConfig.ts @@ -19,6 +19,7 @@ import { ezEthSafes, ezEthValidators, getProtocolFee, + getRenzoHook, } from './getRenzoEZETHWarpConfig.js'; const lockbox = '0xbC5511354C4A9a50DE928F56DB01DD327c4e56d5'; @@ -112,19 +113,7 @@ export const getRenzoPZETHWarpConfig = async (): Promise< }, ], }, - hook: { - type: HookType.AGGREGATION, - hooks: [ - defaultHook, - { - type: HookType.PROTOCOL_FEE, - owner: ezEthSafes[chain], - beneficiary: ezEthSafes[chain], - protocolFee: parseEther(getProtocolFee(chain)).toString(), - maxProtocolFee: MAX_PROTOCOL_FEE, - }, - ], - }, + hook: getRenzoHook(defaultHook, chain), }, ]; From 3a863140503688785b077af3787ad59ec6ad2a69 Mon Sep 17 00:00:00 2001 From: Le Yu <6251863+ltyu@users.noreply.github.com> Date: Thu, 12 Dec 2024 11:31:42 -0500 Subject: [PATCH 14/21] Remove throw for hook check --- typescript/sdk/src/router/HyperlaneRouterChecker.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/typescript/sdk/src/router/HyperlaneRouterChecker.ts b/typescript/sdk/src/router/HyperlaneRouterChecker.ts index abdc5c8852..e514c8522e 100644 --- a/typescript/sdk/src/router/HyperlaneRouterChecker.ts +++ b/typescript/sdk/src/router/HyperlaneRouterChecker.ts @@ -3,7 +3,6 @@ import { ethers } from 'ethers'; import { AddressBytes32, addressToBytes32, - assert, eqAddress, isZeroishAddress, rootLogger, @@ -68,10 +67,11 @@ export class HyperlaneRouterChecker< } if (config.hook) { - assert( - typeof config.hook === 'string', - 'Hook objects not supported in router checker', - ); + if (typeof config.hook !== 'string') + return this.logger.info( + `Hook objects not supported in router checker for HookConfig: ${config.hook}`, + ); + const hook = await router.hook(); if (!eqAddress(hook, config.hook as string)) { this.addViolation({ From 018344559993512d094314e58da65560be741cf7 Mon Sep 17 00:00:00 2001 From: Le Yu <6251863+ltyu@users.noreply.github.com> Date: Thu, 12 Dec 2024 11:37:07 -0500 Subject: [PATCH 15/21] Re-add proxyAdmins --- .../configGetters/getRenzoEZETHWarpConfig.ts | 58 ++++++++++++++++++- .../configGetters/getRenzoPZETHWarpConfig.ts | 17 ++++-- 2 files changed, 69 insertions(+), 6 deletions(-) diff --git a/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoEZETHWarpConfig.ts b/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoEZETHWarpConfig.ts index 6be2c0c372..10690fc8f4 100644 --- a/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoEZETHWarpConfig.ts +++ b/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoEZETHWarpConfig.ts @@ -4,6 +4,7 @@ import { Mailbox__factory } from '@hyperlane-xyz/core'; import { ChainMap, ChainName, + HookConfig, HookType, HypTokenRouterConfig, IsmType, @@ -39,7 +40,10 @@ export function getProtocolFee(chain: ChainName) { return (0.5 / Number(tokenPrices[chain])).toFixed(10).toString(); // ~$0.50 USD } -export function getRenzoHook(defaultHook: Address, chain: ChainName) { +export function getRenzoHook( + defaultHook: Address, + chain: ChainName, +): HookConfig { return { type: HookType.AGGREGATION, hooks: [ @@ -224,6 +228,57 @@ export const ezEthSafes: Record = { swell: '0x435E8c9652Da151292F3981bbf663EBEB6668501', }; +const existingProxyAdmins: ChainMap<{ address: string; owner: string }> = { + arbitrum: { + address: '0xdcB558d5C0F9A35C53Fa343c77eD0d346576e2Cf', + owner: ezEthSafes.arbitrum, + }, + optimism: { + address: '0xa50910ae66Df6A5F8e85dac032FD45BC2b7be6fF', + owner: ezEthSafes.optimism, + }, + base: { + address: '0xec1DdF05ff85D2B22B7d27E5b5E0B82961B7D889', + owner: ezEthSafes.base, + }, + blast: { + address: '0xA26F8cE2E21A503bf9e18c213965d7BC14997F48', + owner: ezEthSafes.blast, + }, + bsc: { + address: '0x486b39378f99f073A3043C6Aabe8666876A8F3C5', + owner: ezEthSafes.bsc, + }, + mode: { + address: '0x2F78F22a1D7491500C9ED9352b8239fbAbcDd84E', + owner: ezEthSafes.mode, + }, + fraxtal: { + address: '0x8bB69721B4E9b9df08bEdaeaA193008C7317Db59', + owner: ezEthSafes.fraxtal, + }, + linea: { + address: '0x2F78F22a1D7491500C9ED9352b8239fbAbcDd84E', + owner: ezEthSafes.linea, + }, + ethereum: { + address: '0x2F78F22a1D7491500C9ED9352b8239fbAbcDd84E', + owner: ezEthSafes.ethereum, + }, + zircuit: { + address: '0xec1DdF05ff85D2B22B7d27E5b5E0B82961B7D889', + owner: ezEthSafes.zircuit, + }, + sei: { + address: '0x33219fEF24C198d979F05d692a17507E41a0A73e', + owner: ezEthSafes.sei, + }, + taiko: { + address: '0xA3666f8a327AADB666F1906A38B17937e5F11f92', + owner: ezEthSafes.taiko, + }, +}; + export const getRenzoEZETHWarpConfig = async (): Promise< ChainMap > => { @@ -307,6 +362,7 @@ export const getRenzoEZETHWarpConfig = async (): Promise< ], }, hook: getRenzoHook(defaultHook, chain), + proxyAdmin: existingProxyAdmins[chain], }, ]; diff --git a/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoPZETHWarpConfig.ts b/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoPZETHWarpConfig.ts index 01e0200bb2..fdaa085b1e 100644 --- a/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoPZETHWarpConfig.ts +++ b/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoPZETHWarpConfig.ts @@ -1,9 +1,6 @@ -import { parseEther } from 'ethers/lib/utils.js'; - import { Mailbox__factory } from '@hyperlane-xyz/core'; import { ChainMap, - HookType, HypTokenRouterConfig, IsmType, TokenType, @@ -15,10 +12,8 @@ import { getEnvironmentConfig } from '../../../../../scripts/core-utils.js'; import { getRegistry as getMainnet3Registry } from '../../chains.js'; import { - MAX_PROTOCOL_FEE, ezEthSafes, ezEthValidators, - getProtocolFee, getRenzoHook, } from './getRenzoEZETHWarpConfig.js'; @@ -42,6 +37,17 @@ const pzEthSafes: Record = { swell: ezEthSafes.swell, }; +const existingProxyAdmins: ChainMap<{ address: string; owner: string }> = { + ethereum: { + address: '0x4f4671Ce69c9af15e33eB7Cf6D1358d1B39Af3bF', + owner: '0xD1e6626310fD54Eceb5b9a51dA2eC329D6D4B68A', + }, + zircuit: { + address: '0x8b789B4A56675240c9f0985B467752b870c75711', + owner: '0x8410927C286A38883BC23721e640F31D3E3E79F8', + }, +}; + export const getRenzoPZETHWarpConfig = async (): Promise< ChainMap > => { @@ -114,6 +120,7 @@ export const getRenzoPZETHWarpConfig = async (): Promise< ], }, hook: getRenzoHook(defaultHook, chain), + proxyAdmin: existingProxyAdmins[chain], }, ]; From 2c3e77bb278644ca329f7141c65b59783ba96e9f Mon Sep 17 00:00:00 2001 From: Le Yu <6251863+ltyu@users.noreply.github.com> Date: Thu, 12 Dec 2024 13:20:07 -0500 Subject: [PATCH 16/21] Add assert(addresses) --- .../mainnet3/warp/configGetters/getRenzoEZETHWarpConfig.ts | 6 ++++-- .../mainnet3/warp/configGetters/getRenzoPZETHWarpConfig.ts | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoEZETHWarpConfig.ts b/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoEZETHWarpConfig.ts index 10690fc8f4..93ea7df1ef 100644 --- a/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoEZETHWarpConfig.ts +++ b/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoEZETHWarpConfig.ts @@ -12,7 +12,7 @@ import { TokenType, buildAggregationIsmConfigs, } from '@hyperlane-xyz/sdk'; -import { Address, symmetricDifference } from '@hyperlane-xyz/utils'; +import { Address, assert, symmetricDifference } from '@hyperlane-xyz/utils'; import { getEnvironmentConfig } from '../../../../../scripts/core-utils.js'; import { getRegistry as getMainnet3Registry } from '../../chains.js'; @@ -322,7 +322,9 @@ export const getRenzoEZETHWarpConfig = async (): Promise< await Promise.all( chainsToDeploy.map( async (chain): Promise<[string, HypTokenRouterConfig]> => { - const { mailbox } = (await registry.getChainAddresses(chain))!; + const addresses = await registry.getChainAddresses(chain); + assert(addresses, 'No addresses in Registry'); + const { mailbox } = addresses; const mailboxContract = Mailbox__factory.connect( mailbox, diff --git a/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoPZETHWarpConfig.ts b/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoPZETHWarpConfig.ts index fdaa085b1e..6196031a8e 100644 --- a/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoPZETHWarpConfig.ts +++ b/typescript/infra/config/environments/mainnet3/warp/configGetters/getRenzoPZETHWarpConfig.ts @@ -6,7 +6,7 @@ import { TokenType, buildAggregationIsmConfigs, } from '@hyperlane-xyz/sdk'; -import { symmetricDifference } from '@hyperlane-xyz/utils'; +import { assert, symmetricDifference } from '@hyperlane-xyz/utils'; import { getEnvironmentConfig } from '../../../../../scripts/core-utils.js'; import { getRegistry as getMainnet3Registry } from '../../chains.js'; @@ -80,7 +80,9 @@ export const getRenzoPZETHWarpConfig = async (): Promise< await Promise.all( chainsToDeploy.map( async (chain): Promise<[string, HypTokenRouterConfig]> => { - const { mailbox } = (await registry.getChainAddresses(chain))!; + const addresses = await registry.getChainAddresses(chain); + assert(addresses, 'No addresses in Registry'); + const { mailbox } = addresses; const mailboxContract = Mailbox__factory.connect( mailbox, From d9fc2530d1c9094c2e8a2abff823cdc8cfbed351 Mon Sep 17 00:00:00 2001 From: Le Yu <6251863+ltyu@users.noreply.github.com> Date: Thu, 12 Dec 2024 14:58:02 -0500 Subject: [PATCH 17/21] Bump to registry 6.6 --- typescript/infra/package.json | 2 +- yarn.lock | 12 +++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/typescript/infra/package.json b/typescript/infra/package.json index 6f67d4ae23..a1aebb8998 100644 --- a/typescript/infra/package.json +++ b/typescript/infra/package.json @@ -14,7 +14,7 @@ "@ethersproject/providers": "*", "@google-cloud/secret-manager": "^5.5.0", "@hyperlane-xyz/helloworld": "7.3.0", - "@hyperlane-xyz/registry": "6.3.0", + "@hyperlane-xyz/registry": "6.6.0", "@hyperlane-xyz/sdk": "7.3.0", "@hyperlane-xyz/utils": "7.3.0", "@inquirer/prompts": "3.3.2", diff --git a/yarn.lock b/yarn.lock index 91d745e473..d525f7db3a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7520,7 +7520,7 @@ __metadata: "@ethersproject/providers": "npm:*" "@google-cloud/secret-manager": "npm:^5.5.0" "@hyperlane-xyz/helloworld": "npm:7.3.0" - "@hyperlane-xyz/registry": "npm:6.3.0" + "@hyperlane-xyz/registry": "npm:6.6.0" "@hyperlane-xyz/sdk": "npm:7.3.0" "@hyperlane-xyz/utils": "npm:7.3.0" "@inquirer/prompts": "npm:3.3.2" @@ -7592,6 +7592,16 @@ __metadata: languageName: node linkType: hard +"@hyperlane-xyz/registry@npm:6.6.0": + version: 6.6.0 + resolution: "@hyperlane-xyz/registry@npm:6.6.0" + dependencies: + yaml: "npm:2.4.5" + zod: "npm:^3.21.2" + checksum: 10/4e8c955054a3872439f8a52ba208db848da1e46cdf920d4c0cf42080a147c4185d6fed2b00dec0320dfebeb7287578c8a95d3f2f81c2ba713a83a426a1793525 + languageName: node + linkType: hard + "@hyperlane-xyz/sdk@npm:7.3.0, @hyperlane-xyz/sdk@workspace:typescript/sdk": version: 0.0.0-use.local resolution: "@hyperlane-xyz/sdk@workspace:typescript/sdk" From bd222b739e6cb80dcc324ede0e3d92aa5fc33dca Mon Sep 17 00:00:00 2001 From: Le Yu <6251863+ltyu@users.noreply.github.com> Date: Thu, 12 Dec 2024 15:51:59 -0500 Subject: [PATCH 18/21] Bump to registry 6.6 --- typescript/cli/package.json | 2 +- typescript/helloworld/package.json | 2 +- typescript/widgets/package.json | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/typescript/cli/package.json b/typescript/cli/package.json index 48f7d80596..7940f8e756 100644 --- a/typescript/cli/package.json +++ b/typescript/cli/package.json @@ -5,7 +5,7 @@ "dependencies": { "@aws-sdk/client-kms": "^3.577.0", "@aws-sdk/client-s3": "^3.577.0", - "@hyperlane-xyz/registry": "6.3.0", + "@hyperlane-xyz/registry": "6.6.0", "@hyperlane-xyz/sdk": "7.3.0", "@hyperlane-xyz/utils": "7.3.0", "@inquirer/core": "9.0.10", diff --git a/typescript/helloworld/package.json b/typescript/helloworld/package.json index a7fdc9bb28..83bc100ac3 100644 --- a/typescript/helloworld/package.json +++ b/typescript/helloworld/package.json @@ -4,7 +4,7 @@ "version": "7.3.0", "dependencies": { "@hyperlane-xyz/core": "5.8.3", - "@hyperlane-xyz/registry": "6.3.0", + "@hyperlane-xyz/registry": "6.6.0", "@hyperlane-xyz/sdk": "7.3.0", "@openzeppelin/contracts-upgradeable": "^4.9.3", "ethers": "^5.7.2" diff --git a/typescript/widgets/package.json b/typescript/widgets/package.json index f662fa2a29..701ff8ddd8 100644 --- a/typescript/widgets/package.json +++ b/typescript/widgets/package.json @@ -27,7 +27,7 @@ "@emotion/react": "^11.13.3", "@emotion/styled": "^11.13.0", "@eslint/js": "^9.15.0", - "@hyperlane-xyz/registry": "6.3.0", + "@hyperlane-xyz/registry": "6.6.0", "@storybook/addon-essentials": "^7.6.14", "@storybook/addon-interactions": "^7.6.14", "@storybook/addon-links": "^7.6.14", From fbf37d244fc64441d0e21d16ee219ac4eb692b9c Mon Sep 17 00:00:00 2001 From: Le Yu <6251863+ltyu@users.noreply.github.com> Date: Thu, 12 Dec 2024 15:53:36 -0500 Subject: [PATCH 19/21] docs(changeset): Add FeeHook and Swell to pz and ez eth config generator. Bump up Registry 6.6.0 --- .changeset/dull-pianos-kiss.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 .changeset/dull-pianos-kiss.md diff --git a/.changeset/dull-pianos-kiss.md b/.changeset/dull-pianos-kiss.md new file mode 100644 index 0000000000..333a748904 --- /dev/null +++ b/.changeset/dull-pianos-kiss.md @@ -0,0 +1,9 @@ +--- +'@hyperlane-xyz/helloworld': minor +'@hyperlane-xyz/widgets': minor +'@hyperlane-xyz/infra': minor +'@hyperlane-xyz/cli': minor +'@hyperlane-xyz/sdk': minor +--- + +Add FeeHook and Swell to pz and ez eth config generator. Bump up Registry 6.6.0 From e64cd49e2c4b0ac83523cbcb0c22e725e6d08c2a Mon Sep 17 00:00:00 2001 From: Le Yu <6251863+ltyu@users.noreply.github.com> Date: Thu, 12 Dec 2024 15:59:42 -0500 Subject: [PATCH 20/21] Bump to yarn for registry 6.6 --- yarn.lock | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/yarn.lock b/yarn.lock index d525f7db3a..70a2c8f27f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7367,7 +7367,7 @@ __metadata: "@eslint/js": "npm:^9.15.0" "@ethersproject/abi": "npm:*" "@ethersproject/providers": "npm:*" - "@hyperlane-xyz/registry": "npm:6.3.0" + "@hyperlane-xyz/registry": "npm:6.6.0" "@hyperlane-xyz/sdk": "npm:7.3.0" "@hyperlane-xyz/utils": "npm:7.3.0" "@inquirer/core": "npm:9.0.10" @@ -7469,7 +7469,7 @@ __metadata: dependencies: "@eslint/js": "npm:^9.15.0" "@hyperlane-xyz/core": "npm:5.8.3" - "@hyperlane-xyz/registry": "npm:6.3.0" + "@hyperlane-xyz/registry": "npm:6.6.0" "@hyperlane-xyz/sdk": "npm:7.3.0" "@nomiclabs/hardhat-ethers": "npm:^2.2.3" "@nomiclabs/hardhat-waffle": "npm:^2.0.6" @@ -7582,16 +7582,6 @@ __metadata: languageName: unknown linkType: soft -"@hyperlane-xyz/registry@npm:6.3.0": - version: 6.3.0 - resolution: "@hyperlane-xyz/registry@npm:6.3.0" - dependencies: - yaml: "npm:2.4.5" - zod: "npm:^3.21.2" - checksum: 10/7a1b7226593edf8e12c7e3d425b7889679d46abae1e8c5a389a0b472e2e0a08b292ba89f60572eff9e844c7b5f7322e4420a8888fabef9967c206d5b39f391a1 - languageName: node - linkType: hard - "@hyperlane-xyz/registry@npm:6.6.0": version: 6.6.0 resolution: "@hyperlane-xyz/registry@npm:6.6.0" @@ -7698,7 +7688,7 @@ __metadata: "@emotion/styled": "npm:^11.13.0" "@eslint/js": "npm:^9.15.0" "@headlessui/react": "npm:^2.1.8" - "@hyperlane-xyz/registry": "npm:6.3.0" + "@hyperlane-xyz/registry": "npm:6.6.0" "@hyperlane-xyz/sdk": "npm:7.3.0" "@hyperlane-xyz/utils": "npm:7.3.0" "@interchain-ui/react": "npm:^1.23.28" From 9f305d0c1ccad0cec97777b38fea364d2b1192b0 Mon Sep 17 00:00:00 2001 From: Trevor Porter Date: Thu, 12 Dec 2024 14:25:34 -0700 Subject: [PATCH 21/21] update registryrc --- .registryrc | 2 +- rust/main/config/mainnet_config.json | 3 +++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.registryrc b/.registryrc index ed389daa94..15e15930d3 100644 --- a/.registryrc +++ b/.registryrc @@ -1 +1 @@ -c7891cdf0fc6a1541c41e19251611c9152ee8bf9 +bde63f7c32e8d169d7e3163b14b5bb25bd3d5042 diff --git a/rust/main/config/mainnet_config.json b/rust/main/config/mainnet_config.json index dc66d22345..f354a4f4c7 100644 --- a/rust/main/config/mainnet_config.json +++ b/rust/main/config/mainnet_config.json @@ -925,6 +925,9 @@ "protocolFee": "0x8B05BF30F6247a90006c5837eA63C7905D79e6d8", "proxyAdmin": "0x75EE15Ee1B4A75Fa3e2fDF5DF3253c25599cc659", "rpcUrls": [ + { + "http": "https://rpc.ankr.com/eth" + }, { "http": "https://ethereum.publicnode.com" },