@lodestar/beacon-node 1.39.0-dev.aceb5b7416 → 1.39.0-dev.b37f2bd1bd
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/lib/api/impl/beacon/blocks/utils.js +1 -1
- package/lib/api/impl/beacon/blocks/utils.js.map +1 -1
- package/lib/chain/chain.d.ts +4 -1
- package/lib/chain/chain.d.ts.map +1 -1
- package/lib/chain/chain.js +12 -2
- package/lib/chain/chain.js.map +1 -1
- package/lib/chain/genesis/genesis.d.ts +51 -0
- package/lib/chain/genesis/genesis.d.ts.map +1 -0
- package/lib/chain/genesis/genesis.js +123 -0
- package/lib/chain/genesis/genesis.js.map +1 -0
- package/lib/chain/genesis/interface.d.ts +13 -0
- package/lib/chain/genesis/interface.d.ts.map +1 -0
- package/lib/chain/genesis/interface.js +2 -0
- package/lib/chain/genesis/interface.js.map +1 -0
- package/lib/chain/initState.d.ts +14 -1
- package/lib/chain/initState.d.ts.map +1 -1
- package/lib/chain/initState.js +62 -1
- package/lib/chain/initState.js.map +1 -1
- package/lib/chain/interface.d.ts +2 -0
- package/lib/chain/interface.d.ts.map +1 -1
- package/lib/chain/interface.js.map +1 -1
- package/lib/chain/prepareNextSlot.d.ts +4 -0
- package/lib/chain/prepareNextSlot.d.ts.map +1 -1
- package/lib/chain/prepareNextSlot.js +21 -1
- package/lib/chain/prepareNextSlot.js.map +1 -1
- package/lib/chain/produceBlock/produceBlockBody.d.ts +1 -0
- package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
- package/lib/chain/produceBlock/produceBlockBody.js +9 -6
- package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
- package/lib/db/beacon.d.ts +7 -1
- package/lib/db/beacon.d.ts.map +1 -1
- package/lib/db/beacon.js +12 -1
- package/lib/db/beacon.js.map +1 -1
- package/lib/db/buckets.d.ts +6 -0
- package/lib/db/buckets.d.ts.map +1 -1
- package/lib/db/buckets.js +7 -6
- package/lib/db/buckets.js.map +1 -1
- package/lib/db/interface.d.ts +7 -1
- package/lib/db/interface.d.ts.map +1 -1
- package/lib/db/repositories/blockArchiveIndex.d.ts +2 -2
- package/lib/db/repositories/blockArchiveIndex.d.ts.map +1 -1
- package/lib/db/repositories/depositDataRoot.d.ts +22 -0
- package/lib/db/repositories/depositDataRoot.d.ts.map +1 -0
- package/lib/db/repositories/depositDataRoot.js +62 -0
- package/lib/db/repositories/depositDataRoot.js.map +1 -0
- package/lib/db/repositories/depositEvent.d.ts +13 -0
- package/lib/db/repositories/depositEvent.d.ts.map +1 -0
- package/lib/db/repositories/depositEvent.js +27 -0
- package/lib/db/repositories/depositEvent.js.map +1 -0
- package/lib/db/repositories/eth1Data.d.ts +13 -0
- package/lib/db/repositories/eth1Data.d.ts.map +1 -0
- package/lib/db/repositories/eth1Data.js +26 -0
- package/lib/db/repositories/eth1Data.js.map +1 -0
- package/lib/db/repositories/index.d.ts +3 -0
- package/lib/db/repositories/index.d.ts.map +1 -1
- package/lib/db/repositories/index.js +3 -0
- package/lib/db/repositories/index.js.map +1 -1
- package/lib/db/single/index.d.ts +3 -0
- package/lib/db/single/index.d.ts.map +1 -0
- package/lib/db/single/index.js +3 -0
- package/lib/db/single/index.js.map +1 -0
- package/lib/db/single/preGenesisState.d.ts +16 -0
- package/lib/db/single/preGenesisState.d.ts.map +1 -0
- package/lib/db/single/preGenesisState.js +29 -0
- package/lib/db/single/preGenesisState.js.map +1 -0
- package/lib/db/single/preGenesisStateLastProcessedBlock.d.ts +14 -0
- package/lib/db/single/preGenesisStateLastProcessedBlock.d.ts.map +1 -0
- package/lib/db/single/preGenesisStateLastProcessedBlock.js +27 -0
- package/lib/db/single/preGenesisStateLastProcessedBlock.js.map +1 -0
- package/lib/eth1/errors.d.ts +66 -0
- package/lib/eth1/errors.d.ts.map +1 -0
- package/lib/eth1/errors.js +27 -0
- package/lib/eth1/errors.js.map +1 -0
- package/lib/eth1/eth1DataCache.d.ts +19 -0
- package/lib/eth1/eth1DataCache.d.ts.map +1 -0
- package/lib/eth1/eth1DataCache.js +19 -0
- package/lib/eth1/eth1DataCache.js.map +1 -0
- package/lib/eth1/eth1DepositDataTracker.d.ts +80 -0
- package/lib/eth1/eth1DepositDataTracker.d.ts.map +1 -0
- package/lib/eth1/eth1DepositDataTracker.js +317 -0
- package/lib/eth1/eth1DepositDataTracker.js.map +1 -0
- package/lib/eth1/eth1DepositsCache.d.ts +42 -0
- package/lib/eth1/eth1DepositsCache.d.ts.map +1 -0
- package/lib/eth1/eth1DepositsCache.js +119 -0
- package/lib/eth1/eth1DepositsCache.js.map +1 -0
- package/lib/eth1/index.d.ts +31 -0
- package/lib/eth1/index.d.ts.map +1 -0
- package/lib/eth1/index.js +71 -0
- package/lib/eth1/index.js.map +1 -0
- package/lib/eth1/interface.d.ts +74 -0
- package/lib/eth1/interface.d.ts.map +1 -0
- package/lib/eth1/interface.js +8 -0
- package/lib/eth1/interface.js.map +1 -0
- package/lib/eth1/options.d.ts +22 -0
- package/lib/eth1/options.d.ts.map +1 -0
- package/lib/eth1/options.js +8 -0
- package/lib/eth1/options.js.map +1 -0
- package/lib/eth1/provider/eth1Provider.d.ts +39 -0
- package/lib/eth1/provider/eth1Provider.d.ts.map +1 -0
- package/lib/eth1/provider/eth1Provider.js +147 -0
- package/lib/eth1/provider/eth1Provider.js.map +1 -0
- package/lib/{execution/engine → eth1/provider}/jsonRpcHttpClient.d.ts +1 -1
- package/lib/eth1/provider/jsonRpcHttpClient.d.ts.map +1 -0
- package/lib/eth1/provider/jsonRpcHttpClient.js.map +1 -0
- package/lib/eth1/provider/jwt.d.ts.map +1 -0
- package/lib/eth1/provider/jwt.js.map +1 -0
- package/lib/eth1/provider/utils.d.ts +65 -0
- package/lib/eth1/provider/utils.d.ts.map +1 -0
- package/lib/eth1/provider/utils.js +120 -0
- package/lib/eth1/provider/utils.js.map +1 -0
- package/lib/eth1/stream.d.ts +15 -0
- package/lib/eth1/stream.d.ts.map +1 -0
- package/lib/eth1/stream.js +54 -0
- package/lib/eth1/stream.js.map +1 -0
- package/lib/eth1/utils/depositContract.d.ts +14 -0
- package/lib/eth1/utils/depositContract.d.ts.map +1 -0
- package/lib/eth1/utils/depositContract.js +33 -0
- package/lib/eth1/utils/depositContract.js.map +1 -0
- package/lib/eth1/utils/deposits.d.ts +8 -0
- package/lib/eth1/utils/deposits.d.ts.map +1 -0
- package/lib/eth1/utils/deposits.js +47 -0
- package/lib/eth1/utils/deposits.js.map +1 -0
- package/lib/eth1/utils/eth1Data.d.ts +22 -0
- package/lib/eth1/utils/eth1Data.d.ts.map +1 -0
- package/lib/eth1/utils/eth1Data.js +77 -0
- package/lib/eth1/utils/eth1Data.js.map +1 -0
- package/lib/eth1/utils/eth1DepositEvent.d.ts +7 -0
- package/lib/eth1/utils/eth1DepositEvent.d.ts.map +1 -0
- package/lib/eth1/utils/eth1DepositEvent.js +13 -0
- package/lib/eth1/utils/eth1DepositEvent.js.map +1 -0
- package/lib/eth1/utils/eth1Vote.d.ts +17 -0
- package/lib/eth1/utils/eth1Vote.d.ts.map +1 -0
- package/lib/eth1/utils/eth1Vote.js +111 -0
- package/lib/eth1/utils/eth1Vote.js.map +1 -0
- package/lib/eth1/utils/groupDepositEventsByBlock.d.ts +9 -0
- package/lib/eth1/utils/groupDepositEventsByBlock.d.ts.map +1 -0
- package/lib/eth1/utils/groupDepositEventsByBlock.js +17 -0
- package/lib/eth1/utils/groupDepositEventsByBlock.js.map +1 -0
- package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.d.ts +10 -0
- package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.d.ts.map +1 -0
- package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.js +14 -0
- package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.js.map +1 -0
- package/lib/execution/engine/http.d.ts +1 -1
- package/lib/execution/engine/http.d.ts.map +1 -1
- package/lib/execution/engine/http.js +3 -2
- package/lib/execution/engine/http.js.map +1 -1
- package/lib/execution/engine/index.d.ts.map +1 -1
- package/lib/execution/engine/index.js +1 -1
- package/lib/execution/engine/index.js.map +1 -1
- package/lib/execution/engine/interface.d.ts +1 -1
- package/lib/execution/engine/interface.d.ts.map +1 -1
- package/lib/execution/engine/interface.js.map +1 -1
- package/lib/execution/engine/mock.d.ts.map +1 -1
- package/lib/execution/engine/mock.js +1 -1
- package/lib/execution/engine/mock.js.map +1 -1
- package/lib/execution/engine/payloadIdCache.d.ts +1 -1
- package/lib/execution/engine/payloadIdCache.d.ts.map +1 -1
- package/lib/execution/engine/types.d.ts +1 -1
- package/lib/execution/engine/types.d.ts.map +1 -1
- package/lib/execution/engine/types.js +1 -1
- package/lib/execution/engine/types.js.map +1 -1
- package/lib/execution/engine/utils.d.ts +2 -64
- package/lib/execution/engine/utils.d.ts.map +1 -1
- package/lib/execution/engine/utils.js +2 -91
- package/lib/execution/engine/utils.js.map +1 -1
- package/lib/index.d.ts +2 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -1
- package/lib/index.js.map +1 -1
- package/lib/metrics/metrics/lodestar.d.ts +35 -0
- package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
- package/lib/metrics/metrics/lodestar.js +90 -0
- package/lib/metrics/metrics/lodestar.js.map +1 -1
- package/lib/node/nodejs.d.ts.map +1 -1
- package/lib/node/nodejs.js +9 -0
- package/lib/node/nodejs.js.map +1 -1
- package/lib/node/options.d.ts +2 -0
- package/lib/node/options.d.ts.map +1 -1
- package/lib/node/options.js +2 -0
- package/lib/node/options.js.map +1 -1
- package/lib/node/utils/interop/deposits.d.ts +1 -2
- package/lib/node/utils/interop/deposits.d.ts.map +1 -1
- package/lib/node/utils/interop/deposits.js.map +1 -1
- package/lib/node/utils/interop/state.d.ts +1 -1
- package/lib/node/utils/interop/state.d.ts.map +1 -1
- package/lib/node/utils/state.d.ts +7 -1
- package/lib/node/utils/state.d.ts.map +1 -1
- package/lib/node/utils/state.js +14 -1
- package/lib/node/utils/state.js.map +1 -1
- package/package.json +20 -14
- package/src/api/impl/beacon/blocks/utils.ts +1 -1
- package/src/chain/chain.ts +15 -1
- package/src/chain/genesis/genesis.ts +190 -0
- package/src/chain/genesis/interface.ts +14 -0
- package/src/chain/initState.ts +97 -1
- package/src/chain/interface.ts +2 -0
- package/src/chain/prepareNextSlot.ts +28 -1
- package/src/chain/produceBlock/produceBlockBody.ts +10 -6
- package/src/db/beacon.ts +15 -0
- package/src/db/buckets.ts +7 -6
- package/src/db/interface.ts +13 -0
- package/src/db/repositories/depositDataRoot.ts +80 -0
- package/src/db/repositories/depositEvent.ts +32 -0
- package/src/db/repositories/eth1Data.ts +33 -0
- package/src/db/repositories/index.ts +3 -0
- package/src/db/single/index.ts +2 -0
- package/src/db/single/preGenesisState.ts +37 -0
- package/src/db/single/preGenesisStateLastProcessedBlock.ts +34 -0
- package/src/eth1/errors.ts +40 -0
- package/src/eth1/eth1DataCache.ts +26 -0
- package/src/eth1/eth1DepositDataTracker.ts +410 -0
- package/src/eth1/eth1DepositsCache.ts +141 -0
- package/src/eth1/index.ts +94 -0
- package/src/eth1/interface.ts +87 -0
- package/src/eth1/options.ts +28 -0
- package/src/eth1/provider/eth1Provider.ts +229 -0
- package/src/{execution/engine → eth1/provider}/jsonRpcHttpClient.ts +1 -1
- package/src/eth1/provider/utils.ts +136 -0
- package/src/eth1/stream.ts +75 -0
- package/src/eth1/utils/depositContract.ts +37 -0
- package/src/eth1/utils/deposits.ts +70 -0
- package/src/eth1/utils/eth1Data.ts +100 -0
- package/src/eth1/utils/eth1DepositEvent.ts +12 -0
- package/src/eth1/utils/eth1Vote.ts +142 -0
- package/src/eth1/utils/groupDepositEventsByBlock.ts +19 -0
- package/src/eth1/utils/optimizeNextBlockDiffForGenesis.ts +18 -0
- package/src/execution/engine/http.ts +9 -8
- package/src/execution/engine/index.ts +1 -1
- package/src/execution/engine/interface.ts +1 -1
- package/src/execution/engine/mock.ts +2 -1
- package/src/execution/engine/payloadIdCache.ts +1 -1
- package/src/execution/engine/types.ts +9 -9
- package/src/execution/engine/utils.ts +5 -111
- package/src/index.ts +2 -1
- package/src/metrics/metrics/lodestar.ts +92 -0
- package/src/node/nodejs.ts +9 -0
- package/src/node/options.ts +3 -0
- package/src/node/utils/interop/deposits.ts +1 -3
- package/src/node/utils/interop/state.ts +1 -1
- package/src/node/utils/state.ts +18 -3
- package/lib/execution/engine/jsonRpcHttpClient.d.ts.map +0 -1
- package/lib/execution/engine/jsonRpcHttpClient.js.map +0 -1
- package/lib/execution/engine/jwt.d.ts.map +0 -1
- package/lib/execution/engine/jwt.js.map +0 -1
- /package/lib/{execution/engine → eth1/provider}/jsonRpcHttpClient.js +0 -0
- /package/lib/{execution/engine → eth1/provider}/jwt.d.ts +0 -0
- /package/lib/{execution/engine → eth1/provider}/jwt.js +0 -0
- /package/src/{execution/engine → eth1/provider}/jwt.ts +0 -0
package/lib/node/nodejs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodejs.js","sourceRoot":"","sources":["../../src/node/nodejs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,aAAa,CAAC;AAG5C,OAAO,EAAC,MAAM,EAAC,MAAM,mCAAmC,CAAC;AAMzD,OAAO,EAAC,KAAK,EAAC,MAAM,iBAAiB,CAAC;AAEtC,OAAO,EAAC,mBAAmB,EAAE,MAAM,EAAC,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAC,WAAW,EAAgB,iBAAiB,EAAC,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAmB,sBAAsB,EAAC,MAAM,8BAA8B,CAAC;AAEtF,OAAO,EAAC,0BAA0B,EAAE,yBAAyB,EAAC,MAAM,uBAAuB,CAAC;AAC5F,OAAO,EAA6B,aAAa,EAAE,oBAAoB,EAAC,MAAM,qBAAqB,CAAC;AACpG,OAAO,EAAC,iBAAiB,EAAC,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAC,OAAO,EAAE,kBAAkB,EAAC,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAC,YAAY,EAAC,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAC,UAAU,EAAc,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAC,KAAK,EAAC,MAAM,kBAAkB,CAAC;AACvC,OAAO,EAAC,eAAe,EAAC,MAAM,eAAe,CAAC;AAG9C,cAAc,cAAc,CAAC;AAkC7B,MAAM,CAAN,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IAC1B,uCAAmB,CAAA;IACnB,uCAAmB,CAAA;IACnB,qCAAiB,CAAA;AACnB,CAAC,EAJW,gBAAgB,KAAhB,gBAAgB,QAI3B;AAED,IAAK,
|
|
1
|
+
{"version":3,"file":"nodejs.js","sourceRoot":"","sources":["../../src/node/nodejs.ts"],"names":[],"mappings":"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"}
|
package/lib/node/options.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ import { ApiOptions } from "../api/options.js";
|
|
|
2
2
|
import { ArchiveMode, DEFAULT_ARCHIVE_MODE, IChainOptions } from "../chain/options.js";
|
|
3
3
|
import { ValidatorMonitorOpts } from "../chain/validatorMonitor.js";
|
|
4
4
|
import { DatabaseOptions } from "../db/options.js";
|
|
5
|
+
import { Eth1Options } from "../eth1/options.js";
|
|
5
6
|
import { ExecutionBuilderOpts, ExecutionEngineOpts, defaultExecutionBuilderHttpOpts, defaultExecutionEngineHttpOpts } from "../execution/index.js";
|
|
6
7
|
import { MetricsOptions } from "../metrics/options.js";
|
|
7
8
|
import { MonitoringOptions } from "../monitoring/options.js";
|
|
@@ -13,6 +14,7 @@ export interface IBeaconNodeOptions {
|
|
|
13
14
|
api: ApiOptions;
|
|
14
15
|
chain: IChainOptions;
|
|
15
16
|
db: DatabaseOptions;
|
|
17
|
+
eth1: Eth1Options;
|
|
16
18
|
executionEngine: ExecutionEngineOpts;
|
|
17
19
|
executionBuilder: ExecutionBuilderOpts;
|
|
18
20
|
metrics: MetricsOptions;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/node/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAoB,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAC,WAAW,EAAE,oBAAoB,EAAE,aAAa,EAAsB,MAAM,qBAAqB,CAAC;AAC1G,OAAO,EAAC,oBAAoB,EAA8B,MAAM,8BAA8B,CAAC;AAC/F,OAAO,EAAC,eAAe,EAAmB,MAAM,kBAAkB,CAAC;AACnE,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,+BAA+B,EAE/B,8BAA8B,EAE/B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAC,cAAc,EAAwB,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAC,iBAAiB,EAA2B,MAAM,0BAA0B,CAAC;AACrF,OAAO,EAAC,cAAc,EAAwB,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAC,WAAW,EAAqB,MAAM,oBAAoB,CAAC;AAGnE,OAAO,EAAC,aAAa,EAAC,MAAM,sBAAsB,CAAC;AAGnD,OAAO,EAAC,8BAA8B,EAAE,+BAA+B,EAAE,WAAW,EAAE,oBAAoB,EAAC,CAAC;AAE5G,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,UAAU,CAAC;IAChB,KAAK,EAAE,aAAa,CAAC;IACrB,EAAE,EAAE,eAAe,CAAC;IACpB,eAAe,EAAE,mBAAmB,CAAC;IACrC,gBAAgB,EAAE,oBAAoB,CAAC;IACvC,OAAO,EAAE,cAAc,CAAC;IACxB,gBAAgB,EAAE,oBAAoB,CAAC;IACvC,UAAU,EAAE,iBAAiB,CAAC;IAC9B,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,EAAE,WAAW,CAAC;CACnB;AAED,eAAO,MAAM,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/node/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,UAAU,EAAoB,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAC,WAAW,EAAE,oBAAoB,EAAE,aAAa,EAAsB,MAAM,qBAAqB,CAAC;AAC1G,OAAO,EAAC,oBAAoB,EAA8B,MAAM,8BAA8B,CAAC;AAC/F,OAAO,EAAC,eAAe,EAAmB,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAC,WAAW,EAAqB,MAAM,oBAAoB,CAAC;AACnE,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,+BAA+B,EAE/B,8BAA8B,EAE/B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAC,cAAc,EAAwB,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAC,iBAAiB,EAA2B,MAAM,0BAA0B,CAAC;AACrF,OAAO,EAAC,cAAc,EAAwB,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAC,WAAW,EAAqB,MAAM,oBAAoB,CAAC;AAGnE,OAAO,EAAC,aAAa,EAAC,MAAM,sBAAsB,CAAC;AAGnD,OAAO,EAAC,8BAA8B,EAAE,+BAA+B,EAAE,WAAW,EAAE,oBAAoB,EAAC,CAAC;AAE5G,MAAM,WAAW,kBAAkB;IACjC,GAAG,EAAE,UAAU,CAAC;IAChB,KAAK,EAAE,aAAa,CAAC;IACrB,EAAE,EAAE,eAAe,CAAC;IACpB,IAAI,EAAE,WAAW,CAAC;IAClB,eAAe,EAAE,mBAAmB,CAAC;IACrC,gBAAgB,EAAE,oBAAoB,CAAC;IACvC,OAAO,EAAE,cAAc,CAAC;IACxB,gBAAgB,EAAE,oBAAoB,CAAC;IACvC,UAAU,EAAE,iBAAiB,CAAC;IAC9B,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,EAAE,WAAW,CAAC;CACnB;AAED,eAAO,MAAM,cAAc,EAAE,kBAY5B,CAAC"}
|
package/lib/node/options.js
CHANGED
|
@@ -2,6 +2,7 @@ import { defaultApiOptions } from "../api/options.js";
|
|
|
2
2
|
import { ArchiveMode, DEFAULT_ARCHIVE_MODE, defaultChainOptions } from "../chain/options.js";
|
|
3
3
|
import { defaultValidatorMonitorOpts } from "../chain/validatorMonitor.js";
|
|
4
4
|
import { defaultDbOptions } from "../db/options.js";
|
|
5
|
+
import { defaultEth1Options } from "../eth1/options.js";
|
|
5
6
|
import { defaultExecutionBuilderHttpOpts, defaultExecutionBuilderOpts, defaultExecutionEngineHttpOpts, defaultExecutionEngineOpts, } from "../execution/index.js";
|
|
6
7
|
import { defaultMetricsOptions } from "../metrics/options.js";
|
|
7
8
|
import { defaultMonitoringOptions } from "../monitoring/options.js";
|
|
@@ -15,6 +16,7 @@ export const defaultOptions = {
|
|
|
15
16
|
api: defaultApiOptions,
|
|
16
17
|
chain: defaultChainOptions,
|
|
17
18
|
db: defaultDbOptions,
|
|
19
|
+
eth1: defaultEth1Options,
|
|
18
20
|
executionEngine: defaultExecutionEngineOpts,
|
|
19
21
|
executionBuilder: defaultExecutionBuilderOpts,
|
|
20
22
|
metrics: defaultMetricsOptions,
|
package/lib/node/options.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/node/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,iBAAiB,EAAC,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAC,WAAW,EAAE,oBAAoB,EAAiB,mBAAmB,EAAC,MAAM,qBAAqB,CAAC;AAC1G,OAAO,EAAuB,2BAA2B,EAAC,MAAM,8BAA8B,CAAC;AAC/F,OAAO,EAAkB,gBAAgB,EAAC,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAGL,+BAA+B,EAC/B,2BAA2B,EAC3B,8BAA8B,EAC9B,0BAA0B,GAC3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAiB,qBAAqB,EAAC,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAoB,wBAAwB,EAAC,MAAM,0BAA0B,CAAC;AACrF,OAAO,EAAiB,qBAAqB,EAAC,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAc,kBAAkB,EAAC,MAAM,oBAAoB,CAAC;AAEnE,8DAA8D;AAC9D,OAAO,EAAC,aAAa,EAAC,MAAM,sBAAsB,CAAC;AAEnD,iDAAiD;AACjD,OAAO,EAAC,8BAA8B,EAAE,+BAA+B,EAAE,WAAW,EAAE,oBAAoB,EAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/node/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,iBAAiB,EAAC,MAAM,mBAAmB,CAAC;AAChE,OAAO,EAAC,WAAW,EAAE,oBAAoB,EAAiB,mBAAmB,EAAC,MAAM,qBAAqB,CAAC;AAC1G,OAAO,EAAuB,2BAA2B,EAAC,MAAM,8BAA8B,CAAC;AAC/F,OAAO,EAAkB,gBAAgB,EAAC,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAc,kBAAkB,EAAC,MAAM,oBAAoB,CAAC;AACnE,OAAO,EAGL,+BAA+B,EAC/B,2BAA2B,EAC3B,8BAA8B,EAC9B,0BAA0B,GAC3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAiB,qBAAqB,EAAC,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAoB,wBAAwB,EAAC,MAAM,0BAA0B,CAAC;AACrF,OAAO,EAAiB,qBAAqB,EAAC,MAAM,uBAAuB,CAAC;AAC5E,OAAO,EAAc,kBAAkB,EAAC,MAAM,oBAAoB,CAAC;AAEnE,8DAA8D;AAC9D,OAAO,EAAC,aAAa,EAAC,MAAM,sBAAsB,CAAC;AAEnD,iDAAiD;AACjD,OAAO,EAAC,8BAA8B,EAAE,+BAA+B,EAAE,WAAW,EAAE,oBAAoB,EAAC,CAAC;AAgB5G,MAAM,CAAC,MAAM,cAAc,GAAuB;IAChD,GAAG,EAAE,iBAAiB;IACtB,KAAK,EAAE,mBAAmB;IAC1B,EAAE,EAAE,gBAAgB;IACpB,IAAI,EAAE,kBAAkB;IACxB,eAAe,EAAE,0BAA0B;IAC3C,gBAAgB,EAAE,2BAA2B;IAC7C,OAAO,EAAE,qBAAqB;IAC9B,gBAAgB,EAAE,2BAA2B;IAC7C,UAAU,EAAE,wBAAwB;IACpC,OAAO,EAAE,qBAAqB;IAC9B,IAAI,EAAE,kBAAkB;CACzB,CAAC"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { ByteVectorType, CompositeViewDU, ListCompositeType } from "@chainsafe/ssz";
|
|
2
1
|
import { ChainConfig } from "@lodestar/config";
|
|
3
2
|
import { phase0 } from "@lodestar/types";
|
|
4
|
-
|
|
3
|
+
import { DepositTree } from "../../../db/repositories/depositDataRoot.js";
|
|
5
4
|
/**
|
|
6
5
|
* Compute and return deposit data from other validators.
|
|
7
6
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deposits.d.ts","sourceRoot":"","sources":["../../../../src/node/utils/interop/deposits.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,
|
|
1
|
+
{"version":3,"file":"deposits.d.ts","sourceRoot":"","sources":["../../../../src/node/utils/interop/deposits.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,WAAW,EAAC,MAAM,kBAAkB,CAAC;AAQ7C,OAAO,EAAC,MAAM,EAAM,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAC,WAAW,EAAC,MAAM,6CAA6C,CAAC;AAExE;;GAEG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,WAAW,EACnB,mBAAmB,EAAE,WAAW,EAChC,cAAc,EAAE,MAAM,EACtB,EAAC,mBAAmB,EAAC,GAAE;IAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAAM,GAC1D,MAAM,CAAC,OAAO,EAAE,CA+BlB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deposits.js","sourceRoot":"","sources":["../../../../src/node/utils/interop/deposits.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAC,IAAI,EAAE,QAAQ,EAAC,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"deposits.js","sourceRoot":"","sources":["../../../../src/node/utils/interop/deposits.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,MAAM,EAAC,MAAM,sBAAsB,CAAC;AAC5C,OAAO,EAAC,IAAI,EAAE,QAAQ,EAAC,MAAM,mCAAmC,CAAC;AAEjE,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,8BAA8B,EAC9B,qBAAqB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAC,SAAS,EAAE,aAAa,EAAE,kBAAkB,EAAE,iBAAiB,EAAC,MAAM,4BAA4B,CAAC;AAC3G,OAAO,EAAS,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAG5C;;GAEG;AACH,MAAM,UAAU,eAAe,CAC7B,MAAmB,EACnB,mBAAgC,EAChC,cAAsB,EACtB,EAAC,mBAAmB,KAAqC,EAAE;IAE3D,mBAAmB,CAAC,MAAM,EAAE,CAAC;IAC7B,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC;IACxD,kDAAkD;IAClD,MAAM,2BAA2B,GAAG,mBAAmB,CAAC,CAAC,CAAC,8BAA8B,CAAC,CAAC,CAAC,qBAAqB,CAAC;IAEjH,OAAO,iBAAiB,CAAC,cAAc,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE;QAC5D,MAAM,MAAM,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,OAAO,EAAE,CAAC;QAEjD,qBAAqB;QACrB,MAAM,qBAAqB,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAC7C,qBAAqB,CAAC,CAAC,CAAC,GAAG,2BAA2B,CAAC;QACvD,MAAM,IAAI,GAAuB;YAC/B,MAAM;YACN,qBAAqB;YACrB,MAAM,EAAE,qBAAqB;YAC7B,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;SAC3B,CAAC;QAEF,MAAM,MAAM,GAAG,aAAa,CAAC,cAAc,EAAE,MAAM,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAAC;QACrF,MAAM,WAAW,GAAG,kBAAkB,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QAChF,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE,CAAC;QAEvD,qBAAqB;QACrB,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QACpE,mBAAmB,CAAC,MAAM,EAAE,CAAC;QAC7B,OAAO;YACL,KAAK,EAAE,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/F,IAAI;SACL,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ChainForkConfig } from "@lodestar/config";
|
|
2
2
|
import { BeaconStateAllForks } from "@lodestar/state-transition";
|
|
3
3
|
import { Bytes32, TimeSeconds, phase0 } from "@lodestar/types";
|
|
4
|
-
import { DepositTree } from "
|
|
4
|
+
import { DepositTree } from "../../../db/repositories/depositDataRoot.js";
|
|
5
5
|
export declare const INTEROP_BLOCK_HASH: Buffer<ArrayBuffer>;
|
|
6
6
|
export declare const INTEROP_TIMESTAMP: number;
|
|
7
7
|
export declare const GENESIS_GAS_LIMIT = 30000000;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../../src/node/utils/interop/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EACL,mBAAmB,EAGpB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAmB,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAC,WAAW,EAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../../src/node/utils/interop/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EACL,mBAAmB,EAGpB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAC,OAAO,EAAE,WAAW,EAAE,MAAM,EAAmB,MAAM,iBAAiB,CAAC;AAC/E,OAAO,EAAC,WAAW,EAAC,MAAM,6CAA6C,CAAC;AAExE,eAAO,MAAM,kBAAkB,qBAAwB,CAAC;AACxD,eAAO,MAAM,iBAAiB,QAAkB,CAAC;AAGjD,eAAO,MAAM,iBAAiB,WAAW,CAAC;AAC1C,eAAO,MAAM,wBAAwB,QAAqB,CAAC;AAE3D,MAAM,MAAM,gBAAgB,GAAG;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,aAAa,CAAC,EAAE,WAAW,CAAC;IAC5B,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,CAAC;AAGF,wBAAgB,eAAe,CAC7B,MAAM,EAAE,eAAe,EACvB,EACE,WAA2C,EAC3C,aAAkC,EAClC,aAAiC,GAClC,EAAE,gBAAgB,EACnB,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,EAC1B,uBAAuB,CAAC,EAAE,WAAW,GACpC,mBAAmB,CAwBrB"}
|
|
@@ -1,8 +1,14 @@
|
|
|
1
1
|
import { ChainForkConfig } from "@lodestar/config";
|
|
2
2
|
import { BeaconStateAllForks } from "@lodestar/state-transition";
|
|
3
|
+
import { phase0 } from "@lodestar/types";
|
|
4
|
+
import { IBeaconDb } from "../../db/index.js";
|
|
3
5
|
import { InteropStateOpts } from "./interop/state.js";
|
|
4
6
|
/**
|
|
5
7
|
* Builds state for `dev` command, for sim testing and some other tests
|
|
6
8
|
*/
|
|
7
|
-
export declare function initDevState(config: ChainForkConfig, validatorCount: number, interopStateOpts: InteropStateOpts):
|
|
9
|
+
export declare function initDevState(config: ChainForkConfig, validatorCount: number, interopStateOpts: InteropStateOpts): {
|
|
10
|
+
deposits: phase0.Deposit[];
|
|
11
|
+
state: BeaconStateAllForks;
|
|
12
|
+
};
|
|
13
|
+
export declare function writeDeposits(db: IBeaconDb, deposits: phase0.Deposit[]): Promise<void>;
|
|
8
14
|
//# sourceMappingURL=state.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/node/utils/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAC,mBAAmB,EAAC,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/node/utils/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAC,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAC,mBAAmB,EAAC,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAC,MAAM,EAAM,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAC,SAAS,EAAC,MAAM,mBAAmB,CAAC;AAE5C,OAAO,EAAC,gBAAgB,EAAkB,MAAM,oBAAoB,CAAC;AAErE;;GAEG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,eAAe,EACvB,cAAc,EAAE,MAAM,EACtB,gBAAgB,EAAE,gBAAgB,GACjC;IAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC;IAAC,KAAK,EAAE,mBAAmB,CAAA;CAAC,CAS1D;AAED,wBAAsB,aAAa,CAAC,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAW5F"}
|
package/lib/node/utils/state.js
CHANGED
|
@@ -6,6 +6,19 @@ import { getInteropState } from "./interop/state.js";
|
|
|
6
6
|
*/
|
|
7
7
|
export function initDevState(config, validatorCount, interopStateOpts) {
|
|
8
8
|
const deposits = interopDeposits(config, ssz.phase0.DepositDataRootList.defaultViewDU(), validatorCount, interopStateOpts);
|
|
9
|
-
|
|
9
|
+
const state = getInteropState(config, interopStateOpts, deposits);
|
|
10
|
+
return { deposits, state };
|
|
11
|
+
}
|
|
12
|
+
export async function writeDeposits(db, deposits) {
|
|
13
|
+
for (let i = 0; i < deposits.length; i++) {
|
|
14
|
+
await Promise.all([
|
|
15
|
+
db.depositEvent.put(i, {
|
|
16
|
+
blockNumber: i,
|
|
17
|
+
index: i,
|
|
18
|
+
depositData: deposits[i].data,
|
|
19
|
+
}),
|
|
20
|
+
db.depositDataRoot.put(i, ssz.phase0.DepositData.hashTreeRoot(deposits[i].data)),
|
|
21
|
+
]);
|
|
22
|
+
}
|
|
10
23
|
}
|
|
11
24
|
//# sourceMappingURL=state.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/node/utils/state.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/node/utils/state.ts"],"names":[],"mappings":"AAEA,OAAO,EAAS,GAAG,EAAC,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EAAC,eAAe,EAAC,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAmB,eAAe,EAAC,MAAM,oBAAoB,CAAC;AAErE;;GAEG;AACH,MAAM,UAAU,YAAY,CAC1B,MAAuB,EACvB,cAAsB,EACtB,gBAAkC;IAElC,MAAM,QAAQ,GAAG,eAAe,CAC9B,MAAM,EACN,GAAG,CAAC,MAAM,CAAC,mBAAmB,CAAC,aAAa,EAAE,EAC9C,cAAc,EACd,gBAAgB,CACjB,CAAC;IACF,MAAM,KAAK,GAAG,eAAe,CAAC,MAAM,EAAE,gBAAgB,EAAE,QAAQ,CAAC,CAAC;IAClE,OAAO,EAAC,QAAQ,EAAE,KAAK,EAAC,CAAC;AAC3B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,EAAa,EAAE,QAA0B;IAC3E,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,EAAE,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE;gBACrB,WAAW,EAAE,CAAC;gBACd,KAAK,EAAE,CAAC;gBACR,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI;aAC9B,CAAC;YACF,EAAE,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SACjF,CAAC,CAAC;IACL,CAAC;AACH,CAAC"}
|
package/package.json
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"bugs": {
|
|
12
12
|
"url": "https://github.com/ChainSafe/lodestar/issues"
|
|
13
13
|
},
|
|
14
|
-
"version": "1.39.0-dev.
|
|
14
|
+
"version": "1.39.0-dev.b37f2bd1bd",
|
|
15
15
|
"type": "module",
|
|
16
16
|
"exports": {
|
|
17
17
|
".": {
|
|
@@ -39,6 +39,11 @@
|
|
|
39
39
|
"types": "./lib/db/index.d.ts",
|
|
40
40
|
"import": "./lib/db/index.js"
|
|
41
41
|
},
|
|
42
|
+
"./eth1": {
|
|
43
|
+
"bun": "./src/eth1/index.ts",
|
|
44
|
+
"types": "./lib/eth1/index.d.ts",
|
|
45
|
+
"import": "./lib/eth1/index.js"
|
|
46
|
+
},
|
|
42
47
|
"./metrics": {
|
|
43
48
|
"bun": "./src/metrics/index.ts",
|
|
44
49
|
"types": "./lib/metrics/index.d.ts",
|
|
@@ -121,6 +126,7 @@
|
|
|
121
126
|
"@chainsafe/ssz": "^1.2.2",
|
|
122
127
|
"@chainsafe/threads": "^1.11.3",
|
|
123
128
|
"@crate-crypto/node-eth-kzg": "0.9.1",
|
|
129
|
+
"@ethersproject/abi": "^5.7.0",
|
|
124
130
|
"@fastify/bearer-auth": "^10.0.1",
|
|
125
131
|
"@fastify/cors": "^10.0.1",
|
|
126
132
|
"@fastify/swagger": "^9.0.0",
|
|
@@ -134,18 +140,18 @@
|
|
|
134
140
|
"@libp2p/peer-id": "^5.1.0",
|
|
135
141
|
"@libp2p/prometheus-metrics": "^4.3.15",
|
|
136
142
|
"@libp2p/tcp": "^10.1.8",
|
|
137
|
-
"@lodestar/api": "1.39.0-dev.
|
|
138
|
-
"@lodestar/config": "1.39.0-dev.
|
|
139
|
-
"@lodestar/db": "1.39.0-dev.
|
|
140
|
-
"@lodestar/fork-choice": "1.39.0-dev.
|
|
141
|
-
"@lodestar/light-client": "1.39.0-dev.
|
|
142
|
-
"@lodestar/logger": "1.39.0-dev.
|
|
143
|
-
"@lodestar/params": "1.39.0-dev.
|
|
144
|
-
"@lodestar/reqresp": "1.39.0-dev.
|
|
145
|
-
"@lodestar/state-transition": "1.39.0-dev.
|
|
146
|
-
"@lodestar/types": "1.39.0-dev.
|
|
147
|
-
"@lodestar/utils": "1.39.0-dev.
|
|
148
|
-
"@lodestar/validator": "1.39.0-dev.
|
|
143
|
+
"@lodestar/api": "1.39.0-dev.b37f2bd1bd",
|
|
144
|
+
"@lodestar/config": "1.39.0-dev.b37f2bd1bd",
|
|
145
|
+
"@lodestar/db": "1.39.0-dev.b37f2bd1bd",
|
|
146
|
+
"@lodestar/fork-choice": "1.39.0-dev.b37f2bd1bd",
|
|
147
|
+
"@lodestar/light-client": "1.39.0-dev.b37f2bd1bd",
|
|
148
|
+
"@lodestar/logger": "1.39.0-dev.b37f2bd1bd",
|
|
149
|
+
"@lodestar/params": "1.39.0-dev.b37f2bd1bd",
|
|
150
|
+
"@lodestar/reqresp": "1.39.0-dev.b37f2bd1bd",
|
|
151
|
+
"@lodestar/state-transition": "1.39.0-dev.b37f2bd1bd",
|
|
152
|
+
"@lodestar/types": "1.39.0-dev.b37f2bd1bd",
|
|
153
|
+
"@lodestar/utils": "1.39.0-dev.b37f2bd1bd",
|
|
154
|
+
"@lodestar/validator": "1.39.0-dev.b37f2bd1bd",
|
|
149
155
|
"@multiformats/multiaddr": "^12.1.3",
|
|
150
156
|
"datastore-core": "^10.0.2",
|
|
151
157
|
"datastore-fs": "^10.0.6",
|
|
@@ -180,5 +186,5 @@
|
|
|
180
186
|
"beacon",
|
|
181
187
|
"blockchain"
|
|
182
188
|
],
|
|
183
|
-
"gitHead": "
|
|
189
|
+
"gitHead": "d2d0808597a7c8e20703a9b6ee4041a4e25ed638"
|
|
184
190
|
}
|
|
@@ -5,7 +5,7 @@ import {blockToHeader} from "@lodestar/state-transition";
|
|
|
5
5
|
import {RootHex, SignedBeaconBlock, Slot} from "@lodestar/types";
|
|
6
6
|
import {IBeaconChain} from "../../../../chain/interface.js";
|
|
7
7
|
import {GENESIS_SLOT} from "../../../../constants/index.js";
|
|
8
|
-
import {rootHexRegex} from "../../../../
|
|
8
|
+
import {rootHexRegex} from "../../../../eth1/provider/utils.js";
|
|
9
9
|
import {ApiError, ValidationError} from "../../errors.js";
|
|
10
10
|
|
|
11
11
|
export function toBeaconHeaderResponse(
|
package/src/chain/chain.ts
CHANGED
|
@@ -43,6 +43,7 @@ import {Logger, fromHex, gweiToWei, isErrorAborted, pruneSetToMax, sleep, toRoot
|
|
|
43
43
|
import {ProcessShutdownCallback} from "@lodestar/validator";
|
|
44
44
|
import {GENESIS_EPOCH, ZERO_HASH} from "../constants/index.js";
|
|
45
45
|
import {IBeaconDb} from "../db/index.js";
|
|
46
|
+
import {IEth1ForBlockProduction} from "../eth1/index.js";
|
|
46
47
|
import {BuilderStatus} from "../execution/builder/http.js";
|
|
47
48
|
import {IExecutionBuilder, IExecutionEngine} from "../execution/index.js";
|
|
48
49
|
import {Metrics} from "../metrics/index.js";
|
|
@@ -116,6 +117,7 @@ const DEFAULT_MAX_CACHED_PRODUCED_RESULTS = 4;
|
|
|
116
117
|
export class BeaconChain implements IBeaconChain {
|
|
117
118
|
readonly genesisTime: UintNum64;
|
|
118
119
|
readonly genesisValidatorsRoot: Root;
|
|
120
|
+
readonly eth1: IEth1ForBlockProduction;
|
|
119
121
|
readonly executionEngine: IExecutionEngine;
|
|
120
122
|
readonly executionBuilder?: IExecutionBuilder;
|
|
121
123
|
// Expose config for convenience in modularized functions
|
|
@@ -214,6 +216,7 @@ export class BeaconChain implements IBeaconChain {
|
|
|
214
216
|
validatorMonitor,
|
|
215
217
|
anchorState,
|
|
216
218
|
isAnchorStateFinalized,
|
|
219
|
+
eth1,
|
|
217
220
|
executionEngine,
|
|
218
221
|
executionBuilder,
|
|
219
222
|
}: {
|
|
@@ -230,6 +233,7 @@ export class BeaconChain implements IBeaconChain {
|
|
|
230
233
|
validatorMonitor: ValidatorMonitor | null;
|
|
231
234
|
anchorState: BeaconStateAllForks;
|
|
232
235
|
isAnchorStateFinalized: boolean;
|
|
236
|
+
eth1: IEth1ForBlockProduction;
|
|
233
237
|
executionEngine: IExecutionEngine;
|
|
234
238
|
executionBuilder?: IExecutionBuilder;
|
|
235
239
|
}
|
|
@@ -244,6 +248,7 @@ export class BeaconChain implements IBeaconChain {
|
|
|
244
248
|
this.genesisTime = anchorState.genesisTime;
|
|
245
249
|
this.anchorStateLatestBlockSlot = anchorState.latestBlockHeader.slot;
|
|
246
250
|
this.genesisValidatorsRoot = anchorState.genesisValidatorsRoot;
|
|
251
|
+
this.eth1 = eth1;
|
|
247
252
|
this.executionEngine = executionEngine;
|
|
248
253
|
this.executionBuilder = executionBuilder;
|
|
249
254
|
const signal = this.abortController.signal;
|
|
@@ -289,7 +294,7 @@ export class BeaconChain implements IBeaconChain {
|
|
|
289
294
|
// Restore state caches
|
|
290
295
|
// anchorState may already by a CachedBeaconState. If so, don't create the cache again, since deserializing all
|
|
291
296
|
// pubkeys takes ~30 seconds for 350k keys (mainnet 2022Q2).
|
|
292
|
-
// When the BeaconStateCache is created in
|
|
297
|
+
// When the BeaconStateCache is created in eth1 genesis builder it may be incorrect. Until we can ensure that
|
|
293
298
|
// it's safe to re-use _ANY_ BeaconStateCache, this option is disabled by default and only used in tests.
|
|
294
299
|
const cachedState =
|
|
295
300
|
isCachedBeaconState(anchorState) && opts.skipCreateStateCacheIfAvailable
|
|
@@ -412,6 +417,15 @@ export class BeaconChain implements IBeaconChain {
|
|
|
412
417
|
signal
|
|
413
418
|
);
|
|
414
419
|
|
|
420
|
+
// Stop polling eth1 data if anchor state is in Electra AND deposit_requests_start_index is reached
|
|
421
|
+
const anchorStateFork = this.config.getForkName(anchorState.slot);
|
|
422
|
+
if (isForkPostElectra(anchorStateFork)) {
|
|
423
|
+
const {eth1DepositIndex, depositRequestsStartIndex} = anchorState as BeaconStateElectra;
|
|
424
|
+
if (eth1DepositIndex === Number(depositRequestsStartIndex)) {
|
|
425
|
+
this.eth1.stopPollingEth1Data();
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
|
|
415
429
|
// always run PrepareNextSlotScheduler except for fork_choice spec tests
|
|
416
430
|
if (!opts?.disablePrepareNextSlot) {
|
|
417
431
|
new PrepareNextSlotScheduler(this, this.config, metrics, this.logger, signal);
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import {Tree, toGindex} from "@chainsafe/persistent-merkle-tree";
|
|
2
|
+
import {BeaconConfig, ChainForkConfig} from "@lodestar/config";
|
|
3
|
+
import {GENESIS_EPOCH, GENESIS_SLOT} from "@lodestar/params";
|
|
4
|
+
import {
|
|
5
|
+
BeaconStateAllForks,
|
|
6
|
+
CachedBeaconStateAllForks,
|
|
7
|
+
applyDeposits,
|
|
8
|
+
applyEth1BlockHash,
|
|
9
|
+
applyTimestamp,
|
|
10
|
+
createCachedBeaconState,
|
|
11
|
+
createEmptyEpochCacheImmutableData,
|
|
12
|
+
getActiveValidatorIndices,
|
|
13
|
+
getGenesisBeaconState,
|
|
14
|
+
getTemporaryBlockHeader,
|
|
15
|
+
} from "@lodestar/state-transition";
|
|
16
|
+
import {phase0, ssz} from "@lodestar/types";
|
|
17
|
+
import {Logger} from "@lodestar/utils";
|
|
18
|
+
import {DepositTree} from "../../db/repositories/depositDataRoot.js";
|
|
19
|
+
import {IEth1Provider} from "../../eth1/index.js";
|
|
20
|
+
import {IEth1StreamParams} from "../../eth1/interface.js";
|
|
21
|
+
import {getDepositsAndBlockStreamForGenesis, getDepositsStream} from "../../eth1/stream.js";
|
|
22
|
+
import {GenesisResult, IGenesisBuilder} from "./interface.js";
|
|
23
|
+
|
|
24
|
+
export type GenesisBuilderKwargs = {
|
|
25
|
+
config: ChainForkConfig;
|
|
26
|
+
eth1Provider: IEth1Provider;
|
|
27
|
+
logger: Logger;
|
|
28
|
+
|
|
29
|
+
/** Use to restore pending progress */
|
|
30
|
+
pendingStatus?: {
|
|
31
|
+
state: BeaconStateAllForks;
|
|
32
|
+
depositTree: DepositTree;
|
|
33
|
+
lastProcessedBlockNumber: number;
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
signal?: AbortSignal;
|
|
37
|
+
maxBlocksPerPoll?: number;
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
export class GenesisBuilder implements IGenesisBuilder {
|
|
41
|
+
// Expose state to persist on error
|
|
42
|
+
readonly state: CachedBeaconStateAllForks;
|
|
43
|
+
readonly depositTree: DepositTree;
|
|
44
|
+
/** Is null if no block has been processed yet */
|
|
45
|
+
lastProcessedBlockNumber: number | null = null;
|
|
46
|
+
|
|
47
|
+
private readonly config: BeaconConfig;
|
|
48
|
+
private readonly eth1Provider: IEth1Provider;
|
|
49
|
+
private readonly logger: Logger;
|
|
50
|
+
private readonly signal?: AbortSignal;
|
|
51
|
+
private readonly eth1Params: IEth1StreamParams;
|
|
52
|
+
private readonly depositCache = new Set<number>();
|
|
53
|
+
private readonly fromBlock: number;
|
|
54
|
+
private readonly logEvery = 30 * 1000;
|
|
55
|
+
private lastLog = 0;
|
|
56
|
+
/** Current count of active validators in the state */
|
|
57
|
+
private activatedValidatorCount: number;
|
|
58
|
+
|
|
59
|
+
constructor({config, eth1Provider, logger, signal, pendingStatus, maxBlocksPerPoll}: GenesisBuilderKwargs) {
|
|
60
|
+
// at genesis builder, there is no genesis validator so we don't have a real BeaconConfig
|
|
61
|
+
// but we need BeaconConfig to temporarily create CachedBeaconState, the cast here is safe since we don't use any getDomain here
|
|
62
|
+
// the use of state as CachedBeaconState is just for convenient, GenesisResult returns TreeView anyway
|
|
63
|
+
this.eth1Provider = eth1Provider;
|
|
64
|
+
this.logger = logger;
|
|
65
|
+
this.signal = signal;
|
|
66
|
+
this.eth1Params = {
|
|
67
|
+
...config,
|
|
68
|
+
maxBlocksPerPoll: maxBlocksPerPoll ?? 10000,
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
let stateView: BeaconStateAllForks;
|
|
72
|
+
|
|
73
|
+
if (pendingStatus) {
|
|
74
|
+
this.logger.info("Restoring pending genesis state", {block: pendingStatus.lastProcessedBlockNumber});
|
|
75
|
+
stateView = pendingStatus.state;
|
|
76
|
+
this.depositTree = pendingStatus.depositTree;
|
|
77
|
+
this.fromBlock = Math.max(pendingStatus.lastProcessedBlockNumber + 1, this.eth1Provider.deployBlock);
|
|
78
|
+
} else {
|
|
79
|
+
stateView = getGenesisBeaconState(
|
|
80
|
+
config,
|
|
81
|
+
ssz.phase0.Eth1Data.defaultValue(),
|
|
82
|
+
getTemporaryBlockHeader(config, config.getForkTypes(GENESIS_SLOT).BeaconBlock.defaultValue())
|
|
83
|
+
);
|
|
84
|
+
this.depositTree = ssz.phase0.DepositDataRootList.defaultViewDU();
|
|
85
|
+
this.fromBlock = this.eth1Provider.deployBlock;
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// TODO - PENDING: Ensure EpochCacheImmutableData is created only once
|
|
89
|
+
this.state = createCachedBeaconState(stateView, createEmptyEpochCacheImmutableData(config, stateView));
|
|
90
|
+
this.config = this.state.config;
|
|
91
|
+
this.activatedValidatorCount = getActiveValidatorIndices(stateView, GENESIS_EPOCH).length;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Get eth1 deposit events and blocks and apply to this.state until we found genesis.
|
|
96
|
+
*/
|
|
97
|
+
async waitForGenesis(): Promise<GenesisResult> {
|
|
98
|
+
await this.eth1Provider.validateContract();
|
|
99
|
+
|
|
100
|
+
// Load data from data from this.db.depositData, this.db.depositDataRoot
|
|
101
|
+
// And start from a more recent fromBlock
|
|
102
|
+
const blockNumberValidatorGenesis = await this.waitForGenesisValidators();
|
|
103
|
+
|
|
104
|
+
const depositsAndBlocksStream = getDepositsAndBlockStreamForGenesis(
|
|
105
|
+
blockNumberValidatorGenesis,
|
|
106
|
+
this.eth1Provider,
|
|
107
|
+
this.eth1Params,
|
|
108
|
+
this.signal
|
|
109
|
+
);
|
|
110
|
+
|
|
111
|
+
for await (const [depositEvents, block] of depositsAndBlocksStream) {
|
|
112
|
+
this.applyDeposits(depositEvents);
|
|
113
|
+
applyTimestamp(this.config, this.state, block.timestamp);
|
|
114
|
+
applyEth1BlockHash(this.state, block.blockHash);
|
|
115
|
+
this.lastProcessedBlockNumber = block.blockNumber;
|
|
116
|
+
|
|
117
|
+
if (
|
|
118
|
+
this.state.genesisTime >= this.config.MIN_GENESIS_TIME &&
|
|
119
|
+
this.activatedValidatorCount >= this.config.MIN_GENESIS_ACTIVE_VALIDATOR_COUNT
|
|
120
|
+
) {
|
|
121
|
+
this.logger.info("Found genesis state", {blockNumber: block.blockNumber});
|
|
122
|
+
return {
|
|
123
|
+
state: this.state,
|
|
124
|
+
depositTree: this.depositTree,
|
|
125
|
+
block,
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
this.throttledLog(`Waiting for min genesis time ${block.timestamp} / ${this.config.MIN_GENESIS_TIME}`);
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
throw Error("depositsStream stopped without a valid genesis state");
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* First phase of waiting for genesis.
|
|
137
|
+
* Stream deposits events in batches as big as possible without querying block data
|
|
138
|
+
* @returns Block number at which there are enough active validators is state for genesis
|
|
139
|
+
*/
|
|
140
|
+
private async waitForGenesisValidators(): Promise<number> {
|
|
141
|
+
const depositsStream = getDepositsStream(this.fromBlock, this.eth1Provider, this.eth1Params, this.signal);
|
|
142
|
+
|
|
143
|
+
for await (const {depositEvents, blockNumber} of depositsStream) {
|
|
144
|
+
this.applyDeposits(depositEvents);
|
|
145
|
+
this.lastProcessedBlockNumber = blockNumber;
|
|
146
|
+
|
|
147
|
+
if (this.activatedValidatorCount >= this.config.MIN_GENESIS_ACTIVE_VALIDATOR_COUNT) {
|
|
148
|
+
this.logger.info("Found enough genesis validators", {blockNumber});
|
|
149
|
+
return blockNumber;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
this.throttledLog(
|
|
153
|
+
`Found ${this.state.validators.length} / ${this.config.MIN_GENESIS_ACTIVE_VALIDATOR_COUNT} validators to genesis`
|
|
154
|
+
);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
throw Error("depositsStream stopped without a valid genesis state");
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
private applyDeposits(depositEvents: phase0.DepositEvent[]): void {
|
|
161
|
+
const newDeposits = depositEvents
|
|
162
|
+
.filter((depositEvent) => !this.depositCache.has(depositEvent.index))
|
|
163
|
+
.map((depositEvent) => {
|
|
164
|
+
this.depositCache.add(depositEvent.index);
|
|
165
|
+
this.depositTree.push(ssz.phase0.DepositData.hashTreeRoot(depositEvent.depositData));
|
|
166
|
+
const gindex = toGindex(this.depositTree.type.depth, BigInt(depositEvent.index));
|
|
167
|
+
|
|
168
|
+
// Apply changes from the push above
|
|
169
|
+
this.depositTree.commit();
|
|
170
|
+
const depositTreeNode = this.depositTree.node;
|
|
171
|
+
return {
|
|
172
|
+
proof: new Tree(depositTreeNode).getSingleProof(gindex),
|
|
173
|
+
data: depositEvent.depositData,
|
|
174
|
+
};
|
|
175
|
+
});
|
|
176
|
+
|
|
177
|
+
const {activatedValidatorCount} = applyDeposits(this.config, this.state, newDeposits, this.depositTree);
|
|
178
|
+
this.activatedValidatorCount += activatedValidatorCount;
|
|
179
|
+
|
|
180
|
+
// TODO: If necessary persist deposits here to this.db.depositData, this.db.depositDataRoot
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
/** Throttle genesis generation status log to prevent spamming */
|
|
184
|
+
private throttledLog(message: string): void {
|
|
185
|
+
if (Date.now() - this.lastLog > this.logEvery) {
|
|
186
|
+
this.lastLog = Date.now();
|
|
187
|
+
this.logger.info(message);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import {CompositeViewDU, VectorCompositeType} from "@chainsafe/ssz";
|
|
2
|
+
import {CachedBeaconStateAllForks} from "@lodestar/state-transition";
|
|
3
|
+
import {ssz} from "@lodestar/types";
|
|
4
|
+
import {Eth1Block} from "../../eth1/interface.js";
|
|
5
|
+
|
|
6
|
+
export type GenesisResult = {
|
|
7
|
+
state: CachedBeaconStateAllForks;
|
|
8
|
+
depositTree: CompositeViewDU<VectorCompositeType<typeof ssz.Root>>;
|
|
9
|
+
block: Eth1Block;
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
export interface IGenesisBuilder {
|
|
13
|
+
waitForGenesis: () => Promise<GenesisResult>;
|
|
14
|
+
}
|
package/src/chain/initState.ts
CHANGED
|
@@ -1,11 +1,37 @@
|
|
|
1
1
|
import {ChainForkConfig} from "@lodestar/config";
|
|
2
2
|
import {ZERO_HASH} from "@lodestar/params";
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
BeaconStateAllForks,
|
|
5
|
+
CachedBeaconStateAllForks,
|
|
6
|
+
computeEpochAtSlot,
|
|
7
|
+
computeStartSlotAtEpoch,
|
|
8
|
+
} from "@lodestar/state-transition";
|
|
4
9
|
import {SignedBeaconBlock, ssz} from "@lodestar/types";
|
|
5
10
|
import {Logger, toHex, toRootHex} from "@lodestar/utils";
|
|
6
11
|
import {GENESIS_SLOT} from "../constants/index.js";
|
|
7
12
|
import {IBeaconDb} from "../db/index.js";
|
|
13
|
+
import {Eth1Provider} from "../eth1/index.js";
|
|
14
|
+
import {Eth1Options} from "../eth1/options.js";
|
|
8
15
|
import {Metrics} from "../metrics/index.js";
|
|
16
|
+
import {GenesisBuilder} from "./genesis/genesis.js";
|
|
17
|
+
import {GenesisResult} from "./genesis/interface.js";
|
|
18
|
+
|
|
19
|
+
export async function persistGenesisResult(
|
|
20
|
+
db: IBeaconDb,
|
|
21
|
+
genesisResult: GenesisResult,
|
|
22
|
+
genesisBlock: SignedBeaconBlock
|
|
23
|
+
): Promise<void> {
|
|
24
|
+
await Promise.all([
|
|
25
|
+
db.stateArchive.add(genesisResult.state),
|
|
26
|
+
db.blockArchive.add(genesisBlock),
|
|
27
|
+
db.depositDataRoot.putList(genesisResult.depositTree.getAllReadonlyValues()),
|
|
28
|
+
db.eth1Data.put(genesisResult.block.timestamp, {
|
|
29
|
+
...genesisResult.block,
|
|
30
|
+
depositCount: genesisResult.depositTree.length,
|
|
31
|
+
depositRoot: genesisResult.depositTree.hashTreeRoot(),
|
|
32
|
+
}),
|
|
33
|
+
]);
|
|
34
|
+
}
|
|
9
35
|
|
|
10
36
|
export async function persistAnchorState(
|
|
11
37
|
config: ChainForkConfig,
|
|
@@ -49,6 +75,76 @@ export function createGenesisBlock(config: ChainForkConfig, genesisState: Beacon
|
|
|
49
75
|
return genesisBlock;
|
|
50
76
|
}
|
|
51
77
|
|
|
78
|
+
/**
|
|
79
|
+
* Initialize and persist a genesis state and related data
|
|
80
|
+
*/
|
|
81
|
+
export async function initStateFromEth1({
|
|
82
|
+
config,
|
|
83
|
+
db,
|
|
84
|
+
logger,
|
|
85
|
+
opts,
|
|
86
|
+
signal,
|
|
87
|
+
}: {
|
|
88
|
+
config: ChainForkConfig;
|
|
89
|
+
db: IBeaconDb;
|
|
90
|
+
logger: Logger;
|
|
91
|
+
opts: Eth1Options;
|
|
92
|
+
signal: AbortSignal;
|
|
93
|
+
}): Promise<CachedBeaconStateAllForks> {
|
|
94
|
+
logger.info("Listening to eth1 for genesis state");
|
|
95
|
+
|
|
96
|
+
const statePreGenesis = await db.preGenesisState.get();
|
|
97
|
+
const depositTree = await db.depositDataRoot.getDepositRootTree();
|
|
98
|
+
const lastProcessedBlockNumber = await db.preGenesisStateLastProcessedBlock.get();
|
|
99
|
+
|
|
100
|
+
const builder = new GenesisBuilder({
|
|
101
|
+
config,
|
|
102
|
+
eth1Provider: new Eth1Provider(config, {...opts, logger}, signal),
|
|
103
|
+
logger,
|
|
104
|
+
signal,
|
|
105
|
+
pendingStatus:
|
|
106
|
+
statePreGenesis && depositTree !== undefined && lastProcessedBlockNumber != null
|
|
107
|
+
? {state: statePreGenesis, depositTree, lastProcessedBlockNumber}
|
|
108
|
+
: undefined,
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
try {
|
|
112
|
+
const genesisResult = await builder.waitForGenesis();
|
|
113
|
+
|
|
114
|
+
// Note: .hashTreeRoot() automatically commits()
|
|
115
|
+
const genesisBlock = createGenesisBlock(config, genesisResult.state);
|
|
116
|
+
const types = config.getForkTypes(GENESIS_SLOT);
|
|
117
|
+
const stateRoot = genesisResult.state.hashTreeRoot();
|
|
118
|
+
const blockRoot = types.BeaconBlock.hashTreeRoot(genesisBlock.message);
|
|
119
|
+
|
|
120
|
+
logger.info("Initializing genesis state", {
|
|
121
|
+
stateRoot: toRootHex(stateRoot),
|
|
122
|
+
blockRoot: toRootHex(blockRoot),
|
|
123
|
+
validatorCount: genesisResult.state.validators.length,
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
await persistGenesisResult(db, genesisResult, genesisBlock);
|
|
127
|
+
|
|
128
|
+
logger.verbose("Clearing pending genesis state if any");
|
|
129
|
+
await db.preGenesisState.delete();
|
|
130
|
+
await db.preGenesisStateLastProcessedBlock.delete();
|
|
131
|
+
|
|
132
|
+
return genesisResult.state;
|
|
133
|
+
} catch (e) {
|
|
134
|
+
if (builder.lastProcessedBlockNumber != null) {
|
|
135
|
+
logger.info("Persisting genesis state", {block: builder.lastProcessedBlockNumber});
|
|
136
|
+
|
|
137
|
+
// Commit changed before serializing
|
|
138
|
+
builder.state.commit();
|
|
139
|
+
|
|
140
|
+
await db.preGenesisState.put(builder.state);
|
|
141
|
+
await db.depositDataRoot.putList(builder.depositTree.getAllReadonlyValues());
|
|
142
|
+
await db.preGenesisStateLastProcessedBlock.put(builder.lastProcessedBlockNumber);
|
|
143
|
+
}
|
|
144
|
+
throw e;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
52
148
|
/**
|
|
53
149
|
* Restore the latest beacon state from db
|
|
54
150
|
*/
|