@chainsafe/lodestar 1.50.0-dev.d86161f63c → 1.50.0-dev.e90f18e925

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 (51) hide show
  1. package/.git-data.json +1 -1
  2. package/lib/cmds/beacon/handler.d.ts +1 -0
  3. package/lib/cmds/beacon/handler.d.ts.map +1 -1
  4. package/lib/cmds/beacon/handler.js +7 -6
  5. package/lib/cmds/beacon/handler.js.map +1 -1
  6. package/lib/cmds/beacon/initBeaconState.d.ts +2 -2
  7. package/lib/cmds/beacon/initBeaconState.d.ts.map +1 -1
  8. package/lib/cmds/beacon/initBeaconState.js +21 -9
  9. package/lib/cmds/beacon/initBeaconState.js.map +1 -1
  10. package/lib/cmds/beacon/options.d.ts +1 -1
  11. package/lib/cmds/beacon/options.d.ts.map +1 -1
  12. package/lib/cmds/beacon/options.js +6 -5
  13. package/lib/cmds/beacon/options.js.map +1 -1
  14. package/lib/cmds/beacon/paths.d.ts +4 -0
  15. package/lib/cmds/beacon/paths.d.ts.map +1 -1
  16. package/lib/cmds/beacon/paths.js +3 -0
  17. package/lib/cmds/beacon/paths.js.map +1 -1
  18. package/lib/cmds/beacon/pubkeysFile.d.ts +10 -0
  19. package/lib/cmds/beacon/pubkeysFile.d.ts.map +1 -0
  20. package/lib/cmds/beacon/pubkeysFile.js +39 -0
  21. package/lib/cmds/beacon/pubkeysFile.js.map +1 -0
  22. package/lib/cmds/beacon/stateInitialization/checkpointState.js +2 -2
  23. package/lib/cmds/beacon/stateInitialization/checkpointState.js.map +1 -1
  24. package/lib/cmds/beacon/stateInitialization/genesisState.d.ts +1 -1
  25. package/lib/cmds/beacon/stateInitialization/genesisState.d.ts.map +1 -1
  26. package/lib/cmds/beacon/stateInitialization/genesisState.js +2 -2
  27. package/lib/cmds/beacon/stateInitialization/genesisState.js.map +1 -1
  28. package/lib/cmds/beacon/stateInitialization/prepareStateInitialization.d.ts +1 -1
  29. package/lib/cmds/beacon/stateInitialization/prepareStateInitialization.d.ts.map +1 -1
  30. package/lib/cmds/beacon/stateInitialization/prepareStateInitialization.js +3 -6
  31. package/lib/cmds/beacon/stateInitialization/prepareStateInitialization.js.map +1 -1
  32. package/lib/cmds/beacon/stateInitialization/types.d.ts +1 -1
  33. package/lib/cmds/beacon/stateInitialization/types.d.ts.map +1 -1
  34. package/lib/cmds/dev/handler.d.ts.map +1 -1
  35. package/lib/cmds/dev/handler.js +3 -1
  36. package/lib/cmds/dev/handler.js.map +1 -1
  37. package/lib/networks/index.d.ts.map +1 -1
  38. package/lib/networks/index.js +5 -0
  39. package/lib/networks/index.js.map +1 -1
  40. package/package.json +14 -14
  41. package/src/cmds/beacon/handler.ts +7 -6
  42. package/src/cmds/beacon/initBeaconState.ts +28 -8
  43. package/src/cmds/beacon/options.ts +8 -7
  44. package/src/cmds/beacon/paths.ts +5 -0
  45. package/src/cmds/beacon/pubkeysFile.ts +50 -0
  46. package/src/cmds/beacon/stateInitialization/checkpointState.ts +2 -2
  47. package/src/cmds/beacon/stateInitialization/genesisState.ts +3 -3
  48. package/src/cmds/beacon/stateInitialization/prepareStateInitialization.ts +4 -6
  49. package/src/cmds/beacon/stateInitialization/types.ts +0 -1
  50. package/src/cmds/dev/handler.ts +3 -1
  51. package/src/networks/index.ts +9 -0
package/.git-data.json CHANGED
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "branch": "unstable",
3
- "commit": "d86161f63c3adf1b377e7c15f189c508969760f5"
3
+ "commit": "e90f18e925d0982157e846261c128001b037d605"
4
4
  }
@@ -18,6 +18,7 @@ export declare function beaconHandlerInit(args: BeaconArgs & GlobalArgs): Promis
18
18
  dataColumnDir: string;
19
19
  persistInvalidSszObjectsDir: string;
20
20
  persistOrphanedBlocksDir?: string;
21
+ pubkeysFile: string;
21
22
  }>>;
22
23
  network: string;
23
24
  version: string;
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/cmds/beacon/handler.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAC,UAAU,EAAgB,MAAM,uBAAuB,CAAC;AAMhE,OAAO,EAAC,UAAU,EAAsB,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAC,OAAO,EAAC,MAAM,6BAA6B,CAAC;AAYpD,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AAOxC;;GAEG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAmIhF;AAED,oEAAoE;AACpE,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU;;;;;;;;;;;;;;;;GA6DpE;AAED,wBAAgB,UAAU,CACxB,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,EAC3C,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,eAAe,EACvB,QAAQ,SAAe,GACtB,UAAU,CAUZ"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/cmds/beacon/handler.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAC,UAAU,EAAgB,MAAM,uBAAuB,CAAC;AAMhE,OAAO,EAAC,UAAU,EAAsB,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAC,OAAO,EAAC,MAAM,6BAA6B,CAAC;AAYpD,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AAQxC;;GAEG;AACH,wBAAsB,aAAa,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAmIhF;AAED,oEAAoE;AACpE,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU;;;;;;;;;;;;;;;;;GA6DpE;AAED,wBAAgB,UAAU,CACxB,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,EAC3C,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,eAAe,EACvB,QAAQ,SAAe,GACtB,UAAU,CAUZ"}
@@ -15,6 +15,7 @@ import { getVersionData } from "../../util/version.js";
15
15
  import { initBeaconState } from "./initBeaconState.js";
16
16
  import { initPrivateKeyAndEnr } from "./initPeerIdAndEnr.js";
17
17
  import { getBeaconPaths } from "./paths.js";
18
+ import { savePubkeysFile } from "./pubkeysFile.js";
18
19
  const DEFAULT_RETENTION_SSZ_OBJECTS_HOURS = 15 * 24;
19
20
  const HOURS_TO_MS = 3600 * 1000;
20
21
  const EIGHT_GB = 8 * 1024 * 1024 * 1024;
@@ -51,7 +52,7 @@ export async function beaconHandler(args) {
51
52
  logger.info("Connected to LevelDB database", { path: options.db.name });
52
53
  // BeaconNode setup
53
54
  try {
54
- const { anchorState, config: beaconConfig, isFinalized, } = await initBeaconState(args, beaconPaths.dataDir, config, db, logger);
55
+ const { anchorState, config: beaconConfig, isFinalized, } = await initBeaconState(args, beaconPaths.dataDir, beaconPaths.pubkeysFile, config, db, logger);
55
56
  const node = await BeaconNode.init({
56
57
  opts: options,
57
58
  config: beaconConfig,
@@ -102,12 +103,10 @@ export async function beaconHandler(args) {
102
103
  }
103
104
  }, logger.info.bind(logger));
104
105
  abortController.signal.addEventListener("abort", async () => {
106
+ let exitCode = 0;
105
107
  try {
106
108
  await node.close();
107
109
  logger.debug("Beacon node closed");
108
- // Explicitly exit until active handles issue is resolved
109
- // See https://github.com/ChainSafe/lodestar/issues/5642
110
- process.exit(0);
111
110
  }
112
111
  catch (e) {
113
112
  // If we start from unfinalized state, we don't have checkpoint state so there is this error
@@ -115,9 +114,11 @@ export async function beaconHandler(args) {
115
114
  logger.warn("Error closing beacon node", {}, e);
116
115
  // Make sure db is always closed gracefully
117
116
  await db.close();
118
- // Must explicitly exit process due to potential active handles
119
- process.exit(1);
117
+ exitCode = 1;
120
118
  }
119
+ savePubkeysFile(pubkeyCache, beaconPaths.pubkeysFile, logger);
120
+ // Explicitly exit process due to potential active handles
121
+ process.exit(exitCode);
121
122
  }, { once: true });
122
123
  }
123
124
  catch (e) {
@@ -1 +1 @@
1
- {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/cmds/beacon/handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/cmds/beacon/handler.ts"],"names":[],"mappings":"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"}
@@ -11,8 +11,8 @@ type InitBeaconStateResult = {
11
11
  };
12
12
  /**
13
13
  * Select serialized anchor bytes before constructing the state used for validation, persistence, and return.
14
- * Populates the global `pubkeyCache` with the anchor state's validators.
14
+ * Populates the global `pubkeyCache` with the anchor state's validators, reusing `pubkeysFile` if it matches.
15
15
  */
16
- export declare function initBeaconState(args: BeaconArgs & GlobalArgs, dataDir: string, chainForkConfig: ChainForkConfig, db: IBeaconDb, logger: Logger): Promise<InitBeaconStateResult>;
16
+ export declare function initBeaconState(args: BeaconArgs & GlobalArgs, dataDir: string, pubkeysFile: string, chainForkConfig: ChainForkConfig, db: IBeaconDb, logger: Logger): Promise<InitBeaconStateResult>;
17
17
  export {};
18
18
  //# sourceMappingURL=initBeaconState.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"initBeaconState.d.ts","sourceRoot":"","sources":["../../../src/cmds/beacon/initBeaconState.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,SAAS,EAAC,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAC,YAAY,EAAE,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAE/D,OAAO,EACL,gBAAgB,EAMjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAC,MAAM,EAAc,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAC,UAAU,EAAC,MAAM,gCAAgC,CAAC;AAC1D,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AAaxC,KAAK,qBAAqB,GAAG;IAAC,WAAW,EAAE,gBAAgB,CAAC;IAAC,MAAM,EAAE,YAAY,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAC,CAAC;AAEzG;;;GAGG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,UAAU,GAAG,UAAU,EAC7B,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,eAAe,EAChC,EAAE,EAAE,SAAS,EACb,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,qBAAqB,CAAC,CAiChC"}
1
+ {"version":3,"file":"initBeaconState.d.ts","sourceRoot":"","sources":["../../../src/cmds/beacon/initBeaconState.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,SAAS,EAAC,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAC,YAAY,EAAE,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAE/D,OAAO,EACL,gBAAgB,EAMjB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAC,MAAM,EAAc,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAC,UAAU,EAAC,MAAM,gCAAgC,CAAC;AAC1D,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AAexC,KAAK,qBAAqB,GAAG;IAAC,WAAW,EAAE,gBAAgB,CAAC;IAAC,MAAM,EAAE,YAAY,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAC,CAAC;AAEzG;;;GAGG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,UAAU,GAAG,UAAU,EAC7B,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,eAAe,EAChC,EAAE,EAAE,SAAS,EACb,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,qBAAqB,CAAC,CA6ChC"}
@@ -2,13 +2,15 @@ import { pubkeyCache } from "@chainsafe/lodestar-z/pubkeys";
2
2
  import { MAX_PENDING_DEPOSITS_PER_EPOCH, SLOTS_PER_EPOCH } from "@lodestar/params";
3
3
  import { computeWeakSubjectivitySummaryFromStateBytes, createBeaconStateView, getValidatorCountFromStateBytes, isWithinWeakSubjectivityPeriodFromSummary, readBeaconStateBytesMetadata, } from "@lodestar/state-transition";
4
4
  import { formatBytes } from "@lodestar/utils";
5
+ import { loadPubkeysFile } from "./pubkeysFile.js";
5
6
  import { StateInitializationError, StateInitializationErrorCode } from "./stateInitialization/errors.js";
6
- import { prepareArchivedStateInitialization, prepareCheckpointOrGenesisInitialization, } from "./stateInitialization/prepareStateInitialization.js";
7
+ import { prepareGenesisInitialization } from "./stateInitialization/genesisState.js";
8
+ import { prepareArchivedStateInitialization, prepareCheckpointSourceInitialization, } from "./stateInitialization/prepareStateInitialization.js";
7
9
  /**
8
10
  * Select serialized anchor bytes before constructing the state used for validation, persistence, and return.
9
- * Populates the global `pubkeyCache` with the anchor state's validators.
11
+ * Populates the global `pubkeyCache` with the anchor state's validators, reusing `pubkeysFile` if it matches.
10
12
  */
11
- export async function initBeaconState(args, dataDir, chainForkConfig, db, logger) {
13
+ export async function initBeaconState(args, dataDir, pubkeysFile, chainForkConfig, db, logger) {
12
14
  const options = args;
13
15
  const useNative = options["chain.nativeStateView"] ?? false;
14
16
  if (options.forceCheckpointSync &&
@@ -29,11 +31,18 @@ export async function initBeaconState(args, dataDir, chainForkConfig, db, logger
29
31
  options.unsafeCheckpointState ||
30
32
  options.lastPersistedCheckpointState);
31
33
  if (!options.forceCheckpointSync && (!hasCheckpointSource || archived.isWithinWeakSubjectivityPeriod)) {
32
- return executeStateInitialization(prepareArchivedStateInitialization(archived, context), useNative);
34
+ return executeStateInitialization(prepareArchivedStateInitialization(archived, context), useNative, pubkeysFile, logger);
33
35
  }
34
36
  }
35
- const stateInit = await prepareCheckpointOrGenesisInitialization(options, archived, context);
36
- return executeStateInitialization(stateInit, useNative);
37
+ let stateInit = await prepareCheckpointSourceInitialization(options, archived, context);
38
+ if (stateInit === null) {
39
+ // Without a usable checkpoint state, resume from the db as if no checkpoint source was set instead of genesis
40
+ stateInit =
41
+ archived !== null
42
+ ? prepareArchivedStateInitialization(archived, context)
43
+ : await prepareGenesisInitialization(options, context);
44
+ }
45
+ return executeStateInitialization(stateInit, useNative, pubkeysFile, logger);
37
46
  }
38
47
  /**
39
48
  * Read the archived DB anchor without constructing a state. Retain its metadata, weak-subjectivity summary,
@@ -52,7 +61,7 @@ async function readLatestArchivedStateBytes({ chainForkConfig, db, logger, }) {
52
61
  }
53
62
  const weakSubjectivity = computeWeakSubjectivitySummaryFromStateBytes(chainForkConfig, stateBytes, metadata);
54
63
  if (weakSubjectivity === null) {
55
- throw new StateInitializationError({ code: StateInitializationErrorCode.MALFORMED_STATE_BYTES }, "Cannot extract weak subjectivity summary from archived state bytes");
64
+ throw new StateInitializationError({ code: StateInitializationErrorCode.MALFORMED_STATE_BYTES }, `Cannot extract weak subjectivity summary from archived state bytes, expected ${chainForkConfig.getForkName(metadata.slot)} state at slot ${metadata.slot}, possible fork or network mismatch`);
56
65
  }
57
66
  return {
58
67
  stateBytes,
@@ -65,7 +74,7 @@ async function readLatestArchivedStateBytes({ chainForkConfig, db, logger, }) {
65
74
  * Shared completion template for all sources: construct only the selected state, exactly once.
66
75
  * Validate before persistence, and log success only after any required writes succeed.
67
76
  */
68
- async function executeStateInitialization(stateInit, useNative) {
77
+ async function executeStateInitialization(stateInit, useNative, pubkeysFile, logger) {
69
78
  const { config, stateBytes } = stateInit;
70
79
  const validatorCount = getValidatorCountFromStateBytes(config, stateBytes);
71
80
  if (validatorCount === null) {
@@ -76,7 +85,10 @@ async function executeStateInitialization(stateInit, useNative) {
76
85
  // by its native lock; if this headroom is exceeded, it grows by the same fixed step.
77
86
  // The view syncs pubkeys during construction, so capacity must be reserved first.
78
87
  const headroomEpochs = (90 * 24 * 60 * 60) / (config.SECONDS_PER_SLOT * SLOTS_PER_EPOCH);
79
- pubkeyCache.ensureCapacity(validatorCount + MAX_PENDING_DEPOSITS_PER_EPOCH * Math.ceil(headroomEpochs));
88
+ const pubkeyCacheCapacity = validatorCount + MAX_PENDING_DEPOSITS_PER_EPOCH * Math.ceil(headroomEpochs);
89
+ loadPubkeysFile(pubkeyCache, pubkeysFile, pubkeyCacheCapacity, config, stateBytes, validatorCount, logger);
90
+ // unilaterally expand capacity after best-effort pubkey file loading
91
+ pubkeyCache.ensureCapacity(pubkeyCacheCapacity);
80
92
  const anchorState = createBeaconStateView({ useNative, config, stateBytes });
81
93
  stateInit.validate(anchorState);
82
94
  await stateInit.persist?.(anchorState, stateBytes);
@@ -1 +1 @@
1
- {"version":3,"file":"initBeaconState.js","sourceRoot":"","sources":["../../../src/cmds/beacon/initBeaconState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,+BAA+B,CAAC;AAG1D,OAAO,EAAC,8BAA8B,EAAE,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjF,OAAO,EAEL,4CAA4C,EAC5C,qBAAqB,EACrB,+BAA+B,EAC/B,yCAAyC,EACzC,4BAA4B,GAC7B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAS,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAGpD,OAAO,EAAC,wBAAwB,EAAE,4BAA4B,EAAC,MAAM,iCAAiC,CAAC;AACvG,OAAO,EACL,kCAAkC,EAClC,wCAAwC,GACzC,MAAM,qDAAqD,CAAC;AAU7D;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAA6B,EAC7B,OAAe,EACf,eAAgC,EAChC,EAAa,EACb,MAAc;IAEd,MAAM,OAAO,GAA+B,IAAI,CAAC;IACjD,MAAM,SAAS,GAAG,OAAO,CAAC,uBAAuB,CAAC,IAAI,KAAK,CAAC;IAC5D,IACE,OAAO,CAAC,mBAAmB;QAC3B,CAAC,CAAC,OAAO,CAAC,eAAe,IAAI,OAAO,CAAC,iBAAiB,IAAI,OAAO,CAAC,qBAAqB,CAAC,EACxF,CAAC;QACD,MAAM,IAAI,wBAAwB,CAChC,EAAC,IAAI,EAAE,4BAA4B,CAAC,yBAAyB,EAAC,EAC9D,yGAAyG,CAC1G,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAA4B,EAAC,eAAe,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAC,CAAC;IAChF,MAAM,QAAQ,GAAG,MAAM,4BAA4B,CAAC,OAAO,CAAC,CAAC;IAC7D,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,IAAI,OAAO,CAAC,mBAAmB,IAAI,QAAQ,CAAC,8BAA8B,EAAE,CAAC;YAC3E,MAAM,CAAC,IAAI,CAAC,wFAAwF,EAAE;gBACpG,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI;aAC7B,CAAC,CAAC;YACH,MAAM,CAAC,IAAI,CAAC,iFAAiF,CAAC,CAAC;QACjG,CAAC;QACD,MAAM,mBAAmB,GAAG,OAAO,CACjC,OAAO,CAAC,eAAe;YACrB,OAAO,CAAC,iBAAiB;YACzB,OAAO,CAAC,qBAAqB;YAC7B,OAAO,CAAC,4BAA4B,CACvC,CAAC;QACF,IAAI,CAAC,OAAO,CAAC,mBAAmB,IAAI,CAAC,CAAC,mBAAmB,IAAI,QAAQ,CAAC,8BAA8B,CAAC,EAAE,CAAC;YACtG,OAAO,0BAA0B,CAAC,kCAAkC,CAAC,QAAQ,EAAE,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC;QACtG,CAAC;IACH,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,wCAAwC,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC7F,OAAO,0BAA0B,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAC1D,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,4BAA4B,CAAC,EAC1C,eAAe,EACf,EAAE,EACF,MAAM,GACkB;IACxB,MAAM,IAAI,GAAG,MAAM,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;IAC7C,MAAM,KAAK,GAAG,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC3E,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,MAAM,CAAC,OAAO,CAAC,+BAA+B,EAAE,EAAC,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,EAAC,CAAC,CAAC;IACzF,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IACpF,MAAM,QAAQ,GAAG,4BAA4B,CAAC,UAAU,CAAC,CAAC;IAC1D,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,MAAM,IAAI,wBAAwB,CAChC,EAAC,IAAI,EAAE,4BAA4B,CAAC,qBAAqB,EAAC,EAC1D,gDAAgD,CACjD,CAAC;IACJ,CAAC;IACD,MAAM,gBAAgB,GAAG,4CAA4C,CAAC,eAAe,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC7G,IAAI,gBAAgB,KAAK,IAAI,EAAE,CAAC;QAC9B,MAAM,IAAI,wBAAwB,CAChC,EAAC,IAAI,EAAE,4BAA4B,CAAC,qBAAqB,EAAC,EAC1D,oEAAoE,CACrE,CAAC;IACJ,CAAC;IACD,OAAO;QACL,UAAU;QACV,QAAQ;QACR,gBAAgB;QAChB,8BAA8B,EAAE,yCAAyC,CAAC,eAAe,EAAE,gBAAgB,CAAC;KAC7G,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,0BAA0B,CACvC,SAA8B,EAC9B,SAAkB;IAElB,MAAM,EAAC,MAAM,EAAE,UAAU,EAAC,GAAG,SAAS,CAAC;IACvC,MAAM,cAAc,GAAG,+BAA+B,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IAC3E,IAAI,cAAc,KAAK,IAAI,EAAE,CAAC;QAC5B,MAAM,IAAI,wBAAwB,CAChC,EAAC,IAAI,EAAE,4BAA4B,CAAC,qBAAqB,EAAC,EAC1D,uDAAuD,CACxD,CAAC;IACJ,CAAC;IACD,6FAA6F;IAC7F,gGAAgG;IAChG,qFAAqF;IACrF,kFAAkF;IAClF,MAAM,cAAc,GAAG,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,gBAAgB,GAAG,eAAe,CAAC,CAAC;IACzF,WAAW,CAAC,cAAc,CAAC,cAAc,GAAG,8BAA8B,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;IACxG,MAAM,WAAW,GAAG,qBAAqB,CAAC,EAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAC,CAAC,CAAC;IAC3E,SAAS,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAChC,MAAM,SAAS,CAAC,OAAO,EAAE,CAAC,WAAW,EAAE,UAAU,CAAC,CAAC;IACnD,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IAC3B,OAAO,EAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,CAAC,WAAW,EAAC,CAAC;AACnE,CAAC"}
1
+ {"version":3,"file":"initBeaconState.js","sourceRoot":"","sources":["../../../src/cmds/beacon/initBeaconState.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,6 @@ import { BeaconNodeArgs } from "../../options/index.js";
3
3
  import { LogArgs } from "../../options/logOptions.js";
4
4
  import { BeaconPaths } from "./paths.js";
5
5
  type BeaconExtraArgs = {
6
- forceGenesis?: boolean;
7
6
  genesisStateFile?: string;
8
7
  configFile?: string;
9
8
  bootnodesFile?: string;
@@ -21,6 +20,7 @@ type BeaconExtraArgs = {
21
20
  persistInvalidSszObjectsRetentionHours?: number;
22
21
  persistOrphanedBlocksDir?: string;
23
22
  peerStoreDir?: string;
23
+ pubkeysFile?: string;
24
24
  persistNetworkIdentity?: boolean;
25
25
  private?: boolean;
26
26
  validatorMonitorLogs?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../src/cmds/beacon/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,iBAAiB,EAAE,mBAAmB,EAAC,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAC,cAAc,EAAmC,MAAM,wBAAwB,CAAC;AACxF,OAAO,EAAC,OAAO,EAAa,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAC,WAAW,EAAqB,MAAM,YAAY,CAAC;AAE3D,KAAK,eAAe,GAAG;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,sCAAsC,CAAC,EAAE,MAAM,CAAC;IAChD,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,iBAAiB,CAAC,eAAe,CAmJjE,CAAC;AAEF,KAAK,OAAO,GAAG;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf,CAAC;AAkDF,MAAM,MAAM,UAAU,GAAG,eAAe,GAAG,OAAO,GAAG,WAAW,GAAG,cAAc,GAAG,OAAO,CAAC;AAE5F,eAAO,MAAM,aAAa,EAAE;IAAC,CAAC,CAAC,EAAE,MAAM,GAAG,mBAAmB,CAAA;CAM5D,CAAC"}
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../src/cmds/beacon/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,iBAAiB,EAAE,mBAAmB,EAAC,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAC,cAAc,EAAmC,MAAM,wBAAwB,CAAC;AACxF,OAAO,EAAC,OAAO,EAAa,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAC,WAAW,EAAqB,MAAM,YAAY,CAAC;AAE3D,KAAK,eAAe,GAAG;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,sCAAsC,CAAC,EAAE,MAAM,CAAC;IAChD,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,iBAAiB,CAAC,eAAe,CAoJjE,CAAC;AAEF,KAAK,OAAO,GAAG;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf,CAAC;AAkDF,MAAM,MAAM,UAAU,GAAG,eAAe,GAAG,OAAO,GAAG,WAAW,GAAG,cAAc,GAAG,OAAO,CAAC;AAE5F,eAAO,MAAM,aAAa,EAAE;IAAC,CAAC,CAAC,EAAE,MAAM,GAAG,mBAAmB,CAAA;CAM5D,CAAC"}
@@ -2,11 +2,6 @@ import { beaconNodeOptions, paramsOptions } from "../../options/index.js";
2
2
  import { logOptions } from "../../options/logOptions.js";
3
3
  import { defaultBeaconPaths } from "./paths.js";
4
4
  export const beaconExtraOptions = {
5
- forceGenesis: {
6
- description: "Force beacon to create genesis without file",
7
- type: "boolean",
8
- hidden: true,
9
- },
10
5
  genesisStateFile: {
11
6
  description: "Path or URL to download a genesis state file in ssz-encoded format",
12
7
  type: "string",
@@ -98,6 +93,12 @@ export const beaconExtraOptions = {
98
93
  defaultDescription: defaultBeaconPaths.peerStoreDir,
99
94
  type: "string",
100
95
  },
96
+ pubkeysFile: {
97
+ hidden: true,
98
+ description: "Pubkey cache file, loaded on startup and saved on graceful shutdown",
99
+ defaultDescription: defaultBeaconPaths.pubkeysFile,
100
+ type: "string",
101
+ },
101
102
  persistNetworkIdentity: {
102
103
  description: "Whether to reuse the same peer-id across restarts. Validator custody requires custody group count to persist relative to a given ENR. Setting to false will reset ENR and validator custody requirements on restarts.",
103
104
  default: true,
@@ -1 +1 @@
1
- {"version":3,"file":"options.js","sourceRoot":"","sources":["../../../src/cmds/beacon/options.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../../src/cmds/beacon/options.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ export type BeaconPathsPartial = Partial<{
7
7
  dataColumnDir: string;
8
8
  persistInvalidSszObjectsDir: string;
9
9
  persistOrphanedBlocksDir?: string;
10
+ pubkeysFile: string;
10
11
  }>;
11
12
  export type BeaconPaths = {
12
13
  beaconDir: string;
@@ -15,6 +16,7 @@ export type BeaconPaths = {
15
16
  dataColumnDir: string;
16
17
  persistInvalidSszObjectsDir: string;
17
18
  persistOrphanedBlocksDir: string;
19
+ pubkeysFile: string;
18
20
  };
19
21
  /**
20
22
  * Defines the path structure of the files relevant to the beacon node
@@ -25,6 +27,7 @@ export type BeaconPaths = {
25
27
  * ├── beacon.config.json
26
28
  * ├── peer-id.json
27
29
  * ├── enr
30
+ * ├── pubkeys
28
31
  * ├── chain-db
29
32
  * └── beacon.log
30
33
  * ```
@@ -40,5 +43,6 @@ export declare const defaultBeaconPaths: GlobalPaths & Required<Partial<{
40
43
  dataColumnDir: string;
41
44
  persistInvalidSszObjectsDir: string;
42
45
  persistOrphanedBlocksDir?: string;
46
+ pubkeysFile: string;
43
47
  }>>;
44
48
  //# sourceMappingURL=paths.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../../src/cmds/beacon/paths.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,UAAU,EAAC,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAC,WAAW,EAAiB,MAAM,uBAAuB,CAAC;AAElE,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAC;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,2BAA2B,EAAE,MAAM,CAAC;IACpC,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC,CAAC,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,2BAA2B,EAAE,MAAM,CAAC;IACpC,wBAAwB,EAAE,MAAM,CAAC;CAClC,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAE5B,IAAI,EAAE,kBAAkB,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,EACtD,OAAO,EAAE,MAAM,GACd,WAAW,GAAG,QAAQ,CAAC,kBAAkB,CAAC,CAqB5C;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB;eA5DlB,MAAM;kBACH,MAAM;WACb,MAAM;mBACE,MAAM;iCACQ,MAAM;+BACR,MAAM;GAuDgD,CAAC"}
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../../src/cmds/beacon/paths.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,UAAU,EAAC,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAC,WAAW,EAAiB,MAAM,uBAAuB,CAAC;AAElE,MAAM,MAAM,kBAAkB,GAAG,OAAO,CAAC;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,2BAA2B,EAAE,MAAM,CAAC;IACpC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,2BAA2B,EAAE,MAAM,CAAC;IACpC,wBAAwB,EAAE,MAAM,CAAC;IACjC,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,wBAAgB,cAAc,CAE5B,IAAI,EAAE,kBAAkB,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,EACtD,OAAO,EAAE,MAAM,GACd,WAAW,GAAG,QAAQ,CAAC,kBAAkB,CAAC,CAuB5C;AAED;;GAEG;AACH,eAAO,MAAM,kBAAkB;eAjElB,MAAM;kBACH,MAAM;WACb,MAAM;mBACE,MAAM;iCACQ,MAAM;+BACR,MAAM;iBACpB,MAAM;GA2D8D,CAAC"}
@@ -9,6 +9,7 @@ import { getGlobalPaths } from "../../paths/global.js";
9
9
  * ├── beacon.config.json
10
10
  * ├── peer-id.json
11
11
  * ├── enr
12
+ * ├── pubkeys
12
13
  * ├── chain-db
13
14
  * └── beacon.log
14
15
  * ```
@@ -25,6 +26,7 @@ args, network) {
25
26
  const persistInvalidSszObjectsDir = args.persistInvalidSszObjectsDir ?? path.join(beaconDir, "invalidSszObjects");
26
27
  const peerStoreDir = args.peerStoreDir ?? path.join(beaconDir, "peerstore");
27
28
  const persistOrphanedBlocksDir = args.persistOrphanedBlocksDir ?? path.join(beaconDir, "orphaned_blocks");
29
+ const pubkeysFile = args.pubkeysFile ?? path.join(beaconDir, "pubkeys");
28
30
  return {
29
31
  ...globalPaths,
30
32
  beaconDir,
@@ -33,6 +35,7 @@ args, network) {
33
35
  persistInvalidSszObjectsDir,
34
36
  peerStoreDir,
35
37
  persistOrphanedBlocksDir,
38
+ pubkeysFile,
36
39
  };
37
40
  }
38
41
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../src/cmds/beacon/paths.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAc,cAAc,EAAC,MAAM,uBAAuB,CAAC;AAoBlE;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,cAAc;AAC5B,uFAAuF;AACvF,IAAsD,EACtD,OAAe;IAEf,6BAA6B;IAC7B,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAElD,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;IACpC,MAAM,SAAS,GAAG,OAAO,CAAC;IAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAC7D,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IACjF,MAAM,2BAA2B,GAAG,IAAI,CAAC,2BAA2B,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;IAClH,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAC5E,MAAM,wBAAwB,GAAG,IAAI,CAAC,wBAAwB,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;IAE1G,OAAO;QACL,GAAG,WAAW;QACd,SAAS;QACT,KAAK;QACL,aAAa;QACb,2BAA2B;QAC3B,YAAY;QACZ,wBAAwB;KACzB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,cAAc,CAAC,EAAC,OAAO,EAAE,UAAU,EAAC,EAAE,UAAU,CAAC,CAAC"}
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../src/cmds/beacon/paths.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAc,cAAc,EAAC,MAAM,uBAAuB,CAAC;AAsBlE;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,cAAc;AAC5B,uFAAuF;AACvF,IAAsD,EACtD,OAAe;IAEf,6BAA6B;IAC7B,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAElD,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;IACpC,MAAM,SAAS,GAAG,OAAO,CAAC;IAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;IAC7D,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;IACjF,MAAM,2BAA2B,GAAG,IAAI,CAAC,2BAA2B,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,mBAAmB,CAAC,CAAC;IAClH,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAC5E,MAAM,wBAAwB,GAAG,IAAI,CAAC,wBAAwB,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;IAC1G,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAExE,OAAO;QACL,GAAG,WAAW;QACd,SAAS;QACT,KAAK;QACL,aAAa;QACb,2BAA2B;QAC3B,YAAY;QACZ,wBAAwB;QACxB,WAAW;KACZ,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,cAAc,CAAC,EAAC,OAAO,EAAE,UAAU,EAAC,EAAE,UAAU,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { type PubkeyCache } from "@chainsafe/lodestar-z/pubkeys";
2
+ import { ChainForkConfig } from "@lodestar/config";
3
+ import { Logger } from "@lodestar/utils";
4
+ /**
5
+ * Best effort load of a trusted pubkey cache saved by a previous run, to skip decompressing every validator
6
+ * pubkey on boot. Must be called before any worker uses the cache.
7
+ */
8
+ export declare function loadPubkeysFile(pubkeyCache: PubkeyCache, filepath: string, maxCapacity: number, config: ChainForkConfig, anchorStateBytes: Uint8Array, anchorValidatorCount: number, logger: Logger): void;
9
+ export declare function savePubkeysFile(pubkeyCache: PubkeyCache, filepath: string, logger: Logger): void;
10
+ //# sourceMappingURL=pubkeysFile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pubkeysFile.d.ts","sourceRoot":"","sources":["../../../src/cmds/beacon/pubkeysFile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,WAAW,EAAC,MAAM,+BAA+B,CAAC;AAC/D,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAC,MAAM,EAAkB,MAAM,iBAAiB,CAAC;AAExD;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,eAAe,EACvB,gBAAgB,EAAE,UAAU,EAC5B,oBAAoB,EAAE,MAAM,EAC5B,MAAM,EAAE,MAAM,GACb,IAAI,CAsBN;AAED,wBAAgB,eAAe,CAAC,WAAW,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAQhG"}
@@ -0,0 +1,39 @@
1
+ import { getValidatorPubkeyFromStateBytes } from "@lodestar/state-transition";
2
+ import { byteArrayEquals } from "@lodestar/utils";
3
+ /**
4
+ * Best effort load of a trusted pubkey cache saved by a previous run, to skip decompressing every validator
5
+ * pubkey on boot. Must be called before any worker uses the cache.
6
+ */
7
+ export function loadPubkeysFile(pubkeyCache, filepath, maxCapacity, config, anchorStateBytes, anchorValidatorCount, logger) {
8
+ const start = Date.now();
9
+ try {
10
+ pubkeyCache.load(filepath, maxCapacity);
11
+ }
12
+ catch (e) {
13
+ logger.debug("Unable to load pubkeys file", { filepath }, e);
14
+ return;
15
+ }
16
+ // load() only checks framing and checksum, so reject a file from another chain. Checking the endpoints
17
+ // suffices since the registry is append-only.
18
+ const overlap = Math.min(pubkeyCache.size, anchorValidatorCount);
19
+ for (const index of overlap > 0 ? [0, overlap - 1] : []) {
20
+ const anchorPubkey = getValidatorPubkeyFromStateBytes(config, anchorStateBytes, index);
21
+ if (anchorPubkey === null || !byteArrayEquals(pubkeyCache.getPubkeyBytesOrThrow(index), anchorPubkey)) {
22
+ pubkeyCache.reset();
23
+ logger.debug("Discarded pubkeys file not matching anchor state", { filepath, index });
24
+ return;
25
+ }
26
+ }
27
+ logger.debug("Loaded pubkeys file", { filepath, count: pubkeyCache.size, durationMs: Date.now() - start });
28
+ }
29
+ export function savePubkeysFile(pubkeyCache, filepath, logger) {
30
+ const start = Date.now();
31
+ try {
32
+ pubkeyCache.save(filepath);
33
+ logger.debug("Saved pubkeys file", { filepath, count: pubkeyCache.size, durationMs: Date.now() - start });
34
+ }
35
+ catch (e) {
36
+ logger.debug("Unable to save pubkeys file", { filepath }, e);
37
+ }
38
+ }
39
+ //# sourceMappingURL=pubkeysFile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pubkeysFile.js","sourceRoot":"","sources":["../../../src/cmds/beacon/pubkeysFile.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,gCAAgC,EAAC,MAAM,4BAA4B,CAAC;AAC5E,OAAO,EAAS,eAAe,EAAC,MAAM,iBAAiB,CAAC;AAExD;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC7B,WAAwB,EACxB,QAAgB,EAChB,WAAmB,EACnB,MAAuB,EACvB,gBAA4B,EAC5B,oBAA4B,EAC5B,MAAc;IAEd,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,IAAI,CAAC;QACH,WAAW,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;IAC1C,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,EAAC,QAAQ,EAAC,EAAE,CAAU,CAAC,CAAC;QACpE,OAAO;IACT,CAAC;IAED,uGAAuG;IACvG,8CAA8C;IAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,EAAE,oBAAoB,CAAC,CAAC;IACjE,KAAK,MAAM,KAAK,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACxD,MAAM,YAAY,GAAG,gCAAgC,CAAC,MAAM,EAAE,gBAAgB,EAAE,KAAK,CAAC,CAAC;QACvF,IAAI,YAAY,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC;YACtG,WAAW,CAAC,KAAK,EAAE,CAAC;YACpB,MAAM,CAAC,KAAK,CAAC,kDAAkD,EAAE,EAAC,QAAQ,EAAE,KAAK,EAAC,CAAC,CAAC;YACpF,OAAO;QACT,CAAC;IACH,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,EAAC,QAAQ,EAAE,KAAK,EAAE,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAC,CAAC,CAAC;AAC3G,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,WAAwB,EAAE,QAAgB,EAAE,MAAc;IACxF,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,IAAI,CAAC;QACH,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3B,MAAM,CAAC,KAAK,CAAC,oBAAoB,EAAE,EAAC,QAAQ,EAAE,KAAK,EAAE,WAAW,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,EAAC,CAAC,CAAC;IAC1G,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,EAAC,QAAQ,EAAC,EAAE,CAAU,CAAC,CAAC;IACtE,CAAC;AACH,CAAC"}
@@ -99,7 +99,7 @@ function prepareCheckpointInitialization(candidate, archived, policy, { chainFor
99
99
  weakSubjectivity: computeWeakSubjectivitySummaryFromStateBytes(chainForkConfig, candidate.stateBytes, candidateMetadata),
100
100
  };
101
101
  if (weakSubjectivity === null) {
102
- throw new StateInitializationError({ code: StateInitializationErrorCode.MALFORMED_STATE_BYTES }, `Cannot extract weak subjectivity summary from ${candidate.source}`);
102
+ throw new StateInitializationError({ code: StateInitializationErrorCode.MALFORMED_STATE_BYTES }, `Cannot extract weak subjectivity summary from ${candidate.source}, expected ${chainForkConfig.getForkName(metadata.slot)} state at slot ${metadata.slot}, possible fork or network mismatch`);
103
103
  }
104
104
  const expectedCheckpoint = useArchived ? null : candidate.expectedCheckpoint;
105
105
  const source = useArchived ? "db" : candidate.source;
@@ -121,8 +121,8 @@ function prepareCheckpointInitialization(candidate, archived, policy, { chainFor
121
121
  const clockEpoch = computeEpochAtSlot(getCurrentSlot(config, weakSubjectivity.genesisTime));
122
122
  throw new StateInitializationError({ code: StateInitializationErrorCode.STALE_CHECKPOINT }, `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`);
123
123
  }
124
+ assertAnchorStateForkMatchesConfig(config, state);
124
125
  if (isFinalized) {
125
- assertAnchorStateForkMatchesConfig(config, state);
126
126
  const source = useArchived ? "db" : "checkpoint";
127
127
  const logData = {
128
128
  slot: state.slot,
@@ -1 +1 @@
1
- {"version":3,"file":"checkpointState.js","sourceRoot":"","sources":["../../../../src/cmds/beacon/stateInitialization/checkpointState.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"checkpointState.js","sourceRoot":"","sources":["../../../../src/cmds/beacon/stateInitialization/checkpointState.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,3 @@
1
1
  import { StateInitialization, StateInitializationOptions, StatePreparationContext } from "./types.js";
2
- export declare function prepareGenesisInitialization(options: Pick<StateInitializationOptions, "genesisStateFile" | "network" | "forceGenesis">, { chainForkConfig, db, logger }: StatePreparationContext): Promise<StateInitialization>;
2
+ export declare function prepareGenesisInitialization(options: Pick<StateInitializationOptions, "genesisStateFile" | "network">, { chainForkConfig, db, logger }: StatePreparationContext): Promise<StateInitialization>;
3
3
  //# sourceMappingURL=genesisState.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"genesisState.d.ts","sourceRoot":"","sources":["../../../../src/cmds/beacon/stateInitialization/genesisState.ts"],"names":[],"mappings":"AAaA,OAAO,EAAC,mBAAmB,EAAE,0BAA0B,EAAE,uBAAuB,EAAC,MAAM,YAAY,CAAC;AAGpG,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,IAAI,CAAC,0BAA0B,EAAE,kBAAkB,GAAG,SAAS,GAAG,cAAc,CAAC,EAC1F,EAAC,eAAe,EAAE,EAAE,EAAE,MAAM,EAAC,EAAE,uBAAuB,GACrD,OAAO,CAAC,mBAAmB,CAAC,CAiE9B"}
1
+ {"version":3,"file":"genesisState.d.ts","sourceRoot":"","sources":["../../../../src/cmds/beacon/stateInitialization/genesisState.ts"],"names":[],"mappings":"AAaA,OAAO,EAAC,mBAAmB,EAAE,0BAA0B,EAAE,uBAAuB,EAAC,MAAM,YAAY,CAAC;AAGpG,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,IAAI,CAAC,0BAA0B,EAAE,kBAAkB,GAAG,SAAS,CAAC,EACzE,EAAC,eAAe,EAAE,EAAE,EAAE,MAAM,EAAC,EAAE,uBAAuB,GACrD,OAAO,CAAC,mBAAmB,CAAC,CAiE9B"}
@@ -9,7 +9,7 @@ import { StateInitializationError, StateInitializationErrorCode } from "./errors
9
9
  import { assertAnchorStateForkMatchesConfig } from "./validation.js";
10
10
  export async function prepareGenesisInitialization(options, { chainForkConfig, db, logger }) {
11
11
  const source = options.genesisStateFile || getGenesisFileUrl(options.network || defaultNetwork);
12
- if (!source || options.forceGenesis) {
12
+ if (!source) {
13
13
  throw new StateInitializationError({ code: StateInitializationErrorCode.MISSING_INITIALIZATION_SOURCE }, "Failed to initialize beacon state, please provide a genesis state file or use checkpoint sync");
14
14
  }
15
15
  logger.info("Loading genesis state", { genesisStateFile: source });
@@ -22,7 +22,7 @@ export async function prepareGenesisInitialization(options, { chainForkConfig, d
22
22
  }
23
23
  const weakSubjectivity = computeWeakSubjectivitySummaryFromStateBytes(chainForkConfig, stateBytes, metadata);
24
24
  if (weakSubjectivity === null) {
25
- throw new StateInitializationError({ code: StateInitializationErrorCode.MALFORMED_STATE_BYTES }, "Cannot extract weak subjectivity summary from genesis state bytes");
25
+ throw new StateInitializationError({ code: StateInitializationErrorCode.MALFORMED_STATE_BYTES }, `Cannot extract weak subjectivity summary from genesis state bytes, expected ${chainForkConfig.getForkName(metadata.slot)} state at slot ${metadata.slot}, possible fork or network mismatch`);
26
26
  }
27
27
  const config = createBeaconConfig(chainForkConfig, metadata.genesisValidatorsRoot);
28
28
  const expectedRoot = getGenesisStateRoot(options.network);
@@ -1 +1 @@
1
- {"version":3,"file":"genesisState.js","sourceRoot":"","sources":["../../../../src/cmds/beacon/stateInitialization/genesisState.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"genesisState.js","sourceRoot":"","sources":["../../../../src/cmds/beacon/stateInitialization/genesisState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAC,MAAM,uBAAuB,CAAC;AACzD,OAAO,EAAC,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AACpD,OAAO,EACL,kBAAkB,EAClB,4CAA4C,EAC5C,yCAAyC,EACzC,4BAA4B,GAC7B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAC,WAAW,EAAE,SAAS,EAAC,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAC,iBAAiB,EAAE,mBAAmB,EAAC,MAAM,4BAA4B,CAAC;AAClF,OAAO,EAAC,cAAc,EAAC,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAC,kBAAkB,EAAC,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAC,wBAAwB,EAAE,4BAA4B,EAAC,MAAM,aAAa,CAAC;AAEnF,OAAO,EAAC,kCAAkC,EAAC,MAAM,iBAAiB,CAAC;AAEnE,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,OAAyE,EACzE,EAAC,eAAe,EAAE,EAAE,EAAE,MAAM,EAA0B;IAEtD,MAAM,MAAM,GAAG,OAAO,CAAC,gBAAgB,IAAI,iBAAiB,CAAC,OAAO,CAAC,OAAO,IAAI,cAAc,CAAC,CAAC;IAChG,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,wBAAwB,CAChC,EAAC,IAAI,EAAE,4BAA4B,CAAC,6BAA6B,EAAC,EAClE,+FAA+F,CAChG,CAAC;IACJ,CAAC;IACD,MAAM,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAC,gBAAgB,EAAE,MAAM,EAAC,CAAC,CAAC;IACjE,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IACpF,MAAM,CAAC,IAAI,CAAC,sBAAsB,EAAE,EAAC,IAAI,EAAE,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,EAAC,CAAC,CAAC;IAC5E,MAAM,QAAQ,GAAG,4BAA4B,CAAC,UAAU,CAAC,CAAC;IAC1D,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QACtB,MAAM,IAAI,wBAAwB,CAChC,EAAC,IAAI,EAAE,4BAA4B,CAAC,qBAAqB,EAAC,EAC1D,+CAA+C,CAChD,CAAC;IACJ,CAAC;IACD,MAAM,gBAAgB,GAAG,4CAA4C,CAAC,eAAe,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC7G,IAAI,gBAAgB,KAAK,IAAI,EAAE,CAAC;QAC9B,MAAM,IAAI,wBAAwB,CAChC,EAAC,IAAI,EAAE,4BAA4B,CAAC,qBAAqB,EAAC,EAC1D,+EAA+E,eAAe,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,QAAQ,CAAC,IAAI,qCAAqC,CAC9L,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,kBAAkB,CAAC,eAAe,EAAE,QAAQ,CAAC,qBAAqB,CAAC,CAAC;IACnF,MAAM,YAAY,GAAG,mBAAmB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1D,OAAO;QACL,UAAU;QACV,MAAM;QACN,WAAW,EAAE,IAAI;QACjB,QAAQ,CAAC,KAAK;YACZ,MAAM,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;YAClD,IAAI,YAAY,KAAK,IAAI,IAAI,SAAS,KAAK,YAAY,EAAE,CAAC;gBACxD,MAAM,IAAI,wBAAwB,CAChC,EAAC,IAAI,EAAE,4BAA4B,CAAC,qBAAqB,EAAC,EAC1D,wCAAwC,YAAY,aAAa,SAAS,EAAE,CAC7E,CAAC;YACJ,CAAC;YACD,kCAAkC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAClD,MAAM,gBAAgB,GAAG,yCAAyC,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;YAC7F,MAAM,OAAO,GAAG;gBACd,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,KAAK,EAAE,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC;gBACrC,SAAS,EAAE,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC;gBACzC,SAAS;gBACT,8BAA8B,EAAE,gBAAgB;aACjD,CAAC;YACF,IAAI,gBAAgB,EAAE,CAAC;gBACrB,MAAM,CAAC,IAAI,CAAC,mDAAmD,EAAE,OAAO,CAAC,CAAC;YAC5E,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,6EAA6E,EAAE,OAAO,CAAC,CAAC;gBACpG,MAAM,CAAC,IAAI,CAAC,+EAA+E,CAAC,CAAC;YAC/F,CAAC;QACH,CAAC;QACD,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,kBAAkB,CAAC,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC;QACvE,GAAG,CAAC,KAAK;YACP,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE;gBACvC,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;gBAC1C,WAAW,EAAE,IAAI;aAClB,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1,4 +1,4 @@
1
1
  import { ArchivedStateBytes, StateInitialization, StateInitializationOptions, StatePreparationContext } from "./types.js";
2
2
  export declare function prepareArchivedStateInitialization({ stateBytes, metadata, isWithinWeakSubjectivityPeriod }: ArchivedStateBytes, { chainForkConfig, logger }: StatePreparationContext): StateInitialization;
3
- export declare function prepareCheckpointOrGenesisInitialization(options: StateInitializationOptions, archived: ArchivedStateBytes | null, context: StatePreparationContext): Promise<StateInitialization>;
3
+ export declare function prepareCheckpointSourceInitialization(options: StateInitializationOptions, archived: ArchivedStateBytes | null, context: StatePreparationContext): Promise<StateInitialization | null>;
4
4
  //# sourceMappingURL=prepareStateInitialization.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"prepareStateInitialization.d.ts","sourceRoot":"","sources":["../../../../src/cmds/beacon/stateInitialization/prepareStateInitialization.ts"],"names":[],"mappings":"AASA,OAAO,EAAC,kBAAkB,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,uBAAuB,EAAC,MAAM,YAAY,CAAC;AAGxH,wBAAgB,kCAAkC,CAChD,EAAC,UAAU,EAAE,QAAQ,EAAE,8BAA8B,EAAC,EAAE,kBAAkB,EAC1E,EAAC,eAAe,EAAE,MAAM,EAAC,EAAE,uBAAuB,GACjD,mBAAmB,CAgCrB;AAED,wBAAsB,wCAAwC,CAC5D,OAAO,EAAE,0BAA0B,EACnC,QAAQ,EAAE,kBAAkB,GAAG,IAAI,EACnC,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,mBAAmB,CAAC,CAY9B"}
1
+ {"version":3,"file":"prepareStateInitialization.d.ts","sourceRoot":"","sources":["../../../../src/cmds/beacon/stateInitialization/prepareStateInitialization.ts"],"names":[],"mappings":"AAQA,OAAO,EAAC,kBAAkB,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,uBAAuB,EAAC,MAAM,YAAY,CAAC;AAGxH,wBAAgB,kCAAkC,CAChD,EAAC,UAAU,EAAE,QAAQ,EAAE,8BAA8B,EAAC,EAAE,kBAAkB,EAC1E,EAAC,eAAe,EAAE,MAAM,EAAC,EAAE,uBAAuB,GACjD,mBAAmB,CAgCrB;AAED,wBAAsB,qCAAqC,CACzD,OAAO,EAAE,0BAA0B,EACnC,QAAQ,EAAE,kBAAkB,GAAG,IAAI,EACnC,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAWrC"}
@@ -2,7 +2,6 @@ import { createBeaconConfig } from "@lodestar/config";
2
2
  import { computeEpochAtSlot } from "@lodestar/state-transition";
3
3
  import { formatBytes, toRootHex } from "@lodestar/utils";
4
4
  import { prepareCheckpointApiInitialization, prepareCheckpointFileInitialization, prepareUnfinalizedCheckpointInitialization, } from "./checkpointState.js";
5
- import { prepareGenesisInitialization } from "./genesisState.js";
6
5
  import { assertAnchorStateForkMatchesConfig } from "./validation.js";
7
6
  export function prepareArchivedStateInitialization({ stateBytes, metadata, isWithinWeakSubjectivityPeriod }, { chainForkConfig, logger }) {
8
7
  const config = createBeaconConfig(chainForkConfig, metadata.genesisValidatorsRoot);
@@ -38,7 +37,7 @@ export function prepareArchivedStateInitialization({ stateBytes, metadata, isWit
38
37
  },
39
38
  };
40
39
  }
41
- export async function prepareCheckpointOrGenesisInitialization(options, archived, context) {
40
+ export async function prepareCheckpointSourceInitialization(options, archived, context) {
42
41
  if (options.checkpointState) {
43
42
  return prepareCheckpointFileInitialization(options.checkpointState, options, archived, context);
44
43
  }
@@ -46,10 +45,8 @@ export async function prepareCheckpointOrGenesisInitialization(options, archived
46
45
  return prepareCheckpointApiInitialization(options.checkpointSyncUrl, options, archived, context);
47
46
  }
48
47
  if (options.lastPersistedCheckpointState || options.unsafeCheckpointState) {
49
- const stateInit = await prepareUnfinalizedCheckpointInitialization(options, archived, context);
50
- if (stateInit !== null)
51
- return stateInit;
48
+ return prepareUnfinalizedCheckpointInitialization(options, archived, context);
52
49
  }
53
- return prepareGenesisInitialization(options, context);
50
+ return null;
54
51
  }
55
52
  //# sourceMappingURL=prepareStateInitialization.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prepareStateInitialization.js","sourceRoot":"","sources":["../../../../src/cmds/beacon/stateInitialization/prepareStateInitialization.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAC,kBAAkB,EAAC,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAC,WAAW,EAAE,SAAS,EAAC,MAAM,iBAAiB,CAAC;AACvD,OAAO,EACL,kCAAkC,EAClC,mCAAmC,EACnC,0CAA0C,GAC3C,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAC,4BAA4B,EAAC,MAAM,mBAAmB,CAAC;AAE/D,OAAO,EAAC,kCAAkC,EAAC,MAAM,iBAAiB,CAAC;AAEnE,MAAM,UAAU,kCAAkC,CAChD,EAAC,UAAU,EAAE,QAAQ,EAAE,8BAA8B,EAAqB,EAC1E,EAAC,eAAe,EAAE,MAAM,EAA0B;IAElD,MAAM,MAAM,GAAG,kBAAkB,CAAC,eAAe,EAAE,QAAQ,CAAC,qBAAqB,CAAC,CAAC;IACnF,OAAO;QACL,UAAU;QACV,MAAM;QACN,WAAW,EAAE,IAAI;QACjB,QAAQ,CAAC,KAAK;YACZ,kCAAkC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAClD,MAAM,OAAO,GAAG;gBACd,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,KAAK,EAAE,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC;gBACrC,SAAS,EAAE,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC;gBACzC,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;gBAC1C,8BAA8B;aAC/B,CAAC;YACF,IAAI,8BAA8B,EAAE,CAAC;gBACnC,MAAM,CAAC,IAAI,CAAC,2CAA2C,EAAE,OAAO,CAAC,CAAC;YACpE,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,qEAAqE,EAAE,OAAO,CAAC,CAAC;gBAC5F,MAAM,CAAC,IAAI,CAAC,+EAA+E,CAAC,CAAC;YAC/F,CAAC;QACH,CAAC;QACD,OAAO,EAAE,IAAI;QACb,GAAG,CAAC,KAAK;YACP,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE;gBACvC,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,KAAK,EAAE,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC;gBACrC,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;gBAC1C,WAAW,EAAE,IAAI;aAClB,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wCAAwC,CAC5D,OAAmC,EACnC,QAAmC,EACnC,OAAgC;IAEhC,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;QAC5B,OAAO,mCAAmC,CAAC,OAAO,CAAC,eAAe,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAClG,CAAC;IACD,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAC9B,OAAO,kCAAkC,CAAC,OAAO,CAAC,iBAAiB,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACnG,CAAC;IACD,IAAI,OAAO,CAAC,4BAA4B,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC;QAC1E,MAAM,SAAS,GAAG,MAAM,0CAA0C,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC/F,IAAI,SAAS,KAAK,IAAI;YAAE,OAAO,SAAS,CAAC;IAC3C,CAAC;IACD,OAAO,4BAA4B,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACxD,CAAC"}
1
+ {"version":3,"file":"prepareStateInitialization.js","sourceRoot":"","sources":["../../../../src/cmds/beacon/stateInitialization/prepareStateInitialization.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAC,kBAAkB,EAAC,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAC,WAAW,EAAE,SAAS,EAAC,MAAM,iBAAiB,CAAC;AACvD,OAAO,EACL,kCAAkC,EAClC,mCAAmC,EACnC,0CAA0C,GAC3C,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAC,kCAAkC,EAAC,MAAM,iBAAiB,CAAC;AAEnE,MAAM,UAAU,kCAAkC,CAChD,EAAC,UAAU,EAAE,QAAQ,EAAE,8BAA8B,EAAqB,EAC1E,EAAC,eAAe,EAAE,MAAM,EAA0B;IAElD,MAAM,MAAM,GAAG,kBAAkB,CAAC,eAAe,EAAE,QAAQ,CAAC,qBAAqB,CAAC,CAAC;IACnF,OAAO;QACL,UAAU;QACV,MAAM;QACN,WAAW,EAAE,IAAI;QACjB,QAAQ,CAAC,KAAK;YACZ,kCAAkC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAClD,MAAM,OAAO,GAAG;gBACd,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,KAAK,EAAE,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC;gBACrC,SAAS,EAAE,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC;gBACzC,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;gBAC1C,8BAA8B;aAC/B,CAAC;YACF,IAAI,8BAA8B,EAAE,CAAC;gBACnC,MAAM,CAAC,IAAI,CAAC,2CAA2C,EAAE,OAAO,CAAC,CAAC;YACpE,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,qEAAqE,EAAE,OAAO,CAAC,CAAC;gBAC5F,MAAM,CAAC,IAAI,CAAC,+EAA+E,CAAC,CAAC;YAC/F,CAAC;QACH,CAAC;QACD,OAAO,EAAE,IAAI;QACb,GAAG,CAAC,KAAK;YACP,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE;gBACvC,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,KAAK,EAAE,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC;gBACrC,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;gBAC1C,WAAW,EAAE,IAAI;aAClB,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qCAAqC,CACzD,OAAmC,EACnC,QAAmC,EACnC,OAAgC;IAEhC,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;QAC5B,OAAO,mCAAmC,CAAC,OAAO,CAAC,eAAe,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAClG,CAAC;IACD,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAC9B,OAAO,kCAAkC,CAAC,OAAO,CAAC,iBAAiB,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACnG,CAAC;IACD,IAAI,OAAO,CAAC,4BAA4B,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC;QAC1E,OAAO,0CAA0C,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAChF,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -5,7 +5,7 @@ import { Checkpoint } from "@lodestar/types/phase0";
5
5
  import { Logger } from "@lodestar/utils";
6
6
  import { GlobalArgs } from "../../../options/globalOptions.js";
7
7
  import { BeaconArgs } from "../options.js";
8
- export type StateInitializationOptions = Pick<BeaconArgs & GlobalArgs, "checkpointState" | "checkpointSyncUrl" | "unsafeCheckpointState" | "lastPersistedCheckpointState" | "genesisStateFile" | "wssCheckpoint" | "forceCheckpointSync" | "ignoreWeakSubjectivityCheck" | "forceGenesis" | "network" | "chain.nHistoricalStatesFileDataStore" | "chain.nativeStateView">;
8
+ export type StateInitializationOptions = Pick<BeaconArgs & GlobalArgs, "checkpointState" | "checkpointSyncUrl" | "unsafeCheckpointState" | "lastPersistedCheckpointState" | "genesisStateFile" | "wssCheckpoint" | "forceCheckpointSync" | "ignoreWeakSubjectivityCheck" | "network" | "chain.nHistoricalStatesFileDataStore" | "chain.nativeStateView">;
9
9
  export type StatePreparationContext = {
10
10
  chainForkConfig: ChainForkConfig;
11
11
  db: IBeaconDb;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/cmds/beacon/stateInitialization/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAC,YAAY,EAAE,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAC,gBAAgB,EAAE,kBAAkB,EAAE,uBAAuB,EAAC,MAAM,4BAA4B,CAAC;AACzG,OAAO,EAAC,UAAU,EAAC,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAC,UAAU,EAAC,MAAM,mCAAmC,CAAC;AAC7D,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAC;AAEzC,MAAM,MAAM,0BAA0B,GAAG,IAAI,CAC3C,UAAU,GAAG,UAAU,EACrB,iBAAiB,GACjB,mBAAmB,GACnB,uBAAuB,GACvB,8BAA8B,GAC9B,kBAAkB,GAClB,eAAe,GACf,qBAAqB,GACrB,6BAA6B,GAC7B,cAAc,GACd,SAAS,GACT,sCAAsC,GACtC,uBAAuB,CAC1B,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,eAAe,EAAE,eAAe,CAAC;IACjC,EAAE,EAAE,SAAS,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,gBAAgB,EAAE,uBAAuB,CAAC;IAC1C,8BAA8B,EAAE,OAAO,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,UAAU,EAAE,UAAU,CAAC;IACvB,kBAAkB,EAAE,UAAU,GAAG,IAAI,CAAC;IACtC,MAAM,EAAE,iBAAiB,GAAG,mBAAmB,GAAG,oBAAoB,CAAC;CACxE,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,WAAW,EAAE,OAAO,CAAC;IACrB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,2BAA2B,EAAE,OAAO,CAAC;CACtC,CAAC;AAEF,qEAAqE;AACrE,MAAM,MAAM,mBAAmB,GAAG;IAChC,UAAU,EAAE,UAAU,CAAC;IACvB,MAAM,EAAE,YAAY,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC5C,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;IACrF,GAAG,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;CACxC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/cmds/beacon/stateInitialization/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAC,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAC,YAAY,EAAE,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAC,gBAAgB,EAAE,kBAAkB,EAAE,uBAAuB,EAAC,MAAM,4BAA4B,CAAC;AACzG,OAAO,EAAC,UAAU,EAAC,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAC,UAAU,EAAC,MAAM,mCAAmC,CAAC;AAC7D,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAC;AAEzC,MAAM,MAAM,0BAA0B,GAAG,IAAI,CAC3C,UAAU,GAAG,UAAU,EACrB,iBAAiB,GACjB,mBAAmB,GACnB,uBAAuB,GACvB,8BAA8B,GAC9B,kBAAkB,GAClB,eAAe,GACf,qBAAqB,GACrB,6BAA6B,GAC7B,SAAS,GACT,sCAAsC,GACtC,uBAAuB,CAC1B,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,eAAe,EAAE,eAAe,CAAC;IACjC,EAAE,EAAE,SAAS,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,kBAAkB,CAAC;IAC7B,gBAAgB,EAAE,uBAAuB,CAAC;IAC1C,8BAA8B,EAAE,OAAO,CAAC;CACzC,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG;IAC1C,UAAU,EAAE,UAAU,CAAC;IACvB,kBAAkB,EAAE,UAAU,GAAG,IAAI,CAAC;IACtC,MAAM,EAAE,iBAAiB,GAAG,mBAAmB,GAAG,oBAAoB,CAAC;CACxE,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,WAAW,EAAE,OAAO,CAAC;IACrB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,2BAA2B,EAAE,OAAO,CAAC;CACtC,CAAC;AAEF,qEAAqE;AACrE,MAAM,MAAM,mBAAmB,GAAG;IAChC,UAAU,EAAE,UAAU,CAAC;IACvB,MAAM,EAAE,YAAY,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAC5C,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;IACrF,GAAG,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,IAAI,CAAC;CACxC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/cmds/dev/handler.ts"],"names":[],"mappings":"AAKA,OAAO,EAAC,UAAU,EAAC,MAAM,wBAAwB,CAAC;AAOlD,OAAO,EAAC,QAAQ,EAAC,MAAM,cAAc,CAAC;AAEtC;;GAEG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAoE3E"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/cmds/dev/handler.ts"],"names":[],"mappings":"AAKA,OAAO,EAAC,UAAU,EAAC,MAAM,wBAAwB,CAAC;AAOlD,OAAO,EAAC,QAAQ,EAAC,MAAM,cAAc,CAAC;AAEtC;;GAEG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAsE3E"}
@@ -25,13 +25,15 @@ export async function devHandler(args) {
25
25
  }
26
26
  // Note: defaults to network "dev", to all paths are custom and don't conflict with networks.
27
27
  // Flag --reset cleans up the custom dirs on dev stop
28
- const beaconDbDir = getBeaconPaths(args, network).dbDir;
28
+ const { dbDir: beaconDbDir, pubkeysFile } = getBeaconPaths(args, network);
29
29
  const validatorsDbDir = getValidatorPaths(args, network).validatorsDbDir;
30
30
  // Remove slashing protection db. Otherwise the validators won't be able to propose nor attest
31
31
  // until the clock reach a higher slot than the previous run of the dev command
32
32
  if (args.genesisTime === undefined) {
33
33
  await rimraf(beaconDbDir);
34
34
  await rimraf(validatorsDbDir);
35
+ // Validators deposited in the previous run do not exist on the new chain
36
+ await rimraf(pubkeysFile);
35
37
  }
36
38
  mkdir(beaconDbDir);
37
39
  mkdir(validatorsDbDir);
@@ -1 +1 @@
1
- {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/cmds/dev/handler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/cmds/dev/handler.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/networks/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,WAAW,EAAE,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAG9D,OAAO,EAAC,UAAU,EAAC,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAgB,MAAM,EAA+C,MAAM,iBAAiB,CAAC;AAWpG,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,aAAa,GAAG,QAAQ,GAAG,UAAU,CAAC;AACrH,eAAO,MAAM,YAAY,EAAE,WAAW,EAWrC,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,IAAI,WAAW,CAE1E;AAED,MAAM,MAAM,4BAA4B,GAAG;IACzC,yBAAyB,EAAE,MAAM,CAAC;IAClC,0BAA0B,CAAC,EAAE,MAAM,CAAC;CACrC,CAAC;AAKF,wBAAgB,cAAc,CAAC,OAAO,EAAE,WAAW,GAAG;IACpD,WAAW,EAAE,WAAW,CAAC;IACzB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAqBA;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,WAAW,GAAG,WAAW,CAExE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,CAErE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,WAAW,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAKnF;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAY5E;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAcjF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,iBAAiB,EAAE,MAAM,GAAG,MAAM,EAAE,CAiBjE;AAED;;GAEG;AACH,wBAAsB,+BAA+B,CACnD,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,MAAM,EACd,EAAC,iBAAiB,EAAE,aAAa,EAAC,EAAE;IAAC,iBAAiB,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAC,GACtF,OAAO,CAAC;IAAC,UAAU,EAAE,UAAU,CAAC;IAAC,kBAAkB,EAAE,UAAU,GAAG,IAAI,CAAA;CAAC,CAAC,CAyC1E;AAED,wBAAgB,oBAAoB,CAAC,aAAa,EAAE,MAAM,GAAG,UAAU,CAOtE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/networks/index.ts"],"names":[],"mappings":"AAIA,OAAO,EAAC,WAAW,EAAE,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAG9D,OAAO,EAAC,UAAU,EAAC,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAgB,MAAM,EAA+C,MAAM,iBAAiB,CAAC;AAWpG,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,GAAG,aAAa,GAAG,QAAQ,GAAG,UAAU,CAAC;AACrH,eAAO,MAAM,YAAY,EAAE,WAAW,EAWrC,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,IAAI,WAAW,CAE1E;AAED,MAAM,MAAM,4BAA4B,GAAG;IACzC,yBAAyB,EAAE,MAAM,CAAC;IAClC,0BAA0B,CAAC,EAAE,MAAM,CAAC;CACrC,CAAC;AAKF,wBAAgB,cAAc,CAAC,OAAO,EAAE,WAAW,GAAG;IACpD,WAAW,EAAE,WAAW,CAAC;IACzB,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAqBA;AAED,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,WAAW,GAAG,WAAW,CAExE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,GAAG,IAAI,CAErE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,WAAW,GAAG,SAAS,GAAG,MAAM,GAAG,IAAI,CAKnF;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAY5E;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAcjF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,iBAAiB,EAAE,MAAM,GAAG,MAAM,EAAE,CAiBjE;AAED;;GAEG;AACH,wBAAsB,+BAA+B,CACnD,MAAM,EAAE,eAAe,EACvB,MAAM,EAAE,MAAM,EACd,EAAC,iBAAiB,EAAE,aAAa,EAAC,EAAE;IAAC,iBAAiB,EAAE,MAAM,CAAC;IAAC,aAAa,CAAC,EAAE,MAAM,CAAA;CAAC,GACtF,OAAO,CAAC;IAAC,UAAU,EAAE,UAAU,CAAC;IAAC,kBAAkB,EAAE,UAAU,GAAG,IAAI,CAAA;CAAC,CAAC,CAkD1E;AAED,wBAAgB,oBAAoB,CAAC,aAAa,EAAE,MAAM,GAAG,UAAU,CAOtE"}
@@ -141,9 +141,14 @@ export async function fetchWeakSubjectivityStateBytes(config, logger, { checkpoi
141
141
  const getStatePromise = api.debug.getStateV2({ stateId }, { responseWireFormat: WireFormat.ssz });
142
142
  const response = await callFnWhenAwait(getStatePromise, () => logger.info("Download in progress, please wait..."), GET_STATE_LOG_INTERVAL);
143
143
  const wsStateBytes = response.ssz();
144
+ const { version } = response.meta();
144
145
  const wsSlot = getStateSlotFromBytes(wsStateBytes);
145
146
  const logData = { stateId, size: formatBytes(wsStateBytes.length) };
146
147
  logger.info("Download completed", typeof stateId === "number" ? logData : { ...logData, slot: wsSlot });
148
+ const expectedFork = config.getForkName(wsSlot);
149
+ if (version !== expectedFork) {
150
+ throw new LodestarError({ code: "CHECKPOINT_FORK_MISMATCH" }, `Checkpoint sync server returned ${version} state at slot ${wsSlot} but local config expects ${expectedFork}, verify --network or the chain config`);
151
+ }
147
152
  return {
148
153
  stateBytes: new Uint8Array(wsStateBytes.buffer, wsStateBytes.byteOffset, wsStateBytes.byteLength),
149
154
  expectedCheckpoint: wsCheckpoint,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/networks/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/networks/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chainsafe/lodestar",
3
- "version": "1.50.0-dev.d86161f63c",
3
+ "version": "1.50.0-dev.e90f18e925",
4
4
  "description": "Command line interface for lodestar",
5
5
  "author": "ChainSafe Systems",
6
6
  "license": "Apache-2.0",
@@ -68,17 +68,17 @@
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.d86161f63c",
72
- "@lodestar/beacon-node": "^1.50.0-dev.d86161f63c",
73
- "@lodestar/builder": "^1.50.0-dev.d86161f63c",
74
- "@lodestar/config": "^1.50.0-dev.d86161f63c",
75
- "@lodestar/db": "^1.50.0-dev.d86161f63c",
76
- "@lodestar/logger": "^1.50.0-dev.d86161f63c",
77
- "@lodestar/params": "^1.50.0-dev.d86161f63c",
78
- "@lodestar/state-transition": "^1.50.0-dev.d86161f63c",
79
- "@lodestar/types": "^1.50.0-dev.d86161f63c",
80
- "@lodestar/utils": "^1.50.0-dev.d86161f63c",
81
- "@lodestar/validator": "^1.50.0-dev.d86161f63c",
71
+ "@lodestar/api": "^1.50.0-dev.e90f18e925",
72
+ "@lodestar/beacon-node": "^1.50.0-dev.e90f18e925",
73
+ "@lodestar/builder": "^1.50.0-dev.e90f18e925",
74
+ "@lodestar/config": "^1.50.0-dev.e90f18e925",
75
+ "@lodestar/db": "^1.50.0-dev.e90f18e925",
76
+ "@lodestar/logger": "^1.50.0-dev.e90f18e925",
77
+ "@lodestar/params": "^1.50.0-dev.e90f18e925",
78
+ "@lodestar/state-transition": "^1.50.0-dev.e90f18e925",
79
+ "@lodestar/types": "^1.50.0-dev.e90f18e925",
80
+ "@lodestar/utils": "^1.50.0-dev.e90f18e925",
81
+ "@lodestar/validator": "^1.50.0-dev.e90f18e925",
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.d86161f63c",
97
+ "@lodestar/test-utils": "^1.50.0-dev.e90f18e925",
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": "baf89618cbef4e3c904f52171907659f3219c1cf"
111
+ "gitHead": "589559dd8659d5aac78c84ed516e05d52422b124"
112
112
  }
@@ -27,6 +27,7 @@ import {initBeaconState} from "./initBeaconState.js";
27
27
  import {initPrivateKeyAndEnr} from "./initPeerIdAndEnr.js";
28
28
  import {BeaconArgs} from "./options.js";
29
29
  import {getBeaconPaths} from "./paths.js";
30
+ import {savePubkeysFile} from "./pubkeysFile.js";
30
31
 
31
32
  const DEFAULT_RETENTION_SSZ_OBJECTS_HOURS = 15 * 24;
32
33
  const HOURS_TO_MS = 3600 * 1000;
@@ -78,7 +79,7 @@ export async function beaconHandler(args: BeaconArgs & GlobalArgs): Promise<void
78
79
  anchorState,
79
80
  config: beaconConfig,
80
81
  isFinalized,
81
- } = await initBeaconState(args, beaconPaths.dataDir, config, db, logger);
82
+ } = await initBeaconState(args, beaconPaths.dataDir, beaconPaths.pubkeysFile, config, db, logger);
82
83
 
83
84
  const node = await BeaconNode.init({
84
85
  opts: options,
@@ -139,21 +140,21 @@ export async function beaconHandler(args: BeaconArgs & GlobalArgs): Promise<void
139
140
  abortController.signal.addEventListener(
140
141
  "abort",
141
142
  async () => {
143
+ let exitCode = 0;
142
144
  try {
143
145
  await node.close();
144
146
  logger.debug("Beacon node closed");
145
- // Explicitly exit until active handles issue is resolved
146
- // See https://github.com/ChainSafe/lodestar/issues/5642
147
- process.exit(0);
148
147
  } catch (e) {
149
148
  // If we start from unfinalized state, we don't have checkpoint state so there is this error
150
149
  // "No state in cache for finalized checkpoint state epoch"
151
150
  logger.warn("Error closing beacon node", {}, e as Error);
152
151
  // Make sure db is always closed gracefully
153
152
  await db.close();
154
- // Must explicitly exit process due to potential active handles
155
- process.exit(1);
153
+ exitCode = 1;
156
154
  }
155
+ savePubkeysFile(pubkeyCache, beaconPaths.pubkeysFile, logger);
156
+ // Explicitly exit process due to potential active handles
157
+ process.exit(exitCode);
157
158
  },
158
159
  {once: true}
159
160
  );
@@ -13,10 +13,12 @@ import {
13
13
  import {Logger, formatBytes} from "@lodestar/utils";
14
14
  import {GlobalArgs} from "../../options/globalOptions.js";
15
15
  import {BeaconArgs} from "./options.js";
16
+ import {loadPubkeysFile} from "./pubkeysFile.js";
16
17
  import {StateInitializationError, StateInitializationErrorCode} from "./stateInitialization/errors.js";
18
+ import {prepareGenesisInitialization} from "./stateInitialization/genesisState.js";
17
19
  import {
18
20
  prepareArchivedStateInitialization,
19
- prepareCheckpointOrGenesisInitialization,
21
+ prepareCheckpointSourceInitialization,
20
22
  } from "./stateInitialization/prepareStateInitialization.js";
21
23
  import {
22
24
  ArchivedStateBytes,
@@ -29,11 +31,12 @@ type InitBeaconStateResult = {anchorState: IBeaconStateView; config: BeaconConfi
29
31
 
30
32
  /**
31
33
  * Select serialized anchor bytes before constructing the state used for validation, persistence, and return.
32
- * Populates the global `pubkeyCache` with the anchor state's validators.
34
+ * Populates the global `pubkeyCache` with the anchor state's validators, reusing `pubkeysFile` if it matches.
33
35
  */
34
36
  export async function initBeaconState(
35
37
  args: BeaconArgs & GlobalArgs,
36
38
  dataDir: string,
39
+ pubkeysFile: string,
37
40
  chainForkConfig: ChainForkConfig,
38
41
  db: IBeaconDb,
39
42
  logger: Logger
@@ -65,11 +68,23 @@ export async function initBeaconState(
65
68
  options.lastPersistedCheckpointState
66
69
  );
67
70
  if (!options.forceCheckpointSync && (!hasCheckpointSource || archived.isWithinWeakSubjectivityPeriod)) {
68
- return executeStateInitialization(prepareArchivedStateInitialization(archived, context), useNative);
71
+ return executeStateInitialization(
72
+ prepareArchivedStateInitialization(archived, context),
73
+ useNative,
74
+ pubkeysFile,
75
+ logger
76
+ );
69
77
  }
70
78
  }
71
- const stateInit = await prepareCheckpointOrGenesisInitialization(options, archived, context);
72
- return executeStateInitialization(stateInit, useNative);
79
+ let stateInit = await prepareCheckpointSourceInitialization(options, archived, context);
80
+ if (stateInit === null) {
81
+ // Without a usable checkpoint state, resume from the db as if no checkpoint source was set instead of genesis
82
+ stateInit =
83
+ archived !== null
84
+ ? prepareArchivedStateInitialization(archived, context)
85
+ : await prepareGenesisInitialization(options, context);
86
+ }
87
+ return executeStateInitialization(stateInit, useNative, pubkeysFile, logger);
73
88
  }
74
89
 
75
90
  /**
@@ -97,7 +112,7 @@ async function readLatestArchivedStateBytes({
97
112
  if (weakSubjectivity === null) {
98
113
  throw new StateInitializationError(
99
114
  {code: StateInitializationErrorCode.MALFORMED_STATE_BYTES},
100
- "Cannot extract weak subjectivity summary from archived state bytes"
115
+ `Cannot extract weak subjectivity summary from archived state bytes, expected ${chainForkConfig.getForkName(metadata.slot)} state at slot ${metadata.slot}, possible fork or network mismatch`
101
116
  );
102
117
  }
103
118
  return {
@@ -114,7 +129,9 @@ async function readLatestArchivedStateBytes({
114
129
  */
115
130
  async function executeStateInitialization(
116
131
  stateInit: StateInitialization,
117
- useNative: boolean
132
+ useNative: boolean,
133
+ pubkeysFile: string,
134
+ logger: Logger
118
135
  ): Promise<InitBeaconStateResult> {
119
136
  const {config, stateBytes} = stateInit;
120
137
  const validatorCount = getValidatorCountFromStateBytes(config, stateBytes);
@@ -129,7 +146,10 @@ async function executeStateInitialization(
129
146
  // by its native lock; if this headroom is exceeded, it grows by the same fixed step.
130
147
  // The view syncs pubkeys during construction, so capacity must be reserved first.
131
148
  const headroomEpochs = (90 * 24 * 60 * 60) / (config.SECONDS_PER_SLOT * SLOTS_PER_EPOCH);
132
- pubkeyCache.ensureCapacity(validatorCount + MAX_PENDING_DEPOSITS_PER_EPOCH * Math.ceil(headroomEpochs));
149
+ const pubkeyCacheCapacity = validatorCount + MAX_PENDING_DEPOSITS_PER_EPOCH * Math.ceil(headroomEpochs);
150
+ loadPubkeysFile(pubkeyCache, pubkeysFile, pubkeyCacheCapacity, config, stateBytes, validatorCount, logger);
151
+ // unilaterally expand capacity after best-effort pubkey file loading
152
+ pubkeyCache.ensureCapacity(pubkeyCacheCapacity);
133
153
  const anchorState = createBeaconStateView({useNative, config, stateBytes});
134
154
  stateInit.validate(anchorState);
135
155
  await stateInit.persist?.(anchorState, stateBytes);
@@ -4,7 +4,6 @@ import {LogArgs, logOptions} from "../../options/logOptions.js";
4
4
  import {BeaconPaths, defaultBeaconPaths} from "./paths.js";
5
5
 
6
6
  type BeaconExtraArgs = {
7
- forceGenesis?: boolean;
8
7
  genesisStateFile?: string;
9
8
  configFile?: string;
10
9
  bootnodesFile?: string;
@@ -22,6 +21,7 @@ type BeaconExtraArgs = {
22
21
  persistInvalidSszObjectsRetentionHours?: number;
23
22
  persistOrphanedBlocksDir?: string;
24
23
  peerStoreDir?: string;
24
+ pubkeysFile?: string;
25
25
  persistNetworkIdentity?: boolean;
26
26
  private?: boolean;
27
27
  validatorMonitorLogs?: boolean;
@@ -30,12 +30,6 @@ type BeaconExtraArgs = {
30
30
  };
31
31
 
32
32
  export const beaconExtraOptions: CliCommandOptions<BeaconExtraArgs> = {
33
- forceGenesis: {
34
- description: "Force beacon to create genesis without file",
35
- type: "boolean",
36
- hidden: true,
37
- },
38
-
39
33
  genesisStateFile: {
40
34
  description: "Path or URL to download a genesis state file in ssz-encoded format",
41
35
  type: "string",
@@ -148,6 +142,13 @@ export const beaconExtraOptions: CliCommandOptions<BeaconExtraArgs> = {
148
142
  type: "string",
149
143
  },
150
144
 
145
+ pubkeysFile: {
146
+ hidden: true,
147
+ description: "Pubkey cache file, loaded on startup and saved on graceful shutdown",
148
+ defaultDescription: defaultBeaconPaths.pubkeysFile,
149
+ type: "string",
150
+ },
151
+
151
152
  persistNetworkIdentity: {
152
153
  description:
153
154
  "Whether to reuse the same peer-id across restarts. Validator custody requires custody group count to persist relative to a given ENR. Setting to false will reset ENR and validator custody requirements on restarts.",
@@ -9,6 +9,7 @@ export type BeaconPathsPartial = Partial<{
9
9
  dataColumnDir: string;
10
10
  persistInvalidSszObjectsDir: string;
11
11
  persistOrphanedBlocksDir?: string;
12
+ pubkeysFile: string;
12
13
  }>;
13
14
 
14
15
  export type BeaconPaths = {
@@ -18,6 +19,7 @@ export type BeaconPaths = {
18
19
  dataColumnDir: string;
19
20
  persistInvalidSszObjectsDir: string;
20
21
  persistOrphanedBlocksDir: string;
22
+ pubkeysFile: string;
21
23
  };
22
24
 
23
25
  /**
@@ -29,6 +31,7 @@ export type BeaconPaths = {
29
31
  * ├── beacon.config.json
30
32
  * ├── peer-id.json
31
33
  * ├── enr
34
+ * ├── pubkeys
32
35
  * ├── chain-db
33
36
  * └── beacon.log
34
37
  * ```
@@ -48,6 +51,7 @@ export function getBeaconPaths(
48
51
  const persistInvalidSszObjectsDir = args.persistInvalidSszObjectsDir ?? path.join(beaconDir, "invalidSszObjects");
49
52
  const peerStoreDir = args.peerStoreDir ?? path.join(beaconDir, "peerstore");
50
53
  const persistOrphanedBlocksDir = args.persistOrphanedBlocksDir ?? path.join(beaconDir, "orphaned_blocks");
54
+ const pubkeysFile = args.pubkeysFile ?? path.join(beaconDir, "pubkeys");
51
55
 
52
56
  return {
53
57
  ...globalPaths,
@@ -57,6 +61,7 @@ export function getBeaconPaths(
57
61
  persistInvalidSszObjectsDir,
58
62
  peerStoreDir,
59
63
  persistOrphanedBlocksDir,
64
+ pubkeysFile,
60
65
  };
61
66
  }
62
67
 
@@ -0,0 +1,50 @@
1
+ import {type PubkeyCache} from "@chainsafe/lodestar-z/pubkeys";
2
+ import {ChainForkConfig} from "@lodestar/config";
3
+ import {getValidatorPubkeyFromStateBytes} from "@lodestar/state-transition";
4
+ import {Logger, byteArrayEquals} from "@lodestar/utils";
5
+
6
+ /**
7
+ * Best effort load of a trusted pubkey cache saved by a previous run, to skip decompressing every validator
8
+ * pubkey on boot. Must be called before any worker uses the cache.
9
+ */
10
+ export function loadPubkeysFile(
11
+ pubkeyCache: PubkeyCache,
12
+ filepath: string,
13
+ maxCapacity: number,
14
+ config: ChainForkConfig,
15
+ anchorStateBytes: Uint8Array,
16
+ anchorValidatorCount: number,
17
+ logger: Logger
18
+ ): void {
19
+ const start = Date.now();
20
+ try {
21
+ pubkeyCache.load(filepath, maxCapacity);
22
+ } catch (e) {
23
+ logger.debug("Unable to load pubkeys file", {filepath}, e as Error);
24
+ return;
25
+ }
26
+
27
+ // load() only checks framing and checksum, so reject a file from another chain. Checking the endpoints
28
+ // suffices since the registry is append-only.
29
+ const overlap = Math.min(pubkeyCache.size, anchorValidatorCount);
30
+ for (const index of overlap > 0 ? [0, overlap - 1] : []) {
31
+ const anchorPubkey = getValidatorPubkeyFromStateBytes(config, anchorStateBytes, index);
32
+ if (anchorPubkey === null || !byteArrayEquals(pubkeyCache.getPubkeyBytesOrThrow(index), anchorPubkey)) {
33
+ pubkeyCache.reset();
34
+ logger.debug("Discarded pubkeys file not matching anchor state", {filepath, index});
35
+ return;
36
+ }
37
+ }
38
+
39
+ logger.debug("Loaded pubkeys file", {filepath, count: pubkeyCache.size, durationMs: Date.now() - start});
40
+ }
41
+
42
+ export function savePubkeysFile(pubkeyCache: PubkeyCache, filepath: string, logger: Logger): void {
43
+ const start = Date.now();
44
+ try {
45
+ pubkeyCache.save(filepath);
46
+ logger.debug("Saved pubkeys file", {filepath, count: pubkeyCache.size, durationMs: Date.now() - start});
47
+ } catch (e) {
48
+ logger.debug("Unable to save pubkeys file", {filepath}, e as Error);
49
+ }
50
+ }
@@ -178,7 +178,7 @@ function prepareCheckpointInitialization(
178
178
  if (weakSubjectivity === null) {
179
179
  throw new StateInitializationError(
180
180
  {code: StateInitializationErrorCode.MALFORMED_STATE_BYTES},
181
- `Cannot extract weak subjectivity summary from ${candidate.source}`
181
+ `Cannot extract weak subjectivity summary from ${candidate.source}, expected ${chainForkConfig.getForkName(metadata.slot)} state at slot ${metadata.slot}, possible fork or network mismatch`
182
182
  );
183
183
  }
184
184
  const expectedCheckpoint = useArchived ? null : candidate.expectedCheckpoint;
@@ -204,8 +204,8 @@ function prepareCheckpointInitialization(
204
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
205
  );
206
206
  }
207
+ assertAnchorStateForkMatchesConfig(config, state);
207
208
  if (isFinalized) {
208
- assertAnchorStateForkMatchesConfig(config, state);
209
209
  const source = useArchived ? "db" : "checkpoint";
210
210
  const logData = {
211
211
  slot: state.slot,
@@ -15,11 +15,11 @@ import {StateInitialization, StateInitializationOptions, StatePreparationContext
15
15
  import {assertAnchorStateForkMatchesConfig} from "./validation.js";
16
16
 
17
17
  export async function prepareGenesisInitialization(
18
- options: Pick<StateInitializationOptions, "genesisStateFile" | "network" | "forceGenesis">,
18
+ options: Pick<StateInitializationOptions, "genesisStateFile" | "network">,
19
19
  {chainForkConfig, db, logger}: StatePreparationContext
20
20
  ): Promise<StateInitialization> {
21
21
  const source = options.genesisStateFile || getGenesisFileUrl(options.network || defaultNetwork);
22
- if (!source || options.forceGenesis) {
22
+ if (!source) {
23
23
  throw new StateInitializationError(
24
24
  {code: StateInitializationErrorCode.MISSING_INITIALIZATION_SOURCE},
25
25
  "Failed to initialize beacon state, please provide a genesis state file or use checkpoint sync"
@@ -40,7 +40,7 @@ export async function prepareGenesisInitialization(
40
40
  if (weakSubjectivity === null) {
41
41
  throw new StateInitializationError(
42
42
  {code: StateInitializationErrorCode.MALFORMED_STATE_BYTES},
43
- "Cannot extract weak subjectivity summary from genesis state bytes"
43
+ `Cannot extract weak subjectivity summary from genesis state bytes, expected ${chainForkConfig.getForkName(metadata.slot)} state at slot ${metadata.slot}, possible fork or network mismatch`
44
44
  );
45
45
  }
46
46
  const config = createBeaconConfig(chainForkConfig, metadata.genesisValidatorsRoot);
@@ -6,7 +6,6 @@ import {
6
6
  prepareCheckpointFileInitialization,
7
7
  prepareUnfinalizedCheckpointInitialization,
8
8
  } from "./checkpointState.js";
9
- import {prepareGenesisInitialization} from "./genesisState.js";
10
9
  import {ArchivedStateBytes, StateInitialization, StateInitializationOptions, StatePreparationContext} from "./types.js";
11
10
  import {assertAnchorStateForkMatchesConfig} from "./validation.js";
12
11
 
@@ -47,11 +46,11 @@ export function prepareArchivedStateInitialization(
47
46
  };
48
47
  }
49
48
 
50
- export async function prepareCheckpointOrGenesisInitialization(
49
+ export async function prepareCheckpointSourceInitialization(
51
50
  options: StateInitializationOptions,
52
51
  archived: ArchivedStateBytes | null,
53
52
  context: StatePreparationContext
54
- ): Promise<StateInitialization> {
53
+ ): Promise<StateInitialization | null> {
55
54
  if (options.checkpointState) {
56
55
  return prepareCheckpointFileInitialization(options.checkpointState, options, archived, context);
57
56
  }
@@ -59,8 +58,7 @@ export async function prepareCheckpointOrGenesisInitialization(
59
58
  return prepareCheckpointApiInitialization(options.checkpointSyncUrl, options, archived, context);
60
59
  }
61
60
  if (options.lastPersistedCheckpointState || options.unsafeCheckpointState) {
62
- const stateInit = await prepareUnfinalizedCheckpointInitialization(options, archived, context);
63
- if (stateInit !== null) return stateInit;
61
+ return prepareUnfinalizedCheckpointInitialization(options, archived, context);
64
62
  }
65
- return prepareGenesisInitialization(options, context);
63
+ return null;
66
64
  }
@@ -16,7 +16,6 @@ export type StateInitializationOptions = Pick<
16
16
  | "wssCheckpoint"
17
17
  | "forceCheckpointSync"
18
18
  | "ignoreWeakSubjectivityCheck"
19
- | "forceGenesis"
20
19
  | "network"
21
20
  | "chain.nHistoricalStatesFileDataStore"
22
21
  | "chain.nativeStateView"
@@ -31,7 +31,7 @@ export async function devHandler(args: IDevArgs & GlobalArgs): Promise<void> {
31
31
 
32
32
  // Note: defaults to network "dev", to all paths are custom and don't conflict with networks.
33
33
  // Flag --reset cleans up the custom dirs on dev stop
34
- const beaconDbDir = getBeaconPaths(args, network).dbDir;
34
+ const {dbDir: beaconDbDir, pubkeysFile} = getBeaconPaths(args, network);
35
35
  const validatorsDbDir = getValidatorPaths(args, network).validatorsDbDir;
36
36
 
37
37
  // Remove slashing protection db. Otherwise the validators won't be able to propose nor attest
@@ -39,6 +39,8 @@ export async function devHandler(args: IDevArgs & GlobalArgs): Promise<void> {
39
39
  if (args.genesisTime === undefined) {
40
40
  await rimraf(beaconDbDir);
41
41
  await rimraf(validatorsDbDir);
42
+ // Validators deposited in the previous run do not exist on the new chain
43
+ await rimraf(pubkeysFile);
42
44
  }
43
45
 
44
46
  mkdir(beaconDbDir);
@@ -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,