@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.
- package/.git-data.json +1 -1
- package/lib/cmds/beacon/handler.d.ts +1 -0
- package/lib/cmds/beacon/handler.d.ts.map +1 -1
- package/lib/cmds/beacon/handler.js +7 -6
- package/lib/cmds/beacon/handler.js.map +1 -1
- package/lib/cmds/beacon/initBeaconState.d.ts +2 -2
- package/lib/cmds/beacon/initBeaconState.d.ts.map +1 -1
- package/lib/cmds/beacon/initBeaconState.js +21 -9
- package/lib/cmds/beacon/initBeaconState.js.map +1 -1
- package/lib/cmds/beacon/options.d.ts +1 -1
- package/lib/cmds/beacon/options.d.ts.map +1 -1
- package/lib/cmds/beacon/options.js +6 -5
- package/lib/cmds/beacon/options.js.map +1 -1
- package/lib/cmds/beacon/paths.d.ts +4 -0
- package/lib/cmds/beacon/paths.d.ts.map +1 -1
- package/lib/cmds/beacon/paths.js +3 -0
- package/lib/cmds/beacon/paths.js.map +1 -1
- package/lib/cmds/beacon/pubkeysFile.d.ts +10 -0
- package/lib/cmds/beacon/pubkeysFile.d.ts.map +1 -0
- package/lib/cmds/beacon/pubkeysFile.js +39 -0
- package/lib/cmds/beacon/pubkeysFile.js.map +1 -0
- package/lib/cmds/beacon/stateInitialization/checkpointState.js +2 -2
- package/lib/cmds/beacon/stateInitialization/checkpointState.js.map +1 -1
- package/lib/cmds/beacon/stateInitialization/genesisState.d.ts +1 -1
- package/lib/cmds/beacon/stateInitialization/genesisState.d.ts.map +1 -1
- package/lib/cmds/beacon/stateInitialization/genesisState.js +2 -2
- package/lib/cmds/beacon/stateInitialization/genesisState.js.map +1 -1
- package/lib/cmds/beacon/stateInitialization/prepareStateInitialization.d.ts +1 -1
- package/lib/cmds/beacon/stateInitialization/prepareStateInitialization.d.ts.map +1 -1
- package/lib/cmds/beacon/stateInitialization/prepareStateInitialization.js +3 -6
- package/lib/cmds/beacon/stateInitialization/prepareStateInitialization.js.map +1 -1
- package/lib/cmds/beacon/stateInitialization/types.d.ts +1 -1
- package/lib/cmds/beacon/stateInitialization/types.d.ts.map +1 -1
- package/lib/cmds/dev/handler.d.ts.map +1 -1
- package/lib/cmds/dev/handler.js +3 -1
- package/lib/cmds/dev/handler.js.map +1 -1
- package/lib/networks/index.d.ts.map +1 -1
- package/lib/networks/index.js +5 -0
- package/lib/networks/index.js.map +1 -1
- package/package.json +14 -14
- package/src/cmds/beacon/handler.ts +7 -6
- package/src/cmds/beacon/initBeaconState.ts +28 -8
- package/src/cmds/beacon/options.ts +8 -7
- package/src/cmds/beacon/paths.ts +5 -0
- package/src/cmds/beacon/pubkeysFile.ts +50 -0
- package/src/cmds/beacon/stateInitialization/checkpointState.ts +2 -2
- package/src/cmds/beacon/stateInitialization/genesisState.ts +3 -3
- package/src/cmds/beacon/stateInitialization/prepareStateInitialization.ts +4 -6
- package/src/cmds/beacon/stateInitialization/types.ts +0 -1
- package/src/cmds/dev/handler.ts +3 -1
- package/src/networks/index.ts +9 -0
package/.git-data.json
CHANGED
|
@@ -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;
|
|
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
|
-
|
|
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":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAC,iBAAiB,EAAC,MAAM,SAAS,CAAC;AAE1C,OAAO,EAAC,WAAW,EAAC,MAAM,+BAA+B,CAAC;AAC1D,OAAO,EAAC,MAAM,EAAC,MAAM,mCAAmC,CAAC;AACzD,OAAO,EAAC,QAAQ,EAAE,UAAU,EAAC,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAAC,iBAAiB,EAAC,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAa,aAAa,EAAC,MAAM,uBAAuB,CAAC;AAChE,OAAO,EAAC,aAAa,EAAE,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAC,YAAY,EAAE,UAAU,EAAE,WAAW,EAAC,MAAM,iBAAiB,CAAC;AAEtE,OAAO,EAAC,iBAAiB,EAAE,uBAAuB,EAAC,MAAM,uBAAuB,CAAC;AACjF,OAAO,EAAC,mBAAmB,EAAE,kBAAkB,EAAE,aAAa,EAAC,MAAM,yBAAyB,CAAC;AAC/F,OAAO,EAAa,mBAAmB,EAAC,MAAM,wBAAwB,CAAC;AAEvE,OAAO,EACL,gBAAgB,EAChB,KAAK,EACL,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAC,cAAc,EAAC,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAC,oBAAoB,EAAC,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAAC,cAAc,EAAC,MAAM,YAAY,CAAC;
|
|
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;
|
|
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 {
|
|
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
|
-
|
|
36
|
-
|
|
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 },
|
|
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
|
-
|
|
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,
|
|
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,
|
|
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":"AACA,OAAO,EAAiB,iBAAiB,EAAE,aAAa,EAAC,MAAM,wBAAwB,CAAC;AACxF,OAAO,EAAU,UAAU,EAAC,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAc,kBAAkB,EAAC,MAAM,YAAY,CAAC;AA4B3D,MAAM,CAAC,MAAM,kBAAkB,GAAuC;IACpE,
|
|
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;
|
|
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"}
|
package/lib/cmds/beacon/paths.js
CHANGED
|
@@ -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;
|
|
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"
|
|
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,
|
|
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
|
|
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 },
|
|
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":"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,
|
|
1
|
+
{"version":3,"file":"genesisState.js","sourceRoot":"","sources":["../../../../src/cmds/beacon/stateInitialization/genesisState.ts"],"names":[],"mappings":"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"}
|
|
@@ -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
|
|
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":"
|
|
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
|
|
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
|
-
|
|
50
|
-
if (stateInit !== null)
|
|
51
|
-
return stateInit;
|
|
48
|
+
return prepareUnfinalizedCheckpointInitialization(options, archived, context);
|
|
52
49
|
}
|
|
53
|
-
return
|
|
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;
|
|
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" | "
|
|
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,
|
|
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,
|
|
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"}
|
package/lib/cmds/dev/handler.js
CHANGED
|
@@ -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)
|
|
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":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAC,MAAM,EAAC,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAC,SAAS,EAAC,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAC,OAAO,EAAE,KAAK,EAAC,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAC,uBAAuB,EAAC,MAAM,8BAA8B,CAAC;AAErE,OAAO,EAAC,KAAK,EAAE,kBAAkB,EAAC,MAAM,qBAAqB,CAAC;AAC9D,OAAO,EAAC,aAAa,EAAC,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAC,cAAc,EAAC,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAC,gBAAgB,EAAC,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAC,iBAAiB,EAAC,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAC,iBAAiB,EAAC,MAAM,YAAY,CAAC;AAG7C;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAA2B;IAC1D,MAAM,EAAC,MAAM,EAAC,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;IAE/C,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1B,MAAM,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAC/E,OAAO;IACT,CAAC;IAED,2BAA2B;IAC3B,MAAM,OAAO,GAAG,KAAK,CAAC;IACtB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;QAC7C,MAAM,KAAK,CAAC,0CAA0C,IAAI,CAAC,OAAO,uBAAuB,CAAC,CAAC;IAC7F,CAAC;IAED,6FAA6F;IAC7F,qDAAqD;IACrD,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC
|
|
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,
|
|
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"}
|
package/lib/networks/index.js
CHANGED
|
@@ -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.
|
|
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.
|
|
72
|
-
"@lodestar/beacon-node": "^1.50.0-dev.
|
|
73
|
-
"@lodestar/builder": "^1.50.0-dev.
|
|
74
|
-
"@lodestar/config": "^1.50.0-dev.
|
|
75
|
-
"@lodestar/db": "^1.50.0-dev.
|
|
76
|
-
"@lodestar/logger": "^1.50.0-dev.
|
|
77
|
-
"@lodestar/params": "^1.50.0-dev.
|
|
78
|
-
"@lodestar/state-transition": "^1.50.0-dev.
|
|
79
|
-
"@lodestar/types": "^1.50.0-dev.
|
|
80
|
-
"@lodestar/utils": "^1.50.0-dev.
|
|
81
|
-
"@lodestar/validator": "^1.50.0-dev.
|
|
71
|
+
"@lodestar/api": "^1.50.0-dev.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.
|
|
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": "
|
|
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
|
-
|
|
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
|
-
|
|
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(
|
|
71
|
+
return executeStateInitialization(
|
|
72
|
+
prepareArchivedStateInitialization(archived, context),
|
|
73
|
+
useNative,
|
|
74
|
+
pubkeysFile,
|
|
75
|
+
logger
|
|
76
|
+
);
|
|
69
77
|
}
|
|
70
78
|
}
|
|
71
|
-
|
|
72
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.",
|
package/src/cmds/beacon/paths.ts
CHANGED
|
@@ -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"
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
63
|
-
if (stateInit !== null) return stateInit;
|
|
61
|
+
return prepareUnfinalizedCheckpointInitialization(options, archived, context);
|
|
64
62
|
}
|
|
65
|
-
return
|
|
63
|
+
return null;
|
|
66
64
|
}
|
package/src/cmds/dev/handler.ts
CHANGED
|
@@ -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)
|
|
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);
|
package/src/networks/index.ts
CHANGED
|
@@ -182,11 +182,20 @@ export async function fetchWeakSubjectivityStateBytes(
|
|
|
182
182
|
GET_STATE_LOG_INTERVAL
|
|
183
183
|
);
|
|
184
184
|
const wsStateBytes = response.ssz();
|
|
185
|
+
const {version} = response.meta();
|
|
185
186
|
|
|
186
187
|
const wsSlot = getStateSlotFromBytes(wsStateBytes);
|
|
187
188
|
const logData = {stateId, size: formatBytes(wsStateBytes.length)};
|
|
188
189
|
logger.info("Download completed", typeof stateId === "number" ? logData : {...logData, slot: wsSlot});
|
|
189
190
|
|
|
191
|
+
const expectedFork = config.getForkName(wsSlot);
|
|
192
|
+
if (version !== expectedFork) {
|
|
193
|
+
throw new LodestarError(
|
|
194
|
+
{code: "CHECKPOINT_FORK_MISMATCH"},
|
|
195
|
+
`Checkpoint sync server returned ${version} state at slot ${wsSlot} but local config expects ${expectedFork}, verify --network or the chain config`
|
|
196
|
+
);
|
|
197
|
+
}
|
|
198
|
+
|
|
190
199
|
return {
|
|
191
200
|
stateBytes: new Uint8Array(wsStateBytes.buffer, wsStateBytes.byteOffset, wsStateBytes.byteLength),
|
|
192
201
|
expectedCheckpoint: wsCheckpoint,
|