@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,65 +0,0 @@
|
|
|
1
|
-
import {PeerId} from "@libp2p/interface";
|
|
2
|
-
import {Encoding} from "@lodestar/reqresp";
|
|
3
|
-
import {CustodyIndex, Slot, Status, fulu} from "@lodestar/types";
|
|
4
|
-
import {NodeId} from "../subnets/interface.js";
|
|
5
|
-
import {ClientKind} from "./client.js";
|
|
6
|
-
|
|
7
|
-
type PeerIdStr = string;
|
|
8
|
-
type Metadata = fulu.Metadata & {custodyGroups: CustodyIndex[]; samplingGroups: CustodyIndex[]};
|
|
9
|
-
export type PeerSyncMeta = {
|
|
10
|
-
peerId: PeerIdStr;
|
|
11
|
-
client: string;
|
|
12
|
-
custodyColumns: CustodyIndex[];
|
|
13
|
-
earliestAvailableSlot?: Slot;
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
export enum RelevantPeerStatus {
|
|
17
|
-
Unknown = "unknown",
|
|
18
|
-
relevant = "relevant",
|
|
19
|
-
irrelevant = "irrelevant",
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
export type PeerData = {
|
|
23
|
-
lastReceivedMsgUnixTsMs: number;
|
|
24
|
-
lastStatusUnixTsMs: number;
|
|
25
|
-
connectedUnixTsMs: number;
|
|
26
|
-
relevantStatus: RelevantPeerStatus;
|
|
27
|
-
direction: "inbound" | "outbound";
|
|
28
|
-
peerId: PeerId;
|
|
29
|
-
nodeId: NodeId | null;
|
|
30
|
-
metadata: Metadata | null;
|
|
31
|
-
status: Status | null;
|
|
32
|
-
agentVersion: string | null;
|
|
33
|
-
agentClient: ClientKind | null;
|
|
34
|
-
encodingPreference: Encoding | null;
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* Make data available to multiple components in the network stack.
|
|
39
|
-
* Due to class dependencies some modules have circular dependencies, like PeerManager - ReqResp.
|
|
40
|
-
* This third party class allows data to be available to both.
|
|
41
|
-
*
|
|
42
|
-
* The pruning and bounding of this class is handled by the PeerManager
|
|
43
|
-
*/
|
|
44
|
-
export class PeersData {
|
|
45
|
-
readonly connectedPeers = new Map<PeerIdStr, PeerData>();
|
|
46
|
-
|
|
47
|
-
getAgentVersion(peerIdStr: string): string {
|
|
48
|
-
return this.connectedPeers.get(peerIdStr)?.agentVersion ?? "NA";
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
getPeerKind(peerIdStr: string): ClientKind | null {
|
|
52
|
-
return this.connectedPeers.get(peerIdStr)?.agentClient ?? null;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
getEncodingPreference(peerIdStr: string): Encoding | null {
|
|
56
|
-
return this.connectedPeers.get(peerIdStr)?.encodingPreference ?? null;
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
setEncodingPreference(peerIdStr: string, encoding: Encoding): void {
|
|
60
|
-
const peerData = this.connectedPeers.get(peerIdStr);
|
|
61
|
-
if (peerData) {
|
|
62
|
-
peerData.encodingPreference = encoding;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import {gossipScoreThresholds} from "../../gossip/scoringParameters.js";
|
|
2
|
-
|
|
3
|
-
/** The default score for new peers */
|
|
4
|
-
export const DEFAULT_SCORE = 0;
|
|
5
|
-
/** The minimum reputation before a peer is disconnected */
|
|
6
|
-
export const MIN_SCORE_BEFORE_DISCONNECT = -20;
|
|
7
|
-
/** The minimum reputation before a peer is banned */
|
|
8
|
-
export const MIN_SCORE_BEFORE_BAN = -50;
|
|
9
|
-
// If a peer has a lodestar score below this constant all other score parts will get ignored and
|
|
10
|
-
// the peer will get banned regardless of the other parts.
|
|
11
|
-
export const MIN_LODESTAR_SCORE_BEFORE_BAN = -60.0;
|
|
12
|
-
/** The maximum score a peer can obtain. Update metrics.peerScore if this changes */
|
|
13
|
-
export const MAX_SCORE = 100;
|
|
14
|
-
/** The minimum score a peer can obtain. Update metrics.peerScore if this changes */
|
|
15
|
-
export const MIN_SCORE = -100;
|
|
16
|
-
/** Drop score if absolute value is below this threshold */
|
|
17
|
-
export const SCORE_THRESHOLD = 1;
|
|
18
|
-
/** The halflife of a peer's score. I.e the number of milliseconds it takes for the score to decay to half its value */
|
|
19
|
-
export const SCORE_HALFLIFE_MS = 10 * 60 * 1000;
|
|
20
|
-
export const HALFLIFE_DECAY_MS = -Math.log(2) / SCORE_HALFLIFE_MS;
|
|
21
|
-
/** The number of milliseconds we ban a peer for before their score begins to decay */
|
|
22
|
-
export const COOL_DOWN_BEFORE_DECAY_MS = 30 * 60 * 1000;
|
|
23
|
-
/** Limit of entries in the scores map */
|
|
24
|
-
export const MAX_ENTRIES = 1000;
|
|
25
|
-
/** Const that gets returned when no cool-down is applied */
|
|
26
|
-
export const NO_COOL_DOWN_APPLIED = -1;
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* We weight negative gossipsub scores in such a way that they never result in a disconnect by
|
|
30
|
-
* themselves. This "solves" the problem of non-decaying gossipsub scores for disconnected peers.
|
|
31
|
-
*/
|
|
32
|
-
export const GOSSIPSUB_NEGATIVE_SCORE_WEIGHT =
|
|
33
|
-
(MIN_SCORE_BEFORE_DISCONNECT + 1) / gossipScoreThresholds.graylistThreshold;
|
|
34
|
-
export const GOSSIPSUB_POSITIVE_SCORE_WEIGHT = GOSSIPSUB_NEGATIVE_SCORE_WEIGHT;
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import {PeerId} from "@libp2p/interface";
|
|
2
|
-
import {GoodByeReasonCode} from "../../../constants/network.js";
|
|
3
|
-
import {PeerIdStr} from "../../../util/peerId.js";
|
|
4
|
-
import {NetworkCoreMetrics} from "../../core/metrics.js";
|
|
5
|
-
|
|
6
|
-
export type PeerRpcScoreOpts = {
|
|
7
|
-
disablePeerScoring?: boolean;
|
|
8
|
-
};
|
|
9
|
-
|
|
10
|
-
export interface IPeerRpcScoreStore {
|
|
11
|
-
getScore(peer: PeerId): number;
|
|
12
|
-
getGossipScore(peer: PeerId): number;
|
|
13
|
-
getScoreState(peer: PeerId): ScoreState;
|
|
14
|
-
isCoolingDown(peer: PeerIdStr): boolean;
|
|
15
|
-
dumpPeerScoreStats(): PeerScoreStats;
|
|
16
|
-
applyAction(peer: PeerId, action: PeerAction, actionName: string): void;
|
|
17
|
-
applyReconnectionCoolDown(peer: PeerIdStr, reason: GoodByeReasonCode): number;
|
|
18
|
-
update(): void;
|
|
19
|
-
updateGossipsubScore(peerId: PeerIdStr, newScore: number, ignore: boolean): void;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
export interface IPeerScore {
|
|
23
|
-
getScore(): number;
|
|
24
|
-
getGossipScore(): number;
|
|
25
|
-
isCoolingDown(): boolean;
|
|
26
|
-
add(scoreDelta: number): number;
|
|
27
|
-
update(): number;
|
|
28
|
-
updateGossipsubScore(newScore: number, ignore: boolean): void;
|
|
29
|
-
getStat(): PeerScoreStat;
|
|
30
|
-
applyReconnectionCoolDown(reason: GoodByeReasonCode): number;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
export enum ScoreState {
|
|
34
|
-
/** We are content with the peers performance. We permit connections and messages. */
|
|
35
|
-
Healthy = "Healthy",
|
|
36
|
-
/** The peer should be disconnected. We allow re-connections if the peer is persistent */
|
|
37
|
-
Disconnected = "Disconnected",
|
|
38
|
-
/** The peer is banned. We disallow new connections until it's score has decayed into a tolerable threshold */
|
|
39
|
-
Banned = "Banned",
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
export type PeerRpcScoreStoreModules = {
|
|
43
|
-
metrics: NetworkCoreMetrics | null;
|
|
44
|
-
};
|
|
45
|
-
|
|
46
|
-
export type PeerScoreStats = ({peerId: PeerIdStr} & PeerScoreStat)[];
|
|
47
|
-
|
|
48
|
-
export type PeerScoreStat = {
|
|
49
|
-
lodestarScore: number;
|
|
50
|
-
gossipScore: number;
|
|
51
|
-
ignoreNegativeGossipScore: boolean;
|
|
52
|
-
score: number;
|
|
53
|
-
lastUpdate: number;
|
|
54
|
-
};
|
|
55
|
-
|
|
56
|
-
export enum PeerAction {
|
|
57
|
-
/** Immediately ban peer */
|
|
58
|
-
Fatal = "Fatal",
|
|
59
|
-
/**
|
|
60
|
-
* Not malicious action, but it must not be tolerated
|
|
61
|
-
* ~5 occurrences will get the peer banned
|
|
62
|
-
*/
|
|
63
|
-
LowToleranceError = "LowToleranceError",
|
|
64
|
-
/**
|
|
65
|
-
* Negative action that can be tolerated only sometimes
|
|
66
|
-
* ~10 occurrences will get the peer banned
|
|
67
|
-
*/
|
|
68
|
-
MidToleranceError = "MidToleranceError",
|
|
69
|
-
/**
|
|
70
|
-
* Some error that can be tolerated multiple times
|
|
71
|
-
* ~50 occurrences will get the peer banned
|
|
72
|
-
*/
|
|
73
|
-
HighToleranceError = "HighToleranceError",
|
|
74
|
-
}
|
|
@@ -1,200 +0,0 @@
|
|
|
1
|
-
import {GoodByeReasonCode} from "../../../constants/network.js";
|
|
2
|
-
import {
|
|
3
|
-
COOL_DOWN_BEFORE_DECAY_MS,
|
|
4
|
-
DEFAULT_SCORE,
|
|
5
|
-
GOSSIPSUB_NEGATIVE_SCORE_WEIGHT,
|
|
6
|
-
GOSSIPSUB_POSITIVE_SCORE_WEIGHT,
|
|
7
|
-
HALFLIFE_DECAY_MS,
|
|
8
|
-
MAX_SCORE,
|
|
9
|
-
MIN_LODESTAR_SCORE_BEFORE_BAN,
|
|
10
|
-
MIN_SCORE,
|
|
11
|
-
NO_COOL_DOWN_APPLIED,
|
|
12
|
-
} from "./constants.js";
|
|
13
|
-
import {IPeerScore, PeerScoreStat, ScoreState} from "./interface.js";
|
|
14
|
-
import {scoreToState} from "./utils.js";
|
|
15
|
-
|
|
16
|
-
/**
|
|
17
|
-
* Manage score of a peer.
|
|
18
|
-
*/
|
|
19
|
-
export class RealScore implements IPeerScore {
|
|
20
|
-
private lodestarScore: number;
|
|
21
|
-
private gossipScore: number;
|
|
22
|
-
private ignoreNegativeGossipScore: boolean;
|
|
23
|
-
/** The final score, computed from the above */
|
|
24
|
-
private score: number;
|
|
25
|
-
private lastUpdate: number;
|
|
26
|
-
|
|
27
|
-
constructor() {
|
|
28
|
-
this.lodestarScore = DEFAULT_SCORE;
|
|
29
|
-
this.gossipScore = DEFAULT_SCORE;
|
|
30
|
-
this.score = DEFAULT_SCORE;
|
|
31
|
-
this.ignoreNegativeGossipScore = false;
|
|
32
|
-
this.lastUpdate = Date.now();
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
isCoolingDown(): boolean {
|
|
36
|
-
return Date.now() < this.lastUpdate;
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
getScore(): number {
|
|
40
|
-
return this.score;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
getGossipScore(): number {
|
|
44
|
-
return this.gossipScore;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
add(scoreDelta: number): number {
|
|
48
|
-
let newScore = this.lodestarScore + scoreDelta;
|
|
49
|
-
if (newScore > MAX_SCORE) newScore = MAX_SCORE;
|
|
50
|
-
if (newScore < MIN_SCORE) newScore = MIN_SCORE;
|
|
51
|
-
|
|
52
|
-
this.setLodestarScore(newScore);
|
|
53
|
-
return newScore;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
applyReconnectionCoolDown(reason: GoodByeReasonCode): number {
|
|
57
|
-
let coolDownMin = NO_COOL_DOWN_APPLIED;
|
|
58
|
-
switch (reason) {
|
|
59
|
-
// let scoring system handle score decay by itself
|
|
60
|
-
case GoodByeReasonCode.BANNED:
|
|
61
|
-
case GoodByeReasonCode.SCORE_TOO_LOW:
|
|
62
|
-
return coolDownMin;
|
|
63
|
-
case GoodByeReasonCode.INBOUND_DISCONNECT:
|
|
64
|
-
case GoodByeReasonCode.TOO_MANY_PEERS:
|
|
65
|
-
coolDownMin = 5;
|
|
66
|
-
break;
|
|
67
|
-
case GoodByeReasonCode.ERROR:
|
|
68
|
-
case GoodByeReasonCode.CLIENT_SHUTDOWN:
|
|
69
|
-
coolDownMin = 60;
|
|
70
|
-
break;
|
|
71
|
-
case GoodByeReasonCode.IRRELEVANT_NETWORK:
|
|
72
|
-
coolDownMin = 240;
|
|
73
|
-
break;
|
|
74
|
-
}
|
|
75
|
-
// set banning period to time in ms in the future from now
|
|
76
|
-
this.lastUpdate = Date.now() + coolDownMin * 60 * 1000;
|
|
77
|
-
return coolDownMin;
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
/**
|
|
81
|
-
* Applies time-based logic such as decay rates to the score.
|
|
82
|
-
* This function should be called periodically.
|
|
83
|
-
*
|
|
84
|
-
* Return the new score.
|
|
85
|
-
*/
|
|
86
|
-
update(): number {
|
|
87
|
-
const nowMs = Date.now();
|
|
88
|
-
|
|
89
|
-
// Decay the current score
|
|
90
|
-
// Using exponential decay based on a constant half life.
|
|
91
|
-
const sinceLastUpdateMs = nowMs - this.lastUpdate;
|
|
92
|
-
// If peer was banned, lastUpdate will be in the future
|
|
93
|
-
if (sinceLastUpdateMs > 0) {
|
|
94
|
-
this.lastUpdate = nowMs;
|
|
95
|
-
// e^(-ln(2)/HL*t)
|
|
96
|
-
const decayFactor = Math.exp(HALFLIFE_DECAY_MS * sinceLastUpdateMs);
|
|
97
|
-
this.setLodestarScore(this.lodestarScore * decayFactor);
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
return this.lodestarScore;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
updateGossipsubScore(newScore: number, ignore: boolean): void {
|
|
104
|
-
// we only update gossipsub if last_updated is in the past which means either the peer is
|
|
105
|
-
// not banned or the BANNED_BEFORE_DECAY time is over.
|
|
106
|
-
if (this.lastUpdate <= Date.now()) {
|
|
107
|
-
this.gossipScore = newScore;
|
|
108
|
-
this.ignoreNegativeGossipScore = ignore;
|
|
109
|
-
}
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
getStat(): PeerScoreStat {
|
|
113
|
-
return {
|
|
114
|
-
lodestarScore: this.lodestarScore,
|
|
115
|
-
gossipScore: this.gossipScore,
|
|
116
|
-
ignoreNegativeGossipScore: this.ignoreNegativeGossipScore,
|
|
117
|
-
score: this.score,
|
|
118
|
-
lastUpdate: this.lastUpdate,
|
|
119
|
-
};
|
|
120
|
-
}
|
|
121
|
-
|
|
122
|
-
/**
|
|
123
|
-
* Updating lodestarScore should always go through this method,
|
|
124
|
-
* so that we update this.score accordingly.
|
|
125
|
-
*/
|
|
126
|
-
private setLodestarScore(newScore: number): void {
|
|
127
|
-
this.lodestarScore = newScore;
|
|
128
|
-
this.updateState();
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
/**
|
|
132
|
-
* Compute the final score, ban peer if needed
|
|
133
|
-
*/
|
|
134
|
-
private updateState(): void {
|
|
135
|
-
const prevState = scoreToState(this.score);
|
|
136
|
-
this.recomputeScore();
|
|
137
|
-
const newState = scoreToState(this.score);
|
|
138
|
-
|
|
139
|
-
if (prevState !== ScoreState.Banned && newState === ScoreState.Banned) {
|
|
140
|
-
// ban this peer for at least BANNED_BEFORE_DECAY_MS seconds
|
|
141
|
-
this.lastUpdate = Date.now() + COOL_DOWN_BEFORE_DECAY_MS;
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
/**
|
|
146
|
-
* Compute the final score
|
|
147
|
-
*/
|
|
148
|
-
private recomputeScore(): void {
|
|
149
|
-
this.score = this.lodestarScore;
|
|
150
|
-
if (this.score <= MIN_LODESTAR_SCORE_BEFORE_BAN) {
|
|
151
|
-
// ignore all other scores, i.e. do nothing here
|
|
152
|
-
return;
|
|
153
|
-
}
|
|
154
|
-
|
|
155
|
-
if (this.gossipScore >= 0) {
|
|
156
|
-
this.score += this.gossipScore * GOSSIPSUB_POSITIVE_SCORE_WEIGHT;
|
|
157
|
-
} else if (!this.ignoreNegativeGossipScore) {
|
|
158
|
-
this.score += this.gossipScore * GOSSIPSUB_NEGATIVE_SCORE_WEIGHT;
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
/** An implementation of IPeerScore for testing */
|
|
164
|
-
export class MaxScore implements IPeerScore {
|
|
165
|
-
getScore(): number {
|
|
166
|
-
return MAX_SCORE;
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
getGossipScore(): number {
|
|
170
|
-
return DEFAULT_SCORE;
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
isCoolingDown(): boolean {
|
|
174
|
-
return false;
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
add(): number {
|
|
178
|
-
return DEFAULT_SCORE;
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
update(): number {
|
|
182
|
-
return MAX_SCORE;
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
applyReconnectionCoolDown(_reason: GoodByeReasonCode): number {
|
|
186
|
-
return NO_COOL_DOWN_APPLIED;
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
updateGossipsubScore(): void {}
|
|
190
|
-
|
|
191
|
-
getStat(): PeerScoreStat {
|
|
192
|
-
return {
|
|
193
|
-
lodestarScore: MAX_SCORE,
|
|
194
|
-
gossipScore: DEFAULT_SCORE,
|
|
195
|
-
ignoreNegativeGossipScore: false,
|
|
196
|
-
score: MAX_SCORE,
|
|
197
|
-
lastUpdate: Date.now(),
|
|
198
|
-
};
|
|
199
|
-
}
|
|
200
|
-
}
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
import {PeerId} from "@libp2p/interface";
|
|
2
|
-
import {Logger, MapDef, pruneSetToMax} from "@lodestar/utils";
|
|
3
|
-
import {GoodByeReasonCode} from "../../../constants/network.js";
|
|
4
|
-
import {PeerIdStr} from "../../../util/peerId.js";
|
|
5
|
-
import {NetworkCoreMetrics} from "../../core/metrics.js";
|
|
6
|
-
import {prettyPrintPeerId} from "../../util.js";
|
|
7
|
-
import {DEFAULT_SCORE, MAX_ENTRIES, MAX_SCORE, MIN_SCORE, SCORE_THRESHOLD} from "./constants.js";
|
|
8
|
-
import {IPeerRpcScoreStore, IPeerScore, PeerAction, PeerRpcScoreOpts, PeerScoreStats, ScoreState} from "./interface.js";
|
|
9
|
-
import {MaxScore, RealScore} from "./score.js";
|
|
10
|
-
import {scoreToState} from "./utils.js";
|
|
11
|
-
|
|
12
|
-
const peerActionScore: Record<PeerAction, number> = {
|
|
13
|
-
[PeerAction.Fatal]: -(MAX_SCORE - MIN_SCORE),
|
|
14
|
-
[PeerAction.LowToleranceError]: -10,
|
|
15
|
-
[PeerAction.MidToleranceError]: -5,
|
|
16
|
-
[PeerAction.HighToleranceError]: -1,
|
|
17
|
-
};
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* A peer's score (perceived potential usefulness).
|
|
21
|
-
* This simplistic version consists of a global score per peer which decays to 0 over time.
|
|
22
|
-
* The decay rate applies equally to positive and negative scores.
|
|
23
|
-
* Peer cool-down period will be checked before dialing and will only be dialed if score is not waiting to decay
|
|
24
|
-
*/
|
|
25
|
-
export class PeerRpcScoreStore implements IPeerRpcScoreStore {
|
|
26
|
-
private readonly scores: MapDef<PeerIdStr, IPeerScore>;
|
|
27
|
-
private readonly metrics: NetworkCoreMetrics | null;
|
|
28
|
-
private readonly logger: Logger | null;
|
|
29
|
-
|
|
30
|
-
// TODO: Persist scores, at least BANNED status to disk
|
|
31
|
-
|
|
32
|
-
constructor(opts: PeerRpcScoreOpts = {}, metrics: NetworkCoreMetrics | null = null, logger: Logger | null = null) {
|
|
33
|
-
this.metrics = metrics;
|
|
34
|
-
this.logger = logger;
|
|
35
|
-
this.scores = opts.disablePeerScoring ? new MapDef(() => new MaxScore()) : new MapDef(() => new RealScore());
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
getScore(peer: PeerId): number {
|
|
39
|
-
return this.scores.get(peer.toString())?.getScore() ?? DEFAULT_SCORE;
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
getGossipScore(peer: PeerId): number {
|
|
43
|
-
return this.scores.get(peer.toString())?.getGossipScore() ?? DEFAULT_SCORE;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
getScoreState(peer: PeerId): ScoreState {
|
|
47
|
-
return scoreToState(this.getScore(peer));
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
isCoolingDown(peerIdStr: PeerIdStr): boolean {
|
|
51
|
-
return this.scores.get(peerIdStr)?.isCoolingDown() ?? false;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
dumpPeerScoreStats(): PeerScoreStats {
|
|
55
|
-
return Array.from(this.scores.entries()).map(([peerId, peerScore]) => ({peerId, ...peerScore.getStat()}));
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
applyAction(peer: PeerId, action: PeerAction, actionName: string): void {
|
|
59
|
-
const peerScore = this.scores.getOrDefault(peer.toString());
|
|
60
|
-
const scoreChange = peerActionScore[action];
|
|
61
|
-
const newScore = peerScore.add(scoreChange);
|
|
62
|
-
|
|
63
|
-
this.logger?.debug("peer score adjusted", {scoreChange, newScore, peerId: prettyPrintPeerId(peer), actionName});
|
|
64
|
-
this.metrics?.peersReportPeerCount.inc({reason: actionName});
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* Apply a reconnection cool-down period to prevent automatic reconnection. Sets peer
|
|
69
|
-
* banning period and updates gossip score to -1 so next update removes the negative
|
|
70
|
-
* score
|
|
71
|
-
*/
|
|
72
|
-
applyReconnectionCoolDown(peer: PeerIdStr, reason: GoodByeReasonCode): number {
|
|
73
|
-
const peerScore = this.scores.getOrDefault(peer);
|
|
74
|
-
return peerScore.applyReconnectionCoolDown(reason);
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
update(): void {
|
|
78
|
-
// Bound size of data structures
|
|
79
|
-
pruneSetToMax(this.scores, MAX_ENTRIES);
|
|
80
|
-
|
|
81
|
-
for (const [peerIdStr, peerScore] of this.scores) {
|
|
82
|
-
const newScore = peerScore.update();
|
|
83
|
-
|
|
84
|
-
// Prune scores below threshold
|
|
85
|
-
if (Math.abs(newScore) < SCORE_THRESHOLD) {
|
|
86
|
-
this.scores.delete(peerIdStr);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
updateGossipsubScore(peerId: PeerIdStr, newScore: number, ignore: boolean): void {
|
|
92
|
-
const peerScore = this.scores.getOrDefault(peerId);
|
|
93
|
-
peerScore.updateGossipsubScore(newScore, ignore);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import {negativeGossipScoreIgnoreThreshold} from "../../gossip/scoringParameters.js";
|
|
2
|
-
import {MIN_SCORE_BEFORE_BAN, MIN_SCORE_BEFORE_DISCONNECT} from "./constants.js";
|
|
3
|
-
import {IPeerRpcScoreStore, ScoreState} from "./interface.js";
|
|
4
|
-
|
|
5
|
-
export function scoreToState(score: number): ScoreState {
|
|
6
|
-
if (score <= MIN_SCORE_BEFORE_BAN) return ScoreState.Banned;
|
|
7
|
-
if (score <= MIN_SCORE_BEFORE_DISCONNECT) return ScoreState.Disconnected;
|
|
8
|
-
return ScoreState.Healthy;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Utility to update gossipsub score of connected peers
|
|
13
|
-
*/
|
|
14
|
-
export function updateGossipsubScores(
|
|
15
|
-
peerRpcScores: IPeerRpcScoreStore,
|
|
16
|
-
gossipsubScores: Map<string, number>,
|
|
17
|
-
toIgnoreNegativePeers: number
|
|
18
|
-
): void {
|
|
19
|
-
// sort by gossipsub score desc
|
|
20
|
-
const sortedPeerIds = Array.from(gossipsubScores.keys()).sort(
|
|
21
|
-
(a, b) => (gossipsubScores.get(b) ?? 0) - (gossipsubScores.get(a) ?? 0)
|
|
22
|
-
);
|
|
23
|
-
for (const peerId of sortedPeerIds) {
|
|
24
|
-
const gossipsubScore = gossipsubScores.get(peerId);
|
|
25
|
-
if (gossipsubScore !== undefined) {
|
|
26
|
-
let ignore = false;
|
|
27
|
-
if (gossipsubScore < 0 && gossipsubScore > negativeGossipScoreIgnoreThreshold && toIgnoreNegativePeers > 0) {
|
|
28
|
-
// We ignore the negative score for the best negative peers so that their
|
|
29
|
-
// gossipsub score can recover without getting disconnected.
|
|
30
|
-
ignore = true;
|
|
31
|
-
toIgnoreNegativePeers -= 1;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
peerRpcScores.updateGossipsubScore(peerId, gossipsubScore, ignore);
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
}
|
|
@@ -1,99 +0,0 @@
|
|
|
1
|
-
import {ForkName, isForkPostFulu} from "@lodestar/params";
|
|
2
|
-
import {ForkDigest, Root, Slot, Status, fulu, ssz} from "@lodestar/types";
|
|
3
|
-
import {toHex, toRootHex} from "@lodestar/utils";
|
|
4
|
-
|
|
5
|
-
// TODO: Why this value? (From Lighthouse)
|
|
6
|
-
const FUTURE_SLOT_TOLERANCE = 1;
|
|
7
|
-
|
|
8
|
-
export enum IrrelevantPeerCode {
|
|
9
|
-
INCOMPATIBLE_FORKS = "IRRELEVANT_PEER_INCOMPATIBLE_FORKS",
|
|
10
|
-
DIFFERENT_CLOCKS = "IRRELEVANT_PEER_DIFFERENT_CLOCKS",
|
|
11
|
-
DIFFERENT_FINALIZED = "IRRELEVANT_PEER_DIFFERENT_FINALIZED",
|
|
12
|
-
NO_EARLIEST_AVAILABLE_SLOT = "NO_EARLIEST_AVAILABLE_SLOT",
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
type IrrelevantPeerType =
|
|
16
|
-
| {code: IrrelevantPeerCode.INCOMPATIBLE_FORKS; ours: ForkDigest; theirs: ForkDigest}
|
|
17
|
-
| {code: IrrelevantPeerCode.DIFFERENT_CLOCKS; slotDiff: number}
|
|
18
|
-
| {code: IrrelevantPeerCode.NO_EARLIEST_AVAILABLE_SLOT}
|
|
19
|
-
| {code: IrrelevantPeerCode.DIFFERENT_FINALIZED; expectedRoot: Root; remoteRoot: Root};
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Process a `Status` message to determine if a peer is relevant to us. If the peer is
|
|
23
|
-
* irrelevant the reason is returned.
|
|
24
|
-
*/
|
|
25
|
-
export function assertPeerRelevance(
|
|
26
|
-
forkName: ForkName,
|
|
27
|
-
remote: Status,
|
|
28
|
-
local: Status,
|
|
29
|
-
currentSlot: Slot
|
|
30
|
-
): IrrelevantPeerType | null {
|
|
31
|
-
// The node is on a different network/fork
|
|
32
|
-
if (!ssz.ForkDigest.equals(local.forkDigest, remote.forkDigest)) {
|
|
33
|
-
return {
|
|
34
|
-
code: IrrelevantPeerCode.INCOMPATIBLE_FORKS,
|
|
35
|
-
ours: local.forkDigest,
|
|
36
|
-
theirs: remote.forkDigest,
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
// The remote's head is on a slot that is significantly ahead of what we consider the
|
|
41
|
-
// current slot. This could be because they are using a different genesis time, or that
|
|
42
|
-
// their or our system's clock is incorrect.
|
|
43
|
-
const slotDiff = remote.headSlot - Math.max(currentSlot, 0);
|
|
44
|
-
if (slotDiff > FUTURE_SLOT_TOLERANCE) {
|
|
45
|
-
return {code: IrrelevantPeerCode.DIFFERENT_CLOCKS, slotDiff};
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
// The remote's finalized epoch is less than or equal to ours, but the block root is
|
|
49
|
-
// different to the one in our chain. Therefore, the node is on a different chain and we
|
|
50
|
-
// should not communicate with them.
|
|
51
|
-
|
|
52
|
-
if (
|
|
53
|
-
remote.finalizedEpoch <= local.finalizedEpoch &&
|
|
54
|
-
!isZeroRoot(remote.finalizedRoot) &&
|
|
55
|
-
!isZeroRoot(local.finalizedRoot)
|
|
56
|
-
) {
|
|
57
|
-
// NOTE: due to preferring to not access chain state here, we can't check the finalized root against our history.
|
|
58
|
-
// The impact of not doing check is low: peers that are behind us we can't confirm they are in the same chain as us.
|
|
59
|
-
// In the worst case they will attempt to sync from us, fail and disconnect. The ENR fork check should be sufficient
|
|
60
|
-
// to differentiate most peers in normal network conditions.
|
|
61
|
-
const remoteRoot = remote.finalizedRoot;
|
|
62
|
-
const expectedRoot = remote.finalizedEpoch === local.finalizedEpoch ? local.finalizedRoot : null;
|
|
63
|
-
|
|
64
|
-
if (expectedRoot !== null && !ssz.Root.equals(remoteRoot, expectedRoot)) {
|
|
65
|
-
return {
|
|
66
|
-
code: IrrelevantPeerCode.DIFFERENT_FINALIZED,
|
|
67
|
-
expectedRoot: expectedRoot, // forkChoice returns Tree BranchNode which the logger prints as {}
|
|
68
|
-
remoteRoot: remoteRoot,
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
if (isForkPostFulu(forkName) && (remote as fulu.Status).earliestAvailableSlot === undefined) {
|
|
74
|
-
return {
|
|
75
|
-
code: IrrelevantPeerCode.NO_EARLIEST_AVAILABLE_SLOT,
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
// Note: Accept request status finalized checkpoint in the future, we do not know if it is a true finalized root
|
|
80
|
-
return null;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
export function isZeroRoot(root: Root): boolean {
|
|
84
|
-
const ZERO_ROOT = ssz.Root.defaultValue();
|
|
85
|
-
return ssz.Root.equals(root, ZERO_ROOT);
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
export function renderIrrelevantPeerType(type: IrrelevantPeerType): string {
|
|
89
|
-
switch (type.code) {
|
|
90
|
-
case IrrelevantPeerCode.INCOMPATIBLE_FORKS:
|
|
91
|
-
return `INCOMPATIBLE_FORKS ours: ${toHex(type.ours)} theirs: ${toHex(type.theirs)}`;
|
|
92
|
-
case IrrelevantPeerCode.DIFFERENT_CLOCKS:
|
|
93
|
-
return `DIFFERENT_CLOCKS slotDiff: ${type.slotDiff}`;
|
|
94
|
-
case IrrelevantPeerCode.DIFFERENT_FINALIZED:
|
|
95
|
-
return `DIFFERENT_FINALIZED root: ${toRootHex(type.remoteRoot)} expected: ${toRootHex(type.expectedRoot)}`;
|
|
96
|
-
case IrrelevantPeerCode.NO_EARLIEST_AVAILABLE_SLOT:
|
|
97
|
-
return "No earliestAvailableSlot announced via peer Status";
|
|
98
|
-
}
|
|
99
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import {getUint8ByteToBitBooleanArray} from "@chainsafe/ssz";
|
|
2
|
-
import {ATTESTATION_SUBNET_COUNT, SYNC_COMMITTEE_SUBNET_COUNT} from "@lodestar/params";
|
|
3
|
-
import {newFilledArray} from "@lodestar/state-transition";
|
|
4
|
-
|
|
5
|
-
export const zeroAttnets = newFilledArray(ATTESTATION_SUBNET_COUNT, false);
|
|
6
|
-
export const zeroSyncnets = newFilledArray(SYNC_COMMITTEE_SUBNET_COUNT, false);
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Fast deserialize a BitVector, with pre-cached bool array in `getUint8ByteToBitBooleanArray()`
|
|
10
|
-
*
|
|
11
|
-
* Never throw a deserialization error:
|
|
12
|
-
* - if bytes is too short, it will pad with zeroes
|
|
13
|
-
* - if bytes is too long, it will ignore the extra values
|
|
14
|
-
*/
|
|
15
|
-
export function deserializeEnrSubnets(bytes: Uint8Array, subnetCount: number): boolean[] {
|
|
16
|
-
if (subnetCount <= 8) {
|
|
17
|
-
return getUint8ByteToBitBooleanArray(bytes[0] ?? 0);
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
let boolsArr: boolean[] = [];
|
|
21
|
-
const byteCount = Math.ceil(subnetCount / 8);
|
|
22
|
-
for (let i = 0; i < byteCount; i++) {
|
|
23
|
-
boolsArr = boolsArr.concat(getUint8ByteToBitBooleanArray(bytes[i] ?? 0));
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
return boolsArr;
|
|
27
|
-
}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import {Connection, PeerId} from "@libp2p/interface";
|
|
2
|
-
import {Libp2p} from "../../interface.js";
|
|
3
|
-
import {getConnectionsMap} from "../../util.js";
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Return peers with at least one connection in status "open"
|
|
7
|
-
*/
|
|
8
|
-
export function getConnectedPeerIds(libp2p: Libp2p): PeerId[] {
|
|
9
|
-
const peerIds: PeerId[] = [];
|
|
10
|
-
for (const connections of getConnectionsMap(libp2p).values()) {
|
|
11
|
-
const openConnection = connections.value.find(isConnectionOpen);
|
|
12
|
-
if (openConnection) {
|
|
13
|
-
peerIds.push(openConnection.remotePeer);
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
return peerIds;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
/**
|
|
20
|
-
* Efficiently check if there is at least one peer connected
|
|
21
|
-
*/
|
|
22
|
-
export function hasSomeConnectedPeer(libp2p: Libp2p): boolean {
|
|
23
|
-
for (const connections of getConnectionsMap(libp2p).values()) {
|
|
24
|
-
if (connections.value.some(isConnectionOpen)) {
|
|
25
|
-
return true;
|
|
26
|
-
}
|
|
27
|
-
}
|
|
28
|
-
return false;
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
function isConnectionOpen(connection: Connection): boolean {
|
|
32
|
-
return connection.status === "open";
|
|
33
|
-
}
|