@chainsafe/lodestar 1.9.0 → 1.10.0-dev.c042a0b8cc
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 +2 -2
- package/README.md +1 -1
- package/lib/cmds/beacon/options.d.ts +2 -5
- package/lib/cmds/beacon/options.js +6 -9
- package/lib/cmds/beacon/options.js.map +1 -1
- package/lib/cmds/dev/options.d.ts +6 -6
- package/lib/cmds/lightclient/handler.js +5 -0
- package/lib/cmds/lightclient/handler.js.map +1 -1
- package/lib/cmds/lightclient/options.d.ts +2 -2
- package/lib/cmds/lightclient/options.js +0 -2
- package/lib/cmds/lightclient/options.js.map +1 -1
- package/lib/cmds/validator/blsToExecutionChange.d.ts +3 -3
- package/lib/cmds/validator/blsToExecutionChange.js +13 -6
- package/lib/cmds/validator/blsToExecutionChange.js.map +1 -1
- package/lib/cmds/validator/handler.js +4 -2
- package/lib/cmds/validator/handler.js.map +1 -1
- package/lib/cmds/validator/list.js +1 -1
- package/lib/cmds/validator/list.js.map +1 -1
- package/lib/cmds/validator/options.d.ts +3 -3
- package/lib/cmds/validator/options.js +17 -16
- package/lib/cmds/validator/options.js.map +1 -1
- package/lib/cmds/validator/slashingProtection/export.d.ts +1 -1
- package/lib/cmds/validator/slashingProtection/export.js +6 -3
- package/lib/cmds/validator/slashingProtection/export.js.map +1 -1
- package/lib/cmds/validator/slashingProtection/import.d.ts +1 -1
- package/lib/cmds/validator/slashingProtection/import.js +6 -2
- package/lib/cmds/validator/slashingProtection/import.js.map +1 -1
- package/lib/cmds/validator/slashingProtection/options.js +1 -1
- package/lib/cmds/validator/slashingProtection/options.js.map +1 -1
- package/lib/cmds/validator/voluntaryExit.js +2 -2
- package/lib/cmds/validator/voluntaryExit.js.map +1 -1
- package/lib/options/beaconNodeOptions/api.d.ts +6 -6
- package/lib/options/beaconNodeOptions/api.js +2 -2
- package/lib/options/beaconNodeOptions/api.js.map +1 -1
- package/lib/options/beaconNodeOptions/builder.d.ts +4 -4
- package/lib/options/beaconNodeOptions/builder.js +7 -6
- package/lib/options/beaconNodeOptions/builder.js.map +1 -1
- package/lib/options/beaconNodeOptions/chain.d.ts +13 -13
- package/lib/options/beaconNodeOptions/chain.js +5 -4
- package/lib/options/beaconNodeOptions/chain.js.map +1 -1
- package/lib/options/beaconNodeOptions/eth1.d.ts +6 -6
- package/lib/options/beaconNodeOptions/eth1.js +3 -2
- package/lib/options/beaconNodeOptions/eth1.js.map +1 -1
- package/lib/options/beaconNodeOptions/execution.d.ts +1 -1
- package/lib/options/beaconNodeOptions/execution.js +5 -5
- package/lib/options/beaconNodeOptions/execution.js.map +1 -1
- package/lib/options/beaconNodeOptions/index.d.ts +11 -11
- package/lib/options/beaconNodeOptions/metrics.d.ts +1 -1
- package/lib/options/beaconNodeOptions/metrics.js +2 -2
- package/lib/options/beaconNodeOptions/metrics.js.map +1 -1
- package/lib/options/beaconNodeOptions/monitoring.d.ts +5 -5
- package/lib/options/beaconNodeOptions/network.d.ts +19 -19
- package/lib/options/beaconNodeOptions/network.js +2 -2
- package/lib/options/beaconNodeOptions/network.js.map +1 -1
- package/lib/options/beaconNodeOptions/sync.d.ts +4 -4
- package/lib/options/beaconNodeOptions/sync.js +2 -1
- package/lib/options/beaconNodeOptions/sync.js.map +1 -1
- package/lib/options/globalOptions.d.ts +2 -2
- package/lib/options/logOptions.js +2 -2
- package/lib/options/logOptions.js.map +1 -1
- package/lib/util/command.d.ts +2 -1
- package/lib/util/command.js.map +1 -1
- package/package.json +13 -13
package/.git-data.json
CHANGED
package/README.md
CHANGED
|
@@ -23,7 +23,7 @@ Here's a quick list of the available CLI commands:
|
|
|
23
23
|
| - | - |
|
|
24
24
|
| `./bin/lodestar init` | Write a configuration and network identity to disk, by default `./.lodestar`|
|
|
25
25
|
|`./bin/lodestar beacon` | Run a beacon node using a configuration from disk, by default `./.lodestar`|
|
|
26
|
-
|`./bin/lodestar account` | Run various
|
|
26
|
+
|`./bin/lodestar account` | Run various sub-commands for creating/managing Ethereum Consensus accounts|
|
|
27
27
|
|`./bin/lodestar validator` | Run one or more validator clients|
|
|
28
28
|
|`./bin/lodestar dev` | Quickly bootstrap a beacon node and multiple validators. Use for development and testing|
|
|
29
29
|
Append `--help` to any of these commands to print out all options for each command.
|
|
@@ -19,6 +19,7 @@ type BeaconExtraArgs = {
|
|
|
19
19
|
peerStoreDir?: string;
|
|
20
20
|
persistNetworkIdentity?: boolean;
|
|
21
21
|
private?: boolean;
|
|
22
|
+
attachToGlobalThis?: boolean;
|
|
22
23
|
};
|
|
23
24
|
export declare const beaconExtraOptions: CliCommandOptions<BeaconExtraArgs>;
|
|
24
25
|
type ENRArgs = {
|
|
@@ -30,11 +31,7 @@ type ENRArgs = {
|
|
|
30
31
|
"enr.udp6"?: number;
|
|
31
32
|
nat?: boolean;
|
|
32
33
|
};
|
|
33
|
-
export type
|
|
34
|
-
attachToGlobalThis: boolean;
|
|
35
|
-
};
|
|
36
|
-
export declare const debugOptions: CliCommandOptions<DebugArgs>;
|
|
37
|
-
export type BeaconArgs = BeaconExtraArgs & LogArgs & BeaconPaths & BeaconNodeArgs & ENRArgs & DebugArgs;
|
|
34
|
+
export type BeaconArgs = BeaconExtraArgs & LogArgs & BeaconPaths & BeaconNodeArgs & ENRArgs;
|
|
38
35
|
export declare const beaconOptions: {
|
|
39
36
|
[k: string]: Options;
|
|
40
37
|
};
|
|
@@ -33,7 +33,7 @@ export const beaconExtraOptions = {
|
|
|
33
33
|
group: "weak subjectivity",
|
|
34
34
|
},
|
|
35
35
|
wssCheckpoint: {
|
|
36
|
-
description: "Start beacon node off a state at the provided weak subjectivity checkpoint, to be supplied in <blockRoot>:<epoch> format. For example, 0x1234:100 will sync and start off from the
|
|
36
|
+
description: "Start beacon node off a state at the provided weak subjectivity checkpoint, to be supplied in <blockRoot>:<epoch> format. For example, 0x1234:100 will sync and start off from the weak subjectivity state at checkpoint of epoch 100 with block root 0x1234.",
|
|
37
37
|
type: "string",
|
|
38
38
|
group: "weak subjectivity",
|
|
39
39
|
},
|
|
@@ -80,6 +80,11 @@ export const beaconExtraOptions = {
|
|
|
80
80
|
description: "Do not send implementation details over p2p identify protocol and in builder requests",
|
|
81
81
|
type: "boolean",
|
|
82
82
|
},
|
|
83
|
+
attachToGlobalThis: {
|
|
84
|
+
hidden: true,
|
|
85
|
+
description: "Attach the beacon node to `globalThis`. Useful to inspect a running beacon node.",
|
|
86
|
+
type: "boolean",
|
|
87
|
+
},
|
|
83
88
|
};
|
|
84
89
|
const enrOptions = {
|
|
85
90
|
"enr.ip": {
|
|
@@ -118,19 +123,11 @@ const enrOptions = {
|
|
|
118
123
|
group: "enr",
|
|
119
124
|
},
|
|
120
125
|
};
|
|
121
|
-
export const debugOptions = {
|
|
122
|
-
attachToGlobalThis: {
|
|
123
|
-
hidden: true,
|
|
124
|
-
description: "Attach the beacon node to `globalThis`. Useful to inspect a running beacon node.",
|
|
125
|
-
type: "boolean",
|
|
126
|
-
},
|
|
127
|
-
};
|
|
128
126
|
export const beaconOptions = {
|
|
129
127
|
...beaconExtraOptions,
|
|
130
128
|
...logOptions,
|
|
131
129
|
...beaconNodeOptions,
|
|
132
130
|
...paramsOptions,
|
|
133
131
|
...enrOptions,
|
|
134
|
-
...debugOptions,
|
|
135
132
|
};
|
|
136
133
|
//# sourceMappingURL=options.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../../src/cmds/beacon/options.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,iBAAiB,EAAE,aAAa,EAAiB,MAAM,wBAAwB,CAAC;AACxF,OAAO,EAAU,UAAU,EAAC,MAAM,6BAA6B,CAAC;AAEhE,OAAO,EAAC,kBAAkB,EAAc,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../../src/cmds/beacon/options.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,7 +11,7 @@ type IDevOwnArgs = {
|
|
|
11
11
|
};
|
|
12
12
|
export declare const devOptions: {
|
|
13
13
|
genesisEth1Hash: Options;
|
|
14
|
-
genesisValidators: Options
|
|
14
|
+
genesisValidators: Options & Required<Pick<Options, "default">>;
|
|
15
15
|
startValidators: Options;
|
|
16
16
|
genesisTime: Options;
|
|
17
17
|
reset: Options;
|
|
@@ -106,16 +106,16 @@ export declare const devOptions: {
|
|
|
106
106
|
"keymanager.cors": Options;
|
|
107
107
|
"keymanager.headerLimit": Options;
|
|
108
108
|
"keymanager.bodyLimit": Options;
|
|
109
|
-
logLevel: Options
|
|
109
|
+
logLevel: Options & Required<Pick<Options, "default">>;
|
|
110
110
|
logFile: Options;
|
|
111
|
-
logFileLevel: Options
|
|
112
|
-
logFileDailyRotate: Options
|
|
111
|
+
logFileLevel: Options & Required<Pick<Options, "default">>;
|
|
112
|
+
logFileDailyRotate: Options & Required<Pick<Options, "default">>;
|
|
113
113
|
logFormatGenesisTime: Options;
|
|
114
114
|
logPrefix: Options;
|
|
115
115
|
logFormat: Options;
|
|
116
116
|
logLevelModule: Options;
|
|
117
117
|
validatorsDbDir: Options;
|
|
118
|
-
beaconNodes: Options
|
|
118
|
+
beaconNodes: Options & Required<Pick<Options, "default">>;
|
|
119
119
|
force: Options;
|
|
120
120
|
graffiti: Options;
|
|
121
121
|
afterBlockDelaySlotFraction: Options;
|
|
@@ -123,7 +123,7 @@ export declare const devOptions: {
|
|
|
123
123
|
disableAttestationGrouping: Options;
|
|
124
124
|
proposerSettingsFile: Options;
|
|
125
125
|
strictFeeRecipientCheck: Options;
|
|
126
|
-
|
|
126
|
+
doppelgangerProtection: Options;
|
|
127
127
|
defaultGasLimit: Options;
|
|
128
128
|
"builder.selection": Options;
|
|
129
129
|
importKeystores: Options;
|
|
@@ -7,11 +7,16 @@ import { getNodeLogger } from "@lodestar/logger/node";
|
|
|
7
7
|
import { getBeaconConfigFromArgs } from "../../config/beaconParams.js";
|
|
8
8
|
import { getGlobalPaths } from "../../paths/global.js";
|
|
9
9
|
import { parseLoggerArgs } from "../../util/logger.js";
|
|
10
|
+
import { YargsError } from "../../util/errors.js";
|
|
10
11
|
export async function lightclientHandler(args) {
|
|
11
12
|
const { config, network } = getBeaconConfigFromArgs(args);
|
|
12
13
|
const globalPaths = getGlobalPaths(args, network);
|
|
13
14
|
const logger = getNodeLogger(parseLoggerArgs(args, { defaultLogFilepath: path.join(globalPaths.dataDir, "lightclient.log") }, config));
|
|
14
15
|
const { beaconApiUrl, checkpointRoot } = args;
|
|
16
|
+
if (!beaconApiUrl)
|
|
17
|
+
throw new YargsError("must provide beaconApiUrl arg");
|
|
18
|
+
if (!checkpointRoot)
|
|
19
|
+
throw new YargsError("must provide checkpointRoot arg");
|
|
15
20
|
const api = getClient({ baseUrl: beaconApiUrl }, { config });
|
|
16
21
|
const res = await api.beacon.getGenesis();
|
|
17
22
|
ApiError.assert(res, "Can not fetch genesis data");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/cmds/lightclient/handler.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAC,QAAQ,EAAE,SAAS,EAAC,MAAM,eAAe,CAAC;AAClD,OAAO,EAAC,WAAW,EAAC,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAC,aAAa,EAAC,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAC,wBAAwB,EAAC,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAC,aAAa,EAAC,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAC,uBAAuB,EAAC,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAC,cAAc,EAAC,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/cmds/lightclient/handler.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAC,QAAQ,EAAE,SAAS,EAAC,MAAM,eAAe,CAAC;AAClD,OAAO,EAAC,WAAW,EAAC,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAC,aAAa,EAAC,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAC,wBAAwB,EAAC,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAC,aAAa,EAAC,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAC,uBAAuB,EAAC,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAC,cAAc,EAAC,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAC,UAAU,EAAC,MAAM,sBAAsB,CAAC;AAIhD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAmC;IAC1E,MAAM,EAAC,MAAM,EAAE,OAAO,EAAC,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;IACxD,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAElD,MAAM,MAAM,GAAG,aAAa,CAC1B,eAAe,CAAC,IAAI,EAAE,EAAC,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,iBAAiB,CAAC,EAAC,EAAE,MAAM,CAAC,CACvG,CAAC;IAEF,MAAM,EAAC,YAAY,EAAE,cAAc,EAAC,GAAG,IAAI,CAAC;IAC5C,IAAI,CAAC,YAAY;QAAE,MAAM,IAAI,UAAU,CAAC,+BAA+B,CAAC,CAAC;IACzE,IAAI,CAAC,cAAc;QAAE,MAAM,IAAI,UAAU,CAAC,iCAAiC,CAAC,CAAC;IAE7E,MAAM,GAAG,GAAG,SAAS,CAAC,EAAC,OAAO,EAAE,YAAY,EAAC,EAAE,EAAC,MAAM,EAAC,CAAC,CAAC;IACzD,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;IAC1C,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,4BAA4B,CAAC,CAAC;IAEnD,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,4BAA4B,CAAC;QAC5D,MAAM;QACN,MAAM;QACN,WAAW,EAAE;YACX,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC;YAClD,qBAAqB,EAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,qBAAqB;SAC/D;QACD,cAAc,EAAE,aAAa,CAAC,cAAc,CAAC;QAC7C,SAAS,EAAE,IAAI,wBAAwB,CAAC,GAAG,CAAC;KAC7C,CAAC,CAAC;IAEH,MAAM,CAAC,KAAK,EAAE,CAAC;AACjB,CAAC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { LogArgs } from "../../options/logOptions.js";
|
|
2
2
|
import { CliCommandOptions } from "../../util/index.js";
|
|
3
3
|
export type ILightClientArgs = LogArgs & {
|
|
4
|
-
beaconApiUrl
|
|
5
|
-
checkpointRoot
|
|
4
|
+
beaconApiUrl?: string;
|
|
5
|
+
checkpointRoot?: string;
|
|
6
6
|
};
|
|
7
7
|
export declare const lightclientOptions: CliCommandOptions<ILightClientArgs>;
|
|
8
8
|
//# sourceMappingURL=options.d.ts.map
|
|
@@ -4,12 +4,10 @@ export const lightclientOptions = {
|
|
|
4
4
|
beaconApiUrl: {
|
|
5
5
|
description: "Url to a beacon node that support lightclient API",
|
|
6
6
|
type: "string",
|
|
7
|
-
require: true,
|
|
8
7
|
},
|
|
9
8
|
checkpointRoot: {
|
|
10
9
|
description: "Checkpoint root hex string to sync the lightclient from, start with 0x",
|
|
11
10
|
type: "string",
|
|
12
|
-
require: true,
|
|
13
11
|
},
|
|
14
12
|
};
|
|
15
13
|
//# sourceMappingURL=options.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../../src/cmds/lightclient/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,UAAU,EAAC,MAAM,6BAA6B,CAAC;AAQhE,MAAM,CAAC,MAAM,kBAAkB,GAAwC;IACrE,GAAG,UAAU;IACb,YAAY,EAAE;QACZ,WAAW,EAAE,mDAAmD;QAChE,IAAI,EAAE,QAAQ;
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../../src/cmds/lightclient/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,UAAU,EAAC,MAAM,6BAA6B,CAAC;AAQhE,MAAM,CAAC,MAAM,kBAAkB,GAAwC;IACrE,GAAG,UAAU;IACb,YAAY,EAAE;QACZ,WAAW,EAAE,mDAAmD;QAChE,IAAI,EAAE,QAAQ;KACf;IACD,cAAc,EAAE;QACd,WAAW,EAAE,wEAAwE;QACrF,IAAI,EAAE,QAAQ;KACf;CACF,CAAC"}
|
|
@@ -2,9 +2,9 @@ import { CliCommand } from "../../util/index.js";
|
|
|
2
2
|
import { GlobalArgs } from "../../options/index.js";
|
|
3
3
|
import { IValidatorCliArgs } from "./options.js";
|
|
4
4
|
type BlsToExecutionChangeArgs = {
|
|
5
|
-
publicKey
|
|
6
|
-
fromBlsPrivkey
|
|
7
|
-
toExecutionAddress
|
|
5
|
+
publicKey?: string;
|
|
6
|
+
fromBlsPrivkey?: string;
|
|
7
|
+
toExecutionAddress?: string;
|
|
8
8
|
};
|
|
9
9
|
export declare const blsToExecutionChange: CliCommand<BlsToExecutionChangeArgs, IValidatorCliArgs & GlobalArgs>;
|
|
10
10
|
export {};
|
|
@@ -6,6 +6,7 @@ import { ApiError, getClient } from "@lodestar/api";
|
|
|
6
6
|
import { fromHexString } from "@chainsafe/ssz";
|
|
7
7
|
import bls from "@chainsafe/bls";
|
|
8
8
|
import { PointFormat } from "@chainsafe/bls/types";
|
|
9
|
+
import { YargsError } from "../../util/index.js";
|
|
9
10
|
import { getBeaconConfigFromArgs } from "../../config/index.js";
|
|
10
11
|
export const blsToExecutionChange = {
|
|
11
12
|
command: "bls-to-execution-change",
|
|
@@ -20,7 +21,7 @@ like to choose for BLS To Execution Change.",
|
|
|
20
21
|
],
|
|
21
22
|
options: {
|
|
22
23
|
publicKey: {
|
|
23
|
-
description: "Validator
|
|
24
|
+
description: "Validator public key for which to set withdrawal address hence enabling withdrawals",
|
|
24
25
|
type: "string",
|
|
25
26
|
string: true,
|
|
26
27
|
},
|
|
@@ -36,7 +37,13 @@ like to choose for BLS To Execution Change.",
|
|
|
36
37
|
},
|
|
37
38
|
},
|
|
38
39
|
handler: async (args) => {
|
|
39
|
-
const publicKey = args
|
|
40
|
+
const { publicKey, fromBlsPrivkey, toExecutionAddress } = args;
|
|
41
|
+
if (!publicKey)
|
|
42
|
+
throw new YargsError("must provide publicKey arg");
|
|
43
|
+
if (!fromBlsPrivkey)
|
|
44
|
+
throw new YargsError("must provide fromBlsPrivkey arg");
|
|
45
|
+
if (!toExecutionAddress)
|
|
46
|
+
throw new YargsError("must provide toExecutionAddress arg");
|
|
40
47
|
// Fetch genesisValidatorsRoot always from beacon node as anyway beacon node is needed for
|
|
41
48
|
// submitting the signed message
|
|
42
49
|
const { config: chainForkConfig } = getBeaconConfigFromArgs(args);
|
|
@@ -52,19 +59,19 @@ like to choose for BLS To Execution Change.",
|
|
|
52
59
|
if (stateValidator === undefined) {
|
|
53
60
|
throw new Error(`Validator pubkey ${publicKey} not found in state`);
|
|
54
61
|
}
|
|
55
|
-
const
|
|
56
|
-
const fromBlsPubkey =
|
|
62
|
+
const blsPrivkey = bls.SecretKey.fromBytes(fromHexString(fromBlsPrivkey));
|
|
63
|
+
const fromBlsPubkey = blsPrivkey.toPublicKey().toBytes(PointFormat.compressed);
|
|
57
64
|
const blsToExecutionChange = {
|
|
58
65
|
validatorIndex: stateValidator.index,
|
|
59
66
|
fromBlsPubkey,
|
|
60
|
-
toExecutionAddress: fromHexString(
|
|
67
|
+
toExecutionAddress: fromHexString(toExecutionAddress),
|
|
61
68
|
};
|
|
62
69
|
const signatureFork = ForkName.phase0;
|
|
63
70
|
const domain = config.getDomainAtFork(signatureFork, DOMAIN_BLS_TO_EXECUTION_CHANGE);
|
|
64
71
|
const signingRoot = computeSigningRoot(ssz.capella.BLSToExecutionChange, blsToExecutionChange, domain);
|
|
65
72
|
const signedBLSToExecutionChange = {
|
|
66
73
|
message: blsToExecutionChange,
|
|
67
|
-
signature:
|
|
74
|
+
signature: blsPrivkey.sign(signingRoot).toBytes(),
|
|
68
75
|
};
|
|
69
76
|
ApiError.assert(await client.beacon.submitPoolBlsToExecutionChange([signedBLSToExecutionChange]), "Can not submit bls to execution change");
|
|
70
77
|
console.log(`Submitted bls to execution change for ${publicKey}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blsToExecutionChange.js","sourceRoot":"","sources":["../../../src/cmds/validator/blsToExecutionChange.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAC,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAC,8BAA8B,EAAE,QAAQ,EAAC,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAC,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAC,GAAG,EAAU,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAC,QAAQ,EAAE,SAAS,EAAC,MAAM,eAAe,CAAC;AAClD,OAAO,EAAC,aAAa,EAAC,MAAM,gBAAgB,CAAC;AAC7C,OAAO,GAAG,MAAM,gBAAgB,CAAC;AACjC,OAAO,EAAC,WAAW,EAAC,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"blsToExecutionChange.js","sourceRoot":"","sources":["../../../src/cmds/validator/blsToExecutionChange.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,7 +22,7 @@ import { KeymanagerRestApiServer } from "./keymanager/server.js";
|
|
|
22
22
|
export async function validatorHandler(args) {
|
|
23
23
|
var _a, _b, _c, _d, _e, _f;
|
|
24
24
|
const { config, network } = getBeaconConfigFromArgs(args);
|
|
25
|
-
const
|
|
25
|
+
const { doppelgangerProtection } = args;
|
|
26
26
|
const validatorPaths = getValidatorPaths(args, network);
|
|
27
27
|
const accountPaths = getAccountPaths(args, network);
|
|
28
28
|
const defaultLogFilepath = path.join(validatorPaths.dataDir, "validator.log");
|
|
@@ -117,7 +117,7 @@ export async function validatorHandler(args) {
|
|
|
117
117
|
processShutdownCallback,
|
|
118
118
|
signers,
|
|
119
119
|
abortController,
|
|
120
|
-
|
|
120
|
+
doppelgangerProtection,
|
|
121
121
|
afterBlockDelaySlotFraction: args.afterBlockDelaySlotFraction,
|
|
122
122
|
scAfterBlockDelaySlotFraction: args.scAfterBlockDelaySlotFraction,
|
|
123
123
|
disableAttestationGrouping: args.disableAttestationGrouping,
|
|
@@ -187,6 +187,8 @@ function parseBuilderSelection(builderSelection) {
|
|
|
187
187
|
break;
|
|
188
188
|
case "builderalways":
|
|
189
189
|
break;
|
|
190
|
+
case "builderonly":
|
|
191
|
+
break;
|
|
190
192
|
default:
|
|
191
193
|
throw Error("Invalid input for builder selection, check help.");
|
|
192
194
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/cmds/validator/handler.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAC,eAAe,EAAC,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAC,iBAAiB,EAAC,MAAM,cAAc,CAAC;AAC/C,OAAO,EAEL,kBAAkB,EAClB,SAAS,GAGV,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAC,UAAU,EAAkB,MAAM,qBAAqB,CAAC;AAChE,OAAO,EACL,qBAAqB,EACrB,oBAAoB,EACpB,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAC,aAAa,EAAC,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAC,uBAAuB,EAAC,MAAM,uBAAuB,CAAC;AAE9D,OAAO,EAAC,UAAU,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,KAAK,EAAE,eAAe,EAAC,MAAM,qBAAqB,CAAC;AAC7G,OAAO,EAAC,kBAAkB,EAAE,iBAAiB,EAAE,mBAAmB,EAAC,MAAM,qBAAqB,CAAC;AAC/F,OAAO,EAAC,cAAc,EAAC,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAC,eAAe,EAAE,iBAAiB,EAAC,MAAM,YAAY,CAAC;AAC9D,OAAO,EAAoB,8BAA8B,EAAE,iCAAiC,EAAC,MAAM,cAAc,CAAC;AAClH,OAAO,EAAC,kBAAkB,EAAC,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAC,UAAU,EAAC,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAC,aAAa,EAAC,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAC,oBAAoB,EAAC,MAAM,+BAA+B,CAAC;AAEnE,OAAO,EAAC,uBAAuB,EAAC,MAAM,wBAAwB,CAAC;AAE/D;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,IAAoC;;IACzE,MAAM,EAAC,MAAM,EAAE,OAAO,EAAC,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAExD,MAAM,
|
|
1
|
+
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/cmds/validator/handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/cmds/validator/list.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,uBAAuB,EAAC,MAAM,8BAA8B,CAAC;AAGrE,OAAO,EAAC,kBAAkB,EAAE,kBAAkB,EAAC,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAC,UAAU,EAAC,MAAM,yBAAyB,CAAC;AAInD,MAAM,CAAC,MAAM,IAAI,GAA0D;IACzE,OAAO,EAAE,MAAM;IAEf,QAAQ,EAAE,yCAAyC;IAEnD,QAAQ,EAAE;QACR;YACE,OAAO,EAAE,gBAAgB;YACzB,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/cmds/validator/list.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,uBAAuB,EAAC,MAAM,8BAA8B,CAAC;AAGrE,OAAO,EAAC,kBAAkB,EAAE,kBAAkB,EAAC,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAC,UAAU,EAAC,MAAM,yBAAyB,CAAC;AAInD,MAAM,CAAC,MAAM,IAAI,GAA0D;IACzE,OAAO,EAAE,MAAM;IAEf,QAAQ,EAAE,yCAAyC;IAEnD,QAAQ,EAAE;QACR;YACE,OAAO,EAAE,gBAAgB;YACzB,WAAW,EAAE,oDAAoD;SAClE;KACF;IAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACtB,MAAM,EAAC,OAAO,EAAC,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;QAEhD,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,OAAO,EAAE,EAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,eAAe,EAAE,CAAC,MAAM,EAAC,CAAC,CAAC;QAEjH,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAE7B,4BAA4B;QAC5B,OAAO,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;IACzC,CAAC;CACF,CAAC"}
|
|
@@ -21,15 +21,15 @@ export declare const DEFAULT_BEACON_NODE_URL = "";
|
|
|
21
21
|
export type IValidatorCliArgs = AccountValidatorArgs & KeymanagerArgs & LogArgs & {
|
|
22
22
|
validatorsDbDir?: string;
|
|
23
23
|
beaconNodes: string[];
|
|
24
|
-
force
|
|
25
|
-
graffiti
|
|
24
|
+
force?: boolean;
|
|
25
|
+
graffiti?: string;
|
|
26
26
|
afterBlockDelaySlotFraction?: number;
|
|
27
27
|
scAfterBlockDelaySlotFraction?: number;
|
|
28
28
|
disableAttestationGrouping?: boolean;
|
|
29
29
|
suggestedFeeRecipient?: string;
|
|
30
30
|
proposerSettingsFile?: string;
|
|
31
31
|
strictFeeRecipientCheck?: boolean;
|
|
32
|
-
|
|
32
|
+
doppelgangerProtection?: boolean;
|
|
33
33
|
defaultGasLimit?: number;
|
|
34
34
|
builder?: boolean;
|
|
35
35
|
"builder.selection"?: string;
|
|
@@ -19,31 +19,31 @@ export const DEFAULT_BEACON_NODE_URL = "";
|
|
|
19
19
|
export const keymanagerOptions = {
|
|
20
20
|
keymanager: {
|
|
21
21
|
type: "boolean",
|
|
22
|
-
description: "Enable
|
|
22
|
+
description: "Enable key manager API server",
|
|
23
23
|
default: false,
|
|
24
24
|
group: "keymanager",
|
|
25
25
|
},
|
|
26
26
|
"keymanager.authEnabled": {
|
|
27
27
|
type: "boolean",
|
|
28
|
-
description: "Enable token bearer authentication for
|
|
28
|
+
description: "Enable token bearer authentication for key manager API server",
|
|
29
29
|
default: true,
|
|
30
30
|
group: "keymanager",
|
|
31
31
|
},
|
|
32
32
|
"keymanager.port": {
|
|
33
33
|
type: "number",
|
|
34
|
-
description: "Set port for
|
|
34
|
+
description: "Set port for key manager API",
|
|
35
35
|
defaultDescription: String(keymanagerRestApiServerOptsDefault.port),
|
|
36
36
|
group: "keymanager",
|
|
37
37
|
},
|
|
38
38
|
"keymanager.address": {
|
|
39
39
|
type: "string",
|
|
40
|
-
description: "Set host for
|
|
40
|
+
description: "Set host for key manager API",
|
|
41
41
|
defaultDescription: keymanagerRestApiServerOptsDefault.address,
|
|
42
42
|
group: "keymanager",
|
|
43
43
|
},
|
|
44
44
|
"keymanager.cors": {
|
|
45
45
|
type: "string",
|
|
46
|
-
description: "Configures the Access-Control-Allow-Origin CORS header for
|
|
46
|
+
description: "Configures the Access-Control-Allow-Origin CORS header for key manager API",
|
|
47
47
|
defaultDescription: keymanagerRestApiServerOptsDefault.cors,
|
|
48
48
|
group: "keymanager",
|
|
49
49
|
},
|
|
@@ -126,20 +126,20 @@ export const validatorOptions = {
|
|
|
126
126
|
type: "boolean",
|
|
127
127
|
},
|
|
128
128
|
proposerSettingsFile: {
|
|
129
|
-
description: "A yaml file to specify detailed default and per validator
|
|
129
|
+
description: "A yaml file to specify detailed default and per validator public key customized proposer configs. PS: This feature and its format is in alpha and subject to change",
|
|
130
130
|
type: "string",
|
|
131
131
|
},
|
|
132
132
|
suggestedFeeRecipient: {
|
|
133
|
-
description: "Specify fee recipient default for collecting the EL block fees and rewards (a hex string representing 20 bytes address: ^0x[a-fA-F0-9]{40}$). It would be possible (WIP) to override this per validator key using config or
|
|
133
|
+
description: "Specify fee recipient default for collecting the EL block fees and rewards (a hex string representing 20 bytes address: ^0x[a-fA-F0-9]{40}$). It would be possible (WIP) to override this per validator key using config or key manager API. Only used post merge.",
|
|
134
134
|
defaultDescription: defaultOptions.suggestedFeeRecipient,
|
|
135
135
|
type: "string",
|
|
136
136
|
},
|
|
137
137
|
strictFeeRecipientCheck: {
|
|
138
|
-
description: "Enable strict checking of the validator's feeRecipient with the one returned by engine",
|
|
138
|
+
description: "Enable strict checking of the validator's `feeRecipient` with the one returned by engine",
|
|
139
139
|
type: "boolean",
|
|
140
140
|
},
|
|
141
141
|
defaultGasLimit: {
|
|
142
|
-
description: "Suggested
|
|
142
|
+
description: "Suggested gas limit to the engine/builder for building execution payloads. Only used post merge.",
|
|
143
143
|
defaultDescription: `${defaultOptions.defaultGasLimit}`,
|
|
144
144
|
type: "number",
|
|
145
145
|
},
|
|
@@ -150,23 +150,24 @@ export const validatorOptions = {
|
|
|
150
150
|
},
|
|
151
151
|
"builder.selection": {
|
|
152
152
|
type: "string",
|
|
153
|
-
description: "Default builder block selection strategy: maxprofit or
|
|
154
|
-
defaultDescription:
|
|
153
|
+
description: "Default builder block selection strategy: `maxprofit`, `builderalways`, or `builderonly`",
|
|
154
|
+
defaultDescription: `\`${defaultOptions.builderSelection}\``,
|
|
155
155
|
group: "builder",
|
|
156
156
|
},
|
|
157
157
|
importKeystores: {
|
|
158
158
|
alias: ["keystore"],
|
|
159
|
-
description: "Path(s) to a directory or single
|
|
159
|
+
description: "Path(s) to a directory or single file path to validator keystores, i.e. Launchpad validators",
|
|
160
160
|
defaultDescription: "./keystores/*.json",
|
|
161
161
|
type: "array",
|
|
162
162
|
},
|
|
163
163
|
importKeystoresPassword: {
|
|
164
164
|
alias: ["passphraseFile"],
|
|
165
|
-
description: "Path to a file with password to decrypt all keystores from importKeystores option",
|
|
166
|
-
defaultDescription: "
|
|
165
|
+
description: "Path to a file with password to decrypt all keystores from `importKeystores` option",
|
|
166
|
+
defaultDescription: "`./password.txt`",
|
|
167
167
|
type: "string",
|
|
168
168
|
},
|
|
169
|
-
|
|
169
|
+
doppelgangerProtection: {
|
|
170
|
+
alias: ["doppelgangerProtectionEnabled"],
|
|
170
171
|
description: "Enables Doppelganger protection",
|
|
171
172
|
default: false,
|
|
172
173
|
type: "boolean",
|
|
@@ -192,7 +193,7 @@ export const validatorOptions = {
|
|
|
192
193
|
},
|
|
193
194
|
"externalSigner.fetch": {
|
|
194
195
|
conflicts: ["externalSigner.pubkeys"],
|
|
195
|
-
description: "Fetch then list of
|
|
196
|
+
description: "Fetch then list of public keys to validate from an external signer",
|
|
196
197
|
type: "boolean",
|
|
197
198
|
group: "externalSignerUrl",
|
|
198
199
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../../src/cmds/validator/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAU,UAAU,EAAC,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAC,cAAc,EAAoB,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAC,kCAAkC,EAAC,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAC,mBAAmB,EAAE,qBAAqB,EAAC,MAAM,YAAY,CAAC;AAStE,MAAM,CAAC,MAAM,8BAA8B,GAAG;IAC5C,OAAO,EAAE,KAAK;IACd,IAAI,EAAE,IAAI;IACV,OAAO,EAAE,WAAW;CACrB,CAAC;AAEF,MAAM,CAAC,MAAM,iCAAiC,GAAG;IAC/C,QAAQ,EAAE,KAAM;IAChB,YAAY,EAAE,KAAM;IACpB,cAAc,EAAE,KAAM;IACtB,kBAAkB,EAAE,KAAK;CAC1B,CAAC;AAEF,2DAA2D;AAC3D,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,CAAC;AAuD1C,MAAM,CAAC,MAAM,iBAAiB,GAAsC;IAClE,UAAU,EAAE;QACV,IAAI,EAAE,SAAS;QACf,WAAW,EAAE
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../../src/cmds/validator/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAU,UAAU,EAAC,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAC,cAAc,EAAoB,MAAM,qBAAqB,CAAC;AACtE,OAAO,EAAC,kCAAkC,EAAC,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAC,mBAAmB,EAAE,qBAAqB,EAAC,MAAM,YAAY,CAAC;AAStE,MAAM,CAAC,MAAM,8BAA8B,GAAG;IAC5C,OAAO,EAAE,KAAK;IACd,IAAI,EAAE,IAAI;IACV,OAAO,EAAE,WAAW;CACrB,CAAC;AAEF,MAAM,CAAC,MAAM,iCAAiC,GAAG;IAC/C,QAAQ,EAAE,KAAM;IAChB,YAAY,EAAE,KAAM;IACpB,cAAc,EAAE,KAAM;IACtB,kBAAkB,EAAE,KAAK;CAC1B,CAAC;AAEF,2DAA2D;AAC3D,MAAM,CAAC,MAAM,uBAAuB,GAAG,EAAE,CAAC;AAuD1C,MAAM,CAAC,MAAM,iBAAiB,GAAsC;IAClE,UAAU,EAAE;QACV,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,+BAA+B;QAC5C,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,YAAY;KACpB;IACD,wBAAwB,EAAE;QACxB,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,+DAA+D;QAC5E,OAAO,EAAE,IAAI;QACb,KAAK,EAAE,YAAY;KACpB;IACD,iBAAiB,EAAE;QACjB,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,8BAA8B;QAC3C,kBAAkB,EAAE,MAAM,CAAC,kCAAkC,CAAC,IAAI,CAAC;QACnE,KAAK,EAAE,YAAY;KACpB;IACD,oBAAoB,EAAE;QACpB,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,8BAA8B;QAC3C,kBAAkB,EAAE,kCAAkC,CAAC,OAAO;QAC9D,KAAK,EAAE,YAAY;KACpB;IACD,iBAAiB,EAAE;QACjB,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,4EAA4E;QACzF,kBAAkB,EAAE,kCAAkC,CAAC,IAAI;QAC3D,KAAK,EAAE,YAAY;KACpB;IACD,wBAAwB,EAAE;QACxB,MAAM,EAAE,IAAI;QACZ,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,0FAA0F;KACxG;IACD,sBAAsB,EAAE;QACtB,MAAM,EAAE,IAAI;QACZ,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,wEAAwE;KACtF;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAyC;IACpE,GAAG,UAAU;IACb,GAAG,iBAAiB;IAEpB,YAAY,EAAE;QACZ,MAAM,EAAE,IAAI;QACZ,WAAW,EAAE,4CAA4C;QACzD,kBAAkB,EAAE,mBAAmB,CAAC,YAAY;QACpD,IAAI,EAAE,QAAQ;KACf;IAED,UAAU,EAAE;QACV,MAAM,EAAE,IAAI;QACZ,WAAW,EAAE,mDAAmD;QAChE,kBAAkB,EAAE,mBAAmB,CAAC,UAAU;QAClD,IAAI,EAAE,QAAQ;KACf;IAED,aAAa,EAAE;QACb,MAAM,EAAE,IAAI;QACZ,WAAW,EAAE,yDAAyD;QACtE,kBAAkB,EAAE,mBAAmB,CAAC,YAAY;QACpD,IAAI,EAAE,QAAQ;KACf;IAED,WAAW,EAAE;QACX,MAAM,EAAE,IAAI;QACZ,WAAW,EAAE,oEAAoE;QACjF,kBAAkB,EAAE,mBAAmB,CAAC,WAAW;QACnD,IAAI,EAAE,QAAQ;KACf;IAED,eAAe,EAAE;QACf,MAAM,EAAE,IAAI;QACZ,WAAW,EAAE,yCAAyC;QACtD,kBAAkB,EAAE,qBAAqB,CAAC,eAAe;QACzD,IAAI,EAAE,QAAQ;KACf;IAED,WAAW,EAAE;QACX,WAAW,EAAE,oCAAoC;QACjD,OAAO,EAAE,CAAC,uBAAuB,CAAC;QAClC,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,CAAC,IAAc,EAAY,EAAE;QACnC,0CAA0C;QAC1C,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7C,KAAK,EAAE,CAAC,QAAQ,CAAC,EAAE,8BAA8B;KAClD;IAED,KAAK,EAAE;QACL,WAAW,EAAE,8DAA8D;QAC3E,IAAI,EAAE,SAAS;KAChB;IAED,QAAQ,EAAE;QACR,WAAW,EAAE,4FAA4F;QACzG,iGAAiG;QACjG,IAAI,EAAE,QAAQ;KACf;IAED,2BAA2B,EAAE;QAC3B,MAAM,EAAE,IAAI;QACZ,WAAW,EACT,yIAAyI;QAC3I,IAAI,EAAE,QAAQ;KACf;IAED,6BAA6B,EAAE;QAC7B,MAAM,EAAE,IAAI;QACZ,WAAW,EACT,mJAAmJ;QACrJ,IAAI,EAAE,QAAQ;KACf;IAED,0BAA0B,EAAE;QAC1B,MAAM,EAAE,IAAI;QACZ,WAAW,EACT,+IAA+I;QACjJ,IAAI,EAAE,SAAS;KAChB;IAED,oBAAoB,EAAE;QACpB,WAAW,EACT,qKAAqK;QACvK,IAAI,EAAE,QAAQ;KACf;IAED,qBAAqB,EAAE;QACrB,WAAW,EACT,oQAAoQ;QACtQ,kBAAkB,EAAE,cAAc,CAAC,qBAAqB;QACxD,IAAI,EAAE,QAAQ;KACf;IAED,uBAAuB,EAAE;QACvB,WAAW,EAAE,0FAA0F;QACvG,IAAI,EAAE,SAAS;KAChB;IAED,eAAe,EAAE;QACf,WAAW,EAAE,kGAAkG;QAC/G,kBAAkB,EAAE,GAAG,cAAc,CAAC,eAAe,EAAE;QACvD,IAAI,EAAE,QAAQ;KACf;IAED,OAAO,EAAE;QACP,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,sEAAsE;QACnF,KAAK,EAAE,SAAS;KACjB;IAED,mBAAmB,EAAE;QACnB,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,0FAA0F;QACvG,kBAAkB,EAAE,KAAK,cAAc,CAAC,gBAAgB,IAAI;QAC5D,KAAK,EAAE,SAAS;KACjB;IAED,eAAe,EAAE;QACf,KAAK,EAAE,CAAC,UAAU,CAAC;QACnB,WAAW,EAAE,8FAA8F;QAC3G,kBAAkB,EAAE,oBAAoB;QACxC,IAAI,EAAE,OAAO;KACd;IAED,uBAAuB,EAAE;QACvB,KAAK,EAAE,CAAC,gBAAgB,CAAC;QACzB,WAAW,EAAE,qFAAqF;QAClG,kBAAkB,EAAE,kBAAkB;QACtC,IAAI,EAAE,QAAQ;KACf;IAED,sBAAsB,EAAE;QACtB,KAAK,EAAE,CAAC,+BAA+B,CAAC;QACxC,WAAW,EAAE,iCAAiC;QAC9C,OAAO,EAAE,KAAK;QACd,IAAI,EAAE,SAAS;KAChB;IAED,yBAAyB;IAEzB,gBAAgB;IAEhB,oBAAoB,EAAE;QACpB,WAAW,EAAE,8CAA8C;QAC3D,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,mBAAmB;KAC3B;IAED,wBAAwB,EAAE;QACxB,WAAW,EACT,0HAA0H;QAC5H,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,CAAC,OAAiB,EAAY,EAAE;QACtC,0CAA0C;QAC1C,OAAO;aACJ,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;aAC9B,IAAI,CAAC,CAAC,CAAC;aACP,GAAG,CAAC,cAAc,CAAC;QACxB,KAAK,EAAE,mBAAmB;KAC3B;IAED,sBAAsB,EAAE;QACtB,SAAS,EAAE,CAAC,wBAAwB,CAAC;QACrC,WAAW,EAAE,oEAAoE;QACjF,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,mBAAmB;KAC3B;IAED,wBAAwB;IAExB,WAAW,EAAE;QACX,WAAW,EAAE,sFAAsF;QACnG,IAAI,EAAE,SAAS;KAChB;IAED,UAAU;IAEV,OAAO,EAAE;QACP,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,2CAA2C;QACxD,kBAAkB,EAAE,MAAM,CAAC,8BAA8B,CAAC,OAAO,CAAC;QAClE,KAAK,EAAE,SAAS;KACjB;IAED,cAAc,EAAE;QACd,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,wDAAwD;QACrE,kBAAkB,EAAE,MAAM,CAAC,8BAA8B,CAAC,IAAI,CAAC;QAC/D,KAAK,EAAE,SAAS;KACjB;IAED,iBAAiB,EAAE;QACjB,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,uDAAuD;QACpE,kBAAkB,EAAE,MAAM,CAAC,8BAA8B,CAAC,OAAO,CAAC;QAClE,KAAK,EAAE,SAAS;KACjB;IAED,aAAa;IAEb,qBAAqB,EAAE;QACrB,IAAI,EAAE,QAAQ;QACd,WAAW,EACT,wHAAwH;QAC1H,KAAK,EAAE,YAAY;KACpB;IAED,qBAAqB,EAAE;QACrB,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,6EAA6E;QAC1F,kBAAkB,EAAE,MAAM,CAAC,iCAAiC,CAAC,QAAQ,CAAC;QACtE,KAAK,EAAE,YAAY;KACpB;IAED,yBAAyB,EAAE;QACzB,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,kFAAkF;QAC/F,kBAAkB,EAAE,MAAM,CAAC,iCAAiC,CAAC,YAAY,CAAC;QAC1E,KAAK,EAAE,YAAY;QACnB,MAAM,EAAE,IAAI;KACb;IAED,2BAA2B,EAAE;QAC3B,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,wEAAwE;QACrF,kBAAkB,EAAE,MAAM,CAAC,iCAAiC,CAAC,cAAc,CAAC;QAC5E,KAAK,EAAE,YAAY;QACnB,MAAM,EAAE,IAAI;KACb;IAED,+BAA+B,EAAE;QAC/B,IAAI,EAAE,SAAS;QACf,WAAW,EACT,iIAAiI;QACnI,kBAAkB,EAAE,MAAM,CAAC,iCAAiC,CAAC,kBAAkB,CAAC;QAChF,KAAK,EAAE,YAAY;QACnB,MAAM,EAAE,IAAI;KACb;IAED,mBAAmB;IAEnB,cAAc,EAAE;QACd,MAAM,EAAE,IAAI;QACZ,WAAW,EAAE,kEAAkE;QAC/E,IAAI,EAAE,QAAQ;KACf;IAED,YAAY,EAAE;QACZ,MAAM,EAAE,IAAI;QACZ,WAAW,EAAE,mEAAmE;QAChF,IAAI,EAAE,QAAQ;KACf;IAED,eAAe,EAAE;QACf,MAAM,EAAE,IAAI;QACZ,WAAW,EAAE,2EAA2E;QACxF,IAAI,EAAE,QAAQ;KACf;CACF,CAAC"}
|
|
@@ -4,7 +4,7 @@ import { LogArgs } from "../../../options/logOptions.js";
|
|
|
4
4
|
import { AccountValidatorArgs } from "../options.js";
|
|
5
5
|
import { ISlashingProtectionArgs } from "./options.js";
|
|
6
6
|
type ExportArgs = {
|
|
7
|
-
file
|
|
7
|
+
file?: string;
|
|
8
8
|
pubkeys?: string[];
|
|
9
9
|
};
|
|
10
10
|
export declare const exportCmd: CliCommand<ExportArgs, ISlashingProtectionArgs & AccountValidatorArgs & GlobalArgs & LogArgs>;
|
|
@@ -22,7 +22,7 @@ export const exportCmd = {
|
|
|
22
22
|
type: "string",
|
|
23
23
|
},
|
|
24
24
|
pubkeys: {
|
|
25
|
-
description: "Export slashing protection data only for a given subset of
|
|
25
|
+
description: "Export slashing protection data only for a given subset of public keys",
|
|
26
26
|
type: "array",
|
|
27
27
|
string: true,
|
|
28
28
|
coerce: (pubkeys) =>
|
|
@@ -35,6 +35,9 @@ export const exportCmd = {
|
|
|
35
35
|
},
|
|
36
36
|
handler: async (args) => {
|
|
37
37
|
var _a;
|
|
38
|
+
const { file } = args;
|
|
39
|
+
if (!file)
|
|
40
|
+
throw new YargsError("must provide file arg");
|
|
38
41
|
const { config, network } = getBeaconConfigFromArgs(args);
|
|
39
42
|
const validatorPaths = getValidatorPaths(args, network);
|
|
40
43
|
// slashingProtection commands are fast so do not require logFile feature
|
|
@@ -70,8 +73,8 @@ export const exportCmd = {
|
|
|
70
73
|
}
|
|
71
74
|
logger.info("Starting export for pubkeys found", { count: pubkeysToExport.length });
|
|
72
75
|
const interchange = await slashingProtection.exportInterchange(genesisValidatorsRoot, pubkeysToExport, formatVersion, logger);
|
|
73
|
-
logger.info("Writing slashing protection data", { file
|
|
74
|
-
writeFile600Perm(
|
|
76
|
+
logger.info("Writing slashing protection data", { file });
|
|
77
|
+
writeFile600Perm(file, interchange);
|
|
75
78
|
logger.info("Export completed successfully");
|
|
76
79
|
},
|
|
77
80
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export.js","sourceRoot":"","sources":["../../../../src/cmds/validator/slashingProtection/export.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAC,aAAa,EAAC,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAa,UAAU,EAAE,cAAc,EAAE,mBAAmB,EAAE,gBAAgB,EAAC,MAAM,wBAAwB,CAAC;AACrH,OAAO,EAAC,eAAe,EAAC,MAAM,yBAAyB,CAAC;AAIxD,OAAO,EAAC,uBAAuB,EAAC,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAC,iBAAiB,EAAC,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAC,wBAAwB,EAAE,qBAAqB,EAAC,MAAM,YAAY,CAAC;AAQ3E,MAAM,CAAC,MAAM,SAAS,GACpB;IACE,OAAO,EAAE,QAAQ;IAEjB,QAAQ,EAAE,6BAA6B;IAEvC,QAAQ,EAAE;QACR;YACE,OAAO,EAAE,+EAA+E;YACxF,WAAW,EAAE,kFAAkF;SAChG;KACF;IAED,OAAO,EAAE;QACP,IAAI,EAAE;YACJ,WAAW,EAAE,gEAAgE;YAC7E,YAAY,EAAE,IAAI;YAClB,IAAI,EAAE,QAAQ;SACf;QACD,OAAO,EAAE;YACP,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"export.js","sourceRoot":"","sources":["../../../../src/cmds/validator/slashingProtection/export.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAC,aAAa,EAAC,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAa,UAAU,EAAE,cAAc,EAAE,mBAAmB,EAAE,gBAAgB,EAAC,MAAM,wBAAwB,CAAC;AACrH,OAAO,EAAC,eAAe,EAAC,MAAM,yBAAyB,CAAC;AAIxD,OAAO,EAAC,uBAAuB,EAAC,MAAM,0BAA0B,CAAC;AACjE,OAAO,EAAC,iBAAiB,EAAC,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAC,wBAAwB,EAAE,qBAAqB,EAAC,MAAM,YAAY,CAAC;AAQ3E,MAAM,CAAC,MAAM,SAAS,GACpB;IACE,OAAO,EAAE,QAAQ;IAEjB,QAAQ,EAAE,6BAA6B;IAEvC,QAAQ,EAAE;QACR;YACE,OAAO,EAAE,+EAA+E;YACxF,WAAW,EAAE,kFAAkF;SAChG;KACF;IAED,OAAO,EAAE;QACP,IAAI,EAAE;YACJ,WAAW,EAAE,gEAAgE;YAC7E,YAAY,EAAE,IAAI;YAClB,IAAI,EAAE,QAAQ;SACf;QACD,OAAO,EAAE;YACP,WAAW,EAAE,wEAAwE;YACrF,IAAI,EAAE,OAAO;YACb,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,CAAC,OAAiB,EAAY,EAAE;YACtC,0CAA0C;YAC1C,OAAO;iBACJ,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;iBAC9B,IAAI,CAAC,CAAC,CAAC;iBACP,GAAG,CAAC,cAAc,CAAC;SACzB;KACF;IAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;;QACtB,MAAM,EAAC,IAAI,EAAC,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,UAAU,CAAC,uBAAuB,CAAC,CAAC;QAEzD,MAAM,EAAC,MAAM,EAAE,OAAO,EAAC,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;QACxD,MAAM,cAAc,GAAG,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QACxD,yEAAyE;QACzE,MAAM,MAAM,GAAG,aAAa,CAC1B,eAAe,CAAC,IAAI,EAAE,EAAC,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,eAAe,CAAC,EAAC,EAAE,MAAM,CAAC,CACxG,CAAC;QAEF,MAAM,EAAC,eAAe,EAAE,MAAM,EAAC,GAAG,iBAAiB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAEnE,MAAM,aAAa,GAA6B,EAAC,OAAO,EAAE,GAAG,EAAC,CAAC;QAC/D,MAAM,CAAC,IAAI,CAAC,oCAAoC,EAAE,EAAC,GAAG,aAAa,EAAE,MAAM,EAAC,CAAC,CAAC;QAE9E,MAAM,EAAC,kBAAkB,EAAE,QAAQ,EAAC,GAAG,MAAM,qBAAqB,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;QAE1F,mFAAmF;QACnF,oDAAoD;QACpD,6CAA6C;QAC7C,gCAAgC;QAChC,MAAM,qBAAqB,GACzB,MAAA,CAAC,MAAM,QAAQ,CAAC,wBAAwB,EAAE,CAAC,mCAAI,CAAC,MAAM,wBAAwB,CAAC,IAAI,CAAC,CAAC,CAAC;QAExF,MAAM,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC;QAC/D,MAAM,UAAU,GAAG,MAAM,kBAAkB,CAAC,WAAW,EAAE,CAAC;QAC1D,IAAI,eAAe,GAAG,UAAU,CAAC;QAEjC,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,MAAM,CAAC,OAAO,CAAC,gCAAgC,EAAE,EAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAC,CAAC,CAAC;YAC/E,MAAM,eAAe,GAAG,EAAE,CAAC;YAE3B,KAAK,MAAM,SAAS,IAAI,IAAI,CAAC,OAAO,EAAE;gBACpC,IAAI,CAAC,mBAAmB,CAAC,SAAS,CAAC,EAAE;oBACnC,MAAM,IAAI,UAAU,CAAC,kBAAkB,SAAS,EAAE,CAAC,CAAC;iBACrD;gBACD,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC;gBACtF,IAAI,CAAC,cAAc,EAAE;oBACnB,MAAM,CAAC,IAAI,CAAC,4CAA4C,EAAE,EAAC,MAAM,EAAE,SAAS,EAAC,CAAC,CAAC;iBAChF;qBAAM;oBACL,eAAe,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;iBACtC;aACF;YAED,eAAe,GAAG,eAAe,CAAC;SACnC;QAED,MAAM,CAAC,IAAI,CAAC,mCAAmC,EAAE,EAAC,KAAK,EAAE,eAAe,CAAC,MAAM,EAAC,CAAC,CAAC;QAClF,MAAM,WAAW,GAAG,MAAM,kBAAkB,CAAC,iBAAiB,CAC5D,qBAAqB,EACrB,eAAe,EACf,aAAa,EACb,MAAM,CACP,CAAC;QAEF,MAAM,CAAC,IAAI,CAAC,kCAAkC,EAAE,EAAC,IAAI,EAAC,CAAC,CAAC;QACxD,gBAAgB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QACpC,MAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;IAC/C,CAAC;CACF,CAAC"}
|
|
@@ -4,7 +4,7 @@ import { LogArgs } from "../../../options/logOptions.js";
|
|
|
4
4
|
import { AccountValidatorArgs } from "../options.js";
|
|
5
5
|
import { ISlashingProtectionArgs } from "./options.js";
|
|
6
6
|
type ImportArgs = {
|
|
7
|
-
file
|
|
7
|
+
file?: string;
|
|
8
8
|
};
|
|
9
9
|
export declare const importCmd: CliCommand<ImportArgs, ISlashingProtectionArgs & AccountValidatorArgs & GlobalArgs & LogArgs>;
|
|
10
10
|
export {};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import fs from "node:fs";
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import { getNodeLogger } from "@lodestar/logger/node";
|
|
4
|
+
import { YargsError } from "../../../util/index.js";
|
|
4
5
|
import { parseLoggerArgs } from "../../../util/logger.js";
|
|
5
6
|
import { getBeaconConfigFromArgs } from "../../../config/index.js";
|
|
6
7
|
import { getValidatorPaths } from "../paths.js";
|
|
@@ -23,6 +24,9 @@ export const importCmd = {
|
|
|
23
24
|
},
|
|
24
25
|
handler: async (args) => {
|
|
25
26
|
var _a;
|
|
27
|
+
const { file } = args;
|
|
28
|
+
if (!file)
|
|
29
|
+
throw new YargsError("must provide file arg");
|
|
26
30
|
const { config, network } = getBeaconConfigFromArgs(args);
|
|
27
31
|
const validatorPaths = getValidatorPaths(args, network);
|
|
28
32
|
// slashingProtection commands are fast so do not require logFile feature
|
|
@@ -35,8 +39,8 @@ export const importCmd = {
|
|
|
35
39
|
// - known genesis data from existing network
|
|
36
40
|
// - else fetch from beacon node
|
|
37
41
|
const genesisValidatorsRoot = (_a = (await metadata.getGenesisValidatorsRoot())) !== null && _a !== void 0 ? _a : (await getGenesisValidatorsRoot(args));
|
|
38
|
-
logger.verbose("Reading slashing protection data", { file
|
|
39
|
-
const interchangeStr = await fs.promises.readFile(
|
|
42
|
+
logger.verbose("Reading slashing protection data", { file });
|
|
43
|
+
const interchangeStr = await fs.promises.readFile(file, "utf8");
|
|
40
44
|
const interchangeJson = JSON.parse(interchangeStr);
|
|
41
45
|
await slashingProtection.importInterchange(interchangeJson, genesisValidatorsRoot, logger);
|
|
42
46
|
logger.info("Import completed successfully");
|