@lodestar/beacon-node 1.35.0-dev.47c570ab76 → 1.35.0-dev.56313c7299
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/config/constants.d.ts +0 -5
- package/lib/api/impl/config/constants.js +1 -6
- package/lib/api/impl/config/constants.js.map +1 -1
- package/lib/api/impl/debug/index.js +1 -1
- package/lib/api/impl/debug/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/index.d.ts +3 -3
- package/lib/api/impl/index.js +3 -3
- package/lib/api/impl/index.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.d.ts +1 -1
- package/lib/api/rest/base.js +2 -6
- 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 -3
- package/lib/chain/archiveStore/historicalState/historicalStateRegen.js.map +1 -1
- package/lib/chain/archiveStore/index.d.ts +1 -1
- package/lib/chain/archiveStore/index.js +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/index.d.ts +1 -1
- package/lib/chain/blocks/blockInput/index.js +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 +5 -6
- 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 -168
- 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 +11 -13
- 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/errors/index.d.ts +2 -2
- package/lib/chain/errors/index.js +2 -2
- package/lib/chain/errors/index.js.map +1 -1
- package/lib/chain/forkChoice/index.js.map +1 -1
- package/lib/chain/genesis/genesis.js +5 -16
- package/lib/chain/genesis/genesis.js.map +1 -1
- package/lib/chain/index.d.ts +2 -2
- package/lib/chain/index.js +2 -2
- package/lib/chain/index.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/lightClient/proofs.js.map +1 -1
- package/lib/chain/opPools/aggregatedAttestationPool.js +9 -14
- package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
- package/lib/chain/opPools/attestationPool.js +3 -8
- package/lib/chain/opPools/attestationPool.js.map +1 -1
- package/lib/chain/opPools/index.d.ts +1 -1
- package/lib/chain/opPools/index.js +1 -1
- package/lib/chain/opPools/index.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/options.js +1 -1
- package/lib/chain/options.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/index.d.ts +1 -1
- package/lib/chain/regen/index.js +1 -1
- package/lib/chain/regen/index.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/datastore/index.d.ts +1 -1
- package/lib/chain/stateCache/datastore/index.js +1 -1
- package/lib/chain/stateCache/datastore/index.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/index.d.ts +1 -1
- package/lib/chain/stateCache/index.js +1 -1
- package/lib/chain/stateCache/index.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 +6 -14
- 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 +57 -95
- package/lib/chain/validation/dataColumnSidecar.js.map +1 -1
- package/lib/chain/validation/index.d.ts +1 -1
- package/lib/chain/validation/index.js +1 -1
- package/lib/chain/validation/index.js.map +1 -1
- package/lib/chain/validation/signatureSets/aggregateAndProof.d.ts +2 -1
- package/lib/chain/validation/signatureSets/aggregateAndProof.js.map +1 -1
- package/lib/chain/validatorMonitor.d.ts +3 -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/index.d.ts +1 -1
- package/lib/db/index.js.map +1 -1
- package/lib/db/repositories/blobSidecars.js.map +1 -1
- package/lib/db/repositories/blockArchive.js +3 -2
- package/lib/db/repositories/blockArchive.js.map +1 -1
- package/lib/db/repositories/dataColumnSidecar.js +1 -1
- package/lib/db/repositories/dataColumnSidecar.js.map +1 -1
- package/lib/db/repositories/dataColumnSidecarArchive.js +1 -1
- package/lib/db/repositories/dataColumnSidecarArchive.js.map +1 -1
- package/lib/db/repositories/depositDataRoot.js +0 -1
- package/lib/db/repositories/depositDataRoot.js.map +1 -1
- package/lib/db/repositories/index.d.ts +10 -10
- package/lib/db/repositories/index.js +9 -9
- package/lib/db/repositories/index.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.d.ts +2 -1
- package/lib/eth1/provider/eth1Provider.js +2 -6
- package/lib/eth1/provider/eth1Provider.js.map +1 -1
- package/lib/eth1/provider/jsonRpcHttpClient.d.ts +1 -1
- package/lib/eth1/provider/jsonRpcHttpClient.js +2 -16
- package/lib/eth1/provider/jsonRpcHttpClient.js.map +1 -1
- package/lib/eth1/provider/jwt.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/eth1/utils/deposits.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/builder/index.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/interface.js.map +1 -1
- 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 +3 -3
- package/lib/execution/engine/utils.js.map +1 -1
- package/lib/execution/index.d.ts +2 -2
- package/lib/execution/index.js +2 -2
- package/lib/execution/index.js.map +1 -1
- package/lib/index.d.ts +6 -6
- package/lib/index.js +5 -5
- package/lib/index.js.map +1 -1
- package/lib/metrics/index.d.ts +1 -1
- package/lib/metrics/index.js +1 -1
- package/lib/metrics/index.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/metrics.d.ts +1 -1
- package/lib/metrics/metrics.js.map +1 -1
- package/lib/metrics/nodeJsMetrics.js +1 -1
- package/lib/metrics/nodeJsMetrics.js.map +1 -1
- package/lib/metrics/server/http.d.ts +1 -1
- package/lib/metrics/utils/avgMinMax.d.ts +1 -1
- package/lib/metrics/utils/avgMinMax.js +6 -10
- package/lib/metrics/utils/avgMinMax.js.map +1 -1
- package/lib/metrics/utils/gauge.d.ts +1 -1
- package/lib/metrics/utils/gauge.js +4 -1
- package/lib/metrics/utils/gauge.js.map +1 -1
- package/lib/metrics/utils/registryMetricCreator.d.ts +1 -1
- package/lib/metrics/utils/registryMetricCreator.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 +2 -2
- package/lib/network/core/networkCore.js +50 -67
- package/lib/network/core/networkCore.js.map +1 -1
- package/lib/network/core/networkCoreWorker.js +1 -1
- package/lib/network/core/networkCoreWorker.js.map +1 -1
- package/lib/network/core/networkCoreWorkerHandler.d.ts +2 -2
- package/lib/network/core/networkCoreWorkerHandler.js +5 -14
- package/lib/network/core/networkCoreWorkerHandler.js.map +1 -1
- package/lib/network/discv5/index.d.ts +2 -2
- package/lib/network/discv5/index.js +3 -9
- package/lib/network/discv5/index.js.map +1 -1
- package/lib/network/discv5/worker.js +3 -3
- 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.d.ts +1 -1
- package/lib/network/gossip/encoding.js +2 -4
- 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.d.ts +1 -2
- package/lib/network/gossip/gossipsub.js +17 -43
- package/lib/network/gossip/gossipsub.js.map +1 -1
- package/lib/network/gossip/index.d.ts +2 -2
- package/lib/network/gossip/index.js +2 -2
- package/lib/network/gossip/index.js.map +1 -1
- package/lib/network/gossip/interface.d.ts +2 -2
- package/lib/network/gossip/metrics.d.ts +7 -15
- package/lib/network/gossip/metrics.js +6 -16
- package/lib/network/gossip/metrics.js.map +1 -1
- package/lib/network/gossip/topic.d.ts +105 -125
- package/lib/network/gossip/topic.js +1 -2
- package/lib/network/gossip/topic.js.map +1 -1
- package/lib/network/index.d.ts +3 -3
- package/lib/network/index.js +3 -3
- package/lib/network/index.js.map +1 -1
- package/lib/network/interface.d.ts +2 -3
- package/lib/network/libp2p/index.js +3 -11
- package/lib/network/libp2p/index.js.map +1 -1
- package/lib/network/metadata.js +1 -6
- package/lib/network/metadata.js.map +1 -1
- package/lib/network/network.d.ts +2 -4
- 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.d.ts +2 -2
- package/lib/network/peers/datastore.js +4 -10
- package/lib/network/peers/datastore.js.map +1 -1
- package/lib/network/peers/discover.js +66 -75
- 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/index.d.ts +1 -1
- package/lib/network/peers/score/index.js +1 -1
- package/lib/network/peers/score/index.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/prioritizePeers.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 +8 -22
- package/lib/network/processor/index.js.map +1 -1
- package/lib/network/reqresp/ReqRespBeaconNode.d.ts +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/handlers/dataColumnSidecarsByRoot.js.map +1 -1
- package/lib/network/reqresp/index.d.ts +3 -1
- package/lib/network/reqresp/index.js +3 -1
- package/lib/network/reqresp/index.js.map +1 -1
- package/lib/network/reqresp/rateLimit.js +2 -2
- package/lib/network/reqresp/rateLimit.js.map +1 -1
- package/lib/network/reqresp/utils/dataColumnResponseValidation.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/interface.js +1 -1
- package/lib/network/subnets/interface.js.map +1 -1
- package/lib/network/subnets/syncnetsService.js +22 -29
- package/lib/network/subnets/syncnetsService.js.map +1 -1
- package/lib/network/subnets/util.js +2 -1
- package/lib/network/subnets/util.js.map +1 -1
- package/lib/node/nodejs.d.ts +1 -1
- package/lib/node/nodejs.js +0 -15
- package/lib/node/nodejs.js.map +1 -1
- package/lib/node/notifier.js +2 -1
- package/lib/node/notifier.js.map +1 -1
- package/lib/node/options.js.map +1 -1
- package/lib/node/utils/interop/state.js +2 -1
- package/lib/node/utils/interop/state.js.map +1 -1
- package/lib/sync/backfill/backfill.d.ts +1 -1
- package/lib/sync/backfill/backfill.js +16 -58
- 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 +3 -3
- 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.d.ts +2 -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 -405
- 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.d.ts +1 -1
- package/lib/util/clock.js +18 -23
- package/lib/util/clock.js.map +1 -1
- package/lib/util/dataColumns.d.ts +10 -13
- 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/index.d.ts +1 -1
- package/lib/util/queue/index.js +1 -1
- package/lib/util/queue/index.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/wrapError.d.ts +0 -7
- package/package.json +18 -36
- 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 -71
- 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 -121
- package/lib/sync/utils/downloadByRoot.js +0 -346
- package/lib/sync/utils/downloadByRoot.js.map +0 -1
- package/lib/util/execution.d.ts +0 -20
- package/lib/util/execution.js +0 -165
- package/lib/util/execution.js.map +0 -1
|
@@ -0,0 +1,499 @@
|
|
|
1
|
+
import { toHexString } from "@chainsafe/ssz";
|
|
2
|
+
import { routes } from "@lodestar/api";
|
|
3
|
+
import { ForkName, ForkSeq } from "@lodestar/params";
|
|
4
|
+
import { signedBlockToSignedHeader } from "@lodestar/state-transition";
|
|
5
|
+
import { fromHex, toHex } from "@lodestar/utils";
|
|
6
|
+
import { BlobsSource, BlockInputType, BlockSource, DataColumnsSource, getBlockInput, getBlockInputBlobs, getBlockInputDataColumns, } from "../../chain/blocks/types.js";
|
|
7
|
+
import { BlockInputAvailabilitySource } from "../../chain/seenCache/seenGossipBlockInput.js";
|
|
8
|
+
import { computeInclusionProof, kzgCommitmentToVersionedHash } from "../../util/blobs.js";
|
|
9
|
+
import { getDataColumnsFromExecution } from "../../util/dataColumns.js";
|
|
10
|
+
import { SyncSourceByRoot, matchBlockWithBlobs, matchBlockWithDataColumns, } from "./beaconBlocksMaybeBlobsByRange.js";
|
|
11
|
+
// keep 1 epoch of stuff, assmume 16 blobs
|
|
12
|
+
const MAX_ENGINE_GETBLOBS_CACHE = 32 * 16;
|
|
13
|
+
const MAX_UNAVAILABLE_RETRY_CACHE = 32;
|
|
14
|
+
/**
|
|
15
|
+
* Request beacon blocks by root, and blobs or data columns if available.
|
|
16
|
+
* return BlockInput[] along with pendingDataColumns (null for prefulu forks for postfulu where data is available)
|
|
17
|
+
*/
|
|
18
|
+
export async function beaconBlocksMaybeBlobsByRoot(config, network, peerId, request, partialDownload, peerClient, metrics, logger) {
|
|
19
|
+
// console.log("beaconBlocksMaybeBlobsByRoot", request);
|
|
20
|
+
const allBlocks = partialDownload
|
|
21
|
+
? partialDownload.blocks.map((blockInput) => ({ data: blockInput.block }))
|
|
22
|
+
: await network.sendBeaconBlocksByRoot(peerId, request);
|
|
23
|
+
logger?.debug("beaconBlocksMaybeBlobsByRoot response", { allBlocks: allBlocks.length, peerClient });
|
|
24
|
+
const preDataBlocks = [];
|
|
25
|
+
const blobsDataBlocks = [];
|
|
26
|
+
const dataColumnsDataBlocks = [];
|
|
27
|
+
const sampledColumns = network.custodyConfig.sampledColumns;
|
|
28
|
+
const neededColumns = partialDownload ? partialDownload.pendingDataColumns : sampledColumns;
|
|
29
|
+
const { custodyGroups: peerColumns } = network.getConnectedPeerSyncMeta(peerId);
|
|
30
|
+
// get match
|
|
31
|
+
const columns = peerColumns.reduce((acc, elem) => {
|
|
32
|
+
if (neededColumns.includes(elem)) {
|
|
33
|
+
acc.push(elem);
|
|
34
|
+
}
|
|
35
|
+
return acc;
|
|
36
|
+
}, []);
|
|
37
|
+
let pendingDataColumns = null;
|
|
38
|
+
const blobIdentifiers = [];
|
|
39
|
+
const dataColumnsByRootIdentifiers = [];
|
|
40
|
+
let prevFork = null;
|
|
41
|
+
for (const block of allBlocks) {
|
|
42
|
+
const slot = block.data.message.slot;
|
|
43
|
+
const blockRoot = config.getForkTypes(slot).BeaconBlock.hashTreeRoot(block.data.message);
|
|
44
|
+
const fork = config.getForkName(slot);
|
|
45
|
+
if (fork !== (prevFork ?? fork)) {
|
|
46
|
+
throw Error("beaconBlocksMaybeBlobsByRoot only accepts requests of same fork");
|
|
47
|
+
}
|
|
48
|
+
prevFork = fork;
|
|
49
|
+
if (ForkSeq[fork] < ForkSeq.deneb) {
|
|
50
|
+
preDataBlocks.push(block);
|
|
51
|
+
}
|
|
52
|
+
else if (fork === ForkName.deneb || fork === ForkName.electra) {
|
|
53
|
+
blobsDataBlocks.push(block);
|
|
54
|
+
const blobKzgCommitmentsLen = block.data.message.body.blobKzgCommitments.length;
|
|
55
|
+
logger?.debug("beaconBlocksMaybeBlobsByRoot", { blobKzgCommitmentsLen, peerClient });
|
|
56
|
+
for (let index = 0; index < blobKzgCommitmentsLen; index++) {
|
|
57
|
+
// try see if the blob is available locally
|
|
58
|
+
blobIdentifiers.push({ blockRoot, index });
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
else if (fork === ForkName.fulu) {
|
|
62
|
+
dataColumnsDataBlocks.push(block);
|
|
63
|
+
const blobKzgCommitmentsLen = block.data.message.body.blobKzgCommitments.length;
|
|
64
|
+
const custodyColumnIndexes = blobKzgCommitmentsLen > 0 ? columns : [];
|
|
65
|
+
if (custodyColumnIndexes.length > 0) {
|
|
66
|
+
dataColumnsByRootIdentifiers.push({
|
|
67
|
+
blockRoot,
|
|
68
|
+
columns: custodyColumnIndexes,
|
|
69
|
+
});
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
throw Error(`Invalid fork=${fork} in beaconBlocksMaybeBlobsByRoot`);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
let blockInputs = preDataBlocks.map((block) => getBlockInput.preData(config, block.data, BlockSource.byRoot));
|
|
77
|
+
if (blobsDataBlocks.length > 0) {
|
|
78
|
+
let allBlobSidecars;
|
|
79
|
+
if (blobIdentifiers.length > 0) {
|
|
80
|
+
allBlobSidecars = await network.sendBlobSidecarsByRoot(peerId, blobIdentifiers);
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
allBlobSidecars = [];
|
|
84
|
+
}
|
|
85
|
+
// The last arg is to provide slot to which all blobs should be exausted in matching
|
|
86
|
+
// and here it should be infinity since all bobs should match
|
|
87
|
+
const blockInputWithBlobs = matchBlockWithBlobs(config, allBlocks, allBlobSidecars, Infinity, BlockSource.byRoot, BlobsSource.byRoot, SyncSourceByRoot);
|
|
88
|
+
blockInputs = [...blockInputs, ...blockInputWithBlobs];
|
|
89
|
+
}
|
|
90
|
+
if (dataColumnsDataBlocks.length > 0) {
|
|
91
|
+
pendingDataColumns = neededColumns.reduce((acc, elem) => {
|
|
92
|
+
if (!columns.includes(elem)) {
|
|
93
|
+
acc.push(elem);
|
|
94
|
+
}
|
|
95
|
+
return acc;
|
|
96
|
+
}, []);
|
|
97
|
+
let allDataColumnsSidecars;
|
|
98
|
+
logger?.debug("allDataColumnsSidecars partialDownload", {
|
|
99
|
+
...(partialDownload
|
|
100
|
+
? { blocks: partialDownload.blocks.length, pendingDataColumns: partialDownload.pendingDataColumns.join(" ") }
|
|
101
|
+
: { blocks: null, pendingDataColumns: null }),
|
|
102
|
+
dataColumnIdentifiers: dataColumnsByRootIdentifiers
|
|
103
|
+
.map((id) => `${id.blockRoot}: ${id.columns.join(" ")}`)
|
|
104
|
+
.join(" "),
|
|
105
|
+
peerClient,
|
|
106
|
+
});
|
|
107
|
+
if (dataColumnsByRootIdentifiers.length > 0) {
|
|
108
|
+
allDataColumnsSidecars = await network.sendDataColumnSidecarsByRoot(peerId, dataColumnsByRootIdentifiers);
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
if (partialDownload !== null) {
|
|
112
|
+
return partialDownload;
|
|
113
|
+
}
|
|
114
|
+
allDataColumnsSidecars = [];
|
|
115
|
+
}
|
|
116
|
+
// The last arg is to provide slot to which all blobs should be exausted in matching
|
|
117
|
+
// and here it should be infinity since all bobs should match
|
|
118
|
+
// TODO: should not call matchBlockWithDataColumns() because it's supposed for range sync
|
|
119
|
+
// in that function, peers should return all requested data columns, this function runs at gossip time
|
|
120
|
+
// and it should not expect that
|
|
121
|
+
const blockInputWithBlobs = matchBlockWithDataColumns(network, peerId, config, sampledColumns, columns, allBlocks, allDataColumnsSidecars, Infinity, BlockSource.byRoot, DataColumnsSource.byRoot, partialDownload, peerClient, SyncSourceByRoot, metrics, logger);
|
|
122
|
+
blockInputs = [...blockInputs, ...blockInputWithBlobs];
|
|
123
|
+
}
|
|
124
|
+
return {
|
|
125
|
+
blocks: blockInputs,
|
|
126
|
+
pendingDataColumns: pendingDataColumns && pendingDataColumns.length > 0 ? pendingDataColumns : null,
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
export async function unavailableBeaconBlobsByRoot(config, network, peerId, peerClient, unavailableBlockInput, opts) {
|
|
130
|
+
if (unavailableBlockInput.block !== null && unavailableBlockInput.type !== BlockInputType.dataPromise) {
|
|
131
|
+
return unavailableBlockInput;
|
|
132
|
+
}
|
|
133
|
+
// resolve the block if thats unavailable
|
|
134
|
+
let block, cachedData;
|
|
135
|
+
if (unavailableBlockInput.block === null) {
|
|
136
|
+
const allBlocks = await network.sendBeaconBlocksByRoot(peerId, [fromHex(unavailableBlockInput.blockRootHex)]);
|
|
137
|
+
block = allBlocks[0].data;
|
|
138
|
+
cachedData = unavailableBlockInput.cachedData;
|
|
139
|
+
unavailableBlockInput = getBlockInput.dataPromise(config, block, BlockSource.byRoot, cachedData);
|
|
140
|
+
}
|
|
141
|
+
else {
|
|
142
|
+
({ block, cachedData } = unavailableBlockInput);
|
|
143
|
+
}
|
|
144
|
+
const forkSeq = config.getForkSeq(block.message.slot);
|
|
145
|
+
if (forkSeq < ForkSeq.fulu) {
|
|
146
|
+
return unavailableBeaconBlobsByRootPreFulu(config, network, peerId, unavailableBlockInput, block, cachedData, opts);
|
|
147
|
+
}
|
|
148
|
+
return unavailableBeaconBlobsByRootPostFulu(config, network, peerId, peerClient, unavailableBlockInput, block, cachedData, {
|
|
149
|
+
metrics: opts.metrics,
|
|
150
|
+
executionEngine: opts.executionEngine,
|
|
151
|
+
emitter: opts.emitter,
|
|
152
|
+
logger: opts.logger,
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
export async function unavailableBeaconBlobsByRootPreFulu(config, network, peerId, unavailableBlockInput, block, cachedData, opts) {
|
|
156
|
+
const { executionEngine, metrics, emitter, engineGetBlobsCache, blockInputsRetryTrackerCache } = opts;
|
|
157
|
+
if (unavailableBlockInput.block !== null && unavailableBlockInput.type !== BlockInputType.dataPromise) {
|
|
158
|
+
return unavailableBlockInput;
|
|
159
|
+
}
|
|
160
|
+
// resolve missing blobs
|
|
161
|
+
const slot = block.message.slot;
|
|
162
|
+
const fork = config.getForkName(slot);
|
|
163
|
+
const blockRoot = config.getForkTypes(slot).BeaconBlock.hashTreeRoot(block.message);
|
|
164
|
+
const blockRootHex = toHexString(blockRoot);
|
|
165
|
+
const blockTriedBefore = blockInputsRetryTrackerCache?.has(blockRootHex) === true;
|
|
166
|
+
if (blockTriedBefore) {
|
|
167
|
+
metrics?.blockInputFetchStats.totalDataPromiseBlockInputsReTriedBlobsPull.inc();
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
metrics?.blockInputFetchStats.totalDataPromiseBlockInputsTriedBlobsPull.inc();
|
|
171
|
+
blockInputsRetryTrackerCache?.add(blockRootHex);
|
|
172
|
+
}
|
|
173
|
+
const blobKzgCommitmentsLen = block.message.body.blobKzgCommitments.length;
|
|
174
|
+
const signedBlockHeader = signedBlockToSignedHeader(config, block);
|
|
175
|
+
const engineReqIdentifiers = [];
|
|
176
|
+
const networkReqIdentifiers = [];
|
|
177
|
+
let getBlobsUseful = false;
|
|
178
|
+
for (let index = 0; index < blobKzgCommitmentsLen; index++) {
|
|
179
|
+
if (cachedData.blobsCache.has(index) === false) {
|
|
180
|
+
const kzgCommitment = block.message.body.blobKzgCommitments[index];
|
|
181
|
+
const versionedHash = kzgCommitmentToVersionedHash(kzgCommitment);
|
|
182
|
+
// check if the getblobs cache has the data if block not been queried before
|
|
183
|
+
if (engineGetBlobsCache?.has(toHexString(versionedHash)) === true && !blockTriedBefore) {
|
|
184
|
+
const catchedBlobAndProof = engineGetBlobsCache.get(toHexString(versionedHash)) ?? null;
|
|
185
|
+
if (catchedBlobAndProof === null) {
|
|
186
|
+
metrics?.blockInputFetchStats.dataPromiseBlobsFoundInGetBlobsCacheNull.inc();
|
|
187
|
+
networkReqIdentifiers.push({ blockRoot, index });
|
|
188
|
+
}
|
|
189
|
+
else {
|
|
190
|
+
metrics?.blockInputFetchStats.dataPromiseBlobsFoundInGetBlobsCacheNotNull.inc();
|
|
191
|
+
// compute TODO: also add inclusion proof cache
|
|
192
|
+
const { blob, proof: kzgProof } = catchedBlobAndProof;
|
|
193
|
+
const kzgCommitmentInclusionProof = computeInclusionProof(fork, block.message.body, index);
|
|
194
|
+
const blobSidecar = { index, blob, kzgCommitment, kzgProof, signedBlockHeader, kzgCommitmentInclusionProof };
|
|
195
|
+
cachedData.blobsCache.set(blobSidecar.index, blobSidecar);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
else if (blockTriedBefore) {
|
|
199
|
+
// only retry it from network
|
|
200
|
+
networkReqIdentifiers.push({ blockRoot, index });
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
// see if we can pull from EL
|
|
204
|
+
metrics?.blockInputFetchStats.dataPromiseBlobsNotAvailableInGetBlobsCache.inc();
|
|
205
|
+
engineReqIdentifiers.push({ blockRoot, index, versionedHash, kzgCommitment });
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
else {
|
|
209
|
+
metrics?.blockInputFetchStats.dataPromiseBlobsAlreadyAvailable.inc();
|
|
210
|
+
}
|
|
211
|
+
}
|
|
212
|
+
if (engineReqIdentifiers.length > 0) {
|
|
213
|
+
metrics?.blockInputFetchStats.totalDataPromiseBlockInputsTriedGetBlobs.inc();
|
|
214
|
+
}
|
|
215
|
+
const versionedHashes = engineReqIdentifiers.map((bi) => bi.versionedHash);
|
|
216
|
+
metrics?.blockInputFetchStats.dataPromiseBlobsEngineGetBlobsApiRequests.inc(versionedHashes.length);
|
|
217
|
+
const blobAndProofs = await executionEngine.getBlobs(ForkName.deneb, versionedHashes).catch((_e) => {
|
|
218
|
+
metrics?.blockInputFetchStats.dataPromiseBlobsEngineApiGetBlobsErroredNull.inc(versionedHashes.length);
|
|
219
|
+
return versionedHashes.map((_vh) => null);
|
|
220
|
+
});
|
|
221
|
+
for (let j = 0; j < versionedHashes.length; j++) {
|
|
222
|
+
const blobAndProof = blobAndProofs[j] ?? null;
|
|
223
|
+
const versionedHash = versionedHashes[j];
|
|
224
|
+
// save to cache for future reference
|
|
225
|
+
engineGetBlobsCache?.set(toHexString(versionedHash), blobAndProof);
|
|
226
|
+
if (blobAndProof !== null) {
|
|
227
|
+
metrics?.blockInputFetchStats.dataPromiseBlobsEngineGetBlobsApiNotNull.inc();
|
|
228
|
+
// if we already got it by now, save the compute
|
|
229
|
+
if (cachedData.blobsCache.has(engineReqIdentifiers[j].index) === false) {
|
|
230
|
+
metrics?.blockInputFetchStats.dataPromiseBlobsEngineApiGetBlobsUseful.inc();
|
|
231
|
+
getBlobsUseful = true;
|
|
232
|
+
const { blob, proof: kzgProof } = blobAndProof;
|
|
233
|
+
const { kzgCommitment, index } = engineReqIdentifiers[j];
|
|
234
|
+
const kzgCommitmentInclusionProof = computeInclusionProof(fork, block.message.body, index);
|
|
235
|
+
const blobSidecar = { index, blob, kzgCommitment, kzgProof, signedBlockHeader, kzgCommitmentInclusionProof };
|
|
236
|
+
// add them in cache so that its reflected in all the blockInputs that carry this
|
|
237
|
+
// for e.g. a blockInput that might be awaiting blobs promise fullfillment in
|
|
238
|
+
// verifyBlocksDataAvailability
|
|
239
|
+
cachedData.blobsCache.set(blobSidecar.index, blobSidecar);
|
|
240
|
+
if (emitter.listenerCount(routes.events.EventType.blobSidecar)) {
|
|
241
|
+
emitter.emit(routes.events.EventType.blobSidecar, {
|
|
242
|
+
blockRoot: blockRootHex,
|
|
243
|
+
slot,
|
|
244
|
+
index,
|
|
245
|
+
kzgCommitment: toHex(kzgCommitment),
|
|
246
|
+
versionedHash: toHex(versionedHash),
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
else {
|
|
251
|
+
metrics?.blockInputFetchStats.dataPromiseBlobsDelayedGossipAvailable.inc();
|
|
252
|
+
metrics?.blockInputFetchStats.dataPromiseBlobsDelayedGossipAvailableSavedGetBlobsCompute.inc();
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
// may be blobsidecar arrived in the timespan of making the request
|
|
256
|
+
else {
|
|
257
|
+
metrics?.blockInputFetchStats.dataPromiseBlobsEngineGetBlobsApiNull.inc();
|
|
258
|
+
if (cachedData.blobsCache.has(engineReqIdentifiers[j].index) === false) {
|
|
259
|
+
const { blockRoot, index } = engineReqIdentifiers[j];
|
|
260
|
+
networkReqIdentifiers.push({ blockRoot, index });
|
|
261
|
+
}
|
|
262
|
+
else {
|
|
263
|
+
metrics?.blockInputFetchStats.dataPromiseBlobsDelayedGossipAvailable.inc();
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
if (engineGetBlobsCache !== undefined) {
|
|
268
|
+
// prune out engineGetBlobsCache
|
|
269
|
+
let pruneLength = Math.max(0, engineGetBlobsCache?.size - MAX_ENGINE_GETBLOBS_CACHE);
|
|
270
|
+
for (const key of engineGetBlobsCache.keys()) {
|
|
271
|
+
if (pruneLength <= 0)
|
|
272
|
+
break;
|
|
273
|
+
engineGetBlobsCache.delete(key);
|
|
274
|
+
pruneLength--;
|
|
275
|
+
metrics?.blockInputFetchStats.getBlobsCachePruned.inc();
|
|
276
|
+
}
|
|
277
|
+
metrics?.blockInputFetchStats.getBlobsCacheSize.set(engineGetBlobsCache.size);
|
|
278
|
+
}
|
|
279
|
+
if (blockInputsRetryTrackerCache !== undefined) {
|
|
280
|
+
// prune out engineGetBlobsCache
|
|
281
|
+
let pruneLength = Math.max(0, blockInputsRetryTrackerCache?.size - MAX_UNAVAILABLE_RETRY_CACHE);
|
|
282
|
+
for (const key of blockInputsRetryTrackerCache.keys()) {
|
|
283
|
+
if (pruneLength <= 0)
|
|
284
|
+
break;
|
|
285
|
+
blockInputsRetryTrackerCache.delete(key);
|
|
286
|
+
pruneLength--;
|
|
287
|
+
metrics?.blockInputFetchStats.dataPromiseBlockInputRetryTrackerCachePruned.inc();
|
|
288
|
+
}
|
|
289
|
+
metrics?.blockInputFetchStats.dataPromiseBlockInputRetryTrackerCacheSize.set(blockInputsRetryTrackerCache.size);
|
|
290
|
+
}
|
|
291
|
+
// if clients expect sorted identifiers
|
|
292
|
+
networkReqIdentifiers.sort((a, b) => a.index - b.index);
|
|
293
|
+
let networkResBlobSidecars;
|
|
294
|
+
metrics?.blockInputFetchStats.dataPromiseBlobsFinallyQueriedFromNetwork.inc(networkReqIdentifiers.length);
|
|
295
|
+
if (blockTriedBefore) {
|
|
296
|
+
metrics?.blockInputFetchStats.dataPromiseBlobsRetriedFromNetwork.inc(networkReqIdentifiers.length);
|
|
297
|
+
}
|
|
298
|
+
if (networkReqIdentifiers.length > 0) {
|
|
299
|
+
networkResBlobSidecars = await network.sendBlobSidecarsByRoot(peerId, networkReqIdentifiers);
|
|
300
|
+
metrics?.blockInputFetchStats.dataPromiseBlobsFinallyAvailableFromNetwork.inc(networkResBlobSidecars.length);
|
|
301
|
+
if (blockTriedBefore) {
|
|
302
|
+
metrics?.blockInputFetchStats.dataPromiseBlobsRetriedAvailableFromNetwork.inc(networkResBlobSidecars.length);
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
else {
|
|
306
|
+
networkResBlobSidecars = [];
|
|
307
|
+
}
|
|
308
|
+
// add them in cache so that its reflected in all the blockInputs that carry this
|
|
309
|
+
// for e.g. a blockInput that might be awaiting blobs promise fullfillment in
|
|
310
|
+
// verifyBlocksDataAvailability
|
|
311
|
+
for (const blobSidecar of networkResBlobSidecars) {
|
|
312
|
+
cachedData.blobsCache.set(blobSidecar.index, blobSidecar);
|
|
313
|
+
if (emitter.listenerCount(routes.events.EventType.blobSidecar)) {
|
|
314
|
+
emitter.emit(routes.events.EventType.blobSidecar, {
|
|
315
|
+
blockRoot: blockRootHex,
|
|
316
|
+
slot,
|
|
317
|
+
index: blobSidecar.index,
|
|
318
|
+
kzgCommitment: toHex(blobSidecar.kzgCommitment),
|
|
319
|
+
versionedHash: toHex(kzgCommitmentToVersionedHash(blobSidecar.kzgCommitment)),
|
|
320
|
+
});
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
// check and see if all blobs are now available and in that case resolve availability
|
|
324
|
+
// if not this will error and the leftover blobs will be tried from another peer
|
|
325
|
+
const allBlobs = getBlockInputBlobs(cachedData.blobsCache);
|
|
326
|
+
const { blobs } = allBlobs;
|
|
327
|
+
if (blobs.length !== blobKzgCommitmentsLen) {
|
|
328
|
+
throw Error(`Not all blobs fetched missingBlobs=${blobKzgCommitmentsLen - blobs.length}`);
|
|
329
|
+
}
|
|
330
|
+
const blockData = { fork: cachedData.fork, ...allBlobs, blobsSource: BlobsSource.byRoot };
|
|
331
|
+
cachedData.resolveAvailability(blockData);
|
|
332
|
+
metrics?.syncUnknownBlock.resolveAvailabilitySource.inc({ source: BlockInputAvailabilitySource.UNKNOWN_SYNC });
|
|
333
|
+
metrics?.blockInputFetchStats.totalDataPromiseBlockInputsResolvedAvailable.inc();
|
|
334
|
+
if (getBlobsUseful) {
|
|
335
|
+
metrics?.blockInputFetchStats.totalDataPromiseBlockInputsAvailableUsingGetBlobs.inc();
|
|
336
|
+
if (networkReqIdentifiers.length === 0) {
|
|
337
|
+
metrics?.blockInputFetchStats.totalDataPromiseBlockInputsAvailableFromGetBlobs.inc();
|
|
338
|
+
}
|
|
339
|
+
}
|
|
340
|
+
if (networkResBlobSidecars.length > 0) {
|
|
341
|
+
metrics?.blockInputFetchStats.totalDataPromiseBlockInputsFinallyAvailableFromNetworkReqResp.inc();
|
|
342
|
+
}
|
|
343
|
+
if (blockTriedBefore) {
|
|
344
|
+
metrics?.blockInputFetchStats.totalDataPromiseBlockInputsRetriedAvailableFromNetwork.inc();
|
|
345
|
+
}
|
|
346
|
+
return getBlockInput.availableData(config, block, BlockSource.byRoot, blockData);
|
|
347
|
+
}
|
|
348
|
+
/**
|
|
349
|
+
* Download more columns for a BlockInput
|
|
350
|
+
* - unavailableBlockInput should have block, but not enough blobs (deneb) or data columns (fulu)
|
|
351
|
+
*
|
|
352
|
+
* This function may return data promise, and consumer should continue with fetching more blobs or columns from other peers
|
|
353
|
+
* see UnknownBlockSync.fetchUnavailableBlockInput()
|
|
354
|
+
*/
|
|
355
|
+
export async function unavailableBeaconBlobsByRootPostFulu(config, network, peerId, peerClient, unavailableBlockInput, block, cachedData, opts) {
|
|
356
|
+
if (unavailableBlockInput.block !== null && unavailableBlockInput.type !== BlockInputType.dataPromise) {
|
|
357
|
+
return unavailableBlockInput;
|
|
358
|
+
}
|
|
359
|
+
if (cachedData.fork === ForkName.deneb || cachedData.fork === ForkName.electra) {
|
|
360
|
+
const { blobsCache, resolveAvailability } = cachedData;
|
|
361
|
+
// resolve missing blobs
|
|
362
|
+
const blobIdentifiers = [];
|
|
363
|
+
const slot = block.message.slot;
|
|
364
|
+
const blockRoot = config.getForkTypes(slot).BeaconBlock.hashTreeRoot(block.message);
|
|
365
|
+
const blobKzgCommitmentsLen = block.message.body.blobKzgCommitments.length;
|
|
366
|
+
for (let index = 0; index < blobKzgCommitmentsLen; index++) {
|
|
367
|
+
if (blobsCache.has(index) === false)
|
|
368
|
+
blobIdentifiers.push({ blockRoot, index });
|
|
369
|
+
}
|
|
370
|
+
let allBlobSidecars;
|
|
371
|
+
if (blobIdentifiers.length > 0) {
|
|
372
|
+
allBlobSidecars = await network.sendBlobSidecarsByRoot(peerId, blobIdentifiers);
|
|
373
|
+
}
|
|
374
|
+
else {
|
|
375
|
+
allBlobSidecars = [];
|
|
376
|
+
}
|
|
377
|
+
// add them in cache so that its reflected in all the blockInputs that carry this
|
|
378
|
+
// for e.g. a blockInput that might be awaiting blobs promise fullfillment in
|
|
379
|
+
// verifyBlocksDataAvailability
|
|
380
|
+
for (const blobSidecar of allBlobSidecars) {
|
|
381
|
+
blobsCache.set(blobSidecar.index, blobSidecar);
|
|
382
|
+
}
|
|
383
|
+
// check and see if all blobs are now available and in that case resolve availability
|
|
384
|
+
// if not this will error and the leftover blobs will be tried from another peer
|
|
385
|
+
const allBlobs = getBlockInputBlobs(blobsCache);
|
|
386
|
+
const { blobs } = allBlobs;
|
|
387
|
+
if (blobs.length !== blobKzgCommitmentsLen) {
|
|
388
|
+
throw Error(`Not all blobs fetched missingBlobs=${blobKzgCommitmentsLen - blobs.length}`);
|
|
389
|
+
}
|
|
390
|
+
const blockData = { fork: cachedData.fork, ...allBlobs, blobsSource: BlobsSource.byRoot };
|
|
391
|
+
resolveAvailability(blockData);
|
|
392
|
+
opts.metrics?.syncUnknownBlock.resolveAvailabilitySource.inc({ source: BlockInputAvailabilitySource.UNKNOWN_SYNC });
|
|
393
|
+
return getBlockInput.availableData(config, block, BlockSource.byRoot, blockData);
|
|
394
|
+
}
|
|
395
|
+
// fulu fork
|
|
396
|
+
const { dataColumnsCache, resolveAvailability } = cachedData;
|
|
397
|
+
// resolve missing blobs
|
|
398
|
+
const slot = block.message.slot;
|
|
399
|
+
const blockRoot = config.getForkTypes(slot).BeaconBlock.hashTreeRoot(block.message);
|
|
400
|
+
const blobKzgCommitments = block.message.body.blobKzgCommitments;
|
|
401
|
+
if (blobKzgCommitments.length === 0) {
|
|
402
|
+
const blockData = {
|
|
403
|
+
fork: cachedData.fork,
|
|
404
|
+
dataColumns: [],
|
|
405
|
+
dataColumnsBytes: [],
|
|
406
|
+
dataColumnsSource: DataColumnsSource.gossip,
|
|
407
|
+
};
|
|
408
|
+
resolveAvailability(blockData);
|
|
409
|
+
opts.metrics?.syncUnknownBlock.resolveAvailabilitySource.inc({ source: BlockInputAvailabilitySource.UNKNOWN_SYNC });
|
|
410
|
+
return getBlockInput.availableData(config, block, BlockSource.byRoot, blockData);
|
|
411
|
+
}
|
|
412
|
+
const sampledColumns = network.custodyConfig.sampledColumns;
|
|
413
|
+
let neededColumns = sampledColumns.reduce((acc, elem) => {
|
|
414
|
+
if (dataColumnsCache.get(elem) === undefined) {
|
|
415
|
+
acc.push(elem);
|
|
416
|
+
}
|
|
417
|
+
return acc;
|
|
418
|
+
}, []);
|
|
419
|
+
let resolveBlockInput = null;
|
|
420
|
+
const blockInputPromise = new Promise((resolveCB) => {
|
|
421
|
+
resolveBlockInput = resolveCB;
|
|
422
|
+
});
|
|
423
|
+
if (resolveBlockInput === null) {
|
|
424
|
+
throw Error("Promise Constructor was not executed immediately");
|
|
425
|
+
}
|
|
426
|
+
const gotColumnsFromExecution = await getDataColumnsFromExecution(config, network.custodyConfig, opts.executionEngine, opts.emitter, {
|
|
427
|
+
fork: config.getForkName(block.message.slot),
|
|
428
|
+
block: block,
|
|
429
|
+
cachedData: cachedData,
|
|
430
|
+
blockInputPromise,
|
|
431
|
+
resolveBlockInput,
|
|
432
|
+
}, opts.metrics ?? null);
|
|
433
|
+
if (!gotColumnsFromExecution) {
|
|
434
|
+
const { custodyGroups: peerColumns } = network.getConnectedPeerSyncMeta(peerId);
|
|
435
|
+
// get match
|
|
436
|
+
const columns = peerColumns.reduce((acc, elem) => {
|
|
437
|
+
if (neededColumns.includes(elem)) {
|
|
438
|
+
acc.push(elem);
|
|
439
|
+
}
|
|
440
|
+
return acc;
|
|
441
|
+
}, []);
|
|
442
|
+
// this peer can't help fetching columns for this block
|
|
443
|
+
if (unavailableBlockInput.block !== null && columns.length === 0 && neededColumns.length > 0) {
|
|
444
|
+
return unavailableBlockInput;
|
|
445
|
+
}
|
|
446
|
+
let allDataColumnSidecars;
|
|
447
|
+
if (columns.length > 0) {
|
|
448
|
+
allDataColumnSidecars = await network.sendDataColumnSidecarsByRoot(peerId, [{ blockRoot, columns }]);
|
|
449
|
+
opts.metrics?.dataColumns.bySource.inc({ source: DataColumnsSource.byRoot }, allDataColumnSidecars.length);
|
|
450
|
+
}
|
|
451
|
+
else {
|
|
452
|
+
allDataColumnSidecars = [];
|
|
453
|
+
}
|
|
454
|
+
const logCtx = {
|
|
455
|
+
slot: block.message.slot,
|
|
456
|
+
requestedColumns: columns.join(","),
|
|
457
|
+
respondedColumns: allDataColumnSidecars.map((dcs) => dcs.index).join(","),
|
|
458
|
+
peerClient,
|
|
459
|
+
};
|
|
460
|
+
opts.logger?.verbose("unavailableBeaconBlobsByRootPostFulu: Requested data columns from peer", logCtx);
|
|
461
|
+
// the same to matchBlockWithDataColumns() without expecting requested data columns = responded data columns
|
|
462
|
+
// because at gossip time peer may not have enough column to return
|
|
463
|
+
for (const dataColumnSidecar of allDataColumnSidecars) {
|
|
464
|
+
dataColumnsCache.set(dataColumnSidecar.index, {
|
|
465
|
+
dataColumn: dataColumnSidecar,
|
|
466
|
+
// TODO: req/resp should return bytes here
|
|
467
|
+
dataColumnBytes: null,
|
|
468
|
+
});
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
// reevaluate needeColumns and resolve availability if possible
|
|
472
|
+
neededColumns = sampledColumns.reduce((acc, elem) => {
|
|
473
|
+
if (dataColumnsCache.get(elem) === undefined) {
|
|
474
|
+
acc.push(elem);
|
|
475
|
+
}
|
|
476
|
+
return acc;
|
|
477
|
+
}, []);
|
|
478
|
+
const logCtx = {
|
|
479
|
+
slot: block.message.slot,
|
|
480
|
+
neededColumns: neededColumns.join(","),
|
|
481
|
+
sampledColumns: sampledColumns.join(","),
|
|
482
|
+
};
|
|
483
|
+
if (neededColumns.length === 0) {
|
|
484
|
+
const { dataColumns, dataColumnsBytes } = getBlockInputDataColumns(cachedData.dataColumnsCache, sampledColumns);
|
|
485
|
+
// don't forget to resolve availability as the block may be stuck in availability wait
|
|
486
|
+
const blockData = {
|
|
487
|
+
fork: config.getForkName(block.message.slot),
|
|
488
|
+
dataColumns,
|
|
489
|
+
dataColumnsBytes,
|
|
490
|
+
dataColumnsSource: DataColumnsSource.byRoot,
|
|
491
|
+
};
|
|
492
|
+
resolveAvailability(blockData);
|
|
493
|
+
opts.logger?.verbose("unavailableBeaconBlobsByRootPostFulu: Resolved availability for block with all data columns", logCtx);
|
|
494
|
+
return getBlockInput.availableData(config, block, BlockSource.byRoot, blockData);
|
|
495
|
+
}
|
|
496
|
+
opts.logger?.verbose("unavailableBeaconBlobsByRootPostFulu: Still missing data columns for block", logCtx);
|
|
497
|
+
return getBlockInput.dataPromise(config, block, BlockSource.byRoot, cachedData);
|
|
498
|
+
}
|
|
499
|
+
//# sourceMappingURL=beaconBlocksMaybeBlobsByRoot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"beaconBlocksMaybeBlobsByRoot.js","sourceRoot":"","sources":["../../../src/network/reqresp/beaconBlocksMaybeBlobsByRoot.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataColumnSidecarsByRoot.js","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/dataColumnSidecarsByRoot.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,kBAAkB,EAAC,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"dataColumnSidecarsByRoot.js","sourceRoot":"","sources":["../../../../src/network/reqresp/handlers/dataColumnSidecarsByRoot.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,kBAAkB,EAAC,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAC,SAAS,EAAC,MAAM,iBAAiB,CAAC;AAI1C,OAAO,EACL,iCAAiC,EACjC,4BAA4B,GAC7B,MAAM,0CAA0C,CAAC;AAGlD,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,0BAA0B,CAC/C,WAA4C,EAC5C,KAAmB,EACnB,EAAa;IAEb,mHAAmH;IACnH,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC;IAC9C,MAAM,mBAAmB,GAAG,IAAI,CAAC,GAAG,CAClC,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,4CAA4C,EACxE,KAAK,CAAC,MAAM,CAAC,eAAe,CAC7B,CAAC;IAEF,KAAK,MAAM,2BAA2B,IAAI,WAAW,EAAE,CAAC;QACtD,MAAM,EAAC,SAAS,EAAE,OAAO,EAAE,gBAAgB,EAAC,GAAG,2BAA2B,CAAC;QAC3E,MAAM,gBAAgB,GAAG,4BAA4B,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;QAC/E,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClC,OAAO;QACT,CAAC;QAED,MAAM,YAAY,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QACzD,qGAAqG;QACrG,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,YAAY,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAEjF,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YAClB,4BAA4B;YAC5B,SAAS;QACX,CAAC;QAED,MAAM,cAAc,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QAEhD,8EAA8E;QAC9E,mHAAmH;QACnH,4FAA4F;QAC5F,0HAA0H;QAC1H,IAAI,cAAc,GAAG,mBAAmB,EAAE,CAAC;YACzC,SAAS;QACX,CAAC;QAED,MAAM,WAAW,GAAG,KAAK;YACvB,CAAC,CAAC,kDAAkD;gBAClD,MAAM,EAAE,CAAC,iBAAiB,CAAC,aAAa,CAAC,SAAS,EAAE,gBAAgB,CAAC;YACvE,CAAC,CAAC,qDAAqD;gBACrD,MAAM,EAAE,CAAC,wBAAwB,CAAC,aAAa,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;QAE5E,MAAM,wBAAwB,GAAkB,EAAE,CAAC;QACnD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC5C,MAAM,eAAe,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YACvC,IAAI,eAAe,EAAE,CAAC;gBACpB,MAAM;oBACJ,IAAI,EAAE,eAAe;oBACrB,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,sBAAsB,CAAC,cAAc,CAAC;iBAC9D,CAAC;YACJ,CAAC;YAED,oEAAoE;YACpE,wDAAwD;iBACnD,CAAC;gBACJ,wBAAwB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;QAED,IAAI,wBAAwB,CAAC,MAAM,EAAE,CAAC;YACpC,MAAM,iCAAiC,CAAC;gBACtC,KAAK;gBACL,EAAE;gBACF,OAAO,EAAE,KAAK,CAAC,OAAO;gBACtB,IAAI;gBACJ,SAAS;gBACT,wBAAwB;gBACxB,gBAAgB;gBAChB,gBAAgB;aACjB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/network/reqresp/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAC;AAC/B,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/network/reqresp/index.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oCAAoC,CAAC;AACnD,cAAc,mCAAmC,CAAC"}
|
|
@@ -53,12 +53,12 @@ export const rateLimitQuotas = (fork, config) => ({
|
|
|
53
53
|
[ReqRespMethod.DataColumnSidecarsByRange]: {
|
|
54
54
|
// Rationale: MAX_REQUEST_BLOCKS_DENEB * NUMBER_OF_COLUMNS
|
|
55
55
|
byPeer: { quota: config.MAX_REQUEST_DATA_COLUMN_SIDECARS, quotaTimeMs: 10_000 },
|
|
56
|
-
getRequestCount: getRequestCountFn(fork, config, ReqRespMethod.DataColumnSidecarsByRange, (req) => req.count
|
|
56
|
+
getRequestCount: getRequestCountFn(fork, config, ReqRespMethod.DataColumnSidecarsByRange, (req) => req.count),
|
|
57
57
|
},
|
|
58
58
|
[ReqRespMethod.DataColumnSidecarsByRoot]: {
|
|
59
59
|
// Rationale: quota of BeaconBlocksByRoot * NUMBER_OF_COLUMNS
|
|
60
60
|
byPeer: { quota: config.MAX_REQUEST_DATA_COLUMN_SIDECARS, quotaTimeMs: 10_000 },
|
|
61
|
-
getRequestCount: getRequestCountFn(fork, config, ReqRespMethod.DataColumnSidecarsByRoot, (req) => req.
|
|
61
|
+
getRequestCount: getRequestCountFn(fork, config, ReqRespMethod.DataColumnSidecarsByRoot, (req) => req.length),
|
|
62
62
|
},
|
|
63
63
|
[ReqRespMethod.LightClientBootstrap]: {
|
|
64
64
|
// As similar in the nature of `Status` protocol so we use the same rate limits.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rateLimit.js","sourceRoot":"","sources":["../../../src/network/reqresp/rateLimit.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"rateLimit.js","sourceRoot":"","sources":["../../../src/network/reqresp/rateLimit.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataColumnResponseValidation.js","sourceRoot":"","sources":["../../../../src/network/reqresp/utils/dataColumnResponseValidation.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,UAAU,EAAE,aAAa,EAAC,MAAM,mBAAmB,CAAC;AAE5D,OAAO,EAAC,WAAW,EAAE,kBAAkB,EAAE,SAAS,EAAC,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"dataColumnResponseValidation.js","sourceRoot":"","sources":["../../../../src/network/reqresp/utils/dataColumnResponseValidation.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"statusCache.js","sourceRoot":"","sources":["../../src/network/statusCache.ts"],"names":[],"mappings":"AAMA,MAAM,OAAO,gBAAgB;
|
|
1
|
+
{"version":3,"file":"statusCache.js","sourceRoot":"","sources":["../../src/network/statusCache.ts"],"names":[],"mappings":"AAMA,MAAM,OAAO,gBAAgB;IAC3B,YAAoB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAAG,CAAC;IAEtC,GAAG;QACD,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,MAAM,CAAC,WAAmB;QACxB,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;IAC5B,CAAC;CACF"}
|