@hyperlane-xyz/sdk 35.1.0 → 36.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/block-explorer/utils.d.ts +8 -0
- package/dist/block-explorer/utils.d.ts.map +1 -1
- package/dist/block-explorer/utils.js +16 -3
- package/dist/block-explorer/utils.js.map +1 -1
- package/dist/ccip/consts.d.ts.map +1 -1
- package/dist/ccip/consts.js +0 -40
- package/dist/ccip/consts.js.map +1 -1
- package/dist/consts/multisigIsm.d.ts.map +1 -1
- package/dist/consts/multisigIsm.js +39 -241
- package/dist/consts/multisigIsm.js.map +1 -1
- package/dist/contracts/contracts.d.ts.map +1 -1
- package/dist/contracts/contracts.js +6 -1
- package/dist/contracts/contracts.js.map +1 -1
- package/dist/core/CoreDeployer.hardhat-test.js +9 -0
- package/dist/core/CoreDeployer.hardhat-test.js.map +1 -1
- package/dist/core/EvmCoreModule.d.ts.map +1 -1
- package/dist/core/EvmCoreModule.hardhat-test.js +23 -0
- package/dist/core/EvmCoreModule.hardhat-test.js.map +1 -1
- package/dist/core/EvmCoreModule.js +8 -5
- package/dist/core/EvmCoreModule.js.map +1 -1
- package/dist/core/EvmCoreReader.d.ts.map +1 -1
- package/dist/core/EvmCoreReader.js +34 -15
- package/dist/core/EvmCoreReader.js.map +1 -1
- package/dist/core/HyperlaneCoreDeployer.d.ts.map +1 -1
- package/dist/core/HyperlaneCoreDeployer.js +34 -13
- package/dist/core/HyperlaneCoreDeployer.js.map +1 -1
- package/dist/core/TestCoreApp.d.ts +1 -1
- package/dist/core/contracts.d.ts +5 -2
- package/dist/core/contracts.d.ts.map +1 -1
- package/dist/core/contracts.js +4 -1
- package/dist/core/contracts.js.map +1 -1
- package/dist/core/types.d.ts +1092 -627
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +30 -2
- package/dist/core/types.js.map +1 -1
- package/dist/core/types.test.d.ts +2 -0
- package/dist/core/types.test.d.ts.map +1 -0
- package/dist/core/types.test.js +50 -0
- package/dist/core/types.test.js.map +1 -0
- package/dist/deploy/HyperlaneDeployer.d.ts +1 -0
- package/dist/deploy/HyperlaneDeployer.d.ts.map +1 -1
- package/dist/deploy/HyperlaneDeployer.js +17 -8
- package/dist/deploy/HyperlaneDeployer.js.map +1 -1
- package/dist/deploy/proxy.d.ts.map +1 -1
- package/dist/deploy/proxy.js +9 -5
- package/dist/deploy/proxy.js.map +1 -1
- package/dist/deploy/warp.d.ts.map +1 -1
- package/dist/deploy/warp.js +5 -0
- package/dist/deploy/warp.js.map +1 -1
- package/dist/fee/EvmTokenFeeDeployer.d.ts +1 -0
- package/dist/fee/EvmTokenFeeDeployer.d.ts.map +1 -1
- package/dist/fee/EvmTokenFeeDeployer.hardhat-test.js +40 -0
- package/dist/fee/EvmTokenFeeDeployer.hardhat-test.js.map +1 -1
- package/dist/fee/EvmTokenFeeDeployer.js +8 -0
- package/dist/fee/EvmTokenFeeDeployer.js.map +1 -1
- package/dist/fee/EvmTokenFeeReader.d.ts.map +1 -1
- package/dist/fee/EvmTokenFeeReader.js +3 -13
- package/dist/fee/EvmTokenFeeReader.js.map +1 -1
- package/dist/fee/feeConfigMapping.d.ts +9 -0
- package/dist/fee/feeConfigMapping.d.ts.map +1 -0
- package/dist/fee/feeConfigMapping.js +86 -0
- package/dist/fee/feeConfigMapping.js.map +1 -0
- package/dist/fee/feeConfigMapping.test.d.ts +2 -0
- package/dist/fee/feeConfigMapping.test.d.ts.map +1 -0
- package/dist/fee/feeConfigMapping.test.js +204 -0
- package/dist/fee/feeConfigMapping.test.js.map +1 -0
- package/dist/fee/types.d.ts +185 -113
- package/dist/fee/types.d.ts.map +1 -1
- package/dist/fee/types.js +13 -11
- package/dist/fee/types.js.map +1 -1
- package/dist/fee/utils.d.ts +1 -32
- package/dist/fee/utils.d.ts.map +1 -1
- package/dist/fee/utils.js +1 -47
- package/dist/fee/utils.js.map +1 -1
- package/dist/gas/HyperlaneIgpChecker.d.ts +1 -0
- package/dist/gas/HyperlaneIgpChecker.d.ts.map +1 -1
- package/dist/gas/HyperlaneIgpChecker.js +43 -1
- package/dist/gas/HyperlaneIgpChecker.js.map +1 -1
- package/dist/gas/HyperlaneIgpDeployer.d.ts +17 -0
- package/dist/gas/HyperlaneIgpDeployer.d.ts.map +1 -1
- package/dist/gas/HyperlaneIgpDeployer.js +124 -4
- package/dist/gas/HyperlaneIgpDeployer.js.map +1 -1
- package/dist/gas/oracle/configure-gas-oracles.hardhat-test.js +33 -2
- package/dist/gas/oracle/configure-gas-oracles.hardhat-test.js.map +1 -1
- package/dist/gas/types.d.ts +17 -3
- package/dist/gas/types.d.ts.map +1 -1
- package/dist/gas/types.js +19 -0
- package/dist/gas/types.js.map +1 -1
- package/dist/gas/utils.d.ts +5 -1
- package/dist/gas/utils.d.ts.map +1 -1
- package/dist/gas/utils.js +92 -31
- package/dist/gas/utils.js.map +1 -1
- package/dist/gas/utils.test.d.ts +2 -0
- package/dist/gas/utils.test.d.ts.map +1 -0
- package/dist/gas/utils.test.js +132 -0
- package/dist/gas/utils.test.js.map +1 -0
- package/dist/hook/EvmHookModule.d.ts +21 -1
- package/dist/hook/EvmHookModule.d.ts.map +1 -1
- package/dist/hook/EvmHookModule.hardhat-test.js +125 -2
- package/dist/hook/EvmHookModule.hardhat-test.js.map +1 -1
- package/dist/hook/EvmHookModule.js +191 -17
- package/dist/hook/EvmHookModule.js.map +1 -1
- package/dist/hook/EvmHookReader.d.ts +4 -4
- package/dist/hook/EvmHookReader.d.ts.map +1 -1
- package/dist/hook/EvmHookReader.js +67 -16
- package/dist/hook/EvmHookReader.js.map +1 -1
- package/dist/hook/EvmHookReader.test.js +128 -2
- package/dist/hook/EvmHookReader.test.js.map +1 -1
- package/dist/hook/HyperlaneHookDeployer.d.ts +10 -5
- package/dist/hook/HyperlaneHookDeployer.d.ts.map +1 -1
- package/dist/hook/types.d.ts +338 -264
- package/dist/hook/types.d.ts.map +1 -1
- package/dist/hook/types.js +30 -6
- package/dist/hook/types.js.map +1 -1
- package/dist/hook/types.test.d.ts +2 -0
- package/dist/hook/types.test.d.ts.map +1 -0
- package/dist/hook/types.test.js +184 -0
- package/dist/hook/types.test.js.map +1 -0
- package/dist/hook/utils.d.ts +1 -0
- package/dist/hook/utils.d.ts.map +1 -1
- package/dist/hook/utils.js +16 -10
- package/dist/hook/utils.js.map +1 -1
- package/dist/ica/types.d.ts +380 -188
- package/dist/ica/types.d.ts.map +1 -1
- package/dist/index.d.ts +8 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -3
- package/dist/index.js.map +1 -1
- package/dist/ism/EvmIsmModule.d.ts +7 -1
- package/dist/ism/EvmIsmModule.d.ts.map +1 -1
- package/dist/ism/EvmIsmModule.hardhat-test.js +4 -0
- package/dist/ism/EvmIsmModule.hardhat-test.js.map +1 -1
- package/dist/ism/EvmIsmModule.js +152 -4
- package/dist/ism/EvmIsmModule.js.map +1 -1
- package/dist/ism/EvmIsmReader.d.ts.map +1 -1
- package/dist/ism/EvmIsmReader.js +1 -2
- package/dist/ism/EvmIsmReader.js.map +1 -1
- package/dist/ism/HyperlaneIsmFactory.d.ts.map +1 -1
- package/dist/ism/HyperlaneIsmFactory.hardhat-test.js +17 -0
- package/dist/ism/HyperlaneIsmFactory.hardhat-test.js.map +1 -1
- package/dist/ism/HyperlaneIsmFactory.js +35 -9
- package/dist/ism/HyperlaneIsmFactory.js.map +1 -1
- package/dist/ism/types.d.ts +88 -3
- package/dist/ism/types.d.ts.map +1 -1
- package/dist/ism/types.js +4 -0
- package/dist/ism/types.js.map +1 -1
- package/dist/metadata/ChainMetadataManager.d.ts.map +1 -1
- package/dist/metadata/ChainMetadataManager.js +2 -2
- package/dist/metadata/ChainMetadataManager.js.map +1 -1
- package/dist/metadata/ChainMetadataManager.test.js +71 -0
- package/dist/metadata/ChainMetadataManager.test.js.map +1 -1
- package/dist/metadata/agentConfig.d.ts +937 -168
- package/dist/metadata/agentConfig.d.ts.map +1 -1
- package/dist/metadata/agentConfig.js +68 -1
- package/dist/metadata/agentConfig.js.map +1 -1
- package/dist/metadata/agentConfig.test.js +67 -1
- package/dist/metadata/agentConfig.test.js.map +1 -1
- package/dist/middleware/account/InterchainAccount.d.ts.map +1 -1
- package/dist/middleware/account/InterchainAccount.js +10 -0
- package/dist/middleware/account/InterchainAccount.js.map +1 -1
- package/dist/middleware/account/InterchainAccount.test.js +26 -0
- package/dist/middleware/account/InterchainAccount.test.js.map +1 -1
- package/dist/providers/MultiProvider.d.ts +6 -0
- package/dist/providers/MultiProvider.d.ts.map +1 -1
- package/dist/providers/MultiProvider.js +28 -2
- package/dist/providers/MultiProvider.js.map +1 -1
- package/dist/providers/SeismicSigner.d.ts +54 -0
- package/dist/providers/SeismicSigner.d.ts.map +1 -0
- package/dist/providers/SeismicSigner.js +89 -0
- package/dist/providers/SeismicSigner.js.map +1 -0
- package/dist/providers/SmartProvider/HyperlaneJsonRpcProvider.d.ts.map +1 -1
- package/dist/providers/SmartProvider/HyperlaneJsonRpcProvider.js +8 -0
- package/dist/providers/SmartProvider/HyperlaneJsonRpcProvider.js.map +1 -1
- package/dist/providers/SmartProvider/SmartProvider.d.ts.map +1 -1
- package/dist/providers/SmartProvider/SmartProvider.js +69 -23
- package/dist/providers/SmartProvider/SmartProvider.js.map +1 -1
- package/dist/providers/SmartProvider/SmartProvider.test.js +34 -5
- package/dist/providers/SmartProvider/SmartProvider.test.js.map +1 -1
- package/dist/providers/builders/starknet.d.ts.map +1 -1
- package/dist/providers/builders/starknet.js +6 -1
- package/dist/providers/builders/starknet.js.map +1 -1
- package/dist/providers/transactions/submitter/IcaTxSubmitter.d.ts.map +1 -1
- package/dist/providers/transactions/submitter/IcaTxSubmitter.js +23 -8
- package/dist/providers/transactions/submitter/IcaTxSubmitter.js.map +1 -1
- package/dist/providers/transactions/submitter/IcaTxSubmitter.test.js +45 -0
- package/dist/providers/transactions/submitter/IcaTxSubmitter.test.js.map +1 -1
- package/dist/providers/transactions/submitter/ethersV5/EV5GnosisSafeTxBuilder.d.ts +1 -1
- package/dist/providers/transactions/submitter/ethersV5/EV5GnosisSafeTxBuilder.d.ts.map +1 -1
- package/dist/providers/transactions/submitter/ethersV5/EV5GnosisSafeTxSubmitter.d.ts +1 -1
- package/dist/providers/transactions/submitter/ethersV5/EV5GnosisSafeTxSubmitter.d.ts.map +1 -1
- package/dist/providers/transactions/submitter/ethersV5/EV5GnosisSafeTxSubmitter.js.map +1 -1
- package/dist/providers/transactions/submitter/ethersV5/types.d.ts +6 -0
- package/dist/providers/transactions/submitter/ethersV5/types.d.ts.map +1 -1
- package/dist/providers/transactions/submitter/ethersV5/types.js +26 -5
- package/dist/providers/transactions/submitter/ethersV5/types.js.map +1 -1
- package/dist/providers/transactions/submitter/submitterBuilderGetter.d.ts.map +1 -1
- package/dist/providers/transactions/submitter/submitterBuilderGetter.js +11 -1
- package/dist/providers/transactions/submitter/submitterBuilderGetter.js.map +1 -1
- package/dist/providers/transactions/submitter/submitterBuilderGetter.test.d.ts +2 -0
- package/dist/providers/transactions/submitter/submitterBuilderGetter.test.d.ts.map +1 -0
- package/dist/providers/transactions/submitter/submitterBuilderGetter.test.js +38 -0
- package/dist/providers/transactions/submitter/submitterBuilderGetter.test.js.map +1 -0
- package/dist/router/types.d.ts +481 -236
- package/dist/router/types.d.ts.map +1 -1
- package/dist/router/types.js +1 -0
- package/dist/router/types.js.map +1 -1
- package/dist/router/types.test.d.ts +2 -0
- package/dist/router/types.test.d.ts.map +1 -0
- package/dist/router/types.test.js +32 -0
- package/dist/router/types.test.js.map +1 -0
- package/dist/test/testUtils.d.ts.map +1 -1
- package/dist/test/testUtils.js +3 -0
- package/dist/test/testUtils.js.map +1 -1
- package/dist/token/EvmWarpModule.d.ts +18 -1
- package/dist/token/EvmWarpModule.d.ts.map +1 -1
- package/dist/token/EvmWarpModule.hardhat-test.js +30 -0
- package/dist/token/EvmWarpModule.hardhat-test.js.map +1 -1
- package/dist/token/EvmWarpModule.js +67 -5
- package/dist/token/EvmWarpModule.js.map +1 -1
- package/dist/token/EvmWarpModule.test.d.ts +2 -0
- package/dist/token/EvmWarpModule.test.d.ts.map +1 -0
- package/dist/token/EvmWarpModule.test.js +77 -0
- package/dist/token/EvmWarpModule.test.js.map +1 -0
- package/dist/token/EvmWarpRouteReader.d.ts +1 -0
- package/dist/token/EvmWarpRouteReader.d.ts.map +1 -1
- package/dist/token/EvmWarpRouteReader.js +17 -0
- package/dist/token/EvmWarpRouteReader.js.map +1 -1
- package/dist/token/EvmXERC20Module.d.ts +31 -26
- package/dist/token/EvmXERC20Module.d.ts.map +1 -1
- package/dist/token/EvmXERC20Module.js +46 -3
- package/dist/token/EvmXERC20Module.js.map +1 -1
- package/dist/token/EvmXERC20Module.test.js +162 -1
- package/dist/token/EvmXERC20Module.test.js.map +1 -1
- package/dist/token/EvmXERC20Reader.d.ts +17 -0
- package/dist/token/EvmXERC20Reader.d.ts.map +1 -1
- package/dist/token/EvmXERC20Reader.js +37 -1
- package/dist/token/EvmXERC20Reader.js.map +1 -1
- package/dist/token/adapters/EvmHypSyntheticAdapter.test.d.ts +2 -0
- package/dist/token/adapters/EvmHypSyntheticAdapter.test.d.ts.map +1 -0
- package/dist/token/adapters/EvmHypSyntheticAdapter.test.js +96 -0
- package/dist/token/adapters/EvmHypSyntheticAdapter.test.js.map +1 -0
- package/dist/token/adapters/EvmTokenAdapter.d.ts.map +1 -1
- package/dist/token/adapters/EvmTokenAdapter.js +25 -12
- package/dist/token/adapters/EvmTokenAdapter.js.map +1 -1
- package/dist/token/configUtils.test.js.map +1 -1
- package/dist/token/deploy.d.ts +1 -0
- package/dist/token/deploy.d.ts.map +1 -1
- package/dist/token/deploy.js +13 -0
- package/dist/token/deploy.js.map +1 -1
- package/dist/token/tokenMetadataUtils.d.ts.map +1 -1
- package/dist/token/tokenMetadataUtils.js +1 -0
- package/dist/token/tokenMetadataUtils.js.map +1 -1
- package/dist/token/types.d.ts +1373 -699
- package/dist/token/types.d.ts.map +1 -1
- package/dist/token/types.test.js +11 -0
- package/dist/token/types.test.js.map +1 -1
- package/dist/token/xerc20.d.ts.map +1 -1
- package/dist/token/xerc20.js +10 -2
- package/dist/token/xerc20.js.map +1 -1
- package/dist/token/xerc20.test.d.ts +2 -0
- package/dist/token/xerc20.test.d.ts.map +1 -0
- package/dist/token/xerc20.test.js +143 -0
- package/dist/token/xerc20.test.js.map +1 -0
- package/dist/utils/contract.d.ts +6 -0
- package/dist/utils/contract.d.ts.map +1 -1
- package/dist/utils/contract.js +11 -0
- package/dist/utils/contract.js.map +1 -1
- package/dist/utils/contract.test.js +2 -1
- package/dist/utils/contract.test.js.map +1 -1
- package/dist/utils/gas.d.ts +1 -0
- package/dist/utils/gas.d.ts.map +1 -1
- package/dist/utils/gas.js +1 -0
- package/dist/utils/gas.js.map +1 -1
- package/dist/utils/gnosisSafe.d.ts +4 -1
- package/dist/utils/gnosisSafe.d.ts.map +1 -1
- package/dist/utils/gnosisSafe.js +20 -7
- package/dist/utils/gnosisSafe.js.map +1 -1
- package/dist/utils/gnosisSafe.test.js +44 -1
- package/dist/utils/gnosisSafe.test.js.map +1 -1
- package/dist/utils/ism.d.ts.map +1 -1
- package/dist/utils/ism.js +4 -2
- package/dist/utils/ism.js.map +1 -1
- package/dist/warp/WarpCore.d.ts.map +1 -1
- package/dist/warp/WarpCore.js +4 -3
- package/dist/warp/WarpCore.js.map +1 -1
- package/package.json +14 -14
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { expect } from 'chai';
|
|
2
|
+
import { ethers } from 'ethers';
|
|
2
3
|
import hre from 'hardhat';
|
|
3
|
-
import { CONTRACTS_PACKAGE_VERSION } from '@hyperlane-xyz/core';
|
|
4
|
+
import { CONTRACTS_PACKAGE_VERSION, InterchainGasPaymaster__factory, } from '@hyperlane-xyz/core';
|
|
4
5
|
import { assert, deepCopy, deepEquals, eqAddress, } from '@hyperlane-xyz/utils';
|
|
5
6
|
import { TestChainName, testChains } from '../consts/testChains.js';
|
|
6
7
|
import { TestCoreDeployer } from '../core/TestCoreDeployer.js';
|
|
@@ -10,7 +11,7 @@ import { MultiProvider } from '../providers/MultiProvider.js';
|
|
|
10
11
|
import { DEFAULT_TOKEN_DECIMALS, hookTypesToFilter, randomAddress, randomHookConfig, randomInt, } from '../test/testUtils.js';
|
|
11
12
|
import { normalizeConfig } from '../utils/ism.js';
|
|
12
13
|
import { EvmHookModule } from './EvmHookModule.js';
|
|
13
|
-
import { HookType, MUTABLE_HOOK_TYPE, } from './types.js';
|
|
14
|
+
import { HookType, IgpVersion, MUTABLE_HOOK_TYPE, } from './types.js';
|
|
14
15
|
const hookTypes = Object.values(HookType);
|
|
15
16
|
describe('EvmHookModule', async () => {
|
|
16
17
|
const chain = TestChainName.test4;
|
|
@@ -534,6 +535,30 @@ describe('EvmHookModule', async () => {
|
|
|
534
535
|
// expect 1 tx to update the oracle config
|
|
535
536
|
await expectTxsAndUpdate(hook, config, 1);
|
|
536
537
|
});
|
|
538
|
+
it('should not update IGP only because igpVersion is legacy', async () => {
|
|
539
|
+
const config = await createDeployerOwnedIgpHookConfig();
|
|
540
|
+
const { hook } = await createHook(config);
|
|
541
|
+
await expectTxsAndUpdate(hook, { ...config, igpVersion: IgpVersion.Legacy }, 0);
|
|
542
|
+
});
|
|
543
|
+
it('should not update routing hooks only because nested IGP is legacy', async () => {
|
|
544
|
+
const igpConfig = await createDeployerOwnedIgpHookConfig();
|
|
545
|
+
const config = {
|
|
546
|
+
owner: await multiProvider.getSignerAddress(chain),
|
|
547
|
+
domains: {
|
|
548
|
+
[TestChainName.test1]: {
|
|
549
|
+
type: HookType.AGGREGATION,
|
|
550
|
+
hooks: [{ type: HookType.MERKLE_TREE }, igpConfig],
|
|
551
|
+
},
|
|
552
|
+
},
|
|
553
|
+
type: HookType.FALLBACK_ROUTING,
|
|
554
|
+
fallback: { type: HookType.MERKLE_TREE },
|
|
555
|
+
};
|
|
556
|
+
const { hook } = await createHook(config);
|
|
557
|
+
const legacyConfig = deepCopy(config);
|
|
558
|
+
legacyConfig.domains[TestChainName.test1]
|
|
559
|
+
.hooks[1].igpVersion = IgpVersion.Legacy;
|
|
560
|
+
await expectTxsAndUpdate(hook, legacyConfig, 0);
|
|
561
|
+
});
|
|
537
562
|
it('should add quote signers to IGP', async () => {
|
|
538
563
|
const config = await createDeployerOwnedIgpHookConfig();
|
|
539
564
|
config.contractVersion = CONTRACTS_PACKAGE_VERSION;
|
|
@@ -585,6 +610,104 @@ describe('EvmHookModule', async () => {
|
|
|
585
610
|
// expect 0 txs since omitting quoteSigners means "don't change"
|
|
586
611
|
await expectTxsAndUpdate(hook, config, 0);
|
|
587
612
|
});
|
|
613
|
+
it('should reject quote signers for legacy IGP configs', async () => {
|
|
614
|
+
const config = await createDeployerOwnedIgpHookConfig();
|
|
615
|
+
const { hook } = await createHook(config);
|
|
616
|
+
const legacyTarget = {
|
|
617
|
+
...config,
|
|
618
|
+
igpVersion: IgpVersion.Legacy,
|
|
619
|
+
quoteSigners: [randomAddress()],
|
|
620
|
+
};
|
|
621
|
+
try {
|
|
622
|
+
await hook.update(legacyTarget);
|
|
623
|
+
throw new Error('Expected legacy IGP quote signer update to fail');
|
|
624
|
+
}
|
|
625
|
+
catch (error) {
|
|
626
|
+
assert(error instanceof Error, 'Expected Error');
|
|
627
|
+
expect(error.message).to.include('IGP quoteSigners require contract version >= 11.3.0');
|
|
628
|
+
}
|
|
629
|
+
});
|
|
630
|
+
const randomTokenOracleConfig = (withTypicalCost = false) => Object.fromEntries(testChains.map((c) => [
|
|
631
|
+
c,
|
|
632
|
+
{
|
|
633
|
+
tokenExchangeRate: randomInt(1234567891234).toString(),
|
|
634
|
+
gasPrice: randomInt(1234567891234).toString(),
|
|
635
|
+
tokenDecimals: DEFAULT_TOKEN_DECIMALS,
|
|
636
|
+
...(withTypicalCost
|
|
637
|
+
? {
|
|
638
|
+
typicalCost: {
|
|
639
|
+
handleGasAmount: 50_000,
|
|
640
|
+
totalGasAmount: 200_000,
|
|
641
|
+
totalUsdCost: 1,
|
|
642
|
+
},
|
|
643
|
+
}
|
|
644
|
+
: {}),
|
|
645
|
+
},
|
|
646
|
+
]));
|
|
647
|
+
it('should deploy IGP with token gas oracles and wire them on-chain', async () => {
|
|
648
|
+
const feeToken = randomAddress();
|
|
649
|
+
const config = await createDeployerOwnedIgpHookConfig();
|
|
650
|
+
config.tokenOracleConfig = { [feeToken]: randomTokenOracleConfig() };
|
|
651
|
+
const { hook } = await createHook(config);
|
|
652
|
+
// The token oracle mapping is read back from chain (not derivable via the
|
|
653
|
+
// reader), so assert it directly: a dedicated oracle is wired per remote.
|
|
654
|
+
const igp = InterchainGasPaymaster__factory.connect(hook.serialize().deployedHook, multiProvider.getProvider(chain));
|
|
655
|
+
const oracles = await Promise.all(testChains.map((c) => igp.tokenGasOracles(feeToken, multiProvider.getDomainId(c))));
|
|
656
|
+
for (const oracle of oracles) {
|
|
657
|
+
expect(eqAddress(oracle, ethers.constants.AddressZero)).to.be.false;
|
|
658
|
+
}
|
|
659
|
+
// All destinations of a fee token share a single oracle instance.
|
|
660
|
+
expect(oracles.every((o) => eqAddress(o, oracles[0]))).to.be.true;
|
|
661
|
+
});
|
|
662
|
+
it('should set token gas oracles on update', async () => {
|
|
663
|
+
const config = await createDeployerOwnedIgpHookConfig();
|
|
664
|
+
config.contractVersion = CONTRACTS_PACKAGE_VERSION;
|
|
665
|
+
const { hook } = await createHook(config);
|
|
666
|
+
// add a token oracle config; oracle is deployed eagerly, leaving a single
|
|
667
|
+
// setTokenGasOracles tx to wire the mapping.
|
|
668
|
+
config.tokenOracleConfig = {
|
|
669
|
+
[randomAddress()]: randomTokenOracleConfig(true),
|
|
670
|
+
};
|
|
671
|
+
await expectTxsAndUpdate(hook, config, 1);
|
|
672
|
+
// re-applying the same config is a no-op (mapping already wired on-chain)
|
|
673
|
+
await expectTxsAndUpdate(hook, config, 0);
|
|
674
|
+
});
|
|
675
|
+
it('should reject token gas oracle remotes without native gas config', async () => {
|
|
676
|
+
const config = await createDeployerOwnedIgpHookConfig();
|
|
677
|
+
config.contractVersion = CONTRACTS_PACKAGE_VERSION;
|
|
678
|
+
const { hook } = await createHook(config);
|
|
679
|
+
const target = deepCopy(config);
|
|
680
|
+
const [remoteWithoutNativeConfig] = testChains;
|
|
681
|
+
delete target.overhead[remoteWithoutNativeConfig];
|
|
682
|
+
target.tokenOracleConfig = {
|
|
683
|
+
[randomAddress()]: randomTokenOracleConfig(),
|
|
684
|
+
};
|
|
685
|
+
try {
|
|
686
|
+
await hook.update(target);
|
|
687
|
+
throw new Error('Expected token oracle remote validation to fail');
|
|
688
|
+
}
|
|
689
|
+
catch (error) {
|
|
690
|
+
assert(error instanceof Error, 'Expected Error');
|
|
691
|
+
expect(error.message).to.include(`includes remotes without native gas oracle config: ${remoteWithoutNativeConfig}`);
|
|
692
|
+
}
|
|
693
|
+
});
|
|
694
|
+
it('should reject token gas oracles for legacy IGP configs', async () => {
|
|
695
|
+
const config = await createDeployerOwnedIgpHookConfig();
|
|
696
|
+
const { hook } = await createHook(config);
|
|
697
|
+
const legacyTarget = {
|
|
698
|
+
...config,
|
|
699
|
+
igpVersion: IgpVersion.Legacy,
|
|
700
|
+
tokenOracleConfig: { [randomAddress()]: randomTokenOracleConfig() },
|
|
701
|
+
};
|
|
702
|
+
try {
|
|
703
|
+
await hook.update(legacyTarget);
|
|
704
|
+
throw new Error('Expected legacy IGP token oracle update to fail');
|
|
705
|
+
}
|
|
706
|
+
catch (error) {
|
|
707
|
+
assert(error instanceof Error, 'Expected Error');
|
|
708
|
+
expect(error.message).to.include('IGP tokenOracleConfig requires contract version >= 11.3.0');
|
|
709
|
+
}
|
|
710
|
+
});
|
|
588
711
|
it('should not upgrade IGP when contractVersion is not in config', async () => {
|
|
589
712
|
const config = await createDeployerOwnedIgpHookConfig();
|
|
590
713
|
const { hook, initialHookAddress } = await createHook(config);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EvmHookModule.hardhat-test.js","sourceRoot":"","sources":["../../src/hook/EvmHookModule.hardhat-test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EvmHookModule.hardhat-test.js","sourceRoot":"","sources":["../../src/hook/EvmHookModule.hardhat-test.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,20 +7,40 @@ import { TOKEN_EXCHANGE_RATE_SCALE_ETHEREUM } from '../consts/igp.js';
|
|
|
7
7
|
import { HyperlaneModule, } from '../core/AbstractHyperlaneModule.js';
|
|
8
8
|
import { HyperlaneDeployer } from '../deploy/HyperlaneDeployer.js';
|
|
9
9
|
import { isProxy, proxyAdmin } from '../deploy/proxy.js';
|
|
10
|
+
import { assertTokenOracleConfigHasNativeRemotes, igpSupportsOffchainFeeQuoting, } from '../gas/types.js';
|
|
10
11
|
import { EvmIsmModule } from '../ism/EvmIsmModule.js';
|
|
11
12
|
import { HyperlaneIsmFactory } from '../ism/HyperlaneIsmFactory.js';
|
|
12
13
|
import { IsmType } from '../ism/types.js';
|
|
13
14
|
import { normalizeConfig } from '../utils/ism.js';
|
|
15
|
+
import { isMissingSelectorRevert } from '../utils/contract.js';
|
|
14
16
|
import { VERSION_ERROR_MESSAGE, contractVersionMatchesDependency, } from '../token/types.js';
|
|
15
17
|
import { EvmHookReader } from './EvmHookReader.js';
|
|
16
18
|
import { hookFactories } from './contracts.js';
|
|
17
|
-
import { HookConfigSchema, HookType, HookTypeToContractNameMap, MUTABLE_HOOK_TYPE, } from './types.js';
|
|
19
|
+
import { HookConfigSchema, HookType, HookTypeToContractNameMap, IgpVersion, MUTABLE_HOOK_TYPE, OFFCHAIN_QUOTED_IGP_VERSION, } from './types.js';
|
|
18
20
|
class HookDeployer extends HyperlaneDeployer {
|
|
19
21
|
cachingEnabled = false;
|
|
20
22
|
deployContracts(_chain, _config) {
|
|
21
23
|
throw new Error('Method not implemented.');
|
|
22
24
|
}
|
|
23
25
|
}
|
|
26
|
+
function stripIgpVersion(config) {
|
|
27
|
+
if (Array.isArray(config)) {
|
|
28
|
+
return config.map(stripIgpVersion);
|
|
29
|
+
}
|
|
30
|
+
if (config !== null && typeof config === 'object') {
|
|
31
|
+
const stripped = {};
|
|
32
|
+
for (const [key, value] of Object.entries(config)) {
|
|
33
|
+
if (key !== 'igpVersion') {
|
|
34
|
+
stripped[key] = stripIgpVersion(value);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
return stripped;
|
|
38
|
+
}
|
|
39
|
+
return config;
|
|
40
|
+
}
|
|
41
|
+
function hookConfigsEqual(a, b) {
|
|
42
|
+
return deepEquals(stripIgpVersion(a), stripIgpVersion(b));
|
|
43
|
+
}
|
|
24
44
|
export class EvmHookModule extends HyperlaneModule {
|
|
25
45
|
multiProvider;
|
|
26
46
|
contractVerifier;
|
|
@@ -50,9 +70,17 @@ export class EvmHookModule extends HyperlaneModule {
|
|
|
50
70
|
this.txOverrides = multiProvider.getTransactionOverrides(this.chain);
|
|
51
71
|
}
|
|
52
72
|
async read() {
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
73
|
+
if (typeof this.args.config === 'string') {
|
|
74
|
+
return this.args.addresses.deployedHook;
|
|
75
|
+
}
|
|
76
|
+
// For IGP hooks with tokenOracleConfig, pass fee tokens to the reader
|
|
77
|
+
if (typeof this.args.config === 'object' &&
|
|
78
|
+
this.args.config.type === HookType.INTERCHAIN_GAS_PAYMASTER &&
|
|
79
|
+
this.args.config.tokenOracleConfig) {
|
|
80
|
+
const feeTokens = Object.keys(this.args.config.tokenOracleConfig);
|
|
81
|
+
return this.reader.deriveIgpConfig(this.args.addresses.deployedHook, feeTokens);
|
|
82
|
+
}
|
|
83
|
+
return this.reader.deriveHookConfig(this.args.addresses.deployedHook);
|
|
56
84
|
}
|
|
57
85
|
async update(targetConfig) {
|
|
58
86
|
// Nothing to do if its the default hook
|
|
@@ -63,7 +91,7 @@ export class EvmHookModule extends HyperlaneModule {
|
|
|
63
91
|
const normalizedTargetConfig = normalizeConfig(await this.reader.deriveHookConfig(targetConfig));
|
|
64
92
|
const normalizedCurrentConfig = normalizeConfig(await this.read());
|
|
65
93
|
// If configs match, no updates needed
|
|
66
|
-
if (
|
|
94
|
+
if (hookConfigsEqual(normalizedCurrentConfig, normalizedTargetConfig)) {
|
|
67
95
|
return [];
|
|
68
96
|
}
|
|
69
97
|
// Update the module config to the target one as we are sure now that an update will be needed
|
|
@@ -119,7 +147,7 @@ export class EvmHookModule extends HyperlaneModule {
|
|
|
119
147
|
}
|
|
120
148
|
// If the domain is not in the current config or the config has changed, deploy a new hook
|
|
121
149
|
// TODO: in-place updates per domain as a future optimization
|
|
122
|
-
if (!
|
|
150
|
+
if (!hookConfigsEqual(currentDomains[dest], targetDomainConfig)) {
|
|
123
151
|
const domainHook = await this.deploy({
|
|
124
152
|
config: targetDomainConfig,
|
|
125
153
|
});
|
|
@@ -224,12 +252,19 @@ export class EvmHookModule extends HyperlaneModule {
|
|
|
224
252
|
const igpAddress = this.args.addresses.deployedHook;
|
|
225
253
|
const igpInterface = InterchainGasPaymaster__factory.createInterface();
|
|
226
254
|
const provider = this.multiProvider.getProvider(this.domainId);
|
|
255
|
+
let currentVersion;
|
|
256
|
+
try {
|
|
257
|
+
currentVersion = await PackageVersioned__factory.connect(igpAddress, provider).PACKAGE_VERSION();
|
|
258
|
+
}
|
|
259
|
+
catch (error) {
|
|
260
|
+
if (!isMissingSelectorRevert(error)) {
|
|
261
|
+
throw error;
|
|
262
|
+
}
|
|
263
|
+
this.logger.debug(`IGP ${igpAddress} on ${this.chain} does not expose PACKAGE_VERSION`);
|
|
264
|
+
}
|
|
227
265
|
// Upgrade IGP proxy implementation only if contractVersion is specified in config
|
|
228
266
|
if (targetConfig.contractVersion && (await isProxy(provider, igpAddress))) {
|
|
229
267
|
assert(contractVersionMatchesDependency(targetConfig.contractVersion), VERSION_ERROR_MESSAGE);
|
|
230
|
-
const currentVersion = await PackageVersioned__factory.connect(igpAddress, provider)
|
|
231
|
-
.PACKAGE_VERSION()
|
|
232
|
-
.catch(() => undefined);
|
|
233
268
|
if (!currentVersion ||
|
|
234
269
|
compareVersions(targetConfig.contractVersion, currentVersion) > 0) {
|
|
235
270
|
this.logger.info(`Upgrading IGP implementation from ${currentVersion ?? 'unknown'} to ${targetConfig.contractVersion}`);
|
|
@@ -273,6 +308,7 @@ export class EvmHookModule extends HyperlaneModule {
|
|
|
273
308
|
})));
|
|
274
309
|
}
|
|
275
310
|
else {
|
|
311
|
+
assert(targetConfig.igpVersion !== IgpVersion.Legacy, 'Legacy IGP updates require an existing gas oracle configuration');
|
|
276
312
|
const newGasOracle = await this.deployStorageGasOracle({
|
|
277
313
|
config: targetConfig,
|
|
278
314
|
});
|
|
@@ -288,14 +324,131 @@ export class EvmHookModule extends HyperlaneModule {
|
|
|
288
324
|
})));
|
|
289
325
|
// update quote signers only if explicitly specified in target config
|
|
290
326
|
// and IGP supports them (detected from on-chain read or version upgrade)
|
|
291
|
-
const
|
|
292
|
-
|
|
293
|
-
|
|
327
|
+
const offchainFeeQuotingVersion = targetConfig.contractVersion ?? currentVersion ?? undefined;
|
|
328
|
+
const supportsOffchainFeeQuoting = igpSupportsOffchainFeeQuoting({
|
|
329
|
+
igpVersion: targetConfig.igpVersion,
|
|
330
|
+
contractVersion: offchainFeeQuotingVersion,
|
|
331
|
+
quoteSigners: currentConfig.quoteSigners,
|
|
332
|
+
});
|
|
333
|
+
if (targetConfig.quoteSigners !== undefined) {
|
|
334
|
+
assert(supportsOffchainFeeQuoting, `IGP quoteSigners require contract version >= ${OFFCHAIN_QUOTED_IGP_VERSION}`);
|
|
294
335
|
updateTxs.push(...this.updateIgpQuoteSigners({
|
|
295
336
|
currentSigners: currentConfig.quoteSigners ?? [],
|
|
296
337
|
targetSigners: targetConfig.quoteSigners ?? [],
|
|
297
338
|
}));
|
|
298
339
|
}
|
|
340
|
+
// update token gas oracles only if explicitly specified in target config.
|
|
341
|
+
// Gated behind the same support check as quoteSigners: the tokenGasOracles
|
|
342
|
+
// mapping and setTokenGasOracles only exist on the new (non-legacy) IGP.
|
|
343
|
+
const targetTokenOracleConfig = targetConfig.tokenOracleConfig;
|
|
344
|
+
if (targetTokenOracleConfig &&
|
|
345
|
+
Object.keys(targetTokenOracleConfig).length > 0) {
|
|
346
|
+
assert(supportsOffchainFeeQuoting, `IGP tokenOracleConfig requires contract version >= ${OFFCHAIN_QUOTED_IGP_VERSION}`);
|
|
347
|
+
updateTxs.push(...(await this.updateIgpTokenGasOracles({
|
|
348
|
+
interchainGasPaymaster: this.args.addresses.deployedHook,
|
|
349
|
+
targetTokenOracleConfig,
|
|
350
|
+
config: targetConfig,
|
|
351
|
+
})));
|
|
352
|
+
}
|
|
353
|
+
return updateTxs;
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* Diffs and applies per-fee-token gas oracles on the IGP. Target-driven: the
|
|
357
|
+
* configured fee tokens are the only enumeration source (the on-chain
|
|
358
|
+
* tokenGasOracles mapping is not enumerable), so removals are intentionally
|
|
359
|
+
* unsupported and old fee-token mappings remain live until cleared by a
|
|
360
|
+
* dedicated teardown flow. Each configured token's current oracle is read back
|
|
361
|
+
* from chain, so no off-chain address bookkeeping is needed for additions and
|
|
362
|
+
* updates.
|
|
363
|
+
*
|
|
364
|
+
* For each fee token: resolve the oracle already wired on chain (reused across
|
|
365
|
+
* that token's destinations), or deploy a fresh StorageGasOracle if none is
|
|
366
|
+
* set yet; reconcile the oracle's remote gas data; then point any unmapped
|
|
367
|
+
* destinations at it via setTokenGasOracles.
|
|
368
|
+
*/
|
|
369
|
+
async updateIgpTokenGasOracles({ interchainGasPaymaster, targetTokenOracleConfig, config, }) {
|
|
370
|
+
const updateTxs = [];
|
|
371
|
+
const igpInterface = InterchainGasPaymaster__factory.createInterface();
|
|
372
|
+
const igp = InterchainGasPaymaster__factory.connect(interchainGasPaymaster, this.multiProvider.getProvider(this.domainId));
|
|
373
|
+
assertTokenOracleConfigHasNativeRemotes(this.chain, config);
|
|
374
|
+
for (const [feeToken, oracleConfig] of Object.entries(targetTokenOracleConfig)) {
|
|
375
|
+
// Resolve the in-MultiProvider remote domains for this fee token.
|
|
376
|
+
const remotes = Object.keys(oracleConfig)
|
|
377
|
+
.map((remote) => ({
|
|
378
|
+
remote,
|
|
379
|
+
domainId: this.multiProvider.tryGetDomainId(remote),
|
|
380
|
+
}))
|
|
381
|
+
.filter((r) => r.domainId !== null);
|
|
382
|
+
if (remotes.length === 0) {
|
|
383
|
+
this.logger.warn(`Skipping token gas oracle for ${feeToken} on ${this.chain}: no configured remotes in MultiProvider`);
|
|
384
|
+
continue;
|
|
385
|
+
}
|
|
386
|
+
// Find an oracle already wired for this fee token on any configured
|
|
387
|
+
// destination; reuse it across destinations.
|
|
388
|
+
let gasOracle;
|
|
389
|
+
for (const { domainId } of remotes) {
|
|
390
|
+
const existing = await igp.tokenGasOracles(feeToken, domainId);
|
|
391
|
+
if (!eqAddress(existing, ethers.constants.AddressZero)) {
|
|
392
|
+
gasOracle = existing;
|
|
393
|
+
break;
|
|
394
|
+
}
|
|
395
|
+
}
|
|
396
|
+
// No oracle wired yet -> deploy a dedicated one for this fee token,
|
|
397
|
+
// seeded with its oracle config.
|
|
398
|
+
if (!gasOracle) {
|
|
399
|
+
const newOracle = await this.deployStorageGasOracle({
|
|
400
|
+
config,
|
|
401
|
+
oracleConfig,
|
|
402
|
+
});
|
|
403
|
+
gasOracle = newOracle.address;
|
|
404
|
+
}
|
|
405
|
+
else {
|
|
406
|
+
// Reconcile remote gas data on the existing oracle. updateStorageGasOracle
|
|
407
|
+
// diffs against a supplied current config, so read it back from chain
|
|
408
|
+
// first (tokenDecimals isn't stored on-chain, so carry it from target to
|
|
409
|
+
// avoid a spurious diff).
|
|
410
|
+
const oracleContract = StorageGasOracle__factory.connect(gasOracle, this.multiProvider.getProvider(this.domainId));
|
|
411
|
+
const currentOracleConfig = {};
|
|
412
|
+
for (const { remote, domainId } of remotes) {
|
|
413
|
+
const data = await oracleContract.remoteGasData(domainId);
|
|
414
|
+
currentOracleConfig[remote] = {
|
|
415
|
+
tokenExchangeRate: data.tokenExchangeRate.toString(),
|
|
416
|
+
gasPrice: data.gasPrice.toString(),
|
|
417
|
+
tokenDecimals: oracleConfig[remote]?.tokenDecimals,
|
|
418
|
+
};
|
|
419
|
+
}
|
|
420
|
+
updateTxs.push(...(await this.updateStorageGasOracle({
|
|
421
|
+
gasOracle,
|
|
422
|
+
currentOracleConfig,
|
|
423
|
+
targetOracleConfig: oracleConfig,
|
|
424
|
+
targetOverhead: config.overhead,
|
|
425
|
+
})));
|
|
426
|
+
}
|
|
427
|
+
// Point any destinations not yet mapped to this oracle at it.
|
|
428
|
+
const tokenOracleParams = [];
|
|
429
|
+
for (const { domainId } of remotes) {
|
|
430
|
+
const current = await igp.tokenGasOracles(feeToken, domainId);
|
|
431
|
+
if (!eqAddress(current, gasOracle)) {
|
|
432
|
+
tokenOracleParams.push({
|
|
433
|
+
feeToken,
|
|
434
|
+
remoteDomain: domainId,
|
|
435
|
+
gasOracle,
|
|
436
|
+
});
|
|
437
|
+
}
|
|
438
|
+
}
|
|
439
|
+
if (tokenOracleParams.length > 0) {
|
|
440
|
+
updateTxs.push({
|
|
441
|
+
annotation: `Setting token gas oracles for ${feeToken} on ${this.chain} (domains ${tokenOracleParams
|
|
442
|
+
.map((p) => p.remoteDomain)
|
|
443
|
+
.join(', ')})`,
|
|
444
|
+
chainId: this.chainId,
|
|
445
|
+
to: interchainGasPaymaster,
|
|
446
|
+
data: igpInterface.encodeFunctionData('setTokenGasOracles', [
|
|
447
|
+
tokenOracleParams,
|
|
448
|
+
]),
|
|
449
|
+
});
|
|
450
|
+
}
|
|
451
|
+
}
|
|
299
452
|
return updateTxs;
|
|
300
453
|
}
|
|
301
454
|
updateIgpQuoteSigners({ currentSigners, targetSigners, }) {
|
|
@@ -368,7 +521,12 @@ export class EvmHookModule extends HyperlaneModule {
|
|
|
368
521
|
continue;
|
|
369
522
|
}
|
|
370
523
|
// only update if the oracle config has changed
|
|
371
|
-
|
|
524
|
+
const comparableTarget = {
|
|
525
|
+
gasPrice: target.gasPrice,
|
|
526
|
+
tokenExchangeRate: target.tokenExchangeRate,
|
|
527
|
+
tokenDecimals: target.tokenDecimals,
|
|
528
|
+
};
|
|
529
|
+
if (!current || !deepEquals(current, comparableTarget)) {
|
|
372
530
|
configsToSet.push({ remoteDomain, ...target });
|
|
373
531
|
// Log an example remote gas cost
|
|
374
532
|
const exampleRemoteGas = (targetOverhead[remote] ?? 200_000) + 50_000;
|
|
@@ -425,7 +583,7 @@ export class EvmHookModule extends HyperlaneModule {
|
|
|
425
583
|
async updateRoutingHook({ currentConfig, targetConfig, }) {
|
|
426
584
|
// Deploy a new fallback hook if the fallback config has changed
|
|
427
585
|
if (targetConfig.type === HookType.FALLBACK_ROUTING &&
|
|
428
|
-
!
|
|
586
|
+
!hookConfigsEqual(targetConfig.fallback, currentConfig.fallback)) {
|
|
429
587
|
const hook = await this.deploy({ config: targetConfig });
|
|
430
588
|
this.args.addresses.deployedHook = hook.address;
|
|
431
589
|
return [];
|
|
@@ -668,12 +826,14 @@ export class EvmHookModule extends HyperlaneModule {
|
|
|
668
826
|
return routingHook;
|
|
669
827
|
}
|
|
670
828
|
async deployIgpHook({ config, }) {
|
|
829
|
+
assert(config.igpVersion !== IgpVersion.Legacy, 'Legacy IGP configs require an existing deployment and cannot deploy a new IGP');
|
|
671
830
|
this.logger.debug('Deploying IGP as hook...');
|
|
672
831
|
// Deploy the StorageGasOracle
|
|
673
832
|
const storageGasOracle = await this.deployStorageGasOracle({
|
|
674
833
|
config,
|
|
675
834
|
});
|
|
676
|
-
// Deploy the InterchainGasPaymaster
|
|
835
|
+
// Deploy the InterchainGasPaymaster (handles token gas oracle wiring
|
|
836
|
+
// via updateIgpTokenGasOracles before transferring ownership)
|
|
677
837
|
const interchainGasPaymaster = await this.deployInterchainGasPaymaster({
|
|
678
838
|
storageGasOracle,
|
|
679
839
|
config,
|
|
@@ -701,6 +861,20 @@ export class EvmHookModule extends HyperlaneModule {
|
|
|
701
861
|
await this.multiProvider.handleTx(this.chain, igp.addQuoteSigner(signer, this.txOverrides));
|
|
702
862
|
}
|
|
703
863
|
}
|
|
864
|
+
// Wire per-fee-token gas oracles if configured. Must run while the deployer
|
|
865
|
+
// still owns the IGP (setTokenGasOracles is onlyOwner) and after the native
|
|
866
|
+
// gas params above, since the IGP requires a destination's native oracle to
|
|
867
|
+
// exist before a non-native token oracle can be set for it.
|
|
868
|
+
if (config.tokenOracleConfig !== undefined) {
|
|
869
|
+
const tokenOracleTxs = await this.updateIgpTokenGasOracles({
|
|
870
|
+
interchainGasPaymaster: igp.address,
|
|
871
|
+
targetTokenOracleConfig: config.tokenOracleConfig,
|
|
872
|
+
config,
|
|
873
|
+
});
|
|
874
|
+
for (const tx of tokenOracleTxs) {
|
|
875
|
+
await this.multiProvider.sendTransaction(this.chain, tx);
|
|
876
|
+
}
|
|
877
|
+
}
|
|
704
878
|
// Transfer igp to the configured owner
|
|
705
879
|
await this.multiProvider.handleTx(this.chain, igp.transferOwnership(config.owner, this.txOverrides));
|
|
706
880
|
return igp;
|
|
@@ -716,13 +890,13 @@ export class EvmHookModule extends HyperlaneModule {
|
|
|
716
890
|
const routingHook = await this.deployer.deployContract(this.chain, HookType.AMOUNT_ROUTING, [lowerHook, upperHook, config.threshold]);
|
|
717
891
|
return routingHook;
|
|
718
892
|
}
|
|
719
|
-
async deployStorageGasOracle({ config, }) {
|
|
893
|
+
async deployStorageGasOracle({ config, oracleConfig = config.oracleConfig, }) {
|
|
720
894
|
// Deploy the StorageGasOracle, by default msg.sender is the owner
|
|
721
895
|
const gasOracle = await this.deployer.deployContractFromFactory(this.chain, new StorageGasOracle__factory(), 'storageGasOracle', []);
|
|
722
896
|
// Obtain the transactions to set the gas params for each remote
|
|
723
897
|
const configureTxs = await this.updateStorageGasOracle({
|
|
724
898
|
gasOracle: gasOracle.address,
|
|
725
|
-
targetOracleConfig:
|
|
899
|
+
targetOracleConfig: oracleConfig,
|
|
726
900
|
targetOverhead: config.overhead,
|
|
727
901
|
});
|
|
728
902
|
// Set the gas params for each remote
|