@chainsafe/lodestar 1.35.0-dev.47c570ab76 → 1.35.0-dev.51e1ede62c
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/bin/lodestar.js +3 -0
- package/bin/lodestar.ts +3 -0
- package/lib/applyPreset.d.ts.map +1 -0
- package/lib/cli.d.ts.map +1 -0
- package/lib/cmds/beacon/handler.d.ts +1 -1
- package/lib/cmds/beacon/handler.d.ts.map +1 -0
- package/lib/cmds/beacon/handler.js +1 -1
- package/lib/cmds/beacon/handler.js.map +1 -1
- package/lib/cmds/beacon/index.d.ts.map +1 -0
- package/lib/cmds/beacon/initBeaconState.d.ts.map +1 -0
- package/lib/cmds/beacon/initPeerIdAndEnr.d.ts.map +1 -0
- package/lib/cmds/beacon/options.d.ts.map +1 -0
- package/lib/cmds/beacon/paths.d.ts.map +1 -0
- package/lib/cmds/bootnode/handler.d.ts.map +1 -0
- package/lib/cmds/bootnode/index.d.ts.map +1 -0
- package/lib/cmds/bootnode/options.d.ts.map +1 -0
- package/lib/cmds/dev/files.d.ts.map +1 -0
- package/lib/cmds/dev/handler.d.ts.map +1 -0
- package/lib/cmds/dev/index.d.ts.map +1 -0
- package/lib/cmds/dev/options.d.ts.map +1 -0
- package/lib/cmds/index.d.ts.map +1 -0
- package/lib/cmds/lightclient/handler.d.ts.map +1 -0
- package/lib/cmds/lightclient/index.d.ts.map +1 -0
- package/lib/cmds/lightclient/options.d.ts.map +1 -0
- package/lib/cmds/validator/blsToExecutionChange.d.ts.map +1 -0
- package/lib/cmds/validator/handler.d.ts.map +1 -0
- package/lib/cmds/validator/handler.js +1 -1
- package/lib/cmds/validator/handler.js.map +1 -1
- package/lib/cmds/validator/import.d.ts.map +1 -0
- package/lib/cmds/validator/index.d.ts.map +1 -0
- package/lib/cmds/validator/keymanager/decryptKeystoreDefinitions.d.ts.map +1 -0
- package/lib/cmds/validator/keymanager/decryptKeystores/index.d.ts.map +1 -0
- package/lib/cmds/validator/keymanager/decryptKeystores/poolSize.d.ts.map +1 -0
- package/lib/cmds/validator/keymanager/decryptKeystores/threadPool.d.ts.map +1 -0
- package/lib/cmds/validator/keymanager/decryptKeystores/types.d.ts.map +1 -0
- package/lib/cmds/validator/keymanager/decryptKeystores/worker.d.ts.map +1 -0
- package/lib/cmds/validator/keymanager/impl.d.ts.map +1 -0
- package/lib/cmds/validator/keymanager/interface.d.ts.map +1 -0
- package/lib/cmds/validator/keymanager/keystoreCache.d.ts.map +1 -0
- package/lib/cmds/validator/keymanager/persistedKeys.d.ts.map +1 -0
- package/lib/cmds/validator/keymanager/server.d.ts.map +1 -0
- package/lib/cmds/validator/list.d.ts.map +1 -0
- package/lib/cmds/validator/options.d.ts.map +1 -0
- package/lib/cmds/validator/options.js +2 -2
- package/lib/cmds/validator/paths.d.ts.map +1 -0
- package/lib/cmds/validator/signers/importExternalKeystores.d.ts.map +1 -0
- package/lib/cmds/validator/signers/index.d.ts.map +1 -0
- package/lib/cmds/validator/signers/logSigners.d.ts.map +1 -0
- package/lib/cmds/validator/slashingProtection/export.d.ts.map +1 -0
- package/lib/cmds/validator/slashingProtection/import.d.ts.map +1 -0
- package/lib/cmds/validator/slashingProtection/index.d.ts.map +1 -0
- package/lib/cmds/validator/slashingProtection/options.d.ts.map +1 -0
- package/lib/cmds/validator/slashingProtection/utils.d.ts.map +1 -0
- package/lib/cmds/validator/slashingProtection/utils.js +1 -1
- package/lib/cmds/validator/slashingProtection/utils.js.map +1 -1
- package/lib/cmds/validator/voluntaryExit.d.ts.map +1 -0
- package/lib/config/beaconNodeOptions.d.ts.map +1 -0
- package/lib/config/beaconParams.d.ts.map +1 -0
- package/lib/config/index.d.ts.map +1 -0
- package/lib/config/peerId.d.ts.map +1 -0
- package/lib/config/types.d.ts.map +1 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/migrations/index.d.ts.map +1 -0
- package/lib/networks/chiado.d.ts.map +1 -0
- package/lib/networks/dev.d.ts.map +1 -0
- package/lib/networks/ephemery.d.ts.map +1 -0
- package/lib/networks/gnosis.d.ts.map +1 -0
- package/lib/networks/holesky.d.ts.map +1 -0
- package/lib/networks/hoodi.d.ts.map +1 -0
- package/lib/networks/index.d.ts.map +1 -0
- package/lib/networks/mainnet.d.ts.map +1 -0
- package/lib/networks/sepolia.d.ts.map +1 -0
- package/lib/options/beaconNodeOptions/api.d.ts.map +1 -0
- package/lib/options/beaconNodeOptions/builder.d.ts.map +1 -0
- package/lib/options/beaconNodeOptions/chain.d.ts.map +1 -0
- package/lib/options/beaconNodeOptions/eth1.d.ts.map +1 -0
- package/lib/options/beaconNodeOptions/execution.d.ts.map +1 -0
- package/lib/options/beaconNodeOptions/index.d.ts.map +1 -0
- package/lib/options/beaconNodeOptions/metrics.d.ts.map +1 -0
- package/lib/options/beaconNodeOptions/monitoring.d.ts.map +1 -0
- package/lib/options/beaconNodeOptions/network.d.ts.map +1 -0
- package/lib/options/beaconNodeOptions/sync.d.ts.map +1 -0
- package/lib/options/globalOptions.d.ts.map +1 -0
- package/lib/options/index.d.ts.map +1 -0
- package/lib/options/logOptions.d.ts.map +1 -0
- package/lib/options/paramsOptions.d.ts.map +1 -0
- package/lib/paths/global.d.ts.map +1 -0
- package/lib/paths/rootDir.d.ts.map +1 -0
- package/lib/util/errors.d.ts.map +1 -0
- package/lib/util/ethers.d.ts.map +1 -0
- package/lib/util/feeRecipient.d.ts.map +1 -0
- package/lib/util/file.d.ts.map +1 -0
- package/lib/util/file.js.map +1 -1
- package/lib/util/format.d.ts.map +1 -0
- package/lib/util/fs.d.ts.map +1 -0
- package/lib/util/gitData/gitDataPath.d.ts.map +1 -0
- package/lib/util/gitData/index.d.ts.map +1 -0
- package/lib/util/gitData/writeGitData.d.ts.map +1 -0
- package/lib/util/index.d.ts.map +1 -0
- package/lib/util/jwt.d.ts.map +1 -0
- package/lib/util/lockfile.d.ts.map +1 -0
- package/lib/util/logger.d.ts.map +1 -0
- package/lib/util/logger.js +1 -1
- package/lib/util/logger.js.map +1 -1
- package/lib/util/object.d.ts.map +1 -0
- package/lib/util/passphrase.d.ts.map +1 -0
- package/lib/util/process.d.ts.map +1 -0
- package/lib/util/progress.d.ts.map +1 -0
- package/lib/util/proposerConfig.d.ts.map +1 -0
- package/lib/util/pruneOldFilesInDir.d.ts.map +1 -0
- package/lib/util/sleep.d.ts.map +1 -0
- package/lib/util/stripOffNewlines.d.ts.map +1 -0
- package/lib/util/types.d.ts.map +1 -0
- package/lib/util/version.d.ts.map +1 -0
- package/package.json +19 -18
- package/src/applyPreset.ts +91 -0
- package/src/cli.ts +56 -0
- package/src/cmds/beacon/handler.ts +267 -0
- package/src/cmds/beacon/index.ts +18 -0
- package/src/cmds/beacon/initBeaconState.ts +275 -0
- package/src/cmds/beacon/initPeerIdAndEnr.ts +199 -0
- package/src/cmds/beacon/options.ts +214 -0
- package/src/cmds/beacon/paths.ts +62 -0
- package/src/cmds/bootnode/handler.ts +203 -0
- package/src/cmds/bootnode/index.ts +13 -0
- package/src/cmds/bootnode/options.ts +109 -0
- package/src/cmds/dev/files.ts +52 -0
- package/src/cmds/dev/handler.ts +86 -0
- package/src/cmds/dev/index.ts +18 -0
- package/src/cmds/dev/options.ts +110 -0
- package/src/cmds/index.ts +15 -0
- package/src/cmds/lightclient/handler.ts +36 -0
- package/src/cmds/lightclient/index.ts +18 -0
- package/src/cmds/lightclient/options.ts +21 -0
- package/src/cmds/validator/blsToExecutionChange.ts +91 -0
- package/src/cmds/validator/handler.ts +300 -0
- package/src/cmds/validator/import.ts +111 -0
- package/src/cmds/validator/index.ts +28 -0
- package/src/cmds/validator/keymanager/decryptKeystoreDefinitions.ts +189 -0
- package/src/cmds/validator/keymanager/decryptKeystores/index.ts +1 -0
- package/src/cmds/validator/keymanager/decryptKeystores/poolSize.ts +16 -0
- package/src/cmds/validator/keymanager/decryptKeystores/threadPool.ts +75 -0
- package/src/cmds/validator/keymanager/decryptKeystores/types.ts +12 -0
- package/src/cmds/validator/keymanager/decryptKeystores/worker.ts +24 -0
- package/src/cmds/validator/keymanager/impl.ts +425 -0
- package/src/cmds/validator/keymanager/interface.ts +35 -0
- package/src/cmds/validator/keymanager/keystoreCache.ts +91 -0
- package/src/cmds/validator/keymanager/persistedKeys.ts +268 -0
- package/src/cmds/validator/keymanager/server.ts +86 -0
- package/src/cmds/validator/list.ts +35 -0
- package/src/cmds/validator/options.ts +461 -0
- package/src/cmds/validator/paths.ts +95 -0
- package/src/cmds/validator/signers/importExternalKeystores.ts +69 -0
- package/src/cmds/validator/signers/index.ts +176 -0
- package/src/cmds/validator/signers/logSigners.ts +81 -0
- package/src/cmds/validator/slashingProtection/export.ts +110 -0
- package/src/cmds/validator/slashingProtection/import.ts +70 -0
- package/src/cmds/validator/slashingProtection/index.ts +12 -0
- package/src/cmds/validator/slashingProtection/options.ts +15 -0
- package/src/cmds/validator/slashingProtection/utils.ts +56 -0
- package/src/cmds/validator/voluntaryExit.ts +232 -0
- package/src/config/beaconNodeOptions.ts +68 -0
- package/src/config/beaconParams.ts +87 -0
- package/src/config/index.ts +3 -0
- package/src/config/peerId.ts +50 -0
- package/src/config/types.ts +3 -0
- package/src/index.ts +28 -0
- package/src/migrations/index.ts +0 -0
- package/src/networks/chiado.ts +20 -0
- package/src/networks/dev.ts +27 -0
- package/src/networks/ephemery.ts +9 -0
- package/src/networks/gnosis.ts +18 -0
- package/src/networks/holesky.ts +17 -0
- package/src/networks/hoodi.ts +16 -0
- package/src/networks/index.ts +236 -0
- package/src/networks/mainnet.ts +34 -0
- package/src/networks/sepolia.ts +17 -0
- package/src/options/beaconNodeOptions/api.ts +110 -0
- package/src/options/beaconNodeOptions/builder.ts +63 -0
- package/src/options/beaconNodeOptions/chain.ts +326 -0
- package/src/options/beaconNodeOptions/eth1.ts +95 -0
- package/src/options/beaconNodeOptions/execution.ts +92 -0
- package/src/options/beaconNodeOptions/index.ts +50 -0
- package/src/options/beaconNodeOptions/metrics.ts +39 -0
- package/src/options/beaconNodeOptions/monitoring.ts +61 -0
- package/src/options/beaconNodeOptions/network.ts +401 -0
- package/src/options/beaconNodeOptions/sync.ts +65 -0
- package/src/options/globalOptions.ts +72 -0
- package/src/options/index.ts +3 -0
- package/src/options/logOptions.ts +70 -0
- package/src/options/paramsOptions.ts +72 -0
- package/src/paths/global.ts +24 -0
- package/src/paths/rootDir.ts +11 -0
- package/src/util/errors.ts +20 -0
- package/src/util/ethers.ts +44 -0
- package/src/util/feeRecipient.ts +6 -0
- package/src/util/file.ts +167 -0
- package/src/util/format.ts +76 -0
- package/src/util/fs.ts +59 -0
- package/src/util/gitData/gitDataPath.ts +48 -0
- package/src/util/gitData/index.ts +70 -0
- package/src/util/gitData/writeGitData.ts +10 -0
- package/src/util/index.ts +17 -0
- package/src/util/jwt.ts +10 -0
- package/src/util/lockfile.ts +45 -0
- package/src/util/logger.ts +105 -0
- package/src/util/object.ts +15 -0
- package/src/util/passphrase.ts +25 -0
- package/src/util/process.ts +25 -0
- package/src/util/progress.ts +58 -0
- package/src/util/proposerConfig.ts +136 -0
- package/src/util/pruneOldFilesInDir.ts +27 -0
- package/src/util/sleep.ts +3 -0
- package/src/util/stripOffNewlines.ts +6 -0
- package/src/util/types.ts +8 -0
- package/src/util/version.ts +74 -0
package/lib/util/file.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file.js","sourceRoot":"","sources":["../../src/util/file.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"file.js","sourceRoot":"","sources":["../../src/util/file.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../src/util/format.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAGlD;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAE9D;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAC,GAAG,MAAM,CAW5E;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAiBlD;AAED,wBAAgB,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,IAAI,CAKhE;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,EAAE,CAalE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../src/util/fs.ts"],"names":[],"mappings":"AAGA;;GAEG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE3C;AAKD;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAUzD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAYvD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,GAAE,MAAM,EAAO,GAAG,MAAM,EAAE,CAUnF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gitDataPath.d.ts","sourceRoot":"","sources":["../../../src/util/gitData/gitDataPath.ts"],"names":[],"mappings":"AAyBA;;;GAGG;AACH,eAAO,MAAM,WAAW,QAAqD,CAAC;AAE9E,kFAAkF;AAClF,MAAM,MAAM,OAAO,GAAG;IACpB,0BAA0B;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,iDAAiD;IACjD,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,yCAAyC;AACzC,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAEvD;AAED,0CAA0C;AAC1C,wBAAgB,eAAe,IAAI,OAAO,CAEzC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/util/gitData/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAC,OAAO,EAAkB,MAAM,kBAAkB,CAAC;AAE1D,4EAA4E;AAC5E,wBAAgB,iBAAiB,IAAI,OAAO,CA8B3C;AAED,wEAAwE;AACxE,wBAAgB,UAAU,IAAI,OAAO,CAKpC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"writeGitData.d.ts","sourceRoot":"","sources":["../../../src/util/gitData/writeGitData.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/util/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,oBAAoB,CAAC;AACnC,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,yBAAyB,CAAC;AACxC,cAAc,YAAY,CAAC;AAC3B,cAAc,uBAAuB,CAAC;AACtC,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jwt.d.ts","sourceRoot":"","sources":["../../src/util/jwt.ts"],"names":[],"mappings":"AAAA,wBAAgB,mBAAmB,CAAC,iBAAiB,EAAE,MAAM,GAAG,MAAM,CASrE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lockfile.d.ts","sourceRoot":"","sources":["../../src/util/lockfile.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAYnD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAarD;AAGD,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG;IAAC,IAAI,EAAE,SAAS,GAAG,cAAc,GAAG,SAAS,CAAA;CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/util/logger.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAC,cAAc,EAAC,MAAM,uBAAuB,CAAC;AAGrD,OAAO,EAAC,UAAU,EAAC,MAAM,6BAA6B,CAAC;AACvD,OAAO,EAAC,OAAO,EAAC,MAAM,0BAA0B,CAAC;AAEjD,eAAO,MAAM,wBAAwB,SAAS,CAAC;AAE/C;;GAEG;AACH,wBAAgB,eAAe,CAC7B,IAAI,EAAE,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,EAC3C,KAAK,EAAE;IAAC,kBAAkB,EAAE,MAAM,CAAA;CAAC,EACnC,MAAM,EAAE,eAAe,EACvB,IAAI,CAAC,EAAE;IAAC,aAAa,CAAC,EAAE,OAAO,CAAA;CAAC,GAC/B,cAAc,CA2BhB;AAyBD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE;IAAC,kBAAkB,EAAE,MAAM,CAAA;CAAC,GAAG,IAAI,CAiBzF;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAQrH"}
|
package/lib/util/logger.js
CHANGED
|
@@ -26,7 +26,7 @@ export function parseLoggerArgs(args, paths, config, opts) {
|
|
|
26
26
|
? {
|
|
27
27
|
format: TimestampFormatCode.EpochSlot,
|
|
28
28
|
genesisTime: args.logFormatGenesisTime,
|
|
29
|
-
secondsPerSlot: config.
|
|
29
|
+
secondsPerSlot: config.SLOT_DURATION_MS / 1000,
|
|
30
30
|
slotsPerEpoch: SLOTS_PER_EPOCH,
|
|
31
31
|
}
|
|
32
32
|
: {
|
package/lib/util/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/util/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAY,mBAAmB,EAAE,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAE5E,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAC,QAAQ,EAAC,MAAM,iBAAiB,CAAC;AAIzC,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAAC;AAE/C;;GAEG;AACH,MAAM,UAAU,eAAe,CAC7B,IAA2C,EAC3C,KAAmC,EACnC,MAAuB,EACvB,IAAgC;IAEhC,OAAO;QACL,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC;QACnC,IAAI,EACF,IAAI,CAAC,OAAO,KAAK,wBAAwB;YACvC,CAAC,CAAC,SAAS;YACX,CAAC,CAAC;gBACE,QAAQ,EAAE,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,kBAAkB;gBAClD,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC;gBACvC,WAAW,EAAE,IAAI,CAAC,kBAAkB;aACrC;QACP,MAAM,EAAE,IAAI,CAAC,SAAS;QACtB,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;QACnE,WAAW,EAAE,IAAI,CAAC,cAAc,IAAI,mBAAmB,CAAC,IAAI,CAAC,cAAc,CAAC;QAC5E,eAAe,EAAE,IAAI,EAAE,aAAa;YAClC,CAAC,CAAC,EAAC,MAAM,EAAE,mBAAmB,CAAC,MAAM,EAAC;YACtC,CAAC,CAAC,IAAI,CAAC,oBAAoB,KAAK,SAAS;gBACvC,CAAC,CAAC;oBACE,MAAM,EAAE,mBAAmB,CAAC,SAAS;oBACrC,WAAW,EAAE,IAAI,CAAC,oBAAoB;oBACtC,cAAc,EAAE,MAAM,CAAC,gBAAgB;
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/util/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAY,mBAAmB,EAAE,UAAU,EAAC,MAAM,kBAAkB,CAAC;AAE5E,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAC,QAAQ,EAAC,MAAM,iBAAiB,CAAC;AAIzC,MAAM,CAAC,MAAM,wBAAwB,GAAG,MAAM,CAAC;AAE/C;;GAEG;AACH,MAAM,UAAU,eAAe,CAC7B,IAA2C,EAC3C,KAAmC,EACnC,MAAuB,EACvB,IAAgC;IAEhC,OAAO;QACL,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC;QACnC,IAAI,EACF,IAAI,CAAC,OAAO,KAAK,wBAAwB;YACvC,CAAC,CAAC,SAAS;YACX,CAAC,CAAC;gBACE,QAAQ,EAAE,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,kBAAkB;gBAClD,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC;gBACvC,WAAW,EAAE,IAAI,CAAC,kBAAkB;aACrC;QACP,MAAM,EAAE,IAAI,CAAC,SAAS;QACtB,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS;QACnE,WAAW,EAAE,IAAI,CAAC,cAAc,IAAI,mBAAmB,CAAC,IAAI,CAAC,cAAc,CAAC;QAC5E,eAAe,EAAE,IAAI,EAAE,aAAa;YAClC,CAAC,CAAC,EAAC,MAAM,EAAE,mBAAmB,CAAC,MAAM,EAAC;YACtC,CAAC,CAAC,IAAI,CAAC,oBAAoB,KAAK,SAAS;gBACvC,CAAC,CAAC;oBACE,MAAM,EAAE,mBAAmB,CAAC,SAAS;oBACrC,WAAW,EAAE,IAAI,CAAC,oBAAoB;oBACtC,cAAc,EAAE,MAAM,CAAC,gBAAgB,GAAG,IAAI;oBAC9C,aAAa,EAAE,eAAe;iBAC/B;gBACH,CAAC,CAAC;oBACE,MAAM,EAAE,mBAAmB,CAAC,WAAW;iBACxC;KACR,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,MAAc;IACpC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,MAAmB,CAAC,EAAE,CAAC;QAC9C,MAAM,KAAK,CAAC,sBAAsB,MAAM,EAAE,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,MAAmB,CAAC;AAC7B,CAAC;AAED,SAAS,aAAa,CAAC,KAAa;IAClC,IAAI,QAAQ,CAAC,KAAiB,CAAC,KAAK,SAAS,EAAE,CAAC;QAC9C,MAAM,KAAK,CAAC,sBAAsB,KAAK,GAAG,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,KAAiB,CAAC;AAC3B,CAAC;AAED,SAAS,mBAAmB,CAAC,iBAA2B;IACtD,MAAM,WAAW,GAA6B,EAAE,CAAC;IACjD,KAAK,MAAM,cAAc,IAAI,iBAAiB,EAAE,CAAC;QAC/C,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACrD,WAAW,CAAC,MAAM,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAa,EAAE,KAAmC;IACjF,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,IAAI,KAAK,CAAC,kBAAkB,CAAC;IAC1D,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACzC,MAAM,YAAY,GAAG,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAC/C,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,YAAY,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACxE,MAAM,QAAQ,GAAG,EAAE;SAChB,WAAW,CAAC,MAAM,EAAE,EAAC,aAAa,EAAE,IAAI,EAAC,CAAC;SAC1C,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC;SAC3B,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;SACpB,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;SACrG,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC;IACxD,eAAe;IACf,KAAK,MAAM,QAAQ,IAAI,QAAQ,EAAE,CAAC;QAChC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC1B,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAc,EAAE,SAAiB,EAAE,WAAmB,EAAE,QAAgB;IAC1G,MAAM,eAAe,GAAG,QAAQ,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACvD,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,GAAG,MAAM,iCAAiC,SAAS,EAAE,CAAC,CAAC,CAAC;IACnG,kEAAkE;IAClE,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,GAAG,eAAe,EAAE,CAAC;QAC9E,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../../src/util/object.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAC,MAAM,iBAAiB,CAAC;AAEjD;;GAEG;AAGH,wBAAgB,wBAAwB,CAAC,CAAC,SAAS;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAOpG"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"passphrase.d.ts","sourceRoot":"","sources":["../../src/util/passphrase.ts"],"names":[],"mappings":"AAGA;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAiBjE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process.d.ts","sourceRoot":"","sources":["../../src/util/process.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAChC,eAAe,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,EACpC,KAAK,GAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAkB,GACzC,IAAI,CAaN"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progress.d.ts","sourceRoot":"","sources":["../../src/util/progress.ts"],"names":[],"mappings":"AACA,KAAK,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;AAC3C,KAAK,YAAY,GAAG,CAAC,IAAI,EAAE;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAC,KAAK,IAAI,CAAC;AAE7G,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,MAAM,EACN,WAAW,EACX,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,WAAW,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,YAAY,CAAC;CACxB,GAAG,UAAU,CA2Cb"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proposerConfig.d.ts","sourceRoot":"","sources":["../../src/util/proposerConfig.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,MAAM,EAAC,MAAM,eAAe,CAAC;AACrC,OAAO,EAAC,uBAAuB,EAAC,MAAM,qBAAqB,CAAC;AAI5D,KAAK,cAAc,GAAG,uBAAuB,CAAC,eAAe,CAAC,CAAC;AAE/D,KAAK,yBAAyB,GAAG;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0BAA0B,CAAC,EAAE,MAAM,CAAC;IACpC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE;QAGR,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,gBAAgB,CAAC;QAC9C,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC;CACH,CAAC;AAOF,wBAAgB,mBAAmB,CACjC,cAAc,EAAE,MAAM,EACtB,iBAAiB,CAAC,EAAE,cAAc,GACjC,uBAAuB,CAczB;AAuDD,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,yBAAyB,CAInG;AAED,wBAAgB,qBAAqB,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,gBAAgB,GAAG,SAAS,CAoB9G;AAED,wBAAgB,uBAAuB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAQhF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pruneOldFilesInDir.d.ts","sourceRoot":"","sources":["../../src/util/pruneOldFilesInDir.ts"],"names":[],"mappings":"AAGA,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAuB5E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sleep.d.ts","sourceRoot":"","sources":["../../src/util/sleep.ts"],"names":[],"mappings":"AAAA,wBAAgB,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAE/C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"stripOffNewlines.d.ts","sourceRoot":"","sources":["../../src/util/stripOffNewlines.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAElD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/util/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,wBAAgB,UAAU,CAAC,CAAC,SAAS;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAC,EAAE,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,EAAE,CAE5E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/util/version.ts"],"names":[],"mappings":"AAiBA;;;;;;GAMG;AACH,wBAAgB,cAAc,IAAI;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB,CA4BA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chainsafe/lodestar",
|
|
3
|
-
"version": "1.35.0-dev.
|
|
3
|
+
"version": "1.35.0-dev.51e1ede62c",
|
|
4
4
|
"description": "Command line interface for lodestar",
|
|
5
5
|
"author": "ChainSafe Systems",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -11,10 +11,11 @@
|
|
|
11
11
|
"type": "module",
|
|
12
12
|
"exports": "./lib/index.js",
|
|
13
13
|
"files": [
|
|
14
|
-
"
|
|
15
|
-
"lib
|
|
16
|
-
"
|
|
17
|
-
".git-data.json"
|
|
14
|
+
"src",
|
|
15
|
+
"lib",
|
|
16
|
+
"bin",
|
|
17
|
+
".git-data.json",
|
|
18
|
+
"!**/*.tsbuildinfo"
|
|
18
19
|
],
|
|
19
20
|
"bin": {
|
|
20
21
|
"lodestar": "lib/index.js"
|
|
@@ -62,17 +63,17 @@
|
|
|
62
63
|
"@libp2p/crypto": "^5.0.15",
|
|
63
64
|
"@libp2p/interface": "^2.7.0",
|
|
64
65
|
"@libp2p/peer-id": "^5.1.0",
|
|
65
|
-
"@lodestar/api": "1.35.0-dev.
|
|
66
|
-
"@lodestar/beacon-node": "1.35.0-dev.
|
|
67
|
-
"@lodestar/config": "1.35.0-dev.
|
|
68
|
-
"@lodestar/db": "1.35.0-dev.
|
|
69
|
-
"@lodestar/light-client": "1.35.0-dev.
|
|
70
|
-
"@lodestar/logger": "1.35.0-dev.
|
|
71
|
-
"@lodestar/params": "1.35.0-dev.
|
|
72
|
-
"@lodestar/state-transition": "1.35.0-dev.
|
|
73
|
-
"@lodestar/types": "1.35.0-dev.
|
|
74
|
-
"@lodestar/utils": "1.35.0-dev.
|
|
75
|
-
"@lodestar/validator": "1.35.0-dev.
|
|
66
|
+
"@lodestar/api": "1.35.0-dev.51e1ede62c",
|
|
67
|
+
"@lodestar/beacon-node": "1.35.0-dev.51e1ede62c",
|
|
68
|
+
"@lodestar/config": "1.35.0-dev.51e1ede62c",
|
|
69
|
+
"@lodestar/db": "1.35.0-dev.51e1ede62c",
|
|
70
|
+
"@lodestar/light-client": "1.35.0-dev.51e1ede62c",
|
|
71
|
+
"@lodestar/logger": "1.35.0-dev.51e1ede62c",
|
|
72
|
+
"@lodestar/params": "1.35.0-dev.51e1ede62c",
|
|
73
|
+
"@lodestar/state-transition": "1.35.0-dev.51e1ede62c",
|
|
74
|
+
"@lodestar/types": "1.35.0-dev.51e1ede62c",
|
|
75
|
+
"@lodestar/utils": "1.35.0-dev.51e1ede62c",
|
|
76
|
+
"@lodestar/validator": "1.35.0-dev.51e1ede62c",
|
|
76
77
|
"@multiformats/multiaddr": "^12.1.3",
|
|
77
78
|
"deepmerge": "^4.3.1",
|
|
78
79
|
"ethers": "^6.7.0",
|
|
@@ -87,12 +88,12 @@
|
|
|
87
88
|
"yargs": "^17.7.1"
|
|
88
89
|
},
|
|
89
90
|
"devDependencies": {
|
|
90
|
-
"@lodestar/test-utils": "1.35.0-dev.
|
|
91
|
+
"@lodestar/test-utils": "1.35.0-dev.51e1ede62c",
|
|
91
92
|
"@types/debug": "^4.1.7",
|
|
92
93
|
"@types/inquirer": "^9.0.3",
|
|
93
94
|
"@types/proper-lockfile": "^4.1.4",
|
|
94
95
|
"@types/yargs": "^17.0.24",
|
|
95
96
|
"fastify": "^5.2.1"
|
|
96
97
|
},
|
|
97
|
-
"gitHead": "
|
|
98
|
+
"gitHead": "efe4d5f8f634ad6d37ea008bffad3f12d0cc7a97"
|
|
98
99
|
}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
// MUST import this file first before anything and not import any Lodestar code.
|
|
2
|
+
import {setHasher} from "@chainsafe/persistent-merkle-tree";
|
|
3
|
+
import {hasher as hashtreeHasher} from "@chainsafe/persistent-merkle-tree/hasher/hashtree";
|
|
4
|
+
|
|
5
|
+
// Without setting this first, persistent-merkle-tree will use noble instead
|
|
6
|
+
setHasher(hashtreeHasher);
|
|
7
|
+
|
|
8
|
+
//
|
|
9
|
+
// ## Rationale
|
|
10
|
+
//
|
|
11
|
+
// Lodestar implemented PRESET / CONFIG separation to allow importing types and preset constants directly
|
|
12
|
+
// see https://github.com/ChainSafe/lodestar/pull/2585
|
|
13
|
+
//
|
|
14
|
+
// However this prevents dynamic configuration changes which is exactly what the CLI required before.
|
|
15
|
+
// - The dev command can't apply the minimal preset dynamically
|
|
16
|
+
// - `--network gnosis` can't apply a different preset dynamically
|
|
17
|
+
// - `--network chiado` can't apply a different preset dynamically
|
|
18
|
+
//
|
|
19
|
+
// Running this file allows us to keep a static export strategy while NOT requiring users to
|
|
20
|
+
// set LODESTAR_PRESET manually every time.
|
|
21
|
+
|
|
22
|
+
// IMPORTANT: only import Lodestar code here which does not import any other Lodestar libraries
|
|
23
|
+
import {PresetName, presetFromJson, setActivePreset} from "@lodestar/params/setPreset";
|
|
24
|
+
import {readFile} from "./util/file.js";
|
|
25
|
+
|
|
26
|
+
const network = valueOfArg("network");
|
|
27
|
+
const preset = valueOfArg("preset");
|
|
28
|
+
const presetFile = valueOfArg("presetFile");
|
|
29
|
+
|
|
30
|
+
// Apply preset flag if present
|
|
31
|
+
if (preset) {
|
|
32
|
+
process.env.LODESTAR_PRESET = preset;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
// If ENV is set overrides, network (otherwise can not override network --dev in mainnet mode)
|
|
36
|
+
else if (process.env.LODESTAR_PRESET) {
|
|
37
|
+
// break
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
// Translate network to preset
|
|
41
|
+
else if (network) {
|
|
42
|
+
if (network === "dev") {
|
|
43
|
+
process.env.LODESTAR_PRESET = "minimal";
|
|
44
|
+
// the kzg library has hardcoded the mainnet value, do not use presets
|
|
45
|
+
setActivePreset(PresetName.minimal, {FIELD_ELEMENTS_PER_BLOB: 4096});
|
|
46
|
+
} else if (network === "gnosis" || network === "chiado") {
|
|
47
|
+
process.env.LODESTAR_PRESET = "gnosis";
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// If running dev top level command `$ lodestar dev`, apply minimal
|
|
52
|
+
else if (process.argv[2] === "dev") {
|
|
53
|
+
process.env.LODESTAR_PRESET = "minimal";
|
|
54
|
+
process.env.LODESTAR_NETWORK = "dev";
|
|
55
|
+
// the kzg library has hardcoded the mainnet value, do not use presets
|
|
56
|
+
setActivePreset(PresetName.minimal, {FIELD_ELEMENTS_PER_BLOB: 4096});
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
if (presetFile) {
|
|
60
|
+
// Override the active preset with custom values from file
|
|
61
|
+
// Do not modify the preset to use as a base by passing null
|
|
62
|
+
setActivePreset(null, presetFromJson(readFile(presetFile) ?? {}));
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* Valid syntax
|
|
67
|
+
* - `--preset minimal`
|
|
68
|
+
* - `--preset=minimal`
|
|
69
|
+
*/
|
|
70
|
+
function valueOfArg(argName: string): string | null {
|
|
71
|
+
// Syntax `--preset minimal`
|
|
72
|
+
// process.argv = ["--preset", "minimal"];
|
|
73
|
+
|
|
74
|
+
{
|
|
75
|
+
const index = process.argv.indexOf(`--${argName}`);
|
|
76
|
+
if (index > -1) {
|
|
77
|
+
return process.argv[index + 1] ?? "";
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
// Syntax `--preset=minimal`
|
|
82
|
+
{
|
|
83
|
+
const prefix = `--${argName}=`;
|
|
84
|
+
const item = process.argv.find((arg) => arg.startsWith(prefix));
|
|
85
|
+
if (item) {
|
|
86
|
+
return item.slice(prefix.length);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
return null;
|
|
91
|
+
}
|
package/src/cli.ts
ADDED
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
// Must not use `* as yargs`, see https://github.com/yargs/yargs/issues/1131
|
|
2
|
+
import yargs, {Argv} from "yargs";
|
|
3
|
+
import {hideBin} from "yargs/helpers";
|
|
4
|
+
import {registerCommandToYargs} from "@lodestar/utils";
|
|
5
|
+
import {cmds} from "./cmds/index.js";
|
|
6
|
+
import {globalOptions, rcConfigOption} from "./options/index.js";
|
|
7
|
+
import {getVersionData} from "./util/version.js";
|
|
8
|
+
|
|
9
|
+
const {version} = getVersionData();
|
|
10
|
+
const topBanner = `🌟 Lodestar: TypeScript Implementation of the Ethereum Consensus Beacon Chain.
|
|
11
|
+
* Version: ${version}
|
|
12
|
+
* by ChainSafe Systems, 2018-${new Date().getFullYear()}`;
|
|
13
|
+
const bottomBanner = `📖 For more information, check the CLI reference:
|
|
14
|
+
* https://chainsafe.github.io/lodestar/reference/cli
|
|
15
|
+
|
|
16
|
+
✍️ Give feedback and report issues on GitHub:
|
|
17
|
+
* https://github.com/ChainSafe/lodestar`;
|
|
18
|
+
|
|
19
|
+
export const yarg = yargs((hideBin as (args: string[]) => string[])(process.argv));
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Common factory for running the CLI and running integration tests
|
|
23
|
+
* The CLI must actually be executed in a different script
|
|
24
|
+
*/
|
|
25
|
+
export function getLodestarCli(): Argv {
|
|
26
|
+
const lodestar = yarg
|
|
27
|
+
.env("LODESTAR")
|
|
28
|
+
.parserConfiguration({
|
|
29
|
+
// As of yargs v16.1.0 dot-notation breaks strictOptions()
|
|
30
|
+
// Manually processing options is typesafe tho more verbose
|
|
31
|
+
"dot-notation": false,
|
|
32
|
+
})
|
|
33
|
+
.options(globalOptions)
|
|
34
|
+
// blank scriptName so that help text doesn't display the cli name before each command
|
|
35
|
+
.scriptName("")
|
|
36
|
+
.demandCommand(1)
|
|
37
|
+
// Control show help behaviour below on .fail()
|
|
38
|
+
.showHelpOnFail(false)
|
|
39
|
+
.usage(topBanner)
|
|
40
|
+
.epilogue(bottomBanner)
|
|
41
|
+
.version(topBanner)
|
|
42
|
+
.alias("h", "help")
|
|
43
|
+
.alias("v", "version")
|
|
44
|
+
.recommendCommands();
|
|
45
|
+
|
|
46
|
+
// yargs.command and all ./cmds
|
|
47
|
+
for (const cmd of cmds) {
|
|
48
|
+
registerCommandToYargs(lodestar, cmd);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// throw an error if we see an unrecognized cmd
|
|
52
|
+
lodestar.recommendCommands().strict();
|
|
53
|
+
lodestar.config(...rcConfigOption);
|
|
54
|
+
|
|
55
|
+
return lodestar;
|
|
56
|
+
}
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import {getHeapStatistics} from "node:v8";
|
|
3
|
+
import {SignableENR} from "@chainsafe/enr";
|
|
4
|
+
import {hasher} from "@chainsafe/persistent-merkle-tree";
|
|
5
|
+
import {BeaconDb, BeaconNode} from "@lodestar/beacon-node";
|
|
6
|
+
import {ChainForkConfig, createBeaconConfig} from "@lodestar/config";
|
|
7
|
+
import {LevelDbController} from "@lodestar/db/controller/level";
|
|
8
|
+
import {LoggerNode, getNodeLogger} from "@lodestar/logger/node";
|
|
9
|
+
import {ACTIVE_PRESET, PresetName} from "@lodestar/params";
|
|
10
|
+
import {ErrorAborted, bytesToInt} from "@lodestar/utils";
|
|
11
|
+
import {ProcessShutdownCallback} from "@lodestar/validator";
|
|
12
|
+
import {BeaconNodeOptions, getBeaconConfigFromArgs} from "../../config/index.js";
|
|
13
|
+
import {getNetworkBootnodes, getNetworkData, isKnownNetworkName, readBootnodes} from "../../networks/index.js";
|
|
14
|
+
import {GlobalArgs, parseBeaconNodeArgs} from "../../options/index.js";
|
|
15
|
+
import {LogArgs} from "../../options/logOptions.js";
|
|
16
|
+
import {
|
|
17
|
+
cleanOldLogFiles,
|
|
18
|
+
mkdir,
|
|
19
|
+
onGracefulShutdown,
|
|
20
|
+
parseLoggerArgs,
|
|
21
|
+
pruneOldFilesInDir,
|
|
22
|
+
writeFile600Perm,
|
|
23
|
+
} from "../../util/index.js";
|
|
24
|
+
import {getVersionData} from "../../util/version.js";
|
|
25
|
+
import {initBeaconState} from "./initBeaconState.js";
|
|
26
|
+
import {initPrivateKeyAndEnr} from "./initPeerIdAndEnr.js";
|
|
27
|
+
import {BeaconArgs} from "./options.js";
|
|
28
|
+
import {getBeaconPaths} from "./paths.js";
|
|
29
|
+
|
|
30
|
+
const DEFAULT_RETENTION_SSZ_OBJECTS_HOURS = 15 * 24;
|
|
31
|
+
const HOURS_TO_MS = 3600 * 1000;
|
|
32
|
+
const EIGHT_GB = 8 * 1024 * 1024 * 1024;
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* Runs a beacon node.
|
|
36
|
+
*/
|
|
37
|
+
export async function beaconHandler(args: BeaconArgs & GlobalArgs): Promise<void> {
|
|
38
|
+
const {config, options, beaconPaths, network, version, commit, privateKey, logger} = await beaconHandlerInit(args);
|
|
39
|
+
|
|
40
|
+
if (hasher.name !== "hashtree") {
|
|
41
|
+
logger.warn(`hashtree is not supported, using hasher ${hasher.name}`);
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
const heapSizeLimit = getHeapStatistics().heap_size_limit;
|
|
45
|
+
if (heapSizeLimit < EIGHT_GB) {
|
|
46
|
+
logger.warn(
|
|
47
|
+
`Node.js heap size limit is too low, consider increasing it to at least ${EIGHT_GB}. See https://chainsafe.github.io/lodestar/faqs/#running-a-beacon-node for more details.`
|
|
48
|
+
);
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
// initialize directories
|
|
52
|
+
mkdir(beaconPaths.dataDir);
|
|
53
|
+
mkdir(beaconPaths.beaconDir);
|
|
54
|
+
mkdir(beaconPaths.dbDir);
|
|
55
|
+
|
|
56
|
+
const abortController = new AbortController();
|
|
57
|
+
|
|
58
|
+
logger.info("Lodestar", {network, version, commit});
|
|
59
|
+
// Callback for beacon to request forced exit, for e.g. in case of irrecoverable
|
|
60
|
+
// forkchoice errors
|
|
61
|
+
const processShutdownCallback: ProcessShutdownCallback = (err) => {
|
|
62
|
+
logger.error("Process shutdown requested", {}, err);
|
|
63
|
+
process.kill(process.pid, "SIGINT");
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
if (ACTIVE_PRESET === PresetName.minimal) logger.info("ACTIVE_PRESET == minimal preset");
|
|
67
|
+
|
|
68
|
+
const db = new BeaconDb(config, await LevelDbController.create(options.db, {metrics: null, logger}));
|
|
69
|
+
logger.info("Connected to LevelDB database", {path: options.db.name});
|
|
70
|
+
|
|
71
|
+
// BeaconNode setup
|
|
72
|
+
try {
|
|
73
|
+
const {anchorState, wsCheckpoint} = await initBeaconState(
|
|
74
|
+
options,
|
|
75
|
+
args,
|
|
76
|
+
config,
|
|
77
|
+
db,
|
|
78
|
+
logger,
|
|
79
|
+
abortController.signal
|
|
80
|
+
);
|
|
81
|
+
const beaconConfig = createBeaconConfig(config, anchorState.genesisValidatorsRoot);
|
|
82
|
+
const node = await BeaconNode.init({
|
|
83
|
+
opts: options,
|
|
84
|
+
config: beaconConfig,
|
|
85
|
+
db,
|
|
86
|
+
logger,
|
|
87
|
+
processShutdownCallback,
|
|
88
|
+
privateKey,
|
|
89
|
+
dataDir: beaconPaths.dataDir,
|
|
90
|
+
peerStoreDir: beaconPaths.peerStoreDir,
|
|
91
|
+
anchorState,
|
|
92
|
+
wsCheckpoint,
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
// dev debug option to have access to the BN instance
|
|
96
|
+
if (args.attachToGlobalThis) {
|
|
97
|
+
(globalThis as unknown as {bn: BeaconNode}).bn = node;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
// Prune invalid SSZ objects every interval
|
|
101
|
+
const {persistInvalidSszObjectsDir, persistInvalidSszObjects} = options.chain;
|
|
102
|
+
const pruneInvalidSSZObjectsInterval =
|
|
103
|
+
persistInvalidSszObjectsDir && persistInvalidSszObjects
|
|
104
|
+
? setInterval(() => {
|
|
105
|
+
try {
|
|
106
|
+
const deletedFileCount = pruneOldFilesInDir(
|
|
107
|
+
persistInvalidSszObjectsDir,
|
|
108
|
+
(args.persistInvalidSszObjectsRetentionHours ?? DEFAULT_RETENTION_SSZ_OBJECTS_HOURS) * HOURS_TO_MS
|
|
109
|
+
);
|
|
110
|
+
logger.info("Pruned invalid SSZ objects", {deletedFileCount});
|
|
111
|
+
} catch (e) {
|
|
112
|
+
logger.warn("Error pruning invalid SSZ objects", {persistInvalidSszObjectsDir}, e as Error);
|
|
113
|
+
}
|
|
114
|
+
// Run every ~1 hour
|
|
115
|
+
}, HOURS_TO_MS)
|
|
116
|
+
: null;
|
|
117
|
+
|
|
118
|
+
// Intercept SIGINT signal, to perform final ops before exiting
|
|
119
|
+
onGracefulShutdown(async () => {
|
|
120
|
+
if (args.persistNetworkIdentity) {
|
|
121
|
+
try {
|
|
122
|
+
const networkIdentity = await node.network.getNetworkIdentity();
|
|
123
|
+
const enrPath = path.join(beaconPaths.beaconDir, "enr");
|
|
124
|
+
writeFile600Perm(enrPath, networkIdentity.enr);
|
|
125
|
+
} catch (e) {
|
|
126
|
+
logger.warn("Unable to persist enr", {}, e as Error);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
abortController.abort();
|
|
130
|
+
|
|
131
|
+
if (pruneInvalidSSZObjectsInterval !== null) {
|
|
132
|
+
clearInterval(pruneInvalidSSZObjectsInterval);
|
|
133
|
+
}
|
|
134
|
+
}, logger.info.bind(logger));
|
|
135
|
+
|
|
136
|
+
abortController.signal.addEventListener(
|
|
137
|
+
"abort",
|
|
138
|
+
async () => {
|
|
139
|
+
try {
|
|
140
|
+
await node.close();
|
|
141
|
+
logger.debug("Beacon node closed");
|
|
142
|
+
// Explicitly exit until active handles issue is resolved
|
|
143
|
+
// See https://github.com/ChainSafe/lodestar/issues/5642
|
|
144
|
+
process.exit(0);
|
|
145
|
+
} catch (e) {
|
|
146
|
+
logger.error("Error closing beacon node", {}, e as Error);
|
|
147
|
+
// Make sure db is always closed gracefully
|
|
148
|
+
await db.close();
|
|
149
|
+
// Must explicitly exit process due to potential active handles
|
|
150
|
+
process.exit(1);
|
|
151
|
+
}
|
|
152
|
+
},
|
|
153
|
+
{once: true}
|
|
154
|
+
);
|
|
155
|
+
} catch (e) {
|
|
156
|
+
await db.close();
|
|
157
|
+
|
|
158
|
+
if (e instanceof ErrorAborted) {
|
|
159
|
+
logger.info(e.message); // Let the user know the abort was received but don't print as error
|
|
160
|
+
} else {
|
|
161
|
+
throw e;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
|
|
166
|
+
/** Separate function to simplify unit testing of options merging */
|
|
167
|
+
export async function beaconHandlerInit(args: BeaconArgs & GlobalArgs) {
|
|
168
|
+
const {config, network} = getBeaconConfigFromArgs(args);
|
|
169
|
+
|
|
170
|
+
const beaconNodeOptions = new BeaconNodeOptions(parseBeaconNodeArgs(args));
|
|
171
|
+
|
|
172
|
+
const {version, commit} = getVersionData();
|
|
173
|
+
const beaconPaths = getBeaconPaths(args, network);
|
|
174
|
+
// TODO: Rename db.name to db.path or db.location
|
|
175
|
+
beaconNodeOptions.set({db: {name: beaconPaths.dbDir}});
|
|
176
|
+
beaconNodeOptions.set({
|
|
177
|
+
chain: {
|
|
178
|
+
validatorMonitorLogs: args.validatorMonitorLogs,
|
|
179
|
+
persistInvalidSszObjectsDir: beaconPaths.persistInvalidSszObjectsDir,
|
|
180
|
+
persistOrphanedBlocksDir: beaconPaths.persistOrphanedBlocksDir,
|
|
181
|
+
},
|
|
182
|
+
});
|
|
183
|
+
// Add metrics metadata to show versioning + network info in Prometheus + Grafana
|
|
184
|
+
beaconNodeOptions.set({metrics: {metadata: {version, commit, network}}});
|
|
185
|
+
// Add detailed version string for API node/version endpoint
|
|
186
|
+
beaconNodeOptions.set({api: {commit, version}});
|
|
187
|
+
|
|
188
|
+
if (args.supernode) {
|
|
189
|
+
beaconNodeOptions.set({chain: {supernode: true}, network: {supernode: true}});
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
// Set known depositContractDeployBlock
|
|
193
|
+
if (isKnownNetworkName(network)) {
|
|
194
|
+
const {depositContractDeployBlock} = getNetworkData(network);
|
|
195
|
+
beaconNodeOptions.set({eth1: {depositContractDeployBlock}});
|
|
196
|
+
}
|
|
197
|
+
|
|
198
|
+
const logger = initLogger(args, beaconPaths.dataDir, config);
|
|
199
|
+
const {privateKey, enr} = await initPrivateKeyAndEnr(args, beaconPaths.beaconDir, logger);
|
|
200
|
+
|
|
201
|
+
if (args.discv5 !== false) {
|
|
202
|
+
// Inject ENR to beacon options
|
|
203
|
+
beaconNodeOptions.set({network: {discv5: {enr: enr.encodeTxt(), config: {enrUpdate: !enr.ip && !enr.ip6}}}});
|
|
204
|
+
|
|
205
|
+
// Combine bootnodes from different sources
|
|
206
|
+
const bootnodes = (beaconNodeOptions.get().network?.discv5?.bootEnrs ?? []).concat(
|
|
207
|
+
args.bootnodesFile ? readBootnodes(args.bootnodesFile) : [],
|
|
208
|
+
isKnownNetworkName(network) ? await getNetworkBootnodes(network) : []
|
|
209
|
+
);
|
|
210
|
+
// Deduplicate and set combined bootnodes
|
|
211
|
+
beaconNodeOptions.set({network: {discv5: {bootEnrs: [...new Set(bootnodes)]}}});
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
beaconNodeOptions.set({chain: {initialCustodyGroupCount: getInitialCustodyGroupCount(args, config, enr)}});
|
|
215
|
+
|
|
216
|
+
if (args.disableLightClientServer) {
|
|
217
|
+
beaconNodeOptions.set({chain: {disableLightClientServer: true}});
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
if (args.private) {
|
|
221
|
+
beaconNodeOptions.set({network: {private: true}, api: {private: true}});
|
|
222
|
+
} else {
|
|
223
|
+
const versionStr = `Lodestar/${version}`;
|
|
224
|
+
const simpleVersionStr = version.split("/")[0];
|
|
225
|
+
// Add simple version string for libp2p agent version
|
|
226
|
+
beaconNodeOptions.set({network: {version: simpleVersionStr}});
|
|
227
|
+
// Add User-Agent header to all builder requests
|
|
228
|
+
beaconNodeOptions.set({executionBuilder: {userAgent: versionStr}});
|
|
229
|
+
// Set jwt version with version string
|
|
230
|
+
beaconNodeOptions.set({executionEngine: {jwtVersion: versionStr}, eth1: {jwtVersion: versionStr}});
|
|
231
|
+
// Set commit and version for ClientVersion
|
|
232
|
+
beaconNodeOptions.set({executionEngine: {commit, version}});
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
// Render final options
|
|
236
|
+
const options = beaconNodeOptions.getWithDefaults();
|
|
237
|
+
|
|
238
|
+
return {config, options, beaconPaths, network, version, commit, privateKey, logger};
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
export function initLogger(
|
|
242
|
+
args: LogArgs & Pick<GlobalArgs, "dataDir">,
|
|
243
|
+
dataDir: string,
|
|
244
|
+
config: ChainForkConfig,
|
|
245
|
+
fileName = "beacon.log"
|
|
246
|
+
): LoggerNode {
|
|
247
|
+
const defaultLogFilepath = path.join(dataDir, fileName);
|
|
248
|
+
const logger = getNodeLogger(parseLoggerArgs(args, {defaultLogFilepath}, config));
|
|
249
|
+
try {
|
|
250
|
+
cleanOldLogFiles(args, {defaultLogFilepath});
|
|
251
|
+
} catch (e) {
|
|
252
|
+
logger.debug("Not able to delete log files", {}, e as Error);
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
return logger;
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
function getInitialCustodyGroupCount(args: BeaconArgs & GlobalArgs, config: ChainForkConfig, enr: SignableENR): number {
|
|
259
|
+
if (args.supernode) {
|
|
260
|
+
return config.NUMBER_OF_CUSTODY_GROUPS;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
const enrCgcBytes = enr.kvs.get("cgc");
|
|
264
|
+
const enrCgc = enrCgcBytes != null ? bytesToInt(enrCgcBytes, "be") : 0;
|
|
265
|
+
|
|
266
|
+
return Math.max(enrCgc, config.CUSTODY_REQUIREMENT);
|
|
267
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import {CliCommand, CliCommandOptions} from "@lodestar/utils";
|
|
2
|
+
import {GlobalArgs} from "../../options/index.js";
|
|
3
|
+
import {beaconHandler} from "./handler.js";
|
|
4
|
+
import {BeaconArgs, beaconOptions} from "./options.js";
|
|
5
|
+
|
|
6
|
+
export const beacon: CliCommand<BeaconArgs, GlobalArgs> = {
|
|
7
|
+
command: "beacon",
|
|
8
|
+
describe: "Run a beacon chain node",
|
|
9
|
+
docsFolder: "run/beacon-management",
|
|
10
|
+
examples: [
|
|
11
|
+
{
|
|
12
|
+
command: "beacon --network hoodi",
|
|
13
|
+
description: "Run a beacon chain node and connect to the hoodi testnet",
|
|
14
|
+
},
|
|
15
|
+
],
|
|
16
|
+
options: beaconOptions as CliCommandOptions<BeaconArgs>,
|
|
17
|
+
handler: beaconHandler,
|
|
18
|
+
};
|