@chainsafe/lodestar 1.9.0-dev.5b5530b393 → 1.9.0-dev.5d9d86d100
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/applyPreset.js +7 -1
- package/lib/applyPreset.js.map +1 -1
- package/lib/cli.js +1 -1
- package/lib/cli.js.map +1 -1
- package/lib/cmds/beacon/handler.d.ts +3 -3
- package/lib/cmds/beacon/handler.js +54 -15
- package/lib/cmds/beacon/handler.js.map +1 -1
- package/lib/cmds/beacon/initBeaconState.js +23 -9
- package/lib/cmds/beacon/initBeaconState.js.map +1 -1
- package/lib/cmds/beacon/options.d.ts +7 -6
- package/lib/cmds/beacon/options.js +19 -8
- package/lib/cmds/beacon/options.js.map +1 -1
- package/lib/cmds/dev/options.d.ts +10 -6
- package/lib/cmds/lightclient/handler.js +8 -2
- package/lib/cmds/lightclient/handler.js.map +1 -1
- package/lib/cmds/lightclient/options.d.ts +4 -3
- package/lib/cmds/lightclient/options.js +0 -2
- package/lib/cmds/lightclient/options.js.map +1 -1
- package/lib/cmds/validator/blsToExecutionChange.d.ts +3 -3
- package/lib/cmds/validator/blsToExecutionChange.js +12 -5
- package/lib/cmds/validator/blsToExecutionChange.js.map +1 -1
- package/lib/cmds/validator/handler.js +24 -24
- package/lib/cmds/validator/handler.js.map +1 -1
- package/lib/cmds/validator/keymanager/decryptKeystoreDefinitions.d.ts +16 -0
- package/lib/cmds/validator/keymanager/decryptKeystoreDefinitions.js +108 -0
- package/lib/cmds/validator/keymanager/decryptKeystoreDefinitions.js.map +1 -0
- package/lib/cmds/validator/keymanager/decryptKeystores/index.d.ts +2 -0
- package/lib/cmds/validator/keymanager/decryptKeystores/index.js +2 -0
- package/lib/cmds/validator/keymanager/decryptKeystores/index.js.map +1 -0
- package/lib/cmds/validator/keymanager/decryptKeystores/poolSize.d.ts +6 -0
- package/lib/cmds/validator/keymanager/decryptKeystores/poolSize.js +19 -0
- package/lib/cmds/validator/keymanager/decryptKeystores/poolSize.js.map +1 -0
- package/lib/cmds/validator/keymanager/decryptKeystores/threadPool.d.ts +25 -0
- package/lib/cmds/validator/keymanager/decryptKeystores/threadPool.js +53 -0
- package/lib/cmds/validator/keymanager/decryptKeystores/threadPool.js.map +1 -0
- package/lib/cmds/validator/keymanager/decryptKeystores/types.d.ts +11 -0
- package/lib/cmds/validator/keymanager/decryptKeystores/types.js +4 -0
- package/lib/cmds/validator/keymanager/decryptKeystores/types.js.map +1 -0
- package/lib/cmds/validator/keymanager/decryptKeystores/worker.d.ts +9 -0
- package/lib/cmds/validator/keymanager/{decryptKeystoreDefinitions → decryptKeystores}/worker.js +6 -5
- package/lib/cmds/validator/keymanager/decryptKeystores/worker.js.map +1 -0
- package/lib/cmds/validator/keymanager/impl.d.ts +2 -1
- package/lib/cmds/validator/keymanager/impl.js +23 -16
- package/lib/cmds/validator/keymanager/impl.js.map +1 -1
- package/lib/cmds/validator/keymanager/keystoreCache.js +2 -1
- package/lib/cmds/validator/keymanager/keystoreCache.js.map +1 -1
- package/lib/cmds/validator/options.d.ts +5 -3
- package/lib/cmds/validator/options.js +6 -1
- package/lib/cmds/validator/options.js.map +1 -1
- package/lib/cmds/validator/signers/importExternalKeystores.js +0 -2
- package/lib/cmds/validator/signers/importExternalKeystores.js.map +1 -1
- package/lib/cmds/validator/signers/index.d.ts +2 -2
- package/lib/cmds/validator/signers/index.js +3 -1
- package/lib/cmds/validator/signers/index.js.map +1 -1
- package/lib/cmds/validator/signers/logSigners.d.ts +2 -2
- package/lib/cmds/validator/signers/logSigners.js.map +1 -1
- package/lib/cmds/validator/slashingProtection/export.d.ts +3 -2
- package/lib/cmds/validator/slashingProtection/export.js +47 -14
- package/lib/cmds/validator/slashingProtection/export.js.map +1 -1
- package/lib/cmds/validator/slashingProtection/import.d.ts +2 -2
- package/lib/cmds/validator/slashingProtection/import.js +11 -6
- package/lib/cmds/validator/slashingProtection/import.js.map +1 -1
- package/lib/cmds/validator/slashingProtection/utils.d.ts +2 -2
- package/lib/cmds/validator/slashingProtection/utils.js +4 -8
- package/lib/cmds/validator/slashingProtection/utils.js.map +1 -1
- package/lib/cmds/validator/voluntaryExit.js +1 -1
- package/lib/cmds/validator/voluntaryExit.js.map +1 -1
- package/lib/options/beaconNodeOptions/api.d.ts +6 -5
- package/lib/options/beaconNodeOptions/api.js +8 -2
- package/lib/options/beaconNodeOptions/api.js.map +1 -1
- package/lib/options/beaconNodeOptions/builder.d.ts +4 -5
- package/lib/options/beaconNodeOptions/builder.js +10 -14
- package/lib/options/beaconNodeOptions/builder.js.map +1 -1
- package/lib/options/beaconNodeOptions/chain.d.ts +13 -12
- package/lib/options/beaconNodeOptions/chain.js +12 -2
- package/lib/options/beaconNodeOptions/chain.js.map +1 -1
- package/lib/options/beaconNodeOptions/eth1.d.ts +6 -6
- package/lib/options/beaconNodeOptions/eth1.js +6 -1
- package/lib/options/beaconNodeOptions/eth1.js.map +1 -1
- package/lib/options/beaconNodeOptions/execution.d.ts +1 -1
- package/lib/options/beaconNodeOptions/execution.js +9 -5
- package/lib/options/beaconNodeOptions/execution.js.map +1 -1
- package/lib/options/beaconNodeOptions/index.d.ts +15 -12
- package/lib/options/beaconNodeOptions/metrics.d.ts +1 -1
- package/lib/options/beaconNodeOptions/metrics.js +2 -2
- package/lib/options/beaconNodeOptions/metrics.js.map +1 -1
- package/lib/options/beaconNodeOptions/monitoring.d.ts +5 -5
- package/lib/options/beaconNodeOptions/network.d.ts +19 -17
- package/lib/options/beaconNodeOptions/network.js +27 -10
- package/lib/options/beaconNodeOptions/network.js.map +1 -1
- package/lib/options/beaconNodeOptions/sync.d.ts +4 -4
- package/lib/options/beaconNodeOptions/sync.js +2 -1
- package/lib/options/beaconNodeOptions/sync.js.map +1 -1
- package/lib/options/globalOptions.d.ts +2 -2
- package/lib/options/logOptions.d.ts +11 -1
- package/lib/options/logOptions.js +7 -6
- package/lib/options/logOptions.js.map +1 -1
- package/lib/util/command.d.ts +2 -1
- package/lib/util/command.js.map +1 -1
- package/lib/util/file.js.map +1 -1
- package/lib/util/index.d.ts +1 -0
- package/lib/util/index.js +1 -0
- package/lib/util/index.js.map +1 -1
- package/lib/util/logger.d.ts +7 -23
- package/lib/util/logger.js +53 -80
- package/lib/util/logger.js.map +1 -1
- package/lib/util/pruneOldFilesInDir.d.ts +2 -0
- package/lib/util/pruneOldFilesInDir.js +17 -0
- package/lib/util/pruneOldFilesInDir.js.map +1 -0
- package/package.json +16 -15
- package/lib/cmds/validator/keymanager/decryptKeystoreDefinitions/index.d.ts +0 -8
- package/lib/cmds/validator/keymanager/decryptKeystoreDefinitions/index.js +0 -92
- package/lib/cmds/validator/keymanager/decryptKeystoreDefinitions/index.js.map +0 -1
- package/lib/cmds/validator/keymanager/decryptKeystoreDefinitions/poolSize.d.ts +0 -6
- package/lib/cmds/validator/keymanager/decryptKeystoreDefinitions/poolSize.js +0 -19
- package/lib/cmds/validator/keymanager/decryptKeystoreDefinitions/poolSize.js.map +0 -1
- package/lib/cmds/validator/keymanager/decryptKeystoreDefinitions/types.d.ts +0 -12
- package/lib/cmds/validator/keymanager/decryptKeystoreDefinitions/types.js +0 -2
- package/lib/cmds/validator/keymanager/decryptKeystoreDefinitions/types.js.map +0 -1
- package/lib/cmds/validator/keymanager/decryptKeystoreDefinitions/worker.d.ts +0 -9
- package/lib/cmds/validator/keymanager/decryptKeystoreDefinitions/worker.js.map +0 -1
- package/lib/util/loggerConsoleTransport.d.ts +0 -24
- package/lib/util/loggerConsoleTransport.js +0 -35
- package/lib/util/loggerConsoleTransport.js.map +0 -1
package/.git-data.json
CHANGED
package/lib/applyPreset.js
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
// set LODESTAR_PRESET manually every time.
|
|
15
15
|
var _a;
|
|
16
16
|
// IMPORTANT: only import Lodestar code here which does not import any other Lodestar libraries
|
|
17
|
-
import { setActivePreset, presetFromJson } from "@lodestar/params/setPreset";
|
|
17
|
+
import { setActivePreset, presetFromJson, PresetName } from "@lodestar/params/setPreset";
|
|
18
18
|
import { readFile } from "./util/file.js";
|
|
19
19
|
const network = valueOfArg("network");
|
|
20
20
|
const preset = valueOfArg("preset");
|
|
@@ -31,6 +31,9 @@ else if (process.env.LODESTAR_PRESET) {
|
|
|
31
31
|
else if (network) {
|
|
32
32
|
if (network === "dev") {
|
|
33
33
|
process.env.LODESTAR_PRESET = "minimal";
|
|
34
|
+
// "c-kzg" has hardcoded the mainnet value, do not use presets
|
|
35
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
36
|
+
setActivePreset(PresetName.minimal, { FIELD_ELEMENTS_PER_BLOB: 4096 });
|
|
34
37
|
}
|
|
35
38
|
else if (network === "gnosis" || network === "chiado") {
|
|
36
39
|
process.env.LODESTAR_PRESET = "gnosis";
|
|
@@ -40,6 +43,9 @@ else if (network) {
|
|
|
40
43
|
else if (process.argv[2] === "dev") {
|
|
41
44
|
process.env.LODESTAR_PRESET = "minimal";
|
|
42
45
|
process.env.LODESTAR_NETWORK = "dev";
|
|
46
|
+
// "c-kzg" has hardcoded the mainnet value, do not use presets
|
|
47
|
+
// eslint-disable-next-line @typescript-eslint/naming-convention
|
|
48
|
+
setActivePreset(PresetName.minimal, { FIELD_ELEMENTS_PER_BLOB: 4096 });
|
|
43
49
|
}
|
|
44
50
|
if (presetFile) {
|
|
45
51
|
// Override the active preset with custom values from file
|
package/lib/applyPreset.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"applyPreset.js","sourceRoot":"","sources":["../src/applyPreset.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,EAAE;AACF,eAAe;AACf,EAAE;AACF,yGAAyG;AACzG,sDAAsD;AACtD,EAAE;AACF,qGAAqG;AACrG,+DAA+D;AAC/D,kEAAkE;AAClE,kEAAkE;AAClE,EAAE;AACF,4FAA4F;AAC5F,2CAA2C;;AAE3C,+FAA+F;AAC/F,OAAO,EAAC,eAAe,EAAE,cAAc,EAAC,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"applyPreset.js","sourceRoot":"","sources":["../src/applyPreset.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,EAAE;AACF,eAAe;AACf,EAAE;AACF,yGAAyG;AACzG,sDAAsD;AACtD,EAAE;AACF,qGAAqG;AACrG,+DAA+D;AAC/D,kEAAkE;AAClE,kEAAkE;AAClE,EAAE;AACF,4FAA4F;AAC5F,2CAA2C;;AAE3C,+FAA+F;AAC/F,OAAO,EAAC,eAAe,EAAE,cAAc,EAAE,UAAU,EAAC,MAAM,4BAA4B,CAAC;AACvF,OAAO,EAAC,QAAQ,EAAC,MAAM,gBAAgB,CAAC;AAExC,MAAM,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;AACtC,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;AACpC,MAAM,UAAU,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;AAE5C,+BAA+B;AAC/B,IAAI,MAAM,EAAE;IACV,OAAO,CAAC,GAAG,CAAC,eAAe,GAAG,MAAM,CAAC;CACtC;AAED,8FAA8F;KACzF,IAAI,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE;IACpC,QAAQ;CACT;AAED,8BAA8B;KACzB,IAAI,OAAO,EAAE;IAChB,IAAI,OAAO,KAAK,KAAK,EAAE;QACrB,OAAO,CAAC,GAAG,CAAC,eAAe,GAAG,SAAS,CAAC;QACxC,8DAA8D;QAC9D,gEAAgE;QAChE,eAAe,CAAC,UAAU,CAAC,OAAO,EAAE,EAAC,uBAAuB,EAAE,IAAI,EAAC,CAAC,CAAC;KACtE;SAAM,IAAI,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,QAAQ,EAAE;QACvD,OAAO,CAAC,GAAG,CAAC,eAAe,GAAG,QAAQ,CAAC;KACxC;CACF;AAED,mEAAmE;KAC9D,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE;IAClC,OAAO,CAAC,GAAG,CAAC,eAAe,GAAG,SAAS,CAAC;IACxC,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,KAAK,CAAC;IACrC,8DAA8D;IAC9D,gEAAgE;IAChE,eAAe,CAAC,UAAU,CAAC,OAAO,EAAE,EAAC,uBAAuB,EAAE,IAAI,EAAC,CAAC,CAAC;CACtE;AAED,IAAI,UAAU,EAAE;IACd,0DAA0D;IAC1D,4DAA4D;IAC5D,eAAe,CAAC,IAAI,EAAE,cAAc,CAAC,MAAA,QAAQ,CAAC,UAAU,CAAC,mCAAI,EAAE,CAAC,CAAC,CAAC;CACnE;AAED;;;;GAIG;AACH,SAAS,UAAU,CAAC,OAAe;IACjC,4BAA4B;IAC5B,0CAA0C;;IAE1C;QACE,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,OAAO,EAAE,CAAC,CAAC;QACnD,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;YACd,OAAO,MAAA,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,mCAAI,EAAE,CAAC;SACtC;KACF;IAED,4BAA4B;IAC5B;QACE,MAAM,MAAM,GAAG,KAAK,OAAO,GAAG,CAAC;QAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;QAChE,IAAI,IAAI,EAAE;YACR,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;SAClC;KACF;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/lib/cli.js
CHANGED
|
@@ -8,7 +8,7 @@ import { getVersionData } from "./util/version.js";
|
|
|
8
8
|
const { version } = getVersionData();
|
|
9
9
|
const topBanner = `🌟 Lodestar: TypeScript Implementation of the Ethereum Consensus Beacon Chain.
|
|
10
10
|
* Version: ${version}
|
|
11
|
-
* by ChainSafe Systems, 2018
|
|
11
|
+
* by ChainSafe Systems, 2018-${new Date().getFullYear()}`;
|
|
12
12
|
const bottomBanner = `📖 For more information, check the CLI reference:
|
|
13
13
|
* https://chainsafe.github.io/lodestar/reference/cli
|
|
14
14
|
|
package/lib/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AACtC,OAAO,EAAC,IAAI,EAAC,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAC,aAAa,EAAE,cAAc,EAAC,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAC,sBAAsB,EAAC,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAC,cAAc,EAAC,MAAM,mBAAmB,CAAC;AAEjD,MAAM,EAAC,OAAO,EAAC,GAAG,cAAc,EAAE,CAAC;AACnC,MAAM,SAAS,GAAG;eACH,OAAO;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAC,OAAO,EAAC,MAAM,eAAe,CAAC;AACtC,OAAO,EAAC,IAAI,EAAC,MAAM,iBAAiB,CAAC;AACrC,OAAO,EAAC,aAAa,EAAE,cAAc,EAAC,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAC,sBAAsB,EAAC,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAC,cAAc,EAAC,MAAM,mBAAmB,CAAC;AAEjD,MAAM,EAAC,OAAO,EAAC,GAAG,cAAc,EAAE,CAAC;AACnC,MAAM,SAAS,GAAG;eACH,OAAO;iCACW,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC;AAC5D,MAAM,YAAY,GAAG;;;;0CAIqB,CAAC;AAE3C,MAAM,CAAC,MAAM,IAAI,GAAG,KAAK,CAAE,OAAwC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;AAEnF;;;GAGG;AACH,MAAM,UAAU,cAAc;IAC5B,MAAM,QAAQ,GAAG,IAAI;SAClB,GAAG,CAAC,UAAU,CAAC;SACf,mBAAmB,CAAC;QACnB,0DAA0D;QAC1D,2DAA2D;QAC3D,cAAc,EAAE,KAAK;KACtB,CAAC;SACD,OAAO,CAAC,aAAa,CAAC;QACvB,sFAAsF;SACrF,UAAU,CAAC,EAAE,CAAC;SACd,aAAa,CAAC,CAAC,CAAC;QACjB,+CAA+C;SAC9C,cAAc,CAAC,KAAK,CAAC;SACrB,KAAK,CAAC,SAAS,CAAC;SAChB,QAAQ,CAAC,YAAY,CAAC;SACtB,OAAO,CAAC,SAAS,CAAC;SAClB,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC;SAClB,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC;SACrB,iBAAiB,EAAE,CAAC;IAEvB,+BAA+B;IAC/B,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;QACtB,sBAAsB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;KACvC;IAED,+CAA+C;IAC/C,QAAQ,CAAC,iBAAiB,EAAE,CAAC,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,MAAM,CAAC,GAAG,cAAc,CAAC,CAAC;IAEnC,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Logger } from "@lodestar/utils";
|
|
2
1
|
import { ChainForkConfig } from "@lodestar/config";
|
|
2
|
+
import { LoggerNode } from "@lodestar/logger/node";
|
|
3
3
|
import { GlobalArgs } from "../../options/index.js";
|
|
4
4
|
import { BeaconArgs } from "./options.js";
|
|
5
5
|
/**
|
|
@@ -20,7 +20,7 @@ export declare function beaconHandlerInit(args: BeaconArgs & GlobalArgs): Promis
|
|
|
20
20
|
version: string;
|
|
21
21
|
commit: string;
|
|
22
22
|
peerId: import("@libp2p/interface-peer-id").PeerId;
|
|
23
|
-
logger:
|
|
23
|
+
logger: LoggerNode;
|
|
24
24
|
}>;
|
|
25
|
-
export declare function initLogger(args: BeaconArgs, dataDir: string, config: ChainForkConfig):
|
|
25
|
+
export declare function initLogger(args: BeaconArgs, dataDir: string, config: ChainForkConfig): LoggerNode;
|
|
26
26
|
//# sourceMappingURL=handler.d.ts.map
|
|
@@ -5,14 +5,17 @@ import { LevelDbController } from "@lodestar/db";
|
|
|
5
5
|
import { BeaconNode, BeaconDb } from "@lodestar/beacon-node";
|
|
6
6
|
import { createBeaconConfig } from "@lodestar/config";
|
|
7
7
|
import { ACTIVE_PRESET, PresetName } from "@lodestar/params";
|
|
8
|
+
import { getNodeLogger } from "@lodestar/logger/node";
|
|
8
9
|
import { parseBeaconNodeArgs } from "../../options/index.js";
|
|
9
10
|
import { BeaconNodeOptions, getBeaconConfigFromArgs } from "../../config/index.js";
|
|
10
11
|
import { getNetworkBootnodes, getNetworkData, isKnownNetworkName, readBootnodes } from "../../networks/index.js";
|
|
11
|
-
import { onGracefulShutdown,
|
|
12
|
+
import { onGracefulShutdown, mkdir, writeFile600Perm, cleanOldLogFiles, parseLoggerArgs, pruneOldFilesInDir, } from "../../util/index.js";
|
|
12
13
|
import { getVersionData } from "../../util/version.js";
|
|
13
14
|
import { getBeaconPaths } from "./paths.js";
|
|
14
15
|
import { initBeaconState } from "./initBeaconState.js";
|
|
15
16
|
import { initPeerIdAndEnr } from "./initPeerIdAndEnr.js";
|
|
17
|
+
const DEFAULT_RETENTION_SSZ_OBJECTS_HOURS = 15 * 24;
|
|
18
|
+
const HOURS_TO_MS = 3600 * 1000;
|
|
16
19
|
/**
|
|
17
20
|
* Runs a beacon node.
|
|
18
21
|
*/
|
|
@@ -39,11 +42,7 @@ export async function beaconHandler(args) {
|
|
|
39
42
|
networkRegistry = new Registry();
|
|
40
43
|
metricsRegistries.push(networkRegistry);
|
|
41
44
|
}
|
|
42
|
-
const db = new BeaconDb({
|
|
43
|
-
config,
|
|
44
|
-
controller: new LevelDbController(options.db, { metrics: null, logger }),
|
|
45
|
-
});
|
|
46
|
-
await db.start();
|
|
45
|
+
const db = new BeaconDb(config, await LevelDbController.create(options.db, { metrics: null, logger }));
|
|
47
46
|
logger.info("Connected to LevelDB database", { path: options.db.name });
|
|
48
47
|
// BeaconNode setup
|
|
49
48
|
try {
|
|
@@ -61,8 +60,25 @@ export async function beaconHandler(args) {
|
|
|
61
60
|
wsCheckpoint,
|
|
62
61
|
metricsRegistries,
|
|
63
62
|
});
|
|
64
|
-
|
|
63
|
+
// dev debug option to have access to the BN instance
|
|
64
|
+
if (args.attachToGlobalThis) {
|
|
65
65
|
globalThis.bn = node;
|
|
66
|
+
}
|
|
67
|
+
// Prune invalid SSZ objects every interval
|
|
68
|
+
const { persistInvalidSszObjectsDir } = args;
|
|
69
|
+
const pruneInvalidSSZObjectsInterval = persistInvalidSszObjectsDir
|
|
70
|
+
? setInterval(() => {
|
|
71
|
+
var _a;
|
|
72
|
+
try {
|
|
73
|
+
pruneOldFilesInDir(persistInvalidSszObjectsDir, ((_a = args.persistInvalidSszObjectsRetentionHours) !== null && _a !== void 0 ? _a : DEFAULT_RETENTION_SSZ_OBJECTS_HOURS) * HOURS_TO_MS);
|
|
74
|
+
}
|
|
75
|
+
catch (e) {
|
|
76
|
+
logger.warn("Error pruning invalid SSZ objects", { persistInvalidSszObjectsDir }, e);
|
|
77
|
+
}
|
|
78
|
+
// Run every ~1 hour
|
|
79
|
+
}, HOURS_TO_MS)
|
|
80
|
+
: null;
|
|
81
|
+
// Intercept SIGINT signal, to perform final ops before exiting
|
|
66
82
|
onGracefulShutdown(async () => {
|
|
67
83
|
if (args.persistNetworkIdentity) {
|
|
68
84
|
try {
|
|
@@ -75,11 +91,26 @@ export async function beaconHandler(args) {
|
|
|
75
91
|
}
|
|
76
92
|
}
|
|
77
93
|
abortController.abort();
|
|
94
|
+
if (pruneInvalidSSZObjectsInterval !== null) {
|
|
95
|
+
clearInterval(pruneInvalidSSZObjectsInterval);
|
|
96
|
+
}
|
|
78
97
|
}, logger.info.bind(logger));
|
|
79
|
-
abortController.signal.addEventListener("abort", () =>
|
|
98
|
+
abortController.signal.addEventListener("abort", async () => {
|
|
99
|
+
try {
|
|
100
|
+
await node.close();
|
|
101
|
+
logger.debug("Beacon node closed");
|
|
102
|
+
}
|
|
103
|
+
catch (e) {
|
|
104
|
+
logger.error("Error closing beacon node", {}, e);
|
|
105
|
+
// Make sure db is always closed gracefully
|
|
106
|
+
await db.close();
|
|
107
|
+
// Must explicitly exit process due to potential active handles
|
|
108
|
+
process.exit(1);
|
|
109
|
+
}
|
|
110
|
+
}, { once: true });
|
|
80
111
|
}
|
|
81
112
|
catch (e) {
|
|
82
|
-
await db.
|
|
113
|
+
await db.close();
|
|
83
114
|
if (e instanceof ErrorAborted) {
|
|
84
115
|
logger.info(e.message); // Let the user know the abort was received but don't print as error
|
|
85
116
|
}
|
|
@@ -114,20 +145,28 @@ export async function beaconHandlerInit(args) {
|
|
|
114
145
|
const logger = initLogger(args, beaconPaths.dataDir, config);
|
|
115
146
|
const { peerId, enr } = await initPeerIdAndEnr(args, beaconPaths.beaconDir, logger);
|
|
116
147
|
// Inject ENR to beacon options
|
|
117
|
-
beaconNodeOptions.set({ network: { discv5: { enr, enrUpdate: !enr.ip && !enr.ip6 } } });
|
|
118
|
-
|
|
119
|
-
|
|
148
|
+
beaconNodeOptions.set({ network: { discv5: { enr: enr.encodeTxt(), config: { enrUpdate: !enr.ip && !enr.ip6 } } } });
|
|
149
|
+
if (args.private) {
|
|
150
|
+
beaconNodeOptions.set({ network: { private: true } });
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
// Add simple version string for libp2p agent version
|
|
154
|
+
beaconNodeOptions.set({ network: { version: version.split("/")[0] } });
|
|
155
|
+
// Add User-Agent header to all builder requests
|
|
156
|
+
beaconNodeOptions.set({ executionBuilder: { userAgent: `Lodestar/${version}` } });
|
|
157
|
+
}
|
|
120
158
|
// Render final options
|
|
121
159
|
const options = beaconNodeOptions.getWithDefaults();
|
|
122
160
|
return { config, options, beaconPaths, network, version, commit, peerId, logger };
|
|
123
161
|
}
|
|
124
162
|
export function initLogger(args, dataDir, config) {
|
|
125
|
-
const
|
|
163
|
+
const defaultLogFilepath = path.join(dataDir, "beacon.log");
|
|
164
|
+
const logger = getNodeLogger(parseLoggerArgs(args, { defaultLogFilepath }, config));
|
|
126
165
|
try {
|
|
127
|
-
cleanOldLogFiles(
|
|
166
|
+
cleanOldLogFiles(args, { defaultLogFilepath });
|
|
128
167
|
}
|
|
129
168
|
catch (e) {
|
|
130
|
-
logger.debug("Not able to delete log files",
|
|
169
|
+
logger.debug("Not able to delete log files", {}, e);
|
|
131
170
|
}
|
|
132
171
|
return logger;
|
|
133
172
|
}
|
|
@@ -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,QAAQ,EAAC,MAAM,aAAa,CAAC;AACrC,OAAO,EAAC,YAAY,
|
|
1
|
+
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/cmds/beacon/handler.ts"],"names":[],"mappings":"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"}
|
|
@@ -43,6 +43,9 @@ async function initAndVerifyWeakSubjectivityState(config, db, logger, store, wsS
|
|
|
43
43
|
* 4. create genesis state from eth1
|
|
44
44
|
*/
|
|
45
45
|
export async function initBeaconState(options, args, chainForkConfig, db, logger, signal) {
|
|
46
|
+
if (args.forceCheckpointSync && !(args.checkpointState || args.checkpointSyncUrl)) {
|
|
47
|
+
throw new Error("Forced checkpoint sync without specifying a checkpointState or checkpointSyncUrl");
|
|
48
|
+
}
|
|
46
49
|
// fetch the latest state stored in the db which will be used in all cases, if it exists, either
|
|
47
50
|
// i) used directly as the anchor state
|
|
48
51
|
// ii) used during verification of a weak subjectivity state,
|
|
@@ -50,15 +53,26 @@ export async function initBeaconState(options, args, chainForkConfig, db, logger
|
|
|
50
53
|
if (lastDbState) {
|
|
51
54
|
const config = createBeaconConfig(chainForkConfig, lastDbState.genesisValidatorsRoot);
|
|
52
55
|
const wssCheck = isWithinWeakSubjectivityPeriod(config, lastDbState, getCheckpointFromState(lastDbState));
|
|
53
|
-
//
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
}
|
|
61
|
-
|
|
56
|
+
// Explicitly force syncing from checkpoint state
|
|
57
|
+
if (args.forceCheckpointSync) {
|
|
58
|
+
// Forcing to sync from checkpoint is only recommended if node is taking too long to sync from last db state.
|
|
59
|
+
// It is important to remind the user to remove this flag again unless it is absolutely necessary.
|
|
60
|
+
if (wssCheck) {
|
|
61
|
+
logger.warn("Forced syncing from checkpoint even though db state is within weak subjectivity period");
|
|
62
|
+
logger.warn("Please consider removing --forceCheckpointSync flag unless absolutely necessary");
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
// All cases when we want to directly use lastDbState as the anchor state:
|
|
67
|
+
// - if no checkpoint sync args provided, or
|
|
68
|
+
// - the lastDbState is within weak subjectivity period:
|
|
69
|
+
if ((!args.checkpointState && !args.checkpointSyncUrl) || wssCheck) {
|
|
70
|
+
const anchorState = await initStateFromAnchorState(config, db, logger, lastDbState, {
|
|
71
|
+
isWithinWeakSubjectivityPeriod: wssCheck,
|
|
72
|
+
isCheckpointState: false,
|
|
73
|
+
});
|
|
74
|
+
return { anchorState };
|
|
75
|
+
}
|
|
62
76
|
}
|
|
63
77
|
}
|
|
64
78
|
// See if we can sync state using checkpoint sync args or else start from genesis
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"initBeaconState.js","sourceRoot":"","sources":["../../../src/cmds/beacon/initBeaconState.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,GAAG,EAAC,MAAM,iBAAiB,CAAC;AACpC,OAAO,EAAC,kBAAkB,EAAgC,MAAM,kBAAkB,CAAC;AAEnF,OAAO,EAAC,8BAA8B,EAAsB,MAAM,4BAA4B,CAAC;AAC/F,OAAO,EAGL,wBAAwB,EACxB,iBAAiB,EACjB,qBAAqB,GACtB,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAC,kBAAkB,EAAC,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAC,cAAc,EAAa,MAAM,gCAAgC,CAAC;AAC1E,OAAO,EACL,0BAA0B,EAC1B,oBAAoB,EACpB,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,yBAAyB,CAAC;AAGjC,KAAK,UAAU,kCAAkC,CAC/C,MAAoB,EACpB,EAAa,EACb,MAAc,EACd,KAA0B,EAC1B,OAA4B,EAC5B,YAAwB;IAExB,wDAAwD;IACxD,IACE,KAAK,CAAC,WAAW,KAAK,OAAO,CAAC,WAAW;QACzC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,EAAE,OAAO,CAAC,qBAAqB,CAAC,EAC5E;QACA,MAAM,IAAI,KAAK,CACb,wGAAwG,CACzG,CAAC;KACH;IAED,4EAA4E;IAC5E,IAAI,WAAW,GAAG,OAAO,CAAC;IAC1B,IAAI,gBAAgB,GAAG,YAAY,CAAC;IACpC,IAAI,iBAAiB,GAAG,IAAI,CAAC;IAC7B,IAAI,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE;QAC7B,WAAW,GAAG,KAAK,CAAC;QACpB,gBAAgB,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;QACjD,iBAAiB,GAAG,KAAK,CAAC;QAC1B,MAAM,CAAC,OAAO,CACZ,uGAAuG,CACxG,CAAC;KACH;IAED,6FAA6F;IAC7F,sBAAsB;IACtB,IAAI,CAAC,8BAA8B,CAAC,MAAM,EAAE,WAAW,EAAE,gBAAgB,CAAC,EAAE;QAC1E,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAC;KAC9F;IAED,WAAW,GAAG,MAAM,wBAAwB,CAAC,MAAM,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE;QAC5E,8BAA8B,EAAE,IAAI;QACpC,iBAAiB;KAClB,CAAC,CAAC;IAEH,+FAA+F;IAC/F,OAAO,EAAC,WAAW,EAAE,YAAY,EAAC,CAAC;AACrC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAA2B,EAC3B,IAA6B,EAC7B,eAAgC,EAChC,EAAa,EACb,MAAc,EACd,MAAmB;IAEnB,gGAAgG;IAChG,0CAA0C;IAC1C,+DAA+D;IAC/D,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,CAAC;IACtD,IAAI,WAAW,EAAE;QACf,MAAM,MAAM,GAAG,kBAAkB,CAAC,eAAe,EAAE,WAAW,CAAC,qBAAqB,CAAC,CAAC;QACtF,MAAM,QAAQ,GAAG,8BAA8B,CAAC,MAAM,EAAE,WAAW,EAAE,sBAAsB,CAAC,WAAW,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"initBeaconState.js","sourceRoot":"","sources":["../../../src/cmds/beacon/initBeaconState.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Options } from "yargs";
|
|
2
2
|
import { BeaconNodeArgs } from "../../options/index.js";
|
|
3
|
-
import {
|
|
3
|
+
import { LogArgs } from "../../options/logOptions.js";
|
|
4
|
+
import { CliCommandOptions } from "../../util/index.js";
|
|
4
5
|
import { BeaconPaths } from "./paths.js";
|
|
5
6
|
type BeaconExtraArgs = {
|
|
6
7
|
forceGenesis?: boolean;
|
|
@@ -10,11 +11,15 @@ type BeaconExtraArgs = {
|
|
|
10
11
|
checkpointSyncUrl?: string;
|
|
11
12
|
checkpointState?: string;
|
|
12
13
|
wssCheckpoint?: string;
|
|
14
|
+
forceCheckpointSync?: boolean;
|
|
13
15
|
beaconDir?: string;
|
|
14
16
|
dbDir?: string;
|
|
15
17
|
persistInvalidSszObjectsDir?: string;
|
|
18
|
+
persistInvalidSszObjectsRetentionHours?: number;
|
|
16
19
|
peerStoreDir?: string;
|
|
17
20
|
persistNetworkIdentity?: boolean;
|
|
21
|
+
private?: boolean;
|
|
22
|
+
attachToGlobalThis?: boolean;
|
|
18
23
|
};
|
|
19
24
|
export declare const beaconExtraOptions: CliCommandOptions<BeaconExtraArgs>;
|
|
20
25
|
type ENRArgs = {
|
|
@@ -26,11 +31,7 @@ type ENRArgs = {
|
|
|
26
31
|
"enr.udp6"?: number;
|
|
27
32
|
nat?: boolean;
|
|
28
33
|
};
|
|
29
|
-
export type
|
|
30
|
-
attachToGlobalThis: boolean;
|
|
31
|
-
};
|
|
32
|
-
export declare const debugOptions: CliCommandOptions<DebugArgs>;
|
|
33
|
-
export type BeaconArgs = BeaconExtraArgs & LogArgs & BeaconPaths & BeaconNodeArgs & ENRArgs & DebugArgs;
|
|
34
|
+
export type BeaconArgs = BeaconExtraArgs & LogArgs & BeaconPaths & BeaconNodeArgs & ENRArgs;
|
|
34
35
|
export declare const beaconOptions: {
|
|
35
36
|
[k: string]: Options;
|
|
36
37
|
};
|
|
@@ -37,6 +37,11 @@ export const beaconExtraOptions = {
|
|
|
37
37
|
type: "string",
|
|
38
38
|
group: "weak subjectivity",
|
|
39
39
|
},
|
|
40
|
+
forceCheckpointSync: {
|
|
41
|
+
description: "Force syncing from checkpoint state even if db state is within weak subjectivity period. This helps to avoid long sync times after node has been offline for a while.",
|
|
42
|
+
type: "boolean",
|
|
43
|
+
group: "weak subjectivity",
|
|
44
|
+
},
|
|
40
45
|
beaconDir: {
|
|
41
46
|
description: "Beacon root directory",
|
|
42
47
|
defaultDescription: defaultBeaconPaths.beaconDir,
|
|
@@ -55,6 +60,11 @@ export const beaconExtraOptions = {
|
|
|
55
60
|
hidden: true,
|
|
56
61
|
type: "string",
|
|
57
62
|
},
|
|
63
|
+
persistInvalidSszObjectsRetentionHours: {
|
|
64
|
+
description: "Number of hours to keep invalid SSZ objects on local disk",
|
|
65
|
+
hidden: true,
|
|
66
|
+
type: "number",
|
|
67
|
+
},
|
|
58
68
|
peerStoreDir: {
|
|
59
69
|
hidden: true,
|
|
60
70
|
description: "Peer store directory",
|
|
@@ -66,6 +76,15 @@ export const beaconExtraOptions = {
|
|
|
66
76
|
description: "Whether to reuse the same peer-id across restarts",
|
|
67
77
|
type: "boolean",
|
|
68
78
|
},
|
|
79
|
+
private: {
|
|
80
|
+
description: "Do not send implementation details over p2p identify protocol and in builder requests",
|
|
81
|
+
type: "boolean",
|
|
82
|
+
},
|
|
83
|
+
attachToGlobalThis: {
|
|
84
|
+
hidden: true,
|
|
85
|
+
description: "Attach the beacon node to `globalThis`. Useful to inspect a running beacon node.",
|
|
86
|
+
type: "boolean",
|
|
87
|
+
},
|
|
69
88
|
};
|
|
70
89
|
const enrOptions = {
|
|
71
90
|
"enr.ip": {
|
|
@@ -104,19 +123,11 @@ const enrOptions = {
|
|
|
104
123
|
group: "enr",
|
|
105
124
|
},
|
|
106
125
|
};
|
|
107
|
-
export const debugOptions = {
|
|
108
|
-
attachToGlobalThis: {
|
|
109
|
-
hidden: true,
|
|
110
|
-
description: "Attach the beacon node to `globalThis`. Useful to inspect a running beacon node.",
|
|
111
|
-
type: "boolean",
|
|
112
|
-
},
|
|
113
|
-
};
|
|
114
126
|
export const beaconOptions = {
|
|
115
127
|
...beaconExtraOptions,
|
|
116
128
|
...logOptions,
|
|
117
129
|
...beaconNodeOptions,
|
|
118
130
|
...paramsOptions,
|
|
119
131
|
...enrOptions,
|
|
120
|
-
...debugOptions,
|
|
121
132
|
};
|
|
122
133
|
//# sourceMappingURL=options.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../../src/cmds/beacon/options.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,iBAAiB,EAAE,aAAa,EAAiB,MAAM,wBAAwB,CAAC;AACxF,OAAO,
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../../src/cmds/beacon/options.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,7 +11,7 @@ type IDevOwnArgs = {
|
|
|
11
11
|
};
|
|
12
12
|
export declare const devOptions: {
|
|
13
13
|
genesisEth1Hash: Options;
|
|
14
|
-
genesisValidators: Options
|
|
14
|
+
genesisValidators: Options & Required<Pick<Options, "default">>;
|
|
15
15
|
startValidators: Options;
|
|
16
16
|
genesisTime: Options;
|
|
17
17
|
reset: Options;
|
|
@@ -26,18 +26,19 @@ export declare const devOptions: {
|
|
|
26
26
|
mdns?: Options | undefined;
|
|
27
27
|
targetPeers?: Options | undefined;
|
|
28
28
|
discv5?: Options | undefined;
|
|
29
|
+
disablePeerScoring?: Options | undefined;
|
|
29
30
|
"api.maxGindicesInProof"?: Options | undefined;
|
|
30
31
|
"rest.namespace"?: Options | undefined;
|
|
31
32
|
rest?: Options | undefined;
|
|
32
33
|
"rest.cors"?: Options | undefined;
|
|
33
34
|
"rest.address"?: Options | undefined;
|
|
34
35
|
"rest.port"?: Options | undefined;
|
|
36
|
+
"rest.headerLimit"?: Options | undefined;
|
|
35
37
|
"rest.bodyLimit"?: Options | undefined;
|
|
36
38
|
"builder.urls"?: Options | undefined;
|
|
37
39
|
"builder.timeout"?: Options | undefined;
|
|
38
40
|
"builder.faultInspectionWindow"?: Options | undefined;
|
|
39
41
|
"builder.allowedFaults"?: Options | undefined;
|
|
40
|
-
"builder.userAgent"?: Options | undefined;
|
|
41
42
|
"chain.blsVerifyAllMultiThread"?: Options | undefined;
|
|
42
43
|
"chain.blsVerifyAllMainThread"?: Options | undefined;
|
|
43
44
|
"chain.disableBlsBatchVerify"?: Options | undefined;
|
|
@@ -49,6 +50,7 @@ export declare const devOptions: {
|
|
|
49
50
|
"chain.computeUnrealized"?: Options | undefined;
|
|
50
51
|
"chain.assertCorrectProgressiveBalances"?: Options | undefined;
|
|
51
52
|
"chain.maxSkipSlots"?: Options | undefined;
|
|
53
|
+
"chain.trustedSetup"?: Options | undefined;
|
|
52
54
|
"safe-slots-to-import-optimistically"?: Options | undefined;
|
|
53
55
|
"chain.archiveStateEpochFrequency"?: Options | undefined;
|
|
54
56
|
emitPayloadAttributes?: Options | undefined;
|
|
@@ -82,6 +84,7 @@ export declare const devOptions: {
|
|
|
82
84
|
"network.gossipsubAwaitHandler"?: Options | undefined;
|
|
83
85
|
"network.rateLimitMultiplier"?: Options | undefined;
|
|
84
86
|
"network.maxGossipTopicConcurrency"?: Options | undefined;
|
|
87
|
+
"network.useWorker"?: Options | undefined;
|
|
85
88
|
listenAddress?: Options | undefined;
|
|
86
89
|
discoveryPort?: Options | undefined;
|
|
87
90
|
"network.requestCountPeerLimit"?: Options | undefined;
|
|
@@ -101,17 +104,18 @@ export declare const devOptions: {
|
|
|
101
104
|
"keymanager.port": Options;
|
|
102
105
|
"keymanager.address": Options;
|
|
103
106
|
"keymanager.cors": Options;
|
|
107
|
+
"keymanager.headerLimit": Options;
|
|
104
108
|
"keymanager.bodyLimit": Options;
|
|
105
|
-
logLevel: Options
|
|
109
|
+
logLevel: Options & Required<Pick<Options, "default">>;
|
|
106
110
|
logFile: Options;
|
|
107
|
-
logFileLevel: Options
|
|
108
|
-
logFileDailyRotate: Options
|
|
111
|
+
logFileLevel: Options & Required<Pick<Options, "default">>;
|
|
112
|
+
logFileDailyRotate: Options & Required<Pick<Options, "default">>;
|
|
109
113
|
logFormatGenesisTime: Options;
|
|
110
114
|
logPrefix: Options;
|
|
111
115
|
logFormat: Options;
|
|
112
116
|
logLevelModule: Options;
|
|
113
117
|
validatorsDbDir: Options;
|
|
114
|
-
beaconNodes: Options
|
|
118
|
+
beaconNodes: Options & Required<Pick<Options, "default">>;
|
|
115
119
|
force: Options;
|
|
116
120
|
graffiti: Options;
|
|
117
121
|
afterBlockDelaySlotFraction: Options;
|
|
@@ -3,14 +3,20 @@ import { ApiError, getClient } from "@lodestar/api";
|
|
|
3
3
|
import { Lightclient } from "@lodestar/light-client";
|
|
4
4
|
import { fromHexString } from "@chainsafe/ssz";
|
|
5
5
|
import { LightClientRestTransport } from "@lodestar/light-client/transport";
|
|
6
|
+
import { getNodeLogger } from "@lodestar/logger/node";
|
|
6
7
|
import { getBeaconConfigFromArgs } from "../../config/beaconParams.js";
|
|
7
8
|
import { getGlobalPaths } from "../../paths/global.js";
|
|
8
|
-
import {
|
|
9
|
+
import { parseLoggerArgs } from "../../util/logger.js";
|
|
10
|
+
import { YargsError } from "../../util/errors.js";
|
|
9
11
|
export async function lightclientHandler(args) {
|
|
10
12
|
const { config, network } = getBeaconConfigFromArgs(args);
|
|
11
13
|
const globalPaths = getGlobalPaths(args, network);
|
|
12
|
-
const
|
|
14
|
+
const logger = getNodeLogger(parseLoggerArgs(args, { defaultLogFilepath: path.join(globalPaths.dataDir, "lightclient.log") }, config));
|
|
13
15
|
const { beaconApiUrl, checkpointRoot } = args;
|
|
16
|
+
if (!beaconApiUrl)
|
|
17
|
+
throw new YargsError("must provide beaconApiUrl arg");
|
|
18
|
+
if (!checkpointRoot)
|
|
19
|
+
throw new YargsError("must provide checkpointRoot arg");
|
|
14
20
|
const api = getClient({ baseUrl: beaconApiUrl }, { config });
|
|
15
21
|
const res = await api.beacon.getGenesis();
|
|
16
22
|
ApiError.assert(res, "Can not fetch genesis data");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/cmds/lightclient/handler.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAC,QAAQ,EAAE,SAAS,EAAC,MAAM,eAAe,CAAC;AAClD,OAAO,EAAC,WAAW,EAAC,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAC,aAAa,EAAC,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAC,wBAAwB,EAAC,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAC,uBAAuB,EAAC,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAC,cAAc,EAAC,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/cmds/lightclient/handler.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAC,QAAQ,EAAE,SAAS,EAAC,MAAM,eAAe,CAAC;AAClD,OAAO,EAAC,WAAW,EAAC,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAC,aAAa,EAAC,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAC,wBAAwB,EAAC,MAAM,kCAAkC,CAAC;AAC1E,OAAO,EAAC,aAAa,EAAC,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAC,uBAAuB,EAAC,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAC,cAAc,EAAC,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAC,eAAe,EAAC,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAC,UAAU,EAAC,MAAM,sBAAsB,CAAC;AAIhD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,IAAmC;IAC1E,MAAM,EAAC,MAAM,EAAE,OAAO,EAAC,GAAG,uBAAuB,CAAC,IAAI,CAAC,CAAC;IACxD,MAAM,WAAW,GAAG,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAElD,MAAM,MAAM,GAAG,aAAa,CAC1B,eAAe,CAAC,IAAI,EAAE,EAAC,kBAAkB,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,iBAAiB,CAAC,EAAC,EAAE,MAAM,CAAC,CACvG,CAAC;IAEF,MAAM,EAAC,YAAY,EAAE,cAAc,EAAC,GAAG,IAAI,CAAC;IAC5C,IAAI,CAAC,YAAY;QAAE,MAAM,IAAI,UAAU,CAAC,+BAA+B,CAAC,CAAC;IACzE,IAAI,CAAC,cAAc;QAAE,MAAM,IAAI,UAAU,CAAC,iCAAiC,CAAC,CAAC;IAE7E,MAAM,GAAG,GAAG,SAAS,CAAC,EAAC,OAAO,EAAE,YAAY,EAAC,EAAE,EAAC,MAAM,EAAC,CAAC,CAAC;IACzD,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;IAC1C,QAAQ,CAAC,MAAM,CAAC,GAAG,EAAE,4BAA4B,CAAC,CAAC;IAEnD,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,4BAA4B,CAAC;QAC5D,MAAM;QACN,MAAM;QACN,WAAW,EAAE;YACX,WAAW,EAAE,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC;YAClD,qBAAqB,EAAE,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,qBAAqB;SAC/D;QACD,cAAc,EAAE,aAAa,CAAC,cAAc,CAAC;QAC7C,SAAS,EAAE,IAAI,wBAAwB,CAAC,GAAG,CAAC;KAC7C,CAAC,CAAC;IAEH,MAAM,CAAC,KAAK,EAAE,CAAC;AACjB,CAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { LogArgs } from "../../options/logOptions.js";
|
|
2
|
+
import { CliCommandOptions } from "../../util/index.js";
|
|
2
3
|
export type ILightClientArgs = LogArgs & {
|
|
3
|
-
beaconApiUrl
|
|
4
|
-
checkpointRoot
|
|
4
|
+
beaconApiUrl?: string;
|
|
5
|
+
checkpointRoot?: string;
|
|
5
6
|
};
|
|
6
7
|
export declare const lightclientOptions: CliCommandOptions<ILightClientArgs>;
|
|
7
8
|
//# sourceMappingURL=options.d.ts.map
|
|
@@ -4,12 +4,10 @@ export const lightclientOptions = {
|
|
|
4
4
|
beaconApiUrl: {
|
|
5
5
|
description: "Url to a beacon node that support lightclient API",
|
|
6
6
|
type: "string",
|
|
7
|
-
require: true,
|
|
8
7
|
},
|
|
9
8
|
checkpointRoot: {
|
|
10
9
|
description: "Checkpoint root hex string to sync the lightclient from, start with 0x",
|
|
11
10
|
type: "string",
|
|
12
|
-
require: true,
|
|
13
11
|
},
|
|
14
12
|
};
|
|
15
13
|
//# sourceMappingURL=options.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../../src/cmds/lightclient/options.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../../src/cmds/lightclient/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAU,UAAU,EAAC,MAAM,6BAA6B,CAAC;AAQhE,MAAM,CAAC,MAAM,kBAAkB,GAAwC;IACrE,GAAG,UAAU;IACb,YAAY,EAAE;QACZ,WAAW,EAAE,mDAAmD;QAChE,IAAI,EAAE,QAAQ;KACf;IACD,cAAc,EAAE;QACd,WAAW,EAAE,wEAAwE;QACrF,IAAI,EAAE,QAAQ;KACf;CACF,CAAC"}
|
|
@@ -2,9 +2,9 @@ import { CliCommand } from "../../util/index.js";
|
|
|
2
2
|
import { GlobalArgs } from "../../options/index.js";
|
|
3
3
|
import { IValidatorCliArgs } from "./options.js";
|
|
4
4
|
type BlsToExecutionChangeArgs = {
|
|
5
|
-
publicKey
|
|
6
|
-
fromBlsPrivkey
|
|
7
|
-
toExecutionAddress
|
|
5
|
+
publicKey?: string;
|
|
6
|
+
fromBlsPrivkey?: string;
|
|
7
|
+
toExecutionAddress?: string;
|
|
8
8
|
};
|
|
9
9
|
export declare const blsToExecutionChange: CliCommand<BlsToExecutionChangeArgs, IValidatorCliArgs & GlobalArgs>;
|
|
10
10
|
export {};
|
|
@@ -6,6 +6,7 @@ import { ApiError, getClient } from "@lodestar/api";
|
|
|
6
6
|
import { fromHexString } from "@chainsafe/ssz";
|
|
7
7
|
import bls from "@chainsafe/bls";
|
|
8
8
|
import { PointFormat } from "@chainsafe/bls/types";
|
|
9
|
+
import { YargsError } from "../../util/index.js";
|
|
9
10
|
import { getBeaconConfigFromArgs } from "../../config/index.js";
|
|
10
11
|
export const blsToExecutionChange = {
|
|
11
12
|
command: "bls-to-execution-change",
|
|
@@ -36,7 +37,13 @@ like to choose for BLS To Execution Change.",
|
|
|
36
37
|
},
|
|
37
38
|
},
|
|
38
39
|
handler: async (args) => {
|
|
39
|
-
const publicKey = args
|
|
40
|
+
const { publicKey, fromBlsPrivkey, toExecutionAddress } = args;
|
|
41
|
+
if (!publicKey)
|
|
42
|
+
throw new YargsError("must provide publicKey arg");
|
|
43
|
+
if (!fromBlsPrivkey)
|
|
44
|
+
throw new YargsError("must provide fromBlsPrivkey arg");
|
|
45
|
+
if (!toExecutionAddress)
|
|
46
|
+
throw new YargsError("must provide toExecutionAddress arg");
|
|
40
47
|
// Fetch genesisValidatorsRoot always from beacon node as anyway beacon node is needed for
|
|
41
48
|
// submitting the signed message
|
|
42
49
|
const { config: chainForkConfig } = getBeaconConfigFromArgs(args);
|
|
@@ -52,19 +59,19 @@ like to choose for BLS To Execution Change.",
|
|
|
52
59
|
if (stateValidator === undefined) {
|
|
53
60
|
throw new Error(`Validator pubkey ${publicKey} not found in state`);
|
|
54
61
|
}
|
|
55
|
-
const
|
|
56
|
-
const fromBlsPubkey =
|
|
62
|
+
const blsPrivkey = bls.SecretKey.fromBytes(fromHexString(fromBlsPrivkey));
|
|
63
|
+
const fromBlsPubkey = blsPrivkey.toPublicKey().toBytes(PointFormat.compressed);
|
|
57
64
|
const blsToExecutionChange = {
|
|
58
65
|
validatorIndex: stateValidator.index,
|
|
59
66
|
fromBlsPubkey,
|
|
60
|
-
toExecutionAddress: fromHexString(
|
|
67
|
+
toExecutionAddress: fromHexString(toExecutionAddress),
|
|
61
68
|
};
|
|
62
69
|
const signatureFork = ForkName.phase0;
|
|
63
70
|
const domain = config.getDomainAtFork(signatureFork, DOMAIN_BLS_TO_EXECUTION_CHANGE);
|
|
64
71
|
const signingRoot = computeSigningRoot(ssz.capella.BLSToExecutionChange, blsToExecutionChange, domain);
|
|
65
72
|
const signedBLSToExecutionChange = {
|
|
66
73
|
message: blsToExecutionChange,
|
|
67
|
-
signature:
|
|
74
|
+
signature: blsPrivkey.sign(signingRoot).toBytes(),
|
|
68
75
|
};
|
|
69
76
|
ApiError.assert(await client.beacon.submitPoolBlsToExecutionChange([signedBLSToExecutionChange]), "Can not submit bls to execution change");
|
|
70
77
|
console.log(`Submitted bls to execution change for ${publicKey}`);
|