@chainsafe/lodestar 1.50.0-dev.fef46df5ba → 1.50.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/.git-data.json +2 -2
- package/lib/cmds/beacon/handler.d.ts +1 -0
- package/lib/cmds/beacon/handler.d.ts.map +1 -1
- package/lib/cmds/beacon/handler.js +11 -6
- package/lib/cmds/beacon/handler.js.map +1 -1
- package/lib/cmds/beacon/initBeaconState.d.ts +4 -2
- package/lib/cmds/beacon/initBeaconState.d.ts.map +1 -1
- package/lib/cmds/beacon/initBeaconState.js +26 -13
- package/lib/cmds/beacon/initBeaconState.js.map +1 -1
- package/lib/cmds/beacon/options.d.ts +1 -1
- package/lib/cmds/beacon/options.d.ts.map +1 -1
- package/lib/cmds/beacon/options.js +6 -5
- package/lib/cmds/beacon/options.js.map +1 -1
- package/lib/cmds/beacon/paths.d.ts +4 -0
- package/lib/cmds/beacon/paths.d.ts.map +1 -1
- package/lib/cmds/beacon/paths.js +3 -0
- package/lib/cmds/beacon/paths.js.map +1 -1
- package/lib/cmds/beacon/pubkeysFile.d.ts +10 -0
- package/lib/cmds/beacon/pubkeysFile.d.ts.map +1 -0
- package/lib/cmds/beacon/pubkeysFile.js +39 -0
- package/lib/cmds/beacon/pubkeysFile.js.map +1 -0
- package/lib/cmds/beacon/stateInitialization/checkpointState.js +24 -8
- package/lib/cmds/beacon/stateInitialization/checkpointState.js.map +1 -1
- package/lib/cmds/beacon/stateInitialization/genesisState.d.ts +1 -1
- package/lib/cmds/beacon/stateInitialization/genesisState.d.ts.map +1 -1
- package/lib/cmds/beacon/stateInitialization/genesisState.js +17 -3
- package/lib/cmds/beacon/stateInitialization/genesisState.js.map +1 -1
- package/lib/cmds/beacon/stateInitialization/prepareStateInitialization.d.ts +2 -2
- package/lib/cmds/beacon/stateInitialization/prepareStateInitialization.d.ts.map +1 -1
- package/lib/cmds/beacon/stateInitialization/prepareStateInitialization.js +20 -8
- package/lib/cmds/beacon/stateInitialization/prepareStateInitialization.js.map +1 -1
- package/lib/cmds/beacon/stateInitialization/types.d.ts +4 -2
- package/lib/cmds/beacon/stateInitialization/types.d.ts.map +1 -1
- package/lib/cmds/dev/handler.d.ts.map +1 -1
- package/lib/cmds/dev/handler.js +3 -1
- package/lib/cmds/dev/handler.js.map +1 -1
- package/lib/cmds/dev/options.d.ts +3 -1
- package/lib/cmds/dev/options.d.ts.map +1 -1
- package/lib/cmds/validator/handler.js +6 -1
- package/lib/cmds/validator/handler.js.map +1 -1
- package/lib/cmds/validator/options.js +1 -1
- package/lib/cmds/validator/options.js.map +1 -1
- package/lib/index.js +0 -0
- package/lib/networks/index.d.ts.map +1 -1
- package/lib/networks/index.js +5 -0
- package/lib/networks/index.js.map +1 -1
- package/lib/options/beaconNodeOptions/chain.d.ts +2 -1
- package/lib/options/beaconNodeOptions/chain.d.ts.map +1 -1
- package/lib/options/beaconNodeOptions/chain.js +11 -4
- package/lib/options/beaconNodeOptions/chain.js.map +1 -1
- package/lib/options/beaconNodeOptions/execution.d.ts +2 -1
- package/lib/options/beaconNodeOptions/execution.d.ts.map +1 -1
- package/lib/options/beaconNodeOptions/execution.js +9 -1
- package/lib/options/beaconNodeOptions/execution.js.map +1 -1
- package/lib/options/beaconNodeOptions/index.d.ts +3 -1
- package/lib/options/beaconNodeOptions/index.d.ts.map +1 -1
- package/package.json +15 -15
- package/src/cmds/beacon/handler.ts +15 -6
- package/src/cmds/beacon/initBeaconState.ts +40 -13
- package/src/cmds/beacon/options.ts +8 -7
- package/src/cmds/beacon/paths.ts +5 -0
- package/src/cmds/beacon/pubkeysFile.ts +50 -0
- package/src/cmds/beacon/stateInitialization/checkpointState.ts +28 -12
- package/src/cmds/beacon/stateInitialization/genesisState.ts +18 -4
- package/src/cmds/beacon/stateInitialization/prepareStateInitialization.ts +21 -8
- package/src/cmds/beacon/stateInitialization/types.ts +4 -3
- package/src/cmds/dev/handler.ts +3 -1
- package/src/cmds/validator/handler.ts +11 -0
- package/src/cmds/validator/options.ts +1 -1
- package/src/networks/index.ts +9 -0
- package/src/options/beaconNodeOptions/chain.ts +14 -5
- package/src/options/beaconNodeOptions/execution.ts +12 -1
|
@@ -300,6 +300,17 @@ function getProposerConfigFromArgs(
|
|
|
300
300
|
}
|
|
301
301
|
}
|
|
302
302
|
|
|
303
|
+
const configs = [valProposerConfig.defaultConfig, ...Object.values(valProposerConfig.proposerConfig ?? {})];
|
|
304
|
+
if (
|
|
305
|
+
configs.some(
|
|
306
|
+
(config) =>
|
|
307
|
+
config.builder?.selection === routes.validator.BuilderSelection.ExecutionOnly &&
|
|
308
|
+
(config.builder.builders ?? []).length > 0
|
|
309
|
+
)
|
|
310
|
+
) {
|
|
311
|
+
throw new YargsError("Builder selection executiononly can not be combined with builders");
|
|
312
|
+
}
|
|
313
|
+
|
|
303
314
|
return valProposerConfig;
|
|
304
315
|
}
|
|
305
316
|
|
|
@@ -267,7 +267,7 @@ export const validatorOptions: CliCommandOptions<IValidatorCliArgs> = {
|
|
|
267
267
|
"builder.selection": {
|
|
268
268
|
type: "string",
|
|
269
269
|
description:
|
|
270
|
-
"Builder block selection strategy `default`, `maxprofit`, `builderalways`, `executionalways`, or
|
|
270
|
+
"Builder block selection strategy `default`, `maxprofit`, `builderalways`, `executionalways`, or `executiononly`",
|
|
271
271
|
defaultDescription: `${defaultOptions.builderSelection}`,
|
|
272
272
|
group: "builder",
|
|
273
273
|
},
|
package/src/networks/index.ts
CHANGED
|
@@ -182,11 +182,20 @@ export async function fetchWeakSubjectivityStateBytes(
|
|
|
182
182
|
GET_STATE_LOG_INTERVAL
|
|
183
183
|
);
|
|
184
184
|
const wsStateBytes = response.ssz();
|
|
185
|
+
const {version} = response.meta();
|
|
185
186
|
|
|
186
187
|
const wsSlot = getStateSlotFromBytes(wsStateBytes);
|
|
187
188
|
const logData = {stateId, size: formatBytes(wsStateBytes.length)};
|
|
188
189
|
logger.info("Download completed", typeof stateId === "number" ? logData : {...logData, slot: wsSlot});
|
|
189
190
|
|
|
191
|
+
const expectedFork = config.getForkName(wsSlot);
|
|
192
|
+
if (version !== expectedFork) {
|
|
193
|
+
throw new LodestarError(
|
|
194
|
+
{code: "CHECKPOINT_FORK_MISMATCH"},
|
|
195
|
+
`Checkpoint sync server returned ${version} state at slot ${wsSlot} but local config expects ${expectedFork}, verify --network or the chain config`
|
|
196
|
+
);
|
|
197
|
+
}
|
|
198
|
+
|
|
190
199
|
return {
|
|
191
200
|
stateBytes: new Uint8Array(wsStateBytes.buffer, wsStateBytes.byteOffset, wsStateBytes.byteLength),
|
|
192
201
|
expectedCheckpoint: wsCheckpoint,
|
|
@@ -12,6 +12,7 @@ export type ChainArgs = {
|
|
|
12
12
|
"chain.blsVerifyAllMainThread"?: boolean;
|
|
13
13
|
"chain.disableBlsBatchVerify"?: boolean;
|
|
14
14
|
"chain.persistProducedBlocks"?: boolean;
|
|
15
|
+
"chain.persistProducedPayloadEnvelopes"?: boolean;
|
|
15
16
|
"chain.persistInvalidSszObjects"?: boolean;
|
|
16
17
|
// No need to define chain.persistInvalidSszObjects as part of ChainArgs
|
|
17
18
|
// as this is defined as part of BeaconPaths
|
|
@@ -35,7 +36,7 @@ export type ChainArgs = {
|
|
|
35
36
|
"chain.archiveDataEpochs"?: number;
|
|
36
37
|
"chain.archiveMode": ArchiveMode;
|
|
37
38
|
"chain.nHistoricalStatesFileDataStore"?: boolean;
|
|
38
|
-
"chain.
|
|
39
|
+
"chain.nativeStateTransition"?: boolean;
|
|
39
40
|
"chain.maxBlockStates"?: number;
|
|
40
41
|
"chain.maxCPStateEpochsInMemory"?: number;
|
|
41
42
|
"chain.maxCPStateEpochsOnDisk"?: number;
|
|
@@ -53,6 +54,7 @@ export function parseArgs(args: ChainArgs & CircuitBreakerArgs): IBeaconNodeOpti
|
|
|
53
54
|
blsVerifyAllMainThread: args["chain.blsVerifyAllMainThread"],
|
|
54
55
|
disableBlsBatchVerify: args["chain.disableBlsBatchVerify"],
|
|
55
56
|
persistProducedBlocks: args["chain.persistProducedBlocks"],
|
|
57
|
+
persistProducedPayloadEnvelopes: args["chain.persistProducedPayloadEnvelopes"],
|
|
56
58
|
persistInvalidSszObjects: args["chain.persistInvalidSszObjects"],
|
|
57
59
|
// biome-ignore lint/suspicious/noExplicitAny: We need to use `any` type here
|
|
58
60
|
persistInvalidSszObjectsDir: undefined as any,
|
|
@@ -79,7 +81,7 @@ export function parseArgs(args: ChainArgs & CircuitBreakerArgs): IBeaconNodeOpti
|
|
|
79
81
|
archiveMode: args["chain.archiveMode"] ?? defaultOptions.chain.archiveMode,
|
|
80
82
|
nHistoricalStatesFileDataStore:
|
|
81
83
|
args["chain.nHistoricalStatesFileDataStore"] ?? defaultOptions.chain.nHistoricalStatesFileDataStore,
|
|
82
|
-
|
|
84
|
+
nativeStateTransition: args["chain.nativeStateTransition"] ?? defaultOptions.chain.nativeStateTransition,
|
|
83
85
|
maxBlockStates: args["chain.maxBlockStates"] ?? defaultOptions.chain.maxBlockStates,
|
|
84
86
|
maxCPStateEpochsInMemory: args["chain.maxCPStateEpochsInMemory"] ?? defaultOptions.chain.maxCPStateEpochsInMemory,
|
|
85
87
|
maxCPStateEpochsOnDisk: args["chain.maxCPStateEpochsOnDisk"] ?? defaultOptions.chain.maxCPStateEpochsOnDisk,
|
|
@@ -170,6 +172,13 @@ Will double processing times. Use only for debugging purposes.",
|
|
|
170
172
|
group: "chain",
|
|
171
173
|
},
|
|
172
174
|
|
|
175
|
+
"chain.persistProducedPayloadEnvelopes": {
|
|
176
|
+
hidden: true,
|
|
177
|
+
type: "boolean",
|
|
178
|
+
description: "Persist produced execution payload envelopes as SSZ files for debugging",
|
|
179
|
+
group: "chain",
|
|
180
|
+
},
|
|
181
|
+
|
|
173
182
|
"chain.persistInvalidSszObjects": {
|
|
174
183
|
hidden: true,
|
|
175
184
|
type: "boolean",
|
|
@@ -318,11 +327,11 @@ Will double processing times. Use only for debugging purposes.",
|
|
|
318
327
|
group: "chain",
|
|
319
328
|
},
|
|
320
329
|
|
|
321
|
-
"chain.
|
|
330
|
+
"chain.nativeStateTransition": {
|
|
322
331
|
hidden: true,
|
|
323
|
-
description: "Use native (Zig)
|
|
332
|
+
description: "Use native (Zig) state transition instead of JS implementation",
|
|
324
333
|
type: "boolean",
|
|
325
|
-
default: defaultOptions.chain.
|
|
334
|
+
default: defaultOptions.chain.nativeStateTransition,
|
|
326
335
|
group: "chain",
|
|
327
336
|
},
|
|
328
337
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import fs from "node:fs";
|
|
2
|
-
import {IBeaconNodeOptions, defaultExecutionEngineHttpOpts} from "@lodestar/beacon-node";
|
|
2
|
+
import {EngineApiMode, IBeaconNodeOptions, defaultExecutionEngineHttpOpts, engineApiModes} from "@lodestar/beacon-node";
|
|
3
3
|
import {CliCommandOptions} from "@lodestar/utils";
|
|
4
4
|
import {extractJwtHexSecret} from "../../util/index.js";
|
|
5
5
|
|
|
@@ -8,6 +8,7 @@ export type ExecutionEngineArgs = {
|
|
|
8
8
|
"execution.timeout"?: number;
|
|
9
9
|
"execution.retries": number;
|
|
10
10
|
"execution.retryDelay": number;
|
|
11
|
+
"execution.engineApi"?: EngineApiMode;
|
|
11
12
|
"execution.engineMock"?: boolean;
|
|
12
13
|
jwtSecret?: string;
|
|
13
14
|
jwtId?: string;
|
|
@@ -26,6 +27,7 @@ export function parseArgs(args: ExecutionEngineArgs): IBeaconNodeOptions["execut
|
|
|
26
27
|
timeout: args["execution.timeout"],
|
|
27
28
|
retries: args["execution.retries"],
|
|
28
29
|
retryDelay: args["execution.retryDelay"],
|
|
30
|
+
engineApi: args["execution.engineApi"],
|
|
29
31
|
/**
|
|
30
32
|
* jwtSecret is parsed as hex instead of bytes because the merge with defaults
|
|
31
33
|
* in beaconOptions messes up the bytes array as as index => value object
|
|
@@ -69,6 +71,15 @@ export const options: CliCommandOptions<ExecutionEngineArgs> = {
|
|
|
69
71
|
group: "execution",
|
|
70
72
|
},
|
|
71
73
|
|
|
74
|
+
"execution.engineApi": {
|
|
75
|
+
description:
|
|
76
|
+
"Engine API transport. 'auto' negotiates REST with SSZ for a single execution URL and uses JSON-RPC for multiple URLs or unsupported features. 'ssz' requires a single REST-capable execution URL without JSON-RPC fallback. 'json-rpc' always uses JSON-RPC",
|
|
77
|
+
type: "string",
|
|
78
|
+
choices: engineApiModes,
|
|
79
|
+
default: defaultExecutionEngineHttpOpts.engineApi,
|
|
80
|
+
group: "execution",
|
|
81
|
+
},
|
|
82
|
+
|
|
72
83
|
"execution.engineMock": {
|
|
73
84
|
description: "Set the execution engine to mock mode (development only)",
|
|
74
85
|
type: "boolean",
|