@lodestar/beacon-node 1.35.0-dev.fcf8d024ea → 1.35.0-dev.feed916580
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/config/constants.d.ts +0 -5
- package/lib/api/impl/config/constants.js +1 -6
- package/lib/api/impl/config/constants.js.map +1 -1
- package/lib/api/impl/validator/index.js +3 -5
- package/lib/api/impl/validator/index.js.map +1 -1
- package/lib/chain/archiveStore/historicalState/historicalStateRegen.js +0 -1
- package/lib/chain/archiveStore/historicalState/historicalStateRegen.js.map +1 -1
- package/lib/chain/archiveStore/historicalState/worker.js +1 -1
- package/lib/chain/archiveStore/historicalState/worker.js.map +1 -1
- package/lib/chain/blocks/blockInput/blockInput.js +1 -1
- package/lib/chain/blocks/blockInput/blockInput.js.map +1 -1
- package/lib/chain/blocks/importBlock.js +3 -4
- package/lib/chain/blocks/importBlock.js.map +1 -1
- package/lib/chain/blocks/verifyBlocksDataAvailability.js +1 -8
- package/lib/chain/blocks/verifyBlocksDataAvailability.js.map +1 -1
- package/lib/chain/blocks/writeBlockInputToDb.js +7 -1
- package/lib/chain/blocks/writeBlockInputToDb.js.map +1 -1
- package/lib/chain/bls/multithread/index.js +0 -1
- package/lib/chain/bls/multithread/index.js.map +1 -1
- package/lib/chain/chain.js +3 -2
- package/lib/chain/chain.js.map +1 -1
- package/lib/chain/emitter.d.ts +2 -2
- package/lib/chain/opPools/attestationPool.d.ts +3 -2
- package/lib/chain/opPools/attestationPool.js +5 -3
- package/lib/chain/opPools/attestationPool.js.map +1 -1
- package/lib/chain/opPools/syncCommitteeMessagePool.d.ts +2 -3
- package/lib/chain/opPools/syncCommitteeMessagePool.js +5 -6
- package/lib/chain/opPools/syncCommitteeMessagePool.js.map +1 -1
- package/lib/chain/opPools/types.d.ts +1 -1
- package/lib/chain/opPools/types.js +1 -1
- package/lib/chain/opPools/types.js.map +1 -1
- package/lib/chain/prepareNextSlot.d.ts +3 -3
- package/lib/chain/prepareNextSlot.js +8 -8
- package/lib/chain/prepareNextSlot.js.map +1 -1
- package/lib/chain/stateCache/persistentCheckpointsCache.js +8 -9
- package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
- package/lib/chain/validation/lightClientFinalityUpdate.js +3 -4
- package/lib/chain/validation/lightClientFinalityUpdate.js.map +1 -1
- package/lib/chain/validation/lightClientOptimisticUpdate.d.ts +4 -6
- package/lib/chain/validation/lightClientOptimisticUpdate.js +11 -11
- package/lib/chain/validation/lightClientOptimisticUpdate.js.map +1 -1
- package/lib/chain/validatorMonitor.js +14 -20
- package/lib/chain/validatorMonitor.js.map +1 -1
- package/lib/db/buckets.d.ts +4 -4
- package/lib/db/buckets.js +4 -4
- package/lib/db/buckets.js.map +1 -1
- package/lib/db/repositories/blobSidecars.js +1 -1
- package/lib/db/repositories/blobSidecars.js.map +1 -1
- package/lib/db/repositories/blobSidecarsArchive.js +1 -1
- package/lib/db/repositories/blobSidecarsArchive.js.map +1 -1
- package/lib/db/repositories/blockArchiveIndex.d.ts +2 -2
- package/lib/db/repositories/dataColumnSidecar.js +1 -1
- package/lib/db/repositories/dataColumnSidecar.js.map +1 -1
- package/lib/db/repositories/dataColumnSidecarArchive.js +1 -1
- package/lib/db/repositories/dataColumnSidecarArchive.js.map +1 -1
- package/lib/metrics/metrics/lodestar.d.ts +1 -1
- package/lib/metrics/metrics/lodestar.js +3 -3
- package/lib/metrics/metrics/lodestar.js.map +1 -1
- package/lib/network/core/networkCoreWorkerHandler.js +3 -9
- package/lib/network/core/networkCoreWorkerHandler.js.map +1 -1
- package/lib/network/discv5/index.js +1 -4
- package/lib/network/discv5/index.js.map +1 -1
- package/lib/network/gossip/gossipsub.d.ts +0 -1
- package/lib/network/gossip/gossipsub.js +16 -35
- package/lib/network/gossip/gossipsub.js.map +1 -1
- package/lib/network/gossip/metrics.d.ts +7 -15
- package/lib/network/gossip/metrics.js +6 -16
- package/lib/network/gossip/metrics.js.map +1 -1
- package/lib/network/libp2p/index.js +1 -9
- package/lib/network/libp2p/index.js.map +1 -1
- package/lib/network/metadata.js +1 -2
- package/lib/network/metadata.js.map +1 -1
- package/lib/network/network.d.ts +1 -1
- package/lib/network/network.js +13 -11
- package/lib/network/network.js.map +1 -1
- package/lib/network/peers/datastore.d.ts +2 -2
- package/lib/network/peers/datastore.js +2 -2
- package/lib/network/peers/datastore.js.map +1 -1
- package/lib/network/processor/index.d.ts +1 -1
- package/lib/network/processor/index.js +3 -2
- package/lib/network/processor/index.js.map +1 -1
- package/lib/sync/types.d.ts +1 -0
- package/lib/sync/types.js.map +1 -1
- package/lib/sync/unknownBlock.d.ts +1 -0
- package/lib/sync/unknownBlock.js +19 -17
- package/lib/sync/unknownBlock.js.map +1 -1
- package/lib/sync/utils/downloadByRoot.d.ts +1 -3
- package/lib/sync/utils/downloadByRoot.js +9 -36
- package/lib/sync/utils/downloadByRoot.js.map +1 -1
- package/lib/util/blobs.js +3 -5
- package/lib/util/blobs.js.map +1 -1
- package/lib/util/clock.d.ts +0 -5
- package/lib/util/clock.js +0 -3
- package/lib/util/clock.js.map +1 -1
- package/lib/util/dataColumns.js +1 -1
- package/lib/util/dataColumns.js.map +1 -1
- package/lib/util/execution.js +2 -19
- package/lib/util/execution.js.map +1 -1
- package/package.json +22 -32
- package/lib/api/impl/api.d.ts.map +0 -1
- package/lib/api/impl/beacon/blocks/index.d.ts.map +0 -1
- package/lib/api/impl/beacon/blocks/utils.d.ts.map +0 -1
- package/lib/api/impl/beacon/index.d.ts.map +0 -1
- package/lib/api/impl/beacon/pool/index.d.ts.map +0 -1
- package/lib/api/impl/beacon/rewards/index.d.ts.map +0 -1
- package/lib/api/impl/beacon/state/index.d.ts.map +0 -1
- package/lib/api/impl/beacon/state/utils.d.ts.map +0 -1
- package/lib/api/impl/config/constants.d.ts.map +0 -1
- package/lib/api/impl/config/index.d.ts.map +0 -1
- package/lib/api/impl/debug/index.d.ts.map +0 -1
- package/lib/api/impl/errors.d.ts.map +0 -1
- package/lib/api/impl/events/index.d.ts.map +0 -1
- package/lib/api/impl/index.d.ts.map +0 -1
- package/lib/api/impl/lightclient/index.d.ts.map +0 -1
- package/lib/api/impl/lodestar/index.d.ts.map +0 -1
- package/lib/api/impl/node/index.d.ts.map +0 -1
- package/lib/api/impl/node/utils.d.ts.map +0 -1
- package/lib/api/impl/proof/index.d.ts.map +0 -1
- package/lib/api/impl/types.d.ts.map +0 -1
- package/lib/api/impl/utils.d.ts.map +0 -1
- package/lib/api/impl/validator/index.d.ts.map +0 -1
- package/lib/api/impl/validator/utils.d.ts.map +0 -1
- package/lib/api/index.d.ts.map +0 -1
- package/lib/api/options.d.ts.map +0 -1
- package/lib/api/rest/activeSockets.d.ts.map +0 -1
- package/lib/api/rest/base.d.ts.map +0 -1
- package/lib/api/rest/index.d.ts.map +0 -1
- package/lib/api/rest/swaggerUI.d.ts.map +0 -1
- package/lib/bun-wrappers/prometheus-gc-stats.d.ts.map +0 -1
- package/lib/chain/ColumnReconstructionTracker.d.ts.map +0 -1
- package/lib/chain/GetBlobsTracker.d.ts.map +0 -1
- package/lib/chain/archiveStore/archiveStore.d.ts.map +0 -1
- package/lib/chain/archiveStore/constants.d.ts.map +0 -1
- package/lib/chain/archiveStore/historicalState/getHistoricalState.d.ts.map +0 -1
- package/lib/chain/archiveStore/historicalState/historicalStateRegen.d.ts.map +0 -1
- package/lib/chain/archiveStore/historicalState/metrics.d.ts.map +0 -1
- package/lib/chain/archiveStore/historicalState/types.d.ts.map +0 -1
- package/lib/chain/archiveStore/historicalState/worker.d.ts.map +0 -1
- package/lib/chain/archiveStore/index.d.ts.map +0 -1
- package/lib/chain/archiveStore/interface.d.ts.map +0 -1
- package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.d.ts.map +0 -1
- package/lib/chain/archiveStore/utils/archiveBlocks.d.ts.map +0 -1
- package/lib/chain/archiveStore/utils/pruneHistory.d.ts.map +0 -1
- package/lib/chain/archiveStore/utils/updateBackfillRange.d.ts.map +0 -1
- package/lib/chain/balancesCache.d.ts.map +0 -1
- package/lib/chain/beaconProposerCache.d.ts.map +0 -1
- package/lib/chain/blocks/blockInput/blockInput.d.ts.map +0 -1
- package/lib/chain/blocks/blockInput/errors.d.ts.map +0 -1
- package/lib/chain/blocks/blockInput/index.d.ts.map +0 -1
- package/lib/chain/blocks/blockInput/types.d.ts.map +0 -1
- package/lib/chain/blocks/blockInput/utils.d.ts.map +0 -1
- package/lib/chain/blocks/importBlock.d.ts.map +0 -1
- package/lib/chain/blocks/index.d.ts.map +0 -1
- package/lib/chain/blocks/types.d.ts.map +0 -1
- package/lib/chain/blocks/utils/blowfishBanner.d.ts.map +0 -1
- package/lib/chain/blocks/utils/chainSegment.d.ts.map +0 -1
- package/lib/chain/blocks/utils/checkpoint.d.ts.map +0 -1
- package/lib/chain/blocks/utils/giraffeBanner.d.ts.map +0 -1
- package/lib/chain/blocks/utils/ownBanner.d.ts.map +0 -1
- package/lib/chain/blocks/utils/pandaMergeTransitionBanner.d.ts.map +0 -1
- package/lib/chain/blocks/utils/zebraBanner.d.ts.map +0 -1
- package/lib/chain/blocks/verifyBlock.d.ts.map +0 -1
- package/lib/chain/blocks/verifyBlocksDataAvailability.d.ts.map +0 -1
- package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts.map +0 -1
- package/lib/chain/blocks/verifyBlocksSanityChecks.d.ts.map +0 -1
- package/lib/chain/blocks/verifyBlocksSignatures.d.ts.map +0 -1
- package/lib/chain/blocks/verifyBlocksStateTransitionOnly.d.ts.map +0 -1
- package/lib/chain/blocks/writeBlockInputToDb.d.ts.map +0 -1
- package/lib/chain/bls/index.d.ts.map +0 -1
- package/lib/chain/bls/interface.d.ts.map +0 -1
- package/lib/chain/bls/maybeBatch.d.ts.map +0 -1
- package/lib/chain/bls/multithread/index.d.ts.map +0 -1
- package/lib/chain/bls/multithread/jobItem.d.ts.map +0 -1
- package/lib/chain/bls/multithread/poolSize.d.ts.map +0 -1
- package/lib/chain/bls/multithread/types.d.ts.map +0 -1
- package/lib/chain/bls/multithread/utils.d.ts.map +0 -1
- package/lib/chain/bls/multithread/worker.d.ts.map +0 -1
- package/lib/chain/bls/singleThread.d.ts.map +0 -1
- package/lib/chain/bls/utils.d.ts.map +0 -1
- package/lib/chain/chain.d.ts.map +0 -1
- package/lib/chain/emitter.d.ts.map +0 -1
- package/lib/chain/errors/attestationError.d.ts.map +0 -1
- package/lib/chain/errors/attesterSlashingError.d.ts.map +0 -1
- package/lib/chain/errors/blobSidecarError.d.ts.map +0 -1
- package/lib/chain/errors/blockError.d.ts.map +0 -1
- package/lib/chain/errors/blsToExecutionChangeError.d.ts.map +0 -1
- package/lib/chain/errors/dataColumnSidecarError.d.ts.map +0 -1
- package/lib/chain/errors/gossipValidation.d.ts.map +0 -1
- package/lib/chain/errors/index.d.ts.map +0 -1
- package/lib/chain/errors/lightClientError.d.ts.map +0 -1
- package/lib/chain/errors/proposerSlashingError.d.ts.map +0 -1
- package/lib/chain/errors/syncCommitteeError.d.ts.map +0 -1
- package/lib/chain/errors/voluntaryExitError.d.ts.map +0 -1
- package/lib/chain/forkChoice/index.d.ts.map +0 -1
- package/lib/chain/genesis/genesis.d.ts.map +0 -1
- package/lib/chain/genesis/interface.d.ts.map +0 -1
- package/lib/chain/index.d.ts.map +0 -1
- package/lib/chain/initState.d.ts.map +0 -1
- package/lib/chain/interface.d.ts.map +0 -1
- package/lib/chain/lightClient/index.d.ts.map +0 -1
- package/lib/chain/lightClient/proofs.d.ts.map +0 -1
- package/lib/chain/lightClient/types.d.ts.map +0 -1
- package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +0 -1
- package/lib/chain/opPools/attestationPool.d.ts.map +0 -1
- package/lib/chain/opPools/index.d.ts.map +0 -1
- package/lib/chain/opPools/opPool.d.ts.map +0 -1
- package/lib/chain/opPools/syncCommitteeMessagePool.d.ts.map +0 -1
- package/lib/chain/opPools/syncContributionAndProofPool.d.ts.map +0 -1
- package/lib/chain/opPools/types.d.ts.map +0 -1
- package/lib/chain/opPools/utils.d.ts.map +0 -1
- package/lib/chain/options.d.ts.map +0 -1
- package/lib/chain/prepareNextSlot.d.ts.map +0 -1
- package/lib/chain/produceBlock/computeNewStateRoot.d.ts.map +0 -1
- package/lib/chain/produceBlock/index.d.ts.map +0 -1
- package/lib/chain/produceBlock/produceBlockBody.d.ts.map +0 -1
- package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.d.ts.map +0 -1
- package/lib/chain/regen/errors.d.ts.map +0 -1
- package/lib/chain/regen/index.d.ts.map +0 -1
- package/lib/chain/regen/interface.d.ts.map +0 -1
- package/lib/chain/regen/queued.d.ts.map +0 -1
- package/lib/chain/regen/regen.d.ts.map +0 -1
- package/lib/chain/reprocess.d.ts.map +0 -1
- package/lib/chain/rewards/attestationsRewards.d.ts.map +0 -1
- package/lib/chain/rewards/blockRewards.d.ts.map +0 -1
- package/lib/chain/rewards/syncCommitteeRewards.d.ts.map +0 -1
- package/lib/chain/seenCache/index.d.ts.map +0 -1
- package/lib/chain/seenCache/seenAggregateAndProof.d.ts.map +0 -1
- package/lib/chain/seenCache/seenAttestationData.d.ts.map +0 -1
- package/lib/chain/seenCache/seenAttesters.d.ts.map +0 -1
- package/lib/chain/seenCache/seenBlockAttesters.d.ts.map +0 -1
- package/lib/chain/seenCache/seenBlockProposers.d.ts.map +0 -1
- package/lib/chain/seenCache/seenCommittee.d.ts.map +0 -1
- package/lib/chain/seenCache/seenCommitteeContribution.d.ts.map +0 -1
- package/lib/chain/seenCache/seenGossipBlockInput.d.ts.map +0 -1
- package/lib/chain/serializeState.d.ts.map +0 -1
- package/lib/chain/shufflingCache.d.ts.map +0 -1
- package/lib/chain/stateCache/blockStateCacheImpl.d.ts.map +0 -1
- package/lib/chain/stateCache/datastore/db.d.ts.map +0 -1
- package/lib/chain/stateCache/datastore/file.d.ts.map +0 -1
- package/lib/chain/stateCache/datastore/index.d.ts.map +0 -1
- package/lib/chain/stateCache/datastore/types.d.ts.map +0 -1
- package/lib/chain/stateCache/fifoBlockStateCache.d.ts.map +0 -1
- package/lib/chain/stateCache/inMemoryCheckpointsCache.d.ts.map +0 -1
- package/lib/chain/stateCache/index.d.ts.map +0 -1
- package/lib/chain/stateCache/mapMetrics.d.ts.map +0 -1
- package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +0 -1
- package/lib/chain/stateCache/types.d.ts.map +0 -1
- package/lib/chain/validation/aggregateAndProof.d.ts.map +0 -1
- package/lib/chain/validation/attestation.d.ts.map +0 -1
- package/lib/chain/validation/attesterSlashing.d.ts.map +0 -1
- package/lib/chain/validation/blobSidecar.d.ts.map +0 -1
- package/lib/chain/validation/block.d.ts.map +0 -1
- package/lib/chain/validation/blsToExecutionChange.d.ts.map +0 -1
- package/lib/chain/validation/dataColumnSidecar.d.ts.map +0 -1
- package/lib/chain/validation/index.d.ts.map +0 -1
- package/lib/chain/validation/lightClientFinalityUpdate.d.ts.map +0 -1
- package/lib/chain/validation/lightClientOptimisticUpdate.d.ts.map +0 -1
- package/lib/chain/validation/proposerSlashing.d.ts.map +0 -1
- package/lib/chain/validation/signatureSets/aggregateAndProof.d.ts.map +0 -1
- package/lib/chain/validation/signatureSets/contributionAndProof.d.ts.map +0 -1
- package/lib/chain/validation/signatureSets/index.d.ts.map +0 -1
- package/lib/chain/validation/signatureSets/selectionProof.d.ts.map +0 -1
- package/lib/chain/validation/signatureSets/syncCommittee.d.ts.map +0 -1
- package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts.map +0 -1
- package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts.map +0 -1
- package/lib/chain/validation/syncCommittee.d.ts.map +0 -1
- package/lib/chain/validation/syncCommitteeContributionAndProof.d.ts.map +0 -1
- package/lib/chain/validation/voluntaryExit.d.ts.map +0 -1
- package/lib/chain/validatorMonitor.d.ts.map +0 -1
- package/lib/constants/constants.d.ts.map +0 -1
- package/lib/constants/index.d.ts.map +0 -1
- package/lib/constants/network.d.ts.map +0 -1
- package/lib/db/beacon.d.ts.map +0 -1
- package/lib/db/buckets.d.ts.map +0 -1
- package/lib/db/index.d.ts.map +0 -1
- package/lib/db/interface.d.ts.map +0 -1
- package/lib/db/options.d.ts.map +0 -1
- package/lib/db/repositories/attesterSlashing.d.ts.map +0 -1
- package/lib/db/repositories/backfilledRanges.d.ts.map +0 -1
- package/lib/db/repositories/blobSidecars.d.ts.map +0 -1
- package/lib/db/repositories/blobSidecarsArchive.d.ts.map +0 -1
- package/lib/db/repositories/block.d.ts.map +0 -1
- package/lib/db/repositories/blockArchive.d.ts.map +0 -1
- package/lib/db/repositories/blockArchiveIndex.d.ts.map +0 -1
- package/lib/db/repositories/blsToExecutionChange.d.ts.map +0 -1
- package/lib/db/repositories/checkpointState.d.ts.map +0 -1
- package/lib/db/repositories/dataColumnSidecar.d.ts.map +0 -1
- package/lib/db/repositories/dataColumnSidecarArchive.d.ts.map +0 -1
- package/lib/db/repositories/depositDataRoot.d.ts.map +0 -1
- package/lib/db/repositories/depositEvent.d.ts.map +0 -1
- package/lib/db/repositories/eth1Data.d.ts.map +0 -1
- package/lib/db/repositories/index.d.ts.map +0 -1
- package/lib/db/repositories/lightclientBestUpdate.d.ts.map +0 -1
- package/lib/db/repositories/lightclientCheckpointHeader.d.ts.map +0 -1
- package/lib/db/repositories/lightclientSyncCommittee.d.ts.map +0 -1
- package/lib/db/repositories/lightclientSyncCommitteeWitness.d.ts.map +0 -1
- package/lib/db/repositories/proposerSlashing.d.ts.map +0 -1
- package/lib/db/repositories/stateArchive.d.ts.map +0 -1
- package/lib/db/repositories/stateArchiveIndex.d.ts.map +0 -1
- package/lib/db/repositories/voluntaryExit.d.ts.map +0 -1
- package/lib/db/single/index.d.ts.map +0 -1
- package/lib/db/single/preGenesisState.d.ts.map +0 -1
- package/lib/db/single/preGenesisStateLastProcessedBlock.d.ts.map +0 -1
- package/lib/eth1/errors.d.ts.map +0 -1
- package/lib/eth1/eth1DataCache.d.ts.map +0 -1
- package/lib/eth1/eth1DepositDataTracker.d.ts.map +0 -1
- package/lib/eth1/eth1DepositsCache.d.ts.map +0 -1
- package/lib/eth1/eth1MergeBlockTracker.d.ts.map +0 -1
- package/lib/eth1/index.d.ts.map +0 -1
- package/lib/eth1/interface.d.ts.map +0 -1
- package/lib/eth1/options.d.ts.map +0 -1
- package/lib/eth1/provider/eth1Provider.d.ts.map +0 -1
- package/lib/eth1/provider/jsonRpcHttpClient.d.ts.map +0 -1
- package/lib/eth1/provider/jwt.d.ts.map +0 -1
- package/lib/eth1/provider/utils.d.ts.map +0 -1
- package/lib/eth1/stream.d.ts.map +0 -1
- package/lib/eth1/utils/depositContract.d.ts.map +0 -1
- package/lib/eth1/utils/deposits.d.ts.map +0 -1
- package/lib/eth1/utils/eth1Data.d.ts.map +0 -1
- package/lib/eth1/utils/eth1DepositEvent.d.ts.map +0 -1
- package/lib/eth1/utils/eth1Vote.d.ts.map +0 -1
- package/lib/eth1/utils/groupDepositEventsByBlock.d.ts.map +0 -1
- package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.d.ts.map +0 -1
- package/lib/execution/builder/cache.d.ts.map +0 -1
- package/lib/execution/builder/http.d.ts.map +0 -1
- package/lib/execution/builder/index.d.ts.map +0 -1
- package/lib/execution/builder/interface.d.ts.map +0 -1
- package/lib/execution/builder/utils.d.ts.map +0 -1
- package/lib/execution/engine/disabled.d.ts.map +0 -1
- package/lib/execution/engine/http.d.ts.map +0 -1
- package/lib/execution/engine/index.d.ts.map +0 -1
- package/lib/execution/engine/interface.d.ts.map +0 -1
- package/lib/execution/engine/mock.d.ts.map +0 -1
- package/lib/execution/engine/payloadIdCache.d.ts.map +0 -1
- package/lib/execution/engine/types.d.ts.map +0 -1
- package/lib/execution/engine/utils.d.ts.map +0 -1
- package/lib/execution/index.d.ts.map +0 -1
- package/lib/index.d.ts.map +0 -1
- package/lib/metrics/index.d.ts.map +0 -1
- package/lib/metrics/metrics/beacon.d.ts.map +0 -1
- package/lib/metrics/metrics/lodestar.d.ts.map +0 -1
- package/lib/metrics/metrics.d.ts.map +0 -1
- package/lib/metrics/nodeJsMetrics.d.ts.map +0 -1
- package/lib/metrics/options.d.ts.map +0 -1
- package/lib/metrics/server/http.d.ts.map +0 -1
- package/lib/metrics/server/index.d.ts.map +0 -1
- package/lib/metrics/utils/avgMinMax.d.ts.map +0 -1
- package/lib/metrics/utils/gauge.d.ts.map +0 -1
- package/lib/metrics/utils/registryMetricCreator.d.ts.map +0 -1
- package/lib/monitoring/clientStats.d.ts.map +0 -1
- package/lib/monitoring/index.d.ts.map +0 -1
- package/lib/monitoring/options.d.ts.map +0 -1
- package/lib/monitoring/properties.d.ts.map +0 -1
- package/lib/monitoring/service.d.ts.map +0 -1
- package/lib/monitoring/system.d.ts.map +0 -1
- package/lib/monitoring/types.d.ts.map +0 -1
- package/lib/network/core/events.d.ts.map +0 -1
- package/lib/network/core/index.d.ts.map +0 -1
- package/lib/network/core/metrics.d.ts.map +0 -1
- package/lib/network/core/networkCore.d.ts.map +0 -1
- package/lib/network/core/networkCoreWorker.d.ts.map +0 -1
- package/lib/network/core/networkCoreWorkerHandler.d.ts.map +0 -1
- package/lib/network/core/types.d.ts.map +0 -1
- package/lib/network/discv5/index.d.ts.map +0 -1
- package/lib/network/discv5/types.d.ts.map +0 -1
- package/lib/network/discv5/utils.d.ts.map +0 -1
- package/lib/network/discv5/worker.d.ts.map +0 -1
- package/lib/network/events.d.ts.map +0 -1
- package/lib/network/forks.d.ts.map +0 -1
- package/lib/network/gossip/constants.d.ts.map +0 -1
- package/lib/network/gossip/encoding.d.ts.map +0 -1
- package/lib/network/gossip/errors.d.ts.map +0 -1
- package/lib/network/gossip/gossipsub.d.ts.map +0 -1
- package/lib/network/gossip/index.d.ts.map +0 -1
- package/lib/network/gossip/interface.d.ts.map +0 -1
- package/lib/network/gossip/metrics.d.ts.map +0 -1
- package/lib/network/gossip/scoringParameters.d.ts.map +0 -1
- package/lib/network/gossip/topic.d.ts.map +0 -1
- package/lib/network/index.d.ts.map +0 -1
- package/lib/network/interface.d.ts.map +0 -1
- package/lib/network/libp2p/error.d.ts.map +0 -1
- package/lib/network/libp2p/index.d.ts.map +0 -1
- package/lib/network/metadata.d.ts.map +0 -1
- package/lib/network/network.d.ts.map +0 -1
- package/lib/network/networkConfig.d.ts.map +0 -1
- package/lib/network/options.d.ts.map +0 -1
- package/lib/network/peers/client.d.ts.map +0 -1
- package/lib/network/peers/datastore.d.ts.map +0 -1
- package/lib/network/peers/discover.d.ts.map +0 -1
- package/lib/network/peers/index.d.ts.map +0 -1
- package/lib/network/peers/peerManager.d.ts.map +0 -1
- package/lib/network/peers/peersData.d.ts.map +0 -1
- package/lib/network/peers/score/constants.d.ts.map +0 -1
- package/lib/network/peers/score/index.d.ts.map +0 -1
- package/lib/network/peers/score/interface.d.ts.map +0 -1
- package/lib/network/peers/score/score.d.ts.map +0 -1
- package/lib/network/peers/score/store.d.ts.map +0 -1
- package/lib/network/peers/score/utils.d.ts.map +0 -1
- package/lib/network/peers/utils/assertPeerRelevance.d.ts.map +0 -1
- package/lib/network/peers/utils/enrSubnetsDeserialize.d.ts.map +0 -1
- package/lib/network/peers/utils/getConnectedPeerIds.d.ts.map +0 -1
- package/lib/network/peers/utils/index.d.ts.map +0 -1
- package/lib/network/peers/utils/prioritizePeers.d.ts.map +0 -1
- package/lib/network/peers/utils/subnetMap.d.ts.map +0 -1
- package/lib/network/processor/aggregatorTracker.d.ts.map +0 -1
- package/lib/network/processor/extractSlotRootFns.d.ts.map +0 -1
- package/lib/network/processor/gossipHandlers.d.ts.map +0 -1
- package/lib/network/processor/gossipQueues/index.d.ts.map +0 -1
- package/lib/network/processor/gossipQueues/indexed.d.ts.map +0 -1
- package/lib/network/processor/gossipQueues/linear.d.ts.map +0 -1
- package/lib/network/processor/gossipQueues/types.d.ts.map +0 -1
- package/lib/network/processor/gossipValidatorFn.d.ts.map +0 -1
- package/lib/network/processor/index.d.ts.map +0 -1
- package/lib/network/processor/types.d.ts.map +0 -1
- package/lib/network/reqresp/ReqRespBeaconNode.d.ts.map +0 -1
- package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts.map +0 -1
- package/lib/network/reqresp/handlers/beaconBlocksByRoot.d.ts.map +0 -1
- package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts.map +0 -1
- package/lib/network/reqresp/handlers/blobSidecarsByRoot.d.ts.map +0 -1
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts.map +0 -1
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.d.ts.map +0 -1
- package/lib/network/reqresp/handlers/index.d.ts.map +0 -1
- package/lib/network/reqresp/handlers/lightClientBootstrap.d.ts.map +0 -1
- package/lib/network/reqresp/handlers/lightClientFinalityUpdate.d.ts.map +0 -1
- package/lib/network/reqresp/handlers/lightClientOptimisticUpdate.d.ts.map +0 -1
- package/lib/network/reqresp/handlers/lightClientUpdatesByRange.d.ts.map +0 -1
- package/lib/network/reqresp/index.d.ts.map +0 -1
- package/lib/network/reqresp/interface.d.ts.map +0 -1
- package/lib/network/reqresp/protocols.d.ts.map +0 -1
- package/lib/network/reqresp/rateLimit.d.ts.map +0 -1
- package/lib/network/reqresp/score.d.ts.map +0 -1
- package/lib/network/reqresp/types.d.ts.map +0 -1
- package/lib/network/reqresp/utils/collect.d.ts.map +0 -1
- package/lib/network/reqresp/utils/collectSequentialBlocksInRange.d.ts.map +0 -1
- package/lib/network/reqresp/utils/dataColumnResponseValidation.d.ts.map +0 -1
- package/lib/network/statusCache.d.ts.map +0 -1
- package/lib/network/subnets/attnetsService.d.ts.map +0 -1
- package/lib/network/subnets/index.d.ts.map +0 -1
- package/lib/network/subnets/interface.d.ts.map +0 -1
- package/lib/network/subnets/syncnetsService.d.ts.map +0 -1
- package/lib/network/subnets/util.d.ts.map +0 -1
- package/lib/network/util.d.ts.map +0 -1
- package/lib/node/index.d.ts.map +0 -1
- package/lib/node/nodejs.d.ts.map +0 -1
- package/lib/node/notifier.d.ts.map +0 -1
- package/lib/node/options.d.ts.map +0 -1
- package/lib/node/utils/interop/deposits.d.ts.map +0 -1
- package/lib/node/utils/interop/state.d.ts.map +0 -1
- package/lib/node/utils/lightclient.d.ts.map +0 -1
- package/lib/node/utils/state.d.ts.map +0 -1
- package/lib/sync/backfill/backfill.d.ts.map +0 -1
- package/lib/sync/backfill/errors.d.ts.map +0 -1
- package/lib/sync/backfill/index.d.ts.map +0 -1
- package/lib/sync/backfill/verify.d.ts.map +0 -1
- package/lib/sync/constants.d.ts.map +0 -1
- package/lib/sync/index.d.ts.map +0 -1
- package/lib/sync/interface.d.ts.map +0 -1
- package/lib/sync/options.d.ts.map +0 -1
- package/lib/sync/range/batch.d.ts.map +0 -1
- package/lib/sync/range/chain.d.ts.map +0 -1
- package/lib/sync/range/range.d.ts.map +0 -1
- package/lib/sync/range/utils/batches.d.ts.map +0 -1
- package/lib/sync/range/utils/chainTarget.d.ts.map +0 -1
- package/lib/sync/range/utils/hashBlocks.d.ts.map +0 -1
- package/lib/sync/range/utils/index.d.ts.map +0 -1
- package/lib/sync/range/utils/peerBalancer.d.ts.map +0 -1
- package/lib/sync/range/utils/updateChains.d.ts.map +0 -1
- package/lib/sync/sync.d.ts.map +0 -1
- package/lib/sync/types.d.ts.map +0 -1
- package/lib/sync/unknownBlock.d.ts.map +0 -1
- package/lib/sync/utils/downloadByRange.d.ts.map +0 -1
- package/lib/sync/utils/downloadByRoot.d.ts.map +0 -1
- package/lib/sync/utils/pendingBlocksTree.d.ts.map +0 -1
- package/lib/sync/utils/remoteSyncType.d.ts.map +0 -1
- package/lib/util/address.d.ts.map +0 -1
- package/lib/util/array.d.ts.map +0 -1
- package/lib/util/asyncIterableToEvents.d.ts.map +0 -1
- package/lib/util/binarySearch.d.ts.map +0 -1
- package/lib/util/bitArray.d.ts.map +0 -1
- package/lib/util/blobs.d.ts.map +0 -1
- package/lib/util/bufferPool.d.ts.map +0 -1
- package/lib/util/bytes.d.ts.map +0 -1
- package/lib/util/chunkify.d.ts.map +0 -1
- package/lib/util/clock.d.ts.map +0 -1
- package/lib/util/dataColumns.d.ts.map +0 -1
- package/lib/util/dependentRoot.d.ts.map +0 -1
- package/lib/util/enum.d.ts.map +0 -1
- package/lib/util/error.d.ts.map +0 -1
- package/lib/util/eventLoop.d.ts.map +0 -1
- package/lib/util/execution.d.ts.map +0 -1
- package/lib/util/file.d.ts.map +0 -1
- package/lib/util/forkChoice.d.ts.map +0 -1
- package/lib/util/forkName.d.ts.map +0 -1
- package/lib/util/graffiti.d.ts.map +0 -1
- package/lib/util/hex.d.ts.map +0 -1
- package/lib/util/index.d.ts.map +0 -1
- package/lib/util/ip.d.ts.map +0 -1
- package/lib/util/itTrigger.d.ts.map +0 -1
- package/lib/util/kzg.d.ts.map +0 -1
- package/lib/util/map.d.ts.map +0 -1
- package/lib/util/metadata.d.ts.map +0 -1
- package/lib/util/multifork.d.ts.map +0 -1
- package/lib/util/numpy.d.ts.map +0 -1
- package/lib/util/peerId.d.ts.map +0 -1
- package/lib/util/profile.d.ts.map +0 -1
- package/lib/util/promises.d.ts.map +0 -1
- package/lib/util/queue/errors.d.ts.map +0 -1
- package/lib/util/queue/fnQueue.d.ts.map +0 -1
- package/lib/util/queue/index.d.ts.map +0 -1
- package/lib/util/queue/itemQueue.d.ts.map +0 -1
- package/lib/util/queue/options.d.ts.map +0 -1
- package/lib/util/serializedCache.d.ts.map +0 -1
- package/lib/util/set.d.ts.map +0 -1
- package/lib/util/shuffle.d.ts.map +0 -1
- package/lib/util/sortBy.d.ts.map +0 -1
- package/lib/util/sszBytes.d.ts.map +0 -1
- package/lib/util/strictEvents.d.ts.map +0 -1
- package/lib/util/time.d.ts.map +0 -1
- package/lib/util/timeSeries.d.ts.map +0 -1
- package/lib/util/types.d.ts.map +0 -1
- package/lib/util/workerEvents.d.ts.map +0 -1
- package/lib/util/wrapError.d.ts.map +0 -1
- package/src/api/impl/api.ts +0 -26
- package/src/api/impl/beacon/blocks/index.ts +0 -744
- package/src/api/impl/beacon/blocks/utils.ts +0 -75
- package/src/api/impl/beacon/index.ts +0 -35
- package/src/api/impl/beacon/pool/index.ts +0 -314
- package/src/api/impl/beacon/rewards/index.ts +0 -30
- package/src/api/impl/beacon/state/index.ts +0 -406
- package/src/api/impl/beacon/state/utils.ts +0 -189
- package/src/api/impl/config/constants.ts +0 -127
- package/src/api/impl/config/index.ts +0 -59
- package/src/api/impl/debug/index.ts +0 -131
- package/src/api/impl/errors.ts +0 -50
- package/src/api/impl/events/index.ts +0 -33
- package/src/api/impl/index.ts +0 -6
- package/src/api/impl/lightclient/index.ts +0 -64
- package/src/api/impl/lodestar/index.ts +0 -257
- package/src/api/impl/node/index.ts +0 -88
- package/src/api/impl/node/utils.ts +0 -51
- package/src/api/impl/proof/index.ts +0 -60
- package/src/api/impl/types.ts +0 -17
- package/src/api/impl/utils.ts +0 -25
- package/src/api/impl/validator/index.ts +0 -1540
- package/src/api/impl/validator/utils.ts +0 -85
- package/src/api/index.ts +0 -2
- package/src/api/options.ts +0 -16
- package/src/api/rest/activeSockets.ts +0 -109
- package/src/api/rest/base.ts +0 -216
- package/src/api/rest/index.ts +0 -63
- package/src/api/rest/swaggerUI.ts +0 -80
- package/src/bun-wrappers/prometheus-gc-stats.ts +0 -7
- package/src/chain/ColumnReconstructionTracker.ts +0 -90
- package/src/chain/GetBlobsTracker.ts +0 -115
- package/src/chain/archiveStore/archiveStore.ts +0 -222
- package/src/chain/archiveStore/constants.ts +0 -5
- package/src/chain/archiveStore/historicalState/getHistoricalState.ts +0 -116
- package/src/chain/archiveStore/historicalState/historicalStateRegen.ts +0 -68
- package/src/chain/archiveStore/historicalState/metrics.ts +0 -214
- package/src/chain/archiveStore/historicalState/types.ts +0 -41
- package/src/chain/archiveStore/historicalState/worker.ts +0 -77
- package/src/chain/archiveStore/index.ts +0 -3
- package/src/chain/archiveStore/interface.ts +0 -75
- package/src/chain/archiveStore/strategies/frequencyStateArchiveStrategy.ts +0 -138
- package/src/chain/archiveStore/utils/archiveBlocks.ts +0 -437
- package/src/chain/archiveStore/utils/pruneHistory.ts +0 -56
- package/src/chain/archiveStore/utils/updateBackfillRange.ts +0 -50
- package/src/chain/balancesCache.ts +0 -52
- package/src/chain/beaconProposerCache.ts +0 -43
- package/src/chain/blocks/blockInput/blockInput.ts +0 -852
- package/src/chain/blocks/blockInput/errors.ts +0 -48
- package/src/chain/blocks/blockInput/index.ts +0 -4
- package/src/chain/blocks/blockInput/types.ts +0 -145
- package/src/chain/blocks/blockInput/utils.ts +0 -21
- package/src/chain/blocks/importBlock.ts +0 -597
- package/src/chain/blocks/index.ts +0 -179
- package/src/chain/blocks/types.ts +0 -101
- package/src/chain/blocks/utils/blowfishBanner.ts +0 -28
- package/src/chain/blocks/utils/chainSegment.ts +0 -29
- package/src/chain/blocks/utils/checkpoint.ts +0 -25
- package/src/chain/blocks/utils/giraffeBanner.ts +0 -30
- package/src/chain/blocks/utils/ownBanner.ts +0 -20
- package/src/chain/blocks/utils/pandaMergeTransitionBanner.ts +0 -43
- package/src/chain/blocks/utils/zebraBanner.ts +0 -45
- package/src/chain/blocks/verifyBlock.ts +0 -242
- package/src/chain/blocks/verifyBlocksDataAvailability.ts +0 -42
- package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +0 -438
- package/src/chain/blocks/verifyBlocksSanityChecks.ts +0 -129
- package/src/chain/blocks/verifyBlocksSignatures.ts +0 -105
- package/src/chain/blocks/verifyBlocksStateTransitionOnly.ts +0 -114
- package/src/chain/blocks/writeBlockInputToDb.ts +0 -120
- package/src/chain/bls/index.ts +0 -4
- package/src/chain/bls/interface.ts +0 -68
- package/src/chain/bls/maybeBatch.ts +0 -45
- package/src/chain/bls/multithread/index.ts +0 -582
- package/src/chain/bls/multithread/jobItem.ts +0 -119
- package/src/chain/bls/multithread/poolSize.ts +0 -16
- package/src/chain/bls/multithread/types.ts +0 -38
- package/src/chain/bls/multithread/utils.ts +0 -19
- package/src/chain/bls/multithread/worker.ts +0 -114
- package/src/chain/bls/singleThread.ts +0 -87
- package/src/chain/bls/utils.ts +0 -30
- package/src/chain/chain.ts +0 -1354
- package/src/chain/emitter.ts +0 -113
- package/src/chain/errors/attestationError.ts +0 -194
- package/src/chain/errors/attesterSlashingError.ts +0 -11
- package/src/chain/errors/blobSidecarError.ts +0 -60
- package/src/chain/errors/blockError.ts +0 -166
- package/src/chain/errors/blsToExecutionChangeError.ts +0 -13
- package/src/chain/errors/dataColumnSidecarError.ts +0 -80
- package/src/chain/errors/gossipValidation.ts +0 -20
- package/src/chain/errors/index.ts +0 -10
- package/src/chain/errors/lightClientError.ts +0 -30
- package/src/chain/errors/proposerSlashingError.ts +0 -11
- package/src/chain/errors/syncCommitteeError.ts +0 -36
- package/src/chain/errors/voluntaryExitError.ts +0 -13
- package/src/chain/forkChoice/index.ts +0 -112
- package/src/chain/genesis/genesis.ts +0 -190
- package/src/chain/genesis/interface.ts +0 -14
- package/src/chain/index.ts +0 -6
- package/src/chain/initState.ts +0 -221
- package/src/chain/interface.ts +0 -280
- package/src/chain/lightClient/index.ts +0 -764
- package/src/chain/lightClient/proofs.ts +0 -85
- package/src/chain/lightClient/types.ts +0 -33
- package/src/chain/opPools/aggregatedAttestationPool.ts +0 -1063
- package/src/chain/opPools/attestationPool.ts +0 -282
- package/src/chain/opPools/index.ts +0 -5
- package/src/chain/opPools/opPool.ts +0 -462
- package/src/chain/opPools/syncCommitteeMessagePool.ts +0 -169
- package/src/chain/opPools/syncContributionAndProofPool.ts +0 -240
- package/src/chain/opPools/types.ts +0 -35
- package/src/chain/opPools/utils.ts +0 -65
- package/src/chain/options.ts +0 -138
- package/src/chain/prepareNextSlot.ts +0 -277
- package/src/chain/produceBlock/computeNewStateRoot.ts +0 -55
- package/src/chain/produceBlock/index.ts +0 -2
- package/src/chain/produceBlock/produceBlockBody.ts +0 -797
- package/src/chain/produceBlock/validateBlobsAndKzgCommitments.ts +0 -54
- package/src/chain/regen/errors.ts +0 -30
- package/src/chain/regen/index.ts +0 -4
- package/src/chain/regen/interface.ts +0 -93
- package/src/chain/regen/queued.ts +0 -317
- package/src/chain/regen/regen.ts +0 -424
- package/src/chain/reprocess.ts +0 -161
- package/src/chain/rewards/attestationsRewards.ts +0 -196
- package/src/chain/rewards/blockRewards.ts +0 -150
- package/src/chain/rewards/syncCommitteeRewards.ts +0 -58
- package/src/chain/seenCache/index.ts +0 -5
- package/src/chain/seenCache/seenAggregateAndProof.ts +0 -120
- package/src/chain/seenCache/seenAttestationData.ts +0 -145
- package/src/chain/seenCache/seenAttesters.ts +0 -58
- package/src/chain/seenCache/seenBlockAttesters.ts +0 -18
- package/src/chain/seenCache/seenBlockProposers.ts +0 -48
- package/src/chain/seenCache/seenCommittee.ts +0 -43
- package/src/chain/seenCache/seenCommitteeContribution.ts +0 -104
- package/src/chain/seenCache/seenGossipBlockInput.ts +0 -373
- package/src/chain/serializeState.ts +0 -32
- package/src/chain/shufflingCache.ts +0 -238
- package/src/chain/stateCache/blockStateCacheImpl.ts +0 -150
- package/src/chain/stateCache/datastore/db.ts +0 -36
- package/src/chain/stateCache/datastore/file.ts +0 -53
- package/src/chain/stateCache/datastore/index.ts +0 -2
- package/src/chain/stateCache/datastore/types.ts +0 -13
- package/src/chain/stateCache/fifoBlockStateCache.ts +0 -208
- package/src/chain/stateCache/inMemoryCheckpointsCache.ts +0 -198
- package/src/chain/stateCache/index.ts +0 -3
- package/src/chain/stateCache/mapMetrics.ts +0 -52
- package/src/chain/stateCache/persistentCheckpointsCache.ts +0 -837
- package/src/chain/stateCache/types.ts +0 -86
- package/src/chain/validation/aggregateAndProof.ts +0 -258
- package/src/chain/validation/attestation.ts +0 -885
- package/src/chain/validation/attesterSlashing.ts +0 -61
- package/src/chain/validation/blobSidecar.ts +0 -301
- package/src/chain/validation/block.ts +0 -188
- package/src/chain/validation/blsToExecutionChange.ts +0 -61
- package/src/chain/validation/dataColumnSidecar.ts +0 -381
- package/src/chain/validation/index.ts +0 -9
- package/src/chain/validation/lightClientFinalityUpdate.ts +0 -46
- package/src/chain/validation/lightClientOptimisticUpdate.ts +0 -68
- package/src/chain/validation/proposerSlashing.ts +0 -54
- package/src/chain/validation/signatureSets/aggregateAndProof.ts +0 -38
- package/src/chain/validation/signatureSets/contributionAndProof.ts +0 -27
- package/src/chain/validation/signatureSets/index.ts +0 -6
- package/src/chain/validation/signatureSets/selectionProof.ts +0 -27
- package/src/chain/validation/signatureSets/syncCommittee.ts +0 -22
- package/src/chain/validation/signatureSets/syncCommitteeContribution.ts +0 -18
- package/src/chain/validation/signatureSets/syncCommitteeSelectionProof.ts +0 -27
- package/src/chain/validation/syncCommittee.ts +0 -165
- package/src/chain/validation/syncCommitteeContributionAndProof.ts +0 -122
- package/src/chain/validation/voluntaryExit.ts +0 -58
- package/src/chain/validatorMonitor.ts +0 -1309
- package/src/constants/constants.ts +0 -15
- package/src/constants/index.ts +0 -2
- package/src/constants/network.ts +0 -52
- package/src/db/beacon.ts +0 -113
- package/src/db/buckets.ts +0 -80
- package/src/db/index.ts +0 -2
- package/src/db/interface.ts +0 -76
- package/src/db/options.ts +0 -7
- package/src/db/repositories/attesterSlashing.ts +0 -38
- package/src/db/repositories/backfilledRanges.ts +0 -29
- package/src/db/repositories/blobSidecars.ts +0 -37
- package/src/db/repositories/blobSidecarsArchive.ts +0 -28
- package/src/db/repositories/block.ts +0 -33
- package/src/db/repositories/blockArchive.ts +0 -170
- package/src/db/repositories/blockArchiveIndex.ts +0 -45
- package/src/db/repositories/blsToExecutionChange.ts +0 -16
- package/src/db/repositories/checkpointState.ts +0 -31
- package/src/db/repositories/dataColumnSidecar.ts +0 -49
- package/src/db/repositories/dataColumnSidecarArchive.ts +0 -56
- package/src/db/repositories/depositDataRoot.ts +0 -80
- package/src/db/repositories/depositEvent.ts +0 -32
- package/src/db/repositories/eth1Data.ts +0 -33
- package/src/db/repositories/index.ts +0 -20
- package/src/db/repositories/lightclientBestUpdate.ts +0 -41
- package/src/db/repositories/lightclientCheckpointHeader.ts +0 -32
- package/src/db/repositories/lightclientSyncCommittee.ts +0 -16
- package/src/db/repositories/lightclientSyncCommitteeWitness.ts +0 -77
- package/src/db/repositories/proposerSlashing.ts +0 -15
- package/src/db/repositories/stateArchive.ts +0 -69
- package/src/db/repositories/stateArchiveIndex.ts +0 -18
- package/src/db/repositories/voluntaryExit.ts +0 -15
- package/src/db/single/index.ts +0 -2
- package/src/db/single/preGenesisState.ts +0 -37
- package/src/db/single/preGenesisStateLastProcessedBlock.ts +0 -34
- package/src/eth1/errors.ts +0 -40
- package/src/eth1/eth1DataCache.ts +0 -26
- package/src/eth1/eth1DepositDataTracker.ts +0 -410
- package/src/eth1/eth1DepositsCache.ts +0 -141
- package/src/eth1/eth1MergeBlockTracker.ts +0 -328
- package/src/eth1/index.ts +0 -157
- package/src/eth1/interface.ts +0 -131
- package/src/eth1/options.ts +0 -28
- package/src/eth1/provider/eth1Provider.ts +0 -229
- package/src/eth1/provider/jsonRpcHttpClient.ts +0 -390
- package/src/eth1/provider/jwt.ts +0 -36
- package/src/eth1/provider/utils.ts +0 -136
- package/src/eth1/stream.ts +0 -75
- package/src/eth1/utils/depositContract.ts +0 -37
- package/src/eth1/utils/deposits.ts +0 -70
- package/src/eth1/utils/eth1Data.ts +0 -100
- package/src/eth1/utils/eth1DepositEvent.ts +0 -12
- package/src/eth1/utils/eth1Vote.ts +0 -142
- package/src/eth1/utils/groupDepositEventsByBlock.ts +0 -19
- package/src/eth1/utils/optimizeNextBlockDiffForGenesis.ts +0 -18
- package/src/execution/builder/cache.ts +0 -39
- package/src/execution/builder/http.ts +0 -229
- package/src/execution/builder/index.ts +0 -27
- package/src/execution/builder/interface.ts +0 -49
- package/src/execution/builder/utils.ts +0 -19
- package/src/execution/engine/disabled.ts +0 -35
- package/src/execution/engine/http.ts +0 -644
- package/src/execution/engine/index.ts +0 -63
- package/src/execution/engine/interface.ts +0 -199
- package/src/execution/engine/mock.ts +0 -493
- package/src/execution/engine/payloadIdCache.ts +0 -54
- package/src/execution/engine/types.ts +0 -640
- package/src/execution/engine/utils.ts +0 -136
- package/src/execution/index.ts +0 -4
- package/src/index.ts +0 -20
- package/src/metrics/index.ts +0 -4
- package/src/metrics/metrics/beacon.ts +0 -390
- package/src/metrics/metrics/lodestar.ts +0 -1870
- package/src/metrics/metrics.ts +0 -43
- package/src/metrics/nodeJsMetrics.ts +0 -19
- package/src/metrics/options.ts +0 -22
- package/src/metrics/server/http.ts +0 -114
- package/src/metrics/server/index.ts +0 -1
- package/src/metrics/utils/avgMinMax.ts +0 -87
- package/src/metrics/utils/gauge.ts +0 -22
- package/src/metrics/utils/registryMetricCreator.ts +0 -41
- package/src/monitoring/clientStats.ts +0 -297
- package/src/monitoring/index.ts +0 -2
- package/src/monitoring/options.ts +0 -19
- package/src/monitoring/properties.ts +0 -152
- package/src/monitoring/service.ts +0 -235
- package/src/monitoring/system.ts +0 -146
- package/src/monitoring/types.ts +0 -21
- package/src/network/core/events.ts +0 -59
- package/src/network/core/index.ts +0 -3
- package/src/network/core/metrics.ts +0 -304
- package/src/network/core/networkCore.ts +0 -599
- package/src/network/core/networkCoreWorker.ts +0 -176
- package/src/network/core/networkCoreWorkerHandler.ts +0 -284
- package/src/network/core/types.ts +0 -119
- package/src/network/discv5/index.ts +0 -132
- package/src/network/discv5/types.ts +0 -74
- package/src/network/discv5/utils.ts +0 -50
- package/src/network/discv5/worker.ts +0 -137
- package/src/network/events.ts +0 -51
- package/src/network/forks.ts +0 -94
- package/src/network/gossip/constants.ts +0 -15
- package/src/network/gossip/encoding.ts +0 -111
- package/src/network/gossip/errors.ts +0 -7
- package/src/network/gossip/gossipsub.ts +0 -384
- package/src/network/gossip/index.ts +0 -4
- package/src/network/gossip/interface.ts +0 -215
- package/src/network/gossip/metrics.ts +0 -71
- package/src/network/gossip/scoringParameters.ts +0 -333
- package/src/network/gossip/topic.ts +0 -332
- package/src/network/index.ts +0 -8
- package/src/network/interface.ts +0 -134
- package/src/network/libp2p/error.ts +0 -55
- package/src/network/libp2p/index.ts +0 -153
- package/src/network/metadata.ts +0 -162
- package/src/network/network.ts +0 -767
- package/src/network/networkConfig.ts +0 -12
- package/src/network/options.ts +0 -70
- package/src/network/peers/client.ts +0 -29
- package/src/network/peers/datastore.ts +0 -188
- package/src/network/peers/discover.ts +0 -647
- package/src/network/peers/index.ts +0 -2
- package/src/network/peers/peerManager.ts +0 -899
- package/src/network/peers/peersData.ts +0 -65
- package/src/network/peers/score/constants.ts +0 -34
- package/src/network/peers/score/index.ts +0 -4
- package/src/network/peers/score/interface.ts +0 -74
- package/src/network/peers/score/score.ts +0 -200
- package/src/network/peers/score/store.ts +0 -95
- package/src/network/peers/score/utils.ts +0 -37
- package/src/network/peers/utils/assertPeerRelevance.ts +0 -99
- package/src/network/peers/utils/enrSubnetsDeserialize.ts +0 -27
- package/src/network/peers/utils/getConnectedPeerIds.ts +0 -33
- package/src/network/peers/utils/index.ts +0 -4
- package/src/network/peers/utils/prioritizePeers.ts +0 -627
- package/src/network/peers/utils/subnetMap.ts +0 -88
- package/src/network/processor/aggregatorTracker.ts +0 -38
- package/src/network/processor/extractSlotRootFns.ts +0 -64
- package/src/network/processor/gossipHandlers.ts +0 -951
- package/src/network/processor/gossipQueues/index.ts +0 -114
- package/src/network/processor/gossipQueues/indexed.ts +0 -219
- package/src/network/processor/gossipQueues/linear.ts +0 -162
- package/src/network/processor/gossipQueues/types.ts +0 -57
- package/src/network/processor/gossipValidatorFn.ts +0 -142
- package/src/network/processor/index.ts +0 -496
- package/src/network/processor/types.ts +0 -27
- package/src/network/reqresp/ReqRespBeaconNode.ts +0 -373
- package/src/network/reqresp/handlers/beaconBlocksByRange.ts +0 -101
- package/src/network/reqresp/handlers/beaconBlocksByRoot.ts +0 -49
- package/src/network/reqresp/handlers/blobSidecarsByRange.ts +0 -114
- package/src/network/reqresp/handlers/blobSidecarsByRoot.ts +0 -62
- package/src/network/reqresp/handlers/dataColumnSidecarsByRange.ts +0 -144
- package/src/network/reqresp/handlers/dataColumnSidecarsByRoot.ts +0 -88
- package/src/network/reqresp/handlers/index.ts +0 -78
- package/src/network/reqresp/handlers/lightClientBootstrap.ts +0 -31
- package/src/network/reqresp/handlers/lightClientFinalityUpdate.ts +0 -21
- package/src/network/reqresp/handlers/lightClientOptimisticUpdate.ts +0 -21
- package/src/network/reqresp/handlers/lightClientUpdatesByRange.ts +0 -39
- package/src/network/reqresp/index.ts +0 -2
- package/src/network/reqresp/interface.ts +0 -45
- package/src/network/reqresp/protocols.ts +0 -146
- package/src/network/reqresp/rateLimit.ts +0 -112
- package/src/network/reqresp/score.ts +0 -70
- package/src/network/reqresp/types.ts +0 -174
- package/src/network/reqresp/utils/collect.ts +0 -84
- package/src/network/reqresp/utils/collectSequentialBlocksInRange.ts +0 -57
- package/src/network/reqresp/utils/dataColumnResponseValidation.ts +0 -99
- package/src/network/statusCache.ts +0 -17
- package/src/network/subnets/attnetsService.ts +0 -385
- package/src/network/subnets/index.ts +0 -2
- package/src/network/subnets/interface.ts +0 -66
- package/src/network/subnets/syncnetsService.ts +0 -147
- package/src/network/subnets/util.ts +0 -63
- package/src/network/util.ts +0 -29
- package/src/node/index.ts +0 -2
- package/src/node/nodejs.ts +0 -349
- package/src/node/notifier.ts +0 -206
- package/src/node/options.ts +0 -51
- package/src/node/utils/interop/deposits.ts +0 -53
- package/src/node/utils/interop/state.ts +0 -59
- package/src/node/utils/lightclient.ts +0 -7
- package/src/node/utils/state.ts +0 -37
- package/src/sync/backfill/backfill.ts +0 -893
- package/src/sync/backfill/errors.ts +0 -23
- package/src/sync/backfill/index.ts +0 -1
- package/src/sync/backfill/verify.ts +0 -58
- package/src/sync/constants.ts +0 -71
- package/src/sync/index.ts +0 -2
- package/src/sync/interface.ts +0 -55
- package/src/sync/options.ts +0 -45
- package/src/sync/range/batch.ts +0 -455
- package/src/sync/range/chain.ts +0 -715
- package/src/sync/range/range.ts +0 -354
- package/src/sync/range/utils/batches.ts +0 -119
- package/src/sync/range/utils/chainTarget.ts +0 -62
- package/src/sync/range/utils/hashBlocks.ts +0 -27
- package/src/sync/range/utils/index.ts +0 -5
- package/src/sync/range/utils/peerBalancer.ts +0 -184
- package/src/sync/range/utils/updateChains.ts +0 -66
- package/src/sync/sync.ts +0 -290
- package/src/sync/types.ts +0 -57
- package/src/sync/unknownBlock.ts +0 -859
- package/src/sync/utils/downloadByRange.ts +0 -808
- package/src/sync/utils/downloadByRoot.ts +0 -560
- package/src/sync/utils/pendingBlocksTree.ts +0 -97
- package/src/sync/utils/remoteSyncType.ts +0 -144
- package/src/util/address.ts +0 -3
- package/src/util/array.ts +0 -311
- package/src/util/asyncIterableToEvents.ts +0 -164
- package/src/util/binarySearch.ts +0 -48
- package/src/util/bitArray.ts +0 -84
- package/src/util/blobs.ts +0 -210
- package/src/util/bufferPool.ts +0 -95
- package/src/util/bytes.ts +0 -11
- package/src/util/chunkify.ts +0 -27
- package/src/util/clock.ts +0 -212
- package/src/util/dataColumns.ts +0 -415
- package/src/util/dependentRoot.ts +0 -47
- package/src/util/enum.ts +0 -17
- package/src/util/error.ts +0 -56
- package/src/util/eventLoop.ts +0 -22
- package/src/util/execution.ts +0 -223
- package/src/util/file.ts +0 -52
- package/src/util/forkChoice.ts +0 -5
- package/src/util/forkName.ts +0 -20
- package/src/util/graffiti.ts +0 -39
- package/src/util/hex.ts +0 -9
- package/src/util/index.ts +0 -2
- package/src/util/ip.ts +0 -6
- package/src/util/itTrigger.ts +0 -49
- package/src/util/kzg.ts +0 -3
- package/src/util/map.ts +0 -77
- package/src/util/metadata.ts +0 -22
- package/src/util/multifork.ts +0 -69
- package/src/util/numpy.ts +0 -8
- package/src/util/peerId.ts +0 -16
- package/src/util/profile.ts +0 -54
- package/src/util/promises.ts +0 -14
- package/src/util/queue/errors.ts +0 -14
- package/src/util/queue/fnQueue.ts +0 -16
- package/src/util/queue/index.ts +0 -4
- package/src/util/queue/itemQueue.ts +0 -128
- package/src/util/queue/options.ts +0 -37
- package/src/util/serializedCache.ts +0 -20
- package/src/util/set.ts +0 -62
- package/src/util/shuffle.ts +0 -21
- package/src/util/sortBy.ts +0 -19
- package/src/util/sszBytes.ts +0 -481
- package/src/util/strictEvents.ts +0 -8
- package/src/util/time.ts +0 -13
- package/src/util/timeSeries.ts +0 -118
- package/src/util/types.ts +0 -31
- package/src/util/workerEvents.ts +0 -142
- package/src/util/wrapError.ts +0 -27
|
@@ -1,114 +0,0 @@
|
|
|
1
|
-
import {mapValues} from "@lodestar/utils";
|
|
2
|
-
import {getBeaconAttestationGossipIndex} from "../../../util/sszBytes.js";
|
|
3
|
-
import {BatchGossipType, GossipType, SequentialGossipType} from "../../gossip/interface.js";
|
|
4
|
-
import {PendingGossipsubMessage} from "../types.js";
|
|
5
|
-
import {IndexedGossipQueueMinSize} from "./indexed.js";
|
|
6
|
-
import {LinearGossipQueue} from "./linear.js";
|
|
7
|
-
import {DropType, GossipQueue, GossipQueueOpts, QueueType, isIndexedGossipQueueMinSizeOpts} from "./types.js";
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* In normal condition, the higher this value the more efficient the signature verification.
|
|
11
|
-
* However, if at least 1 signature is invalid, we need to verify each signature separately.
|
|
12
|
-
*/
|
|
13
|
-
const MAX_GOSSIP_ATTESTATION_BATCH_SIZE = 128;
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Minimum signature sets to batch verify without waiting for 50ms.
|
|
17
|
-
*/
|
|
18
|
-
export const MIN_SIGNATURE_SETS_TO_BATCH_VERIFY = 32;
|
|
19
|
-
|
|
20
|
-
/**
|
|
21
|
-
* Numbers from https://github.com/sigp/lighthouse/blob/b34a79dc0b02e04441ba01fd0f304d1e203d877d/beacon_node/network/src/beacon_processor/mod.rs#L69
|
|
22
|
-
*/
|
|
23
|
-
const linearGossipQueueOpts: {
|
|
24
|
-
[K in SequentialGossipType]: GossipQueueOpts<PendingGossipsubMessage>;
|
|
25
|
-
} = {
|
|
26
|
-
// validation gossip block asap
|
|
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
|
-
[GossipType.data_column_sidecar]: {
|
|
35
|
-
maxLength: 4096,
|
|
36
|
-
type: QueueType.FIFO,
|
|
37
|
-
dropOpts: {type: DropType.count, count: 1},
|
|
38
|
-
},
|
|
39
|
-
// lighthoue has aggregate_queue 4096 and unknown_block_aggregate_queue 1024, we use single queue
|
|
40
|
-
[GossipType.beacon_aggregate_and_proof]: {
|
|
41
|
-
maxLength: 5120,
|
|
42
|
-
type: QueueType.LIFO,
|
|
43
|
-
dropOpts: {type: DropType.count, count: 1},
|
|
44
|
-
},
|
|
45
|
-
[GossipType.voluntary_exit]: {maxLength: 4096, type: QueueType.FIFO, dropOpts: {type: DropType.count, count: 1}},
|
|
46
|
-
[GossipType.proposer_slashing]: {maxLength: 4096, type: QueueType.FIFO, dropOpts: {type: DropType.count, count: 1}},
|
|
47
|
-
[GossipType.attester_slashing]: {maxLength: 4096, type: QueueType.FIFO, dropOpts: {type: DropType.count, count: 1}},
|
|
48
|
-
[GossipType.sync_committee_contribution_and_proof]: {
|
|
49
|
-
maxLength: 4096,
|
|
50
|
-
type: QueueType.LIFO,
|
|
51
|
-
dropOpts: {type: DropType.count, count: 1},
|
|
52
|
-
},
|
|
53
|
-
[GossipType.sync_committee]: {maxLength: 4096, type: QueueType.LIFO, dropOpts: {type: DropType.count, count: 1}},
|
|
54
|
-
[GossipType.light_client_finality_update]: {
|
|
55
|
-
maxLength: 1024,
|
|
56
|
-
type: QueueType.FIFO,
|
|
57
|
-
dropOpts: {type: DropType.count, count: 1},
|
|
58
|
-
},
|
|
59
|
-
[GossipType.light_client_optimistic_update]: {
|
|
60
|
-
maxLength: 1024,
|
|
61
|
-
type: QueueType.FIFO,
|
|
62
|
-
dropOpts: {type: DropType.count, count: 1},
|
|
63
|
-
},
|
|
64
|
-
// lighthouse has bls changes queue set to their max 16384 to handle large spike at capella
|
|
65
|
-
[GossipType.bls_to_execution_change]: {
|
|
66
|
-
maxLength: 16384,
|
|
67
|
-
type: QueueType.FIFO,
|
|
68
|
-
dropOpts: {type: DropType.count, count: 1},
|
|
69
|
-
},
|
|
70
|
-
};
|
|
71
|
-
|
|
72
|
-
const indexedGossipQueueOpts: {
|
|
73
|
-
[K in BatchGossipType]: GossipQueueOpts<PendingGossipsubMessage>;
|
|
74
|
-
} = {
|
|
75
|
-
[GossipType.beacon_attestation]: {
|
|
76
|
-
// lighthouse has attestation_queue 16384 and unknown_block_attestation_queue 8192, we use single queue
|
|
77
|
-
// this topic may cause node to be overload and drop 100% of lower priority queues
|
|
78
|
-
maxLength: 24576,
|
|
79
|
-
indexFn: (item: PendingGossipsubMessage) => {
|
|
80
|
-
return getBeaconAttestationGossipIndex(item.topic.boundary.fork, item.msg.data);
|
|
81
|
-
},
|
|
82
|
-
minChunkSize: MIN_SIGNATURE_SETS_TO_BATCH_VERIFY,
|
|
83
|
-
maxChunkSize: MAX_GOSSIP_ATTESTATION_BATCH_SIZE,
|
|
84
|
-
},
|
|
85
|
-
};
|
|
86
|
-
|
|
87
|
-
/**
|
|
88
|
-
* Wraps a GossipValidatorFn with a queue, to limit the processing of gossip objects by type.
|
|
89
|
-
*
|
|
90
|
-
* A queue here is essential to protect against DOS attacks, where a peer may send many messages at once.
|
|
91
|
-
* Queues also protect the node against overloading. If the node gets bussy with an expensive epoch transition,
|
|
92
|
-
* it may buffer too many gossip objects causing an Out of memory (OOM) error. With a queue the node will reject
|
|
93
|
-
* new objects to fit its current throughput.
|
|
94
|
-
*
|
|
95
|
-
* Queues may buffer objects by
|
|
96
|
-
* - topic '/eth2/0011aabb/beacon_attestation_0/ssz_snappy'
|
|
97
|
-
* - type `GossipType.beacon_attestation`
|
|
98
|
-
* - all objects in one queue
|
|
99
|
-
*
|
|
100
|
-
* By topic is too specific, so by type groups all similar objects in the same queue. All in the same won't allow
|
|
101
|
-
* to customize different queue behaviours per object type (see `gossipQueueOpts`).
|
|
102
|
-
*/
|
|
103
|
-
export function createGossipQueues(): {
|
|
104
|
-
[K in GossipType]: GossipQueue<PendingGossipsubMessage>;
|
|
105
|
-
} {
|
|
106
|
-
const gossipQueueOpts = {...linearGossipQueueOpts, ...indexedGossipQueueOpts};
|
|
107
|
-
|
|
108
|
-
return mapValues(gossipQueueOpts, (opts) => {
|
|
109
|
-
if (isIndexedGossipQueueMinSizeOpts(opts)) {
|
|
110
|
-
return new IndexedGossipQueueMinSize(opts);
|
|
111
|
-
}
|
|
112
|
-
return new LinearGossipQueue<PendingGossipsubMessage>(opts);
|
|
113
|
-
});
|
|
114
|
-
}
|
|
@@ -1,219 +0,0 @@
|
|
|
1
|
-
import {LinkedList} from "../../../util/array.js";
|
|
2
|
-
import {OrderedSet} from "../../../util/set.js";
|
|
3
|
-
import {GossipQueue, IndexedGossipQueueMinSizeOpts} from "./types.js";
|
|
4
|
-
|
|
5
|
-
type QueueItem<T> = {
|
|
6
|
-
listItems: LinkedList<T>;
|
|
7
|
-
firstSeenMs: number;
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* Enforce minimum wait time for each key. On a mainnet node, wait time for beacon_attestation
|
|
12
|
-
* is more than 500ms, it's worth to take 1/10 of that to help batch more items.
|
|
13
|
-
* This is only needed for key item < minChunkSize.
|
|
14
|
-
*/
|
|
15
|
-
const MINIMUM_WAIT_TIME_MS = 50;
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* This implementation tries to get the most items with same key:
|
|
19
|
-
* - index items by indexFn using a map
|
|
20
|
-
* - store keys with at least minChunkSize
|
|
21
|
-
* - on next, pick the last key with minChunkSize, pop up to maxChunkSize items
|
|
22
|
-
* - on delete, pick the 1st key in the map and delete the 1st item in the list
|
|
23
|
-
* Although it does not strictly follow LIFO, it tries to have that behavior:
|
|
24
|
-
* - On delete, get the first key and the first item of respective list
|
|
25
|
-
* - On next pick the last key with minChunksize
|
|
26
|
-
* - if there is no key with minChunkSize, pop the last item of the last key
|
|
27
|
-
*
|
|
28
|
-
* This is a special gossip queue for beacon_attestation topic
|
|
29
|
-
*/
|
|
30
|
-
export class IndexedGossipQueueMinSize<T extends {indexed?: string; queueAddedMs?: number}> implements GossipQueue<T> {
|
|
31
|
-
private _length = 0;
|
|
32
|
-
private indexedItems: Map<string, QueueItem<T>>;
|
|
33
|
-
// keys with at least minChunkSize items
|
|
34
|
-
// we want to process the last key with minChunkSize first, similar to LIFO
|
|
35
|
-
private minChunkSizeKeys = new OrderedSet<string>();
|
|
36
|
-
// wait time for the next() function to prevent having to search for items >=MINIMUM_WAIT_TIME_MS old repeatedly
|
|
37
|
-
// this value is <= MINIMUM_WAIT_TIME_MS
|
|
38
|
-
private nextWaitTimeMs: number | null = null;
|
|
39
|
-
// the last time we checked for items >=MINIMUM_WAIT_TIME_MS old
|
|
40
|
-
private lastWaitTimeCheckedMs = 0;
|
|
41
|
-
constructor(private readonly opts: IndexedGossipQueueMinSizeOpts<T>) {
|
|
42
|
-
const {minChunkSize, maxChunkSize} = opts;
|
|
43
|
-
if (minChunkSize < 0 || maxChunkSize < 0 || minChunkSize > maxChunkSize) {
|
|
44
|
-
throw Error(`Unexpected min chunk size ${minChunkSize}, max chunk size ${maxChunkSize}}`);
|
|
45
|
-
}
|
|
46
|
-
this.indexedItems = new Map<string, QueueItem<T>>();
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
get length(): number {
|
|
50
|
-
return this._length;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
get keySize(): number {
|
|
54
|
-
return this.indexedItems.size;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
clear(): void {
|
|
58
|
-
this.indexedItems = new Map();
|
|
59
|
-
this._length = 0;
|
|
60
|
-
this.minChunkSizeKeys = new OrderedSet();
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* Get age of each key in ms.
|
|
65
|
-
*/
|
|
66
|
-
getDataAgeMs(): number[] {
|
|
67
|
-
const now = Date.now();
|
|
68
|
-
const result: number[] = [];
|
|
69
|
-
for (const queueItem of this.indexedItems.values()) {
|
|
70
|
-
result.push(now - queueItem.firstSeenMs);
|
|
71
|
-
}
|
|
72
|
-
return result;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
/**
|
|
76
|
-
* Add item to gossip queue. If queue is full, drop first item of first key.
|
|
77
|
-
* Return number of items dropped
|
|
78
|
-
*/
|
|
79
|
-
add(item: T): number {
|
|
80
|
-
const key = this.opts.indexFn(item);
|
|
81
|
-
if (key == null) {
|
|
82
|
-
// this comes from getAttDataBase64FromAttestationSerialized() return type
|
|
83
|
-
// should not happen
|
|
84
|
-
return 0;
|
|
85
|
-
}
|
|
86
|
-
const now = Date.now();
|
|
87
|
-
// here we mutate item, which is used for gossip validation later
|
|
88
|
-
item.indexed = key;
|
|
89
|
-
item.queueAddedMs = now;
|
|
90
|
-
let queueItem = this.indexedItems.get(key);
|
|
91
|
-
if (queueItem == null) {
|
|
92
|
-
queueItem = {firstSeenMs: now, listItems: new LinkedList<T>()};
|
|
93
|
-
this.indexedItems.set(key, queueItem);
|
|
94
|
-
}
|
|
95
|
-
queueItem.listItems.push(item);
|
|
96
|
-
if (queueItem.listItems.length >= this.opts.minChunkSize) {
|
|
97
|
-
this.minChunkSizeKeys.add(key);
|
|
98
|
-
}
|
|
99
|
-
this._length++;
|
|
100
|
-
if (this._length <= this.opts.maxLength) {
|
|
101
|
-
return 0;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
// overload, need to drop more items
|
|
105
|
-
const firstKey = this.indexedItems.keys().next().value as string | undefined;
|
|
106
|
-
// there should be at least 1 key
|
|
107
|
-
if (firstKey == null) {
|
|
108
|
-
return 0;
|
|
109
|
-
}
|
|
110
|
-
const firstQueueItem = this.indexedItems.get(firstKey);
|
|
111
|
-
// should not happen
|
|
112
|
-
if (firstQueueItem == null) {
|
|
113
|
-
return 0;
|
|
114
|
-
}
|
|
115
|
-
const deletedItem = firstQueueItem.listItems.shift();
|
|
116
|
-
if (deletedItem != null) {
|
|
117
|
-
this._length--;
|
|
118
|
-
if (firstQueueItem.listItems.length === 0) {
|
|
119
|
-
this.indexedItems.delete(firstKey);
|
|
120
|
-
}
|
|
121
|
-
if (firstQueueItem.listItems.length < this.opts.minChunkSize) {
|
|
122
|
-
// it's faster to search for deleted item from the head in this case
|
|
123
|
-
this.minChunkSizeKeys.delete(firstKey, true);
|
|
124
|
-
}
|
|
125
|
-
return 1;
|
|
126
|
-
}
|
|
127
|
-
return 0;
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
/**
|
|
131
|
-
* Try to get items of last key with minChunkSize first.
|
|
132
|
-
* If not, pick the last key with MINIMUM_WAIT_TIME_MS old
|
|
133
|
-
*/
|
|
134
|
-
next(): T[] | null {
|
|
135
|
-
let key: string | null = this.minChunkSizeKeys.last();
|
|
136
|
-
if (key == null) {
|
|
137
|
-
key = this.lastMinWaitKey();
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
if (key == null) {
|
|
141
|
-
return null;
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
const queueItem = this.indexedItems.get(key);
|
|
145
|
-
if (queueItem == null) {
|
|
146
|
-
// should not happen
|
|
147
|
-
return null;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
const list = queueItem.listItems;
|
|
151
|
-
const result: T[] = [];
|
|
152
|
-
while (list.length > 0 && result.length < this.opts.maxChunkSize) {
|
|
153
|
-
const t = list.pop();
|
|
154
|
-
if (t != null) {
|
|
155
|
-
result.push(t);
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
if (list.length === 0) {
|
|
160
|
-
this.indexedItems.delete(key);
|
|
161
|
-
}
|
|
162
|
-
if (list.length < this.opts.minChunkSize) {
|
|
163
|
-
// it's faster to search for deleted item from the tail in this case
|
|
164
|
-
this.minChunkSizeKeys.delete(key, false);
|
|
165
|
-
}
|
|
166
|
-
this._length = Math.max(0, this._length - result.length);
|
|
167
|
-
|
|
168
|
-
return result;
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
getAll(): T[] {
|
|
172
|
-
const result: T[] = [];
|
|
173
|
-
for (const key of this.indexedItems.keys()) {
|
|
174
|
-
const array = this.indexedItems.get(key)?.listItems.toArray();
|
|
175
|
-
if (array) {
|
|
176
|
-
result.push(...array);
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
return result;
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
/**
|
|
184
|
-
* `indexedItems` is already sorted by key, so we can just iterate through it
|
|
185
|
-
* Search for the last key with >= MINIMUM_WAIT_TIME_MS old
|
|
186
|
-
* Do not search again if we already searched recently
|
|
187
|
-
*/
|
|
188
|
-
private lastMinWaitKey(): string | null {
|
|
189
|
-
const now = Date.now();
|
|
190
|
-
// searched recently, skip
|
|
191
|
-
if (this.nextWaitTimeMs != null && now - this.lastWaitTimeCheckedMs < this.nextWaitTimeMs) {
|
|
192
|
-
return null;
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
this.lastWaitTimeCheckedMs = now;
|
|
196
|
-
this.nextWaitTimeMs = null;
|
|
197
|
-
let resultedKey: string | null = null;
|
|
198
|
-
for (const [key, queueItem] of this.indexedItems.entries()) {
|
|
199
|
-
if (now - queueItem.firstSeenMs >= MINIMUM_WAIT_TIME_MS) {
|
|
200
|
-
// found, do not return to find the last key with >= MINIMUM_WAIT_TIME_MS old
|
|
201
|
-
this.nextWaitTimeMs = null;
|
|
202
|
-
resultedKey = key;
|
|
203
|
-
} else {
|
|
204
|
-
// if a key is not at least MINIMUM_WAIT_TIME_MS old, all remaining keys are not either
|
|
205
|
-
break;
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
|
|
209
|
-
if (resultedKey == null) {
|
|
210
|
-
// all items are not old enough, set nextWaitTimeMs to avoid searching again
|
|
211
|
-
const firstValue = this.indexedItems.values().next().value as QueueItem<T> | undefined;
|
|
212
|
-
if (firstValue != null) {
|
|
213
|
-
this.nextWaitTimeMs = Math.max(0, MINIMUM_WAIT_TIME_MS - (now - firstValue.firstSeenMs));
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
return resultedKey;
|
|
218
|
-
}
|
|
219
|
-
}
|
|
@@ -1,162 +0,0 @@
|
|
|
1
|
-
import {LinkedList} from "../../../util/array.js";
|
|
2
|
-
import {DropType, GossipQueue, LinearGossipQueueOpts, QueueType} from "./types.js";
|
|
3
|
-
|
|
4
|
-
// Having a drop ratio of 1 will empty the queue which is too severe
|
|
5
|
-
// Worse case drop 95% of the queue
|
|
6
|
-
const MAX_DROP_RATIO = 0.95;
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Default gossip queue for all topics except for beacon_attestation
|
|
10
|
-
* Support LIFO and FIFO type.
|
|
11
|
-
*/
|
|
12
|
-
export class LinearGossipQueue<T> implements GossipQueue<T> {
|
|
13
|
-
private readonly list = new LinkedList<T>();
|
|
14
|
-
// Increase _dropRatio gradually, retest its initial value if node is in good status
|
|
15
|
-
private _dropRatio = 0;
|
|
16
|
-
// this is to avoid the case we drop 90% of the queue, then queue is empty and we consider
|
|
17
|
-
// node is in good status
|
|
18
|
-
private recentDrop = false;
|
|
19
|
-
// set recentDrop to false after we process up to maxLength items
|
|
20
|
-
private processedCountSinceDrop = 0;
|
|
21
|
-
|
|
22
|
-
constructor(private readonly opts: LinearGossipQueueOpts) {
|
|
23
|
-
if (opts.dropOpts.type === DropType.ratio) {
|
|
24
|
-
const {start, step} = opts.dropOpts;
|
|
25
|
-
if (start <= 0 || start > 1) {
|
|
26
|
-
throw Error(`Invalid drop ratio start ${start} step ${step}`);
|
|
27
|
-
}
|
|
28
|
-
this._dropRatio = opts.dropOpts.start;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
get length(): number {
|
|
33
|
-
return this.list.length;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
get keySize(): number {
|
|
37
|
-
// this implementation doesn't support indexing
|
|
38
|
-
return 1;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
// not implemented for this gossip queue
|
|
42
|
-
getDataAgeMs(): number[] {
|
|
43
|
-
return [];
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
get dropRatio(): number {
|
|
47
|
-
return this._dropRatio;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
clear(): void {
|
|
51
|
-
this.list.clear();
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
* Add item to gossip queue.
|
|
56
|
-
* Return number of items dropped
|
|
57
|
-
*/
|
|
58
|
-
add(item: T): number {
|
|
59
|
-
// this signals the node is not overloaded anymore
|
|
60
|
-
if (this.opts.dropOpts.type === DropType.ratio && !this.recentDrop && this.length === 0) {
|
|
61
|
-
// reset drop ratio to see if node is comfortable with it
|
|
62
|
-
this._dropRatio = this.opts.dropOpts.start;
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
this.list.push(item);
|
|
66
|
-
|
|
67
|
-
if (this.list.length <= this.opts.maxLength) {
|
|
68
|
-
return 0;
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
// overload, need to drop more items
|
|
72
|
-
if (this.opts.dropOpts.type === DropType.count) {
|
|
73
|
-
return this.dropByCount(this.opts.dropOpts.count);
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
this.recentDrop = true;
|
|
77
|
-
const droppedCount = this.dropByRatio(this._dropRatio);
|
|
78
|
-
// increase drop ratio the next time queue is full
|
|
79
|
-
this._dropRatio = Math.min(MAX_DROP_RATIO, this._dropRatio + this.opts.dropOpts.step);
|
|
80
|
-
return droppedCount;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
next(): T | null {
|
|
84
|
-
let item: T | null = null;
|
|
85
|
-
// LIFO -> pop() remove last item, FIFO -> shift() remove first item
|
|
86
|
-
switch (this.opts.type) {
|
|
87
|
-
case QueueType.LIFO:
|
|
88
|
-
item = this.list.pop();
|
|
89
|
-
break;
|
|
90
|
-
case QueueType.FIFO:
|
|
91
|
-
item = this.list.shift();
|
|
92
|
-
break;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
// it's ok to mark recent drop as false if we dropped <50% of the queue the last time
|
|
96
|
-
if (this.opts.dropOpts.type === DropType.ratio && this.recentDrop && item !== null) {
|
|
97
|
-
this.processedCountSinceDrop++;
|
|
98
|
-
if (this.processedCountSinceDrop >= this.opts.maxLength) {
|
|
99
|
-
this.recentDrop = false;
|
|
100
|
-
this.processedCountSinceDrop = 0;
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
return item;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
getAll(): T[] {
|
|
108
|
-
return this.list.toArray();
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
/**
|
|
112
|
-
* Drop up to some ratio of items from the queue
|
|
113
|
-
* ratio is from 0 to 1 inclusive
|
|
114
|
-
* Return number of items dropped
|
|
115
|
-
*/
|
|
116
|
-
private dropByRatio(ratio: number): number {
|
|
117
|
-
if (ratio < 0 || ratio > 1) {
|
|
118
|
-
throw Error(`Invalid ratio ${ratio}`);
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
if (ratio === 0) {
|
|
122
|
-
return 0;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
if (ratio === 1) {
|
|
126
|
-
const numDeleted = this.length;
|
|
127
|
-
this.clear();
|
|
128
|
-
return numDeleted;
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
const count = Math.floor(this.list.length * ratio);
|
|
132
|
-
return this.dropByCount(count);
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
/**
|
|
136
|
-
* Drop up to some number of items from the queue
|
|
137
|
-
* Return number of items dropped
|
|
138
|
-
*/
|
|
139
|
-
private dropByCount(count: number): number {
|
|
140
|
-
if (count <= 0) {
|
|
141
|
-
return 0;
|
|
142
|
-
}
|
|
143
|
-
|
|
144
|
-
if (count >= this.length) {
|
|
145
|
-
const numDeleted = this.length;
|
|
146
|
-
this.clear();
|
|
147
|
-
return numDeleted;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
let i = 0;
|
|
151
|
-
while (i < count && this.length > 0) {
|
|
152
|
-
if (this.opts.type === QueueType.LIFO) {
|
|
153
|
-
this.list.shift();
|
|
154
|
-
} else {
|
|
155
|
-
this.list.pop();
|
|
156
|
-
}
|
|
157
|
-
i++;
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
return i;
|
|
161
|
-
}
|
|
162
|
-
}
|
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
export type GossipQueueOpts<T> = LinearGossipQueueOpts | IndexedGossipQueueMinSizeOpts<T>;
|
|
2
|
-
|
|
3
|
-
export type LinearGossipQueueOpts = {
|
|
4
|
-
type: QueueType;
|
|
5
|
-
maxLength: number;
|
|
6
|
-
dropOpts: DropOpts;
|
|
7
|
-
};
|
|
8
|
-
|
|
9
|
-
export type IndexedGossipQueueOpts<T> = {
|
|
10
|
-
maxLength: number;
|
|
11
|
-
indexFn: (item: T) => string | null;
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
export type IndexedGossipQueueMinSizeOpts<T> = IndexedGossipQueueOpts<T> & {
|
|
15
|
-
minChunkSize: number;
|
|
16
|
-
maxChunkSize: number;
|
|
17
|
-
};
|
|
18
|
-
|
|
19
|
-
export function isIndexedGossipQueueMinSizeOpts<T>(opts: GossipQueueOpts<T>): opts is IndexedGossipQueueMinSizeOpts<T> {
|
|
20
|
-
const minSizeOpts = opts as IndexedGossipQueueMinSizeOpts<T>;
|
|
21
|
-
return (
|
|
22
|
-
minSizeOpts.indexFn !== undefined &&
|
|
23
|
-
minSizeOpts.minChunkSize !== undefined &&
|
|
24
|
-
minSizeOpts.maxChunkSize !== undefined
|
|
25
|
-
);
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
export interface GossipQueue<T> {
|
|
29
|
-
length: number;
|
|
30
|
-
keySize: number;
|
|
31
|
-
getDataAgeMs(): number[];
|
|
32
|
-
clear: () => void;
|
|
33
|
-
next: () => T | T[] | null;
|
|
34
|
-
add: (item: T) => number;
|
|
35
|
-
getAll(): T[];
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
export enum QueueType {
|
|
39
|
-
FIFO = "FIFO",
|
|
40
|
-
LIFO = "LIFO",
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
export enum DropType {
|
|
44
|
-
count = "count",
|
|
45
|
-
ratio = "ratio",
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
export type DropOpts =
|
|
49
|
-
| {
|
|
50
|
-
type: DropType.count;
|
|
51
|
-
count: number;
|
|
52
|
-
}
|
|
53
|
-
| {
|
|
54
|
-
type: DropType.ratio;
|
|
55
|
-
start: number;
|
|
56
|
-
step: number;
|
|
57
|
-
};
|
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
import {TopicValidatorResult} from "@libp2p/interface";
|
|
2
|
-
import {ChainForkConfig} from "@lodestar/config";
|
|
3
|
-
import {Logger} from "@lodestar/utils";
|
|
4
|
-
import {AttestationError, GossipAction, GossipActionError} from "../../chain/errors/index.js";
|
|
5
|
-
import {Metrics} from "../../metrics/index.js";
|
|
6
|
-
import {
|
|
7
|
-
BatchGossipHandlerFn,
|
|
8
|
-
GossipHandlerFn,
|
|
9
|
-
GossipHandlers,
|
|
10
|
-
GossipMessageInfo,
|
|
11
|
-
GossipValidatorBatchFn,
|
|
12
|
-
GossipValidatorFn,
|
|
13
|
-
} from "../gossip/interface.js";
|
|
14
|
-
|
|
15
|
-
export type ValidatorFnModules = {
|
|
16
|
-
config: ChainForkConfig;
|
|
17
|
-
logger: Logger;
|
|
18
|
-
metrics: Metrics | null;
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Similar to getGossipValidatorFn but return a function to accept a batch of beacon_attestation messages
|
|
23
|
-
* with the same attestation data
|
|
24
|
-
*/
|
|
25
|
-
export function getGossipValidatorBatchFn(
|
|
26
|
-
gossipHandlers: GossipHandlers,
|
|
27
|
-
modules: ValidatorFnModules
|
|
28
|
-
): GossipValidatorBatchFn {
|
|
29
|
-
const {logger, metrics} = modules;
|
|
30
|
-
|
|
31
|
-
return async function gossipValidatorBatchFn(messageInfos: GossipMessageInfo[]) {
|
|
32
|
-
// all messageInfos have same topic type
|
|
33
|
-
const type = messageInfos[0].topic.type;
|
|
34
|
-
try {
|
|
35
|
-
const results = await (gossipHandlers[type] as BatchGossipHandlerFn)(
|
|
36
|
-
messageInfos.map((messageInfo) => ({
|
|
37
|
-
gossipData: {
|
|
38
|
-
serializedData: messageInfo.msg.data,
|
|
39
|
-
msgSlot: messageInfo.msgSlot,
|
|
40
|
-
indexed: messageInfo.indexed,
|
|
41
|
-
},
|
|
42
|
-
topic: messageInfo.topic,
|
|
43
|
-
peerIdStr: messageInfo.propagationSource,
|
|
44
|
-
seenTimestampSec: messageInfo.seenTimestampSec,
|
|
45
|
-
}))
|
|
46
|
-
);
|
|
47
|
-
|
|
48
|
-
return results.map((e) => {
|
|
49
|
-
if (e == null) {
|
|
50
|
-
return TopicValidatorResult.Accept;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
if (!(e instanceof AttestationError)) {
|
|
54
|
-
logger.debug(`Gossip batch validation ${type} threw a non-AttestationError`, {}, e as Error);
|
|
55
|
-
metrics?.networkProcessor.gossipValidationIgnore.inc({topic: type});
|
|
56
|
-
return TopicValidatorResult.Ignore;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
switch (e.action) {
|
|
60
|
-
case GossipAction.IGNORE:
|
|
61
|
-
metrics?.networkProcessor.gossipValidationIgnore.inc({topic: type});
|
|
62
|
-
// only beacon_attestation topic is validated in batch
|
|
63
|
-
metrics?.networkProcessor.gossipAttestationIgnoreByReason.inc({reason: e.type.code});
|
|
64
|
-
return TopicValidatorResult.Ignore;
|
|
65
|
-
case GossipAction.REJECT:
|
|
66
|
-
metrics?.networkProcessor.gossipValidationReject.inc({topic: type});
|
|
67
|
-
// only beacon_attestation topic is validated in batch
|
|
68
|
-
metrics?.networkProcessor.gossipAttestationRejectByReason.inc({reason: e.type.code});
|
|
69
|
-
logger.debug(`Gossip validation ${type} rejected`, {}, e);
|
|
70
|
-
return TopicValidatorResult.Reject;
|
|
71
|
-
}
|
|
72
|
-
});
|
|
73
|
-
} catch (e) {
|
|
74
|
-
// Don't expect error here
|
|
75
|
-
logger.debug(`Gossip batch validation ${type} threw an error`, {}, e as Error);
|
|
76
|
-
const results: TopicValidatorResult[] = [];
|
|
77
|
-
for (let i = 0; i < messageInfos.length; i++) {
|
|
78
|
-
results.push(TopicValidatorResult.Ignore);
|
|
79
|
-
}
|
|
80
|
-
return results;
|
|
81
|
-
}
|
|
82
|
-
};
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* Returns a GossipSub validator function from a GossipHandlerFn. GossipHandlerFn may throw GossipActionError if one
|
|
87
|
-
* or more validation conditions from the consensus-specs#p2p-interface are not satisfied.
|
|
88
|
-
*
|
|
89
|
-
* This function receives a string topic and a binary message `InMessage` and deserializes both using caches.
|
|
90
|
-
* - The topic string should be known in advance and pre-computed
|
|
91
|
-
* - The message.data should already by uncompressed when computing its msgID
|
|
92
|
-
*
|
|
93
|
-
* All logging and metrics associated with gossip object validation should happen in this function. We want to know
|
|
94
|
-
* - In debug logs what objects are we processing, the result and some succint metadata
|
|
95
|
-
* - In metrics what's the throughput and ratio of accept/ignore/reject per type
|
|
96
|
-
*
|
|
97
|
-
* @see getGossipHandlers for reasoning on why GossipHandlerFn are used for gossip validation.
|
|
98
|
-
*/
|
|
99
|
-
export function getGossipValidatorFn(gossipHandlers: GossipHandlers, modules: ValidatorFnModules): GossipValidatorFn {
|
|
100
|
-
const {logger, metrics} = modules;
|
|
101
|
-
|
|
102
|
-
return async function gossipValidatorFn({topic, msg, propagationSource, seenTimestampSec, msgSlot}) {
|
|
103
|
-
const type = topic.type;
|
|
104
|
-
|
|
105
|
-
try {
|
|
106
|
-
await (gossipHandlers[type] as GossipHandlerFn)({
|
|
107
|
-
gossipData: {serializedData: msg.data, msgSlot},
|
|
108
|
-
topic,
|
|
109
|
-
peerIdStr: propagationSource,
|
|
110
|
-
seenTimestampSec,
|
|
111
|
-
});
|
|
112
|
-
|
|
113
|
-
metrics?.networkProcessor.gossipValidationAccept.inc({topic: type});
|
|
114
|
-
|
|
115
|
-
return TopicValidatorResult.Accept;
|
|
116
|
-
} catch (e) {
|
|
117
|
-
if (!(e instanceof GossipActionError)) {
|
|
118
|
-
// not deserve to log error here, it looks too dangerous to users
|
|
119
|
-
logger.debug(`Gossip validation ${type} threw a non-GossipActionError`, {}, e as Error);
|
|
120
|
-
return TopicValidatorResult.Ignore;
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
// Metrics on specific error reason
|
|
124
|
-
// Note: LodestarError.code are bounded pre-declared error messages, not from arbitrary error.message
|
|
125
|
-
metrics?.networkProcessor.gossipValidationError.inc({
|
|
126
|
-
topic: type,
|
|
127
|
-
error: (e as GossipActionError<{code: string}>).type.code,
|
|
128
|
-
});
|
|
129
|
-
|
|
130
|
-
switch (e.action) {
|
|
131
|
-
case GossipAction.IGNORE:
|
|
132
|
-
metrics?.networkProcessor.gossipValidationIgnore.inc({topic: type});
|
|
133
|
-
return TopicValidatorResult.Ignore;
|
|
134
|
-
|
|
135
|
-
case GossipAction.REJECT:
|
|
136
|
-
metrics?.networkProcessor.gossipValidationReject.inc({topic: type});
|
|
137
|
-
logger.debug(`Gossip validation ${type} rejected`, {}, e);
|
|
138
|
-
return TopicValidatorResult.Reject;
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
};
|
|
142
|
-
}
|