@lodestar/beacon-node 1.39.0-dev.3bf4734ba9 → 1.39.0-dev.46c9c672fd
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/README.md +1 -1
- package/lib/api/impl/beacon/blocks/utils.js +1 -1
- package/lib/api/impl/beacon/blocks/utils.js.map +1 -1
- package/lib/chain/blocks/verifyBlock.d.ts.map +1 -1
- package/lib/chain/blocks/verifyBlock.js +1 -1
- package/lib/chain/blocks/verifyBlock.js.map +1 -1
- package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts.map +1 -1
- package/lib/chain/blocks/verifyBlocksExecutionPayloads.js +4 -2
- package/lib/chain/blocks/verifyBlocksExecutionPayloads.js.map +1 -1
- package/lib/chain/blocks/verifyBlocksSignatures.d.ts +2 -1
- package/lib/chain/blocks/verifyBlocksSignatures.d.ts.map +1 -1
- package/lib/chain/blocks/verifyBlocksSignatures.js +3 -2
- package/lib/chain/blocks/verifyBlocksSignatures.js.map +1 -1
- package/lib/chain/chain.d.ts +8 -12
- package/lib/chain/chain.d.ts.map +1 -1
- package/lib/chain/chain.js +23 -47
- package/lib/chain/chain.js.map +1 -1
- package/lib/chain/forkChoice/index.d.ts.map +1 -1
- package/lib/chain/forkChoice/index.js +3 -3
- package/lib/chain/forkChoice/index.js.map +1 -1
- package/lib/chain/initState.d.ts +1 -14
- package/lib/chain/initState.d.ts.map +1 -1
- package/lib/chain/initState.js +1 -62
- package/lib/chain/initState.js.map +1 -1
- package/lib/chain/interface.d.ts +4 -9
- package/lib/chain/interface.d.ts.map +1 -1
- package/lib/chain/interface.js.map +1 -1
- package/lib/chain/opPools/aggregatedAttestationPool.d.ts +4 -4
- package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +1 -1
- package/lib/chain/opPools/aggregatedAttestationPool.js +4 -4
- package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
- package/lib/chain/opPools/opPool.d.ts +3 -0
- package/lib/chain/opPools/opPool.d.ts.map +1 -1
- package/lib/chain/opPools/opPool.js +9 -8
- package/lib/chain/opPools/opPool.js.map +1 -1
- package/lib/chain/prepareNextSlot.d.ts +0 -4
- package/lib/chain/prepareNextSlot.d.ts.map +1 -1
- package/lib/chain/prepareNextSlot.js +1 -21
- package/lib/chain/prepareNextSlot.js.map +1 -1
- package/lib/chain/produceBlock/produceBlockBody.d.ts +0 -1
- package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
- package/lib/chain/produceBlock/produceBlockBody.js +9 -12
- package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
- package/lib/chain/stateCache/persistentCheckpointsCache.d.ts +4 -1
- package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +1 -1
- package/lib/chain/stateCache/persistentCheckpointsCache.js +4 -2
- package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
- package/lib/chain/validation/aggregateAndProof.js +9 -0
- package/lib/chain/validation/aggregateAndProof.js.map +1 -1
- package/lib/chain/validation/attesterSlashing.d.ts.map +1 -1
- package/lib/chain/validation/attesterSlashing.js +1 -1
- package/lib/chain/validation/attesterSlashing.js.map +1 -1
- package/lib/chain/validation/blobSidecar.d.ts.map +1 -1
- package/lib/chain/validation/blobSidecar.js +2 -3
- package/lib/chain/validation/blobSidecar.js.map +1 -1
- package/lib/chain/validation/block.d.ts.map +1 -1
- package/lib/chain/validation/block.js +3 -3
- package/lib/chain/validation/block.js.map +1 -1
- package/lib/chain/validation/blsToExecutionChange.d.ts.map +1 -1
- package/lib/chain/validation/blsToExecutionChange.js +10 -3
- package/lib/chain/validation/blsToExecutionChange.js.map +1 -1
- package/lib/chain/validation/dataColumnSidecar.d.ts.map +1 -1
- package/lib/chain/validation/dataColumnSidecar.js +2 -3
- package/lib/chain/validation/dataColumnSidecar.js.map +1 -1
- package/lib/chain/validation/proposerSlashing.js +1 -1
- package/lib/chain/validation/proposerSlashing.js.map +1 -1
- package/lib/chain/validation/signatureSets/aggregateAndProof.js +1 -1
- package/lib/chain/validation/signatureSets/aggregateAndProof.js.map +1 -1
- package/lib/chain/validation/signatureSets/contributionAndProof.d.ts +2 -1
- package/lib/chain/validation/signatureSets/contributionAndProof.d.ts.map +1 -1
- package/lib/chain/validation/signatureSets/contributionAndProof.js +2 -2
- package/lib/chain/validation/signatureSets/contributionAndProof.js.map +1 -1
- package/lib/chain/validation/signatureSets/syncCommittee.d.ts +2 -1
- package/lib/chain/validation/signatureSets/syncCommittee.d.ts.map +1 -1
- package/lib/chain/validation/signatureSets/syncCommittee.js +2 -2
- package/lib/chain/validation/signatureSets/syncCommittee.js.map +1 -1
- package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts +2 -1
- package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts.map +1 -1
- package/lib/chain/validation/signatureSets/syncCommitteeContribution.js +2 -2
- package/lib/chain/validation/signatureSets/syncCommitteeContribution.js.map +1 -1
- package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts +2 -1
- package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts.map +1 -1
- package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.js +1 -2
- package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.js.map +1 -1
- package/lib/chain/validation/syncCommittee.js +1 -1
- package/lib/chain/validation/syncCommittee.js.map +1 -1
- package/lib/chain/validation/syncCommitteeContributionAndProof.d.ts.map +1 -1
- package/lib/chain/validation/syncCommitteeContributionAndProof.js +3 -3
- package/lib/chain/validation/syncCommitteeContributionAndProof.js.map +1 -1
- package/lib/chain/validation/voluntaryExit.js +1 -1
- package/lib/chain/validation/voluntaryExit.js.map +1 -1
- package/lib/db/beacon.d.ts +3 -7
- package/lib/db/beacon.d.ts.map +1 -1
- package/lib/db/beacon.js +33 -12
- package/lib/db/beacon.js.map +1 -1
- package/lib/db/buckets.d.ts +12 -6
- package/lib/db/buckets.d.ts.map +1 -1
- package/lib/db/buckets.js +6 -1
- package/lib/db/buckets.js.map +1 -1
- package/lib/db/interface.d.ts +2 -7
- package/lib/db/interface.d.ts.map +1 -1
- package/lib/db/repositories/index.d.ts +0 -3
- package/lib/db/repositories/index.d.ts.map +1 -1
- package/lib/db/repositories/index.js +0 -3
- package/lib/db/repositories/index.js.map +1 -1
- 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 +2 -3
- 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/{eth1/provider → execution/engine}/jsonRpcHttpClient.d.ts +1 -1
- package/lib/execution/engine/jsonRpcHttpClient.d.ts.map +1 -0
- package/lib/execution/engine/jsonRpcHttpClient.js.map +1 -0
- package/lib/execution/engine/jwt.d.ts.map +1 -0
- package/lib/execution/engine/jwt.js.map +1 -0
- 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 +64 -2
- package/lib/execution/engine/utils.d.ts.map +1 -1
- package/lib/execution/engine/utils.js +91 -2
- package/lib/execution/engine/utils.js.map +1 -1
- package/lib/index.d.ts +1 -2
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -2
- package/lib/index.js.map +1 -1
- package/lib/metrics/metrics/lodestar.d.ts +0 -35
- package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
- package/lib/metrics/metrics/lodestar.js +0 -90
- package/lib/metrics/metrics/lodestar.js.map +1 -1
- package/lib/network/core/events.d.ts +1 -1
- package/lib/network/core/events.d.ts.map +1 -1
- package/lib/network/core/events.js +1 -1
- package/lib/network/core/events.js.map +1 -1
- package/lib/network/events.d.ts +6 -1
- package/lib/network/events.d.ts.map +1 -1
- package/lib/network/events.js +7 -1
- package/lib/network/events.js.map +1 -1
- package/lib/network/peers/discover.d.ts.map +1 -1
- package/lib/network/peers/discover.js.map +1 -1
- package/lib/node/nodejs.d.ts +6 -3
- package/lib/node/nodejs.d.ts.map +1 -1
- package/lib/node/nodejs.js +13 -10
- package/lib/node/nodejs.js.map +1 -1
- package/lib/node/notifier.d.ts.map +1 -1
- package/lib/node/notifier.js +9 -6
- package/lib/node/notifier.js.map +1 -1
- package/lib/node/options.d.ts +0 -2
- package/lib/node/options.d.ts.map +1 -1
- package/lib/node/options.js +0 -2
- package/lib/node/options.js.map +1 -1
- package/lib/node/utils/interop/deposits.d.ts +2 -1
- 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 +1 -7
- package/lib/node/utils/state.d.ts.map +1 -1
- package/lib/node/utils/state.js +1 -14
- package/lib/node/utils/state.js.map +1 -1
- package/lib/sync/backfill/backfill.d.ts.map +1 -1
- package/lib/sync/backfill/backfill.js +2 -4
- package/lib/sync/backfill/backfill.js.map +1 -1
- package/lib/sync/backfill/verify.d.ts +2 -2
- package/lib/sync/backfill/verify.d.ts.map +1 -1
- package/lib/sync/backfill/verify.js +3 -3
- package/lib/sync/backfill/verify.js.map +1 -1
- package/lib/util/workerEvents.d.ts +1 -6
- package/lib/util/workerEvents.d.ts.map +1 -1
- package/lib/util/workerEvents.js +8 -8
- package/lib/util/workerEvents.js.map +1 -1
- package/package.json +28 -26
- package/src/api/impl/beacon/blocks/utils.ts +1 -1
- package/src/chain/blocks/verifyBlock.ts +1 -0
- package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +9 -2
- package/src/chain/blocks/verifyBlocksSignatures.ts +13 -3
- package/src/chain/chain.ts +33 -56
- package/src/chain/forkChoice/index.ts +3 -2
- package/src/chain/initState.ts +1 -97
- package/src/chain/interface.ts +4 -8
- package/src/chain/opPools/aggregatedAttestationPool.ts +7 -7
- package/src/chain/opPools/opPool.ts +8 -8
- package/src/chain/prepareNextSlot.ts +1 -28
- package/src/chain/produceBlock/produceBlockBody.ts +9 -13
- package/src/chain/stateCache/persistentCheckpointsCache.ts +15 -2
- package/src/chain/validation/aggregateAndProof.ts +12 -0
- package/src/chain/validation/attesterSlashing.ts +6 -1
- package/src/chain/validation/blobSidecar.ts +3 -3
- package/src/chain/validation/block.ts +3 -2
- package/src/chain/validation/blsToExecutionChange.ts +10 -8
- package/src/chain/validation/dataColumnSidecar.ts +3 -3
- package/src/chain/validation/proposerSlashing.ts +6 -1
- package/src/chain/validation/signatureSets/aggregateAndProof.ts +1 -1
- package/src/chain/validation/signatureSets/contributionAndProof.ts +3 -1
- package/src/chain/validation/signatureSets/syncCommittee.ts +3 -1
- package/src/chain/validation/signatureSets/syncCommitteeContribution.ts +3 -1
- package/src/chain/validation/signatureSets/syncCommitteeSelectionProof.ts +2 -1
- package/src/chain/validation/syncCommittee.ts +1 -1
- package/src/chain/validation/syncCommitteeContributionAndProof.ts +8 -3
- package/src/chain/validation/voluntaryExit.ts +1 -1
- package/src/db/beacon.ts +38 -16
- package/src/db/buckets.ts +12 -7
- package/src/db/interface.ts +2 -13
- package/src/db/repositories/index.ts +0 -3
- package/src/execution/engine/http.ts +8 -9
- package/src/execution/engine/index.ts +1 -1
- package/src/execution/engine/interface.ts +1 -1
- package/src/{eth1/provider → execution/engine}/jsonRpcHttpClient.ts +1 -1
- package/src/execution/engine/mock.ts +1 -2
- package/src/execution/engine/payloadIdCache.ts +1 -1
- package/src/execution/engine/types.ts +9 -9
- package/src/execution/engine/utils.ts +111 -5
- package/src/index.ts +1 -2
- package/src/metrics/metrics/lodestar.ts +0 -92
- package/src/network/core/events.ts +1 -1
- package/src/network/events.ts +7 -1
- package/src/network/peers/discover.ts +3 -3
- package/src/node/nodejs.ts +20 -11
- package/src/node/notifier.ts +13 -7
- package/src/node/options.ts +0 -3
- package/src/node/utils/interop/deposits.ts +3 -1
- package/src/node/utils/interop/state.ts +1 -1
- package/src/node/utils/state.ts +3 -18
- package/src/sync/backfill/backfill.ts +2 -9
- package/src/sync/backfill/verify.ts +3 -8
- package/src/util/workerEvents.ts +9 -8
- package/lib/chain/genesis/genesis.d.ts +0 -51
- package/lib/chain/genesis/genesis.d.ts.map +0 -1
- package/lib/chain/genesis/genesis.js +0 -123
- package/lib/chain/genesis/genesis.js.map +0 -1
- package/lib/chain/genesis/interface.d.ts +0 -13
- package/lib/chain/genesis/interface.d.ts.map +0 -1
- package/lib/chain/genesis/interface.js +0 -2
- package/lib/chain/genesis/interface.js.map +0 -1
- package/lib/chain/rewards/attestationsRewards.d.ts +0 -7
- package/lib/chain/rewards/attestationsRewards.d.ts.map +0 -1
- package/lib/chain/rewards/attestationsRewards.js +0 -112
- package/lib/chain/rewards/attestationsRewards.js.map +0 -1
- package/lib/chain/rewards/blockRewards.d.ts +0 -14
- package/lib/chain/rewards/blockRewards.d.ts.map +0 -1
- package/lib/chain/rewards/blockRewards.js +0 -94
- package/lib/chain/rewards/blockRewards.js.map +0 -1
- package/lib/chain/rewards/syncCommitteeRewards.d.ts +0 -6
- package/lib/chain/rewards/syncCommitteeRewards.d.ts.map +0 -1
- package/lib/chain/rewards/syncCommitteeRewards.js +0 -36
- package/lib/chain/rewards/syncCommitteeRewards.js.map +0 -1
- package/lib/db/repositories/depositDataRoot.d.ts +0 -22
- package/lib/db/repositories/depositDataRoot.d.ts.map +0 -1
- package/lib/db/repositories/depositDataRoot.js +0 -62
- package/lib/db/repositories/depositDataRoot.js.map +0 -1
- package/lib/db/repositories/depositEvent.d.ts +0 -13
- package/lib/db/repositories/depositEvent.d.ts.map +0 -1
- package/lib/db/repositories/depositEvent.js +0 -27
- package/lib/db/repositories/depositEvent.js.map +0 -1
- package/lib/db/repositories/eth1Data.d.ts +0 -13
- package/lib/db/repositories/eth1Data.d.ts.map +0 -1
- package/lib/db/repositories/eth1Data.js +0 -26
- package/lib/db/repositories/eth1Data.js.map +0 -1
- package/lib/db/single/index.d.ts +0 -3
- package/lib/db/single/index.d.ts.map +0 -1
- package/lib/db/single/index.js +0 -3
- package/lib/db/single/index.js.map +0 -1
- package/lib/db/single/preGenesisState.d.ts +0 -16
- package/lib/db/single/preGenesisState.d.ts.map +0 -1
- package/lib/db/single/preGenesisState.js +0 -29
- package/lib/db/single/preGenesisState.js.map +0 -1
- package/lib/db/single/preGenesisStateLastProcessedBlock.d.ts +0 -14
- package/lib/db/single/preGenesisStateLastProcessedBlock.d.ts.map +0 -1
- package/lib/db/single/preGenesisStateLastProcessedBlock.js +0 -27
- package/lib/db/single/preGenesisStateLastProcessedBlock.js.map +0 -1
- package/lib/eth1/errors.d.ts +0 -66
- package/lib/eth1/errors.d.ts.map +0 -1
- package/lib/eth1/errors.js +0 -27
- package/lib/eth1/errors.js.map +0 -1
- package/lib/eth1/eth1DataCache.d.ts +0 -19
- package/lib/eth1/eth1DataCache.d.ts.map +0 -1
- package/lib/eth1/eth1DataCache.js +0 -19
- package/lib/eth1/eth1DataCache.js.map +0 -1
- package/lib/eth1/eth1DepositDataTracker.d.ts +0 -80
- package/lib/eth1/eth1DepositDataTracker.d.ts.map +0 -1
- package/lib/eth1/eth1DepositDataTracker.js +0 -317
- package/lib/eth1/eth1DepositDataTracker.js.map +0 -1
- package/lib/eth1/eth1DepositsCache.d.ts +0 -42
- package/lib/eth1/eth1DepositsCache.d.ts.map +0 -1
- package/lib/eth1/eth1DepositsCache.js +0 -119
- package/lib/eth1/eth1DepositsCache.js.map +0 -1
- package/lib/eth1/index.d.ts +0 -31
- package/lib/eth1/index.d.ts.map +0 -1
- package/lib/eth1/index.js +0 -71
- package/lib/eth1/index.js.map +0 -1
- package/lib/eth1/interface.d.ts +0 -74
- package/lib/eth1/interface.d.ts.map +0 -1
- package/lib/eth1/interface.js +0 -8
- package/lib/eth1/interface.js.map +0 -1
- package/lib/eth1/options.d.ts +0 -22
- package/lib/eth1/options.d.ts.map +0 -1
- package/lib/eth1/options.js +0 -8
- package/lib/eth1/options.js.map +0 -1
- package/lib/eth1/provider/eth1Provider.d.ts +0 -39
- package/lib/eth1/provider/eth1Provider.d.ts.map +0 -1
- package/lib/eth1/provider/eth1Provider.js +0 -147
- package/lib/eth1/provider/eth1Provider.js.map +0 -1
- package/lib/eth1/provider/jsonRpcHttpClient.d.ts.map +0 -1
- package/lib/eth1/provider/jsonRpcHttpClient.js.map +0 -1
- package/lib/eth1/provider/jwt.d.ts.map +0 -1
- package/lib/eth1/provider/jwt.js.map +0 -1
- package/lib/eth1/provider/utils.d.ts +0 -65
- package/lib/eth1/provider/utils.d.ts.map +0 -1
- package/lib/eth1/provider/utils.js +0 -120
- package/lib/eth1/provider/utils.js.map +0 -1
- package/lib/eth1/stream.d.ts +0 -15
- package/lib/eth1/stream.d.ts.map +0 -1
- package/lib/eth1/stream.js +0 -54
- package/lib/eth1/stream.js.map +0 -1
- package/lib/eth1/utils/depositContract.d.ts +0 -14
- package/lib/eth1/utils/depositContract.d.ts.map +0 -1
- package/lib/eth1/utils/depositContract.js +0 -33
- package/lib/eth1/utils/depositContract.js.map +0 -1
- package/lib/eth1/utils/deposits.d.ts +0 -8
- package/lib/eth1/utils/deposits.d.ts.map +0 -1
- package/lib/eth1/utils/deposits.js +0 -47
- package/lib/eth1/utils/deposits.js.map +0 -1
- package/lib/eth1/utils/eth1Data.d.ts +0 -22
- package/lib/eth1/utils/eth1Data.d.ts.map +0 -1
- package/lib/eth1/utils/eth1Data.js +0 -77
- package/lib/eth1/utils/eth1Data.js.map +0 -1
- package/lib/eth1/utils/eth1DepositEvent.d.ts +0 -7
- package/lib/eth1/utils/eth1DepositEvent.d.ts.map +0 -1
- package/lib/eth1/utils/eth1DepositEvent.js +0 -13
- package/lib/eth1/utils/eth1DepositEvent.js.map +0 -1
- package/lib/eth1/utils/eth1Vote.d.ts +0 -17
- package/lib/eth1/utils/eth1Vote.d.ts.map +0 -1
- package/lib/eth1/utils/eth1Vote.js +0 -111
- package/lib/eth1/utils/eth1Vote.js.map +0 -1
- package/lib/eth1/utils/groupDepositEventsByBlock.d.ts +0 -9
- package/lib/eth1/utils/groupDepositEventsByBlock.d.ts.map +0 -1
- package/lib/eth1/utils/groupDepositEventsByBlock.js +0 -17
- package/lib/eth1/utils/groupDepositEventsByBlock.js.map +0 -1
- package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.d.ts +0 -10
- package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.d.ts.map +0 -1
- package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.js +0 -14
- package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.js.map +0 -1
- package/src/chain/genesis/genesis.ts +0 -190
- package/src/chain/genesis/interface.ts +0 -14
- package/src/chain/rewards/attestationsRewards.ts +0 -197
- package/src/chain/rewards/blockRewards.ts +0 -150
- package/src/chain/rewards/syncCommitteeRewards.ts +0 -58
- package/src/db/repositories/depositDataRoot.ts +0 -80
- package/src/db/repositories/depositEvent.ts +0 -32
- package/src/db/repositories/eth1Data.ts +0 -33
- package/src/db/single/index.ts +0 -2
- package/src/db/single/preGenesisState.ts +0 -37
- package/src/db/single/preGenesisStateLastProcessedBlock.ts +0 -34
- package/src/eth1/errors.ts +0 -40
- package/src/eth1/eth1DataCache.ts +0 -26
- package/src/eth1/eth1DepositDataTracker.ts +0 -410
- package/src/eth1/eth1DepositsCache.ts +0 -141
- package/src/eth1/index.ts +0 -94
- package/src/eth1/interface.ts +0 -87
- package/src/eth1/options.ts +0 -28
- package/src/eth1/provider/eth1Provider.ts +0 -229
- package/src/eth1/provider/utils.ts +0 -136
- package/src/eth1/stream.ts +0 -75
- package/src/eth1/utils/depositContract.ts +0 -37
- package/src/eth1/utils/deposits.ts +0 -70
- package/src/eth1/utils/eth1Data.ts +0 -100
- package/src/eth1/utils/eth1DepositEvent.ts +0 -12
- package/src/eth1/utils/eth1Vote.ts +0 -142
- package/src/eth1/utils/groupDepositEventsByBlock.ts +0 -19
- package/src/eth1/utils/optimizeNextBlockDiffForGenesis.ts +0 -18
- /package/lib/{eth1/provider → execution/engine}/jsonRpcHttpClient.js +0 -0
- /package/lib/{eth1/provider → execution/engine}/jwt.d.ts +0 -0
- /package/lib/{eth1/provider → execution/engine}/jwt.js +0 -0
- /package/src/{eth1/provider → execution/engine}/jwt.ts +0 -0
package/src/network/events.ts
CHANGED
|
@@ -3,7 +3,6 @@ import {PeerId, TopicValidatorResult} from "@libp2p/interface";
|
|
|
3
3
|
import {CustodyIndex, Status} from "@lodestar/types";
|
|
4
4
|
import {PeerIdStr} from "../util/peerId.js";
|
|
5
5
|
import {StrictEventEmitterSingleArg} from "../util/strictEvents.js";
|
|
6
|
-
import {EventDirection} from "../util/workerEvents.js";
|
|
7
6
|
import {PendingGossipsubMessage} from "./processor/types.js";
|
|
8
7
|
import {RequestTypedContainer} from "./reqresp/ReqRespBeaconNode.js";
|
|
9
8
|
|
|
@@ -38,6 +37,13 @@ export type NetworkEventData = {
|
|
|
38
37
|
};
|
|
39
38
|
};
|
|
40
39
|
|
|
40
|
+
export enum EventDirection {
|
|
41
|
+
workerToMain,
|
|
42
|
+
mainToWorker,
|
|
43
|
+
/** Event not emitted through worker boundary */
|
|
44
|
+
none,
|
|
45
|
+
}
|
|
46
|
+
|
|
41
47
|
export const networkEventDirection: Record<NetworkEvent, EventDirection> = {
|
|
42
48
|
[NetworkEvent.peerConnected]: EventDirection.workerToMain,
|
|
43
49
|
[NetworkEvent.peerDisconnected]: EventDirection.workerToMain,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {PeerId, PeerInfo, PrivateKey} from "@libp2p/interface";
|
|
1
|
+
import type {PeerId, PeerInfo, PendingDial, PrivateKey} from "@libp2p/interface";
|
|
2
2
|
import {Multiaddr} from "@multiformats/multiaddr";
|
|
3
3
|
import {ENR} from "@chainsafe/enr";
|
|
4
4
|
import {BeaconConfig} from "@lodestar/config";
|
|
@@ -217,7 +217,7 @@ export class PeerDiscovery {
|
|
|
217
217
|
const pendingDials = new Set(
|
|
218
218
|
this.libp2p.services.components.connectionManager
|
|
219
219
|
.getDialQueue()
|
|
220
|
-
.map((pendingDial) => pendingDial.peerId?.toString())
|
|
220
|
+
.map((pendingDial: PendingDial) => pendingDial.peerId?.toString())
|
|
221
221
|
);
|
|
222
222
|
for (const [id, cachedENR] of this.cachedENRs.entries()) {
|
|
223
223
|
if (
|
|
@@ -458,7 +458,7 @@ export class PeerDiscovery {
|
|
|
458
458
|
if (
|
|
459
459
|
this.libp2p.services.components.connectionManager
|
|
460
460
|
.getDialQueue()
|
|
461
|
-
.find((pendingDial) => pendingDial.peerId?.equals(peerId))
|
|
461
|
+
.find((pendingDial: PendingDial) => pendingDial.peerId?.equals(peerId))
|
|
462
462
|
) {
|
|
463
463
|
return DiscoveredPeerStatus.already_dialing;
|
|
464
464
|
}
|
package/src/node/nodejs.ts
CHANGED
|
@@ -2,10 +2,11 @@ import {setMaxListeners} from "node:events";
|
|
|
2
2
|
import {PrivateKey} from "@libp2p/interface";
|
|
3
3
|
import {Registry} from "prom-client";
|
|
4
4
|
import {hasher} from "@chainsafe/persistent-merkle-tree";
|
|
5
|
+
import {PubkeyIndexMap} from "@chainsafe/pubkey-index-map";
|
|
5
6
|
import {BeaconApiMethods} from "@lodestar/api/beacon/server";
|
|
6
7
|
import {BeaconConfig} from "@lodestar/config";
|
|
7
8
|
import type {LoggerNode} from "@lodestar/logger/node";
|
|
8
|
-
import {
|
|
9
|
+
import {CachedBeaconStateAllForks, Index2PubkeyCache} from "@lodestar/state-transition";
|
|
9
10
|
import {phase0} from "@lodestar/types";
|
|
10
11
|
import {sleep} from "@lodestar/utils";
|
|
11
12
|
import {ProcessShutdownCallback} from "@lodestar/validator";
|
|
@@ -13,7 +14,6 @@ import {BeaconRestApiServer, getApi} from "../api/index.js";
|
|
|
13
14
|
import {BeaconChain, IBeaconChain, initBeaconMetrics} from "../chain/index.js";
|
|
14
15
|
import {ValidatorMonitor, createValidatorMonitor} from "../chain/validatorMonitor.js";
|
|
15
16
|
import {IBeaconDb} from "../db/index.js";
|
|
16
|
-
import {initializeEth1ForBlockProduction} from "../eth1/index.js";
|
|
17
17
|
import {initializeExecutionBuilder, initializeExecutionEngine} from "../execution/index.js";
|
|
18
18
|
import {HttpMetricsServer, Metrics, createMetrics, getHttpMetricsServer} from "../metrics/index.js";
|
|
19
19
|
import {MonitoringService} from "../monitoring/index.js";
|
|
@@ -46,13 +46,15 @@ export type BeaconNodeModules = {
|
|
|
46
46
|
export type BeaconNodeInitModules = {
|
|
47
47
|
opts: IBeaconNodeOptions;
|
|
48
48
|
config: BeaconConfig;
|
|
49
|
+
pubkey2index: PubkeyIndexMap;
|
|
50
|
+
index2pubkey: Index2PubkeyCache;
|
|
49
51
|
db: IBeaconDb;
|
|
50
52
|
logger: LoggerNode;
|
|
51
53
|
processShutdownCallback: ProcessShutdownCallback;
|
|
52
54
|
privateKey: PrivateKey;
|
|
53
55
|
dataDir: string;
|
|
54
56
|
peerStoreDir?: string;
|
|
55
|
-
anchorState:
|
|
57
|
+
anchorState: CachedBeaconStateAllForks;
|
|
56
58
|
isAnchorStateFinalized: boolean;
|
|
57
59
|
wsCheckpoint?: phase0.Checkpoint;
|
|
58
60
|
metricsRegistries?: Registry[];
|
|
@@ -68,7 +70,6 @@ enum LoggerModule {
|
|
|
68
70
|
api = "api",
|
|
69
71
|
backfill = "backfill",
|
|
70
72
|
chain = "chain",
|
|
71
|
-
eth1 = "eth1",
|
|
72
73
|
execution = "execution",
|
|
73
74
|
metrics = "metrics",
|
|
74
75
|
monitoring = "monitoring",
|
|
@@ -148,6 +149,8 @@ export class BeaconNode {
|
|
|
148
149
|
static async init<T extends BeaconNode = BeaconNode>({
|
|
149
150
|
opts,
|
|
150
151
|
config,
|
|
152
|
+
pubkey2index,
|
|
153
|
+
index2pubkey,
|
|
151
154
|
db,
|
|
152
155
|
logger,
|
|
153
156
|
processShutdownCallback,
|
|
@@ -199,6 +202,17 @@ export class BeaconNode {
|
|
|
199
202
|
// TODO: Should this call be awaited?
|
|
200
203
|
await db.pruneHotDb();
|
|
201
204
|
|
|
205
|
+
// Delete deprecated eth1 data to free up disk space for users
|
|
206
|
+
logger.debug("Deleting deprecated eth1 data from database");
|
|
207
|
+
const startTime = Date.now();
|
|
208
|
+
db.deleteDeprecatedEth1Data()
|
|
209
|
+
.then(() => {
|
|
210
|
+
logger.debug("Deleted deprecated eth1 data", {durationMs: Date.now() - startTime});
|
|
211
|
+
})
|
|
212
|
+
.catch((e) => {
|
|
213
|
+
logger.error("Failed to delete deprecated eth1 data", {}, e);
|
|
214
|
+
});
|
|
215
|
+
|
|
202
216
|
const monitoring = opts.monitoring.endpoint
|
|
203
217
|
? new MonitoringService(
|
|
204
218
|
"beacon",
|
|
@@ -211,6 +225,8 @@ export class BeaconNode {
|
|
|
211
225
|
privateKey,
|
|
212
226
|
config,
|
|
213
227
|
clock,
|
|
228
|
+
pubkey2index,
|
|
229
|
+
index2pubkey,
|
|
214
230
|
dataDir,
|
|
215
231
|
db,
|
|
216
232
|
dbName: opts.db.name,
|
|
@@ -220,13 +236,6 @@ export class BeaconNode {
|
|
|
220
236
|
validatorMonitor,
|
|
221
237
|
anchorState,
|
|
222
238
|
isAnchorStateFinalized,
|
|
223
|
-
eth1: initializeEth1ForBlockProduction(opts.eth1, {
|
|
224
|
-
config,
|
|
225
|
-
db,
|
|
226
|
-
metrics,
|
|
227
|
-
logger: logger.child({module: LoggerModule.eth1}),
|
|
228
|
-
signal,
|
|
229
|
-
}),
|
|
230
239
|
executionEngine: initializeExecutionEngine(opts.executionEngine, {
|
|
231
240
|
metrics,
|
|
232
241
|
signal,
|
package/src/node/notifier.ts
CHANGED
|
@@ -6,6 +6,7 @@ import {
|
|
|
6
6
|
computeEpochAtSlot,
|
|
7
7
|
computeStartSlotAtEpoch,
|
|
8
8
|
isExecutionCachedStateType,
|
|
9
|
+
isMergeTransitionComplete,
|
|
9
10
|
} from "@lodestar/state-transition";
|
|
10
11
|
import {Epoch} from "@lodestar/types";
|
|
11
12
|
import {ErrorAborted, Logger, prettyBytes, prettyBytesShort, sleep} from "@lodestar/utils";
|
|
@@ -171,13 +172,18 @@ function getHeadExecutionInfo(
|
|
|
171
172
|
|
|
172
173
|
// Add execution status to notifier only if head is on/post bellatrix
|
|
173
174
|
if (isExecutionCachedStateType(headState)) {
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
175
|
+
if (isMergeTransitionComplete(headState)) {
|
|
176
|
+
const executionPayloadHashInfo =
|
|
177
|
+
headInfo.executionStatus !== ExecutionStatus.PreMerge ? headInfo.executionPayloadBlockHash : "empty";
|
|
178
|
+
const executionPayloadNumberInfo =
|
|
179
|
+
headInfo.executionStatus !== ExecutionStatus.PreMerge ? headInfo.executionPayloadNumber : NaN;
|
|
180
|
+
return [
|
|
181
|
+
`exec-block: ${executionStatusStr}(${executionPayloadNumberInfo} ${prettyBytesShort(
|
|
182
|
+
executionPayloadHashInfo
|
|
183
|
+
)})`,
|
|
184
|
+
];
|
|
185
|
+
}
|
|
186
|
+
return [`exec-block: ${executionStatusStr}`];
|
|
181
187
|
}
|
|
182
188
|
|
|
183
189
|
return [];
|
package/src/node/options.ts
CHANGED
|
@@ -2,7 +2,6 @@ import {ApiOptions, defaultApiOptions} from "../api/options.js";
|
|
|
2
2
|
import {ArchiveMode, DEFAULT_ARCHIVE_MODE, IChainOptions, defaultChainOptions} from "../chain/options.js";
|
|
3
3
|
import {ValidatorMonitorOpts, defaultValidatorMonitorOpts} from "../chain/validatorMonitor.js";
|
|
4
4
|
import {DatabaseOptions, defaultDbOptions} from "../db/options.js";
|
|
5
|
-
import {Eth1Options, defaultEth1Options} from "../eth1/options.js";
|
|
6
5
|
import {
|
|
7
6
|
ExecutionBuilderOpts,
|
|
8
7
|
ExecutionEngineOpts,
|
|
@@ -26,7 +25,6 @@ export interface IBeaconNodeOptions {
|
|
|
26
25
|
api: ApiOptions;
|
|
27
26
|
chain: IChainOptions;
|
|
28
27
|
db: DatabaseOptions;
|
|
29
|
-
eth1: Eth1Options;
|
|
30
28
|
executionEngine: ExecutionEngineOpts;
|
|
31
29
|
executionBuilder: ExecutionBuilderOpts;
|
|
32
30
|
metrics: MetricsOptions;
|
|
@@ -40,7 +38,6 @@ export const defaultOptions: IBeaconNodeOptions = {
|
|
|
40
38
|
api: defaultApiOptions,
|
|
41
39
|
chain: defaultChainOptions,
|
|
42
40
|
db: defaultDbOptions,
|
|
43
|
-
eth1: defaultEth1Options,
|
|
44
41
|
executionEngine: defaultExecutionEngineOpts,
|
|
45
42
|
executionBuilder: defaultExecutionBuilderOpts,
|
|
46
43
|
metrics: defaultMetricsOptions,
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import {digest} from "@chainsafe/as-sha256";
|
|
2
2
|
import {Tree, toGindex} from "@chainsafe/persistent-merkle-tree";
|
|
3
|
+
import {ByteVectorType, CompositeViewDU, ListCompositeType} from "@chainsafe/ssz";
|
|
3
4
|
import {ChainConfig} from "@lodestar/config";
|
|
4
5
|
import {
|
|
5
6
|
BLS_WITHDRAWAL_PREFIX,
|
|
@@ -9,7 +10,8 @@ import {
|
|
|
9
10
|
} from "@lodestar/params";
|
|
10
11
|
import {ZERO_HASH, computeDomain, computeSigningRoot, interopSecretKeys} from "@lodestar/state-transition";
|
|
11
12
|
import {phase0, ssz} from "@lodestar/types";
|
|
12
|
-
|
|
13
|
+
|
|
14
|
+
export type DepositTree = CompositeViewDU<ListCompositeType<ByteVectorType>>;
|
|
13
15
|
|
|
14
16
|
/**
|
|
15
17
|
* Compute and return deposit data from other validators.
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
initializeBeaconStateFromEth1,
|
|
7
7
|
} from "@lodestar/state-transition";
|
|
8
8
|
import {Bytes32, TimeSeconds, phase0, ssz, sszTypesFor} from "@lodestar/types";
|
|
9
|
-
import {DepositTree} from "
|
|
9
|
+
import {DepositTree} from "./deposits.js";
|
|
10
10
|
|
|
11
11
|
export const INTEROP_BLOCK_HASH = Buffer.alloc(32, "B");
|
|
12
12
|
export const INTEROP_TIMESTAMP = Math.pow(2, 40);
|
package/src/node/utils/state.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import {ChainForkConfig} from "@lodestar/config";
|
|
2
2
|
import {BeaconStateAllForks} from "@lodestar/state-transition";
|
|
3
|
-
import {
|
|
4
|
-
import {IBeaconDb} from "../../db/index.js";
|
|
3
|
+
import {ssz} from "@lodestar/types";
|
|
5
4
|
import {interopDeposits} from "./interop/deposits.js";
|
|
6
5
|
import {InteropStateOpts, getInteropState} from "./interop/state.js";
|
|
7
6
|
|
|
@@ -12,26 +11,12 @@ export function initDevState(
|
|
|
12
11
|
config: ChainForkConfig,
|
|
13
12
|
validatorCount: number,
|
|
14
13
|
interopStateOpts: InteropStateOpts
|
|
15
|
-
):
|
|
14
|
+
): BeaconStateAllForks {
|
|
16
15
|
const deposits = interopDeposits(
|
|
17
16
|
config,
|
|
18
17
|
ssz.phase0.DepositDataRootList.defaultViewDU(),
|
|
19
18
|
validatorCount,
|
|
20
19
|
interopStateOpts
|
|
21
20
|
);
|
|
22
|
-
|
|
23
|
-
return {deposits, state};
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
export async function writeDeposits(db: IBeaconDb, deposits: phase0.Deposit[]): Promise<void> {
|
|
27
|
-
for (let i = 0; i < deposits.length; i++) {
|
|
28
|
-
await Promise.all([
|
|
29
|
-
db.depositEvent.put(i, {
|
|
30
|
-
blockNumber: i,
|
|
31
|
-
index: i,
|
|
32
|
-
depositData: deposits[i].data,
|
|
33
|
-
}),
|
|
34
|
-
db.depositDataRoot.put(i, ssz.phase0.DepositData.hashTreeRoot(deposits[i].data)),
|
|
35
|
-
]);
|
|
36
|
-
}
|
|
21
|
+
return getInteropState(config, interopStateOpts, deposits);
|
|
37
22
|
}
|
|
@@ -750,9 +750,7 @@ export class BackfillSync extends (EventEmitter as {new (): BackfillSyncEmitter}
|
|
|
750
750
|
|
|
751
751
|
// GENESIS_SLOT doesn't has valid signature
|
|
752
752
|
if (anchorBlock.message.slot === GENESIS_SLOT) return;
|
|
753
|
-
await verifyBlockProposerSignature(this.chain.
|
|
754
|
-
anchorBlock,
|
|
755
|
-
]);
|
|
753
|
+
await verifyBlockProposerSignature(this.chain.config, this.chain.index2pubkey, this.chain.bls, [anchorBlock]);
|
|
756
754
|
|
|
757
755
|
// We can write to the disk if this is ahead of prevFinalizedCheckpointBlock otherwise
|
|
758
756
|
// we will need to go make checks on the top of sync loop before writing as it might
|
|
@@ -817,12 +815,7 @@ export class BackfillSync extends (EventEmitter as {new (): BackfillSyncEmitter}
|
|
|
817
815
|
|
|
818
816
|
// If any of the block's proposer signature fail, we can't trust this peer at all
|
|
819
817
|
if (verifiedBlocks.length > 0) {
|
|
820
|
-
await verifyBlockProposerSignature(
|
|
821
|
-
this.chain.index2pubkey,
|
|
822
|
-
this.chain.bls,
|
|
823
|
-
this.chain.getHeadState(),
|
|
824
|
-
verifiedBlocks
|
|
825
|
-
);
|
|
818
|
+
await verifyBlockProposerSignature(this.chain.config, this.chain.index2pubkey, this.chain.bls, verifiedBlocks);
|
|
826
819
|
|
|
827
820
|
// This is bad, like super bad. Abort the backfill
|
|
828
821
|
if (!nextAnchor)
|
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
import {BeaconConfig} from "@lodestar/config";
|
|
2
2
|
import {GENESIS_SLOT} from "@lodestar/params";
|
|
3
|
-
import {
|
|
4
|
-
CachedBeaconStateAllForks,
|
|
5
|
-
ISignatureSet,
|
|
6
|
-
Index2PubkeyCache,
|
|
7
|
-
getBlockProposerSignatureSet,
|
|
8
|
-
} from "@lodestar/state-transition";
|
|
3
|
+
import {ISignatureSet, Index2PubkeyCache, getBlockProposerSignatureSet} from "@lodestar/state-transition";
|
|
9
4
|
import {Root, SignedBeaconBlock, Slot, ssz} from "@lodestar/types";
|
|
10
5
|
import {IBlsVerifier} from "../../chain/bls/index.js";
|
|
11
6
|
import {BackfillSyncError, BackfillSyncErrorCode} from "./errors.js";
|
|
@@ -46,15 +41,15 @@ export function verifyBlockSequence(
|
|
|
46
41
|
}
|
|
47
42
|
|
|
48
43
|
export async function verifyBlockProposerSignature(
|
|
44
|
+
config: BeaconConfig,
|
|
49
45
|
index2pubkey: Index2PubkeyCache,
|
|
50
46
|
bls: IBlsVerifier,
|
|
51
|
-
state: CachedBeaconStateAllForks,
|
|
52
47
|
blocks: SignedBeaconBlock[]
|
|
53
48
|
): Promise<void> {
|
|
54
49
|
if (blocks.length === 1 && blocks[0].message.slot === GENESIS_SLOT) return;
|
|
55
50
|
const signatures = blocks.reduce((sigs: ISignatureSet[], block) => {
|
|
56
51
|
// genesis block doesn't have valid signature
|
|
57
|
-
if (block.message.slot !== GENESIS_SLOT) sigs.push(getBlockProposerSignatureSet(
|
|
52
|
+
if (block.message.slot !== GENESIS_SLOT) sigs.push(getBlockProposerSignatureSet(config, index2pubkey, block));
|
|
58
53
|
return sigs;
|
|
59
54
|
}, []);
|
|
60
55
|
|
package/src/util/workerEvents.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import {MessagePort, Worker} from "node:worker_threads";
|
|
2
|
+
import {Message} from "@libp2p/interface";
|
|
2
3
|
import {Thread} from "@chainsafe/threads";
|
|
3
4
|
import {Logger} from "@lodestar/logger";
|
|
4
5
|
import {sleep} from "@lodestar/utils";
|
|
5
6
|
import {Metrics} from "../metrics/metrics.js";
|
|
6
7
|
import {NetworkCoreWorkerMetrics} from "../network/core/metrics.js";
|
|
8
|
+
import {EventDirection, NetworkEvent} from "../network/events.js";
|
|
7
9
|
import {StrictEventEmitterSingleArg} from "./strictEvents.js";
|
|
8
10
|
|
|
9
11
|
const NANO_TO_SECOND_CONVERSION = 1e9;
|
|
@@ -15,13 +17,6 @@ export type WorkerBridgeEvent<EventData> = {
|
|
|
15
17
|
data: EventData[keyof EventData];
|
|
16
18
|
};
|
|
17
19
|
|
|
18
|
-
export enum EventDirection {
|
|
19
|
-
workerToMain,
|
|
20
|
-
mainToWorker,
|
|
21
|
-
/** Event not emitted through worker boundary */
|
|
22
|
-
none,
|
|
23
|
-
}
|
|
24
|
-
|
|
25
20
|
/**
|
|
26
21
|
* Bridges events from worker to main thread
|
|
27
22
|
* Each event can only have one direction:
|
|
@@ -63,7 +58,13 @@ export function wireEventsOnWorkerThread<EventData>(
|
|
|
63
58
|
posted: process.hrtime(),
|
|
64
59
|
data,
|
|
65
60
|
};
|
|
66
|
-
|
|
61
|
+
let transferList: ArrayBuffer[] | undefined = undefined;
|
|
62
|
+
if (eventName === NetworkEvent.pendingGossipsubMessage) {
|
|
63
|
+
const payload = data as {msg: Message};
|
|
64
|
+
// Transfer the underlying ArrayBuffer to avoid copy for PendingGossipsubMessage
|
|
65
|
+
transferList = [payload.msg.data.buffer as ArrayBuffer];
|
|
66
|
+
}
|
|
67
|
+
parentPort.postMessage(workerEvent, transferList);
|
|
67
68
|
});
|
|
68
69
|
}
|
|
69
70
|
}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import { ChainForkConfig } from "@lodestar/config";
|
|
2
|
-
import { BeaconStateAllForks, CachedBeaconStateAllForks } from "@lodestar/state-transition";
|
|
3
|
-
import { Logger } from "@lodestar/utils";
|
|
4
|
-
import { DepositTree } from "../../db/repositories/depositDataRoot.js";
|
|
5
|
-
import { IEth1Provider } from "../../eth1/index.js";
|
|
6
|
-
import { GenesisResult, IGenesisBuilder } from "./interface.js";
|
|
7
|
-
export type GenesisBuilderKwargs = {
|
|
8
|
-
config: ChainForkConfig;
|
|
9
|
-
eth1Provider: IEth1Provider;
|
|
10
|
-
logger: Logger;
|
|
11
|
-
/** Use to restore pending progress */
|
|
12
|
-
pendingStatus?: {
|
|
13
|
-
state: BeaconStateAllForks;
|
|
14
|
-
depositTree: DepositTree;
|
|
15
|
-
lastProcessedBlockNumber: number;
|
|
16
|
-
};
|
|
17
|
-
signal?: AbortSignal;
|
|
18
|
-
maxBlocksPerPoll?: number;
|
|
19
|
-
};
|
|
20
|
-
export declare class GenesisBuilder implements IGenesisBuilder {
|
|
21
|
-
readonly state: CachedBeaconStateAllForks;
|
|
22
|
-
readonly depositTree: DepositTree;
|
|
23
|
-
/** Is null if no block has been processed yet */
|
|
24
|
-
lastProcessedBlockNumber: number | null;
|
|
25
|
-
private readonly config;
|
|
26
|
-
private readonly eth1Provider;
|
|
27
|
-
private readonly logger;
|
|
28
|
-
private readonly signal?;
|
|
29
|
-
private readonly eth1Params;
|
|
30
|
-
private readonly depositCache;
|
|
31
|
-
private readonly fromBlock;
|
|
32
|
-
private readonly logEvery;
|
|
33
|
-
private lastLog;
|
|
34
|
-
/** Current count of active validators in the state */
|
|
35
|
-
private activatedValidatorCount;
|
|
36
|
-
constructor({ config, eth1Provider, logger, signal, pendingStatus, maxBlocksPerPoll }: GenesisBuilderKwargs);
|
|
37
|
-
/**
|
|
38
|
-
* Get eth1 deposit events and blocks and apply to this.state until we found genesis.
|
|
39
|
-
*/
|
|
40
|
-
waitForGenesis(): Promise<GenesisResult>;
|
|
41
|
-
/**
|
|
42
|
-
* First phase of waiting for genesis.
|
|
43
|
-
* Stream deposits events in batches as big as possible without querying block data
|
|
44
|
-
* @returns Block number at which there are enough active validators is state for genesis
|
|
45
|
-
*/
|
|
46
|
-
private waitForGenesisValidators;
|
|
47
|
-
private applyDeposits;
|
|
48
|
-
/** Throttle genesis generation status log to prevent spamming */
|
|
49
|
-
private throttledLog;
|
|
50
|
-
}
|
|
51
|
-
//# sourceMappingURL=genesis.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"genesis.d.ts","sourceRoot":"","sources":["../../../src/chain/genesis/genesis.ts"],"names":[],"mappings":"AACA,OAAO,EAAe,eAAe,EAAC,MAAM,kBAAkB,CAAC;AAE/D,OAAO,EACL,mBAAmB,EACnB,yBAAyB,EAS1B,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAC,MAAM,EAAC,MAAM,iBAAiB,CAAC;AACvC,OAAO,EAAC,WAAW,EAAC,MAAM,0CAA0C,CAAC;AACrE,OAAO,EAAC,aAAa,EAAC,MAAM,qBAAqB,CAAC;AAGlD,OAAO,EAAC,aAAa,EAAE,eAAe,EAAC,MAAM,gBAAgB,CAAC;AAE9D,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,eAAe,CAAC;IACxB,YAAY,EAAE,aAAa,CAAC;IAC5B,MAAM,EAAE,MAAM,CAAC;IAEf,sCAAsC;IACtC,aAAa,CAAC,EAAE;QACd,KAAK,EAAE,mBAAmB,CAAC;QAC3B,WAAW,EAAE,WAAW,CAAC;QACzB,wBAAwB,EAAE,MAAM,CAAC;KAClC,CAAC;IAEF,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAEF,qBAAa,cAAe,YAAW,eAAe;IAEpD,QAAQ,CAAC,KAAK,EAAE,yBAAyB,CAAC;IAC1C,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,iDAAiD;IACjD,wBAAwB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAE/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAe;IACtC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgB;IAC7C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAc;IACtC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAoB;IAC/C,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqB;IAClD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAa;IACtC,OAAO,CAAC,OAAO,CAAK;IACpB,sDAAsD;IACtD,OAAO,CAAC,uBAAuB,CAAS;gBAE5B,EAAC,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,gBAAgB,EAAC,EAAE,oBAAoB;IAmCzG;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,aAAa,CAAC;IAsC9C;;;;OAIG;YACW,wBAAwB;IAoBtC,OAAO,CAAC,aAAa;IAuBrB,iEAAiE;IACjE,OAAO,CAAC,YAAY;CAMrB"}
|
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
import { Tree, toGindex } from "@chainsafe/persistent-merkle-tree";
|
|
2
|
-
import { GENESIS_EPOCH, GENESIS_SLOT } from "@lodestar/params";
|
|
3
|
-
import { applyDeposits, applyEth1BlockHash, applyTimestamp, createCachedBeaconState, createEmptyEpochCacheImmutableData, getActiveValidatorIndices, getGenesisBeaconState, getTemporaryBlockHeader, } from "@lodestar/state-transition";
|
|
4
|
-
import { ssz } from "@lodestar/types";
|
|
5
|
-
import { getDepositsAndBlockStreamForGenesis, getDepositsStream } from "../../eth1/stream.js";
|
|
6
|
-
export class GenesisBuilder {
|
|
7
|
-
// Expose state to persist on error
|
|
8
|
-
state;
|
|
9
|
-
depositTree;
|
|
10
|
-
/** Is null if no block has been processed yet */
|
|
11
|
-
lastProcessedBlockNumber = null;
|
|
12
|
-
config;
|
|
13
|
-
eth1Provider;
|
|
14
|
-
logger;
|
|
15
|
-
signal;
|
|
16
|
-
eth1Params;
|
|
17
|
-
depositCache = new Set();
|
|
18
|
-
fromBlock;
|
|
19
|
-
logEvery = 30 * 1000;
|
|
20
|
-
lastLog = 0;
|
|
21
|
-
/** Current count of active validators in the state */
|
|
22
|
-
activatedValidatorCount;
|
|
23
|
-
constructor({ config, eth1Provider, logger, signal, pendingStatus, maxBlocksPerPoll }) {
|
|
24
|
-
// at genesis builder, there is no genesis validator so we don't have a real BeaconConfig
|
|
25
|
-
// but we need BeaconConfig to temporarily create CachedBeaconState, the cast here is safe since we don't use any getDomain here
|
|
26
|
-
// the use of state as CachedBeaconState is just for convenient, GenesisResult returns TreeView anyway
|
|
27
|
-
this.eth1Provider = eth1Provider;
|
|
28
|
-
this.logger = logger;
|
|
29
|
-
this.signal = signal;
|
|
30
|
-
this.eth1Params = {
|
|
31
|
-
...config,
|
|
32
|
-
maxBlocksPerPoll: maxBlocksPerPoll ?? 10000,
|
|
33
|
-
};
|
|
34
|
-
let stateView;
|
|
35
|
-
if (pendingStatus) {
|
|
36
|
-
this.logger.info("Restoring pending genesis state", { block: pendingStatus.lastProcessedBlockNumber });
|
|
37
|
-
stateView = pendingStatus.state;
|
|
38
|
-
this.depositTree = pendingStatus.depositTree;
|
|
39
|
-
this.fromBlock = Math.max(pendingStatus.lastProcessedBlockNumber + 1, this.eth1Provider.deployBlock);
|
|
40
|
-
}
|
|
41
|
-
else {
|
|
42
|
-
stateView = getGenesisBeaconState(config, ssz.phase0.Eth1Data.defaultValue(), getTemporaryBlockHeader(config, config.getForkTypes(GENESIS_SLOT).BeaconBlock.defaultValue()));
|
|
43
|
-
this.depositTree = ssz.phase0.DepositDataRootList.defaultViewDU();
|
|
44
|
-
this.fromBlock = this.eth1Provider.deployBlock;
|
|
45
|
-
}
|
|
46
|
-
// TODO - PENDING: Ensure EpochCacheImmutableData is created only once
|
|
47
|
-
this.state = createCachedBeaconState(stateView, createEmptyEpochCacheImmutableData(config, stateView));
|
|
48
|
-
this.config = this.state.config;
|
|
49
|
-
this.activatedValidatorCount = getActiveValidatorIndices(stateView, GENESIS_EPOCH).length;
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Get eth1 deposit events and blocks and apply to this.state until we found genesis.
|
|
53
|
-
*/
|
|
54
|
-
async waitForGenesis() {
|
|
55
|
-
await this.eth1Provider.validateContract();
|
|
56
|
-
// Load data from data from this.db.depositData, this.db.depositDataRoot
|
|
57
|
-
// And start from a more recent fromBlock
|
|
58
|
-
const blockNumberValidatorGenesis = await this.waitForGenesisValidators();
|
|
59
|
-
const depositsAndBlocksStream = getDepositsAndBlockStreamForGenesis(blockNumberValidatorGenesis, this.eth1Provider, this.eth1Params, this.signal);
|
|
60
|
-
for await (const [depositEvents, block] of depositsAndBlocksStream) {
|
|
61
|
-
this.applyDeposits(depositEvents);
|
|
62
|
-
applyTimestamp(this.config, this.state, block.timestamp);
|
|
63
|
-
applyEth1BlockHash(this.state, block.blockHash);
|
|
64
|
-
this.lastProcessedBlockNumber = block.blockNumber;
|
|
65
|
-
if (this.state.genesisTime >= this.config.MIN_GENESIS_TIME &&
|
|
66
|
-
this.activatedValidatorCount >= this.config.MIN_GENESIS_ACTIVE_VALIDATOR_COUNT) {
|
|
67
|
-
this.logger.info("Found genesis state", { blockNumber: block.blockNumber });
|
|
68
|
-
return {
|
|
69
|
-
state: this.state,
|
|
70
|
-
depositTree: this.depositTree,
|
|
71
|
-
block,
|
|
72
|
-
};
|
|
73
|
-
}
|
|
74
|
-
this.throttledLog(`Waiting for min genesis time ${block.timestamp} / ${this.config.MIN_GENESIS_TIME}`);
|
|
75
|
-
}
|
|
76
|
-
throw Error("depositsStream stopped without a valid genesis state");
|
|
77
|
-
}
|
|
78
|
-
/**
|
|
79
|
-
* First phase of waiting for genesis.
|
|
80
|
-
* Stream deposits events in batches as big as possible without querying block data
|
|
81
|
-
* @returns Block number at which there are enough active validators is state for genesis
|
|
82
|
-
*/
|
|
83
|
-
async waitForGenesisValidators() {
|
|
84
|
-
const depositsStream = getDepositsStream(this.fromBlock, this.eth1Provider, this.eth1Params, this.signal);
|
|
85
|
-
for await (const { depositEvents, blockNumber } of depositsStream) {
|
|
86
|
-
this.applyDeposits(depositEvents);
|
|
87
|
-
this.lastProcessedBlockNumber = blockNumber;
|
|
88
|
-
if (this.activatedValidatorCount >= this.config.MIN_GENESIS_ACTIVE_VALIDATOR_COUNT) {
|
|
89
|
-
this.logger.info("Found enough genesis validators", { blockNumber });
|
|
90
|
-
return blockNumber;
|
|
91
|
-
}
|
|
92
|
-
this.throttledLog(`Found ${this.state.validators.length} / ${this.config.MIN_GENESIS_ACTIVE_VALIDATOR_COUNT} validators to genesis`);
|
|
93
|
-
}
|
|
94
|
-
throw Error("depositsStream stopped without a valid genesis state");
|
|
95
|
-
}
|
|
96
|
-
applyDeposits(depositEvents) {
|
|
97
|
-
const newDeposits = depositEvents
|
|
98
|
-
.filter((depositEvent) => !this.depositCache.has(depositEvent.index))
|
|
99
|
-
.map((depositEvent) => {
|
|
100
|
-
this.depositCache.add(depositEvent.index);
|
|
101
|
-
this.depositTree.push(ssz.phase0.DepositData.hashTreeRoot(depositEvent.depositData));
|
|
102
|
-
const gindex = toGindex(this.depositTree.type.depth, BigInt(depositEvent.index));
|
|
103
|
-
// Apply changes from the push above
|
|
104
|
-
this.depositTree.commit();
|
|
105
|
-
const depositTreeNode = this.depositTree.node;
|
|
106
|
-
return {
|
|
107
|
-
proof: new Tree(depositTreeNode).getSingleProof(gindex),
|
|
108
|
-
data: depositEvent.depositData,
|
|
109
|
-
};
|
|
110
|
-
});
|
|
111
|
-
const { activatedValidatorCount } = applyDeposits(this.config, this.state, newDeposits, this.depositTree);
|
|
112
|
-
this.activatedValidatorCount += activatedValidatorCount;
|
|
113
|
-
// TODO: If necessary persist deposits here to this.db.depositData, this.db.depositDataRoot
|
|
114
|
-
}
|
|
115
|
-
/** Throttle genesis generation status log to prevent spamming */
|
|
116
|
-
throttledLog(message) {
|
|
117
|
-
if (Date.now() - this.lastLog > this.logEvery) {
|
|
118
|
-
this.lastLog = Date.now();
|
|
119
|
-
this.logger.info(message);
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
//# sourceMappingURL=genesis.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"genesis.js","sourceRoot":"","sources":["../../../src/chain/genesis/genesis.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +0,0 @@
|
|
|
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
|
-
export type GenesisResult = {
|
|
6
|
-
state: CachedBeaconStateAllForks;
|
|
7
|
-
depositTree: CompositeViewDU<VectorCompositeType<typeof ssz.Root>>;
|
|
8
|
-
block: Eth1Block;
|
|
9
|
-
};
|
|
10
|
-
export interface IGenesisBuilder {
|
|
11
|
-
waitForGenesis: () => Promise<GenesisResult>;
|
|
12
|
-
}
|
|
13
|
-
//# sourceMappingURL=interface.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"interface.d.ts","sourceRoot":"","sources":["../../../src/chain/genesis/interface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,eAAe,EAAE,mBAAmB,EAAC,MAAM,gBAAgB,CAAC;AACpE,OAAO,EAAC,yBAAyB,EAAC,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAC,GAAG,EAAC,MAAM,iBAAiB,CAAC;AACpC,OAAO,EAAC,SAAS,EAAC,MAAM,yBAAyB,CAAC;AAElD,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,yBAAyB,CAAC;IACjC,WAAW,EAAE,eAAe,CAAC,mBAAmB,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IACnE,KAAK,EAAE,SAAS,CAAC;CAClB,CAAC;AAEF,MAAM,WAAW,eAAe;IAC9B,cAAc,EAAE,MAAM,OAAO,CAAC,aAAa,CAAC,CAAC;CAC9C"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"interface.js","sourceRoot":"","sources":["../../../src/chain/genesis/interface.ts"],"names":[],"mappings":""}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
import { PubkeyIndexMap } from "@chainsafe/pubkey-index-map";
|
|
2
|
-
import { routes } from "@lodestar/api";
|
|
3
|
-
import { CachedBeaconStateAllForks } from "@lodestar/state-transition";
|
|
4
|
-
import { ValidatorIndex } from "@lodestar/types";
|
|
5
|
-
export type AttestationsRewards = routes.beacon.AttestationsRewards;
|
|
6
|
-
export declare function computeAttestationsRewards(pubkey2index: PubkeyIndexMap, state: CachedBeaconStateAllForks, validatorIds?: (ValidatorIndex | string)[]): Promise<AttestationsRewards>;
|
|
7
|
-
//# sourceMappingURL=attestationsRewards.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"attestationsRewards.d.ts","sourceRoot":"","sources":["../../../src/chain/rewards/attestationsRewards.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,cAAc,EAAC,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAC,MAAM,EAAC,MAAM,eAAe,CAAC;AAcrC,OAAO,EACL,yBAAyB,EAU1B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAC,cAAc,EAAC,MAAM,iBAAiB,CAAC;AAG/C,MAAM,MAAM,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,mBAAmB,CAAC;AASpE,wBAAsB,0BAA0B,CAC9C,YAAY,EAAE,cAAc,EAC5B,KAAK,EAAE,yBAAyB,EAChC,YAAY,CAAC,EAAE,CAAC,cAAc,GAAG,MAAM,CAAC,EAAE,GACzC,OAAO,CAAC,mBAAmB,CAAC,CAoB9B"}
|