@chainsafe/lodestar 1.50.0-dev.814fe8c461 → 1.50.0-dev.859c034d37

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 (34) 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 +10 -6
  9. package/lib/cmds/beacon/initBeaconState.js.map +1 -1
  10. package/lib/cmds/beacon/options.d.ts +1 -0
  11. package/lib/cmds/beacon/options.d.ts.map +1 -1
  12. package/lib/cmds/beacon/options.js +6 -0
  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 +6 -5
  23. package/lib/cmds/beacon/stateInitialization/checkpointState.js.map +1 -1
  24. package/lib/cmds/dev/handler.d.ts.map +1 -1
  25. package/lib/cmds/dev/handler.js +3 -1
  26. package/lib/cmds/dev/handler.js.map +1 -1
  27. package/package.json +14 -14
  28. package/src/cmds/beacon/handler.ts +7 -6
  29. package/src/cmds/beacon/initBeaconState.ts +17 -5
  30. package/src/cmds/beacon/options.ts +8 -0
  31. package/src/cmds/beacon/paths.ts +5 -0
  32. package/src/cmds/beacon/pubkeysFile.ts +50 -0
  33. package/src/cmds/beacon/stateInitialization/checkpointState.ts +10 -9
  34. package/src/cmds/dev/handler.ts +3 -1
package/.git-data.json CHANGED
@@ -1,4 +1,4 @@
1
1
  {
2
2
  "branch": "unstable",
3
- "commit": "814fe8c46177b93df74425e57322d6121d3b25a8"
3
+ "commit": "859c034d3759b165c331f957d1a9986b78fc3441"
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;AAcxC,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,CAwChC"}
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,14 +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
7
  import { prepareGenesisInitialization } from "./stateInitialization/genesisState.js";
7
8
  import { prepareArchivedStateInitialization, prepareCheckpointSourceInitialization, } from "./stateInitialization/prepareStateInitialization.js";
8
9
  /**
9
10
  * Select serialized anchor bytes before constructing the state used for validation, persistence, and return.
10
- * 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.
11
12
  */
12
- export async function initBeaconState(args, dataDir, chainForkConfig, db, logger) {
13
+ export async function initBeaconState(args, dataDir, pubkeysFile, chainForkConfig, db, logger) {
13
14
  const options = args;
14
15
  const useNative = options["chain.nativeStateView"] ?? false;
15
16
  if (options.forceCheckpointSync &&
@@ -30,7 +31,7 @@ export async function initBeaconState(args, dataDir, chainForkConfig, db, logger
30
31
  options.unsafeCheckpointState ||
31
32
  options.lastPersistedCheckpointState);
32
33
  if (!options.forceCheckpointSync && (!hasCheckpointSource || archived.isWithinWeakSubjectivityPeriod)) {
33
- return executeStateInitialization(prepareArchivedStateInitialization(archived, context), useNative);
34
+ return executeStateInitialization(prepareArchivedStateInitialization(archived, context), useNative, pubkeysFile, logger);
34
35
  }
35
36
  }
36
37
  let stateInit = await prepareCheckpointSourceInitialization(options, archived, context);
@@ -41,7 +42,7 @@ export async function initBeaconState(args, dataDir, chainForkConfig, db, logger
41
42
  ? prepareArchivedStateInitialization(archived, context)
42
43
  : await prepareGenesisInitialization(options, context);
43
44
  }
44
- return executeStateInitialization(stateInit, useNative);
45
+ return executeStateInitialization(stateInit, useNative, pubkeysFile, logger);
45
46
  }
46
47
  /**
47
48
  * Read the archived DB anchor without constructing a state. Retain its metadata, weak-subjectivity summary,
@@ -73,7 +74,7 @@ async function readLatestArchivedStateBytes({ chainForkConfig, db, logger, }) {
73
74
  * Shared completion template for all sources: construct only the selected state, exactly once.
74
75
  * Validate before persistence, and log success only after any required writes succeed.
75
76
  */
76
- async function executeStateInitialization(stateInit, useNative) {
77
+ async function executeStateInitialization(stateInit, useNative, pubkeysFile, logger) {
77
78
  const { config, stateBytes } = stateInit;
78
79
  const validatorCount = getValidatorCountFromStateBytes(config, stateBytes);
79
80
  if (validatorCount === null) {
@@ -84,7 +85,10 @@ async function executeStateInitialization(stateInit, useNative) {
84
85
  // by its native lock; if this headroom is exceeded, it grows by the same fixed step.
85
86
  // The view syncs pubkeys during construction, so capacity must be reserved first.
86
87
  const headroomEpochs = (90 * 24 * 60 * 60) / (config.SECONDS_PER_SLOT * SLOTS_PER_EPOCH);
87
- 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);
88
92
  const anchorState = createBeaconStateView({ useNative, config, stateBytes });
89
93
  stateInit.validate(anchorState);
90
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,EAAC,4BAA4B,EAAC,MAAM,uCAAuC,CAAC;AACnF,OAAO,EACL,kCAAkC,EAClC,qCAAqC,GACtC,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,IAAI,SAAS,GAAG,MAAM,qCAAqC,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACxF,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;QACvB,8GAA8G;QAC9G,SAAS;YACP,QAAQ,KAAK,IAAI;gBACf,CAAC,CAAC,kCAAkC,CAAC,QAAQ,EAAE,OAAO,CAAC;gBACvD,CAAC,CAAC,MAAM,4BAA4B,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC;IACD,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,gFAAgF,eAAe,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,QAAQ,CAAC,IAAI,qCAAqC,CAC/L,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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"}
@@ -20,6 +20,7 @@ type BeaconExtraArgs = {
20
20
  persistInvalidSszObjectsRetentionHours?: number;
21
21
  persistOrphanedBlocksDir?: string;
22
22
  peerStoreDir?: string;
23
+ pubkeysFile?: string;
23
24
  persistNetworkIdentity?: boolean;
24
25
  private?: boolean;
25
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,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,CA6IjE,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"}
@@ -93,6 +93,12 @@ export const beaconExtraOptions = {
93
93
  defaultDescription: defaultBeaconPaths.peerStoreDir,
94
94
  type: "string",
95
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
+ },
96
102
  persistNetworkIdentity: {
97
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.",
98
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"}
@@ -106,6 +106,12 @@ function prepareCheckpointInitialization(candidate, archived, policy, { chainFor
106
106
  const { isFinalized, ignoreWeakSubjectivityCheck } = policy;
107
107
  const config = createBeaconConfig(chainForkConfig, metadata.genesisValidatorsRoot);
108
108
  const archivedWithinWeakSubjectivityPeriod = useArchived ? archived.isWithinWeakSubjectivityPeriod : null;
109
+ const passedValidation = archivedWithinWeakSubjectivityPeriod ?? isWithinWeakSubjectivityPeriodFromSummary(config, weakSubjectivity);
110
+ // Fast-fail stale checkpoints before deserializing the state or reserving pubkey-cache capacity.
111
+ if (!passedValidation && !ignoreWeakSubjectivityCheck) {
112
+ const clockEpoch = computeEpochAtSlot(getCurrentSlot(config, weakSubjectivity.genesisTime));
113
+ 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`);
114
+ }
109
115
  // DB-selected anchors need no persistence, including at slot zero.
110
116
  const shouldPersist = isFinalized && !useArchived;
111
117
  return {
@@ -116,11 +122,6 @@ function prepareCheckpointInitialization(candidate, archived, policy, { chainFor
116
122
  // A supplied checkpoint must match even when the period check is ignored.
117
123
  if (expectedCheckpoint !== null)
118
124
  assertStateMatchesCheckpoint(state, expectedCheckpoint);
119
- const passedValidation = archivedWithinWeakSubjectivityPeriod ?? isWithinWeakSubjectivityPeriodFromSummary(config, weakSubjectivity);
120
- if (!passedValidation && !ignoreWeakSubjectivityCheck) {
121
- const clockEpoch = computeEpochAtSlot(getCurrentSlot(config, weakSubjectivity.genesisTime));
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
- }
124
125
  assertAnchorStateForkMatchesConfig(config, state);
125
126
  if (isFinalized) {
126
127
  const source = useArchived ? "db" : "checkpoint";
@@ -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 +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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chainsafe/lodestar",
3
- "version": "1.50.0-dev.814fe8c461",
3
+ "version": "1.50.0-dev.859c034d37",
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.814fe8c461",
72
- "@lodestar/beacon-node": "^1.50.0-dev.814fe8c461",
73
- "@lodestar/builder": "^1.50.0-dev.814fe8c461",
74
- "@lodestar/config": "^1.50.0-dev.814fe8c461",
75
- "@lodestar/db": "^1.50.0-dev.814fe8c461",
76
- "@lodestar/logger": "^1.50.0-dev.814fe8c461",
77
- "@lodestar/params": "^1.50.0-dev.814fe8c461",
78
- "@lodestar/state-transition": "^1.50.0-dev.814fe8c461",
79
- "@lodestar/types": "^1.50.0-dev.814fe8c461",
80
- "@lodestar/utils": "^1.50.0-dev.814fe8c461",
81
- "@lodestar/validator": "^1.50.0-dev.814fe8c461",
71
+ "@lodestar/api": "^1.50.0-dev.859c034d37",
72
+ "@lodestar/beacon-node": "^1.50.0-dev.859c034d37",
73
+ "@lodestar/builder": "^1.50.0-dev.859c034d37",
74
+ "@lodestar/config": "^1.50.0-dev.859c034d37",
75
+ "@lodestar/db": "^1.50.0-dev.859c034d37",
76
+ "@lodestar/logger": "^1.50.0-dev.859c034d37",
77
+ "@lodestar/params": "^1.50.0-dev.859c034d37",
78
+ "@lodestar/state-transition": "^1.50.0-dev.859c034d37",
79
+ "@lodestar/types": "^1.50.0-dev.859c034d37",
80
+ "@lodestar/utils": "^1.50.0-dev.859c034d37",
81
+ "@lodestar/validator": "^1.50.0-dev.859c034d37",
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.814fe8c461",
97
+ "@lodestar/test-utils": "^1.50.0-dev.859c034d37",
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": "f8cfef9ffe414aba7e36b26e5fcfdf7c1135e7e8"
111
+ "gitHead": "8d43073b2cb8c38d4ac67c8284cbd32e5f11bcfa"
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,6 +13,7 @@ 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";
17
18
  import {prepareGenesisInitialization} from "./stateInitialization/genesisState.js";
18
19
  import {
@@ -30,11 +31,12 @@ type InitBeaconStateResult = {anchorState: IBeaconStateView; config: BeaconConfi
30
31
 
31
32
  /**
32
33
  * Select serialized anchor bytes before constructing the state used for validation, persistence, and return.
33
- * 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.
34
35
  */
35
36
  export async function initBeaconState(
36
37
  args: BeaconArgs & GlobalArgs,
37
38
  dataDir: string,
39
+ pubkeysFile: string,
38
40
  chainForkConfig: ChainForkConfig,
39
41
  db: IBeaconDb,
40
42
  logger: Logger
@@ -66,7 +68,12 @@ export async function initBeaconState(
66
68
  options.lastPersistedCheckpointState
67
69
  );
68
70
  if (!options.forceCheckpointSync && (!hasCheckpointSource || archived.isWithinWeakSubjectivityPeriod)) {
69
- return executeStateInitialization(prepareArchivedStateInitialization(archived, context), useNative);
71
+ return executeStateInitialization(
72
+ prepareArchivedStateInitialization(archived, context),
73
+ useNative,
74
+ pubkeysFile,
75
+ logger
76
+ );
70
77
  }
71
78
  }
72
79
  let stateInit = await prepareCheckpointSourceInitialization(options, archived, context);
@@ -77,7 +84,7 @@ export async function initBeaconState(
77
84
  ? prepareArchivedStateInitialization(archived, context)
78
85
  : await prepareGenesisInitialization(options, context);
79
86
  }
80
- return executeStateInitialization(stateInit, useNative);
87
+ return executeStateInitialization(stateInit, useNative, pubkeysFile, logger);
81
88
  }
82
89
 
83
90
  /**
@@ -122,7 +129,9 @@ async function readLatestArchivedStateBytes({
122
129
  */
123
130
  async function executeStateInitialization(
124
131
  stateInit: StateInitialization,
125
- useNative: boolean
132
+ useNative: boolean,
133
+ pubkeysFile: string,
134
+ logger: Logger
126
135
  ): Promise<InitBeaconStateResult> {
127
136
  const {config, stateBytes} = stateInit;
128
137
  const validatorCount = getValidatorCountFromStateBytes(config, stateBytes);
@@ -137,7 +146,10 @@ async function executeStateInitialization(
137
146
  // by its native lock; if this headroom is exceeded, it grows by the same fixed step.
138
147
  // The view syncs pubkeys during construction, so capacity must be reserved first.
139
148
  const headroomEpochs = (90 * 24 * 60 * 60) / (config.SECONDS_PER_SLOT * SLOTS_PER_EPOCH);
140
- 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);
141
153
  const anchorState = createBeaconStateView({useNative, config, stateBytes});
142
154
  stateInit.validate(anchorState);
143
155
  await stateInit.persist?.(anchorState, stateBytes);
@@ -21,6 +21,7 @@ type BeaconExtraArgs = {
21
21
  persistInvalidSszObjectsRetentionHours?: number;
22
22
  persistOrphanedBlocksDir?: string;
23
23
  peerStoreDir?: string;
24
+ pubkeysFile?: string;
24
25
  persistNetworkIdentity?: boolean;
25
26
  private?: boolean;
26
27
  validatorMonitorLogs?: boolean;
@@ -141,6 +142,13 @@ export const beaconExtraOptions: CliCommandOptions<BeaconExtraArgs> = {
141
142
  type: "string",
142
143
  },
143
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
+
144
152
  persistNetworkIdentity: {
145
153
  description:
146
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
+ }
@@ -186,6 +186,16 @@ function prepareCheckpointInitialization(
186
186
  const {isFinalized, ignoreWeakSubjectivityCheck} = policy;
187
187
  const config = createBeaconConfig(chainForkConfig, metadata.genesisValidatorsRoot);
188
188
  const archivedWithinWeakSubjectivityPeriod = useArchived ? archived.isWithinWeakSubjectivityPeriod : null;
189
+ const passedValidation =
190
+ archivedWithinWeakSubjectivityPeriod ?? isWithinWeakSubjectivityPeriodFromSummary(config, weakSubjectivity);
191
+ // Fast-fail stale checkpoints before deserializing the state or reserving pubkey-cache capacity.
192
+ if (!passedValidation && !ignoreWeakSubjectivityCheck) {
193
+ const clockEpoch = computeEpochAtSlot(getCurrentSlot(config, weakSubjectivity.genesisTime));
194
+ throw new StateInitializationError(
195
+ {code: StateInitializationErrorCode.STALE_CHECKPOINT},
196
+ `The selected state with epoch ${weakSubjectivity.checkpointEpoch} is not within weak subjectivity period of ${weakSubjectivity.period} epochs from the current epoch ${clockEpoch}. Please verify your checkpoint source`
197
+ );
198
+ }
189
199
  // DB-selected anchors need no persistence, including at slot zero.
190
200
  const shouldPersist = isFinalized && !useArchived;
191
201
  return {
@@ -195,15 +205,6 @@ function prepareCheckpointInitialization(
195
205
  validate(state) {
196
206
  // A supplied checkpoint must match even when the period check is ignored.
197
207
  if (expectedCheckpoint !== null) assertStateMatchesCheckpoint(state, expectedCheckpoint);
198
- const passedValidation =
199
- archivedWithinWeakSubjectivityPeriod ?? isWithinWeakSubjectivityPeriodFromSummary(config, weakSubjectivity);
200
- if (!passedValidation && !ignoreWeakSubjectivityCheck) {
201
- const clockEpoch = computeEpochAtSlot(getCurrentSlot(config, weakSubjectivity.genesisTime));
202
- throw new StateInitializationError(
203
- {code: StateInitializationErrorCode.STALE_CHECKPOINT},
204
- `The selected state with epoch ${weakSubjectivity.checkpointEpoch} is not within weak subjectivity period of ${weakSubjectivity.period} epochs from the current epoch ${clockEpoch}. Please verify your checkpoint source`
205
- );
206
- }
207
208
  assertAnchorStateForkMatchesConfig(config, state);
208
209
  if (isFinalized) {
209
210
  const source = useArchived ? "db" : "checkpoint";
@@ -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);