@hyperlane-xyz/cli 4.0.0-beta → 4.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/cli.js +4 -0
- package/dist/cli.js.map +1 -1
- package/dist/src/avs/check.d.ts +3 -0
- package/dist/src/avs/check.d.ts.map +1 -0
- package/dist/src/avs/check.js +236 -0
- package/dist/src/avs/check.js.map +1 -0
- package/dist/src/avs/config.d.ts +1 -0
- package/dist/src/avs/config.d.ts.map +1 -1
- package/dist/src/avs/config.js +8 -0
- package/dist/src/avs/config.js.map +1 -1
- package/dist/src/avs/stakeRegistry.d.ts +4 -3
- package/dist/src/avs/stakeRegistry.d.ts.map +1 -1
- package/dist/src/avs/stakeRegistry.js +4 -4
- package/dist/src/avs/stakeRegistry.js.map +1 -1
- package/dist/src/commands/avs.d.ts.map +1 -1
- package/dist/src/commands/avs.js +37 -15
- package/dist/src/commands/avs.js.map +1 -1
- package/dist/src/commands/config.d.ts.map +1 -1
- package/dist/src/commands/config.js +2 -23
- package/dist/src/commands/config.js.map +1 -1
- package/dist/src/commands/core.d.ts +1 -1
- package/dist/src/commands/core.d.ts.map +1 -1
- package/dist/src/commands/core.js +4 -4
- package/dist/src/commands/core.js.map +1 -1
- package/dist/src/commands/hook.d.ts +12 -0
- package/dist/src/commands/hook.d.ts.map +1 -0
- package/dist/src/commands/hook.js +36 -0
- package/dist/src/commands/hook.js.map +1 -0
- package/dist/src/commands/ism.d.ts +12 -0
- package/dist/src/commands/ism.d.ts.map +1 -0
- package/dist/src/commands/ism.js +38 -0
- package/dist/src/commands/ism.js.map +1 -0
- package/dist/src/commands/options.d.ts +5 -0
- package/dist/src/commands/options.d.ts.map +1 -1
- package/dist/src/commands/options.js +23 -2
- package/dist/src/commands/options.js.map +1 -1
- package/dist/src/commands/registry.d.ts.map +1 -1
- package/dist/src/commands/registry.js +12 -2
- package/dist/src/commands/registry.js.map +1 -1
- package/dist/src/commands/validator.d.ts.map +1 -1
- package/dist/src/commands/validator.js +47 -3
- package/dist/src/commands/validator.js.map +1 -1
- package/dist/src/commands/warp.d.ts +5 -4
- package/dist/src/commands/warp.d.ts.map +1 -1
- package/dist/src/commands/warp.js +80 -21
- package/dist/src/commands/warp.js.map +1 -1
- package/dist/src/config/agent.js +2 -2
- package/dist/src/config/agent.js.map +1 -1
- package/dist/src/config/chain.d.ts.map +1 -1
- package/dist/src/config/chain.js +98 -57
- package/dist/src/config/chain.js.map +1 -1
- package/dist/src/config/core.js +1 -1
- package/dist/src/config/core.js.map +1 -1
- package/dist/src/config/hooks.d.ts.map +1 -1
- package/dist/src/config/hooks.js +9 -6
- package/dist/src/config/hooks.js.map +1 -1
- package/dist/src/config/ism.d.ts.map +1 -1
- package/dist/src/config/ism.js +2 -1
- package/dist/src/config/ism.js.map +1 -1
- package/dist/src/config/warp.d.ts +1 -1
- package/dist/src/config/warp.d.ts.map +1 -1
- package/dist/src/config/warp.js +3 -2
- package/dist/src/config/warp.js.map +1 -1
- package/dist/src/deploy/core.d.ts.map +1 -1
- package/dist/src/deploy/core.js +5 -3
- package/dist/src/deploy/core.js.map +1 -1
- package/dist/src/deploy/utils.d.ts.map +1 -1
- package/dist/src/deploy/utils.js +21 -6
- 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 +5 -7
- package/dist/src/deploy/warp.js.map +1 -1
- package/dist/src/logger.d.ts +3 -0
- package/dist/src/logger.d.ts.map +1 -1
- package/dist/src/logger.js +5 -0
- package/dist/src/logger.js.map +1 -1
- package/dist/src/send/message.d.ts.map +1 -1
- package/dist/src/send/message.js +3 -1
- package/dist/src/send/message.js.map +1 -1
- package/dist/src/send/transfer.d.ts +4 -4
- package/dist/src/send/transfer.d.ts.map +1 -1
- package/dist/src/send/transfer.js +5 -7
- package/dist/src/send/transfer.js.map +1 -1
- package/dist/src/utils/chains.d.ts +0 -1
- package/dist/src/utils/chains.d.ts.map +1 -1
- package/dist/src/utils/chains.js +4 -20
- package/dist/src/utils/chains.js.map +1 -1
- package/dist/src/utils/cli-options.d.ts +9 -0
- package/dist/src/utils/cli-options.d.ts.map +1 -0
- package/dist/src/utils/cli-options.js +14 -0
- package/dist/src/utils/cli-options.js.map +1 -0
- package/dist/src/utils/input.d.ts +7 -0
- package/dist/src/utils/input.d.ts.map +1 -0
- package/dist/src/utils/input.js +37 -0
- package/dist/src/utils/input.js.map +1 -0
- package/dist/src/utils/tokens.d.ts +3 -1
- package/dist/src/utils/tokens.d.ts.map +1 -1
- package/dist/src/utils/tokens.js +26 -0
- package/dist/src/utils/tokens.js.map +1 -1
- package/dist/src/validator/address.d.ts.map +1 -1
- package/dist/src/validator/address.js.map +1 -1
- package/dist/src/validator/preFlightCheck.d.ts +4 -0
- package/dist/src/validator/preFlightCheck.d.ts.map +1 -0
- package/dist/src/validator/preFlightCheck.js +74 -0
- package/dist/src/validator/preFlightCheck.js.map +1 -0
- package/dist/src/validator/utils.d.ts +9 -0
- package/dist/src/validator/utils.d.ts.map +1 -0
- package/dist/src/validator/utils.js +46 -0
- package/dist/src/validator/utils.js.map +1 -0
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.d.ts.map +1 -1
- package/dist/src/version.js +1 -1
- package/dist/src/version.js.map +1 -1
- package/package.json +6 -4
package/dist/cli.js
CHANGED
|
@@ -6,6 +6,8 @@ import { avsCommand } from './src/commands/avs.js';
|
|
|
6
6
|
import { configCommand } from './src/commands/config.js';
|
|
7
7
|
import { coreCommand } from './src/commands/core.js';
|
|
8
8
|
import { deployCommand } from './src/commands/deploy.js';
|
|
9
|
+
import { hookCommand } from './src/commands/hook.js';
|
|
10
|
+
import { ismCommand } from './src/commands/ism.js';
|
|
9
11
|
import { keyCommandOption, logFormatCommandOption, logLevelCommandOption, overrideRegistryUriCommandOption, registryUriCommandOption, skipConfirmationOption, } from './src/commands/options.js';
|
|
10
12
|
import { registryCommand } from './src/commands/registry.js';
|
|
11
13
|
import { sendCommand } from './src/commands/send.js';
|
|
@@ -40,6 +42,8 @@ try {
|
|
|
40
42
|
.command(configCommand)
|
|
41
43
|
.command(coreCommand)
|
|
42
44
|
.command(deployCommand)
|
|
45
|
+
.command(hookCommand)
|
|
46
|
+
.command(ismCommand)
|
|
43
47
|
.command(registryCommand)
|
|
44
48
|
.command(sendCommand)
|
|
45
49
|
.command(statusCommand)
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../cli.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,OAAO,UAAU,CAAC;AAClB,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EACL,gBAAgB,EAChB,sBAAsB,EACtB,qBAAqB,EACrB,gCAAgC,EAChC,wBAAwB,EACxB,sBAAsB,GACvB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAE3C,mBAAmB;AACnB,MAAM,oBAAoB,GAAG,iCAAiC,CAAC;AAE/D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;AAEjE,MAAM,YAAY,EAAE,CAAC;AAErB,IAAI,CAAC;IACH,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAC/B,UAAU,CAAC,WAAW,CAAC;SACvB,MAAM,CAAC,KAAK,EAAE,sBAAsB,CAAC;SACrC,MAAM,CAAC,WAAW,EAAE,qBAAqB,CAAC;SAC1C,MAAM,CAAC,UAAU,EAAE,wBAAwB,CAAC;SAC5C,MAAM,CAAC,WAAW,EAAE,gCAAgC,CAAC;SACrD,MAAM,CAAC,KAAK,EAAE,gBAAgB,CAAC;SAC/B,MAAM,CAAC,KAAK,EAAE,sBAAsB,CAAC;SACrC,MAAM,CAAC,CAAC,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;SAC5D,UAAU,CAAC;QACV,CAAC,IAAI,EAAE,EAAE;YACP,eAAe,CAAC,IAAI,CAAC,GAAgB,EAAE,IAAI,CAAC,SAAqB,CAAC,CAAC;QACrE,CAAC;QACD,iBAAiB;KAClB,CAAC;SACD,OAAO,CAAC,UAAU,CAAC;SACnB,OAAO,CAAC,aAAa,CAAC;SACtB,OAAO,CAAC,WAAW,CAAC;SACpB,OAAO,CAAC,aAAa,CAAC;SACtB,OAAO,CAAC,WAAW,CAAC;SACpB,OAAO,CAAC,UAAU,CAAC;SACnB,OAAO,CAAC,eAAe,CAAC;SACxB,OAAO,CAAC,WAAW,CAAC;SACpB,OAAO,CAAC,aAAa,CAAC;SACtB,OAAO,CAAC,gBAAgB,CAAC;SACzB,OAAO,CAAC,WAAW,CAAC;SACpB,OAAO,CAAC,OAAO,CAAC;SAChB,aAAa,EAAE;SACf,MAAM,EAAE;SACR,IAAI,EAAE;SACN,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QACxB,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC;YAAE,QAAQ,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC;QAC1E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,IAAI,GAAG;YAAE,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC,IAAI,CAAC;AACZ,CAAC;AAAC,OAAO,KAAU,EAAE,CAAC;IACpB,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check.d.ts","sourceRoot":"","sources":["../../../src/avs/check.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAoCrD,eAAO,MAAM,sBAAsB,UAC1B,MAAM,WACJ,cAAc,oBACL,MAAM,oBACN,MAAM,kBAoCzB,CAAC"}
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
import { ECDSAStakeRegistry__factory, IDelegationManager__factory, MerkleTreeHook__factory, ValidatorAnnounce__factory, } from '@hyperlane-xyz/core';
|
|
2
|
+
import { ProtocolType, isObjEmpty } from '@hyperlane-xyz/utils';
|
|
3
|
+
import { errorRed, log, logBlue, logBlueKeyValue, logBoldBlue, logDebug, logGreen, warnYellow, } from '../logger.js';
|
|
4
|
+
import { indentYamlOrJson } from '../utils/files.js';
|
|
5
|
+
import { getLatestMerkleTreeCheckpointIndex, getLatestValidatorCheckpointIndexAndUrl, getValidatorStorageLocations, isValidatorSigningLatestCheckpoint, } from '../validator/utils.js';
|
|
6
|
+
import { avsAddresses } from './config.js';
|
|
7
|
+
import { readOperatorFromEncryptedJson } from './stakeRegistry.js';
|
|
8
|
+
export const checkValidatorAvsSetup = async (chain, context, operatorKeyPath, operatorAddress) => {
|
|
9
|
+
logBlue(`Checking AVS validator status for ${chain}, ${!operatorKeyPath ? 'this may take up to a minute to run' : ''}...`);
|
|
10
|
+
const { multiProvider } = context;
|
|
11
|
+
const topLevelErrors = [];
|
|
12
|
+
let operatorWallet;
|
|
13
|
+
if (operatorKeyPath) {
|
|
14
|
+
operatorWallet = await readOperatorFromEncryptedJson(operatorKeyPath);
|
|
15
|
+
}
|
|
16
|
+
const avsOperatorRecord = await getAvsOperators(chain, multiProvider, topLevelErrors, operatorAddress ?? operatorWallet?.address);
|
|
17
|
+
await setOperatorName(chain, avsOperatorRecord, multiProvider, topLevelErrors);
|
|
18
|
+
if (!isObjEmpty(avsOperatorRecord)) {
|
|
19
|
+
await setValidatorInfo(context, avsOperatorRecord, topLevelErrors);
|
|
20
|
+
}
|
|
21
|
+
logOutput(avsOperatorRecord, topLevelErrors);
|
|
22
|
+
};
|
|
23
|
+
const getAvsOperators = async (chain, multiProvider, topLevelErrors, operatorKey) => {
|
|
24
|
+
const avsOperators = {};
|
|
25
|
+
const ecdsaStakeRegistryAddress = getEcdsaStakeRegistryAddress(chain, topLevelErrors);
|
|
26
|
+
if (!ecdsaStakeRegistryAddress) {
|
|
27
|
+
return avsOperators;
|
|
28
|
+
}
|
|
29
|
+
const ecdsaStakeRegistry = ECDSAStakeRegistry__factory.connect(ecdsaStakeRegistryAddress, multiProvider.getProvider(chain));
|
|
30
|
+
if (operatorKey) {
|
|
31
|
+
// If operator key is provided, only fetch the operator's validator info
|
|
32
|
+
const signingKey = await ecdsaStakeRegistry.getLastestOperatorSigningKey(operatorKey);
|
|
33
|
+
avsOperators[signingKey] = {
|
|
34
|
+
operatorAddress: operatorKey,
|
|
35
|
+
chains: {},
|
|
36
|
+
};
|
|
37
|
+
return avsOperators;
|
|
38
|
+
}
|
|
39
|
+
const filter = ecdsaStakeRegistry.filters.SigningKeyUpdate(null, null);
|
|
40
|
+
const provider = multiProvider.getProvider(chain);
|
|
41
|
+
const latestBlock = await provider.getBlockNumber();
|
|
42
|
+
const blockLimit = 50000; // 50k blocks per query
|
|
43
|
+
let fromBlock = 1625972; // when ecdsaStakeRegistry was deployed
|
|
44
|
+
while (fromBlock < latestBlock) {
|
|
45
|
+
const toBlock = Math.min(fromBlock + blockLimit, latestBlock);
|
|
46
|
+
const logs = await ecdsaStakeRegistry.queryFilter(filter, fromBlock, toBlock);
|
|
47
|
+
logs.forEach((log) => {
|
|
48
|
+
const event = ecdsaStakeRegistry.interface.parseLog(log);
|
|
49
|
+
const operatorKey = event.args.operator;
|
|
50
|
+
const signingKey = event.args.newSigningKey;
|
|
51
|
+
if (avsOperators[signingKey]) {
|
|
52
|
+
avsOperators[signingKey].operatorAddress = operatorKey;
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
avsOperators[signingKey] = {
|
|
56
|
+
operatorAddress: operatorKey,
|
|
57
|
+
chains: {},
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
fromBlock = toBlock + 1;
|
|
62
|
+
}
|
|
63
|
+
return avsOperators;
|
|
64
|
+
};
|
|
65
|
+
const getAVSMetadataURI = async (chain, operatorAddress, multiProvider) => {
|
|
66
|
+
const delegationManagerAddress = avsAddresses[chain]['delegationManager'];
|
|
67
|
+
const delegationManager = IDelegationManager__factory.connect(delegationManagerAddress, multiProvider.getProvider(chain));
|
|
68
|
+
const filter = delegationManager.filters.OperatorMetadataURIUpdated(operatorAddress, null);
|
|
69
|
+
const provider = multiProvider.getProvider(chain);
|
|
70
|
+
const latestBlock = await provider.getBlockNumber();
|
|
71
|
+
const blockLimit = 50000; // 50k blocks per query
|
|
72
|
+
let fromBlock = 17445563;
|
|
73
|
+
while (fromBlock < latestBlock) {
|
|
74
|
+
const toBlock = Math.min(fromBlock + blockLimit, latestBlock);
|
|
75
|
+
const logs = await delegationManager.queryFilter(filter, fromBlock, toBlock);
|
|
76
|
+
if (logs.length > 0) {
|
|
77
|
+
const event = delegationManager.interface.parseLog(logs[0]);
|
|
78
|
+
return event.args.metadataURI;
|
|
79
|
+
}
|
|
80
|
+
fromBlock = toBlock + 1;
|
|
81
|
+
}
|
|
82
|
+
return undefined;
|
|
83
|
+
};
|
|
84
|
+
const setOperatorName = async (chain, avsOperatorRecord, multiProvider, topLevelErrors = []) => {
|
|
85
|
+
for (const [_, validatorInfo] of Object.entries(avsOperatorRecord)) {
|
|
86
|
+
const metadataURI = await getAVSMetadataURI(chain, validatorInfo.operatorAddress, multiProvider);
|
|
87
|
+
if (metadataURI) {
|
|
88
|
+
const operatorName = await fetchOperatorName(metadataURI);
|
|
89
|
+
if (operatorName) {
|
|
90
|
+
validatorInfo.operatorName = operatorName;
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
topLevelErrors.push(`❗️ Failed to fetch operator name from metadataURI: ${metadataURI}`);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
const setValidatorInfo = async (context, avsOperatorRecord, topLevelErrors) => {
|
|
99
|
+
const { multiProvider, registry, chainMetadata } = context;
|
|
100
|
+
const failedToReadChains = [];
|
|
101
|
+
const validatorAddresses = Object.keys(avsOperatorRecord);
|
|
102
|
+
const chains = await registry.getChains();
|
|
103
|
+
const addresses = await registry.getAddresses();
|
|
104
|
+
for (const chain of chains) {
|
|
105
|
+
// skip if chain is not an Ethereum chain
|
|
106
|
+
if (chainMetadata[chain].protocol !== ProtocolType.Ethereum)
|
|
107
|
+
continue;
|
|
108
|
+
const chainAddresses = addresses[chain];
|
|
109
|
+
// skip if no contract addresses are found for this chain
|
|
110
|
+
if (chainAddresses === undefined)
|
|
111
|
+
continue;
|
|
112
|
+
if (!chainAddresses.validatorAnnounce) {
|
|
113
|
+
topLevelErrors.push(`❗️ ValidatorAnnounce is not deployed on ${chain}`);
|
|
114
|
+
}
|
|
115
|
+
if (!chainAddresses.merkleTreeHook) {
|
|
116
|
+
topLevelErrors.push(`❗️ MerkleTreeHook is not deployed on ${chain}`);
|
|
117
|
+
}
|
|
118
|
+
if (!chainAddresses.validatorAnnounce || !chainAddresses.merkleTreeHook) {
|
|
119
|
+
continue;
|
|
120
|
+
}
|
|
121
|
+
const validatorAnnounce = ValidatorAnnounce__factory.connect(chainAddresses.validatorAnnounce, multiProvider.getProvider(chain));
|
|
122
|
+
const merkleTreeHook = MerkleTreeHook__factory.connect(chainAddresses.merkleTreeHook, multiProvider.getProvider(chain));
|
|
123
|
+
const latestMerkleTreeCheckpointIndex = await getLatestMerkleTreeCheckpointIndex(merkleTreeHook, chain);
|
|
124
|
+
const validatorStorageLocations = await getValidatorStorageLocations(validatorAnnounce, validatorAddresses, chain);
|
|
125
|
+
if (!validatorStorageLocations) {
|
|
126
|
+
failedToReadChains.push(chain);
|
|
127
|
+
continue;
|
|
128
|
+
}
|
|
129
|
+
for (let i = 0; i < validatorAddresses.length; i++) {
|
|
130
|
+
const validatorAddress = validatorAddresses[i];
|
|
131
|
+
const storageLocation = validatorStorageLocations[i];
|
|
132
|
+
const warnings = [];
|
|
133
|
+
// Skip if no storage location is found, address is not validating on this chain or if storage location string doesn't not start with s3://
|
|
134
|
+
if (storageLocation.length === 0 ||
|
|
135
|
+
!storageLocation[0].startsWith('s3://')) {
|
|
136
|
+
continue;
|
|
137
|
+
}
|
|
138
|
+
const [latestValidatorCheckpointIndex, latestCheckpointUrl] = (await getLatestValidatorCheckpointIndexAndUrl(storageLocation[0])) ?? [
|
|
139
|
+
undefined,
|
|
140
|
+
undefined,
|
|
141
|
+
];
|
|
142
|
+
if (!latestMerkleTreeCheckpointIndex) {
|
|
143
|
+
warnings.push(`❗️ Failed to fetch latest checkpoint index of merkleTreeHook on ${chain}.`);
|
|
144
|
+
}
|
|
145
|
+
if (!latestValidatorCheckpointIndex) {
|
|
146
|
+
warnings.push(`❗️ Failed to fetch latest signed checkpoint index of validator on ${chain}, this is likely due to failing to read an S3 bucket`);
|
|
147
|
+
}
|
|
148
|
+
let validatorSynced = undefined;
|
|
149
|
+
if (latestMerkleTreeCheckpointIndex && latestValidatorCheckpointIndex) {
|
|
150
|
+
validatorSynced = isValidatorSigningLatestCheckpoint(latestValidatorCheckpointIndex, latestMerkleTreeCheckpointIndex);
|
|
151
|
+
}
|
|
152
|
+
const chainInfo = {
|
|
153
|
+
storageLocation: latestCheckpointUrl,
|
|
154
|
+
latestMerkleTreeCheckpointIndex,
|
|
155
|
+
latestValidatorCheckpointIndex,
|
|
156
|
+
validatorSynced,
|
|
157
|
+
warnings,
|
|
158
|
+
};
|
|
159
|
+
const validatorInfo = avsOperatorRecord[validatorAddress];
|
|
160
|
+
if (validatorInfo) {
|
|
161
|
+
validatorInfo.chains[chain] = chainInfo;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
if (failedToReadChains.length > 0) {
|
|
166
|
+
topLevelErrors.push(`❗️ Failed to read storage locations onchain for ${failedToReadChains.join(', ')}`);
|
|
167
|
+
}
|
|
168
|
+
};
|
|
169
|
+
const logOutput = (avsKeysRecord, topLevelErrors) => {
|
|
170
|
+
if (topLevelErrors.length > 0) {
|
|
171
|
+
for (const error of topLevelErrors) {
|
|
172
|
+
errorRed(error);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
for (const [validatorAddress, data] of Object.entries(avsKeysRecord)) {
|
|
176
|
+
log('\n\n');
|
|
177
|
+
if (data.operatorName)
|
|
178
|
+
logBlueKeyValue('Operator name', data.operatorName);
|
|
179
|
+
logBlueKeyValue('Operator address', data.operatorAddress);
|
|
180
|
+
logBlueKeyValue('Validator address', validatorAddress);
|
|
181
|
+
if (!isObjEmpty(data.chains)) {
|
|
182
|
+
logBoldBlue(indentYamlOrJson('Validating on...', 2));
|
|
183
|
+
for (const [chain, chainInfo] of Object.entries(data.chains)) {
|
|
184
|
+
logBoldBlue(indentYamlOrJson(chain, 2));
|
|
185
|
+
if (chainInfo.storageLocation) {
|
|
186
|
+
logBlueKeyValue(indentYamlOrJson('Storage location', 2), chainInfo.storageLocation);
|
|
187
|
+
}
|
|
188
|
+
if (chainInfo.latestMerkleTreeCheckpointIndex) {
|
|
189
|
+
logBlueKeyValue(indentYamlOrJson('Latest merkle tree checkpoint index', 2), String(chainInfo.latestMerkleTreeCheckpointIndex));
|
|
190
|
+
}
|
|
191
|
+
if (chainInfo.latestValidatorCheckpointIndex) {
|
|
192
|
+
logBlueKeyValue(indentYamlOrJson('Latest validator checkpoint index', 2), String(chainInfo.latestValidatorCheckpointIndex));
|
|
193
|
+
if (chainInfo.validatorSynced) {
|
|
194
|
+
logGreen(indentYamlOrJson('✅ Validator is signing latest checkpoint', 2));
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
errorRed(indentYamlOrJson('❌ Validator is not signing latest checkpoint', 2));
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
else {
|
|
201
|
+
errorRed(indentYamlOrJson('❌ Failed to fetch latest signed checkpoint index', 2));
|
|
202
|
+
}
|
|
203
|
+
if (chainInfo.warnings && chainInfo.warnings.length > 0) {
|
|
204
|
+
warnYellow(indentYamlOrJson('The following warnings were encountered:', 2));
|
|
205
|
+
for (const warning of chainInfo.warnings) {
|
|
206
|
+
warnYellow(indentYamlOrJson(warning, 3));
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
logBlue('Validator is not validating on any chain');
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
};
|
|
216
|
+
const getEcdsaStakeRegistryAddress = (chain, topLevelErrors) => {
|
|
217
|
+
try {
|
|
218
|
+
return avsAddresses[chain]['ecdsaStakeRegistry'];
|
|
219
|
+
}
|
|
220
|
+
catch (err) {
|
|
221
|
+
topLevelErrors.push(`❗️ EcdsaStakeRegistry address not found for ${chain}`);
|
|
222
|
+
return undefined;
|
|
223
|
+
}
|
|
224
|
+
};
|
|
225
|
+
const fetchOperatorName = async (metadataURI) => {
|
|
226
|
+
try {
|
|
227
|
+
const response = await fetch(metadataURI);
|
|
228
|
+
const data = await response.json();
|
|
229
|
+
return data['name'];
|
|
230
|
+
}
|
|
231
|
+
catch (err) {
|
|
232
|
+
logDebug(`Failed to fetch operator name from ${metadataURI}: ${err}`);
|
|
233
|
+
return undefined;
|
|
234
|
+
}
|
|
235
|
+
};
|
|
236
|
+
//# sourceMappingURL=check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check.js","sourceRoot":"","sources":["../../../src/avs/check.ts"],"names":[],"mappings":"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"}
|
package/dist/src/avs/config.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/avs/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,UAAU,YAAY;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,uBAAuB,EAAE,OAAO,CAAC;CAClC;AAGD,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,YAAY,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/avs/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,UAAU,YAAY;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,UAAU,EAAE,OAAO,CAAC;IACpB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,uBAAuB,EAAE,OAAO,CAAC;CAClC;AAGD,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,YAAY,CAe/C,CAAC"}
|
package/dist/src/avs/config.js
CHANGED
|
@@ -2,9 +2,17 @@
|
|
|
2
2
|
export const avsAddresses = {
|
|
3
3
|
holesky: {
|
|
4
4
|
avsDirectory: '0x055733000064333CaDDbC92763c58BF0192fFeBf',
|
|
5
|
+
delegationManager: '0xA44151489861Fe9e3055d95adC98FbD462B948e7',
|
|
5
6
|
proxyAdmin: '0x33dB966328Ea213b0f76eF96CA368AB37779F065',
|
|
6
7
|
ecdsaStakeRegistry: '0xFfa913705484C9BAea32Ffe9945BeA099A1DFF72',
|
|
7
8
|
hyperlaneServiceManager: '0xc76E477437065093D353b7d56c81ff54D167B0Ab',
|
|
8
9
|
},
|
|
10
|
+
ethereum: {
|
|
11
|
+
avsDirectory: '0x135dda560e946695d6f155dacafc6f1f25c1f5af',
|
|
12
|
+
delegationManager: '0x39053D51B77DC0d36036Fc1fCc8Cb819df8Ef37A',
|
|
13
|
+
proxyAdmin: '0x75EE15Ee1B4A75Fa3e2fDF5DF3253c25599cc659',
|
|
14
|
+
ecdsaStakeRegistry: '0x272CF0BB70D3B4f79414E0823B426d2EaFd48910',
|
|
15
|
+
hyperlaneServiceManager: '0xe8E59c6C8B56F2c178f63BCFC4ce5e5e2359c8fc',
|
|
16
|
+
},
|
|
9
17
|
};
|
|
10
18
|
//# sourceMappingURL=config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/avs/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/avs/config.ts"],"names":[],"mappings":"AAWA,yBAAyB;AACzB,MAAM,CAAC,MAAM,YAAY,GAA2B;IAClD,OAAO,EAAE;QACP,YAAY,EAAE,4CAA4C;QAC1D,iBAAiB,EAAE,4CAA4C;QAC/D,UAAU,EAAE,4CAA4C;QACxD,kBAAkB,EAAE,4CAA4C;QAChE,uBAAuB,EAAE,4CAA4C;KACtE;IACD,QAAQ,EAAE;QACR,YAAY,EAAE,4CAA4C;QAC1D,iBAAiB,EAAE,4CAA4C;QAC/D,UAAU,EAAE,4CAA4C;QACxD,kBAAkB,EAAE,4CAA4C;QAChE,uBAAuB,EAAE,4CAA4C;KACtE;CACF,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { BigNumberish, utils } from 'ethers';
|
|
1
|
+
import { BigNumberish, Wallet, utils } from 'ethers';
|
|
2
2
|
import { ChainName } from '@hyperlane-xyz/sdk';
|
|
3
3
|
import { Address } from '@hyperlane-xyz/utils';
|
|
4
4
|
import { WriteCommandContext } from '../context/types.js';
|
|
@@ -7,15 +7,16 @@ export type SignatureWithSaltAndExpiryStruct = {
|
|
|
7
7
|
salt: utils.BytesLike;
|
|
8
8
|
expiry: BigNumberish;
|
|
9
9
|
};
|
|
10
|
-
export declare function registerOperatorWithSignature({ context, chain, operatorKeyPath,
|
|
10
|
+
export declare function registerOperatorWithSignature({ context, chain, operatorKeyPath, avsSigningKeyAddress, }: {
|
|
11
11
|
context: WriteCommandContext;
|
|
12
12
|
chain: ChainName;
|
|
13
13
|
operatorKeyPath: string;
|
|
14
|
-
|
|
14
|
+
avsSigningKeyAddress: Address;
|
|
15
15
|
}): Promise<void>;
|
|
16
16
|
export declare function deregisterOperator({ context, chain, operatorKeyPath, }: {
|
|
17
17
|
context: WriteCommandContext;
|
|
18
18
|
chain: ChainName;
|
|
19
19
|
operatorKeyPath: string;
|
|
20
20
|
}): Promise<void>;
|
|
21
|
+
export declare function readOperatorFromEncryptedJson(operatorKeyPath: string): Promise<Wallet>;
|
|
21
22
|
//# sourceMappingURL=stakeRegistry.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stakeRegistry.d.ts","sourceRoot":"","sources":["../../../src/avs/stakeRegistry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"stakeRegistry.d.ts","sourceRoot":"","sources":["../../../src/avs/stakeRegistry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAMrD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAM1D,MAAM,MAAM,gCAAgC,GAAG;IAC7C,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC;IACtB,MAAM,EAAE,YAAY,CAAC;CACtB,CAAC;AAEF,wBAAsB,6BAA6B,CAAC,EAClD,OAAO,EACP,KAAK,EACL,eAAe,EACf,oBAAoB,GACrB,EAAE;IACD,OAAO,EAAE,mBAAmB,CAAC;IAC7B,KAAK,EAAE,SAAS,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;IACxB,oBAAoB,EAAE,OAAO,CAAC;CAC/B,iBA+CA;AAED,wBAAsB,kBAAkB,CAAC,EACvC,OAAO,EACP,KAAK,EACL,eAAe,GAChB,EAAE;IACD,OAAO,EAAE,mBAAmB,CAAC;IAC7B,KAAK,EAAE,SAAS,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;CACzB,iBAoBA;AAED,wBAAsB,6BAA6B,CACjD,eAAe,EAAE,MAAM,GACtB,OAAO,CAAC,MAAM,CAAC,CASjB"}
|
|
@@ -4,7 +4,7 @@ import { ECDSAStakeRegistry__factory, TestAVSDirectory__factory, } from '@hyperl
|
|
|
4
4
|
import { log, logBlue } from '../logger.js';
|
|
5
5
|
import { readFileAtPath, resolvePath } from '../utils/files.js';
|
|
6
6
|
import { avsAddresses } from './config.js';
|
|
7
|
-
export async function registerOperatorWithSignature({ context, chain, operatorKeyPath,
|
|
7
|
+
export async function registerOperatorWithSignature({ context, chain, operatorKeyPath, avsSigningKeyAddress, }) {
|
|
8
8
|
const { multiProvider } = context;
|
|
9
9
|
const operatorAsSigner = await readOperatorFromEncryptedJson(operatorKeyPath);
|
|
10
10
|
const provider = multiProvider.getProvider(chain);
|
|
@@ -20,8 +20,8 @@ export async function registerOperatorWithSignature({ context, chain, operatorKe
|
|
|
20
20
|
logBlue(`Operator ${operatorAsSigner.address} already registered to Hyperlane AVS`);
|
|
21
21
|
return;
|
|
22
22
|
}
|
|
23
|
-
log(`Registering operator ${operatorAsSigner.address} attesting ${
|
|
24
|
-
await multiProvider.handleTx(chain, ecdsaStakeRegistry.registerOperatorWithSignature(operatorSignature,
|
|
23
|
+
log(`Registering operator ${operatorAsSigner.address} attesting ${avsSigningKeyAddress} with signature on ${chain}...`);
|
|
24
|
+
await multiProvider.handleTx(chain, ecdsaStakeRegistry.registerOperatorWithSignature(operatorSignature, avsSigningKeyAddress));
|
|
25
25
|
logBlue(`Operator ${operatorAsSigner.address} registered to Hyperlane AVS`);
|
|
26
26
|
}
|
|
27
27
|
export async function deregisterOperator({ context, chain, operatorKeyPath, }) {
|
|
@@ -35,7 +35,7 @@ export async function deregisterOperator({ context, chain, operatorKeyPath, }) {
|
|
|
35
35
|
await multiProvider.handleTx(chain, ecdsaStakeRegistry.deregisterOperator());
|
|
36
36
|
logBlue(`Operator ${operatorAsSigner.address} deregistered from Hyperlane AVS`);
|
|
37
37
|
}
|
|
38
|
-
async function readOperatorFromEncryptedJson(operatorKeyPath) {
|
|
38
|
+
export async function readOperatorFromEncryptedJson(operatorKeyPath) {
|
|
39
39
|
const encryptedJson = readFileAtPath(resolvePath(operatorKeyPath));
|
|
40
40
|
const keyFilePassword = await password({
|
|
41
41
|
mask: '*',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stakeRegistry.js","sourceRoot":"","sources":["../../../src/avs/stakeRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAgB,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAErD,OAAO,EACL,2BAA2B,EAC3B,yBAAyB,GAC1B,MAAM,qBAAqB,CAAC;AAK7B,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAQ3C,MAAM,CAAC,KAAK,UAAU,6BAA6B,CAAC,EAClD,OAAO,EACP,KAAK,EACL,eAAe,EACf,
|
|
1
|
+
{"version":3,"file":"stakeRegistry.js","sourceRoot":"","sources":["../../../src/avs/stakeRegistry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAgB,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAErD,OAAO,EACL,2BAA2B,EAC3B,yBAAyB,GAC1B,MAAM,qBAAqB,CAAC;AAK7B,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAEhE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAQ3C,MAAM,CAAC,KAAK,UAAU,6BAA6B,CAAC,EAClD,OAAO,EACP,KAAK,EACL,eAAe,EACf,oBAAoB,GAMrB;IACC,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC;IAElC,MAAM,gBAAgB,GAAG,MAAM,6BAA6B,CAAC,eAAe,CAAC,CAAC;IAE9E,MAAM,QAAQ,GAAG,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,eAAe,GAAG,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE3D,MAAM,oBAAoB,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,kBAAkB,CAAC;IAEpE,MAAM,kBAAkB,GAAG,2BAA2B,CAAC,OAAO,CAC5D,oBAAoB,EACpB,eAAe,CAChB,CAAC;IAEF,MAAM,QAAQ,GAAG,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,mBAAmB,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC;IAC7D,MAAM,iBAAiB,GAAG,MAAM,oBAAoB,CAClD,QAAQ,EACR,YAAY,CAAC,KAAK,CAAC,CAAC,uBAAuB,EAC3C,mBAAmB,EACnB,gBAAgB,EAChB,eAAe,CAChB,CAAC;IAEF,8CAA8C;IAC9C,MAAM,cAAc,GAAG,MAAM,kBAAkB,CAAC,kBAAkB,CAChE,gBAAgB,CAAC,OAAO,CACzB,CAAC;IACF,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,CACL,YAAY,gBAAgB,CAAC,OAAO,sCAAsC,CAC3E,CAAC;QACF,OAAO;IACT,CAAC;IAED,GAAG,CACD,wBAAwB,gBAAgB,CAAC,OAAO,cAAc,oBAAoB,sBAAsB,KAAK,KAAK,CACnH,CAAC;IACF,MAAM,aAAa,CAAC,QAAQ,CAC1B,KAAK,EACL,kBAAkB,CAAC,6BAA6B,CAC9C,iBAAiB,EACjB,oBAAoB,CACrB,CACF,CAAC;IACF,OAAO,CAAC,YAAY,gBAAgB,CAAC,OAAO,8BAA8B,CAAC,CAAC;AAC9E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,EACvC,OAAO,EACP,KAAK,EACL,eAAe,GAKhB;IACC,MAAM,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC;IAElC,MAAM,gBAAgB,GAAG,MAAM,6BAA6B,CAAC,eAAe,CAAC,CAAC;IAE9E,MAAM,QAAQ,GAAG,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAClD,MAAM,eAAe,GAAG,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAE3D,MAAM,oBAAoB,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,kBAAkB,CAAC;IAEpE,MAAM,kBAAkB,GAAG,2BAA2B,CAAC,OAAO,CAC5D,oBAAoB,EACpB,eAAe,CAChB,CAAC;IAEF,GAAG,CAAC,0BAA0B,gBAAgB,CAAC,OAAO,OAAO,KAAK,KAAK,CAAC,CAAC;IACzE,MAAM,aAAa,CAAC,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAC,kBAAkB,EAAE,CAAC,CAAC;IAC7E,OAAO,CACL,YAAY,gBAAgB,CAAC,OAAO,kCAAkC,CACvE,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,eAAuB;IAEvB,MAAM,aAAa,GAAG,cAAc,CAAC,WAAW,CAAC,eAAe,CAAC,CAAC,CAAC;IAEnE,MAAM,eAAe,GAAG,MAAM,QAAQ,CAAC;QACrC,IAAI,EAAE,GAAG;QACT,OAAO,EAAE,gDAAgD;KAC1D,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC,iBAAiB,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;AAClE,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,MAAc,EACd,cAAuB,EACvB,YAAqB,EACrB,QAAgB,EAChB,MAAc;IAEd,MAAM,oBAAoB,GAAG,yBAAyB,CAAC,OAAO,CAC5D,YAAY,EACZ,MAAM,CACP,CAAC;IAEF,kEAAkE;IAClE,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;IACzD,0CAA0C;IAC1C,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,CAC7B,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,EACtD,EAAE,CACH,CAAC;IAEF,MAAM,WAAW,GACf,MAAM,oBAAoB,CAAC,0CAA0C,CACnE,QAAQ,CAAC,OAAO,EAChB,cAAc,EACd,IAAI,EACJ,MAAM,CACP,CAAC;IAEJ,4HAA4H;IAC5H,4JAA4J;IAC5J,MAAM,SAAS,GAAG,QAAQ;SACvB,WAAW,EAAE;SACb,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;IAE3C,OAAO;QACL,SAAS,EAAE,KAAK,CAAC,aAAa,CAAC,SAAS,CAAC;QACzC,IAAI;QACJ,MAAM;KACP,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avs.d.ts","sourceRoot":"","sources":["../../../src/commands/avs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"avs.d.ts","sourceRoot":"","sources":["../../../src/commands/avs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAmB/C;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,aAWxB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CAQvD,CAAC"}
|
package/dist/src/commands/avs.js
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
|
+
import { ProtocolType } from '@hyperlane-xyz/utils';
|
|
2
|
+
import { checkValidatorAvsSetup } from '../avs/check.js';
|
|
1
3
|
import { deregisterOperator, registerOperatorWithSignature, } from '../avs/stakeRegistry.js';
|
|
2
|
-
import { log } from '../logger.js';
|
|
4
|
+
import { errorRed, log } from '../logger.js';
|
|
5
|
+
import { avsChainCommandOption, demandOption, operatorKeyPathCommandOption, } from './options.js';
|
|
3
6
|
/**
|
|
4
7
|
* Parent command
|
|
5
8
|
*/
|
|
@@ -9,6 +12,7 @@ export const avsCommand = {
|
|
|
9
12
|
builder: (yargs) => yargs
|
|
10
13
|
.command(registerCommand)
|
|
11
14
|
.command(deregisterCommand)
|
|
15
|
+
.command(checkCommand)
|
|
12
16
|
.version(false)
|
|
13
17
|
.demandCommand(),
|
|
14
18
|
handler: () => log('Command required'),
|
|
@@ -17,18 +21,9 @@ export const avsCommand = {
|
|
|
17
21
|
* Registration command
|
|
18
22
|
*/
|
|
19
23
|
export const registrationOptions = {
|
|
20
|
-
chain:
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
demandOption: true,
|
|
24
|
-
choices: ['holesky', 'ethereum'],
|
|
25
|
-
},
|
|
26
|
-
operatorKeyPath: {
|
|
27
|
-
type: 'string',
|
|
28
|
-
description: 'Path to the operator key file',
|
|
29
|
-
demandOption: true,
|
|
30
|
-
},
|
|
31
|
-
avsSigningKey: {
|
|
24
|
+
chain: avsChainCommandOption,
|
|
25
|
+
operatorKeyPath: demandOption(operatorKeyPathCommandOption),
|
|
26
|
+
avsSigningKeyAddress: {
|
|
32
27
|
type: 'string',
|
|
33
28
|
description: 'Address of the AVS signing key',
|
|
34
29
|
demandOption: true,
|
|
@@ -38,12 +33,12 @@ const registerCommand = {
|
|
|
38
33
|
command: 'register',
|
|
39
34
|
describe: 'Register operator with the AVS',
|
|
40
35
|
builder: registrationOptions,
|
|
41
|
-
handler: async ({ context, chain, operatorKeyPath,
|
|
36
|
+
handler: async ({ context, chain, operatorKeyPath, avsSigningKeyAddress, }) => {
|
|
42
37
|
await registerOperatorWithSignature({
|
|
43
38
|
context,
|
|
44
39
|
chain,
|
|
45
40
|
operatorKeyPath,
|
|
46
|
-
|
|
41
|
+
avsSigningKeyAddress,
|
|
47
42
|
});
|
|
48
43
|
process.exit(0);
|
|
49
44
|
},
|
|
@@ -61,4 +56,31 @@ const deregisterCommand = {
|
|
|
61
56
|
process.exit(0);
|
|
62
57
|
},
|
|
63
58
|
};
|
|
59
|
+
const checkCommand = {
|
|
60
|
+
command: 'check',
|
|
61
|
+
describe: 'Check AVS',
|
|
62
|
+
builder: {
|
|
63
|
+
chain: avsChainCommandOption,
|
|
64
|
+
operatorKeyPath: operatorKeyPathCommandOption,
|
|
65
|
+
operatorAddress: {
|
|
66
|
+
type: 'string',
|
|
67
|
+
description: 'Address of the operator to check',
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
handler: async ({ context, chain, operatorKeyPath, operatorAddress }) => {
|
|
71
|
+
const { multiProvider } = context;
|
|
72
|
+
// validate chain
|
|
73
|
+
if (!multiProvider.hasChain(chain)) {
|
|
74
|
+
errorRed(`❌ No metadata found for ${chain}. Ensure it is included in your configured registry.`);
|
|
75
|
+
process.exit(1);
|
|
76
|
+
}
|
|
77
|
+
const chainMetadata = multiProvider.getChainMetadata(chain);
|
|
78
|
+
if (chainMetadata.protocol !== ProtocolType.Ethereum) {
|
|
79
|
+
errorRed(`\n❌ Validator AVS check only supports EVM chains. Exiting.`);
|
|
80
|
+
process.exit(1);
|
|
81
|
+
}
|
|
82
|
+
await checkValidatorAvsSetup(chain, context, operatorKeyPath, operatorAddress);
|
|
83
|
+
process.exit(0);
|
|
84
|
+
},
|
|
85
|
+
};
|
|
64
86
|
//# sourceMappingURL=avs.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"avs.js","sourceRoot":"","sources":["../../../src/commands/avs.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"avs.js","sourceRoot":"","sources":["../../../src/commands/avs.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAWtC;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/commands/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAWtC;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,aAM3B,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { readChainConfigs } from '../config/chain.js';
|
|
2
2
|
import { readIsmConfig } from '../config/ism.js';
|
|
3
3
|
import { readMultisigConfig } from '../config/multisig.js';
|
|
4
4
|
import { readWarpRouteDeployConfig } from '../config/warp.js';
|
|
@@ -10,30 +10,9 @@ import { inputFileCommandOption } from './options.js';
|
|
|
10
10
|
export const configCommand = {
|
|
11
11
|
command: 'config',
|
|
12
12
|
describe: 'Create or validate Hyperlane configs',
|
|
13
|
-
builder: (yargs) => yargs
|
|
14
|
-
.command(createCommand)
|
|
15
|
-
.command(validateCommand)
|
|
16
|
-
.version(false)
|
|
17
|
-
.demandCommand(),
|
|
13
|
+
builder: (yargs) => yargs.command(validateCommand).version(false).demandCommand(),
|
|
18
14
|
handler: () => log('Command required'),
|
|
19
15
|
};
|
|
20
|
-
/**
|
|
21
|
-
* Create commands
|
|
22
|
-
*/
|
|
23
|
-
const createCommand = {
|
|
24
|
-
command: 'create',
|
|
25
|
-
describe: 'Create a new Hyperlane config',
|
|
26
|
-
builder: (yargs) => yargs.command(createChainConfigCommand).version(false).demandCommand(),
|
|
27
|
-
handler: () => log('Command required'),
|
|
28
|
-
};
|
|
29
|
-
const createChainConfigCommand = {
|
|
30
|
-
command: 'chain',
|
|
31
|
-
describe: 'Create a new, minimal Hyperlane chain config (aka chain metadata)',
|
|
32
|
-
handler: async ({ context }) => {
|
|
33
|
-
await createChainConfig({ context });
|
|
34
|
-
process.exit(0);
|
|
35
|
-
},
|
|
36
|
-
};
|
|
37
16
|
/**
|
|
38
17
|
* Validate commands
|
|
39
18
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/commands/config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/commands/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,7 +16,7 @@ export declare const deploy: CommandModuleWithWriteContext<{
|
|
|
16
16
|
dryRun: string;
|
|
17
17
|
fromAddress: string;
|
|
18
18
|
}>;
|
|
19
|
-
export declare const
|
|
19
|
+
export declare const init: CommandModuleWithContext<{
|
|
20
20
|
advanced: boolean;
|
|
21
21
|
config: string;
|
|
22
22
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/commands/core.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAKtC,OAAO,EACL,wBAAwB,EACxB,6BAA6B,EAC9B,MAAM,qBAAqB,CAAC;AAiB7B;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,aAWzB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,MAAM,EAAE,6BAA6B,CAAC;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB,CA6BA,CAAC;AAEF,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/commands/core.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAKtC,OAAO,EACL,wBAAwB,EACxB,6BAA6B,EAC9B,MAAM,qBAAqB,CAAC;AAiB7B;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,aAWzB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,MAAM,EAAE,6BAA6B,CAAC;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB,CA6BA,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,wBAAwB,CAAC;IAC1C,QAAQ,EAAE,OAAO,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CAChB,CA2BA,CAAC;AAEF,eAAO,MAAM,IAAI,EAAE,wBAAwB,CAAC;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB,CAkCA,CAAC"}
|
|
@@ -13,8 +13,8 @@ export const coreCommand = {
|
|
|
13
13
|
command: 'core',
|
|
14
14
|
describe: 'Manage core Hyperlane contracts & configs',
|
|
15
15
|
builder: (yargs) => yargs
|
|
16
|
-
.command(configure)
|
|
17
16
|
.command(deploy)
|
|
17
|
+
.command(init)
|
|
18
18
|
.command(read)
|
|
19
19
|
.version(false)
|
|
20
20
|
.demandCommand(),
|
|
@@ -52,8 +52,8 @@ export const deploy = {
|
|
|
52
52
|
process.exit(0);
|
|
53
53
|
},
|
|
54
54
|
};
|
|
55
|
-
export const
|
|
56
|
-
command: '
|
|
55
|
+
export const init = {
|
|
56
|
+
command: 'init',
|
|
57
57
|
describe: 'Create a core configuration, including ISMs and hooks.',
|
|
58
58
|
builder: {
|
|
59
59
|
advanced: {
|
|
@@ -76,7 +76,7 @@ export const configure = {
|
|
|
76
76
|
};
|
|
77
77
|
export const read = {
|
|
78
78
|
command: 'read',
|
|
79
|
-
describe: 'Reads onchain
|
|
79
|
+
describe: 'Reads onchain Core configuration for a given mailbox address',
|
|
80
80
|
builder: {
|
|
81
81
|
chain: {
|
|
82
82
|
...chainCommandOption,
|