@lodestar/beacon-node 1.35.0-dev.7a3b3a996e → 1.35.0-dev.811265f1e2
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/index.js +46 -58
- package/lib/api/impl/beacon/blocks/index.js.map +1 -1
- package/lib/api/impl/errors.js +0 -2
- package/lib/api/impl/errors.js.map +1 -1
- package/lib/api/impl/lodestar/index.js +1 -1
- package/lib/api/impl/lodestar/index.js.map +1 -1
- package/lib/api/impl/validator/index.js +1 -2
- package/lib/api/impl/validator/index.js.map +1 -1
- package/lib/api/rest/activeSockets.js +2 -3
- package/lib/api/rest/activeSockets.js.map +1 -1
- package/lib/api/rest/base.js +0 -4
- package/lib/api/rest/base.js.map +1 -1
- package/lib/api/rest/index.js +0 -2
- package/lib/api/rest/index.js.map +1 -1
- package/lib/api/rest/swaggerUI.js +2 -4
- package/lib/api/rest/swaggerUI.js.map +1 -1
- package/lib/chain/archiveStore/archiveStore.js +38 -49
- package/lib/chain/archiveStore/archiveStore.js.map +1 -1
- package/lib/chain/archiveStore/historicalState/historicalStateRegen.js +0 -2
- package/lib/chain/archiveStore/historicalState/historicalStateRegen.js.map +1 -1
- package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.js +0 -5
- package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.js.map +1 -1
- package/lib/chain/balancesCache.js +3 -1
- package/lib/chain/balancesCache.js.map +1 -1
- package/lib/chain/beaconProposerCache.js +0 -1
- package/lib/chain/beaconProposerCache.js.map +1 -1
- package/lib/chain/blocks/blockInput/blockInput.d.ts +7 -19
- package/lib/chain/blocks/blockInput/blockInput.js +88 -132
- package/lib/chain/blocks/blockInput/blockInput.js.map +1 -1
- package/lib/chain/blocks/blockInput/types.d.ts +10 -19
- package/lib/chain/blocks/blockInput/types.js +0 -1
- package/lib/chain/blocks/blockInput/types.js.map +1 -1
- package/lib/chain/blocks/blockInput/utils.d.ts +4 -0
- package/lib/chain/blocks/blockInput/utils.js +29 -6
- package/lib/chain/blocks/blockInput/utils.js.map +1 -1
- package/lib/chain/blocks/importBlock.js +12 -16
- package/lib/chain/blocks/importBlock.js.map +1 -1
- package/lib/chain/blocks/index.d.ts +4 -5
- package/lib/chain/blocks/index.js +4 -5
- package/lib/chain/blocks/index.js.map +1 -1
- package/lib/chain/blocks/types.d.ts +106 -3
- package/lib/chain/blocks/types.js +119 -0
- package/lib/chain/blocks/types.js.map +1 -1
- package/lib/chain/blocks/utils/chainSegment.d.ts +2 -2
- package/lib/chain/blocks/utils/chainSegment.js +2 -2
- package/lib/chain/blocks/utils/chainSegment.js.map +1 -1
- package/lib/chain/blocks/verifyBlock.d.ts +3 -3
- package/lib/chain/blocks/verifyBlock.js +14 -15
- package/lib/chain/blocks/verifyBlock.js.map +1 -1
- package/lib/chain/blocks/verifyBlocksDataAvailability.d.ts +22 -7
- package/lib/chain/blocks/verifyBlocksDataAvailability.js +110 -18
- package/lib/chain/blocks/verifyBlocksDataAvailability.js.map +1 -1
- package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts +3 -4
- package/lib/chain/blocks/verifyBlocksExecutionPayloads.js +22 -24
- package/lib/chain/blocks/verifyBlocksExecutionPayloads.js.map +1 -1
- package/lib/chain/blocks/verifyBlocksSanityChecks.d.ts +3 -4
- package/lib/chain/blocks/verifyBlocksSanityChecks.js +2 -2
- package/lib/chain/blocks/verifyBlocksSanityChecks.js.map +1 -1
- package/lib/chain/blocks/verifyBlocksStateTransitionOnly.d.ts +2 -3
- package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js +2 -2
- package/lib/chain/blocks/verifyBlocksStateTransitionOnly.js.map +1 -1
- package/lib/chain/blocks/writeBlockInputToDb.d.ts +3 -3
- package/lib/chain/blocks/writeBlockInputToDb.js +66 -61
- package/lib/chain/blocks/writeBlockInputToDb.js.map +1 -1
- package/lib/chain/bls/multithread/index.js +163 -167
- package/lib/chain/bls/multithread/index.js.map +1 -1
- package/lib/chain/bls/singleThread.js +0 -1
- package/lib/chain/bls/singleThread.js.map +1 -1
- package/lib/chain/chain.d.ts +10 -12
- package/lib/chain/chain.js +20 -79
- package/lib/chain/chain.js.map +1 -1
- package/lib/chain/emitter.d.ts +2 -43
- package/lib/chain/emitter.js +0 -18
- package/lib/chain/emitter.js.map +1 -1
- package/lib/chain/errors/blobSidecarError.d.ts +0 -24
- package/lib/chain/errors/blobSidecarError.js +0 -10
- package/lib/chain/errors/blobSidecarError.js.map +1 -1
- package/lib/chain/errors/blockError.js +0 -1
- package/lib/chain/errors/blockError.js.map +1 -1
- package/lib/chain/errors/dataColumnSidecarError.d.ts +0 -42
- package/lib/chain/errors/dataColumnSidecarError.js +0 -14
- package/lib/chain/errors/dataColumnSidecarError.js.map +1 -1
- package/lib/chain/errors/gossipValidation.js +0 -1
- package/lib/chain/errors/gossipValidation.js.map +1 -1
- package/lib/chain/genesis/genesis.js +5 -16
- package/lib/chain/genesis/genesis.js.map +1 -1
- package/lib/chain/interface.d.ts +9 -12
- package/lib/chain/interface.js.map +1 -1
- package/lib/chain/lightClient/index.js +9 -16
- package/lib/chain/lightClient/index.js.map +1 -1
- package/lib/chain/opPools/aggregatedAttestationPool.js +8 -13
- package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
- package/lib/chain/opPools/attestationPool.js +2 -7
- package/lib/chain/opPools/attestationPool.js.map +1 -1
- package/lib/chain/opPools/opPool.js +12 -10
- package/lib/chain/opPools/opPool.js.map +1 -1
- package/lib/chain/opPools/syncCommitteeMessagePool.js +6 -9
- package/lib/chain/opPools/syncCommitteeMessagePool.js.map +1 -1
- package/lib/chain/opPools/syncContributionAndProofPool.js +2 -5
- package/lib/chain/opPools/syncContributionAndProofPool.js.map +1 -1
- package/lib/chain/prepareNextSlot.js +136 -141
- package/lib/chain/prepareNextSlot.js.map +1 -1
- package/lib/chain/produceBlock/produceBlockBody.d.ts +1 -1
- package/lib/chain/produceBlock/produceBlockBody.js +10 -3
- package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
- package/lib/chain/regen/errors.js +0 -1
- package/lib/chain/regen/errors.js.map +1 -1
- package/lib/chain/regen/queued.js +28 -35
- package/lib/chain/regen/queued.js.map +1 -1
- package/lib/chain/regen/regen.js +0 -1
- package/lib/chain/regen/regen.js.map +1 -1
- package/lib/chain/reprocess.js +1 -3
- package/lib/chain/reprocess.js.map +1 -1
- package/lib/chain/seenCache/index.d.ts +1 -1
- package/lib/chain/seenCache/index.js +1 -1
- package/lib/chain/seenCache/index.js.map +1 -1
- package/lib/chain/seenCache/seenAggregateAndProof.js +6 -7
- package/lib/chain/seenCache/seenAggregateAndProof.js.map +1 -1
- package/lib/chain/seenCache/seenAttestationData.js +2 -5
- package/lib/chain/seenCache/seenAttestationData.js.map +1 -1
- package/lib/chain/seenCache/seenAttesters.js +4 -2
- package/lib/chain/seenCache/seenAttesters.js.map +1 -1
- package/lib/chain/seenCache/seenBlockInput.d.ts +84 -0
- package/lib/chain/seenCache/seenBlockInput.js +225 -0
- package/lib/chain/seenCache/seenBlockInput.js.map +1 -0
- package/lib/chain/seenCache/seenBlockProposers.js +4 -2
- package/lib/chain/seenCache/seenBlockProposers.js.map +1 -1
- package/lib/chain/seenCache/seenCommittee.js +3 -1
- package/lib/chain/seenCache/seenCommittee.js.map +1 -1
- package/lib/chain/seenCache/seenCommitteeContribution.js +2 -3
- package/lib/chain/seenCache/seenCommitteeContribution.js.map +1 -1
- package/lib/chain/seenCache/seenGossipBlockInput.d.ts +78 -74
- package/lib/chain/seenCache/seenGossipBlockInput.js +369 -235
- package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
- package/lib/chain/shufflingCache.js +2 -5
- package/lib/chain/shufflingCache.js.map +1 -1
- package/lib/chain/stateCache/blockStateCacheImpl.js +7 -13
- package/lib/chain/stateCache/blockStateCacheImpl.js.map +1 -1
- package/lib/chain/stateCache/datastore/db.js +0 -1
- package/lib/chain/stateCache/datastore/db.js.map +1 -1
- package/lib/chain/stateCache/datastore/file.js +0 -1
- package/lib/chain/stateCache/datastore/file.js.map +1 -1
- package/lib/chain/stateCache/fifoBlockStateCache.js +0 -10
- package/lib/chain/stateCache/fifoBlockStateCache.js.map +1 -1
- package/lib/chain/stateCache/inMemoryCheckpointsCache.js +4 -10
- package/lib/chain/stateCache/inMemoryCheckpointsCache.js.map +1 -1
- package/lib/chain/stateCache/mapMetrics.js +4 -4
- package/lib/chain/stateCache/mapMetrics.js.map +1 -1
- package/lib/chain/stateCache/persistentCheckpointsCache.js +4 -13
- package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
- package/lib/chain/validation/blobSidecar.d.ts +3 -8
- package/lib/chain/validation/blobSidecar.js +31 -73
- package/lib/chain/validation/blobSidecar.js.map +1 -1
- package/lib/chain/validation/dataColumnSidecar.d.ts +9 -7
- package/lib/chain/validation/dataColumnSidecar.js +56 -94
- package/lib/chain/validation/dataColumnSidecar.js.map +1 -1
- package/lib/chain/validatorMonitor.js +1 -2
- package/lib/chain/validatorMonitor.js.map +1 -1
- package/lib/db/beacon.js +0 -24
- package/lib/db/beacon.js.map +1 -1
- package/lib/db/repositories/depositDataRoot.js +0 -1
- package/lib/db/repositories/depositDataRoot.js.map +1 -1
- package/lib/db/single/preGenesisState.js +0 -6
- package/lib/db/single/preGenesisState.js.map +1 -1
- package/lib/db/single/preGenesisStateLastProcessedBlock.js +0 -5
- package/lib/db/single/preGenesisStateLastProcessedBlock.js.map +1 -1
- package/lib/eth1/eth1DataCache.js +0 -2
- package/lib/eth1/eth1DataCache.js.map +1 -1
- package/lib/eth1/eth1DepositDataTracker.js +5 -18
- package/lib/eth1/eth1DepositDataTracker.js.map +1 -1
- package/lib/eth1/eth1DepositsCache.js +0 -3
- package/lib/eth1/eth1DepositsCache.js.map +1 -1
- package/lib/eth1/eth1MergeBlockTracker.js +4 -10
- package/lib/eth1/eth1MergeBlockTracker.js.map +1 -1
- package/lib/eth1/index.js +0 -2
- package/lib/eth1/index.js.map +1 -1
- package/lib/eth1/provider/eth1Provider.js +2 -6
- package/lib/eth1/provider/eth1Provider.js.map +1 -1
- package/lib/eth1/provider/jsonRpcHttpClient.js +2 -16
- package/lib/eth1/provider/jsonRpcHttpClient.js.map +1 -1
- package/lib/eth1/provider/utils.d.ts +0 -5
- package/lib/eth1/provider/utils.js +1 -9
- package/lib/eth1/provider/utils.js.map +1 -1
- package/lib/execution/builder/cache.js +0 -6
- package/lib/execution/builder/cache.js.map +1 -1
- package/lib/execution/builder/http.js +8 -14
- package/lib/execution/builder/http.js.map +1 -1
- package/lib/execution/engine/disabled.js +4 -2
- package/lib/execution/engine/disabled.js.map +1 -1
- package/lib/execution/engine/http.d.ts +2 -2
- package/lib/execution/engine/http.js +11 -43
- package/lib/execution/engine/http.js.map +1 -1
- package/lib/execution/engine/interface.d.ts +2 -2
- package/lib/execution/engine/mock.d.ts +0 -1
- package/lib/execution/engine/mock.js +12 -16
- package/lib/execution/engine/mock.js.map +1 -1
- package/lib/execution/engine/payloadIdCache.js +3 -1
- package/lib/execution/engine/payloadIdCache.js.map +1 -1
- package/lib/execution/engine/types.d.ts +1 -5
- package/lib/execution/engine/types.js +8 -37
- package/lib/execution/engine/types.js.map +1 -1
- package/lib/execution/engine/utils.js +1 -2
- package/lib/execution/engine/utils.js.map +1 -1
- package/lib/metrics/metrics/beacon.d.ts +5 -11
- package/lib/metrics/metrics/beacon.js +20 -40
- package/lib/metrics/metrics/beacon.js.map +1 -1
- package/lib/metrics/metrics/lodestar.d.ts +13 -55
- package/lib/metrics/metrics/lodestar.js +7 -84
- package/lib/metrics/metrics/lodestar.js.map +1 -1
- package/lib/metrics/nodeJsMetrics.js +1 -1
- package/lib/metrics/nodeJsMetrics.js.map +1 -1
- package/lib/metrics/utils/avgMinMax.js +6 -10
- package/lib/metrics/utils/avgMinMax.js.map +1 -1
- package/lib/metrics/utils/gauge.js +4 -1
- package/lib/metrics/utils/gauge.js.map +1 -1
- package/lib/monitoring/properties.js +0 -4
- package/lib/monitoring/properties.js.map +1 -1
- package/lib/monitoring/service.js +1 -13
- package/lib/monitoring/service.js.map +1 -1
- package/lib/monitoring/system.js +27 -25
- package/lib/monitoring/system.js.map +1 -1
- package/lib/network/core/networkCore.d.ts +1 -1
- package/lib/network/core/networkCore.js +49 -66
- package/lib/network/core/networkCore.js.map +1 -1
- package/lib/network/core/networkCoreWorkerHandler.d.ts +1 -1
- package/lib/network/core/networkCoreWorkerHandler.js +1 -4
- package/lib/network/core/networkCoreWorkerHandler.js.map +1 -1
- package/lib/network/discv5/index.js +1 -4
- package/lib/network/discv5/index.js.map +1 -1
- package/lib/network/discv5/worker.js.map +1 -1
- package/lib/network/events.d.ts +18 -2
- package/lib/network/events.js +7 -0
- package/lib/network/events.js.map +1 -1
- package/lib/network/gossip/encoding.js +0 -2
- package/lib/network/gossip/encoding.js.map +1 -1
- package/lib/network/gossip/errors.js +0 -1
- package/lib/network/gossip/errors.js.map +1 -1
- package/lib/network/gossip/gossipsub.js +0 -7
- package/lib/network/gossip/gossipsub.js.map +1 -1
- package/lib/network/gossip/topic.d.ts +49 -49
- package/lib/network/gossip/topic.js +1 -2
- package/lib/network/gossip/topic.js.map +1 -1
- package/lib/network/interface.d.ts +1 -2
- package/lib/network/metadata.js +0 -4
- package/lib/network/metadata.js.map +1 -1
- package/lib/network/network.d.ts +1 -3
- package/lib/network/network.js +71 -89
- package/lib/network/network.js.map +1 -1
- package/lib/network/options.js +1 -1
- package/lib/network/options.js.map +1 -1
- package/lib/network/peers/datastore.js +2 -8
- package/lib/network/peers/datastore.js.map +1 -1
- package/lib/network/peers/discover.js +64 -74
- package/lib/network/peers/discover.js.map +1 -1
- package/lib/network/peers/peerManager.js +130 -154
- package/lib/network/peers/peerManager.js.map +1 -1
- package/lib/network/peers/peersData.d.ts +1 -1
- package/lib/network/peers/peersData.js +3 -1
- package/lib/network/peers/peersData.js.map +1 -1
- package/lib/network/peers/score/score.js +0 -6
- package/lib/network/peers/score/score.js.map +1 -1
- package/lib/network/peers/score/store.js +0 -3
- package/lib/network/peers/score/store.js.map +1 -1
- package/lib/network/peers/utils/subnetMap.js +4 -2
- package/lib/network/peers/utils/subnetMap.js.map +1 -1
- package/lib/network/processor/aggregatorTracker.js +3 -1
- package/lib/network/processor/aggregatorTracker.js.map +1 -1
- package/lib/network/processor/gossipHandlers.js +164 -145
- package/lib/network/processor/gossipHandlers.js.map +1 -1
- package/lib/network/processor/gossipQueues/indexed.js +9 -11
- package/lib/network/processor/gossipQueues/indexed.js.map +1 -1
- package/lib/network/processor/gossipQueues/linear.js +8 -9
- package/lib/network/processor/gossipQueues/linear.js.map +1 -1
- package/lib/network/processor/index.d.ts +1 -2
- package/lib/network/processor/index.js +6 -21
- package/lib/network/processor/index.js.map +1 -1
- package/lib/network/reqresp/ReqRespBeaconNode.js +2 -11
- package/lib/network/reqresp/ReqRespBeaconNode.js.map +1 -1
- package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.d.ts +28 -0
- package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.js +328 -0
- package/lib/network/reqresp/beaconBlocksMaybeBlobsByRange.js.map +1 -0
- package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.d.ts +49 -0
- package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.js +499 -0
- package/lib/network/reqresp/beaconBlocksMaybeBlobsByRoot.js.map +1 -0
- package/lib/network/reqresp/index.d.ts +2 -0
- package/lib/network/reqresp/index.js +2 -0
- package/lib/network/reqresp/index.js.map +1 -1
- package/lib/network/reqresp/rateLimit.js +5 -11
- package/lib/network/reqresp/rateLimit.js.map +1 -1
- package/lib/network/statusCache.js +0 -1
- package/lib/network/statusCache.js.map +1 -1
- package/lib/network/subnets/attnetsService.js +65 -73
- package/lib/network/subnets/attnetsService.js.map +1 -1
- package/lib/network/subnets/syncnetsService.js +22 -29
- package/lib/network/subnets/syncnetsService.js.map +1 -1
- package/lib/node/nodejs.js +0 -15
- package/lib/node/nodejs.js.map +1 -1
- package/lib/sync/backfill/backfill.js +15 -57
- package/lib/sync/backfill/backfill.js.map +1 -1
- package/lib/sync/constants.d.ts +1 -2
- package/lib/sync/constants.js +1 -2
- package/lib/sync/constants.js.map +1 -1
- package/lib/sync/interface.d.ts +59 -1
- package/lib/sync/interface.js +20 -0
- package/lib/sync/interface.js.map +1 -1
- package/lib/sync/options.d.ts +1 -1
- package/lib/sync/range/batch.d.ts +32 -48
- package/lib/sync/range/batch.js +55 -201
- package/lib/sync/range/batch.js.map +1 -1
- package/lib/sync/range/chain.d.ts +10 -15
- package/lib/sync/range/chain.js +70 -141
- package/lib/sync/range/chain.js.map +1 -1
- package/lib/sync/range/range.d.ts +2 -2
- package/lib/sync/range/range.js +54 -86
- package/lib/sync/range/range.js.map +1 -1
- package/lib/sync/range/utils/hashBlocks.d.ts +2 -2
- package/lib/sync/range/utils/hashBlocks.js +4 -6
- package/lib/sync/range/utils/hashBlocks.js.map +1 -1
- package/lib/sync/range/utils/peerBalancer.js +13 -18
- package/lib/sync/range/utils/peerBalancer.js.map +1 -1
- package/lib/sync/sync.js +87 -95
- package/lib/sync/sync.js.map +1 -1
- package/lib/sync/unknownBlock.d.ts +28 -42
- package/lib/sync/unknownBlock.js +458 -404
- package/lib/sync/unknownBlock.js.map +1 -1
- package/lib/sync/utils/pendingBlocksTree.d.ts +6 -14
- package/lib/sync/utils/pendingBlocksTree.js +18 -24
- package/lib/sync/utils/pendingBlocksTree.js.map +1 -1
- package/lib/util/array.js +3 -7
- package/lib/util/array.js.map +1 -1
- package/lib/util/asyncIterableToEvents.js +3 -6
- package/lib/util/asyncIterableToEvents.js.map +1 -1
- package/lib/util/binarySearch.js +0 -2
- package/lib/util/binarySearch.js.map +1 -1
- package/lib/util/blobs.d.ts +2 -2
- package/lib/util/blobs.js +4 -4
- package/lib/util/blobs.js.map +1 -1
- package/lib/util/bufferPool.js +2 -7
- package/lib/util/bufferPool.js.map +1 -1
- package/lib/util/clock.js +18 -23
- package/lib/util/clock.js.map +1 -1
- package/lib/util/dataColumns.d.ts +12 -15
- package/lib/util/dataColumns.js +132 -90
- package/lib/util/dataColumns.js.map +1 -1
- package/lib/util/itTrigger.js +4 -4
- package/lib/util/itTrigger.js.map +1 -1
- package/lib/util/map.js +0 -2
- package/lib/util/map.js.map +1 -1
- package/lib/util/queue/itemQueue.js +49 -52
- package/lib/util/queue/itemQueue.js.map +1 -1
- package/lib/util/serializedCache.js +3 -1
- package/lib/util/serializedCache.js.map +1 -1
- package/lib/util/set.js +0 -2
- package/lib/util/set.js.map +1 -1
- package/lib/util/sszBytes.d.ts +0 -1
- package/lib/util/sszBytes.js +1 -1
- package/lib/util/sszBytes.js.map +1 -1
- package/lib/util/timeSeries.js +1 -3
- package/lib/util/timeSeries.js.map +1 -1
- package/lib/util/types.d.ts +1 -1
- package/lib/util/types.js +2 -2
- package/lib/util/types.js.map +1 -1
- package/lib/util/wrapError.d.ts +0 -7
- package/package.json +16 -22
- package/lib/bun-wrappers/prometheus-gc-stats.d.ts +0 -2
- package/lib/bun-wrappers/prometheus-gc-stats.js +0 -8
- package/lib/bun-wrappers/prometheus-gc-stats.js.map +0 -1
- package/lib/chain/ColumnReconstructionTracker.d.ts +0 -32
- package/lib/chain/ColumnReconstructionTracker.js +0 -67
- package/lib/chain/ColumnReconstructionTracker.js.map +0 -1
- package/lib/chain/GetBlobsTracker.d.ts +0 -31
- package/lib/chain/GetBlobsTracker.js +0 -82
- package/lib/chain/GetBlobsTracker.js.map +0 -1
- package/lib/sync/types.d.ts +0 -44
- package/lib/sync/types.js +0 -34
- package/lib/sync/types.js.map +0 -1
- package/lib/sync/utils/downloadByRange.d.ts +0 -186
- package/lib/sync/utils/downloadByRange.js +0 -457
- package/lib/sync/utils/downloadByRange.js.map +0 -1
- package/lib/sync/utils/downloadByRoot.d.ts +0 -119
- package/lib/sync/utils/downloadByRoot.js +0 -319
- package/lib/sync/utils/downloadByRoot.js.map +0 -1
- package/lib/util/execution.d.ts +0 -20
- package/lib/util/execution.js +0 -148
- package/lib/util/execution.js.map +0 -1
package/lib/sync/interface.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { routes } from "@lodestar/api";
|
|
2
2
|
import { BeaconConfig } from "@lodestar/config";
|
|
3
|
-
import { Slot, phase0 } from "@lodestar/types";
|
|
3
|
+
import { RootHex, Slot, phase0 } from "@lodestar/types";
|
|
4
4
|
import { Logger } from "@lodestar/utils";
|
|
5
|
+
import { BlockInput, BlockInputType, NullBlockInput } from "../chain/blocks/types.js";
|
|
5
6
|
import { IBeaconChain } from "../chain/index.js";
|
|
6
7
|
import { IBeaconDb } from "../db/index.js";
|
|
7
8
|
import { Metrics } from "../metrics/index.js";
|
|
@@ -44,4 +45,61 @@ export interface SyncModules {
|
|
|
44
45
|
chain: IBeaconChain;
|
|
45
46
|
wsCheckpoint?: phase0.Checkpoint;
|
|
46
47
|
}
|
|
48
|
+
export type UnknownAndAncestorBlocks = {
|
|
49
|
+
unknowns: UnknownBlock[];
|
|
50
|
+
ancestors: DownloadedBlock[];
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* onUnknownBlock: store 1 record with undefined parentBlockRootHex & blockInput, blockRootHex as key, status pending
|
|
54
|
+
* onUnknownBlockParent:
|
|
55
|
+
* - store 1 record with known parentBlockRootHex & blockInput, blockRootHex as key, status downloaded
|
|
56
|
+
* - store 1 record with undefined parentBlockRootHex & blockInput, parentBlockRootHex as key, status pending
|
|
57
|
+
*/
|
|
58
|
+
export type PendingBlock = UnknownBlock | DownloadedBlock;
|
|
59
|
+
type PendingBlockCommon = {
|
|
60
|
+
blockRootHex: RootHex;
|
|
61
|
+
peerIdStrs: Set<string>;
|
|
62
|
+
downloadAttempts: number;
|
|
63
|
+
};
|
|
64
|
+
export type UnknownBlock = PendingBlockCommon & {
|
|
65
|
+
status: PendingBlockStatus.pending | PendingBlockStatus.fetching;
|
|
66
|
+
parentBlockRootHex: null;
|
|
67
|
+
} & ({
|
|
68
|
+
unknownBlockType: PendingBlockType.UNKNOWN_BLOCK;
|
|
69
|
+
blockInput: null;
|
|
70
|
+
} | {
|
|
71
|
+
unknownBlockType: PendingBlockType.UNKNOWN_DATA;
|
|
72
|
+
blockInput: BlockInput & {
|
|
73
|
+
type: BlockInputType.dataPromise;
|
|
74
|
+
};
|
|
75
|
+
} | {
|
|
76
|
+
unknownBlockType: PendingBlockType.UNKNOWN_BLOCKINPUT;
|
|
77
|
+
blockInput: NullBlockInput;
|
|
78
|
+
});
|
|
79
|
+
/**
|
|
80
|
+
* either the blobs are unknown or in future some blobs and even the block is unknown
|
|
81
|
+
*/
|
|
82
|
+
export type DownloadedBlock = PendingBlockCommon & {
|
|
83
|
+
status: PendingBlockStatus.downloaded | PendingBlockStatus.processing;
|
|
84
|
+
parentBlockRootHex: RootHex;
|
|
85
|
+
blockInput: BlockInput;
|
|
86
|
+
};
|
|
87
|
+
export declare enum PendingBlockStatus {
|
|
88
|
+
pending = "pending",
|
|
89
|
+
fetching = "fetching",
|
|
90
|
+
downloaded = "downloaded",
|
|
91
|
+
processing = "processing"
|
|
92
|
+
}
|
|
93
|
+
export declare enum PendingBlockType {
|
|
94
|
+
/**
|
|
95
|
+
* We got a block root (from a gossip attestation, for exxample) but we don't have the block in forkchoice.
|
|
96
|
+
*/
|
|
97
|
+
UNKNOWN_BLOCK = "unknown_block",
|
|
98
|
+
/**
|
|
99
|
+
* During gossip time, we may get a block but the parent root is unknown (not in forkchoice).
|
|
100
|
+
*/
|
|
101
|
+
UNKNOWN_PARENT = "unknown_parent",
|
|
102
|
+
UNKNOWN_BLOCKINPUT = "unknown_blockinput",
|
|
103
|
+
UNKNOWN_DATA = "unknown_data"
|
|
104
|
+
}
|
|
47
105
|
//# sourceMappingURL=interface.d.ts.map
|
package/lib/sync/interface.js
CHANGED
|
@@ -16,4 +16,24 @@ export const syncStateMetric = {
|
|
|
16
16
|
[SyncState.SyncingHead]: 2,
|
|
17
17
|
[SyncState.Synced]: 3,
|
|
18
18
|
};
|
|
19
|
+
export var PendingBlockStatus;
|
|
20
|
+
(function (PendingBlockStatus) {
|
|
21
|
+
PendingBlockStatus["pending"] = "pending";
|
|
22
|
+
PendingBlockStatus["fetching"] = "fetching";
|
|
23
|
+
PendingBlockStatus["downloaded"] = "downloaded";
|
|
24
|
+
PendingBlockStatus["processing"] = "processing";
|
|
25
|
+
})(PendingBlockStatus || (PendingBlockStatus = {}));
|
|
26
|
+
export var PendingBlockType;
|
|
27
|
+
(function (PendingBlockType) {
|
|
28
|
+
/**
|
|
29
|
+
* We got a block root (from a gossip attestation, for exxample) but we don't have the block in forkchoice.
|
|
30
|
+
*/
|
|
31
|
+
PendingBlockType["UNKNOWN_BLOCK"] = "unknown_block";
|
|
32
|
+
/**
|
|
33
|
+
* During gossip time, we may get a block but the parent root is unknown (not in forkchoice).
|
|
34
|
+
*/
|
|
35
|
+
PendingBlockType["UNKNOWN_PARENT"] = "unknown_parent";
|
|
36
|
+
PendingBlockType["UNKNOWN_BLOCKINPUT"] = "unknown_blockinput";
|
|
37
|
+
PendingBlockType["UNKNOWN_DATA"] = "unknown_data";
|
|
38
|
+
})(PendingBlockType || (PendingBlockType = {}));
|
|
19
39
|
//# sourceMappingURL=interface.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interface.js","sourceRoot":"","sources":["../../src/sync/interface.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"interface.js","sourceRoot":"","sources":["../../src/sync/interface.ts"],"names":[],"mappings":"AAuBA,MAAM,CAAN,IAAY,SASX;AATD,WAAY,SAAS;IACnB,oCAAoC;IACpC,gCAAmB,CAAA;IACnB,sEAAsE;IACtE,kDAAqC,CAAA;IACrC,gEAAgE;IAChE,wCAA2B,CAAA;IAC3B,kDAAkD;IAClD,8BAAiB,CAAA;AACnB,CAAC,EATW,SAAS,KAAT,SAAS,QASpB;AAED,6DAA6D;AAC7D,MAAM,CAAC,MAAM,eAAe,GAA+B;IACzD,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;IACtB,CAAC,SAAS,CAAC,gBAAgB,CAAC,EAAE,CAAC;IAC/B,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;IAC1B,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;CACtB,CAAC;AAuDF,MAAM,CAAN,IAAY,kBAKX;AALD,WAAY,kBAAkB;IAC5B,yCAAmB,CAAA;IACnB,2CAAqB,CAAA;IACrB,+CAAyB,CAAA;IACzB,+CAAyB,CAAA;AAC3B,CAAC,EALW,kBAAkB,KAAlB,kBAAkB,QAK7B;AAED,MAAM,CAAN,IAAY,gBAYX;AAZD,WAAY,gBAAgB;IAC1B;;OAEG;IACH,mDAA+B,CAAA;IAC/B;;OAEG;IACH,qDAAiC,CAAA;IAEjC,6DAAyC,CAAA;IACzC,iDAA6B,CAAA;AAC/B,CAAC,EAZW,gBAAgB,KAAhB,gBAAgB,QAY3B"}
|
package/lib/sync/options.d.ts
CHANGED
|
@@ -12,7 +12,7 @@ export type SyncOptions = {
|
|
|
12
12
|
/** USE FOR TESTING ONLY. Disable range sync completely */
|
|
13
13
|
disableRangeSync?: boolean;
|
|
14
14
|
/** USE FOR TESTING ONLY. Disable unknown block sync completely */
|
|
15
|
-
|
|
15
|
+
disableUnknownBlockSync?: boolean;
|
|
16
16
|
/**
|
|
17
17
|
* The batch size of slots for backfill sync can attempt to sync/process before yielding
|
|
18
18
|
* to sync loop. This number can be increased or decreased to make a suitable resource
|
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
import { ChainForkConfig } from "@lodestar/config";
|
|
2
|
-
import {
|
|
3
|
-
import { Epoch, RootHex, Slot } from "@lodestar/types";
|
|
2
|
+
import { Epoch, RootHex, phase0 } from "@lodestar/types";
|
|
4
3
|
import { LodestarError } from "@lodestar/utils";
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
4
|
+
import { BlockInput } from "../../chain/blocks/types.js";
|
|
5
|
+
import { PartialDownload } from "../../network/reqresp/beaconBlocksMaybeBlobsByRange.js";
|
|
7
6
|
import { PeerIdStr } from "../../util/peerId.js";
|
|
8
|
-
import { DownloadByRangeRequests } from "../utils/downloadByRange.js";
|
|
9
|
-
import { PeerSyncMeta } from "../../network/peers/peersData.js";
|
|
10
|
-
import { IClock } from "../../util/clock.js";
|
|
11
7
|
/**
|
|
12
8
|
* Current state of a batch
|
|
13
9
|
*/
|
|
@@ -31,35 +27,39 @@ export declare enum BatchStatus {
|
|
|
31
27
|
}
|
|
32
28
|
export type Attempt = {
|
|
33
29
|
/** The peer that made the attempt */
|
|
34
|
-
|
|
30
|
+
peer: PeerIdStr;
|
|
35
31
|
/** The hash of the blocks of the attempt */
|
|
36
32
|
hash: RootHex;
|
|
37
33
|
};
|
|
38
|
-
export type
|
|
34
|
+
export type BatchState = {
|
|
39
35
|
status: BatchStatus.AwaitingDownload;
|
|
40
|
-
|
|
41
|
-
}
|
|
42
|
-
export type DownloadSuccessState = {
|
|
43
|
-
status: BatchStatus.AwaitingProcessing;
|
|
44
|
-
blocks: IBlockInput[];
|
|
45
|
-
};
|
|
46
|
-
export type BatchState = AwaitingDownloadState | {
|
|
36
|
+
partialDownload: PartialDownload;
|
|
37
|
+
} | {
|
|
47
38
|
status: BatchStatus.Downloading;
|
|
48
39
|
peer: PeerIdStr;
|
|
49
|
-
|
|
50
|
-
} |
|
|
40
|
+
partialDownload: PartialDownload;
|
|
41
|
+
} | {
|
|
42
|
+
status: BatchStatus.AwaitingProcessing;
|
|
43
|
+
peer: PeerIdStr;
|
|
44
|
+
blocks: BlockInput[];
|
|
45
|
+
} | {
|
|
51
46
|
status: BatchStatus.Processing;
|
|
52
|
-
blocks: IBlockInput[];
|
|
53
47
|
attempt: Attempt;
|
|
54
48
|
} | {
|
|
55
49
|
status: BatchStatus.AwaitingValidation;
|
|
56
|
-
blocks: IBlockInput[];
|
|
57
50
|
attempt: Attempt;
|
|
58
51
|
};
|
|
59
52
|
export type BatchMetadata = {
|
|
60
53
|
startEpoch: Epoch;
|
|
61
54
|
status: BatchStatus;
|
|
62
55
|
};
|
|
56
|
+
export type DownloadSuccessOutput = {
|
|
57
|
+
status: BatchStatus.AwaitingProcessing;
|
|
58
|
+
blocks: BlockInput[];
|
|
59
|
+
} | {
|
|
60
|
+
status: BatchStatus.AwaitingDownload;
|
|
61
|
+
pendingDataColumns: number[];
|
|
62
|
+
};
|
|
63
63
|
/**
|
|
64
64
|
* Batches are downloaded at the first block of the epoch.
|
|
65
65
|
*
|
|
@@ -72,16 +72,11 @@ export type BatchMetadata = {
|
|
|
72
72
|
* Jul2022: Offset changed from 1 to 0, see rationale in {@link BATCH_SLOT_OFFSET}
|
|
73
73
|
*/
|
|
74
74
|
export declare class Batch {
|
|
75
|
-
readonly forkName: ForkName;
|
|
76
75
|
readonly startEpoch: Epoch;
|
|
77
|
-
readonly startSlot: Slot;
|
|
78
|
-
readonly count: number;
|
|
79
|
-
/** Block, blob and column requests that are used to determine the best peer and are used in downloadByRange */
|
|
80
|
-
requests: DownloadByRangeRequests;
|
|
81
76
|
/** State of the batch. */
|
|
82
77
|
state: BatchState;
|
|
83
|
-
/**
|
|
84
|
-
|
|
78
|
+
/** BeaconBlocksByRangeRequest */
|
|
79
|
+
readonly request: phase0.BeaconBlocksByRangeRequest;
|
|
85
80
|
/** The `Attempts` that have been made and failed to send us this batch. */
|
|
86
81
|
readonly failedProcessingAttempts: Attempt[];
|
|
87
82
|
/** The `Attempts` that have been made and failed because of execution malfunction. */
|
|
@@ -89,39 +84,32 @@ export declare class Batch {
|
|
|
89
84
|
/** The number of download retries this batch has undergone due to a failed request. */
|
|
90
85
|
private readonly failedDownloadAttempts;
|
|
91
86
|
private readonly config;
|
|
92
|
-
|
|
93
|
-
private readonly custodyConfig;
|
|
94
|
-
constructor(startEpoch: Epoch, config: ChainForkConfig, clock: IClock, custodyConfig: CustodyConfig);
|
|
95
|
-
/**
|
|
96
|
-
* Builds ByRange requests for block, blobs and columns
|
|
97
|
-
*/
|
|
98
|
-
private getRequests;
|
|
99
|
-
/**
|
|
100
|
-
* Post-fulu we should only get columns that peer has advertised
|
|
101
|
-
*/
|
|
102
|
-
getRequestsForPeer(peer: PeerSyncMeta): DownloadByRangeRequests;
|
|
87
|
+
constructor(startEpoch: Epoch, config: ChainForkConfig);
|
|
103
88
|
/**
|
|
104
89
|
* Gives a list of peers from which this batch has had a failed download or processing attempt.
|
|
105
90
|
*/
|
|
106
91
|
getFailedPeers(): PeerIdStr[];
|
|
107
92
|
getMetadata(): BatchMetadata;
|
|
108
|
-
getBlocks(): IBlockInput[];
|
|
109
93
|
/**
|
|
110
94
|
* AwaitingDownload -> Downloading
|
|
111
95
|
*/
|
|
112
|
-
startDownloading(peer: PeerIdStr):
|
|
96
|
+
startDownloading(peer: PeerIdStr): PartialDownload;
|
|
113
97
|
/**
|
|
114
98
|
* Downloading -> AwaitingProcessing
|
|
99
|
+
* pendingDataColumns is null when a complete download is done, otherwise it contains the columns that are still pending
|
|
115
100
|
*/
|
|
116
|
-
downloadingSuccess(
|
|
101
|
+
downloadingSuccess(downloadResult: {
|
|
102
|
+
blocks: BlockInput[];
|
|
103
|
+
pendingDataColumns: null | number[];
|
|
104
|
+
}): DownloadSuccessOutput;
|
|
117
105
|
/**
|
|
118
106
|
* Downloading -> AwaitingDownload
|
|
119
107
|
*/
|
|
120
|
-
downloadingError(
|
|
108
|
+
downloadingError(): void;
|
|
121
109
|
/**
|
|
122
110
|
* AwaitingProcessing -> Processing
|
|
123
111
|
*/
|
|
124
|
-
startProcessing():
|
|
112
|
+
startProcessing(): BlockInput[];
|
|
125
113
|
/**
|
|
126
114
|
* Processing -> AwaitingValidation
|
|
127
115
|
*/
|
|
@@ -138,6 +126,7 @@ export declare class Batch {
|
|
|
138
126
|
* AwaitingValidation -> Done
|
|
139
127
|
*/
|
|
140
128
|
validationSuccess(): Attempt;
|
|
129
|
+
isPostFulu(): boolean;
|
|
141
130
|
private onExecutionEngineError;
|
|
142
131
|
private onProcessingError;
|
|
143
132
|
/** Helper to construct typed BatchError. Stack traces are correct as the error is thrown above */
|
|
@@ -146,7 +135,6 @@ export declare class Batch {
|
|
|
146
135
|
}
|
|
147
136
|
export declare enum BatchErrorCode {
|
|
148
137
|
WRONG_STATUS = "BATCH_ERROR_WRONG_STATUS",
|
|
149
|
-
INVALID_COUNT = "BATCH_ERROR_INVALID_COUNT",
|
|
150
138
|
MAX_DOWNLOAD_ATTEMPTS = "BATCH_ERROR_MAX_DOWNLOAD_ATTEMPTS",
|
|
151
139
|
MAX_PROCESSING_ATTEMPTS = "BATCH_ERROR_MAX_PROCESSING_ATTEMPTS",
|
|
152
140
|
MAX_EXECUTION_ENGINE_ERROR_ATTEMPTS = "MAX_EXECUTION_ENGINE_ERROR_ATTEMPTS"
|
|
@@ -154,10 +142,6 @@ export declare enum BatchErrorCode {
|
|
|
154
142
|
type BatchErrorType = {
|
|
155
143
|
code: BatchErrorCode.WRONG_STATUS;
|
|
156
144
|
expectedStatus: BatchStatus;
|
|
157
|
-
} | {
|
|
158
|
-
code: BatchErrorCode.INVALID_COUNT;
|
|
159
|
-
count: number;
|
|
160
|
-
expected: number;
|
|
161
145
|
} | {
|
|
162
146
|
code: BatchErrorCode.MAX_DOWNLOAD_ATTEMPTS;
|
|
163
147
|
} | {
|
package/lib/sync/range/batch.js
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { ForkSeq } from "@lodestar/params";
|
|
2
2
|
import { LodestarError } from "@lodestar/utils";
|
|
3
|
-
import { isBlockInputColumns } from "../../chain/blocks/blockInput/blockInput.js";
|
|
4
3
|
import { BlockError, BlockErrorCode } from "../../chain/errors/index.js";
|
|
5
4
|
import { MAX_BATCH_DOWNLOAD_ATTEMPTS, MAX_BATCH_PROCESSING_ATTEMPTS } from "../constants.js";
|
|
6
5
|
import { getBatchSlotRange, hashBlocks } from "./utils/index.js";
|
|
7
|
-
import { isDaOutOfRange } from "../../chain/blocks/blockInput/utils.js";
|
|
8
6
|
/**
|
|
9
7
|
* Current state of a batch
|
|
10
8
|
*/
|
|
@@ -39,172 +37,33 @@ export var BatchStatus;
|
|
|
39
37
|
* Jul2022: Offset changed from 1 to 0, see rationale in {@link BATCH_SLOT_OFFSET}
|
|
40
38
|
*/
|
|
41
39
|
export class Batch {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
goodPeers = [];
|
|
52
|
-
/** The `Attempts` that have been made and failed to send us this batch. */
|
|
53
|
-
failedProcessingAttempts = [];
|
|
54
|
-
/** The `Attempts` that have been made and failed because of execution malfunction. */
|
|
55
|
-
executionErrorAttempts = [];
|
|
56
|
-
/** The number of download retries this batch has undergone due to a failed request. */
|
|
57
|
-
failedDownloadAttempts = [];
|
|
58
|
-
config;
|
|
59
|
-
clock;
|
|
60
|
-
custodyConfig;
|
|
61
|
-
constructor(startEpoch, config, clock, custodyConfig) {
|
|
62
|
-
this.config = config;
|
|
63
|
-
this.clock = clock;
|
|
64
|
-
this.custodyConfig = custodyConfig;
|
|
40
|
+
constructor(startEpoch, config) {
|
|
41
|
+
/** State of the batch. */
|
|
42
|
+
this.state = { status: BatchStatus.AwaitingDownload, partialDownload: null };
|
|
43
|
+
/** The `Attempts` that have been made and failed to send us this batch. */
|
|
44
|
+
this.failedProcessingAttempts = [];
|
|
45
|
+
/** The `Attempts` that have been made and failed because of execution malfunction. */
|
|
46
|
+
this.executionErrorAttempts = [];
|
|
47
|
+
/** The number of download retries this batch has undergone due to a failed request. */
|
|
48
|
+
this.failedDownloadAttempts = [];
|
|
65
49
|
const { startSlot, count } = getBatchSlotRange(startEpoch);
|
|
66
|
-
this.
|
|
50
|
+
this.config = config;
|
|
67
51
|
this.startEpoch = startEpoch;
|
|
68
|
-
this.
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
/**
|
|
73
|
-
* Builds ByRange requests for block, blobs and columns
|
|
74
|
-
*/
|
|
75
|
-
getRequests(blocks) {
|
|
76
|
-
const withinValidRequestWindow = !isDaOutOfRange(this.config, this.forkName, this.startSlot, this.clock.currentEpoch);
|
|
77
|
-
// fresh request where no blocks have started to be pulled yet
|
|
78
|
-
if (!blocks.length) {
|
|
79
|
-
const blocksRequest = {
|
|
80
|
-
startSlot: this.startSlot,
|
|
81
|
-
count: this.count,
|
|
82
|
-
step: 1,
|
|
83
|
-
};
|
|
84
|
-
if (isForkPostFulu(this.forkName) && withinValidRequestWindow) {
|
|
85
|
-
return {
|
|
86
|
-
blocksRequest,
|
|
87
|
-
columnsRequest: {
|
|
88
|
-
startSlot: this.startSlot,
|
|
89
|
-
count: this.count,
|
|
90
|
-
columns: this.custodyConfig.sampledColumns,
|
|
91
|
-
},
|
|
92
|
-
};
|
|
93
|
-
}
|
|
94
|
-
if (isForkPostDeneb(this.forkName) && withinValidRequestWindow) {
|
|
95
|
-
return {
|
|
96
|
-
blocksRequest,
|
|
97
|
-
blobsRequest: {
|
|
98
|
-
startSlot: this.startSlot,
|
|
99
|
-
count: this.count,
|
|
100
|
-
},
|
|
101
|
-
};
|
|
102
|
-
}
|
|
103
|
-
return {
|
|
104
|
-
blocksRequest,
|
|
105
|
-
};
|
|
106
|
-
}
|
|
107
|
-
// subsequent request where part of the epoch has already been downloaded. Need to figure out what is the beginning
|
|
108
|
-
// of the range where download needs to resume
|
|
109
|
-
let blockStartSlot = this.startSlot;
|
|
110
|
-
let dataStartSlot = this.startSlot;
|
|
111
|
-
const neededColumns = new Set();
|
|
112
|
-
// ensure blocks are in slot-wise order
|
|
113
|
-
for (const blockInput of blocks) {
|
|
114
|
-
const blockSlot = blockInput.slot;
|
|
115
|
-
// check if block/data is present (hasBlock/hasAllData). If present then check if startSlot is the same as
|
|
116
|
-
// blockSlot. If it is then do not need to pull that slot so increment startSlot by 1. check will fail
|
|
117
|
-
// if there is a gap and then the blocks/data is present again. to simplify the request just re-pull remainder
|
|
118
|
-
// of range.
|
|
119
|
-
//
|
|
120
|
-
// ie startSlot = 32 and count = 32. so for slots = [32, 33, 34, 35, 36, _, 38, 39, _, _, ... _endSlot=63_]
|
|
121
|
-
// will return an updated startSlot of 37 and pull range 37-63 on the next request.
|
|
122
|
-
//
|
|
123
|
-
// if all slot have already been pulled then the startSlot will eventually get incremented to the slot after
|
|
124
|
-
// the desired end slot
|
|
125
|
-
if (blockInput.hasBlock() && blockStartSlot === blockSlot) {
|
|
126
|
-
blockStartSlot = blockSlot + 1;
|
|
127
|
-
}
|
|
128
|
-
if (!blockInput.hasAllData()) {
|
|
129
|
-
if (isBlockInputColumns(blockInput)) {
|
|
130
|
-
for (const index of blockInput.getMissingSampledColumnMeta().missing) {
|
|
131
|
-
neededColumns.add(index);
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
else if (dataStartSlot === blockSlot) {
|
|
136
|
-
dataStartSlot = blockSlot + 1;
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
// if the blockStartSlot or dataStartSlot is after the desired endSlot then no request will be made for the batch
|
|
140
|
-
// because it is complete
|
|
141
|
-
const endSlot = this.startSlot + this.count - 1;
|
|
142
|
-
const requests = {};
|
|
143
|
-
if (blockStartSlot <= endSlot) {
|
|
144
|
-
requests.blocksRequest = {
|
|
145
|
-
startSlot: blockStartSlot,
|
|
146
|
-
// range of 40 - 63, startSlot will be inclusive but subtraction will exclusive so need to + 1
|
|
147
|
-
count: endSlot - blockStartSlot + 1,
|
|
148
|
-
step: 1,
|
|
149
|
-
};
|
|
150
|
-
}
|
|
151
|
-
if (dataStartSlot <= endSlot) {
|
|
152
|
-
// range of 40 - 63, startSlot will be inclusive but subtraction will exclusive so need to + 1
|
|
153
|
-
const count = endSlot - dataStartSlot + 1;
|
|
154
|
-
if (isForkPostFulu(this.forkName) && withinValidRequestWindow) {
|
|
155
|
-
requests.columnsRequest = {
|
|
156
|
-
count,
|
|
157
|
-
startSlot: dataStartSlot,
|
|
158
|
-
columns: Array.from(neededColumns),
|
|
159
|
-
};
|
|
160
|
-
}
|
|
161
|
-
else if (isForkPostDeneb(this.forkName) && withinValidRequestWindow) {
|
|
162
|
-
requests.blobsRequest = {
|
|
163
|
-
count,
|
|
164
|
-
startSlot: dataStartSlot,
|
|
165
|
-
};
|
|
166
|
-
}
|
|
167
|
-
// dataSlot will still have a value but do not create a request for preDeneb forks
|
|
168
|
-
}
|
|
169
|
-
return requests;
|
|
170
|
-
}
|
|
171
|
-
/**
|
|
172
|
-
* Post-fulu we should only get columns that peer has advertised
|
|
173
|
-
*/
|
|
174
|
-
getRequestsForPeer(peer) {
|
|
175
|
-
if (!isForkPostFulu(this.forkName)) {
|
|
176
|
-
return this.requests;
|
|
177
|
-
}
|
|
178
|
-
// post-fulu we need to ensure that we only request columns that the peer has advertised
|
|
179
|
-
const { columnsRequest } = this.requests;
|
|
180
|
-
if (columnsRequest == null) {
|
|
181
|
-
return this.requests;
|
|
182
|
-
}
|
|
183
|
-
const peerColumns = new Set(peer.custodyColumns ?? []);
|
|
184
|
-
const requestedColumns = columnsRequest.columns.filter((c) => peerColumns.has(c));
|
|
185
|
-
if (requestedColumns.length === columnsRequest.columns.length) {
|
|
186
|
-
return this.requests;
|
|
187
|
-
}
|
|
188
|
-
return {
|
|
189
|
-
...this.requests,
|
|
190
|
-
columnsRequest: {
|
|
191
|
-
...columnsRequest,
|
|
192
|
-
columns: requestedColumns,
|
|
193
|
-
},
|
|
52
|
+
this.request = {
|
|
53
|
+
startSlot,
|
|
54
|
+
count,
|
|
55
|
+
step: 1,
|
|
194
56
|
};
|
|
195
57
|
}
|
|
196
58
|
/**
|
|
197
59
|
* Gives a list of peers from which this batch has had a failed download or processing attempt.
|
|
198
60
|
*/
|
|
199
61
|
getFailedPeers() {
|
|
200
|
-
return [...this.failedDownloadAttempts, ...this.failedProcessingAttempts.
|
|
62
|
+
return [...this.failedDownloadAttempts, ...this.failedProcessingAttempts.map((a) => a.peer)];
|
|
201
63
|
}
|
|
202
64
|
getMetadata() {
|
|
203
65
|
return { startEpoch: this.startEpoch, status: this.state.status };
|
|
204
66
|
}
|
|
205
|
-
getBlocks() {
|
|
206
|
-
return this.state.blocks;
|
|
207
|
-
}
|
|
208
67
|
/**
|
|
209
68
|
* AwaitingDownload -> Downloading
|
|
210
69
|
*/
|
|
@@ -212,56 +71,57 @@ export class Batch {
|
|
|
212
71
|
if (this.state.status !== BatchStatus.AwaitingDownload) {
|
|
213
72
|
throw new BatchError(this.wrongStatusErrorType(BatchStatus.AwaitingDownload));
|
|
214
73
|
}
|
|
215
|
-
|
|
74
|
+
const { partialDownload } = this.state;
|
|
75
|
+
this.state = { status: BatchStatus.Downloading, peer, partialDownload };
|
|
76
|
+
return partialDownload;
|
|
216
77
|
}
|
|
217
78
|
/**
|
|
218
79
|
* Downloading -> AwaitingProcessing
|
|
80
|
+
* pendingDataColumns is null when a complete download is done, otherwise it contains the columns that are still pending
|
|
219
81
|
*/
|
|
220
|
-
downloadingSuccess(
|
|
82
|
+
downloadingSuccess(downloadResult) {
|
|
221
83
|
if (this.state.status !== BatchStatus.Downloading) {
|
|
222
84
|
throw new BatchError(this.wrongStatusErrorType(BatchStatus.Downloading));
|
|
223
85
|
}
|
|
224
|
-
|
|
225
|
-
blocks
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
for (const block of blocks) {
|
|
230
|
-
slots.add(block.slot);
|
|
231
|
-
if (!block.hasBlockAndAllData()) {
|
|
232
|
-
allComplete = false;
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
if (slots.size > this.count) {
|
|
236
|
-
throw new BatchError({
|
|
237
|
-
code: BatchErrorCode.INVALID_COUNT,
|
|
238
|
-
startEpoch: this.startEpoch,
|
|
239
|
-
count: slots.size,
|
|
240
|
-
expected: this.count,
|
|
241
|
-
status: this.state.status,
|
|
242
|
-
});
|
|
243
|
-
}
|
|
244
|
-
if (allComplete) {
|
|
245
|
-
this.state = { status: BatchStatus.AwaitingProcessing, blocks };
|
|
86
|
+
let updatedPendingDataColumns = this.state.partialDownload?.pendingDataColumns ?? null;
|
|
87
|
+
const { blocks, pendingDataColumns } = downloadResult;
|
|
88
|
+
if (updatedPendingDataColumns == null) {
|
|
89
|
+
// state pendingDataColumns is null as initial value, just update it to pendingDataColumns in this case
|
|
90
|
+
updatedPendingDataColumns = pendingDataColumns;
|
|
246
91
|
}
|
|
247
92
|
else {
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
93
|
+
updatedPendingDataColumns =
|
|
94
|
+
// pendingDataColumns = null means a complete download
|
|
95
|
+
pendingDataColumns == null
|
|
96
|
+
? null
|
|
97
|
+
: // if not state pendingDataColumns should be reduced over time, see see https://github.com/ChainSafe/lodestar/issues/8036
|
|
98
|
+
updatedPendingDataColumns.filter((column) => pendingDataColumns.includes(column));
|
|
99
|
+
}
|
|
100
|
+
if (updatedPendingDataColumns === null) {
|
|
101
|
+
// complete download
|
|
102
|
+
this.state = { status: BatchStatus.AwaitingProcessing, peer: this.state.peer, blocks };
|
|
103
|
+
return { status: BatchStatus.AwaitingProcessing, blocks };
|
|
104
|
+
}
|
|
105
|
+
// partial download, track updatedPendingDataColumns in state
|
|
106
|
+
this.state = {
|
|
107
|
+
status: BatchStatus.AwaitingDownload,
|
|
108
|
+
partialDownload: blocks.length === 0 ? null : { blocks, pendingDataColumns: updatedPendingDataColumns },
|
|
109
|
+
};
|
|
110
|
+
return { status: BatchStatus.AwaitingDownload, pendingDataColumns: updatedPendingDataColumns };
|
|
252
111
|
}
|
|
253
112
|
/**
|
|
254
113
|
* Downloading -> AwaitingDownload
|
|
255
114
|
*/
|
|
256
|
-
downloadingError(
|
|
115
|
+
downloadingError() {
|
|
257
116
|
if (this.state.status !== BatchStatus.Downloading) {
|
|
258
117
|
throw new BatchError(this.wrongStatusErrorType(BatchStatus.Downloading));
|
|
259
118
|
}
|
|
260
|
-
this.failedDownloadAttempts.push(peer);
|
|
119
|
+
this.failedDownloadAttempts.push(this.state.peer);
|
|
261
120
|
if (this.failedDownloadAttempts.length > MAX_BATCH_DOWNLOAD_ATTEMPTS) {
|
|
262
121
|
throw new BatchError(this.errorType({ code: BatchErrorCode.MAX_DOWNLOAD_ATTEMPTS }));
|
|
263
122
|
}
|
|
264
|
-
|
|
123
|
+
const { partialDownload } = this.state;
|
|
124
|
+
this.state = { status: BatchStatus.AwaitingDownload, partialDownload };
|
|
265
125
|
}
|
|
266
126
|
/**
|
|
267
127
|
* AwaitingProcessing -> Processing
|
|
@@ -272,11 +132,7 @@ export class Batch {
|
|
|
272
132
|
}
|
|
273
133
|
const blocks = this.state.blocks;
|
|
274
134
|
const hash = hashBlocks(blocks, this.config); // tracks blocks to report peer on processing error
|
|
275
|
-
|
|
276
|
-
// that the data came from will be handled by the Attempt that goes for processing
|
|
277
|
-
const peers = this.goodPeers;
|
|
278
|
-
this.goodPeers = [];
|
|
279
|
-
this.state = { status: BatchStatus.Processing, blocks, attempt: { peers, hash } };
|
|
135
|
+
this.state = { status: BatchStatus.Processing, attempt: { peer: this.state.peer, hash } };
|
|
280
136
|
return blocks;
|
|
281
137
|
}
|
|
282
138
|
/**
|
|
@@ -286,7 +142,7 @@ export class Batch {
|
|
|
286
142
|
if (this.state.status !== BatchStatus.Processing) {
|
|
287
143
|
throw new BatchError(this.wrongStatusErrorType(BatchStatus.Processing));
|
|
288
144
|
}
|
|
289
|
-
this.state = { status: BatchStatus.AwaitingValidation,
|
|
145
|
+
this.state = { status: BatchStatus.AwaitingValidation, attempt: this.state.attempt };
|
|
290
146
|
}
|
|
291
147
|
/**
|
|
292
148
|
* Processing -> AwaitingDownload
|
|
@@ -325,23 +181,22 @@ export class Batch {
|
|
|
325
181
|
}
|
|
326
182
|
return this.state.attempt;
|
|
327
183
|
}
|
|
184
|
+
isPostFulu() {
|
|
185
|
+
return this.config.getForkSeq(this.request.startSlot) >= ForkSeq.fulu;
|
|
186
|
+
}
|
|
328
187
|
onExecutionEngineError(attempt) {
|
|
329
188
|
this.executionErrorAttempts.push(attempt);
|
|
330
189
|
if (this.executionErrorAttempts.length > MAX_BATCH_PROCESSING_ATTEMPTS) {
|
|
331
190
|
throw new BatchError(this.errorType({ code: BatchErrorCode.MAX_EXECUTION_ENGINE_ERROR_ATTEMPTS }));
|
|
332
191
|
}
|
|
333
|
-
|
|
334
|
-
// TODO(fulu): need to remove the bad blocks from the SeenBlockInputCache
|
|
335
|
-
this.state = { status: BatchStatus.AwaitingDownload, blocks: [] };
|
|
192
|
+
this.state = { status: BatchStatus.AwaitingDownload, partialDownload: null };
|
|
336
193
|
}
|
|
337
194
|
onProcessingError(attempt) {
|
|
338
195
|
this.failedProcessingAttempts.push(attempt);
|
|
339
196
|
if (this.failedProcessingAttempts.length > MAX_BATCH_PROCESSING_ATTEMPTS) {
|
|
340
197
|
throw new BatchError(this.errorType({ code: BatchErrorCode.MAX_PROCESSING_ATTEMPTS }));
|
|
341
198
|
}
|
|
342
|
-
|
|
343
|
-
// TODO(fulu): need to remove the bad blocks from the SeenBlockInputCache
|
|
344
|
-
this.state = { status: BatchStatus.AwaitingDownload, blocks: [] };
|
|
199
|
+
this.state = { status: BatchStatus.AwaitingDownload, partialDownload: null };
|
|
345
200
|
}
|
|
346
201
|
/** Helper to construct typed BatchError. Stack traces are correct as the error is thrown above */
|
|
347
202
|
errorType(type) {
|
|
@@ -354,7 +209,6 @@ export class Batch {
|
|
|
354
209
|
export var BatchErrorCode;
|
|
355
210
|
(function (BatchErrorCode) {
|
|
356
211
|
BatchErrorCode["WRONG_STATUS"] = "BATCH_ERROR_WRONG_STATUS";
|
|
357
|
-
BatchErrorCode["INVALID_COUNT"] = "BATCH_ERROR_INVALID_COUNT";
|
|
358
212
|
BatchErrorCode["MAX_DOWNLOAD_ATTEMPTS"] = "BATCH_ERROR_MAX_DOWNLOAD_ATTEMPTS";
|
|
359
213
|
BatchErrorCode["MAX_PROCESSING_ATTEMPTS"] = "BATCH_ERROR_MAX_PROCESSING_ATTEMPTS";
|
|
360
214
|
BatchErrorCode["MAX_EXECUTION_ENGINE_ERROR_ATTEMPTS"] = "MAX_EXECUTION_ENGINE_ERROR_ATTEMPTS";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"batch.js","sourceRoot":"","sources":["../../../src/sync/range/batch.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"batch.js","sourceRoot":"","sources":["../../../src/sync/range/batch.ts"],"names":[],"mappings":"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"}
|