@chainsafe/lodestar 1.50.0-dev.814fe8c461 → 1.50.0-dev.9c3f7bebe9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.git-data.json +1 -1
- package/lib/cmds/beacon/handler.d.ts.map +1 -1
- package/lib/cmds/beacon/handler.js +16 -3
- package/lib/cmds/beacon/handler.js.map +1 -1
- package/lib/cmds/beacon/initBeaconState.d.ts +7 -12
- package/lib/cmds/beacon/initBeaconState.d.ts.map +1 -1
- package/lib/cmds/beacon/initBeaconState.js +13 -36
- package/lib/cmds/beacon/initBeaconState.js.map +1 -1
- package/lib/cmds/beacon/options.d.ts +1 -0
- package/lib/cmds/beacon/options.d.ts.map +1 -1
- package/lib/cmds/beacon/options.js +5 -0
- package/lib/cmds/beacon/options.js.map +1 -1
- package/lib/cmds/beacon/stateInitialization/checkpointState.d.ts.map +1 -1
- package/lib/cmds/beacon/stateInitialization/checkpointState.js +6 -5
- 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 +6 -3
- package/lib/cmds/beacon/stateInitialization/prepareStateInitialization.js.map +1 -1
- package/lib/cmds/beacon/stateInitialization/types.d.ts +5 -5
- package/lib/cmds/beacon/stateInitialization/types.d.ts.map +1 -1
- package/lib/cmds/beacon/stateInitialization/validation.d.ts +2 -2
- package/lib/cmds/beacon/stateInitialization/validation.d.ts.map +1 -1
- package/lib/cmds/beacon/stateInitialization/validation.js.map +1 -1
- package/lib/networks/index.d.ts.map +1 -1
- package/lib/networks/index.js +0 -5
- package/lib/networks/index.js.map +1 -1
- package/package.json +14 -14
- package/src/cmds/beacon/handler.ts +16 -4
- package/src/cmds/beacon/initBeaconState.ts +16 -48
- package/src/cmds/beacon/options.ts +7 -0
- package/src/cmds/beacon/stateInitialization/checkpointState.ts +10 -6
- package/src/cmds/beacon/stateInitialization/genesisState.ts +3 -3
- package/src/cmds/beacon/stateInitialization/prepareStateInitialization.ts +6 -4
- package/src/cmds/beacon/stateInitialization/types.ts +5 -5
- package/src/cmds/beacon/stateInitialization/validation.ts +2 -2
- package/src/networks/index.ts +0 -9
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,
|
|
1
|
+
{"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/cmds/beacon/handler.ts"],"names":[],"mappings":"AAMA,OAAO,EAAC,eAAe,EAAqB,MAAM,kBAAkB,CAAC;AAErE,OAAO,EAAC,UAAU,EAAgB,MAAM,uBAAuB,CAAC;AAOhE,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,CA8IhF;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"}
|
|
@@ -3,9 +3,11 @@ import { getHeapStatistics } from "node:v8";
|
|
|
3
3
|
import { pubkeyCache } from "@chainsafe/lodestar-z/pubkeys";
|
|
4
4
|
import { hasher } from "@chainsafe/persistent-merkle-tree";
|
|
5
5
|
import { BeaconDb, BeaconNode } from "@lodestar/beacon-node";
|
|
6
|
+
import { createBeaconConfig } from "@lodestar/config";
|
|
6
7
|
import { LevelDbController } from "@lodestar/db/controller/level";
|
|
7
8
|
import { getNodeLogger } from "@lodestar/logger/node";
|
|
8
|
-
import { ACTIVE_PRESET, PresetName } from "@lodestar/params";
|
|
9
|
+
import { ACTIVE_PRESET, MAX_PENDING_DEPOSITS_PER_EPOCH, PresetName, SLOTS_PER_EPOCH } from "@lodestar/params";
|
|
10
|
+
import { createBeaconStateView } from "@lodestar/state-transition";
|
|
9
11
|
import { ErrorAborted, bytesToInt, formatBytes } from "@lodestar/utils";
|
|
10
12
|
import { BeaconNodeOptions, getBeaconConfigFromArgs } from "../../config/index.js";
|
|
11
13
|
import { getNetworkBootnodes, isKnownNetworkName, readBootnodes } from "../../networks/index.js";
|
|
@@ -51,7 +53,18 @@ export async function beaconHandler(args) {
|
|
|
51
53
|
logger.info("Connected to LevelDB database", { path: options.db.name });
|
|
52
54
|
// BeaconNode setup
|
|
53
55
|
try {
|
|
54
|
-
const { anchorState,
|
|
56
|
+
const { anchorState, stateBytes: anchorStateBytes, isFinalized, } = await initBeaconState(args, beaconPaths.dataDir, config, db, logger);
|
|
57
|
+
const beaconConfig = createBeaconConfig(config, anchorState.genesisValidatorsRoot);
|
|
58
|
+
// Reserve 3 months of worst-case registry growth (MAX_PENDING_DEPOSITS_PER_EPOCH per epoch),
|
|
59
|
+
// over a year at organic rates, to avoid routine cache reallocations. Cache growth is protected
|
|
60
|
+
// by its native lock; if this headroom is exceeded, it grows by the same fixed step.
|
|
61
|
+
const headroomEpochs = (90 * 24 * 60 * 60) / (config.SECONDS_PER_SLOT * SLOTS_PER_EPOCH);
|
|
62
|
+
const pubkeyCacheHeadroom = MAX_PENDING_DEPOSITS_PER_EPOCH * Math.ceil(headroomEpochs);
|
|
63
|
+
pubkeyCache.ensureCapacity(anchorState.validators.length + pubkeyCacheHeadroom);
|
|
64
|
+
pubkeyCache.syncPubkeys(anchorState.validators.getAllReadonlyValues());
|
|
65
|
+
const anchorStateView = args["chain.nativeStateView"]
|
|
66
|
+
? createBeaconStateView({ useNative: true, stateBytes: anchorStateBytes })
|
|
67
|
+
: createBeaconStateView({ useNative: false, anchorState, config: beaconConfig, pubkeyCache });
|
|
55
68
|
const node = await BeaconNode.init({
|
|
56
69
|
opts: options,
|
|
57
70
|
config: beaconConfig,
|
|
@@ -63,7 +76,7 @@ export async function beaconHandler(args) {
|
|
|
63
76
|
dataDir: beaconPaths.dataDir,
|
|
64
77
|
dataColumnDir: beaconPaths.dataColumnDir,
|
|
65
78
|
peerStoreDir: beaconPaths.peerStoreDir,
|
|
66
|
-
anchorState,
|
|
79
|
+
anchorState: anchorStateView,
|
|
67
80
|
isAnchorStateFinalized: isFinalized,
|
|
68
81
|
});
|
|
69
82
|
// dev debug option to have access to the BN instance
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/cmds/beacon/handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,13 @@
|
|
|
1
1
|
import { IBeaconDb } from "@lodestar/beacon-node";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { ChainForkConfig } from "@lodestar/config";
|
|
3
|
+
import { BeaconStateAllForks } from "@lodestar/state-transition";
|
|
4
4
|
import { Logger } from "@lodestar/utils";
|
|
5
5
|
import { GlobalArgs } from "../../options/globalOptions.js";
|
|
6
6
|
import { BeaconArgs } from "./options.js";
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
7
|
+
/** Select serialized anchor bytes before constructing the state used for validation, persistence, and return. */
|
|
8
|
+
export declare function initBeaconState(args: BeaconArgs & GlobalArgs, dataDir: string, chainForkConfig: ChainForkConfig, db: IBeaconDb, logger: Logger): Promise<{
|
|
9
|
+
anchorState: BeaconStateAllForks;
|
|
10
|
+
stateBytes: Uint8Array;
|
|
10
11
|
isFinalized: boolean;
|
|
11
|
-
}
|
|
12
|
-
/**
|
|
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.
|
|
15
|
-
*/
|
|
16
|
-
export declare function initBeaconState(args: BeaconArgs & GlobalArgs, dataDir: string, chainForkConfig: ChainForkConfig, db: IBeaconDb, logger: Logger): Promise<InitBeaconStateResult>;
|
|
17
|
-
export {};
|
|
12
|
+
}>;
|
|
18
13
|
//# sourceMappingURL=initBeaconState.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initBeaconState.d.ts","sourceRoot":"","sources":["../../../src/cmds/beacon/initBeaconState.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"initBeaconState.d.ts","sourceRoot":"","sources":["../../../src/cmds/beacon/initBeaconState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,SAAS,EAAwB,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EACL,mBAAmB,EAIpB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAC,MAAM,EAAc,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAC,UAAU,EAAC,MAAM,gCAAgC,CAAC;AAC1D,OAAO,EAAC,UAAU,EAAC,MAAM,cAAc,CAAC;AAaxC,iHAAiH;AACjH,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;IAAC,WAAW,EAAE,mBAAmB,CAAC;IAAC,UAAU,EAAE,UAAU,CAAC;IAAC,WAAW,EAAE,OAAO,CAAA;CAAC,CAAC,CAgC3F"}
|
|
@@ -1,17 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { computeWeakSubjectivitySummaryFromStateBytes, createBeaconStateView, getValidatorCountFromStateBytes, isWithinWeakSubjectivityPeriodFromSummary, readBeaconStateBytesMetadata, } from "@lodestar/state-transition";
|
|
1
|
+
import { getStateTypeFromBytes } from "@lodestar/beacon-node";
|
|
2
|
+
import { computeWeakSubjectivitySummaryFromStateBytes, isWithinWeakSubjectivityPeriodFromSummary, readBeaconStateBytesMetadata, } from "@lodestar/state-transition";
|
|
4
3
|
import { formatBytes } from "@lodestar/utils";
|
|
5
4
|
import { StateInitializationError, StateInitializationErrorCode } from "./stateInitialization/errors.js";
|
|
6
|
-
import {
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* 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
|
-
*/
|
|
5
|
+
import { prepareArchivedStateInitialization, prepareCheckpointOrGenesisInitialization, } from "./stateInitialization/prepareStateInitialization.js";
|
|
6
|
+
/** Select serialized anchor bytes before constructing the state used for validation, persistence, and return. */
|
|
12
7
|
export async function initBeaconState(args, dataDir, chainForkConfig, db, logger) {
|
|
13
8
|
const options = args;
|
|
14
|
-
const useNative = options["chain.nativeStateView"] ?? false;
|
|
15
9
|
if (options.forceCheckpointSync &&
|
|
16
10
|
!(options.checkpointState || options.checkpointSyncUrl || options.unsafeCheckpointState)) {
|
|
17
11
|
throw new StateInitializationError({ code: StateInitializationErrorCode.INVALID_CHECKPOINT_SOURCE }, "Forced checkpoint sync without specifying a checkpointState, checkpointSyncUrl or unsafeCheckpointState");
|
|
@@ -30,18 +24,11 @@ export async function initBeaconState(args, dataDir, chainForkConfig, db, logger
|
|
|
30
24
|
options.unsafeCheckpointState ||
|
|
31
25
|
options.lastPersistedCheckpointState);
|
|
32
26
|
if (!options.forceCheckpointSync && (!hasCheckpointSource || archived.isWithinWeakSubjectivityPeriod)) {
|
|
33
|
-
return executeStateInitialization(prepareArchivedStateInitialization(archived, context)
|
|
27
|
+
return executeStateInitialization(prepareArchivedStateInitialization(archived, context));
|
|
34
28
|
}
|
|
35
29
|
}
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
// Without a usable checkpoint state, resume from the db as if no checkpoint source was set instead of genesis
|
|
39
|
-
stateInit =
|
|
40
|
-
archived !== null
|
|
41
|
-
? prepareArchivedStateInitialization(archived, context)
|
|
42
|
-
: await prepareGenesisInitialization(options, context);
|
|
43
|
-
}
|
|
44
|
-
return executeStateInitialization(stateInit, useNative);
|
|
30
|
+
const stateInit = await prepareCheckpointOrGenesisInitialization(options, archived, context);
|
|
31
|
+
return executeStateInitialization(stateInit);
|
|
45
32
|
}
|
|
46
33
|
/**
|
|
47
34
|
* Read the archived DB anchor without constructing a state. Retain its metadata, weak-subjectivity summary,
|
|
@@ -60,7 +47,7 @@ async function readLatestArchivedStateBytes({ chainForkConfig, db, logger, }) {
|
|
|
60
47
|
}
|
|
61
48
|
const weakSubjectivity = computeWeakSubjectivitySummaryFromStateBytes(chainForkConfig, stateBytes, metadata);
|
|
62
49
|
if (weakSubjectivity === null) {
|
|
63
|
-
throw new StateInitializationError({ code: StateInitializationErrorCode.MALFORMED_STATE_BYTES },
|
|
50
|
+
throw new StateInitializationError({ code: StateInitializationErrorCode.MALFORMED_STATE_BYTES }, "Cannot extract weak subjectivity summary from archived state bytes");
|
|
64
51
|
}
|
|
65
52
|
return {
|
|
66
53
|
stateBytes,
|
|
@@ -73,22 +60,12 @@ async function readLatestArchivedStateBytes({ chainForkConfig, db, logger, }) {
|
|
|
73
60
|
* Shared completion template for all sources: construct only the selected state, exactly once.
|
|
74
61
|
* Validate before persistence, and log success only after any required writes succeed.
|
|
75
62
|
*/
|
|
76
|
-
async function executeStateInitialization(stateInit
|
|
77
|
-
const
|
|
78
|
-
const
|
|
79
|
-
if (validatorCount === null) {
|
|
80
|
-
throw new StateInitializationError({ code: StateInitializationErrorCode.MALFORMED_STATE_BYTES }, "Cannot read validator count from selected state bytes");
|
|
81
|
-
}
|
|
82
|
-
// Reserve 3 months of worst-case registry growth (MAX_PENDING_DEPOSITS_PER_EPOCH per epoch),
|
|
83
|
-
// over a year at organic rates, to avoid routine cache reallocations. Cache growth is protected
|
|
84
|
-
// by its native lock; if this headroom is exceeded, it grows by the same fixed step.
|
|
85
|
-
// The view syncs pubkeys during construction, so capacity must be reserved first.
|
|
86
|
-
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 anchorState = createBeaconStateView({ useNative, config, stateBytes });
|
|
63
|
+
async function executeStateInitialization(stateInit) {
|
|
64
|
+
const stateType = getStateTypeFromBytes(stateInit.config, stateInit.stateBytes);
|
|
65
|
+
const anchorState = stateType.deserializeToViewDU(stateInit.stateBytes);
|
|
89
66
|
stateInit.validate(anchorState);
|
|
90
|
-
await stateInit.persist?.(anchorState, stateBytes);
|
|
67
|
+
await stateInit.persist?.(anchorState, stateInit.stateBytes);
|
|
91
68
|
stateInit.log(anchorState);
|
|
92
|
-
return { anchorState,
|
|
69
|
+
return { anchorState, stateBytes: stateInit.stateBytes, isFinalized: stateInit.isFinalized };
|
|
93
70
|
}
|
|
94
71
|
//# sourceMappingURL=initBeaconState.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initBeaconState.js","sourceRoot":"","sources":["../../../src/cmds/beacon/initBeaconState.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"initBeaconState.js","sourceRoot":"","sources":["../../../src/cmds/beacon/initBeaconState.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ 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;
|
|
6
7
|
genesisStateFile?: string;
|
|
7
8
|
configFile?: string;
|
|
8
9
|
bootnodesFile?: string;
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../../src/cmds/beacon/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,iBAAiB,EAAE,mBAAmB,EAAC,MAAM,iBAAiB,CAAC;AACvE,OAAO,EAAC,cAAc,EAAmC,MAAM,wBAAwB,CAAC;AACxF,OAAO,EAAC,OAAO,EAAa,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAC,WAAW,EAAqB,MAAM,YAAY,CAAC;AAE3D,KAAK,eAAe,GAAG;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,4BAA4B,CAAC,EAAE,OAAO,CAAC;IACvC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,2BAA2B,CAAC,EAAE,MAAM,CAAC;IACrC,sCAAsC,CAAC,EAAE,MAAM,CAAC;IAChD,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IACjC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC,CAAC;AAEF,eAAO,MAAM,kBAAkB,EAAE,iBAAiB,CAAC,eAAe,CAmJjE,CAAC;AAEF,KAAK,OAAO,GAAG;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf,CAAC;AAkDF,MAAM,MAAM,UAAU,GAAG,eAAe,GAAG,OAAO,GAAG,WAAW,GAAG,cAAc,GAAG,OAAO,CAAC;AAE5F,eAAO,MAAM,aAAa,EAAE;IAAC,CAAC,CAAC,EAAE,MAAM,GAAG,mBAAmB,CAAA;CAM5D,CAAC"}
|
|
@@ -2,6 +2,11 @@ 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
|
+
},
|
|
5
10
|
genesisStateFile: {
|
|
6
11
|
description: "Path or URL to download a genesis state file in ssz-encoded format",
|
|
7
12
|
type: "string",
|
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../../src/cmds/beacon/options.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"checkpointState.d.ts","sourceRoot":"","sources":["../../../../src/cmds/beacon/stateInitialization/checkpointState.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"checkpointState.d.ts","sourceRoot":"","sources":["../../../../src/cmds/beacon/stateInitialization/checkpointState.ts"],"names":[],"mappings":"AAmBA,OAAO,EACL,kBAAkB,EAGlB,mBAAmB,EACnB,0BAA0B,EAC1B,uBAAuB,EACxB,MAAM,YAAY,CAAC;AAGpB,KAAK,iBAAiB,GAAG,IAAI,CAC3B,0BAA0B,EAC1B,eAAe,GAAG,qBAAqB,GAAG,6BAA6B,CACxE,CAAC;AAEF,wBAAsB,mCAAmC,CACvD,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,iBAAiB,EAC1B,QAAQ,EAAE,kBAAkB,GAAG,IAAI,EACnC,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,mBAAmB,CAAC,CAmB9B;AAED,wBAAsB,kCAAkC,CACtD,iBAAiB,EAAE,MAAM,EACzB,OAAO,EAAE,iBAAiB,EAC1B,QAAQ,EAAE,kBAAkB,GAAG,IAAI,EACnC,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,mBAAmB,CAAC,CAuB9B;AAED,wBAAsB,0CAA0C,CAC9D,OAAO,EAAE,iBAAiB,GACxB,IAAI,CACF,0BAA0B,EAC1B,8BAA8B,GAAG,uBAAuB,GAAG,sCAAsC,CAClG,EACH,QAAQ,EAAE,kBAAkB,GAAG,IAAI,EACnC,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAuCrC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { DbCPStateDatastore, FileCPStateDatastore, persistAnchorState } from "@lodestar/beacon-node";
|
|
2
2
|
import { createBeaconConfig } from "@lodestar/config";
|
|
3
|
-
import { computeEpochAtSlot, computeWeakSubjectivitySummaryFromStateBytes, getCurrentSlot, isWithinWeakSubjectivityPeriodFromSummary, readBeaconStateBytesMetadata, } from "@lodestar/state-transition";
|
|
3
|
+
import { computeAnchorCheckpoint, computeCheckpointEpochAtStateSlot, computeEpochAtSlot, computeWeakSubjectivitySummaryFromStateBytes, getCurrentSlot, getLatestBlockRoot, isWithinWeakSubjectivityPeriodFromSummary, readBeaconStateBytesMetadata, } from "@lodestar/state-transition";
|
|
4
4
|
import { ssz } from "@lodestar/types";
|
|
5
5
|
import { formatBytes, toRootHex } from "@lodestar/utils";
|
|
6
6
|
import { fetchWeakSubjectivityStateBytes, getCheckpointFromArg } from "../../../networks/index.js";
|
|
@@ -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}`);
|
|
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);
|
|
125
124
|
if (isFinalized) {
|
|
125
|
+
assertAnchorStateForkMatchesConfig(config, state);
|
|
126
126
|
const source = useArchived ? "db" : "checkpoint";
|
|
127
127
|
const logData = {
|
|
128
128
|
slot: state.slot,
|
|
@@ -142,7 +142,7 @@ function prepareCheckpointInitialization(candidate, archived, policy, { chainFor
|
|
|
142
142
|
},
|
|
143
143
|
persist: shouldPersist ? (state, bytes) => persistAnchorState(config, db, state, bytes) : null,
|
|
144
144
|
log(state) {
|
|
145
|
-
const { checkpoint } =
|
|
145
|
+
const { checkpoint } = computeAnchorCheckpoint(config, state);
|
|
146
146
|
logger.info("Initialized checkpoint state", {
|
|
147
147
|
source,
|
|
148
148
|
slot: state.slot,
|
|
@@ -157,7 +157,8 @@ function prepareCheckpointInitialization(candidate, archived, policy, { chainFor
|
|
|
157
157
|
};
|
|
158
158
|
}
|
|
159
159
|
function assertStateMatchesCheckpoint(state, checkpoint) {
|
|
160
|
-
const
|
|
160
|
+
const stateEpoch = computeCheckpointEpochAtStateSlot(state.slot);
|
|
161
|
+
const blockRoot = getLatestBlockRoot(state);
|
|
161
162
|
if (!ssz.Root.equals(blockRoot, checkpoint.root)) {
|
|
162
163
|
throw new StateInitializationError({ code: StateInitializationErrorCode.CHECKPOINT_ROOT_MISMATCH }, `Roots do not match. expected=${toRootHex(checkpoint.root)}, actual=${toRootHex(blockRoot)}`);
|
|
163
164
|
}
|
|
@@ -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">, { chainForkConfig, db, logger }: StatePreparationContext): Promise<StateInitialization>;
|
|
2
|
+
export declare function prepareGenesisInitialization(options: Pick<StateInitializationOptions, "genesisStateFile" | "network" | "forceGenesis">, { 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,CAAC,
|
|
1
|
+
{"version":3,"file":"genesisState.d.ts","sourceRoot":"","sources":["../../../../src/cmds/beacon/stateInitialization/genesisState.ts"],"names":[],"mappings":"AAaA,OAAO,EAAC,mBAAmB,EAAE,0BAA0B,EAAE,uBAAuB,EAAC,MAAM,YAAY,CAAC;AAGpG,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,IAAI,CAAC,0BAA0B,EAAE,kBAAkB,GAAG,SAAS,GAAG,cAAc,CAAC,EAC1F,EAAC,eAAe,EAAE,EAAE,EAAE,MAAM,EAAC,EAAE,uBAAuB,GACrD,OAAO,CAAC,mBAAmB,CAAC,CAiE9B"}
|
|
@@ -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 || options.forceGenesis) {
|
|
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");
|
|
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 prepareCheckpointOrGenesisInitialization(options: StateInitializationOptions, archived: ArchivedStateBytes | null, context: StatePreparationContext): Promise<StateInitialization>;
|
|
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":"AASA,OAAO,EAAC,kBAAkB,EAAE,mBAAmB,EAAE,0BAA0B,EAAE,uBAAuB,EAAC,MAAM,YAAY,CAAC;AAGxH,wBAAgB,kCAAkC,CAChD,EAAC,UAAU,EAAE,QAAQ,EAAE,8BAA8B,EAAC,EAAE,kBAAkB,EAC1E,EAAC,eAAe,EAAE,MAAM,EAAC,EAAE,uBAAuB,GACjD,mBAAmB,CAgCrB;AAED,wBAAsB,wCAAwC,CAC5D,OAAO,EAAE,0BAA0B,EACnC,QAAQ,EAAE,kBAAkB,GAAG,IAAI,EACnC,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,mBAAmB,CAAC,CAY9B"}
|
|
@@ -2,6 +2,7 @@ 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";
|
|
5
6
|
import { assertAnchorStateForkMatchesConfig } from "./validation.js";
|
|
6
7
|
export function prepareArchivedStateInitialization({ stateBytes, metadata, isWithinWeakSubjectivityPeriod }, { chainForkConfig, logger }) {
|
|
7
8
|
const config = createBeaconConfig(chainForkConfig, metadata.genesisValidatorsRoot);
|
|
@@ -37,7 +38,7 @@ export function prepareArchivedStateInitialization({ stateBytes, metadata, isWit
|
|
|
37
38
|
},
|
|
38
39
|
};
|
|
39
40
|
}
|
|
40
|
-
export async function
|
|
41
|
+
export async function prepareCheckpointOrGenesisInitialization(options, archived, context) {
|
|
41
42
|
if (options.checkpointState) {
|
|
42
43
|
return prepareCheckpointFileInitialization(options.checkpointState, options, archived, context);
|
|
43
44
|
}
|
|
@@ -45,8 +46,10 @@ export async function prepareCheckpointSourceInitialization(options, archived, c
|
|
|
45
46
|
return prepareCheckpointApiInitialization(options.checkpointSyncUrl, options, archived, context);
|
|
46
47
|
}
|
|
47
48
|
if (options.lastPersistedCheckpointState || options.unsafeCheckpointState) {
|
|
48
|
-
|
|
49
|
+
const stateInit = await prepareUnfinalizedCheckpointInitialization(options, archived, context);
|
|
50
|
+
if (stateInit !== null)
|
|
51
|
+
return stateInit;
|
|
49
52
|
}
|
|
50
|
-
return
|
|
53
|
+
return prepareGenesisInitialization(options, context);
|
|
51
54
|
}
|
|
52
55
|
//# 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;AAC9B,OAAO,EAAC,4BAA4B,EAAC,MAAM,mBAAmB,CAAC;AAE/D,OAAO,EAAC,kCAAkC,EAAC,MAAM,iBAAiB,CAAC;AAEnE,MAAM,UAAU,kCAAkC,CAChD,EAAC,UAAU,EAAE,QAAQ,EAAE,8BAA8B,EAAqB,EAC1E,EAAC,eAAe,EAAE,MAAM,EAA0B;IAElD,MAAM,MAAM,GAAG,kBAAkB,CAAC,eAAe,EAAE,QAAQ,CAAC,qBAAqB,CAAC,CAAC;IACnF,OAAO;QACL,UAAU;QACV,MAAM;QACN,WAAW,EAAE,IAAI;QACjB,QAAQ,CAAC,KAAK;YACZ,kCAAkC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAClD,MAAM,OAAO,GAAG;gBACd,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,KAAK,EAAE,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC;gBACrC,SAAS,EAAE,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC;gBACzC,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;gBAC1C,8BAA8B;aAC/B,CAAC;YACF,IAAI,8BAA8B,EAAE,CAAC;gBACnC,MAAM,CAAC,IAAI,CAAC,2CAA2C,EAAE,OAAO,CAAC,CAAC;YACpE,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,CAAC,qEAAqE,EAAE,OAAO,CAAC,CAAC;gBAC5F,MAAM,CAAC,IAAI,CAAC,+EAA+E,CAAC,CAAC;YAC/F,CAAC;QACH,CAAC;QACD,OAAO,EAAE,IAAI;QACb,GAAG,CAAC,KAAK;YACP,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE;gBACvC,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,KAAK,EAAE,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC;gBACrC,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;gBAC1C,WAAW,EAAE,IAAI;aAClB,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wCAAwC,CAC5D,OAAmC,EACnC,QAAmC,EACnC,OAAgC;IAEhC,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;QAC5B,OAAO,mCAAmC,CAAC,OAAO,CAAC,eAAe,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAClG,CAAC;IACD,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;QAC9B,OAAO,kCAAkC,CAAC,OAAO,CAAC,iBAAiB,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACnG,CAAC;IACD,IAAI,OAAO,CAAC,4BAA4B,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC;QAC1E,MAAM,SAAS,GAAG,MAAM,0CAA0C,CAAC,OAAO,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC/F,IAAI,SAAS,KAAK,IAAI;YAAE,OAAO,SAAS,CAAC;IAC3C,CAAC;IACD,OAAO,4BAA4B,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACxD,CAAC"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { IBeaconDb } from "@lodestar/beacon-node";
|
|
2
2
|
import { BeaconConfig, ChainForkConfig } from "@lodestar/config";
|
|
3
|
-
import {
|
|
3
|
+
import { BeaconStateAllForks, StateBytesMetadata, WeakSubjectivitySummary } from "@lodestar/state-transition";
|
|
4
4
|
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" | "forceGenesis" | "network" | "chain.nHistoricalStatesFileDataStore">;
|
|
9
9
|
export type StatePreparationContext = {
|
|
10
10
|
chainForkConfig: ChainForkConfig;
|
|
11
11
|
db: IBeaconDb;
|
|
@@ -33,8 +33,8 @@ export type StateInitialization = {
|
|
|
33
33
|
stateBytes: Uint8Array;
|
|
34
34
|
config: BeaconConfig;
|
|
35
35
|
isFinalized: boolean;
|
|
36
|
-
validate: (state:
|
|
37
|
-
persist: ((state:
|
|
38
|
-
log: (state:
|
|
36
|
+
validate: (state: BeaconStateAllForks) => void;
|
|
37
|
+
persist: ((state: BeaconStateAllForks, stateBytes: Uint8Array) => Promise<void>) | null;
|
|
38
|
+
log: (state: BeaconStateAllForks) => void;
|
|
39
39
|
};
|
|
40
40
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -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,
|
|
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,mBAAmB,EAAE,kBAAkB,EAAE,uBAAuB,EAAC,MAAM,4BAA4B,CAAC;AAC5G,OAAO,EAAC,UAAU,EAAC,MAAM,wBAAwB,CAAC;AAClD,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAC,UAAU,EAAC,MAAM,mCAAmC,CAAC;AAC7D,OAAO,EAAC,UAAU,EAAC,MAAM,eAAe,CAAC;AAEzC,MAAM,MAAM,0BAA0B,GAAG,IAAI,CAC3C,UAAU,GAAG,UAAU,EACrB,iBAAiB,GACjB,mBAAmB,GACnB,uBAAuB,GACvB,8BAA8B,GAC9B,kBAAkB,GAClB,eAAe,GACf,qBAAqB,GACrB,6BAA6B,GAC7B,cAAc,GACd,SAAS,GACT,sCAAsC,CACzC,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,mBAAmB,KAAK,IAAI,CAAC;IAC/C,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,mBAAmB,EAAE,UAAU,EAAE,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;IACxF,GAAG,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,CAAC;CAC3C,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { ChainForkConfig } from "@lodestar/config";
|
|
2
|
-
import {
|
|
3
|
-
export declare function assertAnchorStateForkMatchesConfig(config: ChainForkConfig, anchorState:
|
|
2
|
+
import { BeaconStateAllForks } from "@lodestar/state-transition";
|
|
3
|
+
export declare function assertAnchorStateForkMatchesConfig(config: ChainForkConfig, anchorState: BeaconStateAllForks): void;
|
|
4
4
|
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../../src/cmds/beacon/stateInitialization/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../../../src/cmds/beacon/stateInitialization/validation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAC,mBAAmB,EAA0B,MAAM,4BAA4B,CAAC;AAIxF,wBAAgB,kCAAkC,CAAC,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE,mBAAmB,GAAG,IAAI,CAUlH"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../../src/cmds/beacon/stateInitialization/validation.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../../../src/cmds/beacon/stateInitialization/validation.ts"],"names":[],"mappings":"AACA,OAAO,EAAsB,uBAAuB,EAAC,MAAM,4BAA4B,CAAC;AACxF,OAAO,EAAC,KAAK,EAAC,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAC,wBAAwB,EAAE,4BAA4B,EAAC,MAAM,aAAa,CAAC;AAEnF,MAAM,UAAU,kCAAkC,CAAC,MAAuB,EAAE,WAAgC;IAC1G,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC,uBAAuB,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACzF,MAAM,mBAAmB,GAAG,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;IACxD,MAAM,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACzD,IAAI,SAAS,KAAK,mBAAmB,EAAE,CAAC;QACtC,MAAM,IAAI,wBAAwB,CAChC,EAAC,IAAI,EAAE,4BAA4B,CAAC,0BAA0B,EAAC,EAC/D,8BAA8B,SAAS,gCAAgC,mBAAmB,8DAA8D,CACzJ,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -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,CAyC1E;AAED,wBAAgB,oBAAoB,CAAC,aAAa,EAAE,MAAM,GAAG,UAAU,CAOtE"}
|
package/lib/networks/index.js
CHANGED
|
@@ -141,14 +141,9 @@ 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();
|
|
145
144
|
const wsSlot = getStateSlotFromBytes(wsStateBytes);
|
|
146
145
|
const logData = { stateId, size: formatBytes(wsStateBytes.length) };
|
|
147
146
|
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
|
-
}
|
|
152
147
|
return {
|
|
153
148
|
stateBytes: new Uint8Array(wsStateBytes.buffer, wsStateBytes.byteOffset, wsStateBytes.byteLength),
|
|
154
149
|
expectedCheckpoint: wsCheckpoint,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/networks/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAC,GAAG,EAAC,MAAM,gBAAgB,CAAC;AACnC,OAAO,EAAC,UAAU,EAAE,SAAS,EAAC,MAAM,eAAe,CAAC;AACpD,OAAO,EAAC,qBAAqB,EAAC,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAGjD,OAAO,EAAC,aAAa,EAAU,eAAe,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAC,MAAM,iBAAiB,CAAC;AACpG,OAAO,EAAC,kBAAkB,EAAC,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,GAAG,MAAM,UAAU,CAAC;AAChC,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAC;AAC1C,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,KAAK,MAAM,YAAY,CAAC;AACpC,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AACxC,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAC;AAChD,OAAO,KAAK,OAAO,MAAM,cAAc,CAAC;AAGxC,MAAM,CAAC,MAAM,YAAY,GAAkB;IACzC,SAAS;IACT,QAAQ;IACR,SAAS;IACT,OAAO;IACP,aAAa;IACb,QAAQ;IACR,UAAU;IAEV,0EAA0E;IAC1E,KAAK;CACN,CAAC;AAEF,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,OAAO,YAAY,CAAC,QAAQ,CAAC,OAAsB,CAAC,CAAC;AACvD,CAAC;AAOD,sEAAsE;AACtE,MAAM,sBAAsB,GAAG,EAAE,GAAG,IAAI,CAAC;AAEzC,MAAM,UAAU,cAAc,CAAC,OAAoB;IAOjD,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,SAAS;YACZ,OAAO,OAAO,CAAC;QACjB,KAAK,KAAK;YACR,OAAO,GAAG,CAAC;QACb,KAAK,QAAQ;YACX,OAAO,MAAM,CAAC;QAChB,KAAK,SAAS;YACZ,OAAO,OAAO,CAAC;QACjB,KAAK,OAAO;YACV,OAAO,KAAK,CAAC;QACf,KAAK,aAAa;YAChB,OAAO,WAAW,CAAC;QACrB,KAAK,QAAQ;YACX,OAAO,MAAM,CAAC;QAChB,KAAK,UAAU;YACb,OAAO,QAAQ,CAAC;QAClB;YACE,MAAM,KAAK,CAAC,0BAA0B,OAAO,EAAE,CAAC,CAAC;IACrD,CAAC;AACH,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,OAAoB;IACzD,OAAO,cAAc,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC;AAC7C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,OAAoB;IACpD,OAAO,cAAc,CAAC,OAAO,CAAC,CAAC,cAAc,CAAC;AAChD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAgC;IAClE,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,cAAc,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC;AAClD,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAoB;IACvD,MAAM,gBAAgB,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC;IAClE,IAAI,gBAAgB,KAAK,IAAI,EAAE,CAAC;QAC9B,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAC1C,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,8BAA8B,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;IAChF,CAAC;IACD,MAAM,aAAa,GAAG,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;IACvC,OAAO,kBAAkB,CAAC,aAAa,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,OAAoB;IAC5D,MAAM,SAAS,GAAG,CAAC,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC;IAExD,4BAA4B;IAC5B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,4BAA4B,EAAE,CAAC;QAC9C,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;YAC/C,SAAS,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;QAC9B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,oCAAqC,CAAW,CAAC,KAAK,EAAE,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,iBAAyB;IACrD,MAAM,aAAa,GAAG,EAAE,CAAC,YAAY,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;IAEjE,MAAM,SAAS,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;IACpD,KAAK,MAAM,MAAM,IAAI,SAAS,EAAE,CAAC;QAC/B,IAAI,CAAC;YACH,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACxB,CAAC;QAAC,OAAO,EAAE,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,wBAAwB,iBAAiB,UAAU,MAAM,EAAE,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,8BAA8B,iBAAiB,EAAE,CAAC,CAAC;IACrE,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,+BAA+B,CACnD,MAAuB,EACvB,MAAc,EACd,EAAC,iBAAiB,EAAE,aAAa,EAAsD;IAEvF,IAAI,CAAC;QACH,IAAI,YAA+B,CAAC;QACpC,IAAI,OAA2B,CAAC;QAEhC,MAAM,GAAG,GAAG,SAAS,CAAC,EAAC,OAAO,EAAE,iBAAiB,EAAC,EAAE,EAAC,MAAM,EAAC,CAAC,CAAC;QAC9D,IAAI,aAAa,EAAE,CAAC;YAClB,YAAY,GAAG,oBAAoB,CAAC,aAAa,CAAC,CAAC;YACnD,OAAO,GAAG,YAAY,CAAC,KAAK,GAAG,eAAe,CAAC;QACjD,CAAC;aAAM,CAAC;YACN,8EAA8E;YAC9E,OAAO,GAAG,WAAW,CAAC;YACtB,YAAY,GAAG,IAAI,CAAC;QACtB,CAAC;QAED,gEAAgE;QAChE,MAAM,eAAe,GAAG,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,EAAC,OAAO,EAAC,EAAE,EAAC,kBAAkB,EAAE,UAAU,CAAC,GAAG,EAAC,CAAC,CAAC;QAE9F,MAAM,QAAQ,GAAG,MAAM,eAAe,CACpC,eAAe,EACf,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC,EACzD,sBAAsB,CACvB,CAAC;QACF,MAAM,YAAY,GAAG,QAAQ,CAAC,GAAG,EAAE,CAAC;
|
|
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.9c3f7bebe9",
|
|
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.9c3f7bebe9",
|
|
72
|
+
"@lodestar/beacon-node": "^1.50.0-dev.9c3f7bebe9",
|
|
73
|
+
"@lodestar/builder": "^1.50.0-dev.9c3f7bebe9",
|
|
74
|
+
"@lodestar/config": "^1.50.0-dev.9c3f7bebe9",
|
|
75
|
+
"@lodestar/db": "^1.50.0-dev.9c3f7bebe9",
|
|
76
|
+
"@lodestar/logger": "^1.50.0-dev.9c3f7bebe9",
|
|
77
|
+
"@lodestar/params": "^1.50.0-dev.9c3f7bebe9",
|
|
78
|
+
"@lodestar/state-transition": "^1.50.0-dev.9c3f7bebe9",
|
|
79
|
+
"@lodestar/types": "^1.50.0-dev.9c3f7bebe9",
|
|
80
|
+
"@lodestar/utils": "^1.50.0-dev.9c3f7bebe9",
|
|
81
|
+
"@lodestar/validator": "^1.50.0-dev.9c3f7bebe9",
|
|
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.9c3f7bebe9",
|
|
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": "b6622aa0e5694b1b9bae9ff8c73324eb54745012"
|
|
112
112
|
}
|
|
@@ -4,10 +4,11 @@ import {SignableENR} from "@chainsafe/enr";
|
|
|
4
4
|
import {pubkeyCache} from "@chainsafe/lodestar-z/pubkeys";
|
|
5
5
|
import {hasher} from "@chainsafe/persistent-merkle-tree";
|
|
6
6
|
import {BeaconDb, BeaconNode} from "@lodestar/beacon-node";
|
|
7
|
-
import {ChainForkConfig} from "@lodestar/config";
|
|
7
|
+
import {ChainForkConfig, createBeaconConfig} from "@lodestar/config";
|
|
8
8
|
import {LevelDbController} from "@lodestar/db/controller/level";
|
|
9
9
|
import {LoggerNode, getNodeLogger} from "@lodestar/logger/node";
|
|
10
|
-
import {ACTIVE_PRESET, PresetName} from "@lodestar/params";
|
|
10
|
+
import {ACTIVE_PRESET, MAX_PENDING_DEPOSITS_PER_EPOCH, PresetName, SLOTS_PER_EPOCH} from "@lodestar/params";
|
|
11
|
+
import {createBeaconStateView} from "@lodestar/state-transition";
|
|
11
12
|
import {ErrorAborted, bytesToInt, formatBytes} from "@lodestar/utils";
|
|
12
13
|
import {ProcessShutdownCallback} from "@lodestar/validator";
|
|
13
14
|
import {BeaconNodeOptions, getBeaconConfigFromArgs} from "../../config/index.js";
|
|
@@ -76,9 +77,20 @@ export async function beaconHandler(args: BeaconArgs & GlobalArgs): Promise<void
|
|
|
76
77
|
try {
|
|
77
78
|
const {
|
|
78
79
|
anchorState,
|
|
79
|
-
|
|
80
|
+
stateBytes: anchorStateBytes,
|
|
80
81
|
isFinalized,
|
|
81
82
|
} = await initBeaconState(args, beaconPaths.dataDir, config, db, logger);
|
|
83
|
+
const beaconConfig = createBeaconConfig(config, anchorState.genesisValidatorsRoot);
|
|
84
|
+
// Reserve 3 months of worst-case registry growth (MAX_PENDING_DEPOSITS_PER_EPOCH per epoch),
|
|
85
|
+
// over a year at organic rates, to avoid routine cache reallocations. Cache growth is protected
|
|
86
|
+
// by its native lock; if this headroom is exceeded, it grows by the same fixed step.
|
|
87
|
+
const headroomEpochs = (90 * 24 * 60 * 60) / (config.SECONDS_PER_SLOT * SLOTS_PER_EPOCH);
|
|
88
|
+
const pubkeyCacheHeadroom = MAX_PENDING_DEPOSITS_PER_EPOCH * Math.ceil(headroomEpochs);
|
|
89
|
+
pubkeyCache.ensureCapacity(anchorState.validators.length + pubkeyCacheHeadroom);
|
|
90
|
+
pubkeyCache.syncPubkeys(anchorState.validators.getAllReadonlyValues());
|
|
91
|
+
const anchorStateView = args["chain.nativeStateView"]
|
|
92
|
+
? createBeaconStateView({useNative: true, stateBytes: anchorStateBytes})
|
|
93
|
+
: createBeaconStateView({useNative: false, anchorState, config: beaconConfig, pubkeyCache});
|
|
82
94
|
|
|
83
95
|
const node = await BeaconNode.init({
|
|
84
96
|
opts: options,
|
|
@@ -91,7 +103,7 @@ export async function beaconHandler(args: BeaconArgs & GlobalArgs): Promise<void
|
|
|
91
103
|
dataDir: beaconPaths.dataDir,
|
|
92
104
|
dataColumnDir: beaconPaths.dataColumnDir,
|
|
93
105
|
peerStoreDir: beaconPaths.peerStoreDir,
|
|
94
|
-
anchorState,
|
|
106
|
+
anchorState: anchorStateView,
|
|
95
107
|
isAnchorStateFinalized: isFinalized,
|
|
96
108
|
});
|
|
97
109
|
|
|
@@ -1,12 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {BeaconConfig, ChainForkConfig} from "@lodestar/config";
|
|
4
|
-
import {MAX_PENDING_DEPOSITS_PER_EPOCH, SLOTS_PER_EPOCH} from "@lodestar/params";
|
|
1
|
+
import {IBeaconDb, getStateTypeFromBytes} from "@lodestar/beacon-node";
|
|
2
|
+
import {ChainForkConfig} from "@lodestar/config";
|
|
5
3
|
import {
|
|
6
|
-
|
|
4
|
+
BeaconStateAllForks,
|
|
7
5
|
computeWeakSubjectivitySummaryFromStateBytes,
|
|
8
|
-
createBeaconStateView,
|
|
9
|
-
getValidatorCountFromStateBytes,
|
|
10
6
|
isWithinWeakSubjectivityPeriodFromSummary,
|
|
11
7
|
readBeaconStateBytesMetadata,
|
|
12
8
|
} from "@lodestar/state-transition";
|
|
@@ -14,10 +10,9 @@ import {Logger, formatBytes} from "@lodestar/utils";
|
|
|
14
10
|
import {GlobalArgs} from "../../options/globalOptions.js";
|
|
15
11
|
import {BeaconArgs} from "./options.js";
|
|
16
12
|
import {StateInitializationError, StateInitializationErrorCode} from "./stateInitialization/errors.js";
|
|
17
|
-
import {prepareGenesisInitialization} from "./stateInitialization/genesisState.js";
|
|
18
13
|
import {
|
|
19
14
|
prepareArchivedStateInitialization,
|
|
20
|
-
|
|
15
|
+
prepareCheckpointOrGenesisInitialization,
|
|
21
16
|
} from "./stateInitialization/prepareStateInitialization.js";
|
|
22
17
|
import {
|
|
23
18
|
ArchivedStateBytes,
|
|
@@ -26,21 +21,15 @@ import {
|
|
|
26
21
|
StatePreparationContext,
|
|
27
22
|
} from "./stateInitialization/types.js";
|
|
28
23
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* 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
|
-
*/
|
|
24
|
+
/** Select serialized anchor bytes before constructing the state used for validation, persistence, and return. */
|
|
35
25
|
export async function initBeaconState(
|
|
36
26
|
args: BeaconArgs & GlobalArgs,
|
|
37
27
|
dataDir: string,
|
|
38
28
|
chainForkConfig: ChainForkConfig,
|
|
39
29
|
db: IBeaconDb,
|
|
40
30
|
logger: Logger
|
|
41
|
-
): Promise<
|
|
31
|
+
): Promise<{anchorState: BeaconStateAllForks; stateBytes: Uint8Array; isFinalized: boolean}> {
|
|
42
32
|
const options: StateInitializationOptions = args;
|
|
43
|
-
const useNative = options["chain.nativeStateView"] ?? false;
|
|
44
33
|
if (
|
|
45
34
|
options.forceCheckpointSync &&
|
|
46
35
|
!(options.checkpointState || options.checkpointSyncUrl || options.unsafeCheckpointState)
|
|
@@ -66,18 +55,11 @@ export async function initBeaconState(
|
|
|
66
55
|
options.lastPersistedCheckpointState
|
|
67
56
|
);
|
|
68
57
|
if (!options.forceCheckpointSync && (!hasCheckpointSource || archived.isWithinWeakSubjectivityPeriod)) {
|
|
69
|
-
return executeStateInitialization(prepareArchivedStateInitialization(archived, context)
|
|
58
|
+
return executeStateInitialization(prepareArchivedStateInitialization(archived, context));
|
|
70
59
|
}
|
|
71
60
|
}
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
// Without a usable checkpoint state, resume from the db as if no checkpoint source was set instead of genesis
|
|
75
|
-
stateInit =
|
|
76
|
-
archived !== null
|
|
77
|
-
? prepareArchivedStateInitialization(archived, context)
|
|
78
|
-
: await prepareGenesisInitialization(options, context);
|
|
79
|
-
}
|
|
80
|
-
return executeStateInitialization(stateInit, useNative);
|
|
61
|
+
const stateInit = await prepareCheckpointOrGenesisInitialization(options, archived, context);
|
|
62
|
+
return executeStateInitialization(stateInit);
|
|
81
63
|
}
|
|
82
64
|
|
|
83
65
|
/**
|
|
@@ -105,7 +87,7 @@ async function readLatestArchivedStateBytes({
|
|
|
105
87
|
if (weakSubjectivity === null) {
|
|
106
88
|
throw new StateInitializationError(
|
|
107
89
|
{code: StateInitializationErrorCode.MALFORMED_STATE_BYTES},
|
|
108
|
-
|
|
90
|
+
"Cannot extract weak subjectivity summary from archived state bytes"
|
|
109
91
|
);
|
|
110
92
|
}
|
|
111
93
|
return {
|
|
@@ -121,26 +103,12 @@ async function readLatestArchivedStateBytes({
|
|
|
121
103
|
* Validate before persistence, and log success only after any required writes succeed.
|
|
122
104
|
*/
|
|
123
105
|
async function executeStateInitialization(
|
|
124
|
-
stateInit: StateInitialization
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
const
|
|
128
|
-
const validatorCount = getValidatorCountFromStateBytes(config, stateBytes);
|
|
129
|
-
if (validatorCount === null) {
|
|
130
|
-
throw new StateInitializationError(
|
|
131
|
-
{code: StateInitializationErrorCode.MALFORMED_STATE_BYTES},
|
|
132
|
-
"Cannot read validator count from selected state bytes"
|
|
133
|
-
);
|
|
134
|
-
}
|
|
135
|
-
// Reserve 3 months of worst-case registry growth (MAX_PENDING_DEPOSITS_PER_EPOCH per epoch),
|
|
136
|
-
// over a year at organic rates, to avoid routine cache reallocations. Cache growth is protected
|
|
137
|
-
// by its native lock; if this headroom is exceeded, it grows by the same fixed step.
|
|
138
|
-
// The view syncs pubkeys during construction, so capacity must be reserved first.
|
|
139
|
-
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));
|
|
141
|
-
const anchorState = createBeaconStateView({useNative, config, stateBytes});
|
|
106
|
+
stateInit: StateInitialization
|
|
107
|
+
): Promise<{anchorState: BeaconStateAllForks; stateBytes: Uint8Array; isFinalized: boolean}> {
|
|
108
|
+
const stateType = getStateTypeFromBytes(stateInit.config, stateInit.stateBytes);
|
|
109
|
+
const anchorState = stateType.deserializeToViewDU(stateInit.stateBytes);
|
|
142
110
|
stateInit.validate(anchorState);
|
|
143
|
-
await stateInit.persist?.(anchorState, stateBytes);
|
|
111
|
+
await stateInit.persist?.(anchorState, stateInit.stateBytes);
|
|
144
112
|
stateInit.log(anchorState);
|
|
145
|
-
return {anchorState,
|
|
113
|
+
return {anchorState, stateBytes: stateInit.stateBytes, isFinalized: stateInit.isFinalized};
|
|
146
114
|
}
|
|
@@ -4,6 +4,7 @@ import {LogArgs, logOptions} from "../../options/logOptions.js";
|
|
|
4
4
|
import {BeaconPaths, defaultBeaconPaths} from "./paths.js";
|
|
5
5
|
|
|
6
6
|
type BeaconExtraArgs = {
|
|
7
|
+
forceGenesis?: boolean;
|
|
7
8
|
genesisStateFile?: string;
|
|
8
9
|
configFile?: string;
|
|
9
10
|
bootnodesFile?: string;
|
|
@@ -29,6 +30,12 @@ type BeaconExtraArgs = {
|
|
|
29
30
|
};
|
|
30
31
|
|
|
31
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
|
+
|
|
32
39
|
genesisStateFile: {
|
|
33
40
|
description: "Path or URL to download a genesis state file in ssz-encoded format",
|
|
34
41
|
type: "string",
|
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import {DbCPStateDatastore, FileCPStateDatastore, persistAnchorState} from "@lodestar/beacon-node";
|
|
2
2
|
import {createBeaconConfig} from "@lodestar/config";
|
|
3
3
|
import {
|
|
4
|
-
|
|
4
|
+
BeaconStateAllForks,
|
|
5
|
+
computeAnchorCheckpoint,
|
|
6
|
+
computeCheckpointEpochAtStateSlot,
|
|
5
7
|
computeEpochAtSlot,
|
|
6
8
|
computeWeakSubjectivitySummaryFromStateBytes,
|
|
7
9
|
getCurrentSlot,
|
|
10
|
+
getLatestBlockRoot,
|
|
8
11
|
isWithinWeakSubjectivityPeriodFromSummary,
|
|
9
12
|
readBeaconStateBytesMetadata,
|
|
10
13
|
} from "@lodestar/state-transition";
|
|
@@ -178,7 +181,7 @@ function prepareCheckpointInitialization(
|
|
|
178
181
|
if (weakSubjectivity === null) {
|
|
179
182
|
throw new StateInitializationError(
|
|
180
183
|
{code: StateInitializationErrorCode.MALFORMED_STATE_BYTES},
|
|
181
|
-
`Cannot extract weak subjectivity summary from ${candidate.source}
|
|
184
|
+
`Cannot extract weak subjectivity summary from ${candidate.source}`
|
|
182
185
|
);
|
|
183
186
|
}
|
|
184
187
|
const expectedCheckpoint = useArchived ? null : candidate.expectedCheckpoint;
|
|
@@ -204,8 +207,8 @@ function prepareCheckpointInitialization(
|
|
|
204
207
|
`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
208
|
);
|
|
206
209
|
}
|
|
207
|
-
assertAnchorStateForkMatchesConfig(config, state);
|
|
208
210
|
if (isFinalized) {
|
|
211
|
+
assertAnchorStateForkMatchesConfig(config, state);
|
|
209
212
|
const source = useArchived ? "db" : "checkpoint";
|
|
210
213
|
const logData = {
|
|
211
214
|
slot: state.slot,
|
|
@@ -224,7 +227,7 @@ function prepareCheckpointInitialization(
|
|
|
224
227
|
},
|
|
225
228
|
persist: shouldPersist ? (state, bytes) => persistAnchorState(config, db, state, bytes) : null,
|
|
226
229
|
log(state) {
|
|
227
|
-
const {checkpoint} =
|
|
230
|
+
const {checkpoint} = computeAnchorCheckpoint(config, state);
|
|
228
231
|
logger.info("Initialized checkpoint state", {
|
|
229
232
|
source,
|
|
230
233
|
slot: state.slot,
|
|
@@ -239,8 +242,9 @@ function prepareCheckpointInitialization(
|
|
|
239
242
|
};
|
|
240
243
|
}
|
|
241
244
|
|
|
242
|
-
function assertStateMatchesCheckpoint(state:
|
|
243
|
-
const
|
|
245
|
+
function assertStateMatchesCheckpoint(state: BeaconStateAllForks, checkpoint: Checkpoint): void {
|
|
246
|
+
const stateEpoch = computeCheckpointEpochAtStateSlot(state.slot);
|
|
247
|
+
const blockRoot = getLatestBlockRoot(state);
|
|
244
248
|
if (!ssz.Root.equals(blockRoot, checkpoint.root)) {
|
|
245
249
|
throw new StateInitializationError(
|
|
246
250
|
{code: StateInitializationErrorCode.CHECKPOINT_ROOT_MISMATCH},
|
|
@@ -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" | "forceGenesis">,
|
|
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 || options.forceGenesis) {
|
|
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"
|
|
44
44
|
);
|
|
45
45
|
}
|
|
46
46
|
const config = createBeaconConfig(chainForkConfig, metadata.genesisValidatorsRoot);
|
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
prepareCheckpointFileInitialization,
|
|
7
7
|
prepareUnfinalizedCheckpointInitialization,
|
|
8
8
|
} from "./checkpointState.js";
|
|
9
|
+
import {prepareGenesisInitialization} from "./genesisState.js";
|
|
9
10
|
import {ArchivedStateBytes, StateInitialization, StateInitializationOptions, StatePreparationContext} from "./types.js";
|
|
10
11
|
import {assertAnchorStateForkMatchesConfig} from "./validation.js";
|
|
11
12
|
|
|
@@ -46,11 +47,11 @@ export function prepareArchivedStateInitialization(
|
|
|
46
47
|
};
|
|
47
48
|
}
|
|
48
49
|
|
|
49
|
-
export async function
|
|
50
|
+
export async function prepareCheckpointOrGenesisInitialization(
|
|
50
51
|
options: StateInitializationOptions,
|
|
51
52
|
archived: ArchivedStateBytes | null,
|
|
52
53
|
context: StatePreparationContext
|
|
53
|
-
): Promise<StateInitialization
|
|
54
|
+
): Promise<StateInitialization> {
|
|
54
55
|
if (options.checkpointState) {
|
|
55
56
|
return prepareCheckpointFileInitialization(options.checkpointState, options, archived, context);
|
|
56
57
|
}
|
|
@@ -58,7 +59,8 @@ export async function prepareCheckpointSourceInitialization(
|
|
|
58
59
|
return prepareCheckpointApiInitialization(options.checkpointSyncUrl, options, archived, context);
|
|
59
60
|
}
|
|
60
61
|
if (options.lastPersistedCheckpointState || options.unsafeCheckpointState) {
|
|
61
|
-
|
|
62
|
+
const stateInit = await prepareUnfinalizedCheckpointInitialization(options, archived, context);
|
|
63
|
+
if (stateInit !== null) return stateInit;
|
|
62
64
|
}
|
|
63
|
-
return
|
|
65
|
+
return prepareGenesisInitialization(options, context);
|
|
64
66
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {IBeaconDb} from "@lodestar/beacon-node";
|
|
2
2
|
import {BeaconConfig, ChainForkConfig} from "@lodestar/config";
|
|
3
|
-
import {
|
|
3
|
+
import {BeaconStateAllForks, StateBytesMetadata, WeakSubjectivitySummary} from "@lodestar/state-transition";
|
|
4
4
|
import {Checkpoint} from "@lodestar/types/phase0";
|
|
5
5
|
import {Logger} from "@lodestar/utils";
|
|
6
6
|
import {GlobalArgs} from "../../../options/globalOptions.js";
|
|
@@ -16,9 +16,9 @@ export type StateInitializationOptions = Pick<
|
|
|
16
16
|
| "wssCheckpoint"
|
|
17
17
|
| "forceCheckpointSync"
|
|
18
18
|
| "ignoreWeakSubjectivityCheck"
|
|
19
|
+
| "forceGenesis"
|
|
19
20
|
| "network"
|
|
20
21
|
| "chain.nHistoricalStatesFileDataStore"
|
|
21
|
-
| "chain.nativeStateView"
|
|
22
22
|
>;
|
|
23
23
|
|
|
24
24
|
export type StatePreparationContext = {
|
|
@@ -52,7 +52,7 @@ export type StateInitialization = {
|
|
|
52
52
|
stateBytes: Uint8Array;
|
|
53
53
|
config: BeaconConfig;
|
|
54
54
|
isFinalized: boolean;
|
|
55
|
-
validate: (state:
|
|
56
|
-
persist: ((state:
|
|
57
|
-
log: (state:
|
|
55
|
+
validate: (state: BeaconStateAllForks) => void;
|
|
56
|
+
persist: ((state: BeaconStateAllForks, stateBytes: Uint8Array) => Promise<void>) | null;
|
|
57
|
+
log: (state: BeaconStateAllForks) => void;
|
|
58
58
|
};
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import {ChainForkConfig} from "@lodestar/config";
|
|
2
|
-
import {
|
|
2
|
+
import {BeaconStateAllForks, computeStartSlotAtEpoch} from "@lodestar/state-transition";
|
|
3
3
|
import {toHex} from "@lodestar/utils";
|
|
4
4
|
import {StateInitializationError, StateInitializationErrorCode} from "./errors.js";
|
|
5
5
|
|
|
6
|
-
export function assertAnchorStateForkMatchesConfig(config: ChainForkConfig, anchorState:
|
|
6
|
+
export function assertAnchorStateForkMatchesConfig(config: ChainForkConfig, anchorState: BeaconStateAllForks): void {
|
|
7
7
|
const expectedFork = config.getForkInfo(computeStartSlotAtEpoch(anchorState.fork.epoch));
|
|
8
8
|
const expectedForkVersion = toHex(expectedFork.version);
|
|
9
9
|
const stateFork = toHex(anchorState.fork.currentVersion);
|
package/src/networks/index.ts
CHANGED
|
@@ -182,20 +182,11 @@ export async function fetchWeakSubjectivityStateBytes(
|
|
|
182
182
|
GET_STATE_LOG_INTERVAL
|
|
183
183
|
);
|
|
184
184
|
const wsStateBytes = response.ssz();
|
|
185
|
-
const {version} = response.meta();
|
|
186
185
|
|
|
187
186
|
const wsSlot = getStateSlotFromBytes(wsStateBytes);
|
|
188
187
|
const logData = {stateId, size: formatBytes(wsStateBytes.length)};
|
|
189
188
|
logger.info("Download completed", typeof stateId === "number" ? logData : {...logData, slot: wsSlot});
|
|
190
189
|
|
|
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
|
-
|
|
199
190
|
return {
|
|
200
191
|
stateBytes: new Uint8Array(wsStateBytes.buffer, wsStateBytes.byteOffset, wsStateBytes.byteLength),
|
|
201
192
|
expectedCheckpoint: wsCheckpoint,
|