@chainsafe/lodestar 1.13.0-dev.c0c8d952b8 → 1.13.0-dev.d86e26dc4c
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/.git-data.json
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import inquirer from "inquirer";
|
|
2
|
-
import
|
|
2
|
+
import bls from "@chainsafe/bls";
|
|
3
|
+
import { computeEpochAtSlot, computeSigningRoot, computeStartSlotAtEpoch, getCurrentSlot, } from "@lodestar/state-transition";
|
|
3
4
|
import { createBeaconConfig } from "@lodestar/config";
|
|
4
5
|
import { ssz } from "@lodestar/types";
|
|
5
6
|
import { toHex } from "@lodestar/utils";
|
|
6
|
-
import { SignerType } from "@lodestar/validator";
|
|
7
|
+
import { externalSignerPostSignature, SignableMessageType, SignerType } from "@lodestar/validator";
|
|
7
8
|
import { ApiError, getClient } from "@lodestar/api";
|
|
8
9
|
import { ensure0xPrefix, YargsError } from "../../util/index.js";
|
|
9
10
|
import { getBeaconConfigFromArgs } from "../../config/index.js";
|
|
@@ -17,6 +18,10 @@ If no `pubkeys` are provided, it will exit all validators that have been importe
|
|
|
17
18
|
command: "validator voluntary-exit --network goerli --pubkeys 0xF00",
|
|
18
19
|
description: "Perform a voluntary exit for the validator who has a public key 0xF00",
|
|
19
20
|
},
|
|
21
|
+
{
|
|
22
|
+
command: "validator voluntary-exit --network goerli --externalSigner.url http://signer:9000 --externalSigner.fetch --pubkeys 0xF00",
|
|
23
|
+
description: "Perform a voluntary exit for the validator who has a public key 0xF00 and its secret key is on a remote signer",
|
|
24
|
+
},
|
|
20
25
|
],
|
|
21
26
|
options: {
|
|
22
27
|
exitEpoch: {
|
|
@@ -24,7 +29,7 @@ If no `pubkeys` are provided, it will exit all validators that have been importe
|
|
|
24
29
|
type: "number",
|
|
25
30
|
},
|
|
26
31
|
pubkeys: {
|
|
27
|
-
description: "Public keys to exit
|
|
32
|
+
description: "Public keys to exit",
|
|
28
33
|
type: "array",
|
|
29
34
|
string: true,
|
|
30
35
|
coerce: (pubkeys) =>
|
|
@@ -55,9 +60,12 @@ If no `pubkeys` are provided, it will exit all validators that have been importe
|
|
|
55
60
|
// Select signers to exit
|
|
56
61
|
const signers = await getSignersFromArgs(args, network, { logger: console, signal: new AbortController().signal });
|
|
57
62
|
if (signers.length === 0) {
|
|
58
|
-
throw new YargsError(`No
|
|
63
|
+
throw new YargsError(`No validators to exit found with current args.
|
|
59
64
|
Ensure --dataDir and --network match values used when importing keys via validator import
|
|
60
|
-
or alternatively, import keys by providing --importKeystores arg to voluntary-exit command
|
|
65
|
+
or alternatively, import keys by providing --importKeystores arg to voluntary-exit command.
|
|
66
|
+
If attempting to exit validators on a remote signer, make sure values are provided for
|
|
67
|
+
the necessary --externalSigner options.
|
|
68
|
+
`);
|
|
61
69
|
}
|
|
62
70
|
const signersToExit = selectSignersToExit(args, signers);
|
|
63
71
|
const validatorsToExit = await resolveValidatorIndexes(client, signersToExit);
|
|
@@ -77,12 +85,29 @@ ${validatorsToExit.map((v) => `${v.pubkey} ${v.index} ${v.status}`).join("\n")}`
|
|
|
77
85
|
}
|
|
78
86
|
}
|
|
79
87
|
for (const [i, { index, signer, pubkey }] of validatorsToExit.entries()) {
|
|
80
|
-
const
|
|
88
|
+
const slot = computeStartSlotAtEpoch(exitEpoch);
|
|
89
|
+
const domain = config.getDomainForVoluntaryExit(slot);
|
|
81
90
|
const voluntaryExit = { epoch: exitEpoch, validatorIndex: index };
|
|
82
91
|
const signingRoot = computeSigningRoot(ssz.phase0.VoluntaryExit, voluntaryExit, domain);
|
|
92
|
+
let signature;
|
|
93
|
+
switch (signer.type) {
|
|
94
|
+
case SignerType.Local:
|
|
95
|
+
signature = signer.secretKey.sign(signingRoot);
|
|
96
|
+
break;
|
|
97
|
+
case SignerType.Remote: {
|
|
98
|
+
const signatureHex = await externalSignerPostSignature(config, signer.url, pubkey, signingRoot, slot, {
|
|
99
|
+
data: voluntaryExit,
|
|
100
|
+
type: SignableMessageType.VOLUNTARY_EXIT,
|
|
101
|
+
});
|
|
102
|
+
signature = bls.Signature.fromHex(signatureHex);
|
|
103
|
+
break;
|
|
104
|
+
}
|
|
105
|
+
default:
|
|
106
|
+
throw new YargsError(`Unexpected signer type for ${pubkey}`);
|
|
107
|
+
}
|
|
83
108
|
ApiError.assert(await client.beacon.submitPoolVoluntaryExit({
|
|
84
109
|
message: voluntaryExit,
|
|
85
|
-
signature:
|
|
110
|
+
signature: signature.toBytes(),
|
|
86
111
|
}));
|
|
87
112
|
console.log(`Submitted voluntary exit for ${pubkey} ${i + 1}/${signersToExit.length}`);
|
|
88
113
|
}
|
|
@@ -101,9 +126,6 @@ function selectSignersToExit(args, signers) {
|
|
|
101
126
|
if (!signer) {
|
|
102
127
|
throw new YargsError(`Unknown pubkey ${pubkey}`);
|
|
103
128
|
}
|
|
104
|
-
else if (signer.type !== SignerType.Local) {
|
|
105
|
-
throw new YargsError(`pubkey ${pubkey} is not a local signer`);
|
|
106
|
-
}
|
|
107
129
|
else {
|
|
108
130
|
selectedSigners.push({ pubkey, signer });
|
|
109
131
|
}
|
|
@@ -111,7 +133,7 @@ function selectSignersToExit(args, signers) {
|
|
|
111
133
|
return selectedSigners;
|
|
112
134
|
}
|
|
113
135
|
else {
|
|
114
|
-
return signersWithPubkey
|
|
136
|
+
return signersWithPubkey;
|
|
115
137
|
}
|
|
116
138
|
}
|
|
117
139
|
// eslint-disable-next-line @typescript-eslint/explicit-function-return-type
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"voluntaryExit.js","sourceRoot":"","sources":["../../../src/cmds/validator/voluntaryExit.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,uBAAuB,EACvB,cAAc,GACf,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAC,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AACpD,OAAO,
|
|
1
|
+
{"version":3,"file":"voluntaryExit.js","sourceRoot":"","sources":["../../../src/cmds/validator/voluntaryExit.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chainsafe/lodestar",
|
|
3
|
-
"version": "1.13.0-dev.
|
|
3
|
+
"version": "1.13.0-dev.d86e26dc4c",
|
|
4
4
|
"description": "Command line interface for lodestar",
|
|
5
5
|
"author": "ChainSafe Systems",
|
|
6
6
|
"license": "LGPL-3.0",
|
|
@@ -65,17 +65,17 @@
|
|
|
65
65
|
"@libp2p/crypto": "^2.0.4",
|
|
66
66
|
"@libp2p/peer-id": "^3.0.2",
|
|
67
67
|
"@libp2p/peer-id-factory": "^3.0.4",
|
|
68
|
-
"@lodestar/api": "1.13.0-dev.
|
|
69
|
-
"@lodestar/beacon-node": "1.13.0-dev.
|
|
70
|
-
"@lodestar/config": "1.13.0-dev.
|
|
71
|
-
"@lodestar/db": "1.13.0-dev.
|
|
72
|
-
"@lodestar/light-client": "1.13.0-dev.
|
|
73
|
-
"@lodestar/logger": "1.13.0-dev.
|
|
74
|
-
"@lodestar/params": "1.13.0-dev.
|
|
75
|
-
"@lodestar/state-transition": "1.13.0-dev.
|
|
76
|
-
"@lodestar/types": "1.13.0-dev.
|
|
77
|
-
"@lodestar/utils": "1.13.0-dev.
|
|
78
|
-
"@lodestar/validator": "1.13.0-dev.
|
|
68
|
+
"@lodestar/api": "1.13.0-dev.d86e26dc4c",
|
|
69
|
+
"@lodestar/beacon-node": "1.13.0-dev.d86e26dc4c",
|
|
70
|
+
"@lodestar/config": "1.13.0-dev.d86e26dc4c",
|
|
71
|
+
"@lodestar/db": "1.13.0-dev.d86e26dc4c",
|
|
72
|
+
"@lodestar/light-client": "1.13.0-dev.d86e26dc4c",
|
|
73
|
+
"@lodestar/logger": "1.13.0-dev.d86e26dc4c",
|
|
74
|
+
"@lodestar/params": "1.13.0-dev.d86e26dc4c",
|
|
75
|
+
"@lodestar/state-transition": "1.13.0-dev.d86e26dc4c",
|
|
76
|
+
"@lodestar/types": "1.13.0-dev.d86e26dc4c",
|
|
77
|
+
"@lodestar/utils": "1.13.0-dev.d86e26dc4c",
|
|
78
|
+
"@lodestar/validator": "1.13.0-dev.d86e26dc4c",
|
|
79
79
|
"@multiformats/multiaddr": "^12.1.3",
|
|
80
80
|
"@types/lockfile": "^1.0.2",
|
|
81
81
|
"bip39": "^3.1.0",
|
|
@@ -96,7 +96,7 @@
|
|
|
96
96
|
"yargs": "^17.7.1"
|
|
97
97
|
},
|
|
98
98
|
"devDependencies": {
|
|
99
|
-
"@lodestar/test-utils": "1.13.0-dev.
|
|
99
|
+
"@lodestar/test-utils": "1.13.0-dev.d86e26dc4c",
|
|
100
100
|
"@types/debug": "^4.1.7",
|
|
101
101
|
"@types/expand-tilde": "^2.0.0",
|
|
102
102
|
"@types/got": "^9.6.12",
|
|
@@ -104,5 +104,5 @@
|
|
|
104
104
|
"@types/lodash": "^4.14.192",
|
|
105
105
|
"@types/yargs": "^17.0.24"
|
|
106
106
|
},
|
|
107
|
-
"gitHead": "
|
|
107
|
+
"gitHead": "5fb4c6e2107853c571a7debe64108c0312c51e02"
|
|
108
108
|
}
|