@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,627 +0,0 @@
|
|
|
1
|
-
import {Direction, PeerId} from "@libp2p/interface";
|
|
2
|
-
import {BitArray} from "@chainsafe/ssz";
|
|
3
|
-
import {ChainConfig} from "@lodestar/config";
|
|
4
|
-
import {ATTESTATION_SUBNET_COUNT, SYNC_COMMITTEE_SUBNET_COUNT} from "@lodestar/params";
|
|
5
|
-
import {CustodyIndex, Status, SubnetID, altair, phase0} from "@lodestar/types";
|
|
6
|
-
import {MapDef} from "@lodestar/utils";
|
|
7
|
-
import {shuffle} from "../../../util/shuffle.js";
|
|
8
|
-
import {sortBy} from "../../../util/sortBy.js";
|
|
9
|
-
import {NetworkCoreMetrics} from "../../core/metrics.js";
|
|
10
|
-
import {RequestedSubnet} from "./subnetMap.js";
|
|
11
|
-
|
|
12
|
-
/** Target number of peers we'd like to have connected to a given long-lived subnet */
|
|
13
|
-
const TARGET_SUBNET_PEERS = 6;
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* This is for non-sampling groups only. This is a very easy number to achieve given an average of 6.25 peers per column subnet on public networks.
|
|
17
|
-
* This is needed to always maintain some minimum peers on all subnets so that when we publish a block, we're sure we pubish to all column subnets.
|
|
18
|
-
*/
|
|
19
|
-
const TARGET_GROUP_PEERS_PER_SUBNET = 4;
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* This is used in the pruning logic. We avoid pruning peers on sync-committees if doing so would
|
|
23
|
-
* lower our peer count below this number. Instead we favour a non-uniform distribution of subnet
|
|
24
|
-
* peers.
|
|
25
|
-
*/
|
|
26
|
-
const MIN_SYNC_COMMITTEE_PEERS = 2;
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* Lighthouse has this value as 0. However, as monitored in Lodestar mainnet node, the max score is 0
|
|
30
|
-
* and average score is -0.5 to 0 so we want this value to be a little bit more relaxed
|
|
31
|
-
*/
|
|
32
|
-
const LOW_SCORE_TO_PRUNE_IF_TOO_MANY_PEERS = -2;
|
|
33
|
-
|
|
34
|
-
/**
|
|
35
|
-
* Instead of attempting to connect the exact amount necessary this will overshoot a little since the success
|
|
36
|
-
* rate of outgoing connections is low, <33%. If we try to connect exactly `targetPeers - connectedPeerCount` the
|
|
37
|
-
* peer count will almost always be just below targetPeers triggering constant discoveries that are not necessary
|
|
38
|
-
*/
|
|
39
|
-
const PEERS_TO_CONNECT_OVERSHOOT_FACTOR = 3;
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* Keep at least 10% of outbound peers. For rationale, see https://github.com/ChainSafe/lodestar/issues/2215
|
|
43
|
-
*/
|
|
44
|
-
const OUTBOUND_PEERS_RATIO = 0.1;
|
|
45
|
-
|
|
46
|
-
const attnetsZero = BitArray.fromBitLen(ATTESTATION_SUBNET_COUNT);
|
|
47
|
-
const syncnetsZero = BitArray.fromBitLen(SYNC_COMMITTEE_SUBNET_COUNT);
|
|
48
|
-
|
|
49
|
-
type SubnetDiscvQuery = {subnet: SubnetID; toSlot: number; maxPeersToDiscover: number};
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* A map of das custody group index to maxPeersToDiscover
|
|
53
|
-
*/
|
|
54
|
-
export type CustodyGroupQueries = Map<CustodyIndex, number>;
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* Comparison of our status vs a peer's status.
|
|
58
|
-
*
|
|
59
|
-
* The main usage of this score is to feed into peer priorization during syncing, and especially when the node is having trouble finding data during syncing
|
|
60
|
-
*
|
|
61
|
-
* For network stability, we DON'T distinguish peers that are far behind us vs peers that are close to us.
|
|
62
|
-
*/
|
|
63
|
-
enum StatusScore {
|
|
64
|
-
/** The peer is close to our chain */
|
|
65
|
-
CLOSE_TO_US = -1,
|
|
66
|
-
/** The peer is far ahead of chain */
|
|
67
|
-
FAR_AHEAD = 0,
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
/**
|
|
71
|
-
* In practice, this score only tracks if the peer is far ahead of us or not during syncing.
|
|
72
|
-
* When the node is synced, the peer is always CLOSE_TO_US.
|
|
73
|
-
*/
|
|
74
|
-
function computeStatusScore(ours: Status, theirs: Status | null, opts: PrioritizePeersOpts): StatusScore {
|
|
75
|
-
if (theirs === null) {
|
|
76
|
-
return StatusScore.CLOSE_TO_US;
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
if (theirs.finalizedEpoch > ours.finalizedEpoch) {
|
|
80
|
-
return StatusScore.FAR_AHEAD;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
if (theirs.headSlot > ours.headSlot + opts.starvationThresholdSlots) {
|
|
84
|
-
return StatusScore.FAR_AHEAD;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
// It's dangerous to downscore peers that are far behind.
|
|
88
|
-
// This means we'd be more likely to disconnect peers that are attempting to sync, which would affect network stability.
|
|
89
|
-
// if (ours.headSlot > theirs.headSlot + opts.starvationThresholdSlots) {
|
|
90
|
-
// return StatusScore.FAR_BEHIND;
|
|
91
|
-
// }
|
|
92
|
-
|
|
93
|
-
return StatusScore.CLOSE_TO_US;
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
type PeerInfo = {
|
|
97
|
-
id: PeerId;
|
|
98
|
-
direction: Direction | null;
|
|
99
|
-
statusScore: StatusScore;
|
|
100
|
-
attnets: phase0.AttestationSubnets;
|
|
101
|
-
syncnets: altair.SyncSubnets;
|
|
102
|
-
samplingGroups: CustodyIndex[];
|
|
103
|
-
attnetsTrueBitIndices: number[];
|
|
104
|
-
syncnetsTrueBitIndices: number[];
|
|
105
|
-
score: number;
|
|
106
|
-
};
|
|
107
|
-
|
|
108
|
-
export type PrioritizePeersOpts = {
|
|
109
|
-
targetPeers: number;
|
|
110
|
-
maxPeers: number;
|
|
111
|
-
targetGroupPeers: number;
|
|
112
|
-
status: Status;
|
|
113
|
-
starved: boolean;
|
|
114
|
-
starvationPruneRatio: number;
|
|
115
|
-
starvationThresholdSlots: number;
|
|
116
|
-
outboundPeersRatio?: number;
|
|
117
|
-
targetSubnetPeers?: number;
|
|
118
|
-
};
|
|
119
|
-
|
|
120
|
-
export enum ExcessPeerDisconnectReason {
|
|
121
|
-
LOW_SCORE = "low_score",
|
|
122
|
-
NO_LONG_LIVED_SUBNET = "no_long_lived_subnet",
|
|
123
|
-
TOO_GROUPED_SUBNET = "too_grouped_subnet",
|
|
124
|
-
FIND_BETTER_PEERS = "find_better_peers",
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
/**
|
|
128
|
-
* Prioritize which peers to disconect and which to connect. Conditions:
|
|
129
|
-
* - Reach `targetPeers`
|
|
130
|
-
* - If we're starved for data, prune additional peers
|
|
131
|
-
* - Don't exceed `maxPeers`
|
|
132
|
-
* - Ensure there are enough peers per column subnets, attestation subnets and sync committee subnets
|
|
133
|
-
* - Prioritize peers with good score
|
|
134
|
-
*
|
|
135
|
-
* pre-fulu samplingGroups is not used and this function returns empty custodyGroupQueries
|
|
136
|
-
*/
|
|
137
|
-
export function prioritizePeers(
|
|
138
|
-
connectedPeersInfo: {
|
|
139
|
-
id: PeerId;
|
|
140
|
-
direction: Direction | null;
|
|
141
|
-
status: Status | null;
|
|
142
|
-
attnets: phase0.AttestationSubnets | null;
|
|
143
|
-
syncnets: altair.SyncSubnets | null;
|
|
144
|
-
samplingGroups: CustodyIndex[] | null;
|
|
145
|
-
score: number;
|
|
146
|
-
}[],
|
|
147
|
-
activeAttnets: RequestedSubnet[],
|
|
148
|
-
activeSyncnets: RequestedSubnet[],
|
|
149
|
-
samplingGroups: CustodyIndex[] | undefined,
|
|
150
|
-
opts: PrioritizePeersOpts,
|
|
151
|
-
config: ChainConfig,
|
|
152
|
-
metrics: NetworkCoreMetrics | null
|
|
153
|
-
): {
|
|
154
|
-
peersToConnect: number;
|
|
155
|
-
peersToDisconnect: Map<ExcessPeerDisconnectReason, PeerId[]>;
|
|
156
|
-
attnetQueries: SubnetDiscvQuery[];
|
|
157
|
-
syncnetQueries: SubnetDiscvQuery[];
|
|
158
|
-
custodyGroupQueries: CustodyGroupQueries;
|
|
159
|
-
} {
|
|
160
|
-
const {targetPeers, maxPeers} = opts;
|
|
161
|
-
|
|
162
|
-
let peersToConnect = 0;
|
|
163
|
-
const peersToDisconnect = new MapDef<ExcessPeerDisconnectReason, PeerId[]>(() => []);
|
|
164
|
-
|
|
165
|
-
// Pre-compute trueBitIndexes for re-use below. Set null subnets Maps to default zero value
|
|
166
|
-
const connectedPeers = connectedPeersInfo.map(
|
|
167
|
-
(peer): PeerInfo => ({
|
|
168
|
-
id: peer.id,
|
|
169
|
-
direction: peer.direction,
|
|
170
|
-
statusScore: computeStatusScore(opts.status, peer.status, opts),
|
|
171
|
-
attnets: peer.attnets ?? attnetsZero,
|
|
172
|
-
syncnets: peer.syncnets ?? syncnetsZero,
|
|
173
|
-
samplingGroups: peer.samplingGroups ?? [],
|
|
174
|
-
attnetsTrueBitIndices: peer.attnets?.getTrueBitIndexes() ?? [],
|
|
175
|
-
syncnetsTrueBitIndices: peer.syncnets?.getTrueBitIndexes() ?? [],
|
|
176
|
-
score: peer.score,
|
|
177
|
-
})
|
|
178
|
-
);
|
|
179
|
-
|
|
180
|
-
const {attnetQueries, syncnetQueries, custodyGroupQueries, dutiesByPeer} = requestSubnetPeers(
|
|
181
|
-
connectedPeers,
|
|
182
|
-
activeAttnets,
|
|
183
|
-
activeSyncnets,
|
|
184
|
-
samplingGroups,
|
|
185
|
-
opts,
|
|
186
|
-
config,
|
|
187
|
-
metrics
|
|
188
|
-
);
|
|
189
|
-
|
|
190
|
-
const connectedPeerCount = connectedPeers.length;
|
|
191
|
-
|
|
192
|
-
if (connectedPeerCount < targetPeers) {
|
|
193
|
-
// Need more peers.
|
|
194
|
-
// Instead of attempting to connect the exact amount necessary this will overshoot a little since the success
|
|
195
|
-
// rate of outgoing connections is low, <33%. If we try to connect exactly `targetPeers - connectedPeerCount` the
|
|
196
|
-
// peer count will almost always be just below targetPeers triggering constant discoveries that are not necessary
|
|
197
|
-
peersToConnect = Math.min(
|
|
198
|
-
PEERS_TO_CONNECT_OVERSHOOT_FACTOR * (targetPeers - connectedPeerCount),
|
|
199
|
-
// Never attempt to connect more peers than maxPeers even considering a low chance of dial success
|
|
200
|
-
maxPeers - connectedPeerCount
|
|
201
|
-
);
|
|
202
|
-
} else if (connectedPeerCount > targetPeers) {
|
|
203
|
-
pruneExcessPeers(connectedPeers, dutiesByPeer, activeAttnets, peersToDisconnect, opts);
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
return {
|
|
207
|
-
peersToConnect,
|
|
208
|
-
peersToDisconnect,
|
|
209
|
-
attnetQueries,
|
|
210
|
-
syncnetQueries,
|
|
211
|
-
custodyGroupQueries,
|
|
212
|
-
};
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
/**
|
|
216
|
-
* If more peers are needed in attnets and syncnets and column subnets, create SubnetDiscvQuery for each subnet
|
|
217
|
-
* pre-fulu samplingGroups is not used and this function returns empty custodyGroupQueries
|
|
218
|
-
*/
|
|
219
|
-
function requestSubnetPeers(
|
|
220
|
-
connectedPeers: PeerInfo[],
|
|
221
|
-
activeAttnets: RequestedSubnet[],
|
|
222
|
-
activeSyncnets: RequestedSubnet[],
|
|
223
|
-
ourSamplingGroups: CustodyIndex[] | undefined,
|
|
224
|
-
opts: PrioritizePeersOpts,
|
|
225
|
-
config: ChainConfig,
|
|
226
|
-
metrics: NetworkCoreMetrics | null
|
|
227
|
-
): {
|
|
228
|
-
attnetQueries: SubnetDiscvQuery[];
|
|
229
|
-
syncnetQueries: SubnetDiscvQuery[];
|
|
230
|
-
custodyGroupQueries: CustodyGroupQueries;
|
|
231
|
-
dutiesByPeer: Map<PeerInfo, number>;
|
|
232
|
-
} {
|
|
233
|
-
const {targetSubnetPeers = TARGET_SUBNET_PEERS} = opts;
|
|
234
|
-
const attnetQueries: SubnetDiscvQuery[] = [];
|
|
235
|
-
const syncnetQueries: SubnetDiscvQuery[] = [];
|
|
236
|
-
|
|
237
|
-
// To filter out peers containing enough attnets of interest from possible disconnection
|
|
238
|
-
const dutiesByPeer = new Map<PeerInfo, number>();
|
|
239
|
-
|
|
240
|
-
// attnets, do we need queries for more peers
|
|
241
|
-
if (activeAttnets.length > 0) {
|
|
242
|
-
/** Map of peers per subnet, peer may be in multiple arrays */
|
|
243
|
-
const peersPerSubnet = new Map<number, number>();
|
|
244
|
-
|
|
245
|
-
for (const peer of connectedPeers) {
|
|
246
|
-
const trueBitIndices = peer.attnetsTrueBitIndices;
|
|
247
|
-
let dutyCount = 0;
|
|
248
|
-
for (const {subnet} of activeAttnets) {
|
|
249
|
-
if (trueBitIndices.includes(subnet)) {
|
|
250
|
-
dutyCount += 1;
|
|
251
|
-
peersPerSubnet.set(subnet, 1 + (peersPerSubnet.get(subnet) ?? 0));
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
dutiesByPeer.set(peer, dutyCount);
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
for (const {subnet, toSlot} of activeAttnets) {
|
|
258
|
-
const peersInSubnet = peersPerSubnet.get(subnet) ?? 0;
|
|
259
|
-
if (peersInSubnet < targetSubnetPeers) {
|
|
260
|
-
// We need more peers
|
|
261
|
-
attnetQueries.push({subnet, toSlot, maxPeersToDiscover: targetSubnetPeers - peersInSubnet});
|
|
262
|
-
}
|
|
263
|
-
}
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
// syncnets, do we need queries for more peers
|
|
267
|
-
if (activeSyncnets.length > 0) {
|
|
268
|
-
/** Map of peers per subnet, peer may be in multiple arrays */
|
|
269
|
-
const peersPerSubnet = new Map<number, number>();
|
|
270
|
-
|
|
271
|
-
for (const peer of connectedPeers) {
|
|
272
|
-
const trueBitIndices = peer.syncnetsTrueBitIndices;
|
|
273
|
-
let dutyCount = dutiesByPeer.get(peer) ?? 0;
|
|
274
|
-
for (const {subnet} of activeSyncnets) {
|
|
275
|
-
if (trueBitIndices.includes(subnet)) {
|
|
276
|
-
dutyCount += 1;
|
|
277
|
-
peersPerSubnet.set(subnet, 1 + (peersPerSubnet.get(subnet) ?? 0));
|
|
278
|
-
}
|
|
279
|
-
}
|
|
280
|
-
dutiesByPeer.set(peer, dutyCount);
|
|
281
|
-
}
|
|
282
|
-
|
|
283
|
-
for (const {subnet, toSlot} of activeSyncnets) {
|
|
284
|
-
const peersInSubnet = peersPerSubnet.get(subnet) ?? 0;
|
|
285
|
-
if (peersInSubnet < targetSubnetPeers) {
|
|
286
|
-
// We need more peers
|
|
287
|
-
syncnetQueries.push({subnet, toSlot, maxPeersToDiscover: targetSubnetPeers - peersInSubnet});
|
|
288
|
-
}
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
|
|
292
|
-
const custodyGroupQueries: CustodyGroupQueries = new Map();
|
|
293
|
-
// pre-fulu
|
|
294
|
-
if (ourSamplingGroups == null) {
|
|
295
|
-
return {attnetQueries, syncnetQueries, custodyGroupQueries, dutiesByPeer};
|
|
296
|
-
}
|
|
297
|
-
|
|
298
|
-
// column subnets, do we need queries for more peers
|
|
299
|
-
const targetGroupPeersPerSamplingGroup = opts.targetGroupPeers;
|
|
300
|
-
const peersPerGroup = new Map<CustodyIndex, number>();
|
|
301
|
-
for (const peer of connectedPeers) {
|
|
302
|
-
const peerSamplingGroups = peer.samplingGroups;
|
|
303
|
-
for (const group of peerSamplingGroups) {
|
|
304
|
-
peersPerGroup.set(group, 1 + (peersPerGroup.get(group) ?? 0));
|
|
305
|
-
}
|
|
306
|
-
}
|
|
307
|
-
|
|
308
|
-
const ourSamplingGroupSet = new Set(ourSamplingGroups);
|
|
309
|
-
for (let groupIndex = 0; groupIndex < config.NUMBER_OF_CUSTODY_GROUPS; groupIndex++) {
|
|
310
|
-
const peersInGroup = peersPerGroup.get(groupIndex) ?? 0;
|
|
311
|
-
metrics?.peerCountPerSamplingGroup.set({groupIndex}, peersInGroup);
|
|
312
|
-
const targetGroupPeers = ourSamplingGroupSet.has(groupIndex)
|
|
313
|
-
? targetGroupPeersPerSamplingGroup
|
|
314
|
-
: TARGET_GROUP_PEERS_PER_SUBNET;
|
|
315
|
-
if (peersInGroup < targetGroupPeers) {
|
|
316
|
-
// We need more peers
|
|
317
|
-
custodyGroupQueries.set(groupIndex, targetGroupPeers - peersInGroup);
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
|
-
|
|
321
|
-
return {attnetQueries, syncnetQueries, custodyGroupQueries, dutiesByPeer};
|
|
322
|
-
}
|
|
323
|
-
|
|
324
|
-
/**
|
|
325
|
-
* Remove excess peers back down to our target values.
|
|
326
|
-
* 1. Remove peers that are not subscribed to a subnet (they have less value)
|
|
327
|
-
* 2. Remove worst scoring peers
|
|
328
|
-
* 3. Remove peers that we have many on any particular subnet
|
|
329
|
-
* - Only consider removing peers on subnet that has > TARGET_SUBNET_PEERS to be safe
|
|
330
|
-
* - If we have a choice, do not remove peer that would drop us below targetPeersPerAttnetSubnet
|
|
331
|
-
* - If we have a choice, do not remove peer that would drop us below MIN_SYNC_COMMITTEE_PEERS
|
|
332
|
-
*
|
|
333
|
-
* Although the logic looks complicated, we'd prune 5 peers max per heartbeat based on the mainnet config.
|
|
334
|
-
*/
|
|
335
|
-
function pruneExcessPeers(
|
|
336
|
-
connectedPeers: PeerInfo[],
|
|
337
|
-
dutiesByPeer: Map<PeerInfo, number>,
|
|
338
|
-
activeAttnets: RequestedSubnet[],
|
|
339
|
-
peersToDisconnect: MapDef<ExcessPeerDisconnectReason, PeerId[]>,
|
|
340
|
-
opts: PrioritizePeersOpts
|
|
341
|
-
): void {
|
|
342
|
-
const {targetPeers, targetSubnetPeers = TARGET_SUBNET_PEERS, outboundPeersRatio = OUTBOUND_PEERS_RATIO} = opts;
|
|
343
|
-
const connectedPeerCount = connectedPeers.length;
|
|
344
|
-
const outboundPeersTarget = Math.round(outboundPeersRatio * connectedPeerCount);
|
|
345
|
-
|
|
346
|
-
// Count outbound peers
|
|
347
|
-
let outboundPeers = 0;
|
|
348
|
-
for (const peer of connectedPeers) {
|
|
349
|
-
if (peer.direction === "outbound") {
|
|
350
|
-
outboundPeers++;
|
|
351
|
-
}
|
|
352
|
-
}
|
|
353
|
-
|
|
354
|
-
let outboundPeersEligibleForPruning = 0;
|
|
355
|
-
|
|
356
|
-
const sortedPeers = sortPeersToPrune(connectedPeers, dutiesByPeer);
|
|
357
|
-
|
|
358
|
-
const peersEligibleForPruning = sortedPeers
|
|
359
|
-
// Then, iterate from highest score to lowest doing a manual filter for duties and outbound ratio
|
|
360
|
-
.filter((peer) => {
|
|
361
|
-
// Peers with duties are not eligible for pruning
|
|
362
|
-
if ((dutiesByPeer.get(peer) ?? 0) > 0) {
|
|
363
|
-
return false;
|
|
364
|
-
}
|
|
365
|
-
|
|
366
|
-
// Peers far ahead when we're starved for data are not eligible for pruning
|
|
367
|
-
if (opts.starved && peer.statusScore === StatusScore.FAR_AHEAD) {
|
|
368
|
-
return false;
|
|
369
|
-
}
|
|
370
|
-
|
|
371
|
-
// outbound peers up to OUTBOUND_PEER_RATIO sorted by highest score and not eligible for pruning
|
|
372
|
-
if (peer.direction === "outbound") {
|
|
373
|
-
if (outboundPeers - outboundPeersEligibleForPruning > outboundPeersTarget) {
|
|
374
|
-
outboundPeersEligibleForPruning++;
|
|
375
|
-
} else {
|
|
376
|
-
return false;
|
|
377
|
-
}
|
|
378
|
-
}
|
|
379
|
-
|
|
380
|
-
return true;
|
|
381
|
-
});
|
|
382
|
-
|
|
383
|
-
let peersToDisconnectCount = 0;
|
|
384
|
-
const noLongLivedSubnetPeersToDisconnect: PeerId[] = [];
|
|
385
|
-
|
|
386
|
-
const peersToDisconnectTarget =
|
|
387
|
-
// if we're starved for data, prune additional peers
|
|
388
|
-
connectedPeerCount - targetPeers + (opts.starved ? targetPeers * opts.starvationPruneRatio : 0);
|
|
389
|
-
|
|
390
|
-
// 1. Lodestar prefers disconnecting peers that does not have long lived subnets
|
|
391
|
-
// See https://github.com/ChainSafe/lodestar/issues/3940
|
|
392
|
-
// peers with low score will be disconnected through heartbeat in the end
|
|
393
|
-
for (const peer of peersEligibleForPruning) {
|
|
394
|
-
const hasLongLivedSubnet = peer.attnetsTrueBitIndices.length > 0 || peer.syncnetsTrueBitIndices.length > 0;
|
|
395
|
-
if (!hasLongLivedSubnet && peersToDisconnectCount < peersToDisconnectTarget) {
|
|
396
|
-
noLongLivedSubnetPeersToDisconnect.push(peer.id);
|
|
397
|
-
peersToDisconnectCount++;
|
|
398
|
-
}
|
|
399
|
-
}
|
|
400
|
-
peersToDisconnect.set(ExcessPeerDisconnectReason.NO_LONG_LIVED_SUBNET, noLongLivedSubnetPeersToDisconnect);
|
|
401
|
-
|
|
402
|
-
// 2. Disconnect peers that have score < LOW_SCORE_TO_PRUNE_IF_TOO_MANY_PEERS
|
|
403
|
-
const badScorePeersToDisconnect: PeerId[] = [];
|
|
404
|
-
for (const peer of peersEligibleForPruning) {
|
|
405
|
-
if (
|
|
406
|
-
peer.score < LOW_SCORE_TO_PRUNE_IF_TOO_MANY_PEERS &&
|
|
407
|
-
peersToDisconnectCount < peersToDisconnectTarget &&
|
|
408
|
-
!noLongLivedSubnetPeersToDisconnect.includes(peer.id)
|
|
409
|
-
) {
|
|
410
|
-
badScorePeersToDisconnect.push(peer.id);
|
|
411
|
-
peersToDisconnectCount++;
|
|
412
|
-
}
|
|
413
|
-
}
|
|
414
|
-
peersToDisconnect.set(ExcessPeerDisconnectReason.LOW_SCORE, badScorePeersToDisconnect);
|
|
415
|
-
|
|
416
|
-
// 3. Disconnect peers that are too grouped on any given subnet
|
|
417
|
-
const tooGroupedPeersToDisconnect: PeerId[] = [];
|
|
418
|
-
if (peersToDisconnectCount < peersToDisconnectTarget) {
|
|
419
|
-
// PeerInfo array by attestation subnet
|
|
420
|
-
const subnetToPeers = new MapDef<number, PeerInfo[]>(() => []);
|
|
421
|
-
// number of peers per long lived sync committee
|
|
422
|
-
const syncCommitteePeerCount = new MapDef<number, number>(() => 0);
|
|
423
|
-
|
|
424
|
-
// populate the above variables
|
|
425
|
-
for (const peer of connectedPeers) {
|
|
426
|
-
if (noLongLivedSubnetPeersToDisconnect.includes(peer.id) || badScorePeersToDisconnect.includes(peer.id)) {
|
|
427
|
-
continue;
|
|
428
|
-
}
|
|
429
|
-
for (const subnet of peer.attnetsTrueBitIndices) {
|
|
430
|
-
subnetToPeers.getOrDefault(subnet).push(peer);
|
|
431
|
-
}
|
|
432
|
-
for (const subnet of peer.syncnetsTrueBitIndices) {
|
|
433
|
-
syncCommitteePeerCount.set(subnet, 1 + syncCommitteePeerCount.getOrDefault(subnet));
|
|
434
|
-
}
|
|
435
|
-
}
|
|
436
|
-
|
|
437
|
-
while (peersToDisconnectCount < peersToDisconnectTarget) {
|
|
438
|
-
const maxPeersSubnet = findMaxPeersSubnet(subnetToPeers, targetSubnetPeers);
|
|
439
|
-
// peers are NOT too grouped on any given subnet, finish this loop
|
|
440
|
-
if (maxPeersSubnet === null) {
|
|
441
|
-
break;
|
|
442
|
-
}
|
|
443
|
-
|
|
444
|
-
const peersOnMostGroupedSubnet = subnetToPeers.get(maxPeersSubnet);
|
|
445
|
-
if (peersOnMostGroupedSubnet === undefined) {
|
|
446
|
-
break;
|
|
447
|
-
}
|
|
448
|
-
|
|
449
|
-
// Find peers to remove from the current maxPeersSubnet
|
|
450
|
-
const removedPeer = findPeerToRemove(
|
|
451
|
-
subnetToPeers,
|
|
452
|
-
syncCommitteePeerCount,
|
|
453
|
-
peersOnMostGroupedSubnet,
|
|
454
|
-
targetSubnetPeers,
|
|
455
|
-
activeAttnets
|
|
456
|
-
);
|
|
457
|
-
|
|
458
|
-
// If we have successfully found a candidate peer to prune, prune it,
|
|
459
|
-
// otherwise all peers on this subnet should not be removed.
|
|
460
|
-
// In this case, we remove all peers from the pruning logic and try another subnet.
|
|
461
|
-
if (removedPeer != null) {
|
|
462
|
-
// recalculate variables
|
|
463
|
-
removePeerFromSubnetToPeers(subnetToPeers, removedPeer);
|
|
464
|
-
decreaseSynccommitteePeerCount(syncCommitteePeerCount, removedPeer.syncnetsTrueBitIndices);
|
|
465
|
-
|
|
466
|
-
tooGroupedPeersToDisconnect.push(removedPeer.id);
|
|
467
|
-
peersToDisconnectCount++;
|
|
468
|
-
} else {
|
|
469
|
-
// no peer to remove from the maxPeersSubnet
|
|
470
|
-
// should continue with the 2nd biggest maxPeersSubnet
|
|
471
|
-
subnetToPeers.delete(maxPeersSubnet);
|
|
472
|
-
}
|
|
473
|
-
}
|
|
474
|
-
|
|
475
|
-
peersToDisconnect.set(ExcessPeerDisconnectReason.TOO_GROUPED_SUBNET, tooGroupedPeersToDisconnect);
|
|
476
|
-
|
|
477
|
-
// 4. Ensure to always to prune to target peers
|
|
478
|
-
// In rare case, all peers may have duties and good score but very low long lived subnet,
|
|
479
|
-
// and not too grouped to any subnets, we need to always disconnect peers until it reaches targetPeers
|
|
480
|
-
// because we want to keep improving peers (long lived subnets + score)
|
|
481
|
-
// otherwise we'll not able to accept new peer connection to consider better peers
|
|
482
|
-
// see https://github.com/ChainSafe/lodestar/issues/5198
|
|
483
|
-
const remainingPeersToDisconnect: PeerId[] = [];
|
|
484
|
-
for (const {id} of sortedPeers) {
|
|
485
|
-
if (peersToDisconnectCount >= peersToDisconnectTarget) {
|
|
486
|
-
break;
|
|
487
|
-
}
|
|
488
|
-
if (
|
|
489
|
-
noLongLivedSubnetPeersToDisconnect.includes(id) ||
|
|
490
|
-
badScorePeersToDisconnect.includes(id) ||
|
|
491
|
-
tooGroupedPeersToDisconnect.includes(id)
|
|
492
|
-
) {
|
|
493
|
-
continue;
|
|
494
|
-
}
|
|
495
|
-
remainingPeersToDisconnect.push(id);
|
|
496
|
-
peersToDisconnectCount++;
|
|
497
|
-
}
|
|
498
|
-
|
|
499
|
-
peersToDisconnect.set(ExcessPeerDisconnectReason.FIND_BETTER_PEERS, remainingPeersToDisconnect);
|
|
500
|
-
}
|
|
501
|
-
}
|
|
502
|
-
|
|
503
|
-
/**
|
|
504
|
-
* Sort peers ascending, peer-0 has the most chance to prune, peer-n has the least.
|
|
505
|
-
* Shuffling first to break ties.
|
|
506
|
-
* prefer sorting by status score (applicable during syncing), then dutied subnets, then number of long lived subnets, then peer score
|
|
507
|
-
* peer score is the last criteria since they are supposed to be in the same score range,
|
|
508
|
-
* bad score peers are removed by peer manager anyway
|
|
509
|
-
*/
|
|
510
|
-
export function sortPeersToPrune(connectedPeers: PeerInfo[], dutiesByPeer: Map<PeerInfo, number>): PeerInfo[] {
|
|
511
|
-
return shuffle(connectedPeers).sort((p1, p2) => {
|
|
512
|
-
const dutiedSubnet1 = dutiesByPeer.get(p1) ?? 0;
|
|
513
|
-
const dutiedSubnet2 = dutiesByPeer.get(p2) ?? 0;
|
|
514
|
-
if (dutiedSubnet1 === dutiedSubnet2) {
|
|
515
|
-
const statusScore = p1.statusScore - p2.statusScore;
|
|
516
|
-
if (statusScore !== 0) {
|
|
517
|
-
return statusScore;
|
|
518
|
-
}
|
|
519
|
-
const [longLivedSubnets1, longLivedSubnets2] = [p1, p2].map(
|
|
520
|
-
(p) => p.attnetsTrueBitIndices.length + p.syncnetsTrueBitIndices.length
|
|
521
|
-
);
|
|
522
|
-
if (longLivedSubnets1 === longLivedSubnets2) {
|
|
523
|
-
return p1.score - p2.score;
|
|
524
|
-
}
|
|
525
|
-
return longLivedSubnets1 - longLivedSubnets2;
|
|
526
|
-
}
|
|
527
|
-
return dutiedSubnet1 - dutiedSubnet2;
|
|
528
|
-
});
|
|
529
|
-
}
|
|
530
|
-
|
|
531
|
-
/**
|
|
532
|
-
* Find subnet that has the most peers and > TARGET_SUBNET_PEERS, return null if peers are not grouped
|
|
533
|
-
* to any subnets.
|
|
534
|
-
*/
|
|
535
|
-
function findMaxPeersSubnet(subnetToPeers: Map<number, PeerInfo[]>, targetSubnetPeers: number): SubnetID | null {
|
|
536
|
-
let maxPeersSubnet: SubnetID | null = null;
|
|
537
|
-
let maxPeerCountPerSubnet = -1;
|
|
538
|
-
|
|
539
|
-
for (const [subnet, peers] of subnetToPeers) {
|
|
540
|
-
if (peers.length > targetSubnetPeers && peers.length > maxPeerCountPerSubnet) {
|
|
541
|
-
maxPeersSubnet = subnet;
|
|
542
|
-
maxPeerCountPerSubnet = peers.length;
|
|
543
|
-
}
|
|
544
|
-
}
|
|
545
|
-
|
|
546
|
-
return maxPeersSubnet;
|
|
547
|
-
}
|
|
548
|
-
|
|
549
|
-
/**
|
|
550
|
-
* Find peers to remove from the current maxPeersSubnet.
|
|
551
|
-
* In the long term, this logic will help us gradually find peers with more long lived subnet.
|
|
552
|
-
* Return null if we should not remove any peer on the most grouped subnet.
|
|
553
|
-
*/
|
|
554
|
-
function findPeerToRemove(
|
|
555
|
-
subnetToPeers: Map<number, PeerInfo[]>,
|
|
556
|
-
syncCommitteePeerCount: Map<number, number>,
|
|
557
|
-
peersOnMostGroupedSubnet: PeerInfo[],
|
|
558
|
-
targetSubnetPeers: number,
|
|
559
|
-
activeAttnets: RequestedSubnet[]
|
|
560
|
-
): PeerInfo | null {
|
|
561
|
-
const peersOnSubnet = sortBy(peersOnMostGroupedSubnet, (peer) => peer.attnetsTrueBitIndices.length);
|
|
562
|
-
let removedPeer: PeerInfo | null = null;
|
|
563
|
-
for (const candidatePeer of peersOnSubnet) {
|
|
564
|
-
// new logic of lodestar
|
|
565
|
-
const attnetIndices = candidatePeer.attnetsTrueBitIndices;
|
|
566
|
-
if (attnetIndices.length > 0) {
|
|
567
|
-
const requestedSubnets = activeAttnets.map((activeAttnet) => activeAttnet.subnet);
|
|
568
|
-
let minAttnetCount = ATTESTATION_SUBNET_COUNT;
|
|
569
|
-
// intersection of requested subnets and subnets that peer subscribes to
|
|
570
|
-
for (const subnet of requestedSubnets) {
|
|
571
|
-
const numSubnetPeers = subnetToPeers.get(subnet)?.length;
|
|
572
|
-
if (numSubnetPeers !== undefined && numSubnetPeers < minAttnetCount && attnetIndices.includes(subnet)) {
|
|
573
|
-
minAttnetCount = numSubnetPeers;
|
|
574
|
-
}
|
|
575
|
-
}
|
|
576
|
-
// shouldn't remove this peer because it drops us below targetSubnetPeers
|
|
577
|
-
if (minAttnetCount <= targetSubnetPeers) {
|
|
578
|
-
continue;
|
|
579
|
-
}
|
|
580
|
-
}
|
|
581
|
-
|
|
582
|
-
// same logic to lighthouse
|
|
583
|
-
const syncnetIndices = candidatePeer.syncnetsTrueBitIndices;
|
|
584
|
-
// The peer is subscribed to some long-lived sync-committees
|
|
585
|
-
if (syncnetIndices.length > 0) {
|
|
586
|
-
const minSubnetCount = Math.min(...syncnetIndices.map((subnet) => syncCommitteePeerCount.get(subnet) ?? 0));
|
|
587
|
-
// If the minimum count is our target or lower, we
|
|
588
|
-
// shouldn't remove this peer, because it drops us lower
|
|
589
|
-
// than our target
|
|
590
|
-
if (minSubnetCount <= MIN_SYNC_COMMITTEE_PEERS) {
|
|
591
|
-
continue;
|
|
592
|
-
}
|
|
593
|
-
}
|
|
594
|
-
|
|
595
|
-
// ok, found a peer to remove
|
|
596
|
-
removedPeer = candidatePeer;
|
|
597
|
-
break;
|
|
598
|
-
}
|
|
599
|
-
|
|
600
|
-
return removedPeer;
|
|
601
|
-
}
|
|
602
|
-
|
|
603
|
-
/**
|
|
604
|
-
* Remove a peer from subnetToPeers map.
|
|
605
|
-
*/
|
|
606
|
-
function removePeerFromSubnetToPeers(subnetToPeers: Map<number, PeerInfo[]>, removedPeer: PeerInfo): void {
|
|
607
|
-
for (const peers of subnetToPeers.values()) {
|
|
608
|
-
const index = peers.findIndex((peer) => peer === removedPeer);
|
|
609
|
-
if (index >= 0) {
|
|
610
|
-
peers.splice(index, 1);
|
|
611
|
-
}
|
|
612
|
-
}
|
|
613
|
-
}
|
|
614
|
-
|
|
615
|
-
/**
|
|
616
|
-
* Decrease the syncCommitteePeerCount from the specified committees set
|
|
617
|
-
*/
|
|
618
|
-
function decreaseSynccommitteePeerCount(
|
|
619
|
-
syncCommitteePeerCount: MapDef<number, number>,
|
|
620
|
-
committees: number[] | undefined
|
|
621
|
-
): void {
|
|
622
|
-
if (committees) {
|
|
623
|
-
for (const syncCommittee of committees) {
|
|
624
|
-
syncCommitteePeerCount.set(syncCommittee, Math.max(syncCommitteePeerCount.getOrDefault(syncCommittee) - 1, 0));
|
|
625
|
-
}
|
|
626
|
-
}
|
|
627
|
-
}
|