@hyperlane-xyz/cli 3.1.9 → 3.2.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/cli.js +2 -2
- package/dist/cli.js.map +1 -1
- package/dist/logger.d.ts +1 -0
- package/dist/logger.d.ts.map +1 -1
- package/dist/logger.js +1 -0
- package/dist/logger.js.map +1 -1
- package/dist/src/commands/chains.js.map +1 -1
- package/dist/src/commands/config.d.ts.map +1 -1
- package/dist/src/commands/config.js +40 -10
- package/dist/src/commands/config.js.map +1 -1
- package/dist/src/commands/deploy.js +1 -1
- package/dist/src/commands/deploy.js.map +1 -1
- package/dist/src/config/artifacts.js.map +1 -1
- package/dist/src/config/chain.d.ts.map +1 -1
- package/dist/src/config/chain.js +13 -9
- package/dist/src/config/chain.js.map +1 -1
- package/dist/src/config/chain.test.d.ts +2 -0
- package/dist/src/config/chain.test.d.ts.map +1 -0
- package/dist/src/config/chain.test.js +13 -0
- package/dist/src/config/chain.test.js.map +1 -0
- package/dist/src/config/hooks.js +2 -2
- package/dist/src/config/hooks.js.map +1 -1
- package/dist/src/config/ism.d.ts +57 -0
- package/dist/src/config/ism.d.ts.map +1 -0
- package/dist/src/config/ism.js +201 -0
- package/dist/src/config/ism.js.map +1 -0
- package/dist/src/config/multisig.d.ts +1 -10
- package/dist/src/config/multisig.d.ts.map +1 -1
- package/dist/src/config/multisig.js +19 -21
- package/dist/src/config/multisig.js.map +1 -1
- package/dist/src/config/warp.js +1 -1
- package/dist/src/config/warp.js.map +1 -1
- package/dist/src/context.d.ts +16 -0
- package/dist/src/context.d.ts.map +1 -1
- package/dist/src/deploy/TestRecipientDeployer.js.map +1 -1
- package/dist/src/deploy/agent.js.map +1 -1
- package/dist/src/deploy/core.d.ts.map +1 -1
- package/dist/src/deploy/core.js +64 -26
- package/dist/src/deploy/core.js.map +1 -1
- package/dist/src/deploy/utils.d.ts +3 -1
- package/dist/src/deploy/utils.d.ts.map +1 -1
- package/dist/src/deploy/utils.js +9 -0
- package/dist/src/deploy/utils.js.map +1 -1
- package/dist/src/deploy/warp.d.ts.map +1 -1
- package/dist/src/deploy/warp.js +12 -10
- package/dist/src/deploy/warp.js.map +1 -1
- package/dist/src/send/message.js.map +1 -1
- package/dist/src/send/transfer.js.map +1 -1
- package/dist/src/status/message.js.map +1 -1
- package/dist/src/tests/ism.test.d.ts +2 -0
- package/dist/src/tests/ism.test.d.ts.map +1 -0
- package/dist/src/tests/ism.test.js +76 -0
- package/dist/src/tests/ism.test.js.map +1 -0
- package/dist/src/tests/multisig.test.d.ts +2 -0
- package/dist/src/tests/multisig.test.d.ts.map +1 -0
- package/dist/src/tests/multisig.test.js +34 -0
- package/dist/src/tests/multisig.test.js.map +1 -0
- package/dist/src/utils/balances.js.map +1 -1
- package/dist/src/utils/chains.d.ts +2 -2
- package/dist/src/utils/chains.d.ts.map +1 -1
- package/dist/src/utils/chains.js +20 -14
- package/dist/src/utils/chains.js.map +1 -1
- package/dist/src/utils/files.d.ts +1 -0
- package/dist/src/utils/files.d.ts.map +1 -1
- package/dist/src/utils/files.js +16 -5
- package/dist/src/utils/files.js.map +1 -1
- package/dist/src/utils/time.d.ts.map +1 -1
- package/dist/src/utils/time.js +8 -1
- package/dist/src/utils/time.js.map +1 -1
- package/dist/src/utils/time.test.d.ts +2 -0
- package/dist/src/utils/time.test.d.ts.map +1 -0
- package/dist/src/utils/time.test.js +9 -0
- package/dist/src/utils/time.test.js.map +1 -0
- package/dist/src/version.d.ts +2 -0
- package/dist/src/version.d.ts.map +1 -0
- package/dist/src/version.js +2 -0
- package/dist/src/version.js.map +1 -0
- package/examples/chain-config.yaml +6 -0
- package/examples/ism-advanced.yaml +33 -0
- package/examples/{multisig-ism.yaml → ism.yaml} +0 -8
- package/package.json +14 -7
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
import { confirm, input, select } from '@inquirer/prompts';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { IsmType } from '@hyperlane-xyz/sdk';
|
|
4
|
+
import { errorRed, log, logBlue, logGreen } from '../../logger.js';
|
|
5
|
+
import { runMultiChainSelectionStep } from '../utils/chains.js';
|
|
6
|
+
import { mergeYamlOrJson, readYamlOrJson } from '../utils/files.js';
|
|
7
|
+
import { readChainConfigsIfExists } from './chain.js';
|
|
8
|
+
const MultisigIsmConfigSchema = z.object({
|
|
9
|
+
type: z.union([
|
|
10
|
+
z.literal(IsmType.MERKLE_ROOT_MULTISIG),
|
|
11
|
+
z.literal(IsmType.MESSAGE_ID_MULTISIG),
|
|
12
|
+
]),
|
|
13
|
+
threshold: z.number(),
|
|
14
|
+
validators: z.array(z.string()),
|
|
15
|
+
});
|
|
16
|
+
const RoutingIsmConfigSchema = z.lazy(() => z.object({
|
|
17
|
+
type: z.literal(IsmType.ROUTING),
|
|
18
|
+
owner: z.string(),
|
|
19
|
+
domains: z.record(IsmConfigSchema),
|
|
20
|
+
}));
|
|
21
|
+
const AggregationIsmConfigSchema = z
|
|
22
|
+
.lazy(() => z.object({
|
|
23
|
+
type: z.literal(IsmType.AGGREGATION),
|
|
24
|
+
modules: z.array(IsmConfigSchema),
|
|
25
|
+
threshold: z.number(),
|
|
26
|
+
}))
|
|
27
|
+
.refine(
|
|
28
|
+
// check ig modules.length >= threshold
|
|
29
|
+
(ismConfig) => {
|
|
30
|
+
return ismConfig.modules.length >= ismConfig.threshold;
|
|
31
|
+
}, {
|
|
32
|
+
message: 'Threshold cannot be greater than number of modules',
|
|
33
|
+
});
|
|
34
|
+
const TestIsmConfigSchema = z.object({
|
|
35
|
+
type: z.literal(IsmType.TEST_ISM),
|
|
36
|
+
});
|
|
37
|
+
const IsmConfigSchema = z.union([
|
|
38
|
+
MultisigIsmConfigSchema,
|
|
39
|
+
RoutingIsmConfigSchema,
|
|
40
|
+
AggregationIsmConfigSchema,
|
|
41
|
+
TestIsmConfigSchema,
|
|
42
|
+
]);
|
|
43
|
+
const IsmConfigMapSchema = z.record(IsmConfigSchema).refine((ismConfigMap) => {
|
|
44
|
+
// check if any key in IsmConfigMap is found in its own RoutingIsmConfigSchema.domains
|
|
45
|
+
for (const [key, config] of Object.entries(ismConfigMap)) {
|
|
46
|
+
if (config.type === IsmType.ROUTING) {
|
|
47
|
+
if (config.domains && key in config.domains) {
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
return true;
|
|
53
|
+
}, {
|
|
54
|
+
message: 'Cannot set RoutingIsm.domain to the same chain you are configuring',
|
|
55
|
+
});
|
|
56
|
+
export function parseIsmConfig(filePath) {
|
|
57
|
+
const config = readYamlOrJson(filePath);
|
|
58
|
+
if (!config)
|
|
59
|
+
throw new Error(`No ISM config found at ${filePath}`);
|
|
60
|
+
return IsmConfigMapSchema.safeParse(config);
|
|
61
|
+
}
|
|
62
|
+
export function readIsmConfig(filePath) {
|
|
63
|
+
const result = parseIsmConfig(filePath);
|
|
64
|
+
if (!result.success) {
|
|
65
|
+
const firstIssue = result.error.issues[0];
|
|
66
|
+
throw new Error(`Invalid ISM config: ${firstIssue.path} => ${firstIssue.message}`);
|
|
67
|
+
}
|
|
68
|
+
const parsedConfig = result.data;
|
|
69
|
+
return parsedConfig;
|
|
70
|
+
}
|
|
71
|
+
export function isValildIsmConfig(config) {
|
|
72
|
+
return IsmConfigMapSchema.safeParse(config).success;
|
|
73
|
+
}
|
|
74
|
+
export async function createIsmConfigMap({ format, outPath, chainConfigPath, }) {
|
|
75
|
+
logBlue('Creating a new ISM config');
|
|
76
|
+
const customChains = readChainConfigsIfExists(chainConfigPath);
|
|
77
|
+
const chains = await runMultiChainSelectionStep(customChains);
|
|
78
|
+
const result = {};
|
|
79
|
+
for (const chain of chains) {
|
|
80
|
+
log(`Setting values for chain ${chain}`);
|
|
81
|
+
result[chain] = await createIsmConfig(chain, chainConfigPath);
|
|
82
|
+
// TODO consider re-enabling. Disabling based on feedback from @nambrot for now.
|
|
83
|
+
// repeat = await confirm({
|
|
84
|
+
// message: 'Use this same config for remaining chains?',
|
|
85
|
+
// });
|
|
86
|
+
}
|
|
87
|
+
if (isValildIsmConfig(result)) {
|
|
88
|
+
logGreen(`ISM config is valid, writing to file ${outPath}`);
|
|
89
|
+
mergeYamlOrJson(outPath, result, format);
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
errorRed(`ISM config is invalid, please see https://github.com/hyperlane-xyz/hyperlane-monorepo/blob/main/typescript/cli/examples/ism.yaml for an example`);
|
|
93
|
+
throw new Error('Invalid ISM config');
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
export async function createIsmConfig(chain, chainConfigPath) {
|
|
97
|
+
let lastConfig;
|
|
98
|
+
const moduleType = await select({
|
|
99
|
+
message: 'Select ISM type',
|
|
100
|
+
choices: [
|
|
101
|
+
{
|
|
102
|
+
value: IsmType.MESSAGE_ID_MULTISIG,
|
|
103
|
+
name: IsmType.MESSAGE_ID_MULTISIG,
|
|
104
|
+
description: 'Validators need to sign just this messageId',
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
value: IsmType.MERKLE_ROOT_MULTISIG,
|
|
108
|
+
name: IsmType.MERKLE_ROOT_MULTISIG,
|
|
109
|
+
description: 'Validators need to sign the root of the merkle tree of all messages from origin chain',
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
value: IsmType.ROUTING,
|
|
113
|
+
name: IsmType.ROUTING,
|
|
114
|
+
description: 'Each origin chain can be verified by the specified ISM type via RoutingISM',
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
value: IsmType.AGGREGATION,
|
|
118
|
+
name: IsmType.AGGREGATION,
|
|
119
|
+
description: 'You can aggregate multiple ISMs into one ISM via AggregationISM',
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
value: IsmType.TEST_ISM,
|
|
123
|
+
name: IsmType.TEST_ISM,
|
|
124
|
+
description: 'ISM where you can deliver messages without any validation (WARNING: only for testing, do not use in production)',
|
|
125
|
+
},
|
|
126
|
+
],
|
|
127
|
+
pageSize: 10,
|
|
128
|
+
});
|
|
129
|
+
if (moduleType === IsmType.MESSAGE_ID_MULTISIG ||
|
|
130
|
+
moduleType === IsmType.MERKLE_ROOT_MULTISIG) {
|
|
131
|
+
lastConfig = await createMultisigConfig(moduleType);
|
|
132
|
+
}
|
|
133
|
+
else if (moduleType === IsmType.ROUTING) {
|
|
134
|
+
lastConfig = await createRoutingConfig(chain, chainConfigPath);
|
|
135
|
+
}
|
|
136
|
+
else if (moduleType === IsmType.AGGREGATION) {
|
|
137
|
+
lastConfig = await createAggregationConfig(chain, chainConfigPath);
|
|
138
|
+
}
|
|
139
|
+
else if (moduleType === IsmType.TEST_ISM) {
|
|
140
|
+
lastConfig = { type: IsmType.TEST_ISM };
|
|
141
|
+
}
|
|
142
|
+
else {
|
|
143
|
+
throw new Error(`Invalid ISM type: ${moduleType}}`);
|
|
144
|
+
}
|
|
145
|
+
return lastConfig;
|
|
146
|
+
}
|
|
147
|
+
export async function createMultisigConfig(type) {
|
|
148
|
+
const thresholdInput = await input({
|
|
149
|
+
message: 'Enter threshold of signers (number)',
|
|
150
|
+
});
|
|
151
|
+
const threshold = parseInt(thresholdInput, 10);
|
|
152
|
+
const validatorsInput = await input({
|
|
153
|
+
message: 'Enter validator addresses (comma separated list)',
|
|
154
|
+
});
|
|
155
|
+
const validators = validatorsInput.split(',').map((v) => v.trim());
|
|
156
|
+
return {
|
|
157
|
+
type,
|
|
158
|
+
threshold,
|
|
159
|
+
validators,
|
|
160
|
+
};
|
|
161
|
+
}
|
|
162
|
+
export async function createAggregationConfig(chain, chainConfigPath) {
|
|
163
|
+
const isms = parseInt(await input({
|
|
164
|
+
message: 'Enter the number of ISMs to aggregate (number)',
|
|
165
|
+
}), 10);
|
|
166
|
+
const threshold = parseInt(await input({
|
|
167
|
+
message: 'Enter the threshold of ISMs to for verification (number)',
|
|
168
|
+
}), 10);
|
|
169
|
+
const modules = [];
|
|
170
|
+
for (let i = 0; i < isms; i++) {
|
|
171
|
+
modules.push(await createIsmConfig(chain, chainConfigPath));
|
|
172
|
+
}
|
|
173
|
+
return {
|
|
174
|
+
type: IsmType.AGGREGATION,
|
|
175
|
+
modules,
|
|
176
|
+
threshold,
|
|
177
|
+
};
|
|
178
|
+
}
|
|
179
|
+
export async function createRoutingConfig(chain, chainConfigPath) {
|
|
180
|
+
const owner = await input({
|
|
181
|
+
message: 'Enter owner address',
|
|
182
|
+
});
|
|
183
|
+
const ownerAddress = owner;
|
|
184
|
+
const customChains = readChainConfigsIfExists(chainConfigPath);
|
|
185
|
+
delete customChains[chain];
|
|
186
|
+
const chains = await runMultiChainSelectionStep(customChains, `Select origin chains to be verified on ${chain}`, [chain]);
|
|
187
|
+
const domainsMap = {};
|
|
188
|
+
for (const chain of chains) {
|
|
189
|
+
await confirm({
|
|
190
|
+
message: `You are about to configure ISM from source chain ${chain}. Continue?`,
|
|
191
|
+
});
|
|
192
|
+
const config = await createIsmConfig(chain, chainConfigPath);
|
|
193
|
+
domainsMap[chain] = config;
|
|
194
|
+
}
|
|
195
|
+
return {
|
|
196
|
+
type: IsmType.ROUTING,
|
|
197
|
+
owner: ownerAddress,
|
|
198
|
+
domains: domainsMap,
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
//# sourceMappingURL=ism.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ism.js","sourceRoot":"","sources":["../../../src/config/ism.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,40 +1,31 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import { ChainMap,
|
|
2
|
+
import { ChainMap, MultisigConfig } from '@hyperlane-xyz/sdk';
|
|
3
3
|
import { FileFormat } from '../utils/files.js';
|
|
4
4
|
declare const MultisigConfigMapSchema: z.ZodObject<{}, "strip", z.ZodObject<{
|
|
5
|
-
type: z.ZodNativeEnum<typeof IsmType>;
|
|
6
5
|
threshold: z.ZodNumber;
|
|
7
6
|
validators: z.ZodArray<z.ZodString, "many">;
|
|
8
7
|
}, "strip", z.ZodTypeAny, {
|
|
9
|
-
type: IsmType;
|
|
10
8
|
threshold: number;
|
|
11
9
|
validators: string[];
|
|
12
10
|
}, {
|
|
13
|
-
type: IsmType;
|
|
14
11
|
threshold: number;
|
|
15
12
|
validators: string[];
|
|
16
13
|
}>, z.objectOutputType<{}, z.ZodObject<{
|
|
17
|
-
type: z.ZodNativeEnum<typeof IsmType>;
|
|
18
14
|
threshold: z.ZodNumber;
|
|
19
15
|
validators: z.ZodArray<z.ZodString, "many">;
|
|
20
16
|
}, "strip", z.ZodTypeAny, {
|
|
21
|
-
type: IsmType;
|
|
22
17
|
threshold: number;
|
|
23
18
|
validators: string[];
|
|
24
19
|
}, {
|
|
25
|
-
type: IsmType;
|
|
26
20
|
threshold: number;
|
|
27
21
|
validators: string[];
|
|
28
22
|
}>, "strip">, z.objectInputType<{}, z.ZodObject<{
|
|
29
|
-
type: z.ZodNativeEnum<typeof IsmType>;
|
|
30
23
|
threshold: z.ZodNumber;
|
|
31
24
|
validators: z.ZodArray<z.ZodString, "many">;
|
|
32
25
|
}, "strip", z.ZodTypeAny, {
|
|
33
|
-
type: IsmType;
|
|
34
26
|
threshold: number;
|
|
35
27
|
validators: string[];
|
|
36
28
|
}, {
|
|
37
|
-
type: IsmType;
|
|
38
29
|
threshold: number;
|
|
39
30
|
validators: string[];
|
|
40
31
|
}>, "strip">>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multisig.d.ts","sourceRoot":"","sources":["../../../src/config/multisig.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"multisig.d.ts","sourceRoot":"","sources":["../../../src/config/multisig.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAU9D,OAAO,EAAE,UAAU,EAAmC,MAAM,mBAAmB,CAAC;AAIhF,QAAA,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;aAK5B,CAAC;AACF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,4BAiClD;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,GAAG,WAEhD;AAED,wBAAsB,oBAAoB,CAAC,EACzC,MAAM,EACN,OAAO,EACP,eAAe,GAChB,EAAE;IACD,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;CACzB,iBA6CA"}
|
|
@@ -1,13 +1,11 @@
|
|
|
1
|
-
import { input
|
|
1
|
+
import { input } from '@inquirer/prompts';
|
|
2
2
|
import { z } from 'zod';
|
|
3
|
-
import {
|
|
4
|
-
import { objMap } from '@hyperlane-xyz/utils';
|
|
3
|
+
import { isValidAddress, normalizeAddressEvm, objMap, } from '@hyperlane-xyz/utils';
|
|
5
4
|
import { errorRed, log, logBlue, logGreen } from '../../logger.js';
|
|
6
5
|
import { runMultiChainSelectionStep } from '../utils/chains.js';
|
|
7
6
|
import { mergeYamlOrJson, readYamlOrJson } from '../utils/files.js';
|
|
8
7
|
import { readChainConfigsIfExists } from './chain.js';
|
|
9
8
|
const MultisigConfigMapSchema = z.object({}).catchall(z.object({
|
|
10
|
-
type: z.nativeEnum(IsmType),
|
|
11
9
|
threshold: z.number(),
|
|
12
10
|
validators: z.array(z.string()),
|
|
13
11
|
}));
|
|
@@ -21,11 +19,23 @@ export function readMultisigConfig(filePath) {
|
|
|
21
19
|
throw new Error(`Invalid multisig config: ${firstIssue.path} => ${firstIssue.message}`);
|
|
22
20
|
}
|
|
23
21
|
const parsedConfig = result.data;
|
|
24
|
-
const formattedConfig = objMap(parsedConfig, (_, config) =>
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
22
|
+
const formattedConfig = objMap(parsedConfig, (_, config) => {
|
|
23
|
+
if (config.threshold > config.validators.length)
|
|
24
|
+
throw new Error('Threshold cannot be greater than number of validators');
|
|
25
|
+
if (config.threshold < 1)
|
|
26
|
+
throw new Error('Threshold must be greater than 0');
|
|
27
|
+
const validators = [];
|
|
28
|
+
for (const v of config.validators) {
|
|
29
|
+
if (isValidAddress(v))
|
|
30
|
+
validators.push(normalizeAddressEvm(v));
|
|
31
|
+
else
|
|
32
|
+
throw new Error(`Invalid address ${v}`);
|
|
33
|
+
}
|
|
34
|
+
return {
|
|
35
|
+
threshold: config.threshold,
|
|
36
|
+
validators: validators,
|
|
37
|
+
};
|
|
38
|
+
});
|
|
29
39
|
logGreen(`All multisig configs in ${filePath} are valid`);
|
|
30
40
|
return formattedConfig;
|
|
31
41
|
}
|
|
@@ -45,17 +55,6 @@ export async function createMultisigConfig({ format, outPath, chainConfigPath, }
|
|
|
45
55
|
result[chain] = lastConfig;
|
|
46
56
|
continue;
|
|
47
57
|
}
|
|
48
|
-
// TODO consider using default and not offering options here
|
|
49
|
-
const moduleType = await select({
|
|
50
|
-
message: 'Select multisig type',
|
|
51
|
-
choices: [
|
|
52
|
-
// { value: 'routing, name: 'routing' }, // TODO add support
|
|
53
|
-
// { value: 'aggregation, name: 'aggregation' }, // TODO add support
|
|
54
|
-
{ value: IsmType.MERKLE_ROOT_MULTISIG, name: 'merkle root multisig' },
|
|
55
|
-
{ value: IsmType.MESSAGE_ID_MULTISIG, name: 'message id multisig' },
|
|
56
|
-
],
|
|
57
|
-
pageSize: 5,
|
|
58
|
-
});
|
|
59
58
|
const thresholdInput = await input({
|
|
60
59
|
message: 'Enter threshold of signers (number)',
|
|
61
60
|
});
|
|
@@ -65,7 +64,6 @@ export async function createMultisigConfig({ format, outPath, chainConfigPath, }
|
|
|
65
64
|
});
|
|
66
65
|
const validators = validatorsInput.split(',').map((v) => v.trim());
|
|
67
66
|
lastConfig = {
|
|
68
|
-
type: moduleType,
|
|
69
67
|
threshold,
|
|
70
68
|
validators,
|
|
71
69
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multisig.js","sourceRoot":"","sources":["../../../src/config/multisig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"multisig.js","sourceRoot":"","sources":["../../../src/config/multisig.ts"],"names":[],"mappings":"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"}
|
package/dist/src/config/warp.js
CHANGED
|
@@ -61,7 +61,7 @@ export async function createWarpConfig({ format, outPath, chainConfigPath, }) {
|
|
|
61
61
|
const isNft = isNative
|
|
62
62
|
? false
|
|
63
63
|
: await confirm({ message: 'Is this an NFT (i.e. ERC-721)?' });
|
|
64
|
-
const syntheticChains = await runMultiChainSelectionStep(customChains, 'Select
|
|
64
|
+
const syntheticChains = await runMultiChainSelectionStep(customChains, 'Select chains to which the base token will be connected');
|
|
65
65
|
// TODO add more prompts here to support customizing the token metadata
|
|
66
66
|
const result = {
|
|
67
67
|
base: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"warp.js","sourceRoot":"","sources":["../../../src/config/warp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC9D,OAAO,EACL,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAc,cAAc,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEhF,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAEtD,MAAM,sBAAsB,GAAG;IAC7B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,sBAAsB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7C,wBAAwB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC/C,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACzC,CAAC;AAEF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;QACb,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACrE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;QACrB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC9B,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;QAC7B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC3B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7B,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC/B,GAAG,sBAAsB;KAC1B,CAAC;IACF,UAAU,EAAE,CAAC;SACV,KAAK,CACJ,CAAC,CAAC,MAAM,CAAC;QACP,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;QACrB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC3B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAClC,GAAG,sBAAsB;KAC1B,CAAC,CACH;SACA,QAAQ,EAAE;CACd,CAAC,CAAC;AASH,MAAM,UAAU,mBAAmB,CAAC,QAAgB;IAClD,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IACxC,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,QAAQ,EAAE,CAAC,CAAC;IACpE,MAAM,MAAM,GAAG,qBAAqB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACvD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE;
|
|
1
|
+
{"version":3,"file":"warp.js","sourceRoot":"","sources":["../../../src/config/warp.ts"],"names":[],"mappings":"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"}
|
package/dist/src/context.d.ts
CHANGED
|
@@ -181,6 +181,22 @@ export declare const sdkContractAddressesMap: {
|
|
|
181
181
|
mailbox: string;
|
|
182
182
|
validatorAnnounce: string;
|
|
183
183
|
};
|
|
184
|
+
mantapacific: {
|
|
185
|
+
merkleRootMultisigIsmFactory: string;
|
|
186
|
+
messageIdMultisigIsmFactory: string;
|
|
187
|
+
aggregationIsmFactory: string;
|
|
188
|
+
aggregationHookFactory: string;
|
|
189
|
+
routingIsmFactory: string;
|
|
190
|
+
proxyAdmin: string;
|
|
191
|
+
mailbox: string;
|
|
192
|
+
domainRoutingIsm: string;
|
|
193
|
+
storageGasOracle: string;
|
|
194
|
+
interchainGasPaymaster: string;
|
|
195
|
+
merkleTreeHook: string;
|
|
196
|
+
aggregationHook: string;
|
|
197
|
+
protocolFee: string;
|
|
198
|
+
validatorAnnounce: string;
|
|
199
|
+
};
|
|
184
200
|
basegoerli: {
|
|
185
201
|
merkleRootMultisigIsmFactory: string;
|
|
186
202
|
messageIdMultisigIsmFactory: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EACL,QAAQ,EACR,aAAa,EACb,qBAAqB,EACrB,aAAa,EAGd,MAAM,oBAAoB,CAAC;AAM5B,eAAO,MAAM,uBAAuB
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EACL,QAAQ,EACR,aAAa,EACb,qBAAqB,EACrB,aAAa,EAGd,MAAM,oBAAoB,CAAC;AAM5B,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAGnC,CAAC;AAEF,wBAAgB,0BAA0B,CACxC,SAAS,CAAC,EAAE,qBAAqB,CAAC,GAAG,CAAC,8BAMvC;AAED,wBAAgB,UAAU,CAAC,eAAe,EAAE,MAAM;;;EAIjD;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM;;;;EAKxE;AAED,wBAAgB,gBAAgB,CAC9B,YAAY,EAAE,QAAQ,CAAC,aAAa,CAAC,EACrC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,yBAMvB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TestRecipientDeployer.js","sourceRoot":"","sources":["../../../src/deploy/TestRecipientDeployer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAiB,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAEL,iBAAiB,GAElB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAW,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAc1D,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,aAAa,EAAE,IAAI,sBAAsB,EAAE;CAC5C,CAAC;AAEF,gDAAgD;AAChD,MAAM,OAAO,qBAAsB,SAAQ,iBAG1C;IACC,YAAY,aAA4B;QACtC,KAAK,CAAC,aAAa,EAAE,sBAAsB,EAAE;YAC3C,MAAM,EAAE,KAAK,CAAC,iCAAiC,CAAC;SACjD,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,KAAgB,EAChB,MAA2B;QAE3B,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,eAAe,EAAE,EAAE,CAAC,CAAC;QAC5E,IAAI;
|
|
1
|
+
{"version":3,"file":"TestRecipientDeployer.js","sourceRoot":"","sources":["../../../src/deploy/TestRecipientDeployer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAiB,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAEL,iBAAiB,GAElB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAW,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAc1D,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,aAAa,EAAE,IAAI,sBAAsB,EAAE;CAC5C,CAAC;AAEF,gDAAgD;AAChD,MAAM,OAAO,qBAAsB,SAAQ,iBAG1C;IACC,YAAY,aAA4B;QACtC,KAAK,CAAC,aAAa,EAAE,sBAAsB,EAAE;YAC3C,MAAM,EAAE,KAAK,CAAC,iCAAiC,CAAC;SACjD,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,KAAgB,EAChB,MAA2B;QAE3B,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,eAAe,EAAE,EAAE,CAAC,CAAC;QAC5E,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,gBAAgB,KAAK,EAAE,CAAC,CAAC;YACrC,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,wBAAwB,EAAE,CAAC;YAC3D,IAAI,CAAC,MAAM,CAAC,oBAAoB,KAAK,KAAK,GAAG,EAAE,CAAC,CAAC;YACjD,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,wBAAwB,CAAC,EAAE,CAAC;gBACrD,IAAI,CAAC,MAAM,CACT,kDAAkD,MAAM,CAAC,wBAAwB,EAAE,CACpF,CAAC;gBACF,MAAM,EAAE,GAAG,aAAa,CAAC,2BAA2B,CAClD,MAAM,CAAC,wBAAwB,CAChC,CAAC;gBACF,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,kCAAkC,KAAK,KAAK,KAAK,EAAE,CAAC,CAAC;YACjE,IAAI,CAAC,MAAM,CAAC,mCAAmC,CAAC,CAAC;QACnD,CAAC;QACD,OAAO;YACL,aAAa;SACd,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../src/deploy/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,YAAY,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEnE,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,EAC3C,WAAW,EACX,sBAAsB,EACtB,WAAW,GAKZ;IACC,IAAI,CAAC,WAAW,EAAE;
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../src/deploy/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,YAAY,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEnE,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,EAC3C,WAAW,EACX,sBAAsB,EACtB,WAAW,GAKZ;IACC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,WAAW,GAAG,MAAM,KAAK,CAAC,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,WAAW,GAAG,MAAM,KAAK,CAAC;YACxB,OAAO,EAAE,yDAAyD;SACnE,CAAC,CAAC;QACH,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC5B,OAAO,CACL,IAAI,EACJ,mFAAmF,CACpF,CAAC;QACF,sBAAsB,GAAG,MAAM,oBAAoB,CACjD,aAAa,EACb,mBAAmB,EACnB,cAAc,CACf,CAAC;IACJ,CAAC;IACD,MAAM,iBAAiB,GAAG,QAAQ,CAAM,sBAAsB,CAAC,CAAC;IAEhE,MAAM,oBAAoB,GAAG;QAC3B,IAAI,EAAE,IAAI;QACV,iBAAiB,EAAE,WAAW;QAC9B,YAAY,EAAE,WAAW;QACzB,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC;KACrD,CAAC;IAEF,MAAM,qBAAqB,GAAG;QAC5B,eAAe,EAAE,IAAI;QACrB,IAAI,EAAE,oBAAoB;KAC3B,CAAC;IAEF,MAAM,0BAA0B,GAAG,YAAY,CAAC,qBAAqB,CAAC,CAAC;IACvE,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,0BAA0B,CAAC,CAAC;IAEzE,MAAM,iBAAiB,GAAG,YAAY,CACpC,8BAA8B,EAC9B,gBAAgB,CACjB,CAAC;IAEF,QAAQ,CACN,IAAI,EACJ,0EAA0E,EAC1E,IAAI,EACJ,GAAG,iBAAiB,EAAE,CACvB,CAAC;IACF,OAAO;AACT,CAAC;AAED,MAAM,mBAAmB,GAAG,CAAC,YAAoB,EAAE,EAAE,CACnD,qHAAqH,YAAY,EAAE,CAAC;AAEtI,MAAM,UAAU,GAAG,CAAC,CAAS,EAAE,EAAE,CAC/B,CAAC;KACE,KAAK,CAAC,EAAE,CAAC;KACT,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,GAAG,CAAC;KAC9B,IAAI,CAAC,EAAE,CAAC,CAAC;AAEd,SAAS,YAAY,CAAC,QAAa;IACjC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,6CAA6C,CAAC,CAAC;QACtD,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/deploy/core.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,SAAS,
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/deploy/core.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,SAAS,EAwBV,MAAM,oBAAoB,CAAC;AA4B5B,wBAAsB,aAAa,CAAC,EAClC,GAAG,EACH,eAAe,EACf,MAAM,EACN,aAAa,EACb,cAAc,EACd,aAAa,EACb,OAAO,EACP,gBAAgB,GACjB,EAAE;IACD,GAAG,EAAE,MAAM,CAAC;IACZ,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,OAAO,CAAC;CAC3B,iBA0CA"}
|
package/dist/src/deploy/core.js
CHANGED
|
@@ -1,24 +1,34 @@
|
|
|
1
1
|
import { confirm } from '@inquirer/prompts';
|
|
2
2
|
import { ethers } from 'ethers';
|
|
3
|
-
import { GasOracleContractType, HookType, HyperlaneCoreDeployer, HyperlaneIsmFactory, HyperlaneProxyFactoryDeployer, IsmType, agentStartBlocks, buildAgentConfig,
|
|
3
|
+
import { GasOracleContractType, HookType, HyperlaneCoreDeployer, HyperlaneIsmFactory, HyperlaneProxyFactoryDeployer, IsmType, agentStartBlocks, buildAgentConfig, buildAggregationIsmConfigs, defaultMultisigConfigs, multisigIsmVerificationCost, serializeContractsMap, } from '@hyperlane-xyz/sdk';
|
|
4
4
|
import { objFilter, objMerge } from '@hyperlane-xyz/utils';
|
|
5
5
|
import { log, logBlue, logGray, logGreen, logRed } from '../../logger.js';
|
|
6
6
|
import { readDeploymentArtifacts } from '../config/artifacts.js';
|
|
7
7
|
import { readHookConfig } from '../config/hooks.js';
|
|
8
|
+
import { readIsmConfig } from '../config/ism.js';
|
|
8
9
|
import { readMultisigConfig } from '../config/multisig.js';
|
|
9
10
|
import { MINIMUM_CORE_DEPLOY_GAS } from '../consts.js';
|
|
10
11
|
import { getContextWithSigner, getMergedContractAddresses, sdkContractAddressesMap, } from '../context.js';
|
|
11
12
|
import { runMultiChainSelectionStep } from '../utils/chains.js';
|
|
12
13
|
import { prepNewArtifactsFiles, runFileSelectionStep, writeJson, } from '../utils/files.js';
|
|
13
14
|
import { TestRecipientDeployer, } from './TestRecipientDeployer.js';
|
|
15
|
+
import { isISMConfig, isZODISMConfig } from './utils.js';
|
|
14
16
|
import { runPreflightChecksForChains } from './utils.js';
|
|
15
17
|
export async function runCoreDeploy({ key, chainConfigPath, chains, ismConfigPath, hookConfigPath, artifactsPath, outPath, skipConfirmation, }) {
|
|
16
18
|
const { customChains, multiProvider, signer } = getContextWithSigner(key, chainConfigPath);
|
|
17
19
|
if (!chains?.length) {
|
|
18
|
-
chains = await runMultiChainSelectionStep(customChains, 'Select chains to
|
|
20
|
+
chains = await runMultiChainSelectionStep(customChains, 'Select chains to connect');
|
|
19
21
|
}
|
|
20
22
|
const artifacts = await runArtifactStep(chains, artifactsPath);
|
|
21
|
-
const
|
|
23
|
+
const result = await runIsmStep(chains, ismConfigPath);
|
|
24
|
+
// we can either specify the full ISM config or just the multisig config
|
|
25
|
+
const isAdvancedIsm = isISMConfig(result);
|
|
26
|
+
const ismConfigs = isAdvancedIsm
|
|
27
|
+
? result
|
|
28
|
+
: undefined;
|
|
29
|
+
const multisigConfigs = isAdvancedIsm
|
|
30
|
+
? defaultMultisigConfigs
|
|
31
|
+
: result;
|
|
22
32
|
// TODO re-enable when hook config is actually used
|
|
23
33
|
await runHookStep(chains, hookConfigPath);
|
|
24
34
|
const deploymentParams = {
|
|
@@ -26,7 +36,8 @@ export async function runCoreDeploy({ key, chainConfigPath, chains, ismConfigPat
|
|
|
26
36
|
signer,
|
|
27
37
|
multiProvider,
|
|
28
38
|
artifacts,
|
|
29
|
-
|
|
39
|
+
ismConfigs,
|
|
40
|
+
multisigConfigs,
|
|
30
41
|
outPath,
|
|
31
42
|
skipConfirmation,
|
|
32
43
|
};
|
|
@@ -49,28 +60,47 @@ async function runArtifactStep(selectedChains, artifactsPath) {
|
|
|
49
60
|
}
|
|
50
61
|
const artifacts = readDeploymentArtifacts(artifactsPath);
|
|
51
62
|
const artifactChains = Object.keys(artifacts).filter((c) => selectedChains.includes(c));
|
|
52
|
-
|
|
63
|
+
if (artifactChains.length === 0) {
|
|
64
|
+
logGray('No artifacts found for selected chains');
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
log(`Found existing artifacts for chains: ${artifactChains.join(', ')}`);
|
|
68
|
+
}
|
|
53
69
|
return artifacts;
|
|
54
70
|
}
|
|
55
71
|
async function runIsmStep(selectedChains, ismConfigPath) {
|
|
56
72
|
if (!ismConfigPath) {
|
|
57
73
|
logBlue('\n', 'Hyperlane instances requires an Interchain Security Module (ISM).');
|
|
58
|
-
logGray('
|
|
74
|
+
logGray('Example config: https://github.com/hyperlane-xyz/hyperlane-monorepo/blob/main/cli/typescript/cli/examples/ism.yaml');
|
|
59
75
|
ismConfigPath = await runFileSelectionStep('./configs', 'ISM config', 'ism');
|
|
60
76
|
}
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
77
|
+
const isAdvancedIsm = isZODISMConfig(ismConfigPath);
|
|
78
|
+
// separate flow for 'ism' and 'ism-advanced' options
|
|
79
|
+
if (isAdvancedIsm) {
|
|
80
|
+
const ismConfig = readIsmConfig(ismConfigPath);
|
|
81
|
+
const requiredIsms = objFilter(ismConfig, (chain, config) => selectedChains.includes(chain));
|
|
82
|
+
// selected chains - (user configs + default configs) = missing config
|
|
83
|
+
const missingConfigs = selectedChains.filter((c) => !Object.keys(ismConfig).includes(c));
|
|
84
|
+
if (missingConfigs.length > 0) {
|
|
85
|
+
throw new Error(`Missing advanced ISM config for one or more chains: ${missingConfigs.join(', ')}`);
|
|
86
|
+
}
|
|
87
|
+
log(`Found configs for chains: ${selectedChains.join(', ')}`);
|
|
88
|
+
return requiredIsms;
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
const multisigConfigs = {
|
|
92
|
+
...defaultMultisigConfigs,
|
|
93
|
+
...readMultisigConfig(ismConfigPath),
|
|
94
|
+
};
|
|
95
|
+
const requiredMultisigs = objFilter(multisigConfigs, (chain, config) => selectedChains.includes(chain));
|
|
96
|
+
// selected chains - (user configs + default configs) = missing config
|
|
97
|
+
const missingConfigs = selectedChains.filter((c) => !Object.keys(requiredMultisigs).includes(c));
|
|
98
|
+
if (missingConfigs.length > 0) {
|
|
99
|
+
throw new Error(`Missing ISM config for one or more chains: ${missingConfigs.join(', ')}`);
|
|
100
|
+
}
|
|
101
|
+
log(`Found configs for chains: ${selectedChains.join(', ')}`);
|
|
102
|
+
return requiredMultisigs;
|
|
71
103
|
}
|
|
72
|
-
log(`Found configs for chains: ${selectedChains.join(', ')}`);
|
|
73
|
-
return requiredMultisigs;
|
|
74
104
|
}
|
|
75
105
|
async function runHookStep(_selectedChains, hookConfigPath) {
|
|
76
106
|
if ('TODO: Skip this step for now as values are unused')
|
|
@@ -100,7 +130,7 @@ async function runDeployPlanStep({ chains, signer, artifacts, skipConfirmation,
|
|
|
100
130
|
if (!isConfirmed)
|
|
101
131
|
throw new Error('Deployment cancelled');
|
|
102
132
|
}
|
|
103
|
-
async function executeDeploy({ chains, signer, multiProvider, outPath, artifacts = {},
|
|
133
|
+
async function executeDeploy({ chains, signer, multiProvider, outPath, artifacts = {}, ismConfigs = {}, multisigConfigs = {}, }) {
|
|
104
134
|
logBlue('All systems ready, captain! Beginning deployment...');
|
|
105
135
|
const [contractsFilePath, agentFilePath] = prepNewArtifactsFiles(outPath, [
|
|
106
136
|
{ filename: 'core-deployment', description: 'Contract addresses' },
|
|
@@ -128,7 +158,8 @@ async function executeDeploy({ chains, signer, multiProvider, outPath, artifacts
|
|
|
128
158
|
const defaultIsms = {};
|
|
129
159
|
for (const ismOrigin of chains) {
|
|
130
160
|
logBlue(`Deploying ISM to ${ismOrigin}`);
|
|
131
|
-
const ismConfig =
|
|
161
|
+
const ismConfig = ismConfigs[ismOrigin] ??
|
|
162
|
+
buildIsmConfig(owner, ismOrigin, chains, multisigConfigs);
|
|
132
163
|
ismContracts[ismOrigin] = {
|
|
133
164
|
multisigIsm: await ismFactory.deploy(ismOrigin, ismConfig),
|
|
134
165
|
};
|
|
@@ -140,7 +171,7 @@ async function executeDeploy({ chains, signer, multiProvider, outPath, artifacts
|
|
|
140
171
|
logBlue(`Deploying core contracts to ${chains.join(', ')}`);
|
|
141
172
|
const coreDeployer = new HyperlaneCoreDeployer(multiProvider, ismFactory);
|
|
142
173
|
coreDeployer.cacheAddressesMap(mergedContractAddrs);
|
|
143
|
-
const coreConfigs = buildCoreConfigMap(owner, chains, defaultIsms,
|
|
174
|
+
const coreConfigs = buildCoreConfigMap(owner, chains, defaultIsms, multisigConfigs ?? defaultMultisigConfigs);
|
|
144
175
|
const coreContracts = await coreDeployer.deploy(coreConfigs);
|
|
145
176
|
artifacts = writeMergedAddresses(contractsFilePath, artifacts, coreContracts);
|
|
146
177
|
logGreen('Core contracts deployed');
|
|
@@ -160,11 +191,11 @@ async function executeDeploy({ chains, signer, multiProvider, outPath, artifacts
|
|
|
160
191
|
logBlue(`Agent configs are in ${agentFilePath}`);
|
|
161
192
|
}
|
|
162
193
|
function buildIsmConfig(owner, local, chains, multisigIsmConfigs) {
|
|
163
|
-
const
|
|
194
|
+
const aggregationIsmConfigs = buildAggregationIsmConfigs(local, chains, multisigIsmConfigs);
|
|
164
195
|
return {
|
|
165
196
|
owner,
|
|
166
197
|
type: IsmType.ROUTING,
|
|
167
|
-
domains:
|
|
198
|
+
domains: aggregationIsmConfigs,
|
|
168
199
|
};
|
|
169
200
|
}
|
|
170
201
|
function buildCoreConfigMap(owner, chains, defaultIsms, multisigConfig) {
|
|
@@ -187,8 +218,8 @@ function buildCoreConfigMap(owner, chains, defaultIsms, multisigConfig) {
|
|
|
187
218
|
},
|
|
188
219
|
requiredHook: {
|
|
189
220
|
type: HookType.PROTOCOL_FEE,
|
|
190
|
-
maxProtocolFee: ethers.utils.parseUnits('1', 'gwei'),
|
|
191
|
-
protocolFee: ethers.utils.parseUnits('0', 'wei'),
|
|
221
|
+
maxProtocolFee: ethers.utils.parseUnits('1', 'gwei'), // 1 gwei of native token
|
|
222
|
+
protocolFee: ethers.utils.parseUnits('0', 'wei'), // 1 wei
|
|
192
223
|
beneficiary: owner,
|
|
193
224
|
owner,
|
|
194
225
|
},
|
|
@@ -218,7 +249,14 @@ function buildIgpConfigMap(owner, chains, multisigConfigs) {
|
|
|
218
249
|
for (const remote of chains) {
|
|
219
250
|
if (chain === remote)
|
|
220
251
|
continue;
|
|
221
|
-
|
|
252
|
+
// TODO: accurate estimate of gas from ChainMap<ISMConfig>
|
|
253
|
+
const threshold = multisigConfigs[remote]
|
|
254
|
+
? multisigConfigs[remote].threshold
|
|
255
|
+
: 2;
|
|
256
|
+
const validatorsLength = multisigConfigs[remote]
|
|
257
|
+
? multisigConfigs[remote].validators.length
|
|
258
|
+
: 3;
|
|
259
|
+
overhead[remote] = multisigIsmVerificationCost(threshold, validatorsLength);
|
|
222
260
|
gasOracleType[remote] = GasOracleContractType.StorageGasOracle;
|
|
223
261
|
}
|
|
224
262
|
configMap[chain] = {
|