@hyperlane-xyz/sdk 3.6.2 → 3.8.0-beta0
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/consts/chainMetadata.d.ts +3 -2
- package/dist/consts/chainMetadata.d.ts.map +1 -1
- package/dist/consts/chainMetadata.js +99 -72
- package/dist/consts/chainMetadata.js.map +1 -1
- package/dist/consts/chains.d.ts +3 -2
- package/dist/consts/chains.d.ts.map +1 -1
- package/dist/consts/chains.js +6 -4
- package/dist/consts/chains.js.map +1 -1
- package/dist/consts/environments/index.d.ts +141 -133
- package/dist/consts/environments/index.d.ts.map +1 -1
- package/dist/consts/environments/mainnet.json +20 -0
- package/dist/consts/environments/testnet.json +166 -178
- package/dist/consts/igp.d.ts +2 -0
- package/dist/consts/igp.d.ts.map +1 -0
- package/dist/consts/igp.js +5 -0
- package/dist/consts/igp.js.map +1 -0
- package/dist/consts/multisigIsm.d.ts.map +1 -1
- package/dist/consts/multisigIsm.js +22 -18
- package/dist/consts/multisigIsm.js.map +1 -1
- package/dist/core/CoreDeployer.hardhat-test.js +4 -2
- package/dist/core/CoreDeployer.hardhat-test.js.map +1 -1
- package/dist/core/HyperlaneCore.d.ts.map +1 -1
- package/dist/core/HyperlaneCore.js +10 -4
- package/dist/core/HyperlaneCore.js.map +1 -1
- package/dist/core/HyperlaneCoreChecker.d.ts.map +1 -1
- package/dist/core/HyperlaneCoreChecker.js +3 -3
- package/dist/core/HyperlaneCoreChecker.js.map +1 -1
- package/dist/core/HyperlaneCoreDeployer.d.ts +6 -2
- package/dist/core/HyperlaneCoreDeployer.d.ts.map +1 -1
- package/dist/core/HyperlaneCoreDeployer.js +24 -11
- package/dist/core/HyperlaneCoreDeployer.js.map +1 -1
- package/dist/core/TestRecipientDeployer.d.ts +2 -1
- package/dist/core/TestRecipientDeployer.d.ts.map +1 -1
- package/dist/core/TestRecipientDeployer.js +2 -1
- package/dist/core/TestRecipientDeployer.js.map +1 -1
- package/dist/deploy/HyperlaneDeployer.d.ts +7 -6
- package/dist/deploy/HyperlaneDeployer.d.ts.map +1 -1
- package/dist/deploy/HyperlaneDeployer.js +34 -13
- package/dist/deploy/HyperlaneDeployer.js.map +1 -1
- package/dist/deploy/HyperlaneProxyFactoryDeployer.d.ts +2 -1
- package/dist/deploy/HyperlaneProxyFactoryDeployer.d.ts.map +1 -1
- package/dist/deploy/HyperlaneProxyFactoryDeployer.js +2 -1
- package/dist/deploy/HyperlaneProxyFactoryDeployer.js.map +1 -1
- package/dist/deploy/types.d.ts +1 -1
- package/dist/deploy/types.d.ts.map +1 -1
- package/dist/deploy/verify/ContractVerifier.d.ts +9 -12
- package/dist/deploy/verify/ContractVerifier.d.ts.map +1 -1
- package/dist/deploy/verify/ContractVerifier.js +147 -121
- package/dist/deploy/verify/ContractVerifier.js.map +1 -1
- package/dist/deploy/verify/PostDeploymentContractVerifier.d.ts +14 -0
- package/dist/deploy/verify/PostDeploymentContractVerifier.d.ts.map +1 -0
- package/dist/deploy/verify/PostDeploymentContractVerifier.js +31 -0
- package/dist/deploy/verify/PostDeploymentContractVerifier.js.map +1 -0
- package/dist/deploy/verify/types.d.ts +60 -3
- package/dist/deploy/verify/types.d.ts.map +1 -1
- package/dist/deploy/verify/types.js +42 -0
- package/dist/deploy/verify/types.js.map +1 -1
- package/dist/gas/HyperlaneIgpChecker.d.ts +0 -2
- package/dist/gas/HyperlaneIgpChecker.d.ts.map +1 -1
- package/dist/gas/HyperlaneIgpChecker.js +8 -29
- package/dist/gas/HyperlaneIgpChecker.js.map +1 -1
- package/dist/gas/HyperlaneIgpDeployer.d.ts +3 -2
- package/dist/gas/HyperlaneIgpDeployer.d.ts.map +1 -1
- package/dist/gas/HyperlaneIgpDeployer.js +47 -20
- package/dist/gas/HyperlaneIgpDeployer.js.map +1 -1
- package/dist/gas/oracle/configure-gas-oracles.hardhat-test.d.ts +2 -0
- package/dist/gas/oracle/configure-gas-oracles.hardhat-test.d.ts.map +1 -0
- package/dist/gas/oracle/configure-gas-oracles.hardhat-test.js +47 -0
- package/dist/gas/oracle/configure-gas-oracles.hardhat-test.js.map +1 -0
- package/dist/gas/oracle/types.d.ts +11 -0
- package/dist/gas/oracle/types.d.ts.map +1 -0
- package/dist/gas/oracle/types.js +30 -0
- package/dist/gas/oracle/types.js.map +1 -0
- package/dist/gas/types.d.ts +3 -4
- package/dist/gas/types.d.ts.map +1 -1
- package/dist/gas/types.js +1 -5
- package/dist/gas/types.js.map +1 -1
- package/dist/hook/HyperlaneHookDeployer.d.ts +2 -1
- package/dist/hook/HyperlaneHookDeployer.d.ts.map +1 -1
- package/dist/hook/HyperlaneHookDeployer.js +6 -4
- package/dist/hook/HyperlaneHookDeployer.js.map +1 -1
- package/dist/index.d.ts +18 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +52 -20
- package/dist/index.js.map +1 -1
- package/dist/ism/HyperlaneIsmFactory.d.ts +11 -10
- package/dist/ism/HyperlaneIsmFactory.d.ts.map +1 -1
- package/dist/ism/HyperlaneIsmFactory.hardhat-test.js +14 -12
- package/dist/ism/HyperlaneIsmFactory.hardhat-test.js.map +1 -1
- package/dist/ism/HyperlaneIsmFactory.js +39 -287
- package/dist/ism/HyperlaneIsmFactory.js.map +1 -1
- package/dist/ism/utils.d.ts +11 -0
- package/dist/ism/utils.d.ts.map +1 -0
- package/dist/ism/utils.js +277 -0
- package/dist/ism/utils.js.map +1 -0
- package/dist/metadata/ChainMetadataManager.d.ts +43 -21
- package/dist/metadata/ChainMetadataManager.d.ts.map +1 -1
- package/dist/metadata/ChainMetadataManager.js +26 -0
- package/dist/metadata/ChainMetadataManager.js.map +1 -1
- package/dist/metadata/agentConfig.d.ts +138 -46
- package/dist/metadata/agentConfig.d.ts.map +1 -1
- package/dist/metadata/agentConfig.js +1 -1
- package/dist/metadata/blockExplorer.d.ts +6 -1
- package/dist/metadata/blockExplorer.d.ts.map +1 -1
- package/dist/metadata/blockExplorer.js +15 -1
- package/dist/metadata/blockExplorer.js.map +1 -1
- package/dist/metadata/chainMetadataTypes.d.ts +202 -1
- package/dist/metadata/chainMetadataTypes.d.ts.map +1 -1
- package/dist/metadata/chainMetadataTypes.js +18 -4
- package/dist/metadata/chainMetadataTypes.js.map +1 -1
- package/dist/metadata/customZodTypes.d.ts +2 -0
- package/dist/metadata/customZodTypes.d.ts.map +1 -1
- package/dist/metadata/customZodTypes.js +3 -1
- package/dist/metadata/customZodTypes.js.map +1 -1
- package/dist/metadata/health.js +2 -2
- package/dist/metadata/health.js.map +1 -1
- package/dist/metadata/warpRouteConfig.d.ts +134 -0
- package/dist/metadata/warpRouteConfig.d.ts.map +1 -0
- package/dist/metadata/warpRouteConfig.js +24 -0
- package/dist/metadata/warpRouteConfig.js.map +1 -0
- package/dist/middleware/account/InterchainAccountDeployer.d.ts +2 -1
- package/dist/middleware/account/InterchainAccountDeployer.d.ts.map +1 -1
- package/dist/middleware/account/InterchainAccountDeployer.js +4 -2
- package/dist/middleware/account/InterchainAccountDeployer.js.map +1 -1
- package/dist/middleware/liquidity-layer/LiquidityLayerRouterDeployer.d.ts +2 -1
- package/dist/middleware/liquidity-layer/LiquidityLayerRouterDeployer.d.ts.map +1 -1
- package/dist/middleware/liquidity-layer/LiquidityLayerRouterDeployer.js +4 -2
- package/dist/middleware/liquidity-layer/LiquidityLayerRouterDeployer.js.map +1 -1
- package/dist/middleware/query/InterchainQueryDeployer.d.ts +2 -1
- package/dist/middleware/query/InterchainQueryDeployer.d.ts.map +1 -1
- package/dist/middleware/query/InterchainQueryDeployer.js +4 -2
- package/dist/middleware/query/InterchainQueryDeployer.js.map +1 -1
- package/dist/providers/MultiProtocolProvider.d.ts +10 -12
- package/dist/providers/MultiProtocolProvider.d.ts.map +1 -1
- package/dist/providers/MultiProtocolProvider.js +2 -7
- package/dist/providers/MultiProtocolProvider.js.map +1 -1
- package/dist/providers/MultiProvider.d.ts +17 -17
- package/dist/providers/MultiProvider.d.ts.map +1 -1
- package/dist/providers/MultiProvider.js +12 -1
- package/dist/providers/MultiProvider.js.map +1 -1
- package/dist/providers/ProviderType.d.ts +5 -2
- package/dist/providers/ProviderType.d.ts.map +1 -1
- package/dist/providers/ProviderType.js +10 -1
- package/dist/providers/ProviderType.js.map +1 -1
- package/dist/providers/SmartProvider/SmartProvider.d.ts +2 -2
- package/dist/providers/SmartProvider/SmartProvider.d.ts.map +1 -1
- package/dist/providers/SmartProvider/SmartProvider.js +3 -3
- package/dist/providers/SmartProvider/SmartProvider.js.map +1 -1
- package/dist/providers/providerBuilders.d.ts.map +1 -1
- package/dist/providers/providerBuilders.js +1 -0
- package/dist/providers/providerBuilders.js.map +1 -1
- package/dist/router/HyperlaneRouterChecker.d.ts.map +1 -1
- package/dist/router/HyperlaneRouterChecker.js +2 -2
- package/dist/router/HyperlaneRouterChecker.js.map +1 -1
- package/dist/router/HyperlaneRouterDeployer.d.ts.map +1 -1
- package/dist/router/HyperlaneRouterDeployer.js +2 -3
- package/dist/router/HyperlaneRouterDeployer.js.map +1 -1
- package/dist/test/metadata-check.js +7 -39
- package/dist/test/metadata-check.js.map +1 -1
- package/dist/test/testUtils.d.ts +2 -0
- package/dist/test/testUtils.d.ts.map +1 -1
- package/dist/test/testUtils.js +19 -1
- package/dist/test/testUtils.js.map +1 -1
- package/dist/token/IToken.d.ts +147 -0
- package/dist/token/IToken.d.ts.map +1 -0
- package/dist/token/IToken.js +37 -0
- package/dist/token/IToken.js.map +1 -0
- package/dist/token/Token.d.ts +58 -0
- package/dist/token/Token.d.ts.map +1 -0
- package/dist/token/Token.js +260 -0
- package/dist/token/Token.js.map +1 -0
- package/dist/token/Token.test.d.ts +2 -0
- package/dist/token/Token.test.d.ts.map +1 -0
- package/dist/token/Token.test.js +155 -0
- package/dist/token/Token.test.js.map +1 -0
- package/dist/token/TokenAmount.d.ts +12 -0
- package/dist/token/TokenAmount.d.ts.map +1 -0
- package/dist/token/TokenAmount.js +24 -0
- package/dist/token/TokenAmount.js.map +1 -0
- package/dist/token/TokenAmount.test.d.ts +2 -0
- package/dist/token/TokenAmount.test.d.ts.map +1 -0
- package/dist/token/TokenAmount.test.js +41 -0
- package/dist/token/TokenAmount.test.js.map +1 -0
- package/dist/token/TokenConnection.d.ts +81 -0
- package/dist/token/TokenConnection.d.ts.map +1 -0
- package/dist/token/TokenConnection.js +36 -0
- package/dist/token/TokenConnection.js.map +1 -0
- package/dist/token/TokenStandard.d.ts +36 -0
- package/dist/token/TokenStandard.d.ts.map +1 -0
- package/dist/token/TokenStandard.js +118 -0
- package/dist/token/TokenStandard.js.map +1 -0
- package/dist/token/adapters/CosmWasmTokenAdapter.d.ts +29 -30
- package/dist/token/adapters/CosmWasmTokenAdapter.d.ts.map +1 -1
- package/dist/token/adapters/CosmWasmTokenAdapter.js +65 -50
- package/dist/token/adapters/CosmWasmTokenAdapter.js.map +1 -1
- package/dist/token/adapters/CosmosTokenAdapter.d.ts +11 -9
- package/dist/token/adapters/CosmosTokenAdapter.d.ts.map +1 -1
- package/dist/token/adapters/CosmosTokenAdapter.js +25 -6
- package/dist/token/adapters/CosmosTokenAdapter.js.map +1 -1
- package/dist/token/adapters/EvmTokenAdapter.d.ts +27 -16
- package/dist/token/adapters/EvmTokenAdapter.d.ts.map +1 -1
- package/dist/token/adapters/EvmTokenAdapter.js +69 -23
- package/dist/token/adapters/EvmTokenAdapter.js.map +1 -1
- package/dist/token/adapters/ITokenAdapter.d.ts +16 -11
- package/dist/token/adapters/ITokenAdapter.d.ts.map +1 -1
- package/dist/token/adapters/SealevelTokenAdapter.d.ts +15 -13
- package/dist/token/adapters/SealevelTokenAdapter.d.ts.map +1 -1
- package/dist/token/adapters/SealevelTokenAdapter.js +17 -15
- package/dist/token/adapters/SealevelTokenAdapter.js.map +1 -1
- package/dist/token/deploy.d.ts +3 -2
- package/dist/token/deploy.d.ts.map +1 -1
- package/dist/token/deploy.js +4 -2
- package/dist/token/deploy.js.map +1 -1
- package/dist/types.d.ts +2 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/warp/WarpCore.d.ts +76 -0
- package/dist/warp/WarpCore.d.ts.map +1 -0
- package/dist/warp/WarpCore.js +288 -0
- package/dist/warp/WarpCore.js.map +1 -0
- package/dist/warp/WarpCore.test.d.ts +2 -0
- package/dist/warp/WarpCore.test.d.ts.map +1 -0
- package/dist/warp/WarpCore.test.js +143 -0
- package/dist/warp/WarpCore.test.js.map +1 -0
- package/dist/warp/types.d.ts +274 -0
- package/dist/warp/types.d.ts.map +1 -0
- package/dist/warp/types.js +38 -0
- package/dist/warp/types.js.map +1 -0
- package/logos/black/cosmwasm.svg +1 -1
- package/logos/black/inevm.svg +1 -0
- package/logos/black/injective.svg +1 -0
- package/logos/black/nautilus.svg +1 -0
- package/logos/black/plume.svg +29 -0
- package/logos/color/cosmos.svg +1 -1
- package/logos/color/cosmwasm.svg +1 -1
- package/logos/color/inevm.svg +1 -0
- package/logos/color/injective.svg +1 -0
- package/logos/color/manta.svg +1 -1
- package/logos/color/nautilus.svg +1 -0
- package/logos/color/plume.svg +24 -0
- package/package.json +5 -4
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.collectValidators = exports.routingModuleDelta = exports.moduleMatchesConfig = exports.moduleCanCertainlyVerify = void 0;
|
|
7
|
+
const debug_1 = __importDefault(require("debug"));
|
|
8
|
+
const ethers_1 = require("ethers");
|
|
9
|
+
const core_1 = require("@hyperlane-xyz/core");
|
|
10
|
+
const utils_1 = require("@hyperlane-xyz/utils");
|
|
11
|
+
const chainMetadata_1 = require("../consts/chainMetadata");
|
|
12
|
+
const types_1 = require("./types");
|
|
13
|
+
const logger = (0, debug_1.default)('hyperlane:IsmUtils');
|
|
14
|
+
// Note that this function may return false negatives, but should
|
|
15
|
+
// not return false positives.
|
|
16
|
+
// This can happen if, for example, the module has sender, recipient, or
|
|
17
|
+
// body specific logic, as the sample message used when querying the ISM
|
|
18
|
+
// sets all of these to zero.
|
|
19
|
+
async function moduleCanCertainlyVerify(destModule, multiProvider, origin, destination) {
|
|
20
|
+
const originDomainId = multiProvider.tryGetDomainId(origin);
|
|
21
|
+
const destinationDomainId = multiProvider.tryGetDomainId(destination);
|
|
22
|
+
if (!originDomainId || !destinationDomainId) {
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
const message = (0, utils_1.formatMessage)(0, 0, originDomainId, ethers_1.ethers.constants.AddressZero, destinationDomainId, ethers_1.ethers.constants.AddressZero, '0x');
|
|
26
|
+
const provider = multiProvider.getSignerOrProvider(destination);
|
|
27
|
+
if (typeof destModule === 'string') {
|
|
28
|
+
const module = core_1.IInterchainSecurityModule__factory.connect(destModule, provider);
|
|
29
|
+
try {
|
|
30
|
+
const moduleType = await module.moduleType();
|
|
31
|
+
if (moduleType === types_1.ModuleType.MERKLE_ROOT_MULTISIG ||
|
|
32
|
+
moduleType === types_1.ModuleType.MESSAGE_ID_MULTISIG) {
|
|
33
|
+
const multisigModule = core_1.IMultisigIsm__factory.connect(destModule, provider);
|
|
34
|
+
const [, threshold] = await multisigModule.validatorsAndThreshold(message);
|
|
35
|
+
return threshold > 0;
|
|
36
|
+
}
|
|
37
|
+
else if (moduleType === types_1.ModuleType.ROUTING) {
|
|
38
|
+
const routingIsm = core_1.IRoutingIsm__factory.connect(destModule, provider);
|
|
39
|
+
const subModule = await routingIsm.route(message);
|
|
40
|
+
return moduleCanCertainlyVerify(subModule, multiProvider, origin, destination);
|
|
41
|
+
}
|
|
42
|
+
else if (moduleType === types_1.ModuleType.AGGREGATION) {
|
|
43
|
+
const aggregationIsm = core_1.IAggregationIsm__factory.connect(destModule, provider);
|
|
44
|
+
const [subModules, threshold] = await aggregationIsm.modulesAndThreshold(message);
|
|
45
|
+
let verified = 0;
|
|
46
|
+
for (const subModule of subModules) {
|
|
47
|
+
const canVerify = await moduleCanCertainlyVerify(subModule, multiProvider, origin, destination);
|
|
48
|
+
if (canVerify) {
|
|
49
|
+
verified += 1;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return verified >= threshold;
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
throw new Error(`Unsupported module type: ${moduleType}`);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
catch (e) {
|
|
59
|
+
logger(`Error checking module ${destModule}: ${e}`);
|
|
60
|
+
return false;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
// destModule is an IsmConfig
|
|
65
|
+
switch (destModule.type) {
|
|
66
|
+
case types_1.IsmType.MERKLE_ROOT_MULTISIG:
|
|
67
|
+
case types_1.IsmType.MESSAGE_ID_MULTISIG:
|
|
68
|
+
return destModule.threshold > 0;
|
|
69
|
+
case types_1.IsmType.ROUTING: {
|
|
70
|
+
const checking = moduleCanCertainlyVerify(destModule.domains[destination], multiProvider, origin, destination);
|
|
71
|
+
return checking;
|
|
72
|
+
}
|
|
73
|
+
case types_1.IsmType.AGGREGATION: {
|
|
74
|
+
let verified = 0;
|
|
75
|
+
for (const subModule of destModule.modules) {
|
|
76
|
+
const canVerify = await moduleCanCertainlyVerify(subModule, multiProvider, origin, destination);
|
|
77
|
+
if (canVerify) {
|
|
78
|
+
verified += 1;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
return verified >= destModule.threshold;
|
|
82
|
+
}
|
|
83
|
+
case types_1.IsmType.OP_STACK:
|
|
84
|
+
return destModule.nativeBridge !== ethers_1.ethers.constants.AddressZero;
|
|
85
|
+
case types_1.IsmType.TEST_ISM: {
|
|
86
|
+
return true;
|
|
87
|
+
}
|
|
88
|
+
default:
|
|
89
|
+
throw new Error(`Unsupported module type: ${destModule.type}`);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
exports.moduleCanCertainlyVerify = moduleCanCertainlyVerify;
|
|
94
|
+
async function moduleMatchesConfig(chain, moduleAddress, config, multiProvider, contracts, mailbox) {
|
|
95
|
+
if (typeof config === 'string') {
|
|
96
|
+
return (0, utils_1.eqAddress)(moduleAddress, config);
|
|
97
|
+
}
|
|
98
|
+
// If the module address is zero, it can't match any object-based config.
|
|
99
|
+
// The subsequent check of what moduleType it is will throw, so we fail here.
|
|
100
|
+
if ((0, utils_1.eqAddress)(moduleAddress, ethers_1.ethers.constants.AddressZero)) {
|
|
101
|
+
return false;
|
|
102
|
+
}
|
|
103
|
+
const provider = multiProvider.getProvider(chain);
|
|
104
|
+
const module = core_1.IInterchainSecurityModule__factory.connect(moduleAddress, provider);
|
|
105
|
+
const actualType = await module.moduleType();
|
|
106
|
+
if (actualType !== (0, types_1.ismTypeToModuleType)(config.type))
|
|
107
|
+
return false;
|
|
108
|
+
let matches = true;
|
|
109
|
+
switch (config.type) {
|
|
110
|
+
case types_1.IsmType.MERKLE_ROOT_MULTISIG: {
|
|
111
|
+
// A MerkleRootMultisigIsm matches if validators and threshold match the config
|
|
112
|
+
const expectedAddress = await contracts.merkleRootMultisigIsmFactory.getAddress(config.validators.sort(), config.threshold);
|
|
113
|
+
matches = (0, utils_1.eqAddress)(expectedAddress, module.address);
|
|
114
|
+
break;
|
|
115
|
+
}
|
|
116
|
+
case types_1.IsmType.MESSAGE_ID_MULTISIG: {
|
|
117
|
+
// A MessageIdMultisigIsm matches if validators and threshold match the config
|
|
118
|
+
const expectedAddress = await contracts.messageIdMultisigIsmFactory.getAddress(config.validators.sort(), config.threshold);
|
|
119
|
+
matches = (0, utils_1.eqAddress)(expectedAddress, module.address);
|
|
120
|
+
break;
|
|
121
|
+
}
|
|
122
|
+
case types_1.IsmType.FALLBACK_ROUTING:
|
|
123
|
+
case types_1.IsmType.ROUTING: {
|
|
124
|
+
// A RoutingIsm matches if:
|
|
125
|
+
// 1. The set of domains in the config equals those on-chain
|
|
126
|
+
// 2. The modules for each domain match the config
|
|
127
|
+
// TODO: Check (1)
|
|
128
|
+
const routingIsm = core_1.DomainRoutingIsm__factory.connect(moduleAddress, provider);
|
|
129
|
+
// Check that the RoutingISM owner matches the config
|
|
130
|
+
const owner = await routingIsm.owner();
|
|
131
|
+
matches && (matches = (0, utils_1.eqAddress)(owner, config.owner));
|
|
132
|
+
// check if the mailbox matches the config for fallback routing
|
|
133
|
+
if (config.type === types_1.IsmType.FALLBACK_ROUTING) {
|
|
134
|
+
const client = core_1.MailboxClient__factory.connect(moduleAddress, provider);
|
|
135
|
+
const mailboxAddress = await client.mailbox();
|
|
136
|
+
matches =
|
|
137
|
+
matches &&
|
|
138
|
+
mailbox !== undefined &&
|
|
139
|
+
(0, utils_1.eqAddress)(mailboxAddress, mailbox);
|
|
140
|
+
}
|
|
141
|
+
const delta = await routingModuleDelta(chain, moduleAddress, config, multiProvider, contracts, mailbox);
|
|
142
|
+
matches =
|
|
143
|
+
matches &&
|
|
144
|
+
delta.domainsToEnroll.length === 0 &&
|
|
145
|
+
delta.domainsToUnenroll.length === 0 &&
|
|
146
|
+
!delta.mailbox &&
|
|
147
|
+
!delta.owner;
|
|
148
|
+
break;
|
|
149
|
+
}
|
|
150
|
+
case types_1.IsmType.AGGREGATION: {
|
|
151
|
+
// An AggregationIsm matches if:
|
|
152
|
+
// 1. The threshold matches the config
|
|
153
|
+
// 2. There is a bijection between on and off-chain configured modules
|
|
154
|
+
const aggregationIsm = core_1.StaticAggregationIsm__factory.connect(moduleAddress, provider);
|
|
155
|
+
const [subModules, threshold] = await aggregationIsm.modulesAndThreshold('0x');
|
|
156
|
+
matches && (matches = threshold === config.threshold);
|
|
157
|
+
matches && (matches = subModules.length === config.modules.length);
|
|
158
|
+
const configIndexMatched = new Map();
|
|
159
|
+
for (const subModule of subModules) {
|
|
160
|
+
const subModuleMatchesConfig = await Promise.all(config.modules.map((c) => moduleMatchesConfig(chain, subModule, c, multiProvider, contracts)));
|
|
161
|
+
// The submodule returned by the ISM must match exactly one
|
|
162
|
+
// entry in the config.
|
|
163
|
+
const count = subModuleMatchesConfig.filter(Boolean).length;
|
|
164
|
+
matches && (matches = count === 1);
|
|
165
|
+
// That entry in the config should not have been matched already.
|
|
166
|
+
subModuleMatchesConfig.forEach((matched, index) => {
|
|
167
|
+
if (matched) {
|
|
168
|
+
matches && (matches = !configIndexMatched.has(index));
|
|
169
|
+
configIndexMatched.set(index, true);
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
break;
|
|
174
|
+
}
|
|
175
|
+
case types_1.IsmType.OP_STACK: {
|
|
176
|
+
const opStackIsm = core_1.OPStackIsm__factory.connect(moduleAddress, provider);
|
|
177
|
+
const type = await opStackIsm.moduleType();
|
|
178
|
+
matches && (matches = type === types_1.ModuleType.NULL);
|
|
179
|
+
break;
|
|
180
|
+
}
|
|
181
|
+
case types_1.IsmType.TEST_ISM: {
|
|
182
|
+
// This is just a TestISM
|
|
183
|
+
matches = true;
|
|
184
|
+
break;
|
|
185
|
+
}
|
|
186
|
+
case types_1.IsmType.PAUSABLE: {
|
|
187
|
+
const pausableIsm = core_1.PausableIsm__factory.connect(moduleAddress, provider);
|
|
188
|
+
const owner = await pausableIsm.owner();
|
|
189
|
+
matches && (matches = (0, utils_1.eqAddress)(owner, config.owner));
|
|
190
|
+
if (config.paused) {
|
|
191
|
+
const isPaused = await pausableIsm.paused();
|
|
192
|
+
matches && (matches = config.paused === isPaused);
|
|
193
|
+
}
|
|
194
|
+
break;
|
|
195
|
+
}
|
|
196
|
+
default: {
|
|
197
|
+
throw new Error('Unsupported ModuleType');
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
return matches;
|
|
201
|
+
}
|
|
202
|
+
exports.moduleMatchesConfig = moduleMatchesConfig;
|
|
203
|
+
async function routingModuleDelta(destination, moduleAddress, config, multiProvider, contracts, mailbox) {
|
|
204
|
+
const provider = multiProvider.getProvider(destination);
|
|
205
|
+
const routingIsm = core_1.DomainRoutingIsm__factory.connect(moduleAddress, provider);
|
|
206
|
+
const owner = await routingIsm.owner();
|
|
207
|
+
const deployedDomains = (await routingIsm.domains()).map((domain) => domain.toNumber());
|
|
208
|
+
// config.domains is already filtered to only include domains in the multiprovider
|
|
209
|
+
const safeConfigDomains = (0, utils_1.objMap)(config.domains, (chainName) => chainMetadata_1.chainMetadata[chainName]?.domainId ??
|
|
210
|
+
multiProvider.getDomainId(chainName));
|
|
211
|
+
const delta = {
|
|
212
|
+
domainsToUnenroll: [],
|
|
213
|
+
domainsToEnroll: [],
|
|
214
|
+
};
|
|
215
|
+
// if owners don't match, we need to transfer ownership
|
|
216
|
+
if (!(0, utils_1.eqAddress)(owner, (0, utils_1.normalizeAddress)(config.owner)))
|
|
217
|
+
delta.owner = config.owner;
|
|
218
|
+
if (config.type === types_1.IsmType.FALLBACK_ROUTING) {
|
|
219
|
+
const client = core_1.MailboxClient__factory.connect(moduleAddress, provider);
|
|
220
|
+
const mailboxAddress = await client.mailbox();
|
|
221
|
+
if (mailbox && !(0, utils_1.eqAddress)(mailboxAddress, mailbox))
|
|
222
|
+
delta.mailbox = mailbox;
|
|
223
|
+
}
|
|
224
|
+
// check for exclusion of domains in the config
|
|
225
|
+
delta.domainsToUnenroll = deployedDomains.filter((domain) => !Object.values(safeConfigDomains).includes(domain));
|
|
226
|
+
// check for inclusion of domains in the config
|
|
227
|
+
for (const [origin, subConfig] of Object.entries(config.domains)) {
|
|
228
|
+
const originDomain = safeConfigDomains[origin];
|
|
229
|
+
if (!deployedDomains.includes(originDomain)) {
|
|
230
|
+
delta.domainsToEnroll.push(originDomain);
|
|
231
|
+
}
|
|
232
|
+
else {
|
|
233
|
+
const subModule = await routingIsm.module(originDomain);
|
|
234
|
+
// Recursively check that the submodule for each configured
|
|
235
|
+
// domain matches the submodule config.
|
|
236
|
+
const subModuleMatches = await moduleMatchesConfig(destination, subModule, subConfig, multiProvider, contracts, mailbox);
|
|
237
|
+
if (!subModuleMatches)
|
|
238
|
+
delta.domainsToEnroll.push(originDomain);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
return delta;
|
|
242
|
+
}
|
|
243
|
+
exports.routingModuleDelta = routingModuleDelta;
|
|
244
|
+
function collectValidators(origin, config) {
|
|
245
|
+
// TODO: support address configurations in collectValidators
|
|
246
|
+
if (typeof config === 'string') {
|
|
247
|
+
logger.extend(origin)('Address config unimplemented in collectValidators');
|
|
248
|
+
return new Set([]);
|
|
249
|
+
}
|
|
250
|
+
let validators = [];
|
|
251
|
+
if (config.type === types_1.IsmType.MERKLE_ROOT_MULTISIG ||
|
|
252
|
+
config.type === types_1.IsmType.MESSAGE_ID_MULTISIG) {
|
|
253
|
+
validators = config.validators;
|
|
254
|
+
}
|
|
255
|
+
else if (config.type === types_1.IsmType.ROUTING) {
|
|
256
|
+
if (Object.keys(config.domains).includes(origin)) {
|
|
257
|
+
const domainValidators = collectValidators(origin, config.domains[origin]);
|
|
258
|
+
validators = [...domainValidators];
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
else if (config.type === types_1.IsmType.AGGREGATION) {
|
|
262
|
+
const aggregatedValidators = config.modules.map((c) => collectValidators(origin, c));
|
|
263
|
+
aggregatedValidators.forEach((set) => {
|
|
264
|
+
validators = validators.concat([...set]);
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
else if (config.type === types_1.IsmType.TEST_ISM ||
|
|
268
|
+
config.type === types_1.IsmType.PAUSABLE) {
|
|
269
|
+
return new Set([]);
|
|
270
|
+
}
|
|
271
|
+
else {
|
|
272
|
+
throw new Error('Unsupported ModuleType');
|
|
273
|
+
}
|
|
274
|
+
return new Set(validators);
|
|
275
|
+
}
|
|
276
|
+
exports.collectValidators = collectValidators;
|
|
277
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/ism/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Debugger } from 'debug';
|
|
2
2
|
import { ProtocolType } from '@hyperlane-xyz/utils';
|
|
3
|
-
import { ChainMap, ChainName } from '../types';
|
|
4
|
-
import { ChainMetadata } from './chainMetadataTypes';
|
|
3
|
+
import { ChainMap, ChainName, ChainNameOrId } from '../types';
|
|
4
|
+
import { ChainMetadata, ExplorerFamily } from './chainMetadataTypes';
|
|
5
5
|
export interface ChainMetadataManagerOptions {
|
|
6
6
|
loggerName?: string;
|
|
7
7
|
}
|
|
@@ -27,21 +27,26 @@ export declare class ChainMetadataManager<MetaExt = {}> {
|
|
|
27
27
|
* Get the metadata for a given chain name, chain id, or domain id
|
|
28
28
|
* @throws if chain's metadata has not been set
|
|
29
29
|
*/
|
|
30
|
-
tryGetChainMetadata(chainNameOrId:
|
|
30
|
+
tryGetChainMetadata(chainNameOrId: ChainNameOrId): ChainMetadata<MetaExt> | null;
|
|
31
31
|
/**
|
|
32
32
|
* Get the metadata for a given chain name, chain id, or domain id
|
|
33
33
|
* @throws if chain's metadata has not been set
|
|
34
34
|
*/
|
|
35
|
-
getChainMetadata(chainNameOrId:
|
|
35
|
+
getChainMetadata(chainNameOrId: ChainNameOrId): ChainMetadata<MetaExt>;
|
|
36
|
+
/**
|
|
37
|
+
* Returns true if the given chain name, chain id, or domain id is
|
|
38
|
+
* include in this manager's metadata, false otherwise
|
|
39
|
+
*/
|
|
40
|
+
hasChain(chainNameOrId: ChainNameOrId): boolean;
|
|
36
41
|
/**
|
|
37
42
|
* Get the name for a given chain name, chain id, or domain id
|
|
38
43
|
*/
|
|
39
|
-
tryGetChainName(chainNameOrId:
|
|
44
|
+
tryGetChainName(chainNameOrId: ChainNameOrId): string | null;
|
|
40
45
|
/**
|
|
41
46
|
* Get the name for a given chain name, chain id, or domain id
|
|
42
47
|
* @throws if chain's metadata has not been set
|
|
43
48
|
*/
|
|
44
|
-
getChainName(chainNameOrId:
|
|
49
|
+
getChainName(chainNameOrId: ChainNameOrId): string;
|
|
45
50
|
/**
|
|
46
51
|
* Get the names for all chains known to this MultiProvider
|
|
47
52
|
*/
|
|
@@ -49,12 +54,12 @@ export declare class ChainMetadataManager<MetaExt = {}> {
|
|
|
49
54
|
/**
|
|
50
55
|
* Get the id for a given chain name, chain id, or domain id
|
|
51
56
|
*/
|
|
52
|
-
tryGetChainId(chainNameOrId:
|
|
57
|
+
tryGetChainId(chainNameOrId: ChainNameOrId): number | string | null;
|
|
53
58
|
/**
|
|
54
59
|
* Get the id for a given chain name, chain id, or domain id
|
|
55
60
|
* @throws if chain's metadata has not been set
|
|
56
61
|
*/
|
|
57
|
-
getChainId(chainNameOrId:
|
|
62
|
+
getChainId(chainNameOrId: ChainNameOrId): number | string;
|
|
58
63
|
/**
|
|
59
64
|
* Get the ids for all chains known to this MultiProvider
|
|
60
65
|
*/
|
|
@@ -62,21 +67,21 @@ export declare class ChainMetadataManager<MetaExt = {}> {
|
|
|
62
67
|
/**
|
|
63
68
|
* Get the domain id for a given chain name, chain id, or domain id
|
|
64
69
|
*/
|
|
65
|
-
tryGetDomainId(chainNameOrId:
|
|
70
|
+
tryGetDomainId(chainNameOrId: ChainNameOrId): number | null;
|
|
66
71
|
/**
|
|
67
72
|
* Get the domain id for a given chain name, chain id, or domain id
|
|
68
73
|
* @throws if chain's metadata has not been set
|
|
69
74
|
*/
|
|
70
|
-
getDomainId(chainNameOrId:
|
|
75
|
+
getDomainId(chainNameOrId: ChainNameOrId): number;
|
|
71
76
|
/**
|
|
72
77
|
* Get the protocol type for a given chain name, chain id, or domain id
|
|
73
78
|
*/
|
|
74
|
-
tryGetProtocol(chainNameOrId:
|
|
79
|
+
tryGetProtocol(chainNameOrId: ChainNameOrId): ProtocolType | null;
|
|
75
80
|
/**
|
|
76
81
|
* Get the protocol type for a given chain name, chain id, or domain id
|
|
77
82
|
* @throws if chain's metadata or protocol has not been set
|
|
78
83
|
*/
|
|
79
|
-
getProtocol(chainNameOrId:
|
|
84
|
+
getProtocol(chainNameOrId: ChainNameOrId): ProtocolType;
|
|
80
85
|
/**
|
|
81
86
|
* Get the domain ids for a list of chain names, chain ids, or domain ids
|
|
82
87
|
* @throws if any chain's metadata has not been set
|
|
@@ -98,47 +103,64 @@ export declare class ChainMetadataManager<MetaExt = {}> {
|
|
|
98
103
|
* Get an RPC URL for a given chain name, chain id, or domain id
|
|
99
104
|
* @throws if chain's metadata has not been set
|
|
100
105
|
*/
|
|
101
|
-
getRpcUrl(chainNameOrId:
|
|
106
|
+
getRpcUrl(chainNameOrId: ChainNameOrId): string;
|
|
102
107
|
/**
|
|
103
108
|
* Get a block explorer URL for a given chain name, chain id, or domain id
|
|
104
109
|
*/
|
|
105
|
-
tryGetExplorerUrl(chainNameOrId:
|
|
110
|
+
tryGetExplorerUrl(chainNameOrId: ChainNameOrId): string | null;
|
|
106
111
|
/**
|
|
107
112
|
* Get a block explorer URL for a given chain name, chain id, or domain id
|
|
108
113
|
* @throws if chain's metadata or block explorer data has no been set
|
|
109
114
|
*/
|
|
110
|
-
getExplorerUrl(chainNameOrId:
|
|
115
|
+
getExplorerUrl(chainNameOrId: ChainNameOrId): string;
|
|
116
|
+
/**
|
|
117
|
+
* Get a block explorer's API for a given chain name, chain id, or domain id
|
|
118
|
+
*/
|
|
119
|
+
tryGetExplorerApi(chainNameOrId: ChainName | number): {
|
|
120
|
+
apiUrl: string;
|
|
121
|
+
apiKey?: string;
|
|
122
|
+
family?: ExplorerFamily;
|
|
123
|
+
} | null;
|
|
124
|
+
/**
|
|
125
|
+
* Get a block explorer API for a given chain name, chain id, or domain id
|
|
126
|
+
* @throws if chain's metadata or block explorer data has no been set
|
|
127
|
+
*/
|
|
128
|
+
getExplorerApi(chainNameOrId: ChainName | number): {
|
|
129
|
+
apiUrl: string;
|
|
130
|
+
apiKey?: string;
|
|
131
|
+
family?: ExplorerFamily;
|
|
132
|
+
};
|
|
111
133
|
/**
|
|
112
134
|
* Get a block explorer's API URL for a given chain name, chain id, or domain id
|
|
113
135
|
*/
|
|
114
|
-
tryGetExplorerApiUrl(chainNameOrId:
|
|
136
|
+
tryGetExplorerApiUrl(chainNameOrId: ChainNameOrId): string | null;
|
|
115
137
|
/**
|
|
116
138
|
* Get a block explorer API URL for a given chain name, chain id, or domain id
|
|
117
139
|
* @throws if chain's metadata or block explorer data has no been set
|
|
118
140
|
*/
|
|
119
|
-
getExplorerApiUrl(chainNameOrId:
|
|
141
|
+
getExplorerApiUrl(chainNameOrId: ChainNameOrId): string;
|
|
120
142
|
/**
|
|
121
143
|
* Get a block explorer URL for given chain's tx
|
|
122
144
|
*/
|
|
123
|
-
tryGetExplorerTxUrl(chainNameOrId:
|
|
145
|
+
tryGetExplorerTxUrl(chainNameOrId: ChainNameOrId, response: {
|
|
124
146
|
hash: string;
|
|
125
147
|
}): string | null;
|
|
126
148
|
/**
|
|
127
149
|
* Get a block explorer URL for given chain's tx
|
|
128
150
|
* @throws if chain's metadata or block explorer data has no been set
|
|
129
151
|
*/
|
|
130
|
-
getExplorerTxUrl(chainNameOrId:
|
|
152
|
+
getExplorerTxUrl(chainNameOrId: ChainNameOrId, response: {
|
|
131
153
|
hash: string;
|
|
132
154
|
}): string;
|
|
133
155
|
/**
|
|
134
156
|
* Get a block explorer URL for given chain's address
|
|
135
157
|
*/
|
|
136
|
-
tryGetExplorerAddressUrl(chainNameOrId:
|
|
158
|
+
tryGetExplorerAddressUrl(chainNameOrId: ChainNameOrId, address?: string): Promise<string | null>;
|
|
137
159
|
/**
|
|
138
160
|
* Get a block explorer URL for given chain's address
|
|
139
161
|
* @throws if address or the chain's block explorer data has no been set
|
|
140
162
|
*/
|
|
141
|
-
getExplorerAddressUrl(chainNameOrId:
|
|
163
|
+
getExplorerAddressUrl(chainNameOrId: ChainNameOrId, address?: string): Promise<string>;
|
|
142
164
|
/**
|
|
143
165
|
* Creates a new ChainMetadataManager with the extended metadata
|
|
144
166
|
* @param additionalMetadata extra fields to add to the metadata for each chain
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChainMetadataManager.d.ts","sourceRoot":"","sources":["../../src/metadata/ChainMetadataManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAS,MAAM,OAAO,CAAC;AAExC,OAAO,EAAE,YAAY,EAAiB,MAAM,sBAAsB,CAAC;AAGnE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"ChainMetadataManager.d.ts","sourceRoot":"","sources":["../../src/metadata/ChainMetadataManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -72,6 +72,13 @@ class ChainMetadataManager {
|
|
|
72
72
|
}
|
|
73
73
|
return chainMetadata;
|
|
74
74
|
}
|
|
75
|
+
/**
|
|
76
|
+
* Returns true if the given chain name, chain id, or domain id is
|
|
77
|
+
* include in this manager's metadata, false otherwise
|
|
78
|
+
*/
|
|
79
|
+
hasChain(chainNameOrId) {
|
|
80
|
+
return !!this.tryGetChainMetadata(chainNameOrId);
|
|
81
|
+
}
|
|
75
82
|
/**
|
|
76
83
|
* Get the name for a given chain name, chain id, or domain id
|
|
77
84
|
*/
|
|
@@ -200,6 +207,25 @@ class ChainMetadataManager {
|
|
|
200
207
|
throw new Error(`No explorer url set for ${chainNameOrId}`);
|
|
201
208
|
return url;
|
|
202
209
|
}
|
|
210
|
+
/**
|
|
211
|
+
* Get a block explorer's API for a given chain name, chain id, or domain id
|
|
212
|
+
*/
|
|
213
|
+
tryGetExplorerApi(chainNameOrId) {
|
|
214
|
+
const metadata = this.tryGetChainMetadata(chainNameOrId);
|
|
215
|
+
if (!metadata)
|
|
216
|
+
return null;
|
|
217
|
+
return (0, blockExplorer_1.getExplorerApi)(metadata);
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Get a block explorer API for a given chain name, chain id, or domain id
|
|
221
|
+
* @throws if chain's metadata or block explorer data has no been set
|
|
222
|
+
*/
|
|
223
|
+
getExplorerApi(chainNameOrId) {
|
|
224
|
+
const explorerApi = this.tryGetExplorerApi(chainNameOrId);
|
|
225
|
+
if (!explorerApi)
|
|
226
|
+
throw new Error(`No supported explorer api set for ${chainNameOrId}`);
|
|
227
|
+
return explorerApi;
|
|
228
|
+
}
|
|
203
229
|
/**
|
|
204
230
|
* Get a block explorer's API URL for a given chain name, chain id, or domain id
|
|
205
231
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChainMetadataManager.js","sourceRoot":"","sources":["../../src/metadata/ChainMetadataManager.ts"],"names":[],"mappings":";;;AAAA,iCAAwC;AAExC,gDAAmE;AAEnE,2DAAgF;AAGhF,
|
|
1
|
+
{"version":3,"file":"ChainMetadataManager.js","sourceRoot":"","sources":["../../src/metadata/ChainMetadataManager.ts"],"names":[],"mappings":"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"}
|