@chainsafe/lodestar 1.50.0-dev.ebecebb9ba → 1.50.0-dev.f0a5c36612
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 +13 -21
- package/lib/cmds/beacon/handler.js.map +1 -1
- package/lib/cmds/beacon/initBeaconState.d.ts +13 -17
- package/lib/cmds/beacon/initBeaconState.d.ts.map +1 -1
- package/lib/cmds/beacon/initBeaconState.js +84 -275
- 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.d.ts +7 -0
- package/lib/cmds/beacon/stateInitialization/checkpointState.d.ts.map +1 -0
- package/lib/cmds/beacon/stateInitialization/checkpointState.js +184 -0
- package/lib/cmds/beacon/stateInitialization/checkpointState.js.map +1 -0
- package/lib/cmds/beacon/stateInitialization/errors.d.ts +17 -0
- package/lib/cmds/beacon/stateInitialization/errors.d.ts.map +1 -0
- package/lib/cmds/beacon/stateInitialization/errors.js +16 -0
- package/lib/cmds/beacon/stateInitialization/errors.js.map +1 -0
- package/lib/cmds/beacon/stateInitialization/genesisState.d.ts +3 -0
- package/lib/cmds/beacon/stateInitialization/genesisState.d.ts.map +1 -0
- package/lib/cmds/beacon/stateInitialization/genesisState.js +79 -0
- package/lib/cmds/beacon/stateInitialization/genesisState.js.map +1 -0
- package/lib/cmds/beacon/stateInitialization/prepareStateInitialization.d.ts +4 -0
- package/lib/cmds/beacon/stateInitialization/prepareStateInitialization.d.ts.map +1 -0
- package/lib/cmds/beacon/stateInitialization/prepareStateInitialization.js +67 -0
- package/lib/cmds/beacon/stateInitialization/prepareStateInitialization.js.map +1 -0
- package/lib/cmds/beacon/stateInitialization/types.d.ts +42 -0
- package/lib/cmds/beacon/stateInitialization/types.d.ts.map +1 -0
- package/lib/cmds/beacon/stateInitialization/types.js +2 -0
- package/lib/cmds/beacon/stateInitialization/types.js.map +1 -0
- package/lib/cmds/beacon/stateInitialization/validation.d.ts +4 -0
- package/lib/cmds/beacon/stateInitialization/validation.d.ts.map +1 -0
- package/lib/cmds/beacon/stateInitialization/validation.js +12 -0
- package/lib/cmds/beacon/stateInitialization/validation.js.map +1 -0
- 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/cmds/dev/options.d.ts +2 -1
- package/lib/cmds/dev/options.d.ts.map +1 -1
- package/lib/networks/index.d.ts +3 -9
- package/lib/networks/index.d.ts.map +1 -1
- package/lib/networks/index.js +15 -28
- package/lib/networks/index.js.map +1 -1
- package/lib/options/beaconNodeOptions/chain.d.ts +2 -1
- package/lib/options/beaconNodeOptions/chain.d.ts.map +1 -1
- package/lib/options/beaconNodeOptions/chain.js +12 -5
- package/lib/options/beaconNodeOptions/chain.js.map +1 -1
- package/lib/options/beaconNodeOptions/index.d.ts +2 -1
- package/lib/options/beaconNodeOptions/index.d.ts.map +1 -1
- package/package.json +15 -15
- package/src/cmds/beacon/handler.ts +19 -22
- package/src/cmds/beacon/initBeaconState.ts +136 -387
- 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 +272 -0
- package/src/cmds/beacon/stateInitialization/errors.ts +15 -0
- package/src/cmds/beacon/stateInitialization/genesisState.ts +99 -0
- package/src/cmds/beacon/stateInitialization/prepareStateInitialization.ts +79 -0
- package/src/cmds/beacon/stateInitialization/types.ts +60 -0
- package/src/cmds/beacon/stateInitialization/validation.ts +16 -0
- package/src/cmds/dev/handler.ts +3 -1
- package/src/networks/index.ts +25 -40
- package/src/options/beaconNodeOptions/chain.ts +15 -6
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initBeaconState.js","sourceRoot":"","sources":["../../../src/cmds/beacon/initBeaconState.ts"],"names":[],"mappings":"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"}
|
|
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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ArchivedStateBytes, StateInitialization, StateInitializationOptions, StatePreparationContext } from "./types.js";
|
|
2
|
+
type CheckpointOptions = Pick<StateInitializationOptions, "wssCheckpoint" | "forceCheckpointSync" | "ignoreWeakSubjectivityCheck">;
|
|
3
|
+
export declare function prepareCheckpointFileInitialization(checkpointState: string, options: CheckpointOptions, archived: ArchivedStateBytes | null, context: StatePreparationContext): Promise<StateInitialization>;
|
|
4
|
+
export declare function prepareCheckpointApiInitialization(checkpointSyncUrl: string, options: CheckpointOptions, archived: ArchivedStateBytes | null, context: StatePreparationContext): Promise<StateInitialization>;
|
|
5
|
+
export declare function prepareUnfinalizedCheckpointInitialization(options: CheckpointOptions & Pick<StateInitializationOptions, "lastPersistedCheckpointState" | "unsafeCheckpointState" | "chain.nHistoricalStatesFileDataStore">, archived: ArchivedStateBytes | null, context: StatePreparationContext): Promise<StateInitialization | null>;
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=checkpointState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkpointState.d.ts","sourceRoot":"","sources":["../../../../src/cmds/beacon/stateInitialization/checkpointState.ts"],"names":[],"mappings":"AAgBA,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"}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import { DbCPStateDatastore, FileCPStateDatastore, persistAnchorState } from "@lodestar/beacon-node";
|
|
2
|
+
import { createBeaconConfig } from "@lodestar/config";
|
|
3
|
+
import { computeEpochAtSlot, computeWeakSubjectivitySummaryFromStateBytes, getCurrentSlot, isWithinWeakSubjectivityPeriodFromSummary, readBeaconStateBytesMetadata, } from "@lodestar/state-transition";
|
|
4
|
+
import { ssz } from "@lodestar/types";
|
|
5
|
+
import { formatBytes, toRootHex } from "@lodestar/utils";
|
|
6
|
+
import { fetchWeakSubjectivityStateBytes, getCheckpointFromArg } from "../../../networks/index.js";
|
|
7
|
+
import { downloadOrLoadFile } from "../../../util/index.js";
|
|
8
|
+
import { StateInitializationError, StateInitializationErrorCode } from "./errors.js";
|
|
9
|
+
import { assertAnchorStateForkMatchesConfig } from "./validation.js";
|
|
10
|
+
export async function prepareCheckpointFileInitialization(checkpointState, options, archived, context) {
|
|
11
|
+
context.logger.info("Loading checkpoint state", { checkpointState });
|
|
12
|
+
const bytes = await downloadOrLoadFile(checkpointState);
|
|
13
|
+
const stateBytes = new Uint8Array(bytes.buffer, bytes.byteOffset, bytes.byteLength);
|
|
14
|
+
context.logger.info("Loaded checkpoint state", { checkpointState, size: formatBytes(stateBytes.length) });
|
|
15
|
+
return prepareCheckpointInitialization({
|
|
16
|
+
stateBytes,
|
|
17
|
+
expectedCheckpoint: options.wssCheckpoint ? getCheckpointFromArg(options.wssCheckpoint) : null,
|
|
18
|
+
source: "checkpoint file",
|
|
19
|
+
}, archived, {
|
|
20
|
+
isFinalized: true,
|
|
21
|
+
forceCheckpointSync: Boolean(options.forceCheckpointSync),
|
|
22
|
+
ignoreWeakSubjectivityCheck: Boolean(options.ignoreWeakSubjectivityCheck),
|
|
23
|
+
}, context);
|
|
24
|
+
}
|
|
25
|
+
export async function prepareCheckpointApiInitialization(checkpointSyncUrl, options, archived, context) {
|
|
26
|
+
const { chainForkConfig, logger } = context;
|
|
27
|
+
try {
|
|
28
|
+
const url = new URL(checkpointSyncUrl);
|
|
29
|
+
logger.info("Fetching checkpoint state", { checkpointSyncUrl: url.origin });
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
logger.error("Invalid checkpoint sync URL", { checkpointSyncUrl }, error);
|
|
33
|
+
throw error;
|
|
34
|
+
}
|
|
35
|
+
const { stateBytes, expectedCheckpoint } = await fetchWeakSubjectivityStateBytes(chainForkConfig, logger, {
|
|
36
|
+
checkpointSyncUrl,
|
|
37
|
+
wssCheckpoint: options.wssCheckpoint,
|
|
38
|
+
});
|
|
39
|
+
return prepareCheckpointInitialization({ stateBytes, expectedCheckpoint, source: "checkpointSyncUrl" }, archived, {
|
|
40
|
+
isFinalized: true,
|
|
41
|
+
forceCheckpointSync: Boolean(options.forceCheckpointSync),
|
|
42
|
+
ignoreWeakSubjectivityCheck: Boolean(options.ignoreWeakSubjectivityCheck),
|
|
43
|
+
}, context);
|
|
44
|
+
}
|
|
45
|
+
export async function prepareUnfinalizedCheckpointInitialization(options, archived, context) {
|
|
46
|
+
const { db, dataDir, logger } = context;
|
|
47
|
+
let bytes = null;
|
|
48
|
+
if (options.lastPersistedCheckpointState && !options.forceCheckpointSync) {
|
|
49
|
+
const store = options["chain.nHistoricalStatesFileDataStore"]
|
|
50
|
+
? new FileCPStateDatastore(dataDir)
|
|
51
|
+
: new DbCPStateDatastore(db);
|
|
52
|
+
logger.verbose(`Finding last persisted checkpoint state from ${store.constructor.name}`);
|
|
53
|
+
bytes = await store.readLatestSafe();
|
|
54
|
+
if (bytes === null) {
|
|
55
|
+
logger.warn("Last persisted checkpoint state not found");
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
logger.info("Found last persisted checkpoint state", { size: formatBytes(bytes.length) });
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
if (bytes === null && options.unsafeCheckpointState) {
|
|
62
|
+
logger.info("Loading checkpoint state", { unsafeCheckpointState: options.unsafeCheckpointState });
|
|
63
|
+
bytes = await downloadOrLoadFile(options.unsafeCheckpointState);
|
|
64
|
+
logger.info("Loaded checkpoint state", { size: formatBytes(bytes.length) });
|
|
65
|
+
}
|
|
66
|
+
if (bytes === null)
|
|
67
|
+
return null;
|
|
68
|
+
logger.warn("Initializing from unfinalized checkpoint state is unsafe and may cause the node to follow a minority chain");
|
|
69
|
+
const stateBytes = new Uint8Array(bytes.buffer, bytes.byteOffset, bytes.byteLength);
|
|
70
|
+
return prepareCheckpointInitialization({
|
|
71
|
+
stateBytes,
|
|
72
|
+
expectedCheckpoint: options.wssCheckpoint ? getCheckpointFromArg(options.wssCheckpoint) : null,
|
|
73
|
+
source: "unfinalized source",
|
|
74
|
+
}, archived, {
|
|
75
|
+
isFinalized: false,
|
|
76
|
+
forceCheckpointSync: Boolean(options.forceCheckpointSync),
|
|
77
|
+
ignoreWeakSubjectivityCheck: Boolean(options.ignoreWeakSubjectivityCheck),
|
|
78
|
+
}, context);
|
|
79
|
+
}
|
|
80
|
+
function prepareCheckpointInitialization(candidate, archived, policy, { chainForkConfig, db, logger }) {
|
|
81
|
+
const candidateMetadata = readBeaconStateBytesMetadata(candidate.stateBytes);
|
|
82
|
+
if (candidateMetadata === null) {
|
|
83
|
+
throw new StateInitializationError({ code: StateInitializationErrorCode.MALFORMED_STATE_BYTES }, `Cannot read state metadata from ${candidate.source}`);
|
|
84
|
+
}
|
|
85
|
+
if (archived !== null &&
|
|
86
|
+
(archived.metadata.genesisTime !== candidateMetadata.genesisTime ||
|
|
87
|
+
!ssz.Root.equals(archived.metadata.genesisValidatorsRoot, candidateMetadata.genesisValidatorsRoot))) {
|
|
88
|
+
throw new StateInitializationError({ code: StateInitializationErrorCode.INCOMPATIBLE_GENESIS }, "Db state and checkpoint state are not compatible, either clear the db or verify your checkpoint source");
|
|
89
|
+
}
|
|
90
|
+
const useArchived = archived !== null && archived.metadata.slot > candidateMetadata.slot && !policy.forceCheckpointSync;
|
|
91
|
+
if (useArchived) {
|
|
92
|
+
logger.verbose("Db state is ahead of the provided checkpoint state, using the db state to initialize the beacon chain");
|
|
93
|
+
}
|
|
94
|
+
const { stateBytes, metadata, weakSubjectivity } = useArchived
|
|
95
|
+
? archived
|
|
96
|
+
: {
|
|
97
|
+
stateBytes: candidate.stateBytes,
|
|
98
|
+
metadata: candidateMetadata,
|
|
99
|
+
weakSubjectivity: computeWeakSubjectivitySummaryFromStateBytes(chainForkConfig, candidate.stateBytes, candidateMetadata),
|
|
100
|
+
};
|
|
101
|
+
if (weakSubjectivity === null) {
|
|
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
|
+
}
|
|
104
|
+
const expectedCheckpoint = useArchived ? null : candidate.expectedCheckpoint;
|
|
105
|
+
const source = useArchived ? "db" : candidate.source;
|
|
106
|
+
const { isFinalized, ignoreWeakSubjectivityCheck } = policy;
|
|
107
|
+
const config = createBeaconConfig(chainForkConfig, metadata.genesisValidatorsRoot);
|
|
108
|
+
const archivedWithinWeakSubjectivityPeriod = useArchived ? archived.isWithinWeakSubjectivityPeriod : null;
|
|
109
|
+
const passedValidation = archivedWithinWeakSubjectivityPeriod ?? isWithinWeakSubjectivityPeriodFromSummary(config, weakSubjectivity);
|
|
110
|
+
// Fast-fail stale checkpoints before deserializing the state or reserving pubkey-cache capacity.
|
|
111
|
+
if (!passedValidation && !ignoreWeakSubjectivityCheck) {
|
|
112
|
+
const clockEpoch = computeEpochAtSlot(getCurrentSlot(config, weakSubjectivity.genesisTime));
|
|
113
|
+
throw new StateInitializationError({ code: StateInitializationErrorCode.STALE_CHECKPOINT }, `The selected state with epoch ${weakSubjectivity.checkpointEpoch} is not within weak subjectivity period of ${weakSubjectivity.period} epochs from the current epoch ${clockEpoch}. Please verify your checkpoint source`);
|
|
114
|
+
}
|
|
115
|
+
// DB-selected anchors need no persistence, including at slot zero.
|
|
116
|
+
const shouldPersist = isFinalized && !useArchived;
|
|
117
|
+
return {
|
|
118
|
+
stateBytes,
|
|
119
|
+
config,
|
|
120
|
+
isFinalized,
|
|
121
|
+
validate(state) {
|
|
122
|
+
// A supplied checkpoint must match even when the period check is ignored.
|
|
123
|
+
if (expectedCheckpoint !== null)
|
|
124
|
+
assertStateMatchesCheckpoint(state, expectedCheckpoint);
|
|
125
|
+
assertAnchorStateForkMatchesConfig(config, state);
|
|
126
|
+
if (isFinalized) {
|
|
127
|
+
const source = useArchived ? "db" : "checkpoint";
|
|
128
|
+
const logData = {
|
|
129
|
+
slot: state.slot,
|
|
130
|
+
epoch: computeEpochAtSlot(state.slot),
|
|
131
|
+
stateSize: formatBytes(stateBytes.length),
|
|
132
|
+
stateRoot: toRootHex(state.hashTreeRoot()),
|
|
133
|
+
isWithinWeakSubjectivityPeriod: passedValidation,
|
|
134
|
+
};
|
|
135
|
+
if (passedValidation) {
|
|
136
|
+
logger.info(`Initializing beacon from a valid ${source} state`, logData);
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
logger.warn(`Initializing from a stale ${source} state vulnerable to long range attacks`, logData);
|
|
140
|
+
logger.warn("Checkpoint sync recommended, please use --help to see checkpoint sync options");
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
},
|
|
144
|
+
async initializeEarliestAvailableSlot(state) {
|
|
145
|
+
const stored = await db.earliestAvailableSlot.get();
|
|
146
|
+
const floor = useArchived ? (stored ?? state.slot) : Math.max(stored ?? 0, state.slot);
|
|
147
|
+
if (stored !== floor) {
|
|
148
|
+
await db.earliestAvailableSlot.set(floor);
|
|
149
|
+
}
|
|
150
|
+
logger.verbose("Initialized earliest available slot", {
|
|
151
|
+
source,
|
|
152
|
+
anchorSlot: state.slot,
|
|
153
|
+
previousSlot: stored,
|
|
154
|
+
earliestAvailableSlot: floor,
|
|
155
|
+
});
|
|
156
|
+
return floor;
|
|
157
|
+
},
|
|
158
|
+
persist: shouldPersist ? (state, bytes) => persistAnchorState(config, db, state, bytes) : null,
|
|
159
|
+
log(state, nativeStateTransition) {
|
|
160
|
+
const { checkpoint } = state.computeAnchorCheckpoint();
|
|
161
|
+
logger.info("Initialized checkpoint state", {
|
|
162
|
+
source,
|
|
163
|
+
slot: state.slot,
|
|
164
|
+
epoch: checkpoint.epoch,
|
|
165
|
+
stateSize: formatBytes(stateBytes.length),
|
|
166
|
+
stateRoot: toRootHex(state.hashTreeRoot()),
|
|
167
|
+
checkpointRoot: toRootHex(checkpoint.root),
|
|
168
|
+
isFinalized,
|
|
169
|
+
nativeStateTransition,
|
|
170
|
+
...(isFinalized ? {} : { lastProcessedSlot: state.latestBlockHeader.slot }),
|
|
171
|
+
});
|
|
172
|
+
},
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
function assertStateMatchesCheckpoint(state, checkpoint) {
|
|
176
|
+
const { root: blockRoot, epoch: stateEpoch } = state.computeAnchorCheckpoint().checkpoint;
|
|
177
|
+
if (!ssz.Root.equals(blockRoot, checkpoint.root)) {
|
|
178
|
+
throw new StateInitializationError({ code: StateInitializationErrorCode.CHECKPOINT_ROOT_MISMATCH }, `Roots do not match. expected=${toRootHex(checkpoint.root)}, actual=${toRootHex(blockRoot)}`);
|
|
179
|
+
}
|
|
180
|
+
if (!ssz.Epoch.equals(stateEpoch, checkpoint.epoch)) {
|
|
181
|
+
throw new StateInitializationError({ code: StateInitializationErrorCode.CHECKPOINT_EPOCH_MISMATCH }, `Epochs do not match. expected=${checkpoint.epoch}, actual=${stateEpoch}`);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
//# sourceMappingURL=checkpointState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkpointState.js","sourceRoot":"","sources":["../../../../src/cmds/beacon/stateInitialization/checkpointState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,kBAAkB,EAAE,oBAAoB,EAAE,kBAAkB,EAAC,MAAM,uBAAuB,CAAC;AACnG,OAAO,EAAC,kBAAkB,EAAC,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAEL,kBAAkB,EAClB,4CAA4C,EAC5C,cAAc,EACd,yCAAyC,EACzC,4BAA4B,GAC7B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAC,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAEpC,OAAO,EAAC,WAAW,EAAE,SAAS,EAAC,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAC,+BAA+B,EAAE,oBAAoB,EAAC,MAAM,4BAA4B,CAAC;AACjG,OAAO,EAAC,kBAAkB,EAAC,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAC,wBAAwB,EAAE,4BAA4B,EAAC,MAAM,aAAa,CAAC;AASnF,OAAO,EAAC,kCAAkC,EAAC,MAAM,iBAAiB,CAAC;AAOnE,MAAM,CAAC,KAAK,UAAU,mCAAmC,CACvD,eAAuB,EACvB,OAA0B,EAC1B,QAAmC,EACnC,OAAgC;IAEhC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAC,eAAe,EAAC,CAAC,CAAC;IACnE,MAAM,KAAK,GAAG,MAAM,kBAAkB,CAAC,eAAe,CAAC,CAAC;IACxD,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IACpF,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAC,eAAe,EAAE,IAAI,EAAE,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,EAAC,CAAC,CAAC;IACxG,OAAO,+BAA+B,CACpC;QACE,UAAU;QACV,kBAAkB,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI;QAC9F,MAAM,EAAE,iBAAiB;KAC1B,EACD,QAAQ,EACR;QACE,WAAW,EAAE,IAAI;QACjB,mBAAmB,EAAE,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC;QACzD,2BAA2B,EAAE,OAAO,CAAC,OAAO,CAAC,2BAA2B,CAAC;KAC1E,EACD,OAAO,CACR,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kCAAkC,CACtD,iBAAyB,EACzB,OAA0B,EAC1B,QAAmC,EACnC,OAAgC;IAEhC,MAAM,EAAC,eAAe,EAAE,MAAM,EAAC,GAAG,OAAO,CAAC;IAC1C,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,iBAAiB,CAAC,CAAC;QACvC,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE,EAAC,iBAAiB,EAAE,GAAG,CAAC,MAAM,EAAC,CAAC,CAAC;IAC5E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,KAAK,CAAC,6BAA6B,EAAE,EAAC,iBAAiB,EAAC,EAAE,KAAc,CAAC,CAAC;QACjF,MAAM,KAAK,CAAC;IACd,CAAC;IACD,MAAM,EAAC,UAAU,EAAE,kBAAkB,EAAC,GAAG,MAAM,+BAA+B,CAAC,eAAe,EAAE,MAAM,EAAE;QACtG,iBAAiB;QACjB,aAAa,EAAE,OAAO,CAAC,aAAa;KACrC,CAAC,CAAC;IACH,OAAO,+BAA+B,CACpC,EAAC,UAAU,EAAE,kBAAkB,EAAE,MAAM,EAAE,mBAAmB,EAAC,EAC7D,QAAQ,EACR;QACE,WAAW,EAAE,IAAI;QACjB,mBAAmB,EAAE,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC;QACzD,2BAA2B,EAAE,OAAO,CAAC,OAAO,CAAC,2BAA2B,CAAC;KAC1E,EACD,OAAO,CACR,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,0CAA0C,CAC9D,OAIG,EACH,QAAmC,EACnC,OAAgC;IAEhC,MAAM,EAAC,EAAE,EAAE,OAAO,EAAE,MAAM,EAAC,GAAG,OAAO,CAAC;IACtC,IAAI,KAAK,GAAsB,IAAI,CAAC;IACpC,IAAI,OAAO,CAAC,4BAA4B,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,CAAC;QACzE,MAAM,KAAK,GAAG,OAAO,CAAC,sCAAsC,CAAC;YAC3D,CAAC,CAAC,IAAI,oBAAoB,CAAC,OAAO,CAAC;YACnC,CAAC,CAAC,IAAI,kBAAkB,CAAC,EAAE,CAAC,CAAC;QAC/B,MAAM,CAAC,OAAO,CAAC,gDAAgD,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;QACzF,KAAK,GAAG,MAAM,KAAK,CAAC,cAAc,EAAE,CAAC;QACrC,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACnB,MAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;QAC3D,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,uCAAuC,EAAE,EAAC,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,EAAC,CAAC,CAAC;QAC1F,CAAC;IACH,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC;QACpD,MAAM,CAAC,IAAI,CAAC,0BAA0B,EAAE,EAAC,qBAAqB,EAAE,OAAO,CAAC,qBAAqB,EAAC,CAAC,CAAC;QAChG,KAAK,GAAG,MAAM,kBAAkB,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;QAChE,MAAM,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAC,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,EAAC,CAAC,CAAC;IAC5E,CAAC;IACD,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,MAAM,CAAC,IAAI,CACT,4GAA4G,CAC7G,CAAC;IACF,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IACpF,OAAO,+BAA+B,CACpC;QACE,UAAU;QACV,kBAAkB,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI;QAC9F,MAAM,EAAE,oBAAoB;KAC7B,EACD,QAAQ,EACR;QACE,WAAW,EAAE,KAAK;QAClB,mBAAmB,EAAE,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC;QACzD,2BAA2B,EAAE,OAAO,CAAC,OAAO,CAAC,2BAA2B,CAAC;KAC1E,EACD,OAAO,CACR,CAAC;AACJ,CAAC;AAED,SAAS,+BAA+B,CACtC,SAAwC,EACxC,QAAmC,EACnC,MAA+B,EAC/B,EAAC,eAAe,EAAE,EAAE,EAAE,MAAM,EAA0B;IAEtD,MAAM,iBAAiB,GAAG,4BAA4B,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;IAC7E,IAAI,iBAAiB,KAAK,IAAI,EAAE,CAAC;QAC/B,MAAM,IAAI,wBAAwB,CAChC,EAAC,IAAI,EAAE,4BAA4B,CAAC,qBAAqB,EAAC,EAC1D,mCAAmC,SAAS,CAAC,MAAM,EAAE,CACtD,CAAC;IACJ,CAAC;IACD,IACE,QAAQ,KAAK,IAAI;QACjB,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,KAAK,iBAAiB,CAAC,WAAW;YAC9D,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,qBAAqB,EAAE,iBAAiB,CAAC,qBAAqB,CAAC,CAAC,EACrG,CAAC;QACD,MAAM,IAAI,wBAAwB,CAChC,EAAC,IAAI,EAAE,4BAA4B,CAAC,oBAAoB,EAAC,EACzD,wGAAwG,CACzG,CAAC;IACJ,CAAC;IACD,MAAM,WAAW,GACf,QAAQ,KAAK,IAAI,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,GAAG,iBAAiB,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC;IACtG,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,CAAC,OAAO,CACZ,uGAAuG,CACxG,CAAC;IACJ,CAAC;IACD,MAAM,EAAC,UAAU,EAAE,QAAQ,EAAE,gBAAgB,EAAC,GAAG,WAAW;QAC1D,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC;YACE,UAAU,EAAE,SAAS,CAAC,UAAU;YAChC,QAAQ,EAAE,iBAAiB;YAC3B,gBAAgB,EAAE,4CAA4C,CAC5D,eAAe,EACf,SAAS,CAAC,UAAU,EACpB,iBAAiB,CAClB;SACF,CAAC;IACN,IAAI,gBAAgB,KAAK,IAAI,EAAE,CAAC;QAC9B,MAAM,IAAI,wBAAwB,CAChC,EAAC,IAAI,EAAE,4BAA4B,CAAC,qBAAqB,EAAC,EAC1D,iDAAiD,SAAS,CAAC,MAAM,cAAc,eAAe,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,QAAQ,CAAC,IAAI,qCAAqC,CAC9L,CAAC;IACJ,CAAC;IACD,MAAM,kBAAkB,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,kBAAkB,CAAC;IAC7E,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC;IACrD,MAAM,EAAC,WAAW,EAAE,2BAA2B,EAAC,GAAG,MAAM,CAAC;IAC1D,MAAM,MAAM,GAAG,kBAAkB,CAAC,eAAe,EAAE,QAAQ,CAAC,qBAAqB,CAAC,CAAC;IACnF,MAAM,oCAAoC,GAAG,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,8BAA8B,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1G,MAAM,gBAAgB,GACpB,oCAAoC,IAAI,yCAAyC,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAC9G,iGAAiG;IACjG,IAAI,CAAC,gBAAgB,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACtD,MAAM,UAAU,GAAG,kBAAkB,CAAC,cAAc,CAAC,MAAM,EAAE,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC;QAC5F,MAAM,IAAI,wBAAwB,CAChC,EAAC,IAAI,EAAE,4BAA4B,CAAC,gBAAgB,EAAC,EACrD,iCAAiC,gBAAgB,CAAC,eAAe,8CAA8C,gBAAgB,CAAC,MAAM,kCAAkC,UAAU,wCAAwC,CAC3N,CAAC;IACJ,CAAC;IACD,mEAAmE;IACnE,MAAM,aAAa,GAAG,WAAW,IAAI,CAAC,WAAW,CAAC;IAClD,OAAO;QACL,UAAU;QACV,MAAM;QACN,WAAW;QACX,QAAQ,CAAC,KAAK;YACZ,0EAA0E;YAC1E,IAAI,kBAAkB,KAAK,IAAI;gBAAE,4BAA4B,CAAC,KAAK,EAAE,kBAAkB,CAAC,CAAC;YACzF,kCAAkC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAClD,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC;gBACjD,MAAM,OAAO,GAAG;oBACd,IAAI,EAAE,KAAK,CAAC,IAAI;oBAChB,KAAK,EAAE,kBAAkB,CAAC,KAAK,CAAC,IAAI,CAAC;oBACrC,SAAS,EAAE,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC;oBACzC,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;oBAC1C,8BAA8B,EAAE,gBAAgB;iBACjD,CAAC;gBACF,IAAI,gBAAgB,EAAE,CAAC;oBACrB,MAAM,CAAC,IAAI,CAAC,oCAAoC,MAAM,QAAQ,EAAE,OAAO,CAAC,CAAC;gBAC3E,CAAC;qBAAM,CAAC;oBACN,MAAM,CAAC,IAAI,CAAC,6BAA6B,MAAM,yCAAyC,EAAE,OAAO,CAAC,CAAC;oBACnG,MAAM,CAAC,IAAI,CAAC,+EAA+E,CAAC,CAAC;gBAC/F,CAAC;YACH,CAAC;QACH,CAAC;QACD,KAAK,CAAC,+BAA+B,CAAC,KAAK;YACzC,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,qBAAqB,CAAC,GAAG,EAAE,CAAC;YACpD,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YACvF,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;gBACrB,MAAM,EAAE,CAAC,qBAAqB,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAC5C,CAAC;YACD,MAAM,CAAC,OAAO,CAAC,qCAAqC,EAAE;gBACpD,MAAM;gBACN,UAAU,EAAE,KAAK,CAAC,IAAI;gBACtB,YAAY,EAAE,MAAM;gBACpB,qBAAqB,EAAE,KAAK;aAC7B,CAAC,CAAC;YACH,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,kBAAkB,CAAC,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI;QAC9F,GAAG,CAAC,KAAK,EAAE,qBAAqB;YAC9B,MAAM,EAAC,UAAU,EAAC,GAAG,KAAK,CAAC,uBAAuB,EAAE,CAAC;YACrD,MAAM,CAAC,IAAI,CAAC,8BAA8B,EAAE;gBAC1C,MAAM;gBACN,IAAI,EAAE,KAAK,CAAC,IAAI;gBAChB,KAAK,EAAE,UAAU,CAAC,KAAK;gBACvB,SAAS,EAAE,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC;gBACzC,SAAS,EAAE,SAAS,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;gBAC1C,cAAc,EAAE,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC;gBAC1C,WAAW;gBACX,qBAAqB;gBACrB,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,iBAAiB,EAAE,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAC,CAAC;aAC1E,CAAC,CAAC;QACL,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,4BAA4B,CAAC,KAAuB,EAAE,UAAsB;IACnF,MAAM,EAAC,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAC,GAAG,KAAK,CAAC,uBAAuB,EAAE,CAAC,UAAU,CAAC;IACxF,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,wBAAwB,CAChC,EAAC,IAAI,EAAE,4BAA4B,CAAC,wBAAwB,EAAC,EAC7D,iCAAiC,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,SAAS,CAAC,SAAS,CAAC,EAAE,CAC9F,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,wBAAwB,CAChC,EAAC,IAAI,EAAE,4BAA4B,CAAC,yBAAyB,EAAC,EAC9D,kCAAkC,UAAU,CAAC,KAAK,YAAY,UAAU,EAAE,CAC3E,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { LodestarError } from "@lodestar/utils";
|
|
2
|
+
export declare enum StateInitializationErrorCode {
|
|
3
|
+
INVALID_CHECKPOINT_SOURCE = "INVALID_CHECKPOINT_SOURCE",
|
|
4
|
+
MALFORMED_STATE_BYTES = "MALFORMED_STATE_BYTES",
|
|
5
|
+
INCOMPATIBLE_GENESIS = "INCOMPATIBLE_GENESIS",
|
|
6
|
+
CHECKPOINT_ROOT_MISMATCH = "CHECKPOINT_ROOT_MISMATCH",
|
|
7
|
+
CHECKPOINT_EPOCH_MISMATCH = "CHECKPOINT_EPOCH_MISMATCH",
|
|
8
|
+
STALE_CHECKPOINT = "STALE_CHECKPOINT",
|
|
9
|
+
ANCHOR_STATE_FORK_MISMATCH = "ANCHOR_STATE_FORK_MISMATCH",
|
|
10
|
+
GENESIS_ROOT_MISMATCH = "GENESIS_ROOT_MISMATCH",
|
|
11
|
+
MISSING_INITIALIZATION_SOURCE = "MISSING_INITIALIZATION_SOURCE"
|
|
12
|
+
}
|
|
13
|
+
export declare class StateInitializationError extends LodestarError<{
|
|
14
|
+
code: StateInitializationErrorCode;
|
|
15
|
+
}> {
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../../src/cmds/beacon/stateInitialization/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAE9C,oBAAY,4BAA4B;IACtC,yBAAyB,8BAA8B;IACvD,qBAAqB,0BAA0B;IAC/C,oBAAoB,yBAAyB;IAC7C,wBAAwB,6BAA6B;IACrD,yBAAyB,8BAA8B;IACvD,gBAAgB,qBAAqB;IACrC,0BAA0B,+BAA+B;IACzD,qBAAqB,0BAA0B;IAC/C,6BAA6B,kCAAkC;CAChE;AAED,qBAAa,wBAAyB,SAAQ,aAAa,CAAC;IAAC,IAAI,EAAE,4BAA4B,CAAA;CAAC,CAAC;CAAG"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { LodestarError } from "@lodestar/utils";
|
|
2
|
+
export var StateInitializationErrorCode;
|
|
3
|
+
(function (StateInitializationErrorCode) {
|
|
4
|
+
StateInitializationErrorCode["INVALID_CHECKPOINT_SOURCE"] = "INVALID_CHECKPOINT_SOURCE";
|
|
5
|
+
StateInitializationErrorCode["MALFORMED_STATE_BYTES"] = "MALFORMED_STATE_BYTES";
|
|
6
|
+
StateInitializationErrorCode["INCOMPATIBLE_GENESIS"] = "INCOMPATIBLE_GENESIS";
|
|
7
|
+
StateInitializationErrorCode["CHECKPOINT_ROOT_MISMATCH"] = "CHECKPOINT_ROOT_MISMATCH";
|
|
8
|
+
StateInitializationErrorCode["CHECKPOINT_EPOCH_MISMATCH"] = "CHECKPOINT_EPOCH_MISMATCH";
|
|
9
|
+
StateInitializationErrorCode["STALE_CHECKPOINT"] = "STALE_CHECKPOINT";
|
|
10
|
+
StateInitializationErrorCode["ANCHOR_STATE_FORK_MISMATCH"] = "ANCHOR_STATE_FORK_MISMATCH";
|
|
11
|
+
StateInitializationErrorCode["GENESIS_ROOT_MISMATCH"] = "GENESIS_ROOT_MISMATCH";
|
|
12
|
+
StateInitializationErrorCode["MISSING_INITIALIZATION_SOURCE"] = "MISSING_INITIALIZATION_SOURCE";
|
|
13
|
+
})(StateInitializationErrorCode || (StateInitializationErrorCode = {}));
|
|
14
|
+
export class StateInitializationError extends LodestarError {
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../src/cmds/beacon/stateInitialization/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAE9C,MAAM,CAAN,IAAY,4BAUX;AAVD,WAAY,4BAA4B;IACtC,uFAAuD,CAAA;IACvD,+EAA+C,CAAA;IAC/C,6EAA6C,CAAA;IAC7C,qFAAqD,CAAA;IACrD,uFAAuD,CAAA;IACvD,qEAAqC,CAAA;IACrC,yFAAyD,CAAA;IACzD,+EAA+C,CAAA;IAC/C,+FAA+D,CAAA;AACjE,CAAC,EAVW,4BAA4B,KAA5B,4BAA4B,QAUvC;AAED,MAAM,OAAO,wBAAyB,SAAQ,aAAmD;CAAG"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { StateInitialization, StateInitializationOptions, StatePreparationContext } from "./types.js";
|
|
2
|
+
export declare function prepareGenesisInitialization(options: Pick<StateInitializationOptions, "genesisStateFile" | "network">, { chainForkConfig, db, logger }: StatePreparationContext): Promise<StateInitialization>;
|
|
3
|
+
//# sourceMappingURL=genesisState.d.ts.map
|
|
@@ -0,0 +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,EACzE,EAAC,eAAe,EAAE,EAAE,EAAE,MAAM,EAAC,EAAE,uBAAuB,GACrD,OAAO,CAAC,mBAAmB,CAAC,CA+E9B"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { persistAnchorState } from "@lodestar/beacon-node";
|
|
2
|
+
import { createBeaconConfig } from "@lodestar/config";
|
|
3
|
+
import { computeEpochAtSlot, computeWeakSubjectivitySummaryFromStateBytes, isWithinWeakSubjectivityPeriodFromSummary, readBeaconStateBytesMetadata, } from "@lodestar/state-transition";
|
|
4
|
+
import { formatBytes, toRootHex } from "@lodestar/utils";
|
|
5
|
+
import { getGenesisFileUrl, getGenesisStateRoot } from "../../../networks/index.js";
|
|
6
|
+
import { defaultNetwork } from "../../../options/globalOptions.js";
|
|
7
|
+
import { downloadOrLoadFile } from "../../../util/index.js";
|
|
8
|
+
import { StateInitializationError, StateInitializationErrorCode } from "./errors.js";
|
|
9
|
+
import { assertAnchorStateForkMatchesConfig } from "./validation.js";
|
|
10
|
+
export async function prepareGenesisInitialization(options, { chainForkConfig, db, logger }) {
|
|
11
|
+
const source = options.genesisStateFile || getGenesisFileUrl(options.network || defaultNetwork);
|
|
12
|
+
if (!source) {
|
|
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
|
+
}
|
|
15
|
+
logger.info("Loading genesis state", { genesisStateFile: source });
|
|
16
|
+
const bytes = await downloadOrLoadFile(source);
|
|
17
|
+
const stateBytes = new Uint8Array(bytes.buffer, bytes.byteOffset, bytes.byteLength);
|
|
18
|
+
logger.info("Loaded genesis state", { size: formatBytes(stateBytes.length) });
|
|
19
|
+
const metadata = readBeaconStateBytesMetadata(stateBytes);
|
|
20
|
+
if (metadata === null) {
|
|
21
|
+
throw new StateInitializationError({ code: StateInitializationErrorCode.MALFORMED_STATE_BYTES }, "Cannot read metadata from genesis state bytes");
|
|
22
|
+
}
|
|
23
|
+
const weakSubjectivity = computeWeakSubjectivitySummaryFromStateBytes(chainForkConfig, stateBytes, metadata);
|
|
24
|
+
if (weakSubjectivity === null) {
|
|
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
|
+
}
|
|
27
|
+
const config = createBeaconConfig(chainForkConfig, metadata.genesisValidatorsRoot);
|
|
28
|
+
const expectedRoot = getGenesisStateRoot(options.network);
|
|
29
|
+
return {
|
|
30
|
+
stateBytes,
|
|
31
|
+
config,
|
|
32
|
+
isFinalized: true,
|
|
33
|
+
validate(state) {
|
|
34
|
+
const stateRoot = toRootHex(state.hashTreeRoot());
|
|
35
|
+
if (expectedRoot !== null && stateRoot !== expectedRoot) {
|
|
36
|
+
throw new StateInitializationError({ code: StateInitializationErrorCode.GENESIS_ROOT_MISMATCH }, `Genesis state root mismatch expected=${expectedRoot} received=${stateRoot}`);
|
|
37
|
+
}
|
|
38
|
+
assertAnchorStateForkMatchesConfig(config, state);
|
|
39
|
+
const passedValidation = isWithinWeakSubjectivityPeriodFromSummary(config, weakSubjectivity);
|
|
40
|
+
const logData = {
|
|
41
|
+
slot: state.slot,
|
|
42
|
+
epoch: computeEpochAtSlot(state.slot),
|
|
43
|
+
stateSize: formatBytes(stateBytes.length),
|
|
44
|
+
stateRoot,
|
|
45
|
+
isWithinWeakSubjectivityPeriod: passedValidation,
|
|
46
|
+
};
|
|
47
|
+
if (passedValidation) {
|
|
48
|
+
logger.info("Initializing beacon from a valid checkpoint state", logData);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
logger.warn("Initializing from a stale checkpoint state vulnerable to long range attacks", logData);
|
|
52
|
+
logger.warn("Checkpoint sync recommended, please use --help to see checkpoint sync options");
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
async initializeEarliestAvailableSlot(state) {
|
|
56
|
+
const stored = await db.earliestAvailableSlot.get();
|
|
57
|
+
if (stored !== null && stored !== state.slot) {
|
|
58
|
+
logger.warn("Resetting earliest available slot for genesis initialization", {
|
|
59
|
+
previousSlot: stored,
|
|
60
|
+
earliestAvailableSlot: state.slot,
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
if (stored !== state.slot) {
|
|
64
|
+
await db.earliestAvailableSlot.set(state.slot);
|
|
65
|
+
}
|
|
66
|
+
return state.slot;
|
|
67
|
+
},
|
|
68
|
+
persist: (state, bytes) => persistAnchorState(config, db, state, bytes),
|
|
69
|
+
log(state, nativeStateTransition) {
|
|
70
|
+
logger.info("Initialized genesis state", {
|
|
71
|
+
slot: state.slot,
|
|
72
|
+
stateRoot: toRootHex(state.hashTreeRoot()),
|
|
73
|
+
isFinalized: true,
|
|
74
|
+
nativeStateTransition,
|
|
75
|
+
});
|
|
76
|
+
},
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=genesisState.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"genesisState.js","sourceRoot":"","sources":["../../../../src/cmds/beacon/stateInitialization/genesisState.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { ArchivedStateBytes, StateInitialization, StateInitializationOptions, StatePreparationContext } from "./types.js";
|
|
2
|
+
export declare function prepareArchivedStateInitialization({ stateBytes, metadata, isWithinWeakSubjectivityPeriod }: ArchivedStateBytes, { chainForkConfig, db, logger }: StatePreparationContext): StateInitialization;
|
|
3
|
+
export declare function prepareCheckpointSourceInitialization(options: StateInitializationOptions, archived: ArchivedStateBytes | null, context: StatePreparationContext): Promise<StateInitialization | null>;
|
|
4
|
+
//# sourceMappingURL=prepareStateInitialization.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
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,EAAE,EAAE,MAAM,EAAC,EAAE,uBAAuB,GACrD,mBAAmB,CA+CrB;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"}
|