@chainsafe/lodestar 1.38.0 → 1.39.0-dev.100ab480bb
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/lib/cmds/beacon/handler.d.ts.map +1 -1
- package/lib/cmds/beacon/handler.js +16 -9
- package/lib/cmds/beacon/handler.js.map +1 -1
- package/lib/cmds/beacon/initBeaconState.d.ts +2 -3
- package/lib/cmds/beacon/initBeaconState.d.ts.map +1 -1
- package/lib/cmds/beacon/initBeaconState.js +3 -6
- package/lib/cmds/beacon/initBeaconState.js.map +1 -1
- package/lib/cmds/beacon/options.js +1 -1
- package/lib/cmds/beacon/options.js.map +1 -1
- package/lib/cmds/dev/files.js +1 -1
- package/lib/cmds/dev/files.js.map +1 -1
- package/lib/cmds/dev/handler.js +1 -1
- package/lib/cmds/dev/handler.js.map +1 -1
- package/lib/cmds/dev/options.d.ts +10 -11
- package/lib/cmds/dev/options.d.ts.map +1 -1
- package/lib/cmds/dev/options.js +8 -7
- package/lib/cmds/dev/options.js.map +1 -1
- package/lib/cmds/validator/options.d.ts +2 -2
- package/lib/cmds/validator/options.d.ts.map +1 -1
- package/lib/cmds/validator/options.js +15 -5
- package/lib/cmds/validator/options.js.map +1 -1
- package/lib/cmds/validator/signers/index.js +3 -3
- package/lib/cmds/validator/signers/index.js.map +1 -1
- package/lib/config/beaconParams.d.ts.map +1 -1
- package/lib/config/beaconParams.js +1 -2
- package/lib/config/beaconParams.js.map +1 -1
- package/lib/networks/chiado.d.ts +0 -1
- package/lib/networks/chiado.d.ts.map +1 -1
- package/lib/networks/chiado.js +0 -2
- package/lib/networks/chiado.js.map +1 -1
- package/lib/networks/dev.d.ts +0 -1
- package/lib/networks/dev.d.ts.map +1 -1
- package/lib/networks/dev.js +0 -1
- package/lib/networks/dev.js.map +1 -1
- package/lib/networks/ephemery.d.ts +0 -1
- package/lib/networks/ephemery.d.ts.map +1 -1
- package/lib/networks/ephemery.js +0 -1
- package/lib/networks/ephemery.js.map +1 -1
- package/lib/networks/gnosis.d.ts +0 -1
- package/lib/networks/gnosis.d.ts.map +1 -1
- package/lib/networks/gnosis.js +0 -2
- package/lib/networks/gnosis.js.map +1 -1
- package/lib/networks/hoodi.d.ts +0 -1
- package/lib/networks/hoodi.d.ts.map +1 -1
- package/lib/networks/hoodi.js +1 -1
- package/lib/networks/hoodi.js.map +1 -1
- package/lib/networks/index.d.ts +0 -1
- package/lib/networks/index.d.ts.map +1 -1
- package/lib/networks/index.js.map +1 -1
- package/lib/networks/mainnet.d.ts +0 -1
- package/lib/networks/mainnet.d.ts.map +1 -1
- package/lib/networks/mainnet.js +1 -2
- package/lib/networks/mainnet.js.map +1 -1
- package/lib/networks/sepolia.d.ts +0 -1
- package/lib/networks/sepolia.d.ts.map +1 -1
- package/lib/networks/sepolia.js +0 -1
- package/lib/networks/sepolia.js.map +1 -1
- package/lib/options/beaconNodeOptions/chain.d.ts +0 -1
- package/lib/options/beaconNodeOptions/chain.d.ts.map +1 -1
- package/lib/options/beaconNodeOptions/chain.js +0 -8
- package/lib/options/beaconNodeOptions/chain.js.map +1 -1
- package/lib/options/beaconNodeOptions/eth1.d.ts +12 -3
- package/lib/options/beaconNodeOptions/eth1.d.ts.map +1 -1
- package/lib/options/beaconNodeOptions/eth1.js +11 -32
- package/lib/options/beaconNodeOptions/eth1.js.map +1 -1
- package/lib/options/beaconNodeOptions/index.d.ts +0 -3
- package/lib/options/beaconNodeOptions/index.d.ts.map +1 -1
- package/lib/options/beaconNodeOptions/index.js +0 -1
- package/lib/options/beaconNodeOptions/index.js.map +1 -1
- package/lib/options/globalOptions.d.ts +0 -3
- package/lib/options/globalOptions.d.ts.map +1 -1
- package/lib/options/paramsOptions.d.ts +1 -7
- package/lib/options/paramsOptions.d.ts.map +1 -1
- package/lib/options/paramsOptions.js +1 -31
- package/lib/options/paramsOptions.js.map +1 -1
- package/package.json +14 -14
- package/src/cmds/beacon/handler.ts +21 -12
- package/src/cmds/beacon/initBeaconState.ts +2 -9
- package/src/cmds/beacon/options.ts +1 -1
- package/src/cmds/dev/files.ts +1 -1
- package/src/cmds/dev/handler.ts +1 -1
- package/src/cmds/dev/options.ts +9 -8
- package/src/cmds/validator/options.ts +17 -7
- package/src/cmds/validator/signers/index.ts +3 -3
- package/src/config/beaconParams.ts +1 -8
- package/src/networks/chiado.ts +0 -2
- package/src/networks/dev.ts +0 -1
- package/src/networks/ephemery.ts +0 -1
- package/src/networks/gnosis.ts +0 -2
- package/src/networks/hoodi.ts +1 -1
- package/src/networks/index.ts +0 -1
- package/src/networks/mainnet.ts +1 -2
- package/src/networks/sepolia.ts +0 -1
- package/src/options/beaconNodeOptions/chain.ts +0 -11
- package/src/options/beaconNodeOptions/eth1.ts +20 -37
- package/src/options/beaconNodeOptions/index.ts +0 -1
- package/src/options/paramsOptions.ts +3 -43
|
@@ -9,7 +9,7 @@ export function parseBeaconParamsArgs(args) {
|
|
|
9
9
|
return beaconParams;
|
|
10
10
|
}, {});
|
|
11
11
|
}
|
|
12
|
-
const
|
|
12
|
+
export const paramsOptions = ObjectKeys(chainConfigTypes).reduce((options, key) => {
|
|
13
13
|
options[getArgKey(key)] = {
|
|
14
14
|
hidden: true,
|
|
15
15
|
type: "string",
|
|
@@ -17,34 +17,4 @@ const paramsOptionsByName = ObjectKeys(chainConfigTypes).reduce((options, key) =
|
|
|
17
17
|
};
|
|
18
18
|
return options;
|
|
19
19
|
}, {});
|
|
20
|
-
const terminalArgsToParamsMap = {
|
|
21
|
-
"terminal-total-difficulty-override": "TERMINAL_TOTAL_DIFFICULTY",
|
|
22
|
-
"terminal-block-hash-override": "TERMINAL_BLOCK_HASH",
|
|
23
|
-
"terminal-block-hash-epoch-override": "TERMINAL_BLOCK_HASH_ACTIVATION_EPOCH",
|
|
24
|
-
};
|
|
25
|
-
export function parseTerminalPowArgs(args) {
|
|
26
|
-
const parsedArgs = ObjectKeys(terminalArgsToParamsMap).reduce((beaconParams, key) => {
|
|
27
|
-
const paramOption = terminalArgsToParamsMap[key];
|
|
28
|
-
const value = args[key];
|
|
29
|
-
if (paramOption != null && value != null)
|
|
30
|
-
beaconParams[paramOption] = value;
|
|
31
|
-
return beaconParams;
|
|
32
|
-
}, {});
|
|
33
|
-
return parsedArgs;
|
|
34
|
-
}
|
|
35
|
-
export const paramsOptions = {
|
|
36
|
-
...paramsOptionsByName,
|
|
37
|
-
"terminal-total-difficulty-override": {
|
|
38
|
-
description: "Terminal PoW block TTD override",
|
|
39
|
-
type: "string",
|
|
40
|
-
},
|
|
41
|
-
"terminal-block-hash-override": {
|
|
42
|
-
description: "Terminal PoW block hash override",
|
|
43
|
-
type: "string",
|
|
44
|
-
},
|
|
45
|
-
"terminal-block-hash-epoch-override": {
|
|
46
|
-
description: "Terminal PoW block hash override activation epoch",
|
|
47
|
-
type: "string",
|
|
48
|
-
},
|
|
49
|
-
};
|
|
50
20
|
//# sourceMappingURL=paramsOptions.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paramsOptions.js","sourceRoot":"","sources":["../../src/options/paramsOptions.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"paramsOptions.js","sourceRoot":"","sources":["../../src/options/paramsOptions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAC,MAAM,kBAAkB,CAAC;AAGlD,OAAO,EAAC,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAQ5C,MAAM,SAAS,GAAG,CAAC,GAAgC,EAAU,EAAE,CAAC,UAAU,GAAG,EAAE,CAAC;AAEhF,MAAM,UAAU,qBAAqB,CAAC,IAAqC;IACzE,OAAO,UAAU,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,YAA4C,EAAE,GAAG,EAAE,EAAE;QAC/F,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QACnC,IAAI,KAAK,IAAI,IAAI;YAAE,YAAY,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAC7C,OAAO,YAAY,CAAC;IACtB,CAAC,EAAE,EAAE,CAAC,CAAC;AACT,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAmC,UAAU,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAC9F,CAAC,OAA4C,EAAE,GAAG,EAAuC,EAAE;IACzF,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,GAAG;QACxB,MAAM,EAAE,IAAI;QACZ,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,QAAQ;KAChB,CAAC;IACF,OAAO,OAAO,CAAC;AACjB,CAAC,EACD,EAAE,CACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chainsafe/lodestar",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.39.0-dev.100ab480bb",
|
|
4
4
|
"description": "Command line interface for lodestar",
|
|
5
5
|
"author": "ChainSafe Systems",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -69,17 +69,17 @@
|
|
|
69
69
|
"@libp2p/crypto": "^5.0.15",
|
|
70
70
|
"@libp2p/interface": "^2.7.0",
|
|
71
71
|
"@libp2p/peer-id": "^5.1.0",
|
|
72
|
-
"@lodestar/api": "
|
|
73
|
-
"@lodestar/beacon-node": "
|
|
74
|
-
"@lodestar/config": "
|
|
75
|
-
"@lodestar/db": "
|
|
76
|
-
"@lodestar/light-client": "
|
|
77
|
-
"@lodestar/logger": "
|
|
78
|
-
"@lodestar/params": "
|
|
79
|
-
"@lodestar/state-transition": "
|
|
80
|
-
"@lodestar/types": "
|
|
81
|
-
"@lodestar/utils": "
|
|
82
|
-
"@lodestar/validator": "
|
|
72
|
+
"@lodestar/api": "1.39.0-dev.100ab480bb",
|
|
73
|
+
"@lodestar/beacon-node": "1.39.0-dev.100ab480bb",
|
|
74
|
+
"@lodestar/config": "1.39.0-dev.100ab480bb",
|
|
75
|
+
"@lodestar/db": "1.39.0-dev.100ab480bb",
|
|
76
|
+
"@lodestar/light-client": "1.39.0-dev.100ab480bb",
|
|
77
|
+
"@lodestar/logger": "1.39.0-dev.100ab480bb",
|
|
78
|
+
"@lodestar/params": "1.39.0-dev.100ab480bb",
|
|
79
|
+
"@lodestar/state-transition": "1.39.0-dev.100ab480bb",
|
|
80
|
+
"@lodestar/types": "1.39.0-dev.100ab480bb",
|
|
81
|
+
"@lodestar/utils": "1.39.0-dev.100ab480bb",
|
|
82
|
+
"@lodestar/validator": "1.39.0-dev.100ab480bb",
|
|
83
83
|
"@multiformats/multiaddr": "^12.1.3",
|
|
84
84
|
"deepmerge": "^4.3.1",
|
|
85
85
|
"ethers": "^6.7.0",
|
|
@@ -94,12 +94,12 @@
|
|
|
94
94
|
"yargs": "^17.7.1"
|
|
95
95
|
},
|
|
96
96
|
"devDependencies": {
|
|
97
|
-
"@lodestar/test-utils": "
|
|
97
|
+
"@lodestar/test-utils": "1.39.0-dev.100ab480bb",
|
|
98
98
|
"@types/debug": "^4.1.7",
|
|
99
99
|
"@types/inquirer": "^9.0.3",
|
|
100
100
|
"@types/proper-lockfile": "^4.1.4",
|
|
101
101
|
"@types/yargs": "^17.0.24",
|
|
102
102
|
"fastify": "^5.2.1"
|
|
103
103
|
},
|
|
104
|
-
"gitHead": "
|
|
104
|
+
"gitHead": "965887079f9e859a8e118d8799fc814f98e65228"
|
|
105
105
|
}
|
|
@@ -2,15 +2,17 @@ import path from "node:path";
|
|
|
2
2
|
import {getHeapStatistics} from "node:v8";
|
|
3
3
|
import {SignableENR} from "@chainsafe/enr";
|
|
4
4
|
import {hasher} from "@chainsafe/persistent-merkle-tree";
|
|
5
|
+
import {PubkeyIndexMap} from "@chainsafe/pubkey-index-map";
|
|
5
6
|
import {BeaconDb, BeaconNode} from "@lodestar/beacon-node";
|
|
6
7
|
import {ChainForkConfig, createBeaconConfig} from "@lodestar/config";
|
|
7
8
|
import {LevelDbController} from "@lodestar/db/controller/level";
|
|
8
9
|
import {LoggerNode, getNodeLogger} from "@lodestar/logger/node";
|
|
9
10
|
import {ACTIVE_PRESET, PresetName} from "@lodestar/params";
|
|
11
|
+
import {Index2PubkeyCache, createCachedBeaconState, syncPubkeys} from "@lodestar/state-transition";
|
|
10
12
|
import {ErrorAborted, bytesToInt, formatBytes} from "@lodestar/utils";
|
|
11
13
|
import {ProcessShutdownCallback} from "@lodestar/validator";
|
|
12
14
|
import {BeaconNodeOptions, getBeaconConfigFromArgs} from "../../config/index.js";
|
|
13
|
-
import {getNetworkBootnodes,
|
|
15
|
+
import {getNetworkBootnodes, isKnownNetworkName, readBootnodes} from "../../networks/index.js";
|
|
14
16
|
import {GlobalArgs, parseBeaconNodeArgs} from "../../options/index.js";
|
|
15
17
|
import {LogArgs} from "../../options/logOptions.js";
|
|
16
18
|
import {
|
|
@@ -71,25 +73,38 @@ export async function beaconHandler(args: BeaconArgs & GlobalArgs): Promise<void
|
|
|
71
73
|
// BeaconNode setup
|
|
72
74
|
try {
|
|
73
75
|
const {anchorState, isFinalized, wsCheckpoint} = await initBeaconState(
|
|
74
|
-
options,
|
|
75
76
|
args,
|
|
76
77
|
beaconPaths.dataDir,
|
|
77
78
|
config,
|
|
78
79
|
db,
|
|
79
|
-
logger
|
|
80
|
-
abortController.signal
|
|
80
|
+
logger
|
|
81
81
|
);
|
|
82
82
|
const beaconConfig = createBeaconConfig(config, anchorState.genesisValidatorsRoot);
|
|
83
|
+
const pubkey2index = new PubkeyIndexMap();
|
|
84
|
+
const index2pubkey: Index2PubkeyCache = [];
|
|
85
|
+
syncPubkeys(anchorState.validators.getAllReadonlyValues(), pubkey2index, index2pubkey);
|
|
86
|
+
const cachedState = createCachedBeaconState(
|
|
87
|
+
anchorState,
|
|
88
|
+
{
|
|
89
|
+
config: beaconConfig,
|
|
90
|
+
pubkey2index,
|
|
91
|
+
index2pubkey,
|
|
92
|
+
},
|
|
93
|
+
{skipSyncPubkeys: true}
|
|
94
|
+
);
|
|
95
|
+
|
|
83
96
|
const node = await BeaconNode.init({
|
|
84
97
|
opts: options,
|
|
85
98
|
config: beaconConfig,
|
|
99
|
+
pubkey2index,
|
|
100
|
+
index2pubkey,
|
|
86
101
|
db,
|
|
87
102
|
logger,
|
|
88
103
|
processShutdownCallback,
|
|
89
104
|
privateKey,
|
|
90
105
|
dataDir: beaconPaths.dataDir,
|
|
91
106
|
peerStoreDir: beaconPaths.peerStoreDir,
|
|
92
|
-
anchorState,
|
|
107
|
+
anchorState: cachedState,
|
|
93
108
|
isAnchorStateFinalized: isFinalized,
|
|
94
109
|
wsCheckpoint,
|
|
95
110
|
});
|
|
@@ -189,12 +204,6 @@ export async function beaconHandlerInit(args: BeaconArgs & GlobalArgs) {
|
|
|
189
204
|
// Add detailed version string for API node/version endpoint
|
|
190
205
|
beaconNodeOptions.set({api: {commit, version}});
|
|
191
206
|
|
|
192
|
-
// Set known depositContractDeployBlock
|
|
193
|
-
if (isKnownNetworkName(network)) {
|
|
194
|
-
const {depositContractDeployBlock} = getNetworkData(network);
|
|
195
|
-
beaconNodeOptions.set({eth1: {depositContractDeployBlock}});
|
|
196
|
-
}
|
|
197
|
-
|
|
198
207
|
const logger = initLogger(args, beaconPaths.dataDir, config);
|
|
199
208
|
const {privateKey, enr} = await initPrivateKeyAndEnr(args, beaconPaths.beaconDir, logger);
|
|
200
209
|
|
|
@@ -226,7 +235,7 @@ export async function beaconHandlerInit(args: BeaconArgs & GlobalArgs) {
|
|
|
226
235
|
// Add User-Agent header to all builder requests
|
|
227
236
|
beaconNodeOptions.set({executionBuilder: {userAgent: versionStr}});
|
|
228
237
|
// Set jwt version with version string
|
|
229
|
-
beaconNodeOptions.set({executionEngine: {jwtVersion: versionStr}
|
|
238
|
+
beaconNodeOptions.set({executionEngine: {jwtVersion: versionStr}});
|
|
230
239
|
// Set commit and version for ClientVersion
|
|
231
240
|
beaconNodeOptions.set({executionEngine: {commit, version}});
|
|
232
241
|
}
|
|
@@ -2,10 +2,8 @@ import {
|
|
|
2
2
|
DbCPStateDatastore,
|
|
3
3
|
FileCPStateDatastore,
|
|
4
4
|
IBeaconDb,
|
|
5
|
-
IBeaconNodeOptions,
|
|
6
5
|
checkAndPersistAnchorState,
|
|
7
6
|
getStateTypeFromBytes,
|
|
8
|
-
initStateFromEth1,
|
|
9
7
|
} from "@lodestar/beacon-node";
|
|
10
8
|
import {BeaconConfig, ChainForkConfig, createBeaconConfig} from "@lodestar/config";
|
|
11
9
|
import {
|
|
@@ -94,20 +92,17 @@ async function initAndVerifyWeakSubjectivityState(
|
|
|
94
92
|
* 1. restore from weak subjectivity state (possibly downloaded from a remote beacon node)
|
|
95
93
|
* 2. restore from db
|
|
96
94
|
* 3. restore from genesis state (possibly downloaded via URL)
|
|
97
|
-
* 4. create genesis state from eth1
|
|
98
95
|
*
|
|
99
96
|
* The returned anchorState could be finalized or not.
|
|
100
97
|
* - if we load from checkpointState, checkpointSyncUrl, genesisStateFile or archived db, it is finalized
|
|
101
98
|
* - it's not finalized if we load from unsafeCheckpointState or lastPersistedCheckpointState
|
|
102
99
|
*/
|
|
103
100
|
export async function initBeaconState(
|
|
104
|
-
options: IBeaconNodeOptions,
|
|
105
101
|
args: BeaconArgs & GlobalArgs,
|
|
106
102
|
dataDir: string,
|
|
107
103
|
chainForkConfig: ChainForkConfig,
|
|
108
104
|
db: IBeaconDb,
|
|
109
|
-
logger: Logger
|
|
110
|
-
signal: AbortSignal
|
|
105
|
+
logger: Logger
|
|
111
106
|
): Promise<{anchorState: BeaconStateAllForks; isFinalized: boolean; wsCheckpoint?: Checkpoint}> {
|
|
112
107
|
if (args.forceCheckpointSync && !(args.checkpointState || args.checkpointSyncUrl || args.unsafeCheckpointState)) {
|
|
113
108
|
throw new Error("Forced checkpoint sync without specifying a checkpointState or checkpointSyncUrl");
|
|
@@ -333,9 +328,7 @@ export async function initBeaconState(
|
|
|
333
328
|
return {anchorState, isFinalized};
|
|
334
329
|
}
|
|
335
330
|
|
|
336
|
-
|
|
337
|
-
const anchorState = await initStateFromEth1({config: chainForkConfig, db, logger, opts: options.eth1, signal});
|
|
338
|
-
return {anchorState, isFinalized: true};
|
|
331
|
+
throw Error("Failed to initialize beacon state, please provide a genesis state file or use checkpoint sync");
|
|
339
332
|
}
|
|
340
333
|
|
|
341
334
|
async function readWSState(
|
|
@@ -150,7 +150,7 @@ export const beaconExtraOptions: CliCommandOptions<BeaconExtraArgs> = {
|
|
|
150
150
|
|
|
151
151
|
private: {
|
|
152
152
|
description:
|
|
153
|
-
"Do not send implementation details over p2p identify protocol and in builder
|
|
153
|
+
"Do not send implementation details over p2p identify protocol, and in builder and execution engine requests",
|
|
154
154
|
type: "boolean",
|
|
155
155
|
},
|
|
156
156
|
|
package/src/cmds/dev/files.ts
CHANGED
|
@@ -15,7 +15,7 @@ export async function writeTestnetFiles(
|
|
|
15
15
|
const genesisTime = Math.floor(Date.now() / 1000);
|
|
16
16
|
const eth1BlockHash = Buffer.alloc(32, 0);
|
|
17
17
|
|
|
18
|
-
const
|
|
18
|
+
const state = nodeUtils.initDevState(config, genesisValidators, {genesisTime, eth1BlockHash});
|
|
19
19
|
|
|
20
20
|
// Write testnet data
|
|
21
21
|
fs.mkdirSync(targetDir, {recursive: true});
|
package/src/cmds/dev/handler.ts
CHANGED
|
@@ -60,7 +60,7 @@ export async function devHandler(args: IDevArgs & GlobalArgs): Promise<void> {
|
|
|
60
60
|
const genesisTime = args.genesisTime ?? Math.floor(Date.now() / 1000) + 5;
|
|
61
61
|
const eth1BlockHash = fromHex(args.genesisEth1Hash ?? toHex(Buffer.alloc(32, 0x0b)));
|
|
62
62
|
|
|
63
|
-
const
|
|
63
|
+
const state = nodeUtils.initDevState(config, validatorCount, {genesisTime, eth1BlockHash});
|
|
64
64
|
|
|
65
65
|
args.genesisStateFile = "genesis.ssz";
|
|
66
66
|
fs.writeFileSync(args.genesisStateFile, state.serialize());
|
package/src/cmds/dev/options.ts
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import {CliCommandOptions, CliOptionDefinition} from "@lodestar/utils";
|
|
2
2
|
import {NetworkName} from "../../networks/index.js";
|
|
3
3
|
import {beaconNodeOptions, globalOptions} from "../../options/index.js";
|
|
4
|
+
import {parseRange} from "../../util/format.ts";
|
|
4
5
|
import {BeaconArgs, beaconOptions} from "../beacon/options.js";
|
|
5
6
|
import {IValidatorCliArgs, validatorOptions} from "../validator/options.js";
|
|
6
7
|
|
|
7
8
|
type IDevOwnArgs = {
|
|
8
9
|
genesisEth1Hash?: string;
|
|
9
10
|
genesisValidators: number;
|
|
10
|
-
startValidators?:
|
|
11
|
+
startValidators?: number[];
|
|
11
12
|
genesisTime?: number;
|
|
12
13
|
reset?: boolean;
|
|
13
14
|
dumpTestnetFiles?: string;
|
|
@@ -29,8 +30,13 @@ const devOwnOptions: CliCommandOptions<IDevOwnArgs> = {
|
|
|
29
30
|
},
|
|
30
31
|
|
|
31
32
|
startValidators: {
|
|
32
|
-
description: "Start interop validators in inclusive range with notation '0..7'",
|
|
33
|
-
type: "
|
|
33
|
+
description: "Start interop validators in inclusive range(s) with notation '0..7'",
|
|
34
|
+
type: "array",
|
|
35
|
+
coerce: (indexes: string[]): number[] =>
|
|
36
|
+
// Parse ["11..13,15..17"] to ["11..13", "15..17"]
|
|
37
|
+
indexes
|
|
38
|
+
.flatMap((item) => item.split(","))
|
|
39
|
+
.flatMap(parseRange),
|
|
34
40
|
group: "dev",
|
|
35
41
|
},
|
|
36
42
|
|
|
@@ -80,11 +86,6 @@ const externalOptionsOverrides: Partial<Record<"network" | keyof typeof beaconNo
|
|
|
80
86
|
defaultDescription: undefined,
|
|
81
87
|
default: true,
|
|
82
88
|
},
|
|
83
|
-
eth1: {
|
|
84
|
-
...beaconNodeOptions.eth1,
|
|
85
|
-
defaultDescription: undefined,
|
|
86
|
-
default: false,
|
|
87
|
-
},
|
|
88
89
|
rest: {
|
|
89
90
|
...beaconNodeOptions.rest,
|
|
90
91
|
defaultDescription: undefined,
|
|
@@ -3,7 +3,7 @@ import {CliCommandOptions} from "@lodestar/utils";
|
|
|
3
3
|
import {defaultOptions} from "@lodestar/validator";
|
|
4
4
|
import {coerceCors, enabledAllBashFriendly} from "../../options/beaconNodeOptions/api.js";
|
|
5
5
|
import {LogArgs, logOptions} from "../../options/logOptions.js";
|
|
6
|
-
import {ensure0xPrefix} from "../../util/index.js";
|
|
6
|
+
import {ensure0xPrefix, parseRange} from "../../util/index.js";
|
|
7
7
|
import {keymanagerRestApiServerOptsDefault} from "./keymanager/server.js";
|
|
8
8
|
import {defaultAccountPaths, defaultValidatorPaths} from "./paths.js";
|
|
9
9
|
|
|
@@ -70,9 +70,9 @@ export type IValidatorCliArgs = AccountValidatorArgs &
|
|
|
70
70
|
|
|
71
71
|
distributed?: boolean;
|
|
72
72
|
|
|
73
|
-
interopIndexes?:
|
|
73
|
+
interopIndexes?: number[];
|
|
74
74
|
fromMnemonic?: string;
|
|
75
|
-
mnemonicIndexes?:
|
|
75
|
+
mnemonicIndexes?: number[];
|
|
76
76
|
|
|
77
77
|
metrics?: boolean;
|
|
78
78
|
"metrics.port"?: number;
|
|
@@ -453,8 +453,13 @@ export const validatorOptions: CliCommandOptions<IValidatorCliArgs> = {
|
|
|
453
453
|
|
|
454
454
|
interopIndexes: {
|
|
455
455
|
hidden: true,
|
|
456
|
-
description: "Range (inclusive) of interop key indexes to validate with: 0..16",
|
|
457
|
-
type: "
|
|
456
|
+
description: "Range(s) (inclusive) of interop key indexes to validate with: 0..16",
|
|
457
|
+
type: "array",
|
|
458
|
+
coerce: (indexes: string[]): number[] =>
|
|
459
|
+
// Parse ["11..13,15..17"] to ["11..13", "15..17"]
|
|
460
|
+
indexes
|
|
461
|
+
.flatMap((item) => item.split(","))
|
|
462
|
+
.flatMap(parseRange),
|
|
458
463
|
},
|
|
459
464
|
|
|
460
465
|
fromMnemonic: {
|
|
@@ -465,7 +470,12 @@ export const validatorOptions: CliCommandOptions<IValidatorCliArgs> = {
|
|
|
465
470
|
|
|
466
471
|
mnemonicIndexes: {
|
|
467
472
|
hidden: true,
|
|
468
|
-
description: "UNSAFE. Range (inclusive) of mnemonic key indexes to validate with: 0..16",
|
|
469
|
-
type: "
|
|
473
|
+
description: "UNSAFE. Range(s) (inclusive) of mnemonic key indexes to validate with: 0..16",
|
|
474
|
+
type: "array",
|
|
475
|
+
coerce: (indexes: string[]): number[] =>
|
|
476
|
+
// Parse ["11..13,15..17"] to ["11..13", "15..17"]
|
|
477
|
+
indexes
|
|
478
|
+
.flatMap((item) => item.split(","))
|
|
479
|
+
.flatMap(parseRange),
|
|
470
480
|
},
|
|
471
481
|
};
|
|
@@ -5,7 +5,7 @@ import {interopSecretKey} from "@lodestar/state-transition";
|
|
|
5
5
|
import {LogLevel, Logger, isValidHttpUrl} from "@lodestar/utils";
|
|
6
6
|
import {Signer, SignerType, externalSignerGetKeys} from "@lodestar/validator";
|
|
7
7
|
import {GlobalArgs, defaultNetwork} from "../../../options/index.js";
|
|
8
|
-
import {YargsError, assertValidPubkeysHex
|
|
8
|
+
import {YargsError, assertValidPubkeysHex} from "../../../util/index.js";
|
|
9
9
|
import {showProgress} from "../../../util/progress.js";
|
|
10
10
|
import {decryptKeystoreDefinitions} from "../keymanager/decryptKeystoreDefinitions.js";
|
|
11
11
|
import {PersistedKeysBackend} from "../keymanager/persistedKeys.js";
|
|
@@ -49,7 +49,7 @@ export async function getSignersFromArgs(
|
|
|
49
49
|
|
|
50
50
|
// ONLY USE FOR TESTNETS - Derive interop keys
|
|
51
51
|
if (args.interopIndexes) {
|
|
52
|
-
const indexes =
|
|
52
|
+
const indexes = args.interopIndexes;
|
|
53
53
|
// Using a remote signer with TESTNETS
|
|
54
54
|
if (args["externalSigner.pubkeys"] || args["externalSigner.fetch"]) {
|
|
55
55
|
return getRemoteSigners(args);
|
|
@@ -67,7 +67,7 @@ export async function getSignersFromArgs(
|
|
|
67
67
|
}
|
|
68
68
|
|
|
69
69
|
const masterSK = deriveKeyFromMnemonic(args.fromMnemonic);
|
|
70
|
-
const indexes =
|
|
70
|
+
const indexes = Array.from(new Set(args.mnemonicIndexes));
|
|
71
71
|
return indexes.map((index) => ({
|
|
72
72
|
type: SignerType.Local,
|
|
73
73
|
secretKey: SecretKey.fromBytes(deriveEth2ValidatorKeys(masterSK, index).signing),
|
|
@@ -6,13 +6,7 @@ import {
|
|
|
6
6
|
createChainForkConfig,
|
|
7
7
|
} from "@lodestar/config";
|
|
8
8
|
import {NetworkName, getNetworkBeaconParams} from "../networks/index.js";
|
|
9
|
-
import {
|
|
10
|
-
GlobalArgs,
|
|
11
|
-
ITerminalPowArgs,
|
|
12
|
-
defaultNetwork,
|
|
13
|
-
parseBeaconParamsArgs,
|
|
14
|
-
parseTerminalPowArgs,
|
|
15
|
-
} from "../options/index.js";
|
|
9
|
+
import {GlobalArgs, defaultNetwork, parseBeaconParamsArgs} from "../options/index.js";
|
|
16
10
|
import {readFile} from "../util/index.js";
|
|
17
11
|
import {IBeaconParamsUnparsed} from "./types.js";
|
|
18
12
|
|
|
@@ -44,7 +38,6 @@ export function getBeaconParamsFromArgs(args: GlobalArgs): ChainConfig {
|
|
|
44
38
|
paramsFile: args.paramsFile,
|
|
45
39
|
additionalParamsCli: {
|
|
46
40
|
...parseBeaconParamsArgs(args as IBeaconParamsUnparsed),
|
|
47
|
-
...parseTerminalPowArgs(args as ITerminalPowArgs),
|
|
48
41
|
},
|
|
49
42
|
});
|
|
50
43
|
}
|
package/src/networks/chiado.ts
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
export {chiadoChainConfig as chainConfig} from "@lodestar/config/networks";
|
|
2
2
|
|
|
3
|
-
// eth1.providerUrls suggestion: https://rpc.chiado.gnosis.gateway.fm
|
|
4
|
-
export const depositContractDeployBlock = 155435;
|
|
5
3
|
export const genesisFileUrl = "https://raw.githubusercontent.com/gnosischain/configs/main/chiado/genesis.ssz";
|
|
6
4
|
export const genesisStateRoot = "0xa48419160f8f146ecaa53d12a5d6e1e6af414a328afdc56b60d5002bb472a077";
|
|
7
5
|
export const bootnodesFileUrl = "https://raw.githubusercontent.com/gnosischain/configs/main/chiado/bootnodes.yaml";
|
package/src/networks/dev.ts
CHANGED
package/src/networks/ephemery.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
export {ephemeryChainConfig as chainConfig} from "@lodestar/config/networks";
|
|
2
2
|
|
|
3
|
-
export const depositContractDeployBlock = 0;
|
|
4
3
|
export const genesisFileUrl = "https://ephemery.dev/latest/genesis.ssz";
|
|
5
4
|
export const genesisStateRoot = null;
|
|
6
5
|
export const bootnodesFileUrl = "https://ephemery.dev/latest/bootstrap_nodes.txt";
|
package/src/networks/gnosis.ts
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
export {gnosisChainConfig as chainConfig} from "@lodestar/config/networks";
|
|
2
2
|
|
|
3
|
-
// eth1.providerUrls suggestion: https://rpc.gnosischain.com
|
|
4
|
-
export const depositContractDeployBlock = 19469077;
|
|
5
3
|
export const genesisFileUrl = "https://raw.githubusercontent.com/gnosischain/configs/main/mainnet/genesis.ssz";
|
|
6
4
|
export const genesisStateRoot = "0x1511578d6de70428bf3529ab92102f21070694cb205443437fae359a7f220537";
|
|
7
5
|
export const bootnodesFileUrl = "https://raw.githubusercontent.com/gnosischain/configs/main/mainnet/bootnodes.yaml";
|
package/src/networks/hoodi.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
export {hoodiChainConfig as chainConfig} from "@lodestar/config/networks";
|
|
2
2
|
|
|
3
|
-
export const depositContractDeployBlock = 0;
|
|
4
3
|
export const genesisFileUrl = "https://media.githubusercontent.com/media/eth-clients/hoodi/main/metadata/genesis.ssz";
|
|
5
4
|
export const genesisStateRoot = "0x2683ebc120f91f740c7bed4c866672d01e1ba51b4cc360297138465ee5df40f0";
|
|
6
5
|
export const bootnodesFileUrl =
|
|
@@ -13,4 +12,5 @@ export const bootEnrs = [
|
|
|
13
12
|
"enr:-Ku4QIC89sMC0o-irosD4_23lJJ4qCGOvdUz7SmoShWx0k6AaxCFTKviEHa-sa7-EzsiXpDp0qP0xzX6nKdXJX3X-IQBh2F0dG5ldHOIAAAAAAAAAACEZXRoMpBd9cEGEAAJEP__________gmlkgnY0gmlwhIbRilSJc2VjcDI1NmsxoQK_m0f1DzDc9Cjrspm36zuRa7072HSiMGYWLsKiVSbP34N1ZHCCIyk",
|
|
14
13
|
"enr:-Ku4QNkWjw5tNzo8DtWqKm7CnDdIq_y7xppD6c1EZSwjB8rMOkSFA1wJPLoKrq5UvA7wcxIotH6Usx3PAugEN2JMncIBh2F0dG5ldHOIAAAAAAAAAACEZXRoMpBd9cEGEAAJEP__________gmlkgnY0gmlwhIbHuBeJc2VjcDI1NmsxoQP3FwrhFYB60djwRjAoOjttq6du94DtkQuaN99wvgqaIYN1ZHCCIyk",
|
|
15
14
|
"enr:-OS4QMJGE13xEROqvKN1xnnt7U-noc51VXyM6wFMuL9LMhQDfo1p1dF_zFdS4OsnXz_vIYk-nQWnqJMWRDKvkSK6_CwDh2F0dG5ldHOIAAAAADAAAACGY2xpZW502IpMaWdodGhvdXNljDcuMC4wLWJldGEuM4RldGgykNLxmX9gAAkQAAgAAAAAAACCaWSCdjSCaXCEhse4F4RxdWljgiMqiXNlY3AyNTZrMaECef77P8k5l3PC_raLw42OAzdXfxeQ-58BJriNaqiRGJSIc3luY25ldHMAg3RjcIIjKIN1ZHCCIyg",
|
|
15
|
+
"enr:-KG4QKRSUi4IOAIK_xt5ERrwW_J47wmNCLWFh7Jo0hFE69drZsiZ5Pb5CEcM_njFTTLlIR6SCf67HTcSV1g6hCXdhWkCgmlkgnY0gmlwhLkvrBODaXA2kCoGxcAWAAAYAAAAAAAAABCJc2VjcDI1NmsxoQPU7g2jQGTz8BYbB2vLTb39S_PrcZAehwMM0b3bWsM5rIN1ZHCCIyiEdWRwNoIjKA",
|
|
16
16
|
];
|
package/src/networks/index.ts
CHANGED
|
@@ -49,7 +49,6 @@ const GET_STATE_LOG_INTERVAL = 30 * 1000;
|
|
|
49
49
|
|
|
50
50
|
export function getNetworkData(network: NetworkName): {
|
|
51
51
|
chainConfig: ChainConfig;
|
|
52
|
-
depositContractDeployBlock: number;
|
|
53
52
|
genesisFileUrl: string | null;
|
|
54
53
|
genesisStateRoot: string | null;
|
|
55
54
|
bootnodesFileUrl: string | null;
|
package/src/networks/mainnet.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
export {mainnetChainConfig as chainConfig} from "@lodestar/config/networks";
|
|
2
2
|
|
|
3
|
-
export const depositContractDeployBlock = 11052984;
|
|
4
3
|
export const genesisFileUrl =
|
|
5
4
|
"https://raw.githubusercontent.com/eth-clients/mainnet/refs/heads/main/metadata/genesis.ssz";
|
|
6
5
|
export const genesisStateRoot = "0x7e76880eb67bbdc86250aa578958e9d0675e64e714337855204fb5abaaf82c2b";
|
|
@@ -30,5 +29,5 @@ export const bootEnrs = [
|
|
|
30
29
|
"enr:-LK4QKWrXTpV9T78hNG6s8AM6IO4XH9kFT91uZtFg1GcsJ6dKovDOr1jtAAFPnS2lvNltkOGA9k29BUN7lFh_sjuc9QBh2F0dG5ldHOIAAAAAAAAAACEZXRoMpC1MD8qAAAAAP__________gmlkgnY0gmlwhANAdd-Jc2VjcDI1NmsxoQLQa6ai7y9PMN5hpLe5HmiJSlYzMuzP7ZhwRiwHvqNXdoN0Y3CCI4yDdWRwgiOM",
|
|
31
30
|
// Lodestar team's bootnodes
|
|
32
31
|
"enr:-IS4QPi-onjNsT5xAIAenhCGTDl4z-4UOR25Uq-3TmG4V3kwB9ljLTb_Kp1wdjHNj-H8VVLRBSSWVZo3GUe3z6k0E-IBgmlkgnY0gmlwhKB3_qGJc2VjcDI1NmsxoQMvAfgB4cJXvvXeM6WbCG86CstbSxbQBSGx31FAwVtOTYN1ZHCCIyg",
|
|
33
|
-
"enr:-
|
|
32
|
+
"enr:-KG4QPUf8-g_jU-KrwzG42AGt0wWM1BTnQxgZXlvCEIfTQ5hSmptkmgmMbRkpOqv6kzb33SlhPHJp7x4rLWWiVq5lSECgmlkgnY0gmlwhFPlR9KDaXA2kCoGxcAJAAAVAAAAAAAAABCJc2VjcDI1NmsxoQLdUv9Eo9sxCt0tc_CheLOWnX59yHJtkBSOL7kpxdJ6GYN1ZHCCIyiEdWRwNoIjKA",
|
|
34
33
|
];
|
package/src/networks/sepolia.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
export {sepoliaChainConfig as chainConfig} from "@lodestar/config/networks";
|
|
2
2
|
|
|
3
|
-
export const depositContractDeployBlock = 1273020;
|
|
4
3
|
export const genesisFileUrl = "https://github.com/eth-clients/sepolia/raw/main/metadata/genesis.ssz";
|
|
5
4
|
export const genesisStateRoot = "0xfb9afe32150fa39f4b346be2519a67e2a4f5efcd50a1dc192c3f6b3d013d2798";
|
|
6
5
|
export const bootnodesFileUrl =
|
|
@@ -23,7 +23,6 @@ export type ChainArgs = {
|
|
|
23
23
|
"chain.computeUnrealized"?: boolean;
|
|
24
24
|
"chain.assertCorrectProgressiveBalances"?: boolean;
|
|
25
25
|
"chain.maxSkipSlots"?: number;
|
|
26
|
-
"safe-slots-to-import-optimistically": number;
|
|
27
26
|
emitPayloadAttributes?: boolean;
|
|
28
27
|
broadcastValidationStrictness?: string;
|
|
29
28
|
"chain.minSameMessageSignatureSetsToBatch"?: number;
|
|
@@ -63,7 +62,6 @@ export function parseArgs(args: ChainArgs): IBeaconNodeOptions["chain"] {
|
|
|
63
62
|
computeUnrealized: args["chain.computeUnrealized"],
|
|
64
63
|
assertCorrectProgressiveBalances: args["chain.assertCorrectProgressiveBalances"],
|
|
65
64
|
maxSkipSlots: args["chain.maxSkipSlots"],
|
|
66
|
-
safeSlotsToImportOptimistically: args["safe-slots-to-import-optimistically"],
|
|
67
65
|
emitPayloadAttributes: args.emitPayloadAttributes,
|
|
68
66
|
broadcastValidationStrictness: args.broadcastValidationStrictness,
|
|
69
67
|
minSameMessageSignatureSetsToBatch:
|
|
@@ -227,15 +225,6 @@ Will double processing times. Use only for debugging purposes.",
|
|
|
227
225
|
group: "chain",
|
|
228
226
|
},
|
|
229
227
|
|
|
230
|
-
"safe-slots-to-import-optimistically": {
|
|
231
|
-
hidden: true,
|
|
232
|
-
type: "number",
|
|
233
|
-
description:
|
|
234
|
-
"Slots from current (clock) slot till which its safe to import a block optimistically if the merge is not justified yet.",
|
|
235
|
-
default: defaultOptions.chain.safeSlotsToImportOptimistically,
|
|
236
|
-
group: "chain",
|
|
237
|
-
},
|
|
238
|
-
|
|
239
228
|
"chain.archiveStateEpochFrequency": {
|
|
240
229
|
description: "Minimum number of epochs between archived states",
|
|
241
230
|
default: defaultOptions.chain.archiveStateEpochFrequency,
|
|
@@ -1,58 +1,40 @@
|
|
|
1
|
-
import fs from "node:fs";
|
|
2
|
-
import {IBeaconNodeOptions, defaultOptions} from "@lodestar/beacon-node";
|
|
3
1
|
import {CliCommandOptions} from "@lodestar/utils";
|
|
4
|
-
import {extractJwtHexSecret} from "../../util/index.js";
|
|
5
|
-
import {ExecutionEngineArgs} from "./execution.js";
|
|
6
2
|
|
|
3
|
+
/**
|
|
4
|
+
* @deprecated These options are no longer used since eth1 deposit tracking was removed.
|
|
5
|
+
*/
|
|
7
6
|
export type Eth1Args = {
|
|
7
|
+
/** @deprecated */
|
|
8
8
|
eth1?: boolean;
|
|
9
|
+
/** @deprecated */
|
|
9
10
|
"eth1.providerUrls"?: string[];
|
|
11
|
+
/** @deprecated */
|
|
10
12
|
"eth1.depositContractDeployBlock"?: number;
|
|
13
|
+
/** @deprecated */
|
|
11
14
|
"eth1.disableEth1DepositDataTracker"?: boolean;
|
|
15
|
+
/** @deprecated */
|
|
12
16
|
"eth1.unsafeAllowDepositDataOverwrite"?: boolean;
|
|
17
|
+
/** @deprecated */
|
|
13
18
|
"eth1.forcedEth1DataVote"?: string;
|
|
14
19
|
};
|
|
15
20
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
let providerUrls = args["eth1.providerUrls"];
|
|
21
|
-
|
|
22
|
-
// If no providerUrls are explicitly provided, we should pick the execution endpoint
|
|
23
|
-
// because as per Kiln spec v2.1, execution *must* host the `eth_` methods necessary
|
|
24
|
-
// for deposit and merge trackers on engine endpoints as well protected by a
|
|
25
|
-
// jwt auth mechanism.
|
|
26
|
-
if (providerUrls === undefined && args["execution.urls"]) {
|
|
27
|
-
providerUrls = args["execution.urls"];
|
|
28
|
-
jwtSecretHex = args.jwtSecret ? extractJwtHexSecret(fs.readFileSync(args.jwtSecret, "utf-8").trim()) : undefined;
|
|
29
|
-
jwtId = args.jwtId;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
return {
|
|
33
|
-
enabled: args.eth1,
|
|
34
|
-
providerUrls,
|
|
35
|
-
jwtSecretHex,
|
|
36
|
-
jwtId,
|
|
37
|
-
depositContractDeployBlock: args["eth1.depositContractDeployBlock"],
|
|
38
|
-
disableEth1DepositDataTracker: args["eth1.disableEth1DepositDataTracker"],
|
|
39
|
-
unsafeAllowDepositDataOverwrite: args["eth1.unsafeAllowDepositDataOverwrite"],
|
|
40
|
-
forcedEth1DataVote: args["eth1.forcedEth1DataVote"],
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
|
|
21
|
+
/**
|
|
22
|
+
* @deprecated These options are no longer used since eth1 deposit tracking was removed.
|
|
23
|
+
*/
|
|
44
24
|
export const options: CliCommandOptions<Eth1Args> = {
|
|
45
25
|
eth1: {
|
|
26
|
+
hidden: true,
|
|
27
|
+
deprecated: true,
|
|
46
28
|
description: "Whether to follow the eth1 chain",
|
|
47
29
|
type: "boolean",
|
|
48
|
-
defaultDescription: String(defaultOptions.eth1.enabled),
|
|
49
30
|
group: "eth1",
|
|
50
31
|
},
|
|
51
32
|
|
|
52
33
|
"eth1.providerUrls": {
|
|
34
|
+
hidden: true,
|
|
35
|
+
deprecated: true,
|
|
53
36
|
description:
|
|
54
37
|
"Urls to Eth1 node with enabled rpc. If not explicitly provided and execution endpoint provided via execution.urls, it will use execution.urls. Otherwise will try connecting on the specified default(s)",
|
|
55
|
-
defaultDescription: defaultOptions.eth1.providerUrls?.join(","),
|
|
56
38
|
type: "array",
|
|
57
39
|
string: true,
|
|
58
40
|
coerce: (urls: string[]): string[] =>
|
|
@@ -63,31 +45,32 @@ export const options: CliCommandOptions<Eth1Args> = {
|
|
|
63
45
|
|
|
64
46
|
"eth1.depositContractDeployBlock": {
|
|
65
47
|
hidden: true,
|
|
48
|
+
deprecated: true,
|
|
66
49
|
description: "Block number at which the deposit contract contract was deployed",
|
|
67
50
|
type: "number",
|
|
68
|
-
defaultDescription: String(defaultOptions.eth1.depositContractDeployBlock),
|
|
69
51
|
group: "eth1",
|
|
70
52
|
},
|
|
71
53
|
|
|
72
54
|
"eth1.disableEth1DepositDataTracker": {
|
|
73
55
|
hidden: true,
|
|
56
|
+
deprecated: true,
|
|
74
57
|
description: "Disable Eth1DepositDataTracker modules",
|
|
75
58
|
type: "boolean",
|
|
76
|
-
defaultDescription: String(defaultOptions.eth1.disableEth1DepositDataTracker),
|
|
77
59
|
group: "eth1",
|
|
78
60
|
},
|
|
79
61
|
|
|
80
62
|
"eth1.unsafeAllowDepositDataOverwrite": {
|
|
81
63
|
hidden: true,
|
|
64
|
+
deprecated: true,
|
|
82
65
|
description:
|
|
83
66
|
"Allow the deposit tracker to overwrite previously fetched and saved deposit event data. Warning!!! This is an unsafe operation, so enable this flag only if you know what you are doing.",
|
|
84
67
|
type: "boolean",
|
|
85
|
-
defaultDescription: String(defaultOptions.eth1.unsafeAllowDepositDataOverwrite),
|
|
86
68
|
group: "eth1",
|
|
87
69
|
},
|
|
88
70
|
|
|
89
71
|
"eth1.forcedEth1DataVote": {
|
|
90
72
|
hidden: true,
|
|
73
|
+
deprecated: true,
|
|
91
74
|
description: "Vote for a specific eth1_data regardless of all conditions. Hex encoded ssz serialized Eth1Data type",
|
|
92
75
|
type: "string",
|
|
93
76
|
group: "eth1",
|
|
@@ -27,7 +27,6 @@ export function parseBeaconNodeArgs(args: BeaconNodeArgs): RecursivePartial<IBea
|
|
|
27
27
|
api: api.parseArgs(args),
|
|
28
28
|
chain: chain.parseArgs(args),
|
|
29
29
|
// db: {},
|
|
30
|
-
eth1: eth1.parseArgs(args),
|
|
31
30
|
executionEngine: execution.parseArgs(args),
|
|
32
31
|
executionBuilder: builder.parseArgs(args),
|
|
33
32
|
metrics: metrics.parseArgs(args),
|