@lodestar/beacon-node 1.51.0-dev.ec493d509d → 1.51.0-dev.efd5633468
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.d.ts.map +1 -1
- package/lib/api/impl/beacon/blocks/index.js +36 -88
- package/lib/api/impl/beacon/blocks/index.js.map +1 -1
- package/lib/api/impl/beacon/pool/index.d.ts.map +1 -1
- package/lib/api/impl/beacon/pool/index.js +22 -2
- package/lib/api/impl/beacon/pool/index.js.map +1 -1
- package/lib/api/impl/beacon/state/utils.d.ts +1 -1
- package/lib/api/impl/beacon/state/utils.d.ts.map +1 -1
- package/lib/api/impl/validator/index.d.ts +6 -0
- package/lib/api/impl/validator/index.d.ts.map +1 -1
- package/lib/api/impl/validator/index.js +42 -26
- package/lib/api/impl/validator/index.js.map +1 -1
- package/lib/chain/GetBlobsTracker.d.ts +13 -2
- package/lib/chain/GetBlobsTracker.d.ts.map +1 -1
- package/lib/chain/GetBlobsTracker.js +69 -35
- package/lib/chain/GetBlobsTracker.js.map +1 -1
- package/lib/chain/archiveStore/archiveStore.d.ts.map +1 -1
- package/lib/chain/archiveStore/archiveStore.js +4 -4
- package/lib/chain/archiveStore/archiveStore.js.map +1 -1
- package/lib/chain/archiveStore/utils/archiveBlocks.d.ts +4 -0
- package/lib/chain/archiveStore/utils/archiveBlocks.d.ts.map +1 -1
- package/lib/chain/archiveStore/utils/archiveBlocks.js +7 -1
- package/lib/chain/archiveStore/utils/archiveBlocks.js.map +1 -1
- package/lib/chain/archiveStore/utils/pruneHistory.d.ts +9 -2
- package/lib/chain/archiveStore/utils/pruneHistory.d.ts.map +1 -1
- package/lib/chain/archiveStore/utils/pruneHistory.js +12 -4
- package/lib/chain/archiveStore/utils/pruneHistory.js.map +1 -1
- package/lib/chain/blocks/blockInput/blockInput.d.ts +11 -56
- package/lib/chain/blocks/blockInput/blockInput.d.ts.map +1 -1
- package/lib/chain/blocks/blockInput/blockInput.js +5 -241
- package/lib/chain/blocks/blockInput/blockInput.js.map +1 -1
- package/lib/chain/blocks/blockInput/errors.d.ts +2 -4
- package/lib/chain/blocks/blockInput/errors.d.ts.map +1 -1
- package/lib/chain/blocks/blockInput/errors.js.map +1 -1
- package/lib/chain/blocks/blockInput/types.d.ts +2 -18
- package/lib/chain/blocks/blockInput/types.d.ts.map +1 -1
- package/lib/chain/blocks/blockInput/types.js +0 -1
- package/lib/chain/blocks/blockInput/types.js.map +1 -1
- package/lib/chain/blocks/importBlock.d.ts.map +1 -1
- package/lib/chain/blocks/importBlock.js +36 -53
- package/lib/chain/blocks/importBlock.js.map +1 -1
- package/lib/chain/blocks/importExecutionPayload.d.ts +10 -11
- package/lib/chain/blocks/importExecutionPayload.d.ts.map +1 -1
- package/lib/chain/blocks/importExecutionPayload.js +32 -18
- package/lib/chain/blocks/importExecutionPayload.js.map +1 -1
- package/lib/chain/blocks/index.d.ts.map +1 -1
- package/lib/chain/blocks/index.js +4 -4
- package/lib/chain/blocks/index.js.map +1 -1
- package/lib/chain/blocks/payloadEnvelopeProcessor.d.ts +12 -9
- package/lib/chain/blocks/payloadEnvelopeProcessor.d.ts.map +1 -1
- package/lib/chain/blocks/payloadEnvelopeProcessor.js +24 -19
- package/lib/chain/blocks/payloadEnvelopeProcessor.js.map +1 -1
- package/lib/chain/blocks/types.d.ts +4 -20
- package/lib/chain/blocks/types.d.ts.map +1 -1
- package/lib/chain/blocks/types.js +0 -24
- package/lib/chain/blocks/types.js.map +1 -1
- package/lib/chain/blocks/verifyBlock.d.ts.map +1 -1
- package/lib/chain/blocks/verifyBlock.js +18 -7
- package/lib/chain/blocks/verifyBlock.js.map +1 -1
- package/lib/chain/blocks/verifyBlocksDataAvailability.d.ts.map +1 -1
- package/lib/chain/blocks/verifyBlocksDataAvailability.js +14 -2
- package/lib/chain/blocks/verifyBlocksDataAvailability.js.map +1 -1
- package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts +1 -1
- package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts.map +1 -1
- package/lib/chain/blocks/verifyBlocksExecutionPayloads.js +7 -3
- package/lib/chain/blocks/verifyBlocksExecutionPayloads.js.map +1 -1
- package/lib/chain/blocks/verifyBlocksSanityChecks.d.ts.map +1 -1
- package/lib/chain/blocks/verifyBlocksSanityChecks.js +4 -0
- package/lib/chain/blocks/verifyBlocksSanityChecks.js.map +1 -1
- package/lib/chain/blocks/verifyBlocksSignatures.d.ts.map +1 -1
- package/lib/chain/blocks/verifyBlocksSignatures.js +10 -5
- package/lib/chain/blocks/verifyBlocksSignatures.js.map +1 -1
- package/lib/chain/blocks/verifyPayloadsDataAvailability.d.ts +3 -3
- package/lib/chain/blocks/verifyPayloadsDataAvailability.d.ts.map +1 -1
- package/lib/chain/blocks/verifyPayloadsDataAvailability.js +11 -6
- package/lib/chain/blocks/verifyPayloadsDataAvailability.js.map +1 -1
- package/lib/chain/blocks/writeBlockInputToDb.d.ts +0 -2
- package/lib/chain/blocks/writeBlockInputToDb.d.ts.map +1 -1
- package/lib/chain/blocks/writeBlockInputToDb.js +6 -24
- package/lib/chain/blocks/writeBlockInputToDb.js.map +1 -1
- package/lib/chain/bls/interface.d.ts +2 -0
- package/lib/chain/bls/interface.d.ts.map +1 -1
- package/lib/chain/bls/multithread/index.d.ts +1 -1
- package/lib/chain/bls/multithread/index.d.ts.map +1 -1
- package/lib/chain/bls/multithread/index.js +50 -22
- package/lib/chain/bls/multithread/index.js.map +1 -1
- package/lib/chain/bls/multithread/types.d.ts +1 -1
- package/lib/chain/bls/multithread/types.d.ts.map +1 -1
- package/lib/chain/bls/multithread/worker.js +1 -1
- package/lib/chain/bls/multithread/worker.js.map +1 -1
- package/lib/chain/bls/singleThread.js +1 -1
- package/lib/chain/bls/singleThread.js.map +1 -1
- package/lib/chain/bls/utils.js +1 -1
- package/lib/chain/bls/utils.js.map +1 -1
- package/lib/chain/chain.d.ts +25 -4
- package/lib/chain/chain.d.ts.map +1 -1
- package/lib/chain/chain.js +120 -39
- package/lib/chain/chain.js.map +1 -1
- package/lib/chain/emitter.d.ts +7 -7
- package/lib/chain/emitter.d.ts.map +1 -1
- package/lib/chain/emitter.js +5 -5
- package/lib/chain/emitter.js.map +1 -1
- package/lib/chain/errors/blockError.d.ts +1 -1
- package/lib/chain/errors/blockError.d.ts.map +1 -1
- package/lib/chain/errors/blockError.js +1 -1
- package/lib/chain/errors/blockError.js.map +1 -1
- package/lib/chain/errors/executionPayloadEnvelope.d.ts +7 -0
- package/lib/chain/errors/executionPayloadEnvelope.d.ts.map +1 -1
- package/lib/chain/errors/executionPayloadEnvelope.js +1 -0
- package/lib/chain/errors/executionPayloadEnvelope.js.map +1 -1
- package/lib/chain/errors/index.d.ts +0 -1
- package/lib/chain/errors/index.d.ts.map +1 -1
- package/lib/chain/errors/index.js +0 -1
- package/lib/chain/errors/index.js.map +1 -1
- package/lib/chain/forkChoice/index.d.ts +11 -1
- package/lib/chain/forkChoice/index.d.ts.map +1 -1
- package/lib/chain/forkChoice/index.js +11 -0
- package/lib/chain/forkChoice/index.js.map +1 -1
- package/lib/chain/forkChoiceExecutionEngine.d.ts +51 -0
- package/lib/chain/forkChoiceExecutionEngine.d.ts.map +1 -0
- package/lib/chain/forkChoiceExecutionEngine.js +117 -0
- package/lib/chain/forkChoiceExecutionEngine.js.map +1 -0
- package/lib/chain/interface.d.ts +9 -7
- package/lib/chain/interface.d.ts.map +1 -1
- package/lib/chain/interface.js.map +1 -1
- package/lib/chain/opPools/aggregatedAttestationPool.d.ts +17 -4
- package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +1 -1
- package/lib/chain/opPools/aggregatedAttestationPool.js +199 -46
- package/lib/chain/opPools/aggregatedAttestationPool.js.map +1 -1
- package/lib/chain/opPools/attestationPool.d.ts +1 -1
- package/lib/chain/opPools/attestationPool.d.ts.map +1 -1
- package/lib/chain/opPools/attestationPool.js +15 -4
- package/lib/chain/opPools/attestationPool.js.map +1 -1
- package/lib/chain/opPools/index.d.ts +1 -0
- package/lib/chain/opPools/index.d.ts.map +1 -1
- package/lib/chain/opPools/index.js +1 -0
- package/lib/chain/opPools/index.js.map +1 -1
- package/lib/chain/opPools/payloadAttestationPool.d.ts.map +1 -1
- package/lib/chain/opPools/payloadAttestationPool.js +17 -7
- package/lib/chain/opPools/payloadAttestationPool.js.map +1 -1
- package/lib/chain/opPools/singleAttestationPool.d.ts +77 -0
- package/lib/chain/opPools/singleAttestationPool.d.ts.map +1 -0
- package/lib/chain/opPools/singleAttestationPool.js +209 -0
- package/lib/chain/opPools/singleAttestationPool.js.map +1 -0
- package/lib/chain/opPools/syncCommitteeMessagePool.d.ts.map +1 -1
- package/lib/chain/opPools/syncCommitteeMessagePool.js +9 -3
- package/lib/chain/opPools/syncCommitteeMessagePool.js.map +1 -1
- package/lib/chain/opPools/syncContributionAndProofPool.d.ts.map +1 -1
- package/lib/chain/opPools/syncContributionAndProofPool.js +11 -3
- package/lib/chain/opPools/syncContributionAndProofPool.js.map +1 -1
- package/lib/chain/opPools/utils.d.ts +1 -1
- package/lib/chain/opPools/utils.d.ts.map +1 -1
- package/lib/chain/opPools/utils.js +1 -1
- package/lib/chain/opPools/utils.js.map +1 -1
- package/lib/chain/options.d.ts +5 -3
- package/lib/chain/options.d.ts.map +1 -1
- package/lib/chain/options.js +0 -1
- package/lib/chain/options.js.map +1 -1
- package/lib/chain/produceBlock/produceBlockBody.d.ts +3 -2
- package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
- package/lib/chain/produceBlock/produceBlockBody.js +3 -2
- package/lib/chain/produceBlock/produceBlockBody.js.map +1 -1
- package/lib/chain/proposerTracker.d.ts +31 -0
- package/lib/chain/proposerTracker.d.ts.map +1 -0
- package/lib/chain/proposerTracker.js +75 -0
- package/lib/chain/proposerTracker.js.map +1 -0
- package/lib/chain/regen/interface.d.ts +1 -1
- package/lib/chain/regen/interface.d.ts.map +1 -1
- package/lib/chain/regen/queued.d.ts +1 -1
- package/lib/chain/regen/queued.d.ts.map +1 -1
- package/lib/chain/regen/queued.js +5 -3
- package/lib/chain/regen/queued.js.map +1 -1
- package/lib/chain/seenCache/seenGossipBlockInput.d.ts +7 -14
- package/lib/chain/seenCache/seenGossipBlockInput.d.ts.map +1 -1
- package/lib/chain/seenCache/seenGossipBlockInput.js +6 -65
- package/lib/chain/seenCache/seenGossipBlockInput.js.map +1 -1
- package/lib/chain/validation/aggregateAndProof.js +1 -1
- package/lib/chain/validation/aggregateAndProof.js.map +1 -1
- package/lib/chain/validation/attestation.js +1 -1
- package/lib/chain/validation/attestation.js.map +1 -1
- package/lib/chain/validation/executionPayloadBid.js +13 -13
- package/lib/chain/validation/executionPayloadBid.js.map +1 -1
- package/lib/chain/validation/executionPayloadEnvelope.d.ts +6 -0
- package/lib/chain/validation/executionPayloadEnvelope.d.ts.map +1 -1
- package/lib/chain/validation/executionPayloadEnvelope.js +53 -0
- package/lib/chain/validation/executionPayloadEnvelope.js.map +1 -1
- package/lib/chain/validation/syncCommittee.d.ts.map +1 -1
- package/lib/chain/validation/syncCommittee.js +16 -10
- package/lib/chain/validation/syncCommittee.js.map +1 -1
- package/lib/chain/validation/syncCommitteeContributionAndProof.d.ts.map +1 -1
- package/lib/chain/validation/syncCommitteeContributionAndProof.js +11 -0
- package/lib/chain/validation/syncCommitteeContributionAndProof.js.map +1 -1
- package/lib/chain/validatorMonitor.d.ts +1 -2
- package/lib/chain/validatorMonitor.d.ts.map +1 -1
- package/lib/chain/validatorMonitor.js +0 -3
- package/lib/chain/validatorMonitor.js.map +1 -1
- package/lib/db/beacon.d.ts +7 -0
- package/lib/db/beacon.d.ts.map +1 -1
- package/lib/db/beacon.js +32 -0
- package/lib/db/beacon.js.map +1 -1
- package/lib/db/dataColumnStore.d.ts +1 -1
- package/lib/db/dataColumnStore.d.ts.map +1 -1
- package/lib/db/dataColumnStore.js +1 -4
- package/lib/db/dataColumnStore.js.map +1 -1
- package/lib/db/flatFileStore/flatFileStore.js +5 -5
- package/lib/db/flatFileStore/flatFileStore.js.map +1 -1
- package/lib/db/flatFileStore/slotIndex.d.ts.map +1 -1
- package/lib/db/flatFileStore/slotIndex.js +2 -2
- package/lib/db/flatFileStore/slotIndex.js.map +1 -1
- package/lib/db/interface.d.ts +1 -0
- package/lib/db/interface.d.ts.map +1 -1
- package/lib/db/repositories/blobSidecars.d.ts +0 -1
- package/lib/db/repositories/blobSidecars.d.ts.map +1 -1
- package/lib/db/repositories/blobSidecars.js +0 -1
- package/lib/db/repositories/blobSidecars.js.map +1 -1
- package/lib/db/repositories/dataColumnSidecarArchive.d.ts +6 -0
- package/lib/db/repositories/dataColumnSidecarArchive.d.ts.map +1 -1
- package/lib/db/repositories/dataColumnSidecarArchive.js +19 -0
- package/lib/db/repositories/dataColumnSidecarArchive.js.map +1 -1
- package/lib/execution/builder/apiClient.d.ts +14 -8
- package/lib/execution/builder/apiClient.d.ts.map +1 -1
- package/lib/execution/builder/apiClient.js +12 -10
- package/lib/execution/builder/apiClient.js.map +1 -1
- package/lib/execution/builder/http.d.ts +2 -0
- package/lib/execution/builder/http.d.ts.map +1 -1
- package/lib/execution/builder/http.js +2 -0
- package/lib/execution/builder/http.js.map +1 -1
- package/lib/execution/engine/http.d.ts +4 -6
- package/lib/execution/engine/http.d.ts.map +1 -1
- package/lib/execution/engine/http.js +8 -10
- package/lib/execution/engine/http.js.map +1 -1
- package/lib/execution/engine/index.d.ts +1 -1
- package/lib/execution/engine/index.d.ts.map +1 -1
- package/lib/execution/engine/index.js +1 -1
- package/lib/execution/engine/index.js.map +1 -1
- package/lib/execution/engine/interface.d.ts +18 -6
- package/lib/execution/engine/interface.d.ts.map +1 -1
- package/lib/execution/engine/interface.js.map +1 -1
- package/lib/execution/engine/jsonRpcTransport.d.ts +2 -4
- package/lib/execution/engine/jsonRpcTransport.d.ts.map +1 -1
- package/lib/execution/engine/jsonRpcTransport.js +2 -12
- package/lib/execution/engine/jsonRpcTransport.js.map +1 -1
- package/lib/execution/engine/mock.d.ts +0 -1
- package/lib/execution/engine/mock.d.ts.map +1 -1
- package/lib/execution/engine/mock.js +0 -4
- package/lib/execution/engine/mock.js.map +1 -1
- package/lib/execution/engine/restTransport.d.ts +2 -4
- package/lib/execution/engine/restTransport.d.ts.map +1 -1
- package/lib/execution/engine/restTransport.js +1 -15
- package/lib/execution/engine/restTransport.js.map +1 -1
- package/lib/execution/engine/sszTypes.d.ts +0 -9
- package/lib/execution/engine/sszTypes.d.ts.map +1 -1
- package/lib/execution/engine/sszTypes.js +0 -5
- package/lib/execution/engine/sszTypes.js.map +1 -1
- package/lib/execution/engine/transport.d.ts +1 -14
- package/lib/execution/engine/transport.d.ts.map +1 -1
- package/lib/execution/engine/types.d.ts +0 -8
- package/lib/execution/engine/types.d.ts.map +1 -1
- package/lib/execution/engine/types.js +2 -10
- package/lib/execution/engine/types.js.map +1 -1
- package/lib/execution/engine/utils.d.ts.map +1 -1
- package/lib/execution/engine/utils.js +3 -2
- package/lib/execution/engine/utils.js.map +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/metrics/metrics/beacon.d.ts +0 -9
- package/lib/metrics/metrics/beacon.d.ts.map +1 -1
- package/lib/metrics/metrics/beacon.js +0 -30
- package/lib/metrics/metrics/beacon.js.map +1 -1
- package/lib/metrics/metrics/lodestar.d.ts +30 -8
- package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
- package/lib/metrics/metrics/lodestar.js +79 -18
- package/lib/metrics/metrics/lodestar.js.map +1 -1
- package/lib/metrics/server/http.js +5 -5
- package/lib/metrics/server/http.js.map +1 -1
- package/lib/monitoring/service.js +1 -1
- package/lib/monitoring/service.js.map +1 -1
- package/lib/network/core/networkCore.d.ts +4 -1
- package/lib/network/core/networkCore.d.ts.map +1 -1
- package/lib/network/core/networkCore.js +7 -0
- package/lib/network/core/networkCore.js.map +1 -1
- package/lib/network/core/networkCoreWorker.js +2 -0
- package/lib/network/core/networkCoreWorker.js.map +1 -1
- package/lib/network/core/networkCoreWorkerHandler.d.ts +4 -1
- package/lib/network/core/networkCoreWorkerHandler.d.ts.map +1 -1
- package/lib/network/core/networkCoreWorkerHandler.js +6 -0
- package/lib/network/core/networkCoreWorkerHandler.js.map +1 -1
- package/lib/network/core/types.d.ts +6 -1
- package/lib/network/core/types.d.ts.map +1 -1
- package/lib/network/gossip/gossipsub.d.ts +1 -0
- package/lib/network/gossip/gossipsub.d.ts.map +1 -1
- package/lib/network/gossip/gossipsub.js +10 -0
- package/lib/network/gossip/gossipsub.js.map +1 -1
- package/lib/network/gossip/interface.d.ts +1 -8
- package/lib/network/gossip/interface.d.ts.map +1 -1
- package/lib/network/gossip/interface.js +0 -1
- package/lib/network/gossip/interface.js.map +1 -1
- package/lib/network/gossip/topic.d.ts +0 -16
- package/lib/network/gossip/topic.d.ts.map +1 -1
- package/lib/network/gossip/topic.js +0 -23
- package/lib/network/gossip/topic.js.map +1 -1
- package/lib/network/interface.d.ts +4 -5
- package/lib/network/interface.d.ts.map +1 -1
- package/lib/network/libp2p/index.d.ts.map +1 -1
- package/lib/network/libp2p/index.js +5 -1
- package/lib/network/libp2p/index.js.map +1 -1
- package/lib/network/network.d.ts +8 -7
- package/lib/network/network.d.ts.map +1 -1
- package/lib/network/network.js +53 -35
- package/lib/network/network.js.map +1 -1
- package/lib/network/options.d.ts +2 -0
- package/lib/network/options.d.ts.map +1 -1
- package/lib/network/options.js +2 -0
- package/lib/network/options.js.map +1 -1
- package/lib/network/peers/peerManager.d.ts +2 -1
- package/lib/network/peers/peerManager.d.ts.map +1 -1
- package/lib/network/peers/peerManager.js +28 -1
- package/lib/network/peers/peerManager.js.map +1 -1
- package/lib/network/peers/utils/assertPeerRelevance.d.ts +9 -1
- package/lib/network/peers/utils/assertPeerRelevance.d.ts.map +1 -1
- package/lib/network/peers/utils/assertPeerRelevance.js +32 -21
- package/lib/network/peers/utils/assertPeerRelevance.js.map +1 -1
- package/lib/network/peers/utils/prioritizePeers.d.ts +4 -1
- package/lib/network/peers/utils/prioritizePeers.d.ts.map +1 -1
- package/lib/network/peers/utils/prioritizePeers.js +8 -16
- package/lib/network/peers/utils/prioritizePeers.js.map +1 -1
- package/lib/network/peers/utils/subnetMap.d.ts +5 -2
- package/lib/network/peers/utils/subnetMap.d.ts.map +1 -1
- package/lib/network/peers/utils/subnetMap.js +6 -3
- package/lib/network/peers/utils/subnetMap.js.map +1 -1
- package/lib/network/processor/extractSlotRootFns.d.ts.map +1 -1
- package/lib/network/processor/extractSlotRootFns.js +1 -8
- package/lib/network/processor/extractSlotRootFns.js.map +1 -1
- package/lib/network/processor/gossipHandlers.d.ts.map +1 -1
- package/lib/network/processor/gossipHandlers.js +52 -131
- package/lib/network/processor/gossipHandlers.js.map +1 -1
- package/lib/network/processor/gossipQueues/index.d.ts.map +1 -1
- package/lib/network/processor/gossipQueues/index.js +0 -6
- package/lib/network/processor/gossipQueues/index.js.map +1 -1
- package/lib/network/processor/gossipValidatorFn.d.ts.map +1 -1
- package/lib/network/processor/gossipValidatorFn.js +1 -5
- package/lib/network/processor/gossipValidatorFn.js.map +1 -1
- package/lib/network/processor/index.d.ts +6 -0
- package/lib/network/processor/index.d.ts.map +1 -1
- package/lib/network/processor/index.js +29 -4
- package/lib/network/processor/index.js.map +1 -1
- package/lib/network/reqresp/ReqRespBeaconNode.d.ts.map +1 -1
- package/lib/network/reqresp/ReqRespBeaconNode.js +0 -3
- package/lib/network/reqresp/ReqRespBeaconNode.js.map +1 -1
- package/lib/network/reqresp/handlers/beaconBlocksByHead.js +1 -1
- package/lib/network/reqresp/handlers/beaconBlocksByHead.js.map +1 -1
- package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts +2 -2
- package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts.map +1 -1
- package/lib/network/reqresp/handlers/index.d.ts.map +1 -1
- package/lib/network/reqresp/handlers/index.js +1 -12
- package/lib/network/reqresp/handlers/index.js.map +1 -1
- package/lib/network/reqresp/protocols.d.ts +0 -2
- package/lib/network/reqresp/protocols.d.ts.map +1 -1
- package/lib/network/reqresp/protocols.js +0 -10
- package/lib/network/reqresp/protocols.js.map +1 -1
- package/lib/network/reqresp/rateLimit.d.ts.map +1 -1
- package/lib/network/reqresp/rateLimit.js +1 -17
- package/lib/network/reqresp/rateLimit.js.map +1 -1
- package/lib/network/reqresp/types.d.ts +2 -8
- package/lib/network/reqresp/types.d.ts.map +1 -1
- package/lib/network/reqresp/types.js +1 -7
- package/lib/network/reqresp/types.js.map +1 -1
- package/lib/network/subnets/attnetsService.d.ts +35 -5
- package/lib/network/subnets/attnetsService.d.ts.map +1 -1
- package/lib/network/subnets/attnetsService.js +84 -6
- package/lib/network/subnets/attnetsService.js.map +1 -1
- package/lib/network/subnets/interface.d.ts +7 -0
- package/lib/network/subnets/interface.d.ts.map +1 -1
- package/lib/network/subnets/interface.js.map +1 -1
- package/lib/node/nodejs.d.ts +3 -1
- package/lib/node/nodejs.d.ts.map +1 -1
- package/lib/node/nodejs.js +47 -21
- package/lib/node/nodejs.js.map +1 -1
- package/lib/node/options.d.ts +3 -1
- package/lib/node/options.d.ts.map +1 -1
- package/lib/node/options.js +4 -2
- package/lib/node/options.js.map +1 -1
- package/lib/sync/interface.d.ts.map +1 -1
- package/lib/sync/interface.js.map +1 -1
- package/lib/sync/range/batch.d.ts +2 -3
- package/lib/sync/range/batch.d.ts.map +1 -1
- package/lib/sync/range/batch.js +9 -22
- package/lib/sync/range/batch.js.map +1 -1
- package/lib/sync/range/chain.d.ts.map +1 -1
- package/lib/sync/range/chain.js +2 -15
- package/lib/sync/range/chain.js.map +1 -1
- package/lib/sync/sync.d.ts +15 -0
- package/lib/sync/sync.d.ts.map +1 -1
- package/lib/sync/sync.js +103 -25
- package/lib/sync/sync.js.map +1 -1
- package/lib/sync/unknownBlock.d.ts.map +1 -1
- package/lib/sync/unknownBlock.js +1 -7
- package/lib/sync/unknownBlock.js.map +1 -1
- package/lib/sync/utils/downloadByRange.d.ts +6 -34
- package/lib/sync/utils/downloadByRange.d.ts.map +1 -1
- package/lib/sync/utils/downloadByRange.js +24 -128
- package/lib/sync/utils/downloadByRange.js.map +1 -1
- package/lib/sync/utils/downloadByRoot.d.ts +2 -18
- package/lib/sync/utils/downloadByRoot.d.ts.map +1 -1
- package/lib/sync/utils/downloadByRoot.js +14 -99
- package/lib/sync/utils/downloadByRoot.js.map +1 -1
- package/lib/util/blobs.d.ts +1 -7
- package/lib/util/blobs.d.ts.map +1 -1
- package/lib/util/blobs.js +0 -19
- package/lib/util/blobs.js.map +1 -1
- package/lib/util/execution.d.ts +3 -4
- package/lib/util/execution.d.ts.map +1 -1
- package/lib/util/execution.js +1 -73
- package/lib/util/execution.js.map +1 -1
- package/lib/util/file.d.ts.map +1 -1
- package/lib/util/file.js +8 -9
- package/lib/util/file.js.map +1 -1
- package/lib/util/queue/itemQueue.js +1 -1
- package/lib/util/queue/itemQueue.js.map +1 -1
- package/lib/util/sszBytes.d.ts +5 -1
- package/lib/util/sszBytes.d.ts.map +1 -1
- package/lib/util/sszBytes.js +36 -19
- package/lib/util/sszBytes.js.map +1 -1
- package/lib/util/types.d.ts +0 -5
- package/lib/util/types.d.ts.map +1 -1
- package/lib/util/types.js +1 -2
- package/lib/util/types.js.map +1 -1
- package/package.json +16 -17
- package/src/api/impl/beacon/blocks/index.ts +59 -109
- package/src/api/impl/beacon/pool/index.ts +31 -1
- package/src/api/impl/beacon/state/utils.ts +1 -1
- package/src/api/impl/validator/index.ts +47 -30
- package/src/chain/GetBlobsTracker.ts +82 -52
- package/src/chain/archiveStore/archiveStore.ts +6 -4
- package/src/chain/archiveStore/utils/archiveBlocks.ts +12 -4
- package/src/chain/archiveStore/utils/pruneHistory.ts +16 -6
- package/src/chain/blocks/blockInput/blockInput.ts +11 -343
- package/src/chain/blocks/blockInput/errors.ts +1 -2
- package/src/chain/blocks/blockInput/types.ts +2 -20
- package/src/chain/blocks/importBlock.ts +56 -72
- package/src/chain/blocks/importExecutionPayload.ts +55 -34
- package/src/chain/blocks/index.ts +11 -4
- package/src/chain/blocks/payloadEnvelopeProcessor.ts +35 -24
- package/src/chain/blocks/types.ts +5 -31
- package/src/chain/blocks/verifyBlock.ts +31 -16
- package/src/chain/blocks/verifyBlocksDataAvailability.ts +16 -2
- package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +9 -6
- package/src/chain/blocks/verifyBlocksSanityChecks.ts +4 -1
- package/src/chain/blocks/verifyBlocksSignatures.ts +10 -5
- package/src/chain/blocks/verifyPayloadsDataAvailability.ts +14 -6
- package/src/chain/blocks/writeBlockInputToDb.ts +6 -29
- package/src/chain/bls/interface.ts +2 -0
- package/src/chain/bls/multithread/index.ts +48 -24
- package/src/chain/bls/multithread/types.ts +1 -1
- package/src/chain/bls/multithread/worker.ts +1 -5
- package/src/chain/bls/singleThread.ts +1 -1
- package/src/chain/bls/utils.ts +1 -1
- package/src/chain/chain.ts +136 -38
- package/src/chain/emitter.ts +8 -8
- package/src/chain/errors/blockError.ts +1 -1
- package/src/chain/errors/executionPayloadEnvelope.ts +8 -0
- package/src/chain/errors/index.ts +0 -1
- package/src/chain/forkChoice/index.ts +11 -0
- package/src/chain/forkChoiceExecutionEngine.ts +183 -0
- package/src/chain/interface.ts +9 -6
- package/src/chain/opPools/aggregatedAttestationPool.ts +246 -43
- package/src/chain/opPools/attestationPool.ts +16 -4
- package/src/chain/opPools/index.ts +1 -0
- package/src/chain/opPools/payloadAttestationPool.ts +18 -7
- package/src/chain/opPools/singleAttestationPool.ts +287 -0
- package/src/chain/opPools/syncCommitteeMessagePool.ts +10 -3
- package/src/chain/opPools/syncContributionAndProofPool.ts +13 -3
- package/src/chain/opPools/utils.ts +1 -1
- package/src/chain/options.ts +5 -4
- package/src/chain/produceBlock/produceBlockBody.ts +7 -3
- package/src/chain/proposerTracker.ts +94 -0
- package/src/chain/regen/interface.ts +1 -1
- package/src/chain/regen/queued.ts +6 -4
- package/src/chain/seenCache/seenGossipBlockInput.ts +9 -93
- package/src/chain/validation/aggregateAndProof.ts +1 -1
- package/src/chain/validation/attestation.ts +1 -1
- package/src/chain/validation/executionPayloadBid.ts +14 -13
- package/src/chain/validation/executionPayloadEnvelope.ts +68 -1
- package/src/chain/validation/syncCommittee.ts +31 -15
- package/src/chain/validation/syncCommitteeContributionAndProof.ts +13 -0
- package/src/chain/validatorMonitor.ts +0 -6
- package/src/db/beacon.ts +39 -0
- package/src/db/dataColumnStore.ts +2 -4
- package/src/db/flatFileStore/flatFileStore.ts +7 -7
- package/src/db/flatFileStore/slotIndex.ts +4 -3
- package/src/db/interface.ts +2 -0
- package/src/db/repositories/blobSidecars.ts +0 -1
- package/src/db/repositories/dataColumnSidecarArchive.ts +20 -0
- package/src/execution/builder/apiClient.ts +16 -13
- package/src/execution/builder/http.ts +4 -0
- package/src/execution/engine/http.ts +19 -42
- package/src/execution/engine/index.ts +1 -1
- package/src/execution/engine/interface.ts +19 -10
- package/src/execution/engine/jsonRpcTransport.ts +10 -22
- package/src/execution/engine/mock.ts +0 -7
- package/src/execution/engine/restTransport.ts +3 -22
- package/src/execution/engine/sszTypes.ts +0 -9
- package/src/execution/engine/transport.ts +8 -17
- package/src/execution/engine/types.ts +3 -18
- package/src/execution/engine/utils.ts +4 -2
- package/src/index.ts +1 -1
- package/src/metrics/metrics/beacon.ts +0 -30
- package/src/metrics/metrics/lodestar.ts +80 -18
- package/src/metrics/server/http.ts +5 -5
- package/src/monitoring/service.ts +1 -1
- package/src/network/core/networkCore.ts +11 -1
- package/src/network/core/networkCoreWorker.ts +2 -0
- package/src/network/core/networkCoreWorkerHandler.ts +8 -1
- package/src/network/core/types.ts +6 -1
- package/src/network/gossip/gossipsub.ts +11 -0
- package/src/network/gossip/interface.ts +0 -5
- package/src/network/gossip/topic.ts +0 -25
- package/src/network/interface.ts +2 -5
- package/src/network/libp2p/index.ts +5 -1
- package/src/network/network.ts +55 -58
- package/src/network/options.ts +4 -0
- package/src/network/peers/peerManager.ts +28 -3
- package/src/network/peers/utils/assertPeerRelevance.ts +39 -23
- package/src/network/peers/utils/prioritizePeers.ts +14 -22
- package/src/network/peers/utils/subnetMap.ts +6 -3
- package/src/network/processor/extractSlotRootFns.ts +0 -9
- package/src/network/processor/gossipHandlers.ts +65 -164
- package/src/network/processor/gossipQueues/index.ts +0 -6
- package/src/network/processor/gossipValidatorFn.ts +0 -5
- package/src/network/processor/index.ts +25 -4
- package/src/network/reqresp/ReqRespBeaconNode.ts +0 -7
- package/src/network/reqresp/handlers/beaconBlocksByHead.ts +1 -1
- package/src/network/reqresp/handlers/beaconBlocksByRange.ts +2 -2
- package/src/network/reqresp/handlers/index.ts +0 -17
- package/src/network/reqresp/protocols.ts +0 -12
- package/src/network/reqresp/rateLimit.ts +1 -17
- package/src/network/reqresp/types.ts +0 -13
- package/src/network/subnets/attnetsService.ts +94 -6
- package/src/network/subnets/interface.ts +7 -0
- package/src/node/nodejs.ts +58 -22
- package/src/node/options.ts +9 -6
- package/src/sync/interface.ts +1 -0
- package/src/sync/range/batch.ts +9 -21
- package/src/sync/range/chain.ts +2 -14
- package/src/sync/sync.ts +108 -26
- package/src/sync/unknownBlock.ts +1 -8
- package/src/sync/utils/downloadByRange.ts +31 -230
- package/src/sync/utils/downloadByRoot.ts +15 -142
- package/src/util/blobs.ts +0 -34
- package/src/util/execution.ts +8 -102
- package/src/util/file.ts +8 -9
- package/src/util/queue/itemQueue.ts +1 -1
- package/src/util/sszBytes.ts +42 -24
- package/src/util/types.ts +1 -8
- package/lib/chain/errors/blobSidecarError.d.ts +0 -108
- package/lib/chain/errors/blobSidecarError.d.ts.map +0 -1
- package/lib/chain/errors/blobSidecarError.js +0 -38
- package/lib/chain/errors/blobSidecarError.js.map +0 -1
- package/lib/chain/validation/blobSidecar.d.ts +0 -16
- package/lib/chain/validation/blobSidecar.d.ts.map +0 -1
- package/lib/chain/validation/blobSidecar.js +0 -276
- package/lib/chain/validation/blobSidecar.js.map +0 -1
- package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts +0 -9
- package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts.map +0 -1
- package/lib/network/reqresp/handlers/blobSidecarsByRange.js +0 -91
- package/lib/network/reqresp/handlers/blobSidecarsByRange.js.map +0 -1
- package/lib/network/reqresp/handlers/blobSidecarsByRoot.d.ts +0 -5
- package/lib/network/reqresp/handlers/blobSidecarsByRoot.d.ts.map +0 -1
- package/lib/network/reqresp/handlers/blobSidecarsByRoot.js +0 -46
- package/lib/network/reqresp/handlers/blobSidecarsByRoot.js.map +0 -1
- package/src/chain/errors/blobSidecarError.ts +0 -70
- package/src/chain/validation/blobSidecar.ts +0 -357
- package/src/network/reqresp/handlers/blobSidecarsByRange.ts +0 -133
- package/src/network/reqresp/handlers/blobSidecarsByRoot.ts +0 -69
|
@@ -1,13 +1,5 @@
|
|
|
1
1
|
import {ChainForkConfig} from "@lodestar/config";
|
|
2
|
-
import {
|
|
3
|
-
ForkName,
|
|
4
|
-
ForkPostDeneb,
|
|
5
|
-
ForkPostFulu,
|
|
6
|
-
ForkPostGloas,
|
|
7
|
-
ForkPreFulu,
|
|
8
|
-
isForkPostFulu,
|
|
9
|
-
isForkPostGloas,
|
|
10
|
-
} from "@lodestar/params";
|
|
2
|
+
import {ForkName, ForkPostFulu, ForkPostGloas, isForkPostFulu, isForkPostGloas} from "@lodestar/params";
|
|
11
3
|
import {
|
|
12
4
|
ColumnIndex,
|
|
13
5
|
DataColumnSidecar,
|
|
@@ -15,7 +7,6 @@ import {
|
|
|
15
7
|
SignedBeaconBlock,
|
|
16
8
|
Slot,
|
|
17
9
|
ValidatorIndex,
|
|
18
|
-
deneb,
|
|
19
10
|
fulu,
|
|
20
11
|
gloas,
|
|
21
12
|
isGloasBeaconBlock,
|
|
@@ -23,18 +14,11 @@ import {
|
|
|
23
14
|
phase0,
|
|
24
15
|
} from "@lodestar/types";
|
|
25
16
|
import {LodestarError, Logger, byteArrayEquals, fromHex, prettyPrintIndices, toRootHex} from "@lodestar/utils";
|
|
26
|
-
import {
|
|
27
|
-
BlockInputSource,
|
|
28
|
-
DAType,
|
|
29
|
-
IBlockInput,
|
|
30
|
-
isBlockInputBlobs,
|
|
31
|
-
isBlockInputColumns,
|
|
32
|
-
} from "../../chain/blocks/blockInput/index.js";
|
|
17
|
+
import {BlockInputSource, DAType, IBlockInput, isBlockInputColumns} from "../../chain/blocks/blockInput/index.js";
|
|
33
18
|
import {PayloadEnvelopeInput} from "../../chain/blocks/payloadEnvelopeInput/payloadEnvelopeInput.js";
|
|
34
19
|
import {PayloadEnvelopeInputSource} from "../../chain/blocks/payloadEnvelopeInput/types.js";
|
|
35
20
|
import {SeenBlockInput} from "../../chain/seenCache/seenGossipBlockInput.js";
|
|
36
21
|
import {SeenPayloadEnvelopeInput} from "../../chain/seenCache/seenPayloadEnvelopeInput.js";
|
|
37
|
-
import {validateBlockBlobSidecars} from "../../chain/validation/blobSidecar.js";
|
|
38
22
|
import {
|
|
39
23
|
validateFuluBlockDataColumnSidecars,
|
|
40
24
|
validateGloasBlockDataColumnSidecars,
|
|
@@ -47,7 +31,6 @@ import {WarnResult} from "../../util/wrapError.js";
|
|
|
47
31
|
|
|
48
32
|
export type DownloadByRangeRequests = {
|
|
49
33
|
blocksRequest?: phase0.BeaconBlocksByRangeRequest;
|
|
50
|
-
blobsRequest?: deneb.BlobSidecarsByRangeRequest;
|
|
51
34
|
columnsRequest?: fulu.DataColumnSidecarsByRangeRequest;
|
|
52
35
|
envelopesRequest?: gloas.ExecutionPayloadEnvelopesByRangeRequest;
|
|
53
36
|
/**
|
|
@@ -77,7 +60,6 @@ export type ParentPayload = {
|
|
|
77
60
|
|
|
78
61
|
export type DownloadByRangeResponses = {
|
|
79
62
|
blocks?: SignedBeaconBlock[];
|
|
80
|
-
blobSidecars?: deneb.BlobSidecars;
|
|
81
63
|
columnSidecars?: DataColumnSidecar[];
|
|
82
64
|
payloadEnvelopes?: gloas.SignedExecutionPayloadEnvelope[];
|
|
83
65
|
};
|
|
@@ -115,11 +97,6 @@ export type ValidatedBlock = {
|
|
|
115
97
|
block: SignedBeaconBlock;
|
|
116
98
|
};
|
|
117
99
|
|
|
118
|
-
export type ValidatedBlobSidecars = {
|
|
119
|
-
blockRoot: Uint8Array;
|
|
120
|
-
blobSidecars: deneb.BlobSidecars;
|
|
121
|
-
};
|
|
122
|
-
|
|
123
100
|
export type ValidatedColumnSidecars = {
|
|
124
101
|
blockRoot: Uint8Array;
|
|
125
102
|
columnSidecars: DataColumnSidecar[];
|
|
@@ -127,7 +104,6 @@ export type ValidatedColumnSidecars = {
|
|
|
127
104
|
|
|
128
105
|
export type ValidatedResponses = {
|
|
129
106
|
validatedBlocks?: ValidatedBlock[];
|
|
130
|
-
validatedBlobSidecars?: ValidatedBlobSidecars[];
|
|
131
107
|
validatedColumnSidecars?: ValidatedColumnSidecars[];
|
|
132
108
|
};
|
|
133
109
|
|
|
@@ -183,8 +159,8 @@ export function cacheByRangeResponses({
|
|
|
183
159
|
updatedBatchBlocks.set(blockInput.slot, blockInput);
|
|
184
160
|
}
|
|
185
161
|
|
|
186
|
-
// Seed seenPayloadEnvelopeInputCache the instant we have the block, before
|
|
187
|
-
// later step
|
|
162
|
+
// Seed seenPayloadEnvelopeInputCache the instant we have the block, before any
|
|
163
|
+
// later step can throw and abort the batch. Otherwise a gloas block would sit in
|
|
188
164
|
// seenBlockInputCache but unseeded here, and payload-by-root sync would later throw "Missing
|
|
189
165
|
// PayloadEnvelopeInput for known block" (see issue #9306). add() is idempotent.
|
|
190
166
|
if (isForkPostGloas(blockInput.forkName) && !payloadEnvelopes.has(blockInput.slot)) {
|
|
@@ -201,44 +177,6 @@ export function cacheByRangeResponses({
|
|
|
201
177
|
}
|
|
202
178
|
}
|
|
203
179
|
|
|
204
|
-
for (const {blockRoot, blobSidecars} of responses.validatedBlobSidecars ?? []) {
|
|
205
|
-
const dataSlot = blobSidecars.at(0)?.signedBlockHeader.message.slot;
|
|
206
|
-
if (dataSlot === undefined) {
|
|
207
|
-
throw new Error(
|
|
208
|
-
`Coding Error: empty blobSidecars returned for blockRoot=${toRootHex(blockRoot)} from validation functions`
|
|
209
|
-
);
|
|
210
|
-
}
|
|
211
|
-
const existing = updatedBatchBlocks.get(dataSlot);
|
|
212
|
-
const blockRootHex = toRootHex(blockRoot);
|
|
213
|
-
|
|
214
|
-
if (!existing) {
|
|
215
|
-
throw new Error("Coding error: blockInput must exist when adding blobs");
|
|
216
|
-
}
|
|
217
|
-
|
|
218
|
-
if (!isBlockInputBlobs(existing)) {
|
|
219
|
-
throw new DownloadByRangeError({
|
|
220
|
-
code: DownloadByRangeErrorCode.MISMATCH_BLOCK_INPUT_TYPE,
|
|
221
|
-
slot: existing.slot,
|
|
222
|
-
blockRoot: existing.blockRootHex,
|
|
223
|
-
expected: DAType.Blobs,
|
|
224
|
-
actual: existing.type,
|
|
225
|
-
});
|
|
226
|
-
}
|
|
227
|
-
for (const blobSidecar of blobSidecars) {
|
|
228
|
-
// will throw if root hex does not match (meaning we are following the wrong chain)
|
|
229
|
-
existing.addBlob(
|
|
230
|
-
{
|
|
231
|
-
blobSidecar,
|
|
232
|
-
blockRootHex,
|
|
233
|
-
seenTimestampSec,
|
|
234
|
-
peerIdStr,
|
|
235
|
-
source,
|
|
236
|
-
},
|
|
237
|
-
{throwOnDuplicateAdd: false}
|
|
238
|
-
);
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
|
|
242
180
|
if (downloadedPayloadEnvelopes !== null) {
|
|
243
181
|
for (const [slot, envelope] of downloadedPayloadEnvelopes) {
|
|
244
182
|
// the only PayloadEnvelopeInput miss is the dangling parent
|
|
@@ -350,7 +288,6 @@ export async function downloadByRange({
|
|
|
350
288
|
peerIdStr,
|
|
351
289
|
batchBlocks,
|
|
352
290
|
blocksRequest,
|
|
353
|
-
blobsRequest,
|
|
354
291
|
columnsRequest,
|
|
355
292
|
envelopesRequest,
|
|
356
293
|
parentPayloadRequest,
|
|
@@ -368,7 +305,6 @@ export async function downloadByRange({
|
|
|
368
305
|
network,
|
|
369
306
|
peerIdStr,
|
|
370
307
|
blocksRequest,
|
|
371
|
-
blobsRequest,
|
|
372
308
|
columnsRequest,
|
|
373
309
|
envelopesRequest,
|
|
374
310
|
parentPayloadRequest,
|
|
@@ -377,7 +313,7 @@ export async function downloadByRange({
|
|
|
377
313
|
throw new DownloadByRangeError({
|
|
378
314
|
code: DownloadByRangeErrorCode.REQ_RESP_ERROR,
|
|
379
315
|
reason: (err as Error).message,
|
|
380
|
-
...requestsLogMeta({blocksRequest,
|
|
316
|
+
...requestsLogMeta({blocksRequest, columnsRequest}),
|
|
381
317
|
});
|
|
382
318
|
}
|
|
383
319
|
|
|
@@ -385,7 +321,6 @@ export async function downloadByRange({
|
|
|
385
321
|
config,
|
|
386
322
|
batchBlocks,
|
|
387
323
|
blocksRequest,
|
|
388
|
-
blobsRequest,
|
|
389
324
|
columnsRequest,
|
|
390
325
|
envelopesRequest,
|
|
391
326
|
parentPayloadRequest,
|
|
@@ -402,7 +337,6 @@ export async function requestByRange({
|
|
|
402
337
|
network,
|
|
403
338
|
peerIdStr,
|
|
404
339
|
blocksRequest,
|
|
405
|
-
blobsRequest,
|
|
406
340
|
columnsRequest,
|
|
407
341
|
envelopesRequest,
|
|
408
342
|
parentPayloadRequest,
|
|
@@ -411,7 +345,6 @@ export async function requestByRange({
|
|
|
411
345
|
peerIdStr: PeerIdStr;
|
|
412
346
|
}): Promise<DownloadByRangeResponses> {
|
|
413
347
|
let blocks: undefined | SignedBeaconBlock[];
|
|
414
|
-
let blobSidecars: undefined | deneb.BlobSidecars;
|
|
415
348
|
const columnSidecars: DataColumnSidecar[] = [];
|
|
416
349
|
const payloadEnvelopes: gloas.SignedExecutionPayloadEnvelope[] = [];
|
|
417
350
|
|
|
@@ -425,14 +358,6 @@ export async function requestByRange({
|
|
|
425
358
|
);
|
|
426
359
|
}
|
|
427
360
|
|
|
428
|
-
if (blobsRequest) {
|
|
429
|
-
requests.push(
|
|
430
|
-
network.sendBlobSidecarsByRange(peerIdStr, blobsRequest).then((blobResponse) => {
|
|
431
|
-
blobSidecars = blobResponse;
|
|
432
|
-
})
|
|
433
|
-
);
|
|
434
|
-
}
|
|
435
|
-
|
|
436
361
|
if (columnsRequest) {
|
|
437
362
|
requests.push(
|
|
438
363
|
network.sendDataColumnSidecarsByRange(peerIdStr, columnsRequest).then((columnResponse) => {
|
|
@@ -476,7 +401,6 @@ export async function requestByRange({
|
|
|
476
401
|
|
|
477
402
|
return {
|
|
478
403
|
blocks,
|
|
479
|
-
blobSidecars,
|
|
480
404
|
columnSidecars,
|
|
481
405
|
payloadEnvelopes,
|
|
482
406
|
};
|
|
@@ -489,13 +413,11 @@ export async function validateResponses({
|
|
|
489
413
|
config,
|
|
490
414
|
batchBlocks,
|
|
491
415
|
blocksRequest,
|
|
492
|
-
blobsRequest,
|
|
493
416
|
columnsRequest,
|
|
494
417
|
envelopesRequest,
|
|
495
418
|
parentPayloadRequest,
|
|
496
419
|
parentPayload,
|
|
497
420
|
blocks,
|
|
498
|
-
blobSidecars,
|
|
499
421
|
columnSidecars,
|
|
500
422
|
payloadEnvelopes,
|
|
501
423
|
peerDasMetrics,
|
|
@@ -511,14 +433,14 @@ export async function validateResponses({
|
|
|
511
433
|
DownloadByRangeError
|
|
512
434
|
>
|
|
513
435
|
> {
|
|
514
|
-
// Blocks are always required for
|
|
436
|
+
// Blocks are always required for column validation
|
|
515
437
|
// If a blocksRequest is provided, blocks have just been downloaded
|
|
516
438
|
// If no blocksRequest is provided, batchBlocks must have been provided from cache
|
|
517
|
-
if (
|
|
439
|
+
if (columnsRequest && !(blocks || batchBlocks)) {
|
|
518
440
|
throw new DownloadByRangeError(
|
|
519
441
|
{
|
|
520
442
|
code: DownloadByRangeErrorCode.MISSING_BLOCKS_RESPONSE,
|
|
521
|
-
...requestsLogMeta({
|
|
443
|
+
...requestsLogMeta({columnsRequest}),
|
|
522
444
|
},
|
|
523
445
|
"No blocks to validate data requests against"
|
|
524
446
|
);
|
|
@@ -541,12 +463,11 @@ export async function validateResponses({
|
|
|
541
463
|
}
|
|
542
464
|
|
|
543
465
|
const needsEnvelopeValidation = !!envelopesRequest || parentPayload !== undefined;
|
|
544
|
-
|
|
545
|
-
if (!dataRequest && !needsEnvelopeValidation) {
|
|
466
|
+
if (!columnsRequest && !needsEnvelopeValidation) {
|
|
546
467
|
return {result: {responses: validatedResponses, payloadEnvelopes: null}, warnings};
|
|
547
468
|
}
|
|
548
469
|
|
|
549
|
-
if (!
|
|
470
|
+
if (!columnsRequest) {
|
|
550
471
|
// Only envelope and/or parent-by-root validation needed
|
|
551
472
|
if (parentPayload !== undefined) {
|
|
552
473
|
const parentValidated = await validateParentPayloadColumns(parentPayload, columnSidecars ?? [], peerDasMetrics);
|
|
@@ -564,7 +485,7 @@ export async function validateResponses({
|
|
|
564
485
|
}
|
|
565
486
|
|
|
566
487
|
const blocksForDataValidation = getBlocksForDataValidation(
|
|
567
|
-
|
|
488
|
+
columnsRequest,
|
|
568
489
|
batchBlocks,
|
|
569
490
|
validatedResponses.validatedBlocks?.length ? validatedResponses.validatedBlocks : undefined
|
|
570
491
|
);
|
|
@@ -573,50 +494,31 @@ export async function validateResponses({
|
|
|
573
494
|
throw new DownloadByRangeError(
|
|
574
495
|
{
|
|
575
496
|
code: DownloadByRangeErrorCode.MISSING_BLOCKS_RESPONSE,
|
|
576
|
-
...requestsLogMeta({
|
|
497
|
+
...requestsLogMeta({columnsRequest}),
|
|
577
498
|
},
|
|
578
499
|
"No blocks in data request slot range to validate data response against"
|
|
579
500
|
);
|
|
580
501
|
}
|
|
581
502
|
|
|
582
|
-
if (
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
"No blobSidecars to validate against blobsRequest"
|
|
590
|
-
);
|
|
591
|
-
}
|
|
592
|
-
|
|
593
|
-
validatedResponses.validatedBlobSidecars = await validateBlobsByRangeResponse(
|
|
594
|
-
blocksForDataValidation,
|
|
595
|
-
blobSidecars
|
|
503
|
+
if (!columnSidecars) {
|
|
504
|
+
throw new DownloadByRangeError(
|
|
505
|
+
{
|
|
506
|
+
code: DownloadByRangeErrorCode.MISSING_COLUMNS_RESPONSE,
|
|
507
|
+
...requestsLogMeta({columnsRequest}),
|
|
508
|
+
},
|
|
509
|
+
"No columnSidecars to check columnRequest against"
|
|
596
510
|
);
|
|
597
511
|
}
|
|
598
512
|
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
}
|
|
609
|
-
|
|
610
|
-
const validatedColumnSidecarsResult = await validateColumnsByRangeResponse(
|
|
611
|
-
config,
|
|
612
|
-
columnsRequest,
|
|
613
|
-
blocksForDataValidation,
|
|
614
|
-
columnSidecars,
|
|
615
|
-
peerDasMetrics
|
|
616
|
-
);
|
|
617
|
-
validatedResponses.validatedColumnSidecars = validatedColumnSidecarsResult.result;
|
|
618
|
-
warnings = validatedColumnSidecarsResult.warnings;
|
|
619
|
-
}
|
|
513
|
+
const validatedColumnSidecarsResult = await validateColumnsByRangeResponse(
|
|
514
|
+
config,
|
|
515
|
+
columnsRequest,
|
|
516
|
+
blocksForDataValidation,
|
|
517
|
+
columnSidecars,
|
|
518
|
+
peerDasMetrics
|
|
519
|
+
);
|
|
520
|
+
validatedResponses.validatedColumnSidecars = validatedColumnSidecarsResult.result;
|
|
521
|
+
warnings = validatedColumnSidecarsResult.warnings;
|
|
620
522
|
|
|
621
523
|
// Parent columns (by-root): KZG-validate against parent's bid commitments and append.
|
|
622
524
|
if (parentPayload !== undefined) {
|
|
@@ -779,79 +681,6 @@ export function validateBlockByRangeResponse(
|
|
|
779
681
|
};
|
|
780
682
|
}
|
|
781
683
|
|
|
782
|
-
/**
|
|
783
|
-
* Should not be called directly. Only exported for unit testing purposes.
|
|
784
|
-
* This is used only in Deneb and Electra
|
|
785
|
-
*/
|
|
786
|
-
export async function validateBlobsByRangeResponse(
|
|
787
|
-
dataRequestBlocks: ValidatedBlock[],
|
|
788
|
-
blobSidecars: deneb.BlobSidecars
|
|
789
|
-
): Promise<ValidatedBlobSidecars[]> {
|
|
790
|
-
const expectedBlobCount = dataRequestBlocks.reduce(
|
|
791
|
-
(acc, {block}) =>
|
|
792
|
-
(block as SignedBeaconBlock<ForkPostDeneb & ForkPreFulu>).message.body.blobKzgCommitments.length + acc,
|
|
793
|
-
0
|
|
794
|
-
);
|
|
795
|
-
if (blobSidecars.length > expectedBlobCount) {
|
|
796
|
-
throw new DownloadByRangeError(
|
|
797
|
-
{
|
|
798
|
-
code: DownloadByRangeErrorCode.EXTRA_BLOBS,
|
|
799
|
-
expected: expectedBlobCount,
|
|
800
|
-
actual: blobSidecars.length,
|
|
801
|
-
},
|
|
802
|
-
"Extra blobs received in BlobSidecarsByRange response"
|
|
803
|
-
);
|
|
804
|
-
}
|
|
805
|
-
if (blobSidecars.length < expectedBlobCount) {
|
|
806
|
-
throw new DownloadByRangeError(
|
|
807
|
-
{
|
|
808
|
-
code: DownloadByRangeErrorCode.MISSING_BLOBS,
|
|
809
|
-
expected: expectedBlobCount,
|
|
810
|
-
actual: blobSidecars.length,
|
|
811
|
-
},
|
|
812
|
-
"Missing blobs in BlobSidecarsByRange response"
|
|
813
|
-
);
|
|
814
|
-
}
|
|
815
|
-
|
|
816
|
-
const validateSidecarsPromises: Promise<ValidatedBlobSidecars>[] = [];
|
|
817
|
-
for (let blockIndex = 0, blobSidecarIndex = 0; blockIndex < dataRequestBlocks.length; blockIndex++) {
|
|
818
|
-
const {block, blockRoot} = dataRequestBlocks[blockIndex];
|
|
819
|
-
const blockKzgCommitments = (block as SignedBeaconBlock<ForkPostDeneb & ForkPreFulu>).message.body
|
|
820
|
-
.blobKzgCommitments;
|
|
821
|
-
if (blockKzgCommitments.length === 0) {
|
|
822
|
-
continue;
|
|
823
|
-
}
|
|
824
|
-
|
|
825
|
-
const blockBlobSidecars = blobSidecars.slice(blobSidecarIndex, blobSidecarIndex + blockKzgCommitments.length);
|
|
826
|
-
blobSidecarIndex += blockKzgCommitments.length;
|
|
827
|
-
|
|
828
|
-
for (let i = 0; i < blockBlobSidecars.length; i++) {
|
|
829
|
-
if (blockBlobSidecars[i].index !== i) {
|
|
830
|
-
throw new DownloadByRangeError(
|
|
831
|
-
{
|
|
832
|
-
code: DownloadByRangeErrorCode.OUT_OF_ORDER_BLOBS,
|
|
833
|
-
slot: block.message.slot,
|
|
834
|
-
},
|
|
835
|
-
"Blob sidecars not in order or do not match expected indexes in BlobSidecarsByRange response"
|
|
836
|
-
);
|
|
837
|
-
}
|
|
838
|
-
}
|
|
839
|
-
|
|
840
|
-
validateSidecarsPromises.push(
|
|
841
|
-
validateBlockBlobSidecars(
|
|
842
|
-
null, // do not pass chain here so we do not validate header signature
|
|
843
|
-
block.message.slot,
|
|
844
|
-
blockRoot,
|
|
845
|
-
blockKzgCommitments.length,
|
|
846
|
-
blockBlobSidecars
|
|
847
|
-
).then(() => ({blockRoot, blobSidecars: blockBlobSidecars}))
|
|
848
|
-
);
|
|
849
|
-
}
|
|
850
|
-
|
|
851
|
-
// Await all sidecar validations in parallel
|
|
852
|
-
return Promise.all(validateSidecarsPromises);
|
|
853
|
-
}
|
|
854
|
-
|
|
855
684
|
/**
|
|
856
685
|
* Should not be called directly. Only exported for unit testing purposes
|
|
857
686
|
*
|
|
@@ -1128,12 +957,10 @@ export function getBlocksForDataValidation(
|
|
|
1128
957
|
return dataRequestBlocks;
|
|
1129
958
|
}
|
|
1130
959
|
|
|
1131
|
-
function requestsLogMeta({blocksRequest,
|
|
960
|
+
function requestsLogMeta({blocksRequest, columnsRequest}: DownloadByRangeRequests) {
|
|
1132
961
|
const logMeta: {
|
|
1133
962
|
blockStartSlot?: number;
|
|
1134
963
|
blockCount?: number;
|
|
1135
|
-
blobStartSlot?: number;
|
|
1136
|
-
blobCount?: number;
|
|
1137
964
|
columnStartSlot?: number;
|
|
1138
965
|
columnCount?: number;
|
|
1139
966
|
} = {};
|
|
@@ -1141,10 +968,6 @@ function requestsLogMeta({blocksRequest, blobsRequest, columnsRequest}: Download
|
|
|
1141
968
|
logMeta.blockStartSlot = blocksRequest.startSlot;
|
|
1142
969
|
logMeta.blockCount = blocksRequest.count;
|
|
1143
970
|
}
|
|
1144
|
-
if (blobsRequest) {
|
|
1145
|
-
logMeta.blobStartSlot = blobsRequest.startSlot;
|
|
1146
|
-
logMeta.blobCount = blobsRequest.count;
|
|
1147
|
-
}
|
|
1148
971
|
if (columnsRequest) {
|
|
1149
972
|
logMeta.columnStartSlot = columnsRequest.startSlot;
|
|
1150
973
|
logMeta.columnCount = columnsRequest.count;
|
|
@@ -1154,7 +977,6 @@ function requestsLogMeta({blocksRequest, blobsRequest, columnsRequest}: Download
|
|
|
1154
977
|
|
|
1155
978
|
export enum DownloadByRangeErrorCode {
|
|
1156
979
|
MISSING_BLOCKS_RESPONSE = "DOWNLOAD_BY_RANGE_ERROR_MISSING_BLOCK_RESPONSE",
|
|
1157
|
-
MISSING_BLOBS_RESPONSE = "DOWNLOAD_BY_RANGE_ERROR_MISSING_BLOBS_RESPONSE",
|
|
1158
980
|
MISSING_COLUMNS_RESPONSE = "DOWNLOAD_BY_RANGE_ERROR_MISSING_COLUMNS_RESPONSE",
|
|
1159
981
|
|
|
1160
982
|
/** Error at the reqresp layer */
|
|
@@ -1167,10 +989,6 @@ export enum DownloadByRangeErrorCode {
|
|
|
1167
989
|
OUT_OF_RANGE_BLOCKS = "DOWNLOAD_BY_RANGE_OUT_OF_RANGE_BLOCKS",
|
|
1168
990
|
OUT_OF_ORDER_BLOCKS = "DOWNLOAD_BY_RANGE_OUT_OF_ORDER_BLOCKS",
|
|
1169
991
|
|
|
1170
|
-
MISSING_BLOBS = "DOWNLOAD_BY_RANGE_ERROR_MISSING_BLOBS",
|
|
1171
|
-
OUT_OF_ORDER_BLOBS = "DOWNLOAD_BY_RANGE_ERROR_OUT_OF_ORDER_BLOBS",
|
|
1172
|
-
EXTRA_BLOBS = "DOWNLOAD_BY_RANGE_ERROR_EXTRA_BLOBS",
|
|
1173
|
-
|
|
1174
992
|
MISSING_COLUMNS = "DOWNLOAD_BY_RANGE_ERROR_MISSING_COLUMNS",
|
|
1175
993
|
OVER_COLUMNS = "DOWNLOAD_BY_RANGE_ERROR_OVER_COLUMNS",
|
|
1176
994
|
EXTRA_COLUMNS = "DOWNLOAD_BY_RANGE_ERROR_EXTRA_COLUMNS",
|
|
@@ -1195,14 +1013,9 @@ export enum DownloadByRangeErrorCode {
|
|
|
1195
1013
|
|
|
1196
1014
|
export type DownloadByRangeErrorType =
|
|
1197
1015
|
| {
|
|
1198
|
-
code:
|
|
1199
|
-
| DownloadByRangeErrorCode.MISSING_BLOCKS_RESPONSE
|
|
1200
|
-
| DownloadByRangeErrorCode.MISSING_BLOBS_RESPONSE
|
|
1201
|
-
| DownloadByRangeErrorCode.MISSING_COLUMNS_RESPONSE;
|
|
1016
|
+
code: DownloadByRangeErrorCode.MISSING_BLOCKS_RESPONSE | DownloadByRangeErrorCode.MISSING_COLUMNS_RESPONSE;
|
|
1202
1017
|
blockStartSlot?: number;
|
|
1203
1018
|
blockCount?: number;
|
|
1204
|
-
blobStartSlot?: number;
|
|
1205
|
-
blobCount?: number;
|
|
1206
1019
|
columnStartSlot?: number;
|
|
1207
1020
|
columnCount?: number;
|
|
1208
1021
|
}
|
|
@@ -1223,8 +1036,6 @@ export type DownloadByRangeErrorType =
|
|
|
1223
1036
|
code: DownloadByRangeErrorCode.REQ_RESP_ERROR;
|
|
1224
1037
|
blockStartSlot?: number;
|
|
1225
1038
|
blockCount?: number;
|
|
1226
|
-
blobStartSlot?: number;
|
|
1227
|
-
blobCount?: number;
|
|
1228
1039
|
columnStartSlot?: number;
|
|
1229
1040
|
columnCount?: number;
|
|
1230
1041
|
reason: string;
|
|
@@ -1241,19 +1052,9 @@ export type DownloadByRangeErrorType =
|
|
|
1241
1052
|
actual: number;
|
|
1242
1053
|
}
|
|
1243
1054
|
| {
|
|
1244
|
-
code: DownloadByRangeErrorCode.
|
|
1245
|
-
expected: number;
|
|
1246
|
-
actual: number;
|
|
1247
|
-
}
|
|
1248
|
-
| {
|
|
1249
|
-
code: DownloadByRangeErrorCode.OUT_OF_ORDER_BLOBS | DownloadByRangeErrorCode.OUT_OF_ORDER_COLUMNS;
|
|
1055
|
+
code: DownloadByRangeErrorCode.OUT_OF_ORDER_COLUMNS;
|
|
1250
1056
|
slot: number;
|
|
1251
1057
|
}
|
|
1252
|
-
| {
|
|
1253
|
-
code: DownloadByRangeErrorCode.EXTRA_BLOBS;
|
|
1254
|
-
expected: number;
|
|
1255
|
-
actual: number;
|
|
1256
|
-
}
|
|
1257
1058
|
| {
|
|
1258
1059
|
code: DownloadByRangeErrorCode.OVER_COLUMNS;
|
|
1259
1060
|
max: number;
|