@lodestar/beacon-node 1.51.0-dev.f8eff664d2 → 1.51.0-dev.f921fbf6b7
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/api.js +1 -1
- package/lib/api/impl/api.js.map +1 -1
- package/lib/api/impl/beacon/blocks/index.d.ts +2 -1
- package/lib/api/impl/beacon/blocks/index.d.ts.map +1 -1
- package/lib/api/impl/beacon/blocks/index.js +48 -95
- package/lib/api/impl/beacon/blocks/index.js.map +1 -1
- package/lib/api/impl/beacon/index.d.ts +2 -1
- package/lib/api/impl/beacon/index.d.ts.map +1 -1
- package/lib/api/impl/beacon/index.js +2 -2
- package/lib/api/impl/beacon/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/index.d.ts.map +1 -1
- package/lib/api/impl/beacon/state/index.js +8 -2
- package/lib/api/impl/beacon/state/index.js.map +1 -1
- package/lib/api/impl/beacon/state/utils.d.ts +3 -2
- package/lib/api/impl/beacon/state/utils.d.ts.map +1 -1
- package/lib/api/impl/beacon/state/utils.js +17 -9
- package/lib/api/impl/beacon/state/utils.js.map +1 -1
- package/lib/api/impl/debug/index.d.ts.map +1 -1
- package/lib/api/impl/debug/index.js +3 -0
- package/lib/api/impl/debug/index.js.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 +143 -35
- package/lib/api/impl/validator/index.js.map +1 -1
- package/lib/api/options.d.ts +2 -0
- package/lib/api/options.d.ts.map +1 -1
- package/lib/api/options.js +1 -0
- package/lib/api/options.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 +1 -0
- 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 +61 -97
- package/lib/chain/archiveStore/utils/archiveBlocks.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 +42 -57
- 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 +82 -20
- 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 +7 -19
- package/lib/chain/blocks/types.d.ts.map +1 -1
- package/lib/chain/blocks/types.js +5 -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 +26 -4
- package/lib/chain/chain.d.ts.map +1 -1
- package/lib/chain/chain.js +127 -43
- 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/executionPayloadBid.d.ts +11 -1
- package/lib/chain/errors/executionPayloadBid.d.ts.map +1 -1
- package/lib/chain/errors/executionPayloadBid.js +2 -0
- package/lib/chain/errors/executionPayloadBid.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/inclusionList.d.ts +60 -0
- package/lib/chain/errors/inclusionList.d.ts.map +1 -0
- package/lib/chain/errors/inclusionList.js +19 -0
- package/lib/chain/errors/inclusionList.js.map +1 -0
- package/lib/chain/errors/index.d.ts +1 -1
- package/lib/chain/errors/index.d.ts.map +1 -1
- package/lib/chain/errors/index.js +1 -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 +10 -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/inclusionListStore.d.ts +63 -0
- package/lib/chain/opPools/inclusionListStore.d.ts.map +1 -0
- package/lib/chain/opPools/inclusionListStore.js +171 -0
- package/lib/chain/opPools/inclusionListStore.js.map +1 -0
- package/lib/chain/opPools/index.d.ts +2 -0
- package/lib/chain/opPools/index.d.ts.map +1 -1
- package/lib/chain/opPools/index.js +2 -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 +6 -3
- package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -1
- package/lib/chain/produceBlock/produceBlockBody.js +32 -11
- 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 +2 -2
- package/lib/chain/regen/interface.d.ts.map +1 -1
- package/lib/chain/regen/interface.js +1 -1
- package/lib/chain/regen/interface.js.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/executionPayloadBid.d.ts +0 -15
- package/lib/chain/validation/executionPayloadBid.d.ts.map +1 -1
- package/lib/chain/validation/executionPayloadBid.js +37 -158
- 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/inclusionList.d.ts +14 -0
- package/lib/chain/validation/inclusionList.d.ts.map +1 -0
- package/lib/chain/validation/inclusionList.js +150 -0
- package/lib/chain/validation/inclusionList.js.map +1 -0
- package/lib/chain/validation/index.d.ts +1 -0
- package/lib/chain/validation/index.d.ts.map +1 -1
- package/lib/chain/validation/index.js +1 -0
- package/lib/chain/validation/index.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 +34 -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/builder/validateBid.d.ts.map +1 -1
- package/lib/execution/builder/validateBid.js +14 -1
- package/lib/execution/builder/validateBid.js.map +1 -1
- package/lib/execution/engine/blobVersionedHashes.d.ts +1 -1
- package/lib/execution/engine/blobVersionedHashes.d.ts.map +1 -1
- package/lib/execution/engine/blobVersionedHashes.js.map +1 -1
- package/lib/execution/engine/disabled.d.ts +1 -0
- package/lib/execution/engine/disabled.d.ts.map +1 -1
- package/lib/execution/engine/disabled.js +3 -0
- package/lib/execution/engine/disabled.js.map +1 -1
- package/lib/execution/engine/http.d.ts +12 -8
- package/lib/execution/engine/http.d.ts.map +1 -1
- package/lib/execution/engine/http.js +35 -14
- 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 +29 -8
- 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 +5 -6
- package/lib/execution/engine/jsonRpcTransport.d.ts.map +1 -1
- package/lib/execution/engine/jsonRpcTransport.js +34 -20
- package/lib/execution/engine/jsonRpcTransport.js.map +1 -1
- package/lib/execution/engine/mock.d.ts +1 -1
- package/lib/execution/engine/mock.d.ts.map +1 -1
- package/lib/execution/engine/mock.js +31 -11
- package/lib/execution/engine/mock.js.map +1 -1
- package/lib/execution/engine/payloadIdCache.d.ts +5 -3
- package/lib/execution/engine/payloadIdCache.d.ts.map +1 -1
- package/lib/execution/engine/payloadIdCache.js +15 -4
- package/lib/execution/engine/payloadIdCache.js.map +1 -1
- package/lib/execution/engine/restTransport.d.ts +4 -5
- package/lib/execution/engine/restTransport.d.ts.map +1 -1
- package/lib/execution/engine/restTransport.js +4 -15
- package/lib/execution/engine/restTransport.js.map +1 -1
- package/lib/execution/engine/sszTypes.d.ts +38 -47
- 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 +4 -14
- package/lib/execution/engine/transport.d.ts.map +1 -1
- package/lib/execution/engine/types.d.ts +25 -9
- package/lib/execution/engine/types.d.ts.map +1 -1
- package/lib/execution/engine/types.js +19 -14
- 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 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -0
- package/lib/index.js.map +1 -1
- package/lib/metrics/metrics/beacon.d.ts +16 -9
- package/lib/metrics/metrics/beacon.d.ts.map +1 -1
- package/lib/metrics/metrics/beacon.js +35 -30
- package/lib/metrics/metrics/beacon.js.map +1 -1
- package/lib/metrics/metrics/lodestar.d.ts +42 -8
- package/lib/metrics/metrics/lodestar.d.ts.map +1 -1
- package/lib/metrics/metrics/lodestar.js +104 -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 +8 -9
- package/lib/network/gossip/interface.d.ts.map +1 -1
- package/lib/network/gossip/interface.js +1 -1
- package/lib/network/gossip/interface.js.map +1 -1
- package/lib/network/gossip/topic.d.ts +13 -21
- package/lib/network/gossip/topic.d.ts.map +1 -1
- package/lib/network/gossip/topic.js +13 -24
- package/lib/network/gossip/topic.js.map +1 -1
- package/lib/network/interface.d.ts +5 -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 +9 -7
- package/lib/network/network.d.ts.map +1 -1
- package/lib/network/network.js +58 -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/enrSubnetsDeserialize.d.ts.map +1 -1
- package/lib/network/peers/utils/enrSubnetsDeserialize.js +5 -2
- package/lib/network/peers/utils/enrSubnetsDeserialize.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 +118 -149
- package/lib/network/processor/gossipHandlers.js.map +1 -1
- package/lib/network/processor/gossipQueues/index.js +6 -6
- package/lib/network/processor/gossipQueues/index.js.map +1 -1
- package/lib/network/processor/gossipValidatorFn.js +5 -5
- package/lib/network/processor/gossipValidatorFn.js.map +1 -1
- package/lib/network/processor/index.d.ts +11 -0
- package/lib/network/processor/index.d.ts.map +1 -1
- package/lib/network/processor/index.js +66 -30
- package/lib/network/processor/index.js.map +1 -1
- package/lib/network/reqresp/ReqRespBeaconNode.js +6 -3
- package/lib/network/reqresp/ReqRespBeaconNode.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/inclusionListsByIndices.d.ts +10 -0
- package/lib/network/reqresp/handlers/inclusionListsByIndices.d.ts.map +1 -0
- package/lib/network/reqresp/handlers/inclusionListsByIndices.js +30 -0
- package/lib/network/reqresp/handlers/inclusionListsByIndices.js.map +1 -0
- package/lib/network/reqresp/handlers/index.d.ts.map +1 -1
- package/lib/network/reqresp/handlers/index.js +6 -12
- package/lib/network/reqresp/handlers/index.js.map +1 -1
- package/lib/network/reqresp/protocols.d.ts +1 -2
- package/lib/network/reqresp/protocols.d.ts.map +1 -1
- package/lib/network/reqresp/protocols.js +5 -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 +5 -17
- package/lib/network/reqresp/rateLimit.js.map +1 -1
- package/lib/network/reqresp/types.d.ts +6 -9
- package/lib/network/reqresp/types.d.ts.map +1 -1
- package/lib/network/reqresp/types.js +4 -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 +7 -0
- package/lib/sync/sync.d.ts.map +1 -1
- package/lib/sync/sync.js +61 -3
- package/lib/sync/sync.js.map +1 -1
- package/lib/sync/unknownBlock.d.ts.map +1 -1
- package/lib/sync/unknownBlock.js +43 -25
- 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 +31 -32
- package/src/api/impl/api.ts +1 -1
- package/src/api/impl/beacon/blocks/index.ts +81 -126
- package/src/api/impl/beacon/index.ts +3 -1
- package/src/api/impl/beacon/pool/index.ts +31 -1
- package/src/api/impl/beacon/state/index.ts +10 -1
- package/src/api/impl/beacon/state/utils.ts +20 -10
- package/src/api/impl/debug/index.ts +4 -0
- package/src/api/impl/validator/index.ts +178 -39
- package/src/api/options.ts +3 -0
- package/src/chain/GetBlobsTracker.ts +82 -52
- package/src/chain/archiveStore/archiveStore.ts +1 -0
- package/src/chain/archiveStore/utils/archiveBlocks.ts +76 -130
- 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 +58 -77
- package/src/chain/blocks/importExecutionPayload.ts +123 -36
- package/src/chain/blocks/index.ts +11 -4
- package/src/chain/blocks/payloadEnvelopeProcessor.ts +35 -24
- package/src/chain/blocks/types.ts +8 -29
- 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 +144 -42
- package/src/chain/emitter.ts +8 -8
- package/src/chain/errors/blockError.ts +1 -1
- package/src/chain/errors/executionPayloadBid.ts +12 -0
- package/src/chain/errors/executionPayloadEnvelope.ts +8 -0
- package/src/chain/errors/inclusionList.ts +38 -0
- package/src/chain/errors/index.ts +1 -1
- package/src/chain/forkChoice/index.ts +11 -0
- package/src/chain/forkChoiceExecutionEngine.ts +183 -0
- package/src/chain/interface.ts +11 -6
- package/src/chain/opPools/aggregatedAttestationPool.ts +246 -43
- package/src/chain/opPools/attestationPool.ts +16 -4
- package/src/chain/opPools/inclusionListStore.ts +208 -0
- package/src/chain/opPools/index.ts +2 -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 +67 -22
- package/src/chain/proposerTracker.ts +94 -0
- package/src/chain/regen/interface.ts +2 -2
- package/src/chain/regen/queued.ts +6 -4
- package/src/chain/seenCache/seenGossipBlockInput.ts +9 -93
- package/src/chain/validation/executionPayloadBid.ts +54 -183
- package/src/chain/validation/executionPayloadEnvelope.ts +68 -1
- package/src/chain/validation/inclusionList.ts +192 -0
- package/src/chain/validation/index.ts +1 -0
- package/src/chain/validatorMonitor.ts +0 -6
- package/src/db/beacon.ts +44 -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/builder/validateBid.ts +23 -2
- package/src/execution/engine/blobVersionedHashes.ts +1 -1
- package/src/execution/engine/disabled.ts +4 -0
- package/src/execution/engine/http.ts +59 -47
- package/src/execution/engine/index.ts +1 -1
- package/src/execution/engine/interface.ts +46 -13
- package/src/execution/engine/jsonRpcTransport.ts +56 -31
- package/src/execution/engine/mock.ts +32 -14
- package/src/execution/engine/payloadIdCache.ts +24 -6
- package/src/execution/engine/restTransport.ts +18 -23
- package/src/execution/engine/sszTypes.ts +0 -9
- package/src/execution/engine/transport.ts +13 -17
- package/src/execution/engine/types.ts +44 -24
- package/src/execution/engine/utils.ts +4 -2
- package/src/index.ts +2 -0
- package/src/metrics/metrics/beacon.ts +37 -30
- package/src/metrics/metrics/lodestar.ts +106 -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 +5 -5
- package/src/network/gossip/topic.ts +14 -25
- package/src/network/interface.ts +4 -5
- package/src/network/libp2p/index.ts +5 -1
- package/src/network/network.ts +66 -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/enrSubnetsDeserialize.ts +5 -2
- 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 +150 -183
- package/src/network/processor/gossipQueues/index.ts +6 -6
- package/src/network/processor/gossipValidatorFn.ts +5 -5
- package/src/network/processor/index.ts +58 -28
- package/src/network/processor/types.ts +1 -1
- package/src/network/reqresp/ReqRespBeaconNode.ts +7 -7
- package/src/network/reqresp/handlers/beaconBlocksByRange.ts +2 -2
- package/src/network/reqresp/handlers/inclusionListsByIndices.ts +44 -0
- package/src/network/reqresp/handlers/index.ts +5 -17
- package/src/network/reqresp/protocols.ts +6 -12
- package/src/network/reqresp/rateLimit.ts +5 -17
- package/src/network/reqresp/types.ts +6 -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 +65 -4
- package/src/sync/unknownBlock.ts +48 -36
- 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
|
@@ -21,9 +21,9 @@ import {
|
|
|
21
21
|
Slot,
|
|
22
22
|
SubnetID,
|
|
23
23
|
UintNum64,
|
|
24
|
-
deneb,
|
|
25
24
|
fulu,
|
|
26
25
|
gloas,
|
|
26
|
+
isGloasBeaconBlock,
|
|
27
27
|
isGloasDataColumnSidecar,
|
|
28
28
|
ssz,
|
|
29
29
|
sszTypesFor,
|
|
@@ -38,13 +38,11 @@ import {
|
|
|
38
38
|
} from "../../chain/blocks/blockInput/index.js";
|
|
39
39
|
import {PayloadError, PayloadErrorCode} from "../../chain/blocks/importExecutionPayload.js";
|
|
40
40
|
import {PayloadEnvelopeInput, PayloadEnvelopeInputSource} from "../../chain/blocks/payloadEnvelopeInput/index.js";
|
|
41
|
-
import {
|
|
41
|
+
import {InclusionListSource} from "../../chain/blocks/types.js";
|
|
42
42
|
import {ChainEvent} from "../../chain/emitter.js";
|
|
43
43
|
import {
|
|
44
44
|
AttestationError,
|
|
45
45
|
AttestationErrorCode,
|
|
46
|
-
BlobSidecarErrorCode,
|
|
47
|
-
BlobSidecarGossipError,
|
|
48
46
|
BlockError,
|
|
49
47
|
BlockErrorCode,
|
|
50
48
|
BlockGossipError,
|
|
@@ -59,13 +57,16 @@ import {
|
|
|
59
57
|
SyncCommitteeError,
|
|
60
58
|
} from "../../chain/errors/index.js";
|
|
61
59
|
import {IBeaconChain} from "../../chain/interface.js";
|
|
62
|
-
import {validateGossipBlobSidecar} from "../../chain/validation/blobSidecar.js";
|
|
63
60
|
import {
|
|
64
61
|
validateGossipFuluDataColumnSidecar,
|
|
65
62
|
validateGossipGloasDataColumnSidecar,
|
|
66
63
|
} from "../../chain/validation/dataColumnSidecar.js";
|
|
67
64
|
import {validateGossipExecutionPayloadBid} from "../../chain/validation/executionPayloadBid.js";
|
|
68
|
-
import {
|
|
65
|
+
import {
|
|
66
|
+
validateGossipExecutionPayloadEnvelope,
|
|
67
|
+
validateGossipExecutionPayloadEnvelopeSerialized,
|
|
68
|
+
} from "../../chain/validation/executionPayloadEnvelope.js";
|
|
69
|
+
import {InclusionListValidationResult, validateGossipInclusionList} from "../../chain/validation/inclusionList.js";
|
|
69
70
|
import {
|
|
70
71
|
AggregateAndProofValidationResult,
|
|
71
72
|
GossipAttestation,
|
|
@@ -87,7 +88,6 @@ import {validateGossipPayloadAttestationMessage} from "../../chain/validation/pa
|
|
|
87
88
|
import {validateGossipProposerPreferences} from "../../chain/validation/proposerPreferences.js";
|
|
88
89
|
import {OpSource} from "../../chain/validatorMonitor.js";
|
|
89
90
|
import {Metrics} from "../../metrics/index.js";
|
|
90
|
-
import {kzgCommitmentToVersionedHash} from "../../util/blobs.js";
|
|
91
91
|
import {getBlobKzgCommitments, getDataColumnSidecarSlot} from "../../util/dataColumns.js";
|
|
92
92
|
import {callInNextEventLoop} from "../../util/eventLoop.js";
|
|
93
93
|
import {INetworkCore} from "../core/index.js";
|
|
@@ -149,6 +149,31 @@ export function getGossipHandlers(modules: ValidatorFnsModules, options: GossipH
|
|
|
149
149
|
*/
|
|
150
150
|
function getSequentialHandlers(modules: ValidatorFnsModules, options: GossipHandlerOpts): SequentialGossipHandlers {
|
|
151
151
|
const {chain, config, metrics, logger, core} = modules;
|
|
152
|
+
const incompletePayloadWaits = new WeakSet<PayloadEnvelopeInput>();
|
|
153
|
+
|
|
154
|
+
function scheduleIncompletePayloadEnvelope(payloadInput: PayloadEnvelopeInput, peer: string): void {
|
|
155
|
+
if (payloadInput.isComplete() || incompletePayloadWaits.has(payloadInput)) {
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
incompletePayloadWaits.add(payloadInput);
|
|
159
|
+
|
|
160
|
+
const fork = config.getForkName(payloadInput.slot);
|
|
161
|
+
const cutoffTimeMs = getCutoffTimeMs(chain, payloadInput.slot, config.getPayloadDueMs(fork));
|
|
162
|
+
payloadInput.waitForEnvelopeAndAllData(cutoffTimeMs).catch(() => {
|
|
163
|
+
if (
|
|
164
|
+
payloadInput.isComplete() ||
|
|
165
|
+
chain.seenPayloadEnvelopeInputCache.get(payloadInput.blockRootHex) !== payloadInput
|
|
166
|
+
) {
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
chain.logger.debug("Payload envelope incomplete at payload deadline", payloadInput.getLogMeta());
|
|
170
|
+
chain.emitter.emit(ChainEvent.incompletePayloadEnvelope, {
|
|
171
|
+
payloadInput,
|
|
172
|
+
peer,
|
|
173
|
+
source: BlockInputSource.gossip,
|
|
174
|
+
});
|
|
175
|
+
});
|
|
176
|
+
}
|
|
152
177
|
|
|
153
178
|
/**
|
|
154
179
|
* Add a gossip block to the seen caches. The proposer signature of the block MUST be verified.
|
|
@@ -295,90 +320,6 @@ function getSequentialHandlers(modules: ValidatorFnsModules, options: GossipHand
|
|
|
295
320
|
}
|
|
296
321
|
}
|
|
297
322
|
|
|
298
|
-
async function validateBeaconBlob(
|
|
299
|
-
blobSidecar: deneb.BlobSidecar,
|
|
300
|
-
subnet: SubnetID,
|
|
301
|
-
peerIdStr: string,
|
|
302
|
-
seenTimestampSec: number
|
|
303
|
-
): Promise<BlockInput> {
|
|
304
|
-
const blobBlockHeader = blobSidecar.signedBlockHeader.message;
|
|
305
|
-
const slot = blobBlockHeader.slot;
|
|
306
|
-
const fork = config.getForkName(slot);
|
|
307
|
-
const blockRootHex = toRootHex(ssz.phase0.BeaconBlockHeader.hashTreeRoot(blobBlockHeader));
|
|
308
|
-
|
|
309
|
-
const delaySec = chain.clock.secFromSlot(slot, seenTimestampSec);
|
|
310
|
-
const recvToValLatency = Date.now() / 1000 - seenTimestampSec;
|
|
311
|
-
|
|
312
|
-
try {
|
|
313
|
-
await validateGossipBlobSidecar(fork, chain, blobSidecar, subnet);
|
|
314
|
-
const blockInput = chain.seenBlockInputCache.getByBlob({
|
|
315
|
-
blockRootHex,
|
|
316
|
-
blobSidecar,
|
|
317
|
-
source: BlockInputSource.gossip,
|
|
318
|
-
seenTimestampSec,
|
|
319
|
-
peerIdStr,
|
|
320
|
-
});
|
|
321
|
-
const recvToValidation = Date.now() / 1000 - seenTimestampSec;
|
|
322
|
-
const validationTime = recvToValidation - recvToValLatency;
|
|
323
|
-
|
|
324
|
-
metrics?.gossipBlob.recvToValidation.observe(recvToValidation);
|
|
325
|
-
metrics?.gossipBlob.validationTime.observe(validationTime);
|
|
326
|
-
|
|
327
|
-
if (chain.emitter.listenerCount(routes.events.EventType.blobSidecar)) {
|
|
328
|
-
let versionedHash: Uint8Array;
|
|
329
|
-
if (blockInput.hasBlock()) {
|
|
330
|
-
// if block hasn't arrived yet then this will throw and need to calculate the versionedHash as a 1-off
|
|
331
|
-
versionedHash = blockInput.getVersionedHashes()[blobSidecar.index];
|
|
332
|
-
} else {
|
|
333
|
-
versionedHash = kzgCommitmentToVersionedHash(blobSidecar.kzgCommitment);
|
|
334
|
-
}
|
|
335
|
-
chain.emitter.emit(routes.events.EventType.blobSidecar, {
|
|
336
|
-
blockRoot: blockRootHex,
|
|
337
|
-
slot,
|
|
338
|
-
index: blobSidecar.index,
|
|
339
|
-
kzgCommitment: toHex(blobSidecar.kzgCommitment),
|
|
340
|
-
versionedHash: toHex(versionedHash),
|
|
341
|
-
});
|
|
342
|
-
}
|
|
343
|
-
|
|
344
|
-
logger.debug("Received gossip blob", {
|
|
345
|
-
...blockInput.getLogMeta(),
|
|
346
|
-
currentSlot: chain.clock.currentSlot,
|
|
347
|
-
peerId: peerIdStr,
|
|
348
|
-
delaySec,
|
|
349
|
-
subnet,
|
|
350
|
-
recvToValLatency,
|
|
351
|
-
recvToValidation,
|
|
352
|
-
validationTime,
|
|
353
|
-
});
|
|
354
|
-
|
|
355
|
-
return blockInput;
|
|
356
|
-
} catch (e) {
|
|
357
|
-
if (e instanceof BlobSidecarGossipError) {
|
|
358
|
-
// Don't trigger this yet if full block and blobs haven't arrived yet
|
|
359
|
-
if (e.type.code === BlobSidecarErrorCode.PARENT_UNKNOWN) {
|
|
360
|
-
logger.debug("Gossip blob has error", {slot, root: blockRootHex, code: e.type.code});
|
|
361
|
-
// no need to trigger `unknownBlockParent` event here, as we already did it in `validateBeaconBlock()`
|
|
362
|
-
//
|
|
363
|
-
// TODO(fulu): is this note above correct? Could have random blob that we see that could trigger
|
|
364
|
-
// unknownBlockSync. And duplicate addition of a block will be deduplicated by the
|
|
365
|
-
// BlockInputSync event handler. Check this!!
|
|
366
|
-
// events.emit(NetworkEvent.unknownBlockParent, {blockInput, peer: peerIdStr});
|
|
367
|
-
}
|
|
368
|
-
|
|
369
|
-
if (e.action === GossipAction.REJECT) {
|
|
370
|
-
chain.persistInvalidSszValue(
|
|
371
|
-
ssz.deneb.BlobSidecar,
|
|
372
|
-
blobSidecar,
|
|
373
|
-
`gossip_reject_slot_${slot}_index_${blobSidecar.index}`
|
|
374
|
-
);
|
|
375
|
-
}
|
|
376
|
-
}
|
|
377
|
-
|
|
378
|
-
throw e;
|
|
379
|
-
}
|
|
380
|
-
}
|
|
381
|
-
|
|
382
323
|
async function validateBeaconDataColumn(
|
|
383
324
|
dataColumnSidecar: fulu.DataColumnSidecar,
|
|
384
325
|
_dataColumnBytes: Uint8Array,
|
|
@@ -649,8 +590,6 @@ function getSequentialHandlers(modules: ValidatorFnsModules, options: GossipHand
|
|
|
649
590
|
ignoreIfKnown: true,
|
|
650
591
|
// proposer signature already checked in validateBeaconBlock()
|
|
651
592
|
validProposerSignature: true,
|
|
652
|
-
// blobSidecars already checked in validateGossipBlobSidecars()
|
|
653
|
-
validBlobSidecars: BlobSidecarValidation.Individual,
|
|
654
593
|
// It's critical to keep a good number of mesh peers.
|
|
655
594
|
// To do that, the Gossip Job Wait Time should be consistently <3s to avoid the behavior penalties in gossip
|
|
656
595
|
// Gossip Job Wait Time depends on the BLS Job Wait Time
|
|
@@ -678,10 +617,8 @@ function getSequentialHandlers(modules: ValidatorFnsModules, options: GossipHand
|
|
|
678
617
|
|
|
679
618
|
// Immediately attempt fetch of data columns from execution engine as the bid contains kzg commitments
|
|
680
619
|
// which is all the information we need so there is no reason to delay until execution payload arrives
|
|
681
|
-
//
|
|
682
|
-
//
|
|
683
|
-
// Columns fetched here feed payloadInput.addColumn, which resolves waitForAllData for any
|
|
684
|
-
// in-flight importExecutionPayload. No processExecutionPayload trigger needed from this path.
|
|
620
|
+
// Columns fetched here feed payloadInput.addColumn, which resolves the waitForAllData of a
|
|
621
|
+
// pending payload import. No processExecutionPayload trigger needed from this path.
|
|
685
622
|
chain.getBlobsTracker.triggerGetBlobs(payloadInput);
|
|
686
623
|
}
|
|
687
624
|
})
|
|
@@ -691,11 +628,10 @@ function getSequentialHandlers(modules: ValidatorFnsModules, options: GossipHand
|
|
|
691
628
|
|
|
692
629
|
if (e instanceof BlockError) {
|
|
693
630
|
switch (e.type.code) {
|
|
694
|
-
case BlockErrorCode.DATA_UNAVAILABLE:
|
|
695
|
-
//
|
|
631
|
+
case BlockErrorCode.DATA_UNAVAILABLE:
|
|
632
|
+
// Data did not arrive in time, BlockInputSync keeps pulling it and retries the import
|
|
696
633
|
logLevel = LogLevel.debug;
|
|
697
634
|
break;
|
|
698
|
-
}
|
|
699
635
|
// ALREADY_KNOWN should not happen with ignoreIfKnown=true above
|
|
700
636
|
// PARENT_BLOCK_UNKNOWN should not happen, we handled this in validateBeaconBlock() function above
|
|
701
637
|
case BlockErrorCode.ALREADY_KNOWN:
|
|
@@ -763,7 +699,12 @@ function getSequentialHandlers(modules: ValidatorFnsModules, options: GossipHand
|
|
|
763
699
|
// roots per proposer and slot, which bounds full imports over gossip to one alternate
|
|
764
700
|
chain.seenBlockProposers.hasBlockRoot(signedBlock.message.slot, e.type.proposerIndex, e.type.root) &&
|
|
765
701
|
// A sibling with an unknown parent cannot be imported, sync fetches it if its branch becomes relevant
|
|
766
|
-
chain.forkChoice.getBlockHexDefaultStatus(toRootHex(signedBlock.message.parentRoot)) !== null
|
|
702
|
+
chain.forkChoice.getBlockHexDefaultStatus(toRootHex(signedBlock.message.parentRoot)) !== null &&
|
|
703
|
+
(!isGloasBeaconBlock(signedBlock.message) ||
|
|
704
|
+
chain.forkChoice.getBlockHexAndBlockHash(
|
|
705
|
+
toRootHex(signedBlock.message.parentRoot),
|
|
706
|
+
toRootHex(signedBlock.message.body.signedExecutionPayloadBid.message.parentBlockHash)
|
|
707
|
+
) !== null)
|
|
767
708
|
) {
|
|
768
709
|
const blockInput = cacheSignatureVerifiedBlock(
|
|
769
710
|
signedBlock,
|
|
@@ -784,57 +725,6 @@ function getSequentialHandlers(modules: ValidatorFnsModules, options: GossipHand
|
|
|
784
725
|
}
|
|
785
726
|
},
|
|
786
727
|
|
|
787
|
-
[GossipType.blob_sidecar]: async ({
|
|
788
|
-
gossipData,
|
|
789
|
-
topic,
|
|
790
|
-
peerIdStr,
|
|
791
|
-
seenTimestampSec,
|
|
792
|
-
}: GossipHandlerParamGeneric<GossipType.blob_sidecar>) => {
|
|
793
|
-
const {serializedData} = gossipData;
|
|
794
|
-
const blobSidecar = sszDeserialize(topic, serializedData);
|
|
795
|
-
const blobSlot = blobSidecar.signedBlockHeader.message.slot;
|
|
796
|
-
const index = blobSidecar.index;
|
|
797
|
-
|
|
798
|
-
if (config.getForkSeq(blobSlot) < ForkSeq.deneb) {
|
|
799
|
-
throw new GossipActionError(GossipAction.REJECT, {code: "PRE_DENEB_BLOCK"});
|
|
800
|
-
}
|
|
801
|
-
const blockInput = await validateBeaconBlob(blobSidecar, topic.subnet, peerIdStr, seenTimestampSec);
|
|
802
|
-
// Handler - deferred to next event loop so the validation result propagates first
|
|
803
|
-
callInNextEventLoop(() => {
|
|
804
|
-
try {
|
|
805
|
-
chain.serializedCache.set(blobSidecar, serializedData);
|
|
806
|
-
if (!blockInput.hasBlockAndAllData()) {
|
|
807
|
-
const cutoffTimeMs = getCutoffTimeMs(chain, blobSlot, BLOCK_AVAILABILITY_CUTOFF_MS);
|
|
808
|
-
chain.logger.debug("Received gossip blob, waiting for full data availability", {
|
|
809
|
-
msToWait: cutoffTimeMs,
|
|
810
|
-
blobIndex: index,
|
|
811
|
-
...blockInput.getLogMeta(),
|
|
812
|
-
});
|
|
813
|
-
blockInput.waitForAllData(cutoffTimeMs).catch((_e) => {
|
|
814
|
-
chain.logger.debug(
|
|
815
|
-
"Waited for data after receiving gossip blob. Cut-off reached so attempting to fetch remainder of BlockInput",
|
|
816
|
-
{
|
|
817
|
-
blobIndex: index,
|
|
818
|
-
...blockInput.getLogMeta(),
|
|
819
|
-
}
|
|
820
|
-
);
|
|
821
|
-
chain.emitter.emit(ChainEvent.incompleteBlockInput, {
|
|
822
|
-
blockInput,
|
|
823
|
-
peer: peerIdStr,
|
|
824
|
-
source: BlockInputSource.gossip,
|
|
825
|
-
});
|
|
826
|
-
});
|
|
827
|
-
}
|
|
828
|
-
} catch (e) {
|
|
829
|
-
logger.debug(
|
|
830
|
-
"Error handling gossip blob",
|
|
831
|
-
{slot: blobSlot, root: blockInput.blockRootHex, index},
|
|
832
|
-
e as Error
|
|
833
|
-
);
|
|
834
|
-
}
|
|
835
|
-
});
|
|
836
|
-
},
|
|
837
|
-
|
|
838
728
|
[GossipType.data_column_sidecar]: async ({
|
|
839
729
|
gossipData,
|
|
840
730
|
topic,
|
|
@@ -898,28 +788,10 @@ function getSequentialHandlers(modules: ValidatorFnsModules, options: GossipHand
|
|
|
898
788
|
}
|
|
899
789
|
|
|
900
790
|
// NOTE: we do NOT call chain.processExecutionPayload here. That is triggered only by
|
|
901
|
-
// envelope arrival (gossip or API).
|
|
791
|
+
// envelope arrival (gossip or API). A pending payload import is awaiting
|
|
902
792
|
// payloadInput.waitForAllData(); addColumn above will resolve it once hasAllData flips.
|
|
903
793
|
|
|
904
|
-
|
|
905
|
-
const cutoffTimeMs = getCutoffTimeMs(chain, dataColumnSlot, BLOCK_AVAILABILITY_CUTOFF_MS);
|
|
906
|
-
// do not await here to not delay gossip validation
|
|
907
|
-
payloadInput.waitForEnvelopeAndAllData(cutoffTimeMs).catch((_e) => {
|
|
908
|
-
chain.logger.debug(
|
|
909
|
-
"Waited for envelope and data after receiving gossip column. Cut-off reached so emitting incompletePayloadEnvelope",
|
|
910
|
-
{
|
|
911
|
-
dataColumnIndex: index,
|
|
912
|
-
...payloadInputMeta,
|
|
913
|
-
}
|
|
914
|
-
);
|
|
915
|
-
// TODO GLOAS: UnknownBlockSync to handle this event
|
|
916
|
-
chain.emitter.emit(ChainEvent.incompletePayloadEnvelope, {
|
|
917
|
-
payloadInput,
|
|
918
|
-
peer: peerIdStr,
|
|
919
|
-
source: BlockInputSource.gossip,
|
|
920
|
-
});
|
|
921
|
-
});
|
|
922
|
-
}
|
|
794
|
+
scheduleIncompletePayloadEnvelope(payloadInput, peerIdStr);
|
|
923
795
|
} catch (e) {
|
|
924
796
|
logger.debug(
|
|
925
797
|
"Error handling gossip data column",
|
|
@@ -1265,6 +1137,7 @@ function getSequentialHandlers(modules: ValidatorFnsModules, options: GossipHand
|
|
|
1265
1137
|
seenTimestampSec,
|
|
1266
1138
|
}: GossipHandlerParamGeneric<GossipType.execution_payload>) => {
|
|
1267
1139
|
const {serializedData} = gossipData;
|
|
1140
|
+
validateGossipExecutionPayloadEnvelopeSerialized(chain, serializedData);
|
|
1268
1141
|
const signedEnvelope = sszDeserialize(topic, serializedData);
|
|
1269
1142
|
const envelope = signedEnvelope.message;
|
|
1270
1143
|
|
|
@@ -1317,17 +1190,23 @@ function getSequentialHandlers(modules: ValidatorFnsModules, options: GossipHand
|
|
|
1317
1190
|
});
|
|
1318
1191
|
}
|
|
1319
1192
|
|
|
1193
|
+
// Add the envelope in the same tick as validation, otherwise a by-root download that completes
|
|
1194
|
+
// before the next event loop sees no envelope, validates it again and adds it first
|
|
1195
|
+
if (!payloadInput.hasPayloadEnvelope()) {
|
|
1196
|
+
chain.serializedCache.set(signedEnvelope, serializedData);
|
|
1197
|
+
|
|
1198
|
+
payloadInput.addPayloadEnvelope({
|
|
1199
|
+
envelope: signedEnvelope,
|
|
1200
|
+
source: PayloadEnvelopeInputSource.gossip,
|
|
1201
|
+
seenTimestampSec,
|
|
1202
|
+
peerIdStr,
|
|
1203
|
+
});
|
|
1204
|
+
}
|
|
1205
|
+
|
|
1320
1206
|
// Handler - deferred to next event loop so the validation result propagates first
|
|
1321
1207
|
callInNextEventLoop(() => {
|
|
1322
1208
|
try {
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
payloadInput.addPayloadEnvelope({
|
|
1326
|
-
envelope: signedEnvelope,
|
|
1327
|
-
source: PayloadEnvelopeInputSource.gossip,
|
|
1328
|
-
seenTimestampSec,
|
|
1329
|
-
peerIdStr,
|
|
1330
|
-
});
|
|
1209
|
+
scheduleIncompletePayloadEnvelope(payloadInput, peerIdStr);
|
|
1331
1210
|
|
|
1332
1211
|
chain.emitter.emit(routes.events.EventType.executionPayloadGossip, {
|
|
1333
1212
|
slot,
|
|
@@ -1336,12 +1215,18 @@ function getSequentialHandlers(modules: ValidatorFnsModules, options: GossipHand
|
|
|
1336
1215
|
blockRoot: blockRootHex,
|
|
1337
1216
|
});
|
|
1338
1217
|
|
|
1339
|
-
|
|
1218
|
+
// Signature is verified above only for this envelope, one added by another source is verified at import
|
|
1219
|
+
const validSignature = payloadInput.getPayloadEnvelope() === signedEnvelope;
|
|
1220
|
+
chain.processExecutionPayload(payloadInput, {validSignature}).catch((e) => {
|
|
1340
1221
|
// Adjust verbosity based on error type
|
|
1341
1222
|
let logLevel: LogLevel;
|
|
1342
1223
|
|
|
1343
1224
|
if (e instanceof PayloadError) {
|
|
1344
1225
|
switch (e.type.code) {
|
|
1226
|
+
case PayloadErrorCode.DATA_UNAVAILABLE:
|
|
1227
|
+
// Columns did not arrive in time, BlockInputSync keeps pulling them and retries the import
|
|
1228
|
+
logLevel = LogLevel.debug;
|
|
1229
|
+
break;
|
|
1345
1230
|
// BLOCK_NOT_IN_FORK_CHOICE should not happen, validateGossipExecutionPayloadEnvelope above
|
|
1346
1231
|
// already verified the block is in fork choice
|
|
1347
1232
|
case PayloadErrorCode.BLOCK_NOT_IN_FORK_CHOICE:
|
|
@@ -1350,11 +1235,17 @@ function getSequentialHandlers(modules: ValidatorFnsModules, options: GossipHand
|
|
|
1350
1235
|
// Errors might indicate an issue with our node or the connected EL client
|
|
1351
1236
|
logLevel = LogLevel.error;
|
|
1352
1237
|
break;
|
|
1353
|
-
|
|
1238
|
+
case PayloadErrorCode.BLOCK_EXECUTION_INVALID:
|
|
1239
|
+
logLevel = LogLevel.warn;
|
|
1240
|
+
break;
|
|
1241
|
+
// INVALID_SIGNATURE only happens for an envelope added by another source
|
|
1354
1242
|
case PayloadErrorCode.INVALID_SIGNATURE:
|
|
1355
1243
|
case PayloadErrorCode.ENVELOPE_VERIFICATION_ERROR:
|
|
1356
1244
|
case PayloadErrorCode.EXECUTION_ENGINE_INVALID:
|
|
1357
|
-
|
|
1245
|
+
// Penalize only when the stored envelope is the one this peer sent, not one added by another source
|
|
1246
|
+
if (validSignature) {
|
|
1247
|
+
core.reportPeer(peerIdStr, PeerAction.LowToleranceError, "BadGossipPayload");
|
|
1248
|
+
}
|
|
1358
1249
|
// The builder may have signed another envelope that is valid, keeping this one would make
|
|
1359
1250
|
// by-root and range sync reuse it and never import the payload
|
|
1360
1251
|
chain.seenPayloadEnvelopeInputCache.removeInvalid(payloadInput);
|
|
@@ -1501,6 +1392,56 @@ function getSequentialHandlers(modules: ValidatorFnsModules, options: GossipHand
|
|
|
1501
1392
|
}
|
|
1502
1393
|
});
|
|
1503
1394
|
},
|
|
1395
|
+
|
|
1396
|
+
[GossipType.inclusion_list]: async ({
|
|
1397
|
+
gossipData,
|
|
1398
|
+
topic,
|
|
1399
|
+
seenTimestampSec,
|
|
1400
|
+
}: GossipHandlerParamGeneric<GossipType.inclusion_list>) => {
|
|
1401
|
+
const {serializedData} = gossipData;
|
|
1402
|
+
const signedInclusionList = sszDeserialize(topic, serializedData);
|
|
1403
|
+
const {slot} = signedInclusionList.message;
|
|
1404
|
+
|
|
1405
|
+
metrics?.inclusionListsReceived.inc({source: InclusionListSource.gossip});
|
|
1406
|
+
metrics?.inclusionListTransactionsReceived.inc(
|
|
1407
|
+
{source: InclusionListSource.gossip},
|
|
1408
|
+
signedInclusionList.message.transactions.length
|
|
1409
|
+
);
|
|
1410
|
+
|
|
1411
|
+
const timer = metrics?.inclusionListsValidationTime.startTimer();
|
|
1412
|
+
let validationResult: InclusionListValidationResult;
|
|
1413
|
+
try {
|
|
1414
|
+
validationResult = await validateGossipInclusionList(chain, signedInclusionList);
|
|
1415
|
+
} finally {
|
|
1416
|
+
timer?.({source: InclusionListSource.gossip});
|
|
1417
|
+
}
|
|
1418
|
+
const {committeeIndices, totalBytes} = validationResult;
|
|
1419
|
+
|
|
1420
|
+
// Handler - deferred to next event loop so the validation result propagates first
|
|
1421
|
+
callInNextEventLoop(() => {
|
|
1422
|
+
try {
|
|
1423
|
+
metrics?.inclusionListsValid.inc({source: InclusionListSource.gossip});
|
|
1424
|
+
metrics?.inclusionListsValidSize.inc(totalBytes);
|
|
1425
|
+
// Timely only if received within its own slot before the deadline, so a list for the next slot that
|
|
1426
|
+
// passed validation under clock disparity is untimely. Late lists are still stored, marked untimely
|
|
1427
|
+
const secFromSlot = chain.clock.secFromSlot(slot, seenTimestampSec);
|
|
1428
|
+
metrics?.inclusionListArrivalTime.observe(secFromSlot);
|
|
1429
|
+
const isTimely =
|
|
1430
|
+
secFromSlot >= 0 && secFromSlot * 1000 < config.getInclusionListDueMs(config.getForkName(slot));
|
|
1431
|
+
|
|
1432
|
+
const insertOutcome = chain.inclusionListStore.process(signedInclusionList, committeeIndices, isTimely);
|
|
1433
|
+
metrics?.inclusionListStore.insertOutcome.inc({insertOutcome});
|
|
1434
|
+
metrics?.inclusionListStore.size.set(chain.inclusionListStore.size);
|
|
1435
|
+
|
|
1436
|
+
chain.emitter.emit(routes.events.EventType.inclusionList, {
|
|
1437
|
+
version: config.getForkName(slot),
|
|
1438
|
+
data: signedInclusionList,
|
|
1439
|
+
});
|
|
1440
|
+
} catch (e) {
|
|
1441
|
+
logger.debug("Error handling gossip inclusion list", {slot}, e as Error);
|
|
1442
|
+
}
|
|
1443
|
+
});
|
|
1444
|
+
},
|
|
1504
1445
|
};
|
|
1505
1446
|
}
|
|
1506
1447
|
|
|
@@ -1579,6 +1520,32 @@ function getBatchHandlers(modules: ValidatorFnsModules, options: GossipHandlerOp
|
|
|
1579
1520
|
logger.debug("Error adding gossip unaggregated attestation to pool", {subnet}, e as Error);
|
|
1580
1521
|
}
|
|
1581
1522
|
|
|
1523
|
+
// Collected only for vote slots that an upcoming block of a connected validator can include
|
|
1524
|
+
if (isForkPostElectra(fork) && chain.proposerTracker.shouldCollect(indexedAttestation.data.slot)) {
|
|
1525
|
+
try {
|
|
1526
|
+
const insertOutcome = chain.singleAttestationPool.add(
|
|
1527
|
+
attestation as SingleAttestation<ForkPostElectra>,
|
|
1528
|
+
attDataRootHex,
|
|
1529
|
+
validatorCommitteeIndex,
|
|
1530
|
+
committeeSize
|
|
1531
|
+
);
|
|
1532
|
+
metrics?.opPool.singleAttestationPool.gossipInsertOutcome.inc({insertOutcome});
|
|
1533
|
+
} catch (e) {
|
|
1534
|
+
logger.debug(
|
|
1535
|
+
"Error adding gossip single attestation to pool",
|
|
1536
|
+
{
|
|
1537
|
+
slot: indexedAttestation.data.slot,
|
|
1538
|
+
committeeIndex,
|
|
1539
|
+
validatorCommitteeIndex,
|
|
1540
|
+
validatorIndex: (attestation as SingleAttestation<ForkPostElectra>).attesterIndex,
|
|
1541
|
+
subnet,
|
|
1542
|
+
attDataRoot: attDataRootHex,
|
|
1543
|
+
},
|
|
1544
|
+
e as Error
|
|
1545
|
+
);
|
|
1546
|
+
}
|
|
1547
|
+
}
|
|
1548
|
+
|
|
1582
1549
|
// Separate boundary: a pool insertion error above must not skip the fork-choice vote
|
|
1583
1550
|
if (!options.dontSendGossipAttestationsToForkchoice) {
|
|
1584
1551
|
try {
|
|
@@ -25,12 +25,6 @@ const linearGossipQueueOpts: {
|
|
|
25
25
|
} = {
|
|
26
26
|
// validation gossip block asap
|
|
27
27
|
[GossipType.beacon_block]: {maxLength: 1024, type: QueueType.FIFO, dropOpts: {type: DropType.count, count: 1}},
|
|
28
|
-
// gossip length for blob is beacon block length * max blobs per block = 4096
|
|
29
|
-
[GossipType.blob_sidecar]: {
|
|
30
|
-
maxLength: 4096,
|
|
31
|
-
type: QueueType.FIFO,
|
|
32
|
-
dropOpts: {type: DropType.count, count: 1},
|
|
33
|
-
},
|
|
34
28
|
[GossipType.data_column_sidecar]: {
|
|
35
29
|
maxLength: 4096,
|
|
36
30
|
type: QueueType.FIFO,
|
|
@@ -88,6 +82,12 @@ const linearGossipQueueOpts: {
|
|
|
88
82
|
type: QueueType.FIFO,
|
|
89
83
|
dropOpts: {type: DropType.count, count: 1},
|
|
90
84
|
},
|
|
85
|
+
[GossipType.inclusion_list]: {
|
|
86
|
+
// 16 committee members, two lists each under the first-or-second-message rule, 32 per slot
|
|
87
|
+
maxLength: 1024,
|
|
88
|
+
type: QueueType.FIFO,
|
|
89
|
+
dropOpts: {type: DropType.count, count: 1},
|
|
90
|
+
},
|
|
91
91
|
};
|
|
92
92
|
|
|
93
93
|
const indexedGossipQueueOpts: {
|
|
@@ -5,7 +5,6 @@ import {
|
|
|
5
5
|
AttestationError,
|
|
6
6
|
AttestationErrorCode,
|
|
7
7
|
AttesterSlashingErrorCode,
|
|
8
|
-
BlobSidecarErrorCode,
|
|
9
8
|
BlockErrorCode,
|
|
10
9
|
BlsToExecutionChangeErrorCode,
|
|
11
10
|
DataColumnSidecarErrorCode,
|
|
@@ -13,6 +12,7 @@ import {
|
|
|
13
12
|
ExecutionPayloadEnvelopeErrorCode,
|
|
14
13
|
GossipAction,
|
|
15
14
|
GossipActionError,
|
|
15
|
+
InclusionListErrorCode,
|
|
16
16
|
PayloadAttestationErrorCode,
|
|
17
17
|
ProposerPreferencesErrorCode,
|
|
18
18
|
ProposerSlashingErrorCode,
|
|
@@ -54,10 +54,6 @@ const gossipRejectPeerAction: Record<GossipType, RejectPeerActionRule> = {
|
|
|
54
54
|
default: PeerAction.LowToleranceError,
|
|
55
55
|
byCode: {[BlockErrorCode.PROPOSAL_SIGNATURE_INVALID]: PeerAction.Fatal},
|
|
56
56
|
},
|
|
57
|
-
[GossipType.blob_sidecar]: {
|
|
58
|
-
default: PeerAction.LowToleranceError,
|
|
59
|
-
byCode: {[BlobSidecarErrorCode.PROPOSAL_SIGNATURE_INVALID]: PeerAction.Fatal},
|
|
60
|
-
},
|
|
61
57
|
[GossipType.data_column_sidecar]: {
|
|
62
58
|
default: PeerAction.LowToleranceError,
|
|
63
59
|
byCode: {[DataColumnSidecarErrorCode.PROPOSAL_SIGNATURE_INVALID]: PeerAction.Fatal},
|
|
@@ -86,6 +82,10 @@ const gossipRejectPeerAction: Record<GossipType, RejectPeerActionRule> = {
|
|
|
86
82
|
default: PeerAction.MidToleranceError,
|
|
87
83
|
byCode: {[PayloadAttestationErrorCode.INVALID_SIGNATURE]: PeerAction.Fatal},
|
|
88
84
|
},
|
|
85
|
+
[GossipType.inclusion_list]: {
|
|
86
|
+
default: PeerAction.MidToleranceError,
|
|
87
|
+
byCode: {[InclusionListErrorCode.INVALID_SIGNATURE]: PeerAction.Fatal},
|
|
88
|
+
},
|
|
89
89
|
[GossipType.execution_payload_bid]: {
|
|
90
90
|
default: PeerAction.HighToleranceError,
|
|
91
91
|
byCode: {[ExecutionPayloadBidErrorCode.INVALID_SIGNATURE]: PeerAction.Fatal},
|