@chainsafe/lodestar 1.50.0-dev.1bf214377e → 1.50.0-dev.1cd749f306

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.
Files changed (46) hide show
  1. package/.git-data.json +1 -1
  2. package/lib/cmds/beacon/handler.d.ts.map +1 -1
  3. package/lib/cmds/beacon/handler.js +5 -1
  4. package/lib/cmds/beacon/handler.js.map +1 -1
  5. package/lib/cmds/beacon/initBeaconState.d.ts +2 -0
  6. package/lib/cmds/beacon/initBeaconState.d.ts.map +1 -1
  7. package/lib/cmds/beacon/initBeaconState.js +8 -7
  8. package/lib/cmds/beacon/initBeaconState.js.map +1 -1
  9. package/lib/cmds/beacon/stateInitialization/checkpointState.js +16 -1
  10. package/lib/cmds/beacon/stateInitialization/checkpointState.js.map +1 -1
  11. package/lib/cmds/beacon/stateInitialization/genesisState.d.ts.map +1 -1
  12. package/lib/cmds/beacon/stateInitialization/genesisState.js +15 -1
  13. package/lib/cmds/beacon/stateInitialization/genesisState.js.map +1 -1
  14. package/lib/cmds/beacon/stateInitialization/prepareStateInitialization.d.ts +1 -1
  15. package/lib/cmds/beacon/stateInitialization/prepareStateInitialization.d.ts.map +1 -1
  16. package/lib/cmds/beacon/stateInitialization/prepareStateInitialization.js +17 -2
  17. package/lib/cmds/beacon/stateInitialization/prepareStateInitialization.js.map +1 -1
  18. package/lib/cmds/beacon/stateInitialization/types.d.ts +4 -2
  19. package/lib/cmds/beacon/stateInitialization/types.d.ts.map +1 -1
  20. package/lib/cmds/dev/options.d.ts +3 -1
  21. package/lib/cmds/dev/options.d.ts.map +1 -1
  22. package/lib/cmds/validator/handler.js +6 -1
  23. package/lib/cmds/validator/handler.js.map +1 -1
  24. package/lib/cmds/validator/options.js +1 -1
  25. package/lib/cmds/validator/options.js.map +1 -1
  26. package/lib/options/beaconNodeOptions/chain.d.ts +2 -1
  27. package/lib/options/beaconNodeOptions/chain.d.ts.map +1 -1
  28. package/lib/options/beaconNodeOptions/chain.js +11 -4
  29. package/lib/options/beaconNodeOptions/chain.js.map +1 -1
  30. package/lib/options/beaconNodeOptions/execution.d.ts +2 -1
  31. package/lib/options/beaconNodeOptions/execution.d.ts.map +1 -1
  32. package/lib/options/beaconNodeOptions/execution.js +9 -1
  33. package/lib/options/beaconNodeOptions/execution.js.map +1 -1
  34. package/lib/options/beaconNodeOptions/index.d.ts +3 -1
  35. package/lib/options/beaconNodeOptions/index.d.ts.map +1 -1
  36. package/package.json +15 -15
  37. package/src/cmds/beacon/handler.ts +8 -0
  38. package/src/cmds/beacon/initBeaconState.ts +15 -8
  39. package/src/cmds/beacon/stateInitialization/checkpointState.ts +16 -1
  40. package/src/cmds/beacon/stateInitialization/genesisState.ts +15 -1
  41. package/src/cmds/beacon/stateInitialization/prepareStateInitialization.ts +17 -2
  42. package/src/cmds/beacon/stateInitialization/types.ts +4 -2
  43. package/src/cmds/validator/handler.ts +11 -0
  44. package/src/cmds/validator/options.ts +1 -1
  45. package/src/options/beaconNodeOptions/chain.ts +14 -5
  46. package/src/options/beaconNodeOptions/execution.ts +12 -1
@@ -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
- nativeStateView: args["chain.nativeStateView"] ?? defaultOptions.chain.nativeStateView,
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.nativeStateView": {
245
+ "chain.nativeStateTransition": {
239
246
  hidden: true,
240
- description: "Use native (Zig) BeaconStateView instead of JS implementation",
247
+ description: "Use native (Zig) state transition instead of JS implementation",
241
248
  type: "boolean",
242
- default: defaultOptions.chain.nativeStateView,
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":"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"}
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,EAAiC,MAAM,uBAAuB,CAAC;AACzF,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,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,CAoB1F;AAED,eAAO,MAAM,OAAO,EAAE,iBAAiB,CAAC,mBAAmB,CAsD1D,CAAC"}
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,EAAqB,8BAA8B,EAAC,MAAM,uBAAuB,CAAC;AAEzF,OAAO,EAAC,mBAAmB,EAAC,MAAM,qBAAqB,CAAC;AAYxD,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;;;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,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"}
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.nativeStateView": import("@lodestar/utils").CliOptionDefinition<boolean | undefined>;
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAU7B,CAAC"}
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.1bf214377e",
3
+ "version": "1.50.0-dev.1cd749f306",
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.0",
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.1bf214377e",
72
- "@lodestar/beacon-node": "^1.50.0-dev.1bf214377e",
73
- "@lodestar/builder": "^1.50.0-dev.1bf214377e",
74
- "@lodestar/config": "^1.50.0-dev.1bf214377e",
75
- "@lodestar/db": "^1.50.0-dev.1bf214377e",
76
- "@lodestar/logger": "^1.50.0-dev.1bf214377e",
77
- "@lodestar/params": "^1.50.0-dev.1bf214377e",
78
- "@lodestar/state-transition": "^1.50.0-dev.1bf214377e",
79
- "@lodestar/types": "^1.50.0-dev.1bf214377e",
80
- "@lodestar/utils": "^1.50.0-dev.1bf214377e",
81
- "@lodestar/validator": "^1.50.0-dev.1bf214377e",
71
+ "@lodestar/api": "^1.50.0-dev.1cd749f306",
72
+ "@lodestar/beacon-node": "^1.50.0-dev.1cd749f306",
73
+ "@lodestar/builder": "^1.50.0-dev.1cd749f306",
74
+ "@lodestar/config": "^1.50.0-dev.1cd749f306",
75
+ "@lodestar/db": "^1.50.0-dev.1cd749f306",
76
+ "@lodestar/logger": "^1.50.0-dev.1cd749f306",
77
+ "@lodestar/params": "^1.50.0-dev.1cd749f306",
78
+ "@lodestar/state-transition": "^1.50.0-dev.1cd749f306",
79
+ "@lodestar/types": "^1.50.0-dev.1cd749f306",
80
+ "@lodestar/utils": "^1.50.0-dev.1cd749f306",
81
+ "@lodestar/validator": "^1.50.0-dev.1cd749f306",
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.1bf214377e",
97
+ "@lodestar/test-utils": "^1.50.0-dev.1cd749f306",
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": "7ba5b3ee2dd4ea21e23e622b2b99369ee6b7717b"
111
+ "gitHead": "bb74c67a00fdc489638483cc4718d9817653474f"
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 = {anchorState: IBeaconStateView; config: BeaconConfig; isFinalized: boolean};
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 useNative = options["chain.nativeStateView"] ?? false;
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
- useNative,
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, useNative, pubkeysFile, logger);
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
- useNative: boolean,
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({useNative, config, stateBytes});
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
  }
@@ -223,8 +223,22 @@ function prepareCheckpointInitialization(
223
223
  }
224
224
  }
225
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
+ },
226
240
  persist: shouldPersist ? (state, bytes) => persistAnchorState(config, db, state, bytes) : null,
227
- log(state) {
241
+ log(state, nativeStateTransition) {
228
242
  const {checkpoint} = state.computeAnchorCheckpoint();
229
243
  logger.info("Initialized checkpoint state", {
230
244
  source,
@@ -234,6 +248,7 @@ function prepareCheckpointInitialization(
234
248
  stateRoot: toRootHex(state.hashTreeRoot()),
235
249
  checkpointRoot: toRootHex(checkpoint.root),
236
250
  isFinalized,
251
+ nativeStateTransition,
237
252
  ...(isFinalized ? {} : {lastProcessedSlot: state.latestBlockHeader.slot}),
238
253
  });
239
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.nativeStateView"
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 pre-Gloas `executiononly`",
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.nativeStateView"?: boolean;
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
- nativeStateView: args["chain.nativeStateView"] ?? defaultOptions.chain.nativeStateView,
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.nativeStateView": {
330
+ "chain.nativeStateTransition": {
322
331
  hidden: true,
323
- description: "Use native (Zig) BeaconStateView instead of JS implementation",
332
+ description: "Use native (Zig) state transition instead of JS implementation",
324
333
  type: "boolean",
325
- default: defaultOptions.chain.nativeStateView,
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",