@chainsafe/lodestar 1.50.0-dev.fd4f342a40 → 1.50.0-dev.fe4e7408b4
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 +1 -1
- package/lib/cmds/beacon/handler.d.ts.map +1 -1
- package/lib/cmds/beacon/handler.js +5 -1
- package/lib/cmds/beacon/handler.js.map +1 -1
- package/lib/cmds/beacon/initBeaconState.d.ts +2 -0
- package/lib/cmds/beacon/initBeaconState.d.ts.map +1 -1
- package/lib/cmds/beacon/initBeaconState.js +8 -7
- package/lib/cmds/beacon/initBeaconState.js.map +1 -1
- package/lib/cmds/beacon/stateInitialization/checkpointState.js +22 -6
- package/lib/cmds/beacon/stateInitialization/checkpointState.js.map +1 -1
- package/lib/cmds/beacon/stateInitialization/genesisState.d.ts.map +1 -1
- package/lib/cmds/beacon/stateInitialization/genesisState.js +15 -1
- package/lib/cmds/beacon/stateInitialization/genesisState.js.map +1 -1
- package/lib/cmds/beacon/stateInitialization/prepareStateInitialization.d.ts +1 -1
- package/lib/cmds/beacon/stateInitialization/prepareStateInitialization.d.ts.map +1 -1
- package/lib/cmds/beacon/stateInitialization/prepareStateInitialization.js +17 -2
- 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/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/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 +8 -0
- package/src/cmds/beacon/initBeaconState.ts +15 -8
- package/src/cmds/beacon/stateInitialization/checkpointState.ts +26 -10
- package/src/cmds/beacon/stateInitialization/genesisState.ts +15 -1
- package/src/cmds/beacon/stateInitialization/prepareStateInitialization.ts +17 -2
- package/src/cmds/beacon/stateInitialization/types.ts +4 -2
- package/src/cmds/validator/handler.ts +11 -0
- package/src/cmds/validator/options.ts +1 -1
- package/src/options/beaconNodeOptions/chain.ts +14 -5
- package/src/options/beaconNodeOptions/execution.ts +12 -1
|
@@ -10,6 +10,7 @@ export type ChainArgs = {
|
|
|
10
10
|
"chain.blsVerifyAllMainThread"?: boolean;
|
|
11
11
|
"chain.disableBlsBatchVerify"?: boolean;
|
|
12
12
|
"chain.persistProducedBlocks"?: boolean;
|
|
13
|
+
"chain.persistProducedPayloadEnvelopes"?: boolean;
|
|
13
14
|
"chain.persistInvalidSszObjects"?: boolean;
|
|
14
15
|
"chain.persistOrphanedBlocks"?: boolean;
|
|
15
16
|
"chain.dedupePayloads"?: boolean;
|
|
@@ -30,7 +31,7 @@ export type ChainArgs = {
|
|
|
30
31
|
"chain.archiveDataEpochs"?: number;
|
|
31
32
|
"chain.archiveMode": ArchiveMode;
|
|
32
33
|
"chain.nHistoricalStatesFileDataStore"?: boolean;
|
|
33
|
-
"chain.
|
|
34
|
+
"chain.nativeStateTransition"?: boolean;
|
|
34
35
|
"chain.maxBlockStates"?: number;
|
|
35
36
|
"chain.maxCPStateEpochsInMemory"?: number;
|
|
36
37
|
"chain.maxCPStateEpochsOnDisk"?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chain.d.ts","sourceRoot":"","sources":["../../../src/options/beaconNodeOptions/chain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAwB,kBAAkB,EAAiB,MAAM,uBAAuB,CAAC;AAC5G,OAAO,EAAC,iBAAiB,EAAC,MAAM,iBAAiB,CAAC;AAElD,OAAO,EAAC,kBAAkB,EAAC,MAAM,cAAc,CAAC;AAEhD,MAAM,MAAM,SAAS,GAAG;IACtB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,yBAAyB,CAAC,EAAE,MAAM,EAAE,CAAC;IACrC,+BAA+B,CAAC,EAAE,OAAO,CAAC;IAC1C,8BAA8B,CAAC,EAAE,OAAO,CAAC;IACzC,6BAA6B,CAAC,EAAE,OAAO,CAAC;IACxC,6BAA6B,CAAC,EAAE,OAAO,CAAC;IACxC,gCAAgC,CAAC,EAAE,OAAO,CAAC;IAI3C,6BAA6B,CAAC,EAAE,OAAO,CAAC;IACxC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,iCAAiC,CAAC,EAAE,OAAO,CAAC;IAC5C,gCAAgC,CAAC,EAAE,MAAM,CAAC;IAC1C,gCAAgC,CAAC,EAAE,MAAM,CAAC;IAC1C,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,gCAAgC,CAAC,EAAE,OAAO,CAAC;IAC3C,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,6BAA6B,CAAC,EAAE,MAAM,CAAC;IACvC,0CAA0C,CAAC,EAAE,MAAM,CAAC;IACpD,+BAA+B,CAAC,EAAE,MAAM,CAAC;IACzC,kCAAkC,EAAE,MAAM,CAAC;IAC3C,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,mBAAmB,EAAE,WAAW,CAAC;IACjC,sCAAsC,CAAC,EAAE,OAAO,CAAC;IACjD,
|
|
1
|
+
{"version":3,"file":"chain.d.ts","sourceRoot":"","sources":["../../../src/options/beaconNodeOptions/chain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAwB,kBAAkB,EAAiB,MAAM,uBAAuB,CAAC;AAC5G,OAAO,EAAC,iBAAiB,EAAC,MAAM,iBAAiB,CAAC;AAElD,OAAO,EAAC,kBAAkB,EAAC,MAAM,cAAc,CAAC;AAEhD,MAAM,MAAM,SAAS,GAAG;IACtB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,yBAAyB,CAAC,EAAE,MAAM,EAAE,CAAC;IACrC,+BAA+B,CAAC,EAAE,OAAO,CAAC;IAC1C,8BAA8B,CAAC,EAAE,OAAO,CAAC;IACzC,6BAA6B,CAAC,EAAE,OAAO,CAAC;IACxC,6BAA6B,CAAC,EAAE,OAAO,CAAC;IACxC,uCAAuC,CAAC,EAAE,OAAO,CAAC;IAClD,gCAAgC,CAAC,EAAE,OAAO,CAAC;IAI3C,6BAA6B,CAAC,EAAE,OAAO,CAAC;IACxC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,0BAA0B,CAAC,EAAE,OAAO,CAAC;IACrC,iCAAiC,CAAC,EAAE,OAAO,CAAC;IAC5C,gCAAgC,CAAC,EAAE,MAAM,CAAC;IAC1C,gCAAgC,CAAC,EAAE,MAAM,CAAC;IAC1C,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,gCAAgC,CAAC,EAAE,OAAO,CAAC;IAC3C,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,6BAA6B,CAAC,EAAE,MAAM,CAAC;IACvC,0CAA0C,CAAC,EAAE,MAAM,CAAC;IACpD,+BAA+B,CAAC,EAAE,MAAM,CAAC;IACzC,kCAAkC,EAAE,MAAM,CAAC;IAC3C,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,mBAAmB,EAAE,WAAW,CAAC;IACjC,sCAAsC,CAAC,EAAE,OAAO,CAAC;IACjD,6BAA6B,CAAC,EAAE,OAAO,CAAC;IACxC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,gCAAgC,CAAC,EAAE,MAAM,CAAC;IAC1C,8BAA8B,CAAC,EAAE,MAAM,CAAC;IAExC,oBAAoB,CAAC,EAAE,OAAO,CAAC;CAChC,CAAC;AAEF,wBAAgB,SAAS,CAAC,IAAI,EAAE,SAAS,GAAG,kBAAkB,GAAG,kBAAkB,CAAC,OAAO,CAAC,CA8C3F;AAED,eAAO,MAAM,OAAO,EAAE,iBAAiB,CAAC,SAAS,CAqRhD,CAAC"}
|
|
@@ -10,6 +10,7 @@ export function parseArgs(args) {
|
|
|
10
10
|
blsVerifyAllMainThread: args["chain.blsVerifyAllMainThread"],
|
|
11
11
|
disableBlsBatchVerify: args["chain.disableBlsBatchVerify"],
|
|
12
12
|
persistProducedBlocks: args["chain.persistProducedBlocks"],
|
|
13
|
+
persistProducedPayloadEnvelopes: args["chain.persistProducedPayloadEnvelopes"],
|
|
13
14
|
persistInvalidSszObjects: args["chain.persistInvalidSszObjects"],
|
|
14
15
|
// biome-ignore lint/suspicious/noExplicitAny: We need to use `any` type here
|
|
15
16
|
persistInvalidSszObjectsDir: undefined,
|
|
@@ -34,7 +35,7 @@ export function parseArgs(args) {
|
|
|
34
35
|
archiveDataEpochs: args["chain.archiveDataEpochs"],
|
|
35
36
|
archiveMode: args["chain.archiveMode"] ?? defaultOptions.chain.archiveMode,
|
|
36
37
|
nHistoricalStatesFileDataStore: args["chain.nHistoricalStatesFileDataStore"] ?? defaultOptions.chain.nHistoricalStatesFileDataStore,
|
|
37
|
-
|
|
38
|
+
nativeStateTransition: args["chain.nativeStateTransition"] ?? defaultOptions.chain.nativeStateTransition,
|
|
38
39
|
maxBlockStates: args["chain.maxBlockStates"] ?? defaultOptions.chain.maxBlockStates,
|
|
39
40
|
maxCPStateEpochsInMemory: args["chain.maxCPStateEpochsInMemory"] ?? defaultOptions.chain.maxCPStateEpochsInMemory,
|
|
40
41
|
maxCPStateEpochsOnDisk: args["chain.maxCPStateEpochsOnDisk"] ?? defaultOptions.chain.maxCPStateEpochsOnDisk,
|
|
@@ -110,6 +111,12 @@ Will double processing times. Use only for debugging purposes.",
|
|
|
110
111
|
description: "Persist produced blocks or not for debugging purpose",
|
|
111
112
|
group: "chain",
|
|
112
113
|
},
|
|
114
|
+
"chain.persistProducedPayloadEnvelopes": {
|
|
115
|
+
hidden: true,
|
|
116
|
+
type: "boolean",
|
|
117
|
+
description: "Persist produced execution payload envelopes as SSZ files for debugging",
|
|
118
|
+
group: "chain",
|
|
119
|
+
},
|
|
113
120
|
"chain.persistInvalidSszObjects": {
|
|
114
121
|
hidden: true,
|
|
115
122
|
type: "boolean",
|
|
@@ -235,11 +242,11 @@ Will double processing times. Use only for debugging purposes.",
|
|
|
235
242
|
default: defaultOptions.chain.nHistoricalStatesFileDataStore,
|
|
236
243
|
group: "chain",
|
|
237
244
|
},
|
|
238
|
-
"chain.
|
|
245
|
+
"chain.nativeStateTransition": {
|
|
239
246
|
hidden: true,
|
|
240
|
-
description: "Use native (Zig)
|
|
247
|
+
description: "Use native (Zig) state transition instead of JS implementation",
|
|
241
248
|
type: "boolean",
|
|
242
|
-
default: defaultOptions.chain.
|
|
249
|
+
default: defaultOptions.chain.nativeStateTransition,
|
|
243
250
|
group: "chain",
|
|
244
251
|
},
|
|
245
252
|
"chain.maxBlockStates": {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chain.js","sourceRoot":"","sources":["../../../src/options/beaconNodeOptions/chain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAE,oBAAoB,EAAsB,cAAc,EAAC,MAAM,uBAAuB,CAAC;AAE5G,OAAO,EAAC,cAAc,EAAC,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"chain.js","sourceRoot":"","sources":["../../../src/options/beaconNodeOptions/chain.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { IBeaconNodeOptions } from "@lodestar/beacon-node";
|
|
1
|
+
import { EngineApiMode, IBeaconNodeOptions } from "@lodestar/beacon-node";
|
|
2
2
|
import { CliCommandOptions } from "@lodestar/utils";
|
|
3
3
|
export type ExecutionEngineArgs = {
|
|
4
4
|
"execution.urls": string[];
|
|
5
5
|
"execution.timeout"?: number;
|
|
6
6
|
"execution.retries": number;
|
|
7
7
|
"execution.retryDelay": number;
|
|
8
|
+
"execution.engineApi"?: EngineApiMode;
|
|
8
9
|
"execution.engineMock"?: boolean;
|
|
9
10
|
jwtSecret?: string;
|
|
10
11
|
jwtId?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../../src/options/beaconNodeOptions/execution.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,kBAAkB,
|
|
1
|
+
{"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../../src/options/beaconNodeOptions/execution.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,aAAa,EAAE,kBAAkB,EAAiD,MAAM,uBAAuB,CAAC;AACxH,OAAO,EAAC,iBAAiB,EAAC,MAAM,iBAAiB,CAAC;AAGlD,MAAM,MAAM,mBAAmB,GAAG;IAChC,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,qBAAqB,CAAC,EAAE,aAAa,CAAC;IACtC,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,wBAAgB,SAAS,CAAC,IAAI,EAAE,mBAAmB,GAAG,kBAAkB,CAAC,iBAAiB,CAAC,CAqB1F;AAED,eAAO,MAAM,OAAO,EAAE,iBAAiB,CAAC,mBAAmB,CA+D1D,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import fs from "node:fs";
|
|
2
|
-
import { defaultExecutionEngineHttpOpts } from "@lodestar/beacon-node";
|
|
2
|
+
import { defaultExecutionEngineHttpOpts, engineApiModes } from "@lodestar/beacon-node";
|
|
3
3
|
import { extractJwtHexSecret } from "../../util/index.js";
|
|
4
4
|
export function parseArgs(args) {
|
|
5
5
|
if (args["execution.engineMock"]) {
|
|
@@ -13,6 +13,7 @@ export function parseArgs(args) {
|
|
|
13
13
|
timeout: args["execution.timeout"],
|
|
14
14
|
retries: args["execution.retries"],
|
|
15
15
|
retryDelay: args["execution.retryDelay"],
|
|
16
|
+
engineApi: args["execution.engineApi"],
|
|
16
17
|
/**
|
|
17
18
|
* jwtSecret is parsed as hex instead of bytes because the merge with defaults
|
|
18
19
|
* in beaconOptions messes up the bytes array as as index => value object
|
|
@@ -51,6 +52,13 @@ export const options = {
|
|
|
51
52
|
default: defaultExecutionEngineHttpOpts.retryDelay,
|
|
52
53
|
group: "execution",
|
|
53
54
|
},
|
|
55
|
+
"execution.engineApi": {
|
|
56
|
+
description: "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",
|
|
57
|
+
type: "string",
|
|
58
|
+
choices: engineApiModes,
|
|
59
|
+
default: defaultExecutionEngineHttpOpts.engineApi,
|
|
60
|
+
group: "execution",
|
|
61
|
+
},
|
|
54
62
|
"execution.engineMock": {
|
|
55
63
|
description: "Set the execution engine to mock mode (development only)",
|
|
56
64
|
type: "boolean",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"execution.js","sourceRoot":"","sources":["../../../src/options/beaconNodeOptions/execution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,
|
|
1
|
+
{"version":3,"file":"execution.js","sourceRoot":"","sources":["../../../src/options/beaconNodeOptions/execution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAoC,8BAA8B,EAAE,cAAc,EAAC,MAAM,uBAAuB,CAAC;AAExH,OAAO,EAAC,mBAAmB,EAAC,MAAM,qBAAqB,CAAC;AAaxD,MAAM,UAAU,SAAS,CAAC,IAAyB;IACjD,IAAI,IAAI,CAAC,sBAAsB,CAAC,EAAE,CAAC;QACjC,sEAAsE;QACtE,OAAO;YACL,IAAI,EAAE,MAAM;SACb,CAAC;IACJ,CAAC;IAED,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,gBAAgB,CAAC;QAC5B,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC;QAClC,OAAO,EAAE,IAAI,CAAC,mBAAmB,CAAC;QAClC,UAAU,EAAE,IAAI,CAAC,sBAAsB,CAAC;QACxC,SAAS,EAAE,IAAI,CAAC,qBAAqB,CAAC;QACtC;;;WAGG;QACH,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,mBAAmB,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS;QAC/G,KAAK,EAAE,IAAI,CAAC,KAAK;KAClB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,OAAO,GAA2C;IAC7D,gBAAgB,EAAE;QAChB,WAAW,EAAE,qCAAqC;QAClD,OAAO,EAAE,8BAA8B,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;QACtD,IAAI,EAAE,OAAO;QACb,MAAM,EAAE,IAAI;QACZ,MAAM,EAAE,CAAC,IAAc,EAAY,EAAE;QACnC,0CAA0C;QAC1C,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACzC,KAAK,EAAE,WAAW;KACnB;IAED,mBAAmB,EAAE;QACnB,WAAW,EAAE,8DAA8D;QAC3E,IAAI,EAAE,QAAQ;QACd,kBAAkB,EAAE,MAAM,CAAC,8BAA8B,CAAC,OAAO,CAAC;QAClE,KAAK,EAAE,WAAW;KACnB;IAED,mBAAmB,EAAE;QACnB,KAAK,EAAE,CAAC,yBAAyB,CAAC;QAClC,WAAW,EAAE,qDAAqD;QAClE,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,8BAA8B,CAAC,OAAO;QAC/C,KAAK,EAAE,WAAW;KACnB;IAED,sBAAsB,EAAE;QACtB,WAAW,EAAE,4FAA4F;QACzG,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,8BAA8B,CAAC,UAAU;QAClD,KAAK,EAAE,WAAW;KACnB;IAED,qBAAqB,EAAE;QACrB,WAAW,EACT,6PAA6P;QAC/P,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,cAAc;QACvB,OAAO,EAAE,8BAA8B,CAAC,SAAS;QACjD,KAAK,EAAE,WAAW;KACnB;IAED,sBAAsB,EAAE;QACtB,WAAW,EAAE,0DAA0D;QACvE,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,KAAK;QACb,KAAK,EAAE,WAAW;KACnB;IAED,SAAS,EAAE;QACT,WAAW,EACT,mQAAmQ;QACrQ,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,WAAW;KACnB;IAED,KAAK,EAAE;QACL,WAAW,EACT,+JAA+J;QACjK,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,WAAW;KACnB;CACF,CAAC"}
|
|
@@ -43,6 +43,7 @@ export declare const beaconNodeOptions: {
|
|
|
43
43
|
"chain.blsVerifyAllMainThread": import("@lodestar/utils").CliOptionDefinition<boolean | undefined>;
|
|
44
44
|
"chain.disableBlsBatchVerify": import("@lodestar/utils").CliOptionDefinition<boolean | undefined>;
|
|
45
45
|
"chain.persistProducedBlocks": import("@lodestar/utils").CliOptionDefinition<boolean | undefined>;
|
|
46
|
+
"chain.persistProducedPayloadEnvelopes": import("@lodestar/utils").CliOptionDefinition<boolean | undefined>;
|
|
46
47
|
"chain.persistInvalidSszObjects": import("@lodestar/utils").CliOptionDefinition<boolean | undefined>;
|
|
47
48
|
"chain.persistOrphanedBlocks": import("@lodestar/utils").CliOptionDefinition<boolean | undefined>;
|
|
48
49
|
"chain.dedupePayloads": import("@lodestar/utils").CliOptionDefinition<boolean | undefined>;
|
|
@@ -67,7 +68,7 @@ export declare const beaconNodeOptions: {
|
|
|
67
68
|
demandOption: true;
|
|
68
69
|
});
|
|
69
70
|
"chain.nHistoricalStatesFileDataStore": import("@lodestar/utils").CliOptionDefinition<boolean | undefined>;
|
|
70
|
-
"chain.
|
|
71
|
+
"chain.nativeStateTransition": import("@lodestar/utils").CliOptionDefinition<boolean | undefined>;
|
|
71
72
|
"chain.maxBlockStates": import("@lodestar/utils").CliOptionDefinition<number | undefined>;
|
|
72
73
|
"chain.maxCPStateEpochsInMemory": import("@lodestar/utils").CliOptionDefinition<number | undefined>;
|
|
73
74
|
"chain.maxCPStateEpochsOnDisk": import("@lodestar/utils").CliOptionDefinition<number | undefined>;
|
|
@@ -88,6 +89,7 @@ export declare const beaconNodeOptions: {
|
|
|
88
89
|
"execution.retryDelay": import("@lodestar/utils").CliOptionDefinition<number> & (Required<Pick<import("yargs").Options, "default">> | {
|
|
89
90
|
demandOption: true;
|
|
90
91
|
});
|
|
92
|
+
"execution.engineApi": import("@lodestar/utils").CliOptionDefinition<import("@lodestar/beacon-node").EngineApiMode | undefined>;
|
|
91
93
|
"execution.engineMock": import("@lodestar/utils").CliOptionDefinition<boolean | undefined>;
|
|
92
94
|
jwtSecret: import("@lodestar/utils").CliOptionDefinition<string | undefined>;
|
|
93
95
|
jwtId: import("@lodestar/utils").CliOptionDefinition<string | undefined>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/options/beaconNodeOptions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAC,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAC,gBAAgB,EAAC,MAAM,iBAAiB,CAAC;AAEjD,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAC5C,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,MAAM,MAAM,cAAc,GAAG,GAAG,CAAC,OAAO,GACtC,KAAK,CAAC,SAAS,GACf,IAAI,CAAC,QAAQ,GACb,SAAS,CAAC,mBAAmB,GAC7B,OAAO,CAAC,oBAAoB,GAC5B,OAAO,CAAC,WAAW,GACnB,UAAU,CAAC,cAAc,GACzB,OAAO,CAAC,WAAW,GACnB,IAAI,CAAC,QAAQ,CAAC;AAEhB,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,cAAc,GAAG,gBAAgB,CAAC,kBAAkB,CAAC,CAa9F;AAED,eAAO,MAAM,iBAAiB
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/options/beaconNodeOptions/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAC,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAC,gBAAgB,EAAC,MAAM,iBAAiB,CAAC;AAEjD,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,SAAS,MAAM,gBAAgB,CAAC;AAC5C,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,UAAU,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAElC,MAAM,MAAM,cAAc,GAAG,GAAG,CAAC,OAAO,GACtC,KAAK,CAAC,SAAS,GACf,IAAI,CAAC,QAAQ,GACb,SAAS,CAAC,mBAAmB,GAC7B,OAAO,CAAC,oBAAoB,GAC5B,OAAO,CAAC,WAAW,GACnB,UAAU,CAAC,cAAc,GACzB,OAAO,CAAC,WAAW,GACnB,IAAI,CAAC,QAAQ,CAAC;AAEhB,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,cAAc,GAAG,gBAAgB,CAAC,kBAAkB,CAAC,CAa9F;AAED,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAU7B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chainsafe/lodestar",
|
|
3
|
-
"version": "1.50.0-dev.
|
|
3
|
+
"version": "1.50.0-dev.fe4e7408b4",
|
|
4
4
|
"description": "Command line interface for lodestar",
|
|
5
5
|
"author": "ChainSafe Systems",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -63,22 +63,22 @@
|
|
|
63
63
|
"@chainsafe/enr": "^6.0.2",
|
|
64
64
|
"@chainsafe/lodestar-z": "catalog:",
|
|
65
65
|
"@chainsafe/persistent-merkle-tree": "^1.3.1",
|
|
66
|
-
"@chainsafe/ssz": "^1.8.
|
|
66
|
+
"@chainsafe/ssz": "^1.8.1",
|
|
67
67
|
"@chainsafe/threads": "^1.11.3",
|
|
68
68
|
"@libp2p/crypto": "^5.1.23",
|
|
69
69
|
"@libp2p/interface": "^3.3.0",
|
|
70
70
|
"@libp2p/peer-id": "^6.0.15",
|
|
71
|
-
"@lodestar/api": "^1.50.0-dev.
|
|
72
|
-
"@lodestar/beacon-node": "^1.50.0-dev.
|
|
73
|
-
"@lodestar/builder": "^1.50.0-dev.
|
|
74
|
-
"@lodestar/config": "^1.50.0-dev.
|
|
75
|
-
"@lodestar/db": "^1.50.0-dev.
|
|
76
|
-
"@lodestar/logger": "^1.50.0-dev.
|
|
77
|
-
"@lodestar/params": "^1.50.0-dev.
|
|
78
|
-
"@lodestar/state-transition": "^1.50.0-dev.
|
|
79
|
-
"@lodestar/types": "^1.50.0-dev.
|
|
80
|
-
"@lodestar/utils": "^1.50.0-dev.
|
|
81
|
-
"@lodestar/validator": "^1.50.0-dev.
|
|
71
|
+
"@lodestar/api": "^1.50.0-dev.fe4e7408b4",
|
|
72
|
+
"@lodestar/beacon-node": "^1.50.0-dev.fe4e7408b4",
|
|
73
|
+
"@lodestar/builder": "^1.50.0-dev.fe4e7408b4",
|
|
74
|
+
"@lodestar/config": "^1.50.0-dev.fe4e7408b4",
|
|
75
|
+
"@lodestar/db": "^1.50.0-dev.fe4e7408b4",
|
|
76
|
+
"@lodestar/logger": "^1.50.0-dev.fe4e7408b4",
|
|
77
|
+
"@lodestar/params": "^1.50.0-dev.fe4e7408b4",
|
|
78
|
+
"@lodestar/state-transition": "^1.50.0-dev.fe4e7408b4",
|
|
79
|
+
"@lodestar/types": "^1.50.0-dev.fe4e7408b4",
|
|
80
|
+
"@lodestar/utils": "^1.50.0-dev.fe4e7408b4",
|
|
81
|
+
"@lodestar/validator": "^1.50.0-dev.fe4e7408b4",
|
|
82
82
|
"@multiformats/multiaddr": "^13.0.1",
|
|
83
83
|
"deepmerge": "^4.3.1",
|
|
84
84
|
"ethers": "^6.7.0",
|
|
@@ -94,7 +94,7 @@
|
|
|
94
94
|
"devDependencies": {
|
|
95
95
|
"@chainsafe/as-sha256": "^1.2.5",
|
|
96
96
|
"@ethereumjs/rlp": "^4.0.1",
|
|
97
|
-
"@lodestar/test-utils": "^1.50.0-dev.
|
|
97
|
+
"@lodestar/test-utils": "^1.50.0-dev.fe4e7408b4",
|
|
98
98
|
"@types/debug": "^4.1.7",
|
|
99
99
|
"@types/inquirer": "^9.0.3",
|
|
100
100
|
"@types/js-yaml": "^4.0.5",
|
|
@@ -108,5 +108,5 @@
|
|
|
108
108
|
"web3": "^4.0.3",
|
|
109
109
|
"web3-eth-accounts": "^4.0.3"
|
|
110
110
|
},
|
|
111
|
-
"gitHead": "
|
|
111
|
+
"gitHead": "d419de313d96a2ffe17669d0ce36b874cbd61d13"
|
|
112
112
|
}
|
|
@@ -79,6 +79,7 @@ export async function beaconHandler(args: BeaconArgs & GlobalArgs): Promise<void
|
|
|
79
79
|
anchorState,
|
|
80
80
|
config: beaconConfig,
|
|
81
81
|
isFinalized,
|
|
82
|
+
earliestAvailableSlot,
|
|
82
83
|
} = await initBeaconState(args, beaconPaths.dataDir, beaconPaths.pubkeysFile, config, db, logger);
|
|
83
84
|
|
|
84
85
|
const node = await BeaconNode.init({
|
|
@@ -94,6 +95,7 @@ export async function beaconHandler(args: BeaconArgs & GlobalArgs): Promise<void
|
|
|
94
95
|
peerStoreDir: beaconPaths.peerStoreDir,
|
|
95
96
|
anchorState,
|
|
96
97
|
isAnchorStateFinalized: isFinalized,
|
|
98
|
+
earliestAvailableSlot,
|
|
97
99
|
});
|
|
98
100
|
|
|
99
101
|
// dev debug option to have access to the BN instance
|
|
@@ -230,6 +232,12 @@ export async function beaconHandlerInit(args: BeaconArgs & GlobalArgs) {
|
|
|
230
232
|
// Render final options
|
|
231
233
|
const options = beaconNodeOptions.getWithDefaults();
|
|
232
234
|
|
|
235
|
+
if (options.chain.nativeStateTransition && config.GLOAS_FORK_EPOCH !== Infinity) {
|
|
236
|
+
throw Error(
|
|
237
|
+
`--chain.nativeStateTransition does not support Gloas, which is scheduled at epoch ${config.GLOAS_FORK_EPOCH}`
|
|
238
|
+
);
|
|
239
|
+
}
|
|
240
|
+
|
|
233
241
|
return {config, options, beaconPaths, network, version, commit, privateKey, logger};
|
|
234
242
|
}
|
|
235
243
|
|
|
@@ -10,6 +10,7 @@ import {
|
|
|
10
10
|
isWithinWeakSubjectivityPeriodFromSummary,
|
|
11
11
|
readBeaconStateBytesMetadata,
|
|
12
12
|
} from "@lodestar/state-transition";
|
|
13
|
+
import {Slot} from "@lodestar/types";
|
|
13
14
|
import {Logger, formatBytes} from "@lodestar/utils";
|
|
14
15
|
import {GlobalArgs} from "../../options/globalOptions.js";
|
|
15
16
|
import {BeaconArgs} from "./options.js";
|
|
@@ -27,7 +28,12 @@ import {
|
|
|
27
28
|
StatePreparationContext,
|
|
28
29
|
} from "./stateInitialization/types.js";
|
|
29
30
|
|
|
30
|
-
type InitBeaconStateResult = {
|
|
31
|
+
type InitBeaconStateResult = {
|
|
32
|
+
anchorState: IBeaconStateView;
|
|
33
|
+
config: BeaconConfig;
|
|
34
|
+
isFinalized: boolean;
|
|
35
|
+
earliestAvailableSlot: Slot;
|
|
36
|
+
};
|
|
31
37
|
|
|
32
38
|
/**
|
|
33
39
|
* Select serialized anchor bytes before constructing the state used for validation, persistence, and return.
|
|
@@ -42,7 +48,7 @@ export async function initBeaconState(
|
|
|
42
48
|
logger: Logger
|
|
43
49
|
): Promise<InitBeaconStateResult> {
|
|
44
50
|
const options: StateInitializationOptions = args;
|
|
45
|
-
const
|
|
51
|
+
const nativeStateTransition = options["chain.nativeStateTransition"] ?? false;
|
|
46
52
|
if (
|
|
47
53
|
options.forceCheckpointSync &&
|
|
48
54
|
!(options.checkpointState || options.checkpointSyncUrl || options.unsafeCheckpointState)
|
|
@@ -70,7 +76,7 @@ export async function initBeaconState(
|
|
|
70
76
|
if (!options.forceCheckpointSync && (!hasCheckpointSource || archived.isWithinWeakSubjectivityPeriod)) {
|
|
71
77
|
return executeStateInitialization(
|
|
72
78
|
prepareArchivedStateInitialization(archived, context),
|
|
73
|
-
|
|
79
|
+
nativeStateTransition,
|
|
74
80
|
pubkeysFile,
|
|
75
81
|
logger
|
|
76
82
|
);
|
|
@@ -84,7 +90,7 @@ export async function initBeaconState(
|
|
|
84
90
|
? prepareArchivedStateInitialization(archived, context)
|
|
85
91
|
: await prepareGenesisInitialization(options, context);
|
|
86
92
|
}
|
|
87
|
-
return executeStateInitialization(stateInit,
|
|
93
|
+
return executeStateInitialization(stateInit, nativeStateTransition, pubkeysFile, logger);
|
|
88
94
|
}
|
|
89
95
|
|
|
90
96
|
/**
|
|
@@ -129,7 +135,7 @@ async function readLatestArchivedStateBytes({
|
|
|
129
135
|
*/
|
|
130
136
|
async function executeStateInitialization(
|
|
131
137
|
stateInit: StateInitialization,
|
|
132
|
-
|
|
138
|
+
nativeStateTransition: boolean,
|
|
133
139
|
pubkeysFile: string,
|
|
134
140
|
logger: Logger
|
|
135
141
|
): Promise<InitBeaconStateResult> {
|
|
@@ -150,9 +156,10 @@ async function executeStateInitialization(
|
|
|
150
156
|
loadPubkeysFile(pubkeyCache, pubkeysFile, pubkeyCacheCapacity, config, stateBytes, validatorCount, logger);
|
|
151
157
|
// unilaterally expand capacity after best-effort pubkey file loading
|
|
152
158
|
pubkeyCache.ensureCapacity(pubkeyCacheCapacity);
|
|
153
|
-
const anchorState = createBeaconStateView({
|
|
159
|
+
const anchorState = createBeaconStateView({nativeStateTransition, config, stateBytes});
|
|
154
160
|
stateInit.validate(anchorState);
|
|
161
|
+
const earliestAvailableSlot = await stateInit.initializeEarliestAvailableSlot(anchorState);
|
|
155
162
|
await stateInit.persist?.(anchorState, stateBytes);
|
|
156
|
-
stateInit.log(anchorState);
|
|
157
|
-
return {anchorState, config, isFinalized: stateInit.isFinalized};
|
|
163
|
+
stateInit.log(anchorState, nativeStateTransition);
|
|
164
|
+
return {anchorState, config, isFinalized: stateInit.isFinalized, earliestAvailableSlot};
|
|
158
165
|
}
|
|
@@ -186,6 +186,16 @@ function prepareCheckpointInitialization(
|
|
|
186
186
|
const {isFinalized, ignoreWeakSubjectivityCheck} = policy;
|
|
187
187
|
const config = createBeaconConfig(chainForkConfig, metadata.genesisValidatorsRoot);
|
|
188
188
|
const archivedWithinWeakSubjectivityPeriod = useArchived ? archived.isWithinWeakSubjectivityPeriod : null;
|
|
189
|
+
const passedValidation =
|
|
190
|
+
archivedWithinWeakSubjectivityPeriod ?? isWithinWeakSubjectivityPeriodFromSummary(config, weakSubjectivity);
|
|
191
|
+
// Fast-fail stale checkpoints before deserializing the state or reserving pubkey-cache capacity.
|
|
192
|
+
if (!passedValidation && !ignoreWeakSubjectivityCheck) {
|
|
193
|
+
const clockEpoch = computeEpochAtSlot(getCurrentSlot(config, weakSubjectivity.genesisTime));
|
|
194
|
+
throw new StateInitializationError(
|
|
195
|
+
{code: StateInitializationErrorCode.STALE_CHECKPOINT},
|
|
196
|
+
`The selected state with epoch ${weakSubjectivity.checkpointEpoch} is not within weak subjectivity period of ${weakSubjectivity.period} epochs from the current epoch ${clockEpoch}. Please verify your checkpoint source`
|
|
197
|
+
);
|
|
198
|
+
}
|
|
189
199
|
// DB-selected anchors need no persistence, including at slot zero.
|
|
190
200
|
const shouldPersist = isFinalized && !useArchived;
|
|
191
201
|
return {
|
|
@@ -195,15 +205,6 @@ function prepareCheckpointInitialization(
|
|
|
195
205
|
validate(state) {
|
|
196
206
|
// A supplied checkpoint must match even when the period check is ignored.
|
|
197
207
|
if (expectedCheckpoint !== null) assertStateMatchesCheckpoint(state, expectedCheckpoint);
|
|
198
|
-
const passedValidation =
|
|
199
|
-
archivedWithinWeakSubjectivityPeriod ?? isWithinWeakSubjectivityPeriodFromSummary(config, weakSubjectivity);
|
|
200
|
-
if (!passedValidation && !ignoreWeakSubjectivityCheck) {
|
|
201
|
-
const clockEpoch = computeEpochAtSlot(getCurrentSlot(config, weakSubjectivity.genesisTime));
|
|
202
|
-
throw new StateInitializationError(
|
|
203
|
-
{code: StateInitializationErrorCode.STALE_CHECKPOINT},
|
|
204
|
-
`The selected state with epoch ${weakSubjectivity.checkpointEpoch} is not within weak subjectivity period of ${weakSubjectivity.period} epochs from the current epoch ${clockEpoch}. Please verify your checkpoint source`
|
|
205
|
-
);
|
|
206
|
-
}
|
|
207
208
|
assertAnchorStateForkMatchesConfig(config, state);
|
|
208
209
|
if (isFinalized) {
|
|
209
210
|
const source = useArchived ? "db" : "checkpoint";
|
|
@@ -222,8 +223,22 @@ function prepareCheckpointInitialization(
|
|
|
222
223
|
}
|
|
223
224
|
}
|
|
224
225
|
},
|
|
226
|
+
async initializeEarliestAvailableSlot(state) {
|
|
227
|
+
const stored = await db.earliestAvailableSlot.get();
|
|
228
|
+
const floor = useArchived ? (stored ?? state.slot) : Math.max(stored ?? 0, state.slot);
|
|
229
|
+
if (stored !== floor) {
|
|
230
|
+
await db.earliestAvailableSlot.set(floor);
|
|
231
|
+
}
|
|
232
|
+
logger.verbose("Initialized earliest available slot", {
|
|
233
|
+
source,
|
|
234
|
+
anchorSlot: state.slot,
|
|
235
|
+
previousSlot: stored,
|
|
236
|
+
earliestAvailableSlot: floor,
|
|
237
|
+
});
|
|
238
|
+
return floor;
|
|
239
|
+
},
|
|
225
240
|
persist: shouldPersist ? (state, bytes) => persistAnchorState(config, db, state, bytes) : null,
|
|
226
|
-
log(state) {
|
|
241
|
+
log(state, nativeStateTransition) {
|
|
227
242
|
const {checkpoint} = state.computeAnchorCheckpoint();
|
|
228
243
|
logger.info("Initialized checkpoint state", {
|
|
229
244
|
source,
|
|
@@ -233,6 +248,7 @@ function prepareCheckpointInitialization(
|
|
|
233
248
|
stateRoot: toRootHex(state.hashTreeRoot()),
|
|
234
249
|
checkpointRoot: toRootHex(checkpoint.root),
|
|
235
250
|
isFinalized,
|
|
251
|
+
nativeStateTransition,
|
|
236
252
|
...(isFinalized ? {} : {lastProcessedSlot: state.latestBlockHeader.slot}),
|
|
237
253
|
});
|
|
238
254
|
},
|
|
@@ -73,12 +73,26 @@ export async function prepareGenesisInitialization(
|
|
|
73
73
|
logger.warn("Checkpoint sync recommended, please use --help to see checkpoint sync options");
|
|
74
74
|
}
|
|
75
75
|
},
|
|
76
|
+
async initializeEarliestAvailableSlot(state) {
|
|
77
|
+
const stored = await db.earliestAvailableSlot.get();
|
|
78
|
+
if (stored !== null && stored !== state.slot) {
|
|
79
|
+
logger.warn("Resetting earliest available slot for genesis initialization", {
|
|
80
|
+
previousSlot: stored,
|
|
81
|
+
earliestAvailableSlot: state.slot,
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
if (stored !== state.slot) {
|
|
85
|
+
await db.earliestAvailableSlot.set(state.slot);
|
|
86
|
+
}
|
|
87
|
+
return state.slot;
|
|
88
|
+
},
|
|
76
89
|
persist: (state, bytes) => persistAnchorState(config, db, state, bytes),
|
|
77
|
-
log(state) {
|
|
90
|
+
log(state, nativeStateTransition) {
|
|
78
91
|
logger.info("Initialized genesis state", {
|
|
79
92
|
slot: state.slot,
|
|
80
93
|
stateRoot: toRootHex(state.hashTreeRoot()),
|
|
81
94
|
isFinalized: true,
|
|
95
|
+
nativeStateTransition,
|
|
82
96
|
});
|
|
83
97
|
},
|
|
84
98
|
};
|
|
@@ -11,7 +11,7 @@ import {assertAnchorStateForkMatchesConfig} from "./validation.js";
|
|
|
11
11
|
|
|
12
12
|
export function prepareArchivedStateInitialization(
|
|
13
13
|
{stateBytes, metadata, isWithinWeakSubjectivityPeriod}: ArchivedStateBytes,
|
|
14
|
-
{chainForkConfig, logger}: StatePreparationContext
|
|
14
|
+
{chainForkConfig, db, logger}: StatePreparationContext
|
|
15
15
|
): StateInitialization {
|
|
16
16
|
const config = createBeaconConfig(chainForkConfig, metadata.genesisValidatorsRoot);
|
|
17
17
|
return {
|
|
@@ -34,13 +34,28 @@ export function prepareArchivedStateInitialization(
|
|
|
34
34
|
logger.warn("Checkpoint sync recommended, please use --help to see checkpoint sync options");
|
|
35
35
|
}
|
|
36
36
|
},
|
|
37
|
+
async initializeEarliestAvailableSlot(state) {
|
|
38
|
+
const stored = await db.earliestAvailableSlot.get();
|
|
39
|
+
// we bootstrap the node with archived db, use the previous earliestAvailableSLot
|
|
40
|
+
if (stored !== null) {
|
|
41
|
+
logger.verbose("Reusing persisted earliest available slot", {
|
|
42
|
+
anchorSlot: state.slot,
|
|
43
|
+
earliestAvailableSlot: stored,
|
|
44
|
+
});
|
|
45
|
+
return stored;
|
|
46
|
+
}
|
|
47
|
+
// legacy db: blockArchive.firstKey() is not a safe floor, a past checkpoint sync may have left a gap.
|
|
48
|
+
await db.earliestAvailableSlot.set(state.slot);
|
|
49
|
+
return state.slot;
|
|
50
|
+
},
|
|
37
51
|
persist: null,
|
|
38
|
-
log(state) {
|
|
52
|
+
log(state, nativeStateTransition) {
|
|
39
53
|
logger.info("Initialized state from db", {
|
|
40
54
|
slot: state.slot,
|
|
41
55
|
epoch: computeEpochAtSlot(state.slot),
|
|
42
56
|
stateRoot: toRootHex(state.hashTreeRoot()),
|
|
43
57
|
isFinalized: true,
|
|
58
|
+
nativeStateTransition,
|
|
44
59
|
});
|
|
45
60
|
},
|
|
46
61
|
};
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import {IBeaconDb} from "@lodestar/beacon-node";
|
|
2
2
|
import {BeaconConfig, ChainForkConfig} from "@lodestar/config";
|
|
3
3
|
import {IBeaconStateView, StateBytesMetadata, WeakSubjectivitySummary} from "@lodestar/state-transition";
|
|
4
|
+
import {Slot} from "@lodestar/types";
|
|
4
5
|
import {Checkpoint} from "@lodestar/types/phase0";
|
|
5
6
|
import {Logger} from "@lodestar/utils";
|
|
6
7
|
import {GlobalArgs} from "../../../options/globalOptions.js";
|
|
@@ -18,7 +19,7 @@ export type StateInitializationOptions = Pick<
|
|
|
18
19
|
| "ignoreWeakSubjectivityCheck"
|
|
19
20
|
| "network"
|
|
20
21
|
| "chain.nHistoricalStatesFileDataStore"
|
|
21
|
-
| "chain.
|
|
22
|
+
| "chain.nativeStateTransition"
|
|
22
23
|
>;
|
|
23
24
|
|
|
24
25
|
export type StatePreparationContext = {
|
|
@@ -53,6 +54,7 @@ export type StateInitialization = {
|
|
|
53
54
|
config: BeaconConfig;
|
|
54
55
|
isFinalized: boolean;
|
|
55
56
|
validate: (state: IBeaconStateView) => void;
|
|
57
|
+
initializeEarliestAvailableSlot: (state: IBeaconStateView) => Promise<Slot>;
|
|
56
58
|
persist: ((state: IBeaconStateView, stateBytes: Uint8Array) => Promise<void>) | null;
|
|
57
|
-
log: (state: IBeaconStateView) => void;
|
|
59
|
+
log: (state: IBeaconStateView, nativeStateTransition: boolean) => void;
|
|
58
60
|
};
|
|
@@ -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
|
},
|
|
@@ -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
|
|