@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,647 +0,0 @@
|
|
|
1
|
-
import type {PeerId, PeerInfo, PrivateKey} from "@libp2p/interface";
|
|
2
|
-
import {Multiaddr} from "@multiformats/multiaddr";
|
|
3
|
-
import {ENR} from "@chainsafe/enr";
|
|
4
|
-
import {BeaconConfig} from "@lodestar/config";
|
|
5
|
-
import {LoggerNode} from "@lodestar/logger/node";
|
|
6
|
-
import {ATTESTATION_SUBNET_COUNT, ForkSeq, SYNC_COMMITTEE_SUBNET_COUNT} from "@lodestar/params";
|
|
7
|
-
import {CustodyIndex, SubnetID} from "@lodestar/types";
|
|
8
|
-
import {bytesToInt, pruneSetToMax, sleep, toHex} from "@lodestar/utils";
|
|
9
|
-
import {IClock} from "../../util/clock.js";
|
|
10
|
-
import {getCustodyGroups} from "../../util/dataColumns.js";
|
|
11
|
-
import {NetworkCoreMetrics} from "../core/metrics.js";
|
|
12
|
-
import {Discv5Worker} from "../discv5/index.js";
|
|
13
|
-
import {LodestarDiscv5Opts} from "../discv5/types.js";
|
|
14
|
-
import {Libp2p} from "../interface.js";
|
|
15
|
-
import {getLibp2pError} from "../libp2p/error.js";
|
|
16
|
-
import {ENRKey, SubnetType} from "../metadata.js";
|
|
17
|
-
import {NetworkConfig} from "../networkConfig.js";
|
|
18
|
-
import {computeNodeId} from "../subnets/interface.js";
|
|
19
|
-
import {getConnectionsMap, prettyPrintPeerId} from "../util.js";
|
|
20
|
-
import {IPeerRpcScoreStore, ScoreState} from "./score/index.js";
|
|
21
|
-
import {deserializeEnrSubnets, zeroAttnets, zeroSyncnets} from "./utils/enrSubnetsDeserialize.js";
|
|
22
|
-
import {type CustodyGroupQueries} from "./utils/prioritizePeers.js";
|
|
23
|
-
|
|
24
|
-
/** Max number of cached ENRs after discovering a good peer */
|
|
25
|
-
const MAX_CACHED_ENRS = 100;
|
|
26
|
-
/** Max age a cached ENR will be considered for dial */
|
|
27
|
-
const MAX_CACHED_ENR_AGE_MS = 5 * 60 * 1000;
|
|
28
|
-
|
|
29
|
-
export type PeerDiscoveryOpts = {
|
|
30
|
-
discv5FirstQueryDelayMs: number;
|
|
31
|
-
discv5: LodestarDiscv5Opts;
|
|
32
|
-
connectToDiscv5Bootnodes?: boolean;
|
|
33
|
-
};
|
|
34
|
-
|
|
35
|
-
export type PeerDiscoveryModules = {
|
|
36
|
-
privateKey: PrivateKey;
|
|
37
|
-
networkConfig: NetworkConfig;
|
|
38
|
-
libp2p: Libp2p;
|
|
39
|
-
clock: IClock;
|
|
40
|
-
peerRpcScores: IPeerRpcScoreStore;
|
|
41
|
-
metrics: NetworkCoreMetrics | null;
|
|
42
|
-
logger: LoggerNode;
|
|
43
|
-
};
|
|
44
|
-
|
|
45
|
-
type PeerIdStr = string;
|
|
46
|
-
|
|
47
|
-
enum QueryStatusCode {
|
|
48
|
-
NotActive,
|
|
49
|
-
Active,
|
|
50
|
-
}
|
|
51
|
-
type QueryStatus = {code: QueryStatusCode.NotActive} | {code: QueryStatusCode.Active; count: number};
|
|
52
|
-
|
|
53
|
-
export enum DiscoveredPeerStatus {
|
|
54
|
-
bad_score = "bad_score",
|
|
55
|
-
already_connected = "already_connected",
|
|
56
|
-
already_dialing = "already_dialing",
|
|
57
|
-
error = "error",
|
|
58
|
-
attempt_dial = "attempt_dial",
|
|
59
|
-
cached = "cached",
|
|
60
|
-
dropped = "dropped",
|
|
61
|
-
no_multiaddrs = "no_multiaddrs",
|
|
62
|
-
peer_cooling_down = "peer_cooling_down",
|
|
63
|
-
}
|
|
64
|
-
|
|
65
|
-
export enum NotDialReason {
|
|
66
|
-
not_contain_requested_sampling_groups = "not_contain_requested_sampling_groups",
|
|
67
|
-
not_contain_requested_attnet_syncnet_subnets = "not_contain_requested_attnet_syncnet_subnets",
|
|
68
|
-
no_multiaddrs = "no_multiaddrs",
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
type UnixMs = number;
|
|
72
|
-
/**
|
|
73
|
-
* Maintain peersToConnect to avoid having too many topic peers at some point.
|
|
74
|
-
* See https://github.com/ChainSafe/lodestar/issues/5741#issuecomment-1643113577
|
|
75
|
-
*/
|
|
76
|
-
type SubnetRequestInfo = {
|
|
77
|
-
toUnixMs: UnixMs;
|
|
78
|
-
// when node is stable this should be 0
|
|
79
|
-
peersToConnect: number;
|
|
80
|
-
};
|
|
81
|
-
|
|
82
|
-
export type SubnetDiscvQueryMs = {
|
|
83
|
-
subnet: SubnetID;
|
|
84
|
-
type: SubnetType;
|
|
85
|
-
toUnixMs: UnixMs;
|
|
86
|
-
maxPeersToDiscover: number;
|
|
87
|
-
};
|
|
88
|
-
|
|
89
|
-
type CachedENR = {
|
|
90
|
-
peerId: PeerId;
|
|
91
|
-
multiaddrTCP: Multiaddr;
|
|
92
|
-
subnets: Record<SubnetType, boolean[]>;
|
|
93
|
-
addedUnixMs: number;
|
|
94
|
-
// custodyGroups is null for pre-fulu
|
|
95
|
-
custodyGroups: number[] | null;
|
|
96
|
-
};
|
|
97
|
-
|
|
98
|
-
/**
|
|
99
|
-
* PeerDiscovery discovers and dials new peers, and executes discv5 queries.
|
|
100
|
-
* Currently relies on discv5 automatic periodic queries.
|
|
101
|
-
*/
|
|
102
|
-
export class PeerDiscovery {
|
|
103
|
-
readonly discv5: Discv5Worker;
|
|
104
|
-
private libp2p: Libp2p;
|
|
105
|
-
private readonly clock: IClock;
|
|
106
|
-
private peerRpcScores: IPeerRpcScoreStore;
|
|
107
|
-
private metrics: NetworkCoreMetrics | null;
|
|
108
|
-
private logger: LoggerNode;
|
|
109
|
-
private config: BeaconConfig;
|
|
110
|
-
private cachedENRs = new Map<PeerIdStr, CachedENR>();
|
|
111
|
-
private randomNodeQuery: QueryStatus = {code: QueryStatusCode.NotActive};
|
|
112
|
-
private peersToConnect = 0;
|
|
113
|
-
private subnetRequests: Record<SubnetType, Map<number, SubnetRequestInfo>> = {
|
|
114
|
-
attnets: new Map(),
|
|
115
|
-
syncnets: new Map(),
|
|
116
|
-
};
|
|
117
|
-
|
|
118
|
-
private custodyGroupQueries: CustodyGroupQueries;
|
|
119
|
-
|
|
120
|
-
private discv5StartMs: number;
|
|
121
|
-
private discv5FirstQueryDelayMs: number;
|
|
122
|
-
|
|
123
|
-
private connectToDiscv5BootnodesOnStart: boolean | undefined = false;
|
|
124
|
-
|
|
125
|
-
constructor(modules: PeerDiscoveryModules, opts: PeerDiscoveryOpts, discv5: Discv5Worker) {
|
|
126
|
-
const {libp2p, clock, peerRpcScores, metrics, logger, networkConfig} = modules;
|
|
127
|
-
this.libp2p = libp2p;
|
|
128
|
-
this.clock = clock;
|
|
129
|
-
this.peerRpcScores = peerRpcScores;
|
|
130
|
-
this.metrics = metrics;
|
|
131
|
-
this.logger = logger;
|
|
132
|
-
this.config = networkConfig.config;
|
|
133
|
-
this.discv5 = discv5;
|
|
134
|
-
this.custodyGroupQueries = new Map();
|
|
135
|
-
|
|
136
|
-
this.discv5StartMs = 0;
|
|
137
|
-
this.discv5StartMs = Date.now();
|
|
138
|
-
this.discv5FirstQueryDelayMs = opts.discv5FirstQueryDelayMs;
|
|
139
|
-
this.connectToDiscv5BootnodesOnStart = opts.connectToDiscv5Bootnodes;
|
|
140
|
-
|
|
141
|
-
this.libp2p.addEventListener("peer:discovery", this.onDiscoveredPeer);
|
|
142
|
-
this.discv5.on("discovered", this.onDiscoveredENR);
|
|
143
|
-
|
|
144
|
-
const numBootEnrs = opts.discv5.bootEnrs.length;
|
|
145
|
-
if (numBootEnrs === 0) {
|
|
146
|
-
this.logger.error("PeerDiscovery: discv5 has no boot enr");
|
|
147
|
-
} else {
|
|
148
|
-
this.logger.verbose("PeerDiscovery: number of bootEnrs", {bootEnrs: numBootEnrs});
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
if (this.connectToDiscv5BootnodesOnStart) {
|
|
152
|
-
// In devnet scenarios, especially, we want more control over which peers we connect to.
|
|
153
|
-
// Only dial the discv5.bootEnrs if the option
|
|
154
|
-
// network.connectToDiscv5Bootnodes has been set to true.
|
|
155
|
-
for (const bootENR of opts.discv5.bootEnrs) {
|
|
156
|
-
this.onDiscoveredENR(ENR.decodeTxt(bootENR)).catch((e) =>
|
|
157
|
-
this.logger.error("error onDiscoveredENR bootENR", {}, e)
|
|
158
|
-
);
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
if (metrics) {
|
|
163
|
-
metrics.discovery.cachedENRsSize.addCollect(() => {
|
|
164
|
-
metrics.discovery.cachedENRsSize.set(this.cachedENRs.size);
|
|
165
|
-
metrics.discovery.peersToConnect.set(this.peersToConnect);
|
|
166
|
-
|
|
167
|
-
// PeerDAS metrics
|
|
168
|
-
const groupsToConnect = Array.from(this.custodyGroupQueries.values());
|
|
169
|
-
const groupPeersToConnect = groupsToConnect.reduce((acc, elem) => acc + elem, 0);
|
|
170
|
-
metrics.discovery.custodyGroupPeersToConnect.set(groupPeersToConnect);
|
|
171
|
-
metrics.discovery.custodyGroupsToConnect.set(groupsToConnect.filter((elem) => elem > 0).length);
|
|
172
|
-
|
|
173
|
-
for (const type of [SubnetType.attnets, SubnetType.syncnets]) {
|
|
174
|
-
const subnetPeersToConnect = Array.from(this.subnetRequests[type].values()).reduce(
|
|
175
|
-
(acc, {peersToConnect}) => acc + peersToConnect,
|
|
176
|
-
0
|
|
177
|
-
);
|
|
178
|
-
metrics.discovery.subnetPeersToConnect.set({type}, subnetPeersToConnect);
|
|
179
|
-
metrics.discovery.subnetsToConnect.set({type}, this.subnetRequests[type].size);
|
|
180
|
-
}
|
|
181
|
-
});
|
|
182
|
-
}
|
|
183
|
-
}
|
|
184
|
-
|
|
185
|
-
static async init(modules: PeerDiscoveryModules, opts: PeerDiscoveryOpts): Promise<PeerDiscovery> {
|
|
186
|
-
const discv5 = await Discv5Worker.init({
|
|
187
|
-
discv5: opts.discv5,
|
|
188
|
-
privateKey: modules.privateKey,
|
|
189
|
-
metrics: modules.metrics ?? undefined,
|
|
190
|
-
logger: modules.logger,
|
|
191
|
-
config: modules.networkConfig.config,
|
|
192
|
-
genesisTime: modules.clock.genesisTime,
|
|
193
|
-
});
|
|
194
|
-
|
|
195
|
-
return new PeerDiscovery(modules, opts, discv5);
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
async stop(): Promise<void> {
|
|
199
|
-
this.libp2p.removeEventListener("peer:discovery", this.onDiscoveredPeer);
|
|
200
|
-
this.discv5.off("discovered", this.onDiscoveredENR);
|
|
201
|
-
await this.discv5.close();
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
/**
|
|
205
|
-
* Request to find peers, both on specific subnets and in general
|
|
206
|
-
* pre-fulu custodyGroupRequests is empty
|
|
207
|
-
*/
|
|
208
|
-
discoverPeers(
|
|
209
|
-
peersToConnect: number,
|
|
210
|
-
custodyGroupRequests: CustodyGroupQueries,
|
|
211
|
-
subnetRequests: SubnetDiscvQueryMs[] = []
|
|
212
|
-
): void {
|
|
213
|
-
const subnetsToDiscoverPeers: SubnetDiscvQueryMs[] = [];
|
|
214
|
-
const cachedENRsToDial = new Map<PeerIdStr, CachedENR>();
|
|
215
|
-
// Iterate in reverse to consider first the most recent ENRs
|
|
216
|
-
const cachedENRsReverse: CachedENR[] = [];
|
|
217
|
-
const pendingDials = new Set(
|
|
218
|
-
this.libp2p.services.components.connectionManager
|
|
219
|
-
.getDialQueue()
|
|
220
|
-
.map((pendingDial) => pendingDial.peerId?.toString())
|
|
221
|
-
);
|
|
222
|
-
for (const [id, cachedENR] of this.cachedENRs.entries()) {
|
|
223
|
-
if (
|
|
224
|
-
// time expired or
|
|
225
|
-
Date.now() - cachedENR.addedUnixMs > MAX_CACHED_ENR_AGE_MS ||
|
|
226
|
-
// already dialing
|
|
227
|
-
pendingDials.has(id)
|
|
228
|
-
) {
|
|
229
|
-
this.cachedENRs.delete(id);
|
|
230
|
-
} else if (!this.peerRpcScores.isCoolingDown(id)) {
|
|
231
|
-
cachedENRsReverse.push(cachedENR);
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
cachedENRsReverse.reverse();
|
|
235
|
-
|
|
236
|
-
this.peersToConnect += peersToConnect;
|
|
237
|
-
|
|
238
|
-
// starting from PeerDAS, we need to prioritize column subnet peers first in order to have stable subnet sampling
|
|
239
|
-
const groupsToDiscover = new Set<CustodyIndex>();
|
|
240
|
-
let groupPeersToDiscover = 0;
|
|
241
|
-
|
|
242
|
-
const forkSeq = this.config.getForkSeq(this.clock.currentSlot);
|
|
243
|
-
if (forkSeq >= ForkSeq.fulu) {
|
|
244
|
-
group: for (const [group, maxPeersToConnect] of custodyGroupRequests) {
|
|
245
|
-
let cachedENRsInGroup = 0;
|
|
246
|
-
for (const cachedENR of cachedENRsReverse) {
|
|
247
|
-
if (cachedENR.custodyGroups?.includes(group)) {
|
|
248
|
-
cachedENRsToDial.set(cachedENR.peerId.toString(), cachedENR);
|
|
249
|
-
|
|
250
|
-
if (++cachedENRsInGroup >= maxPeersToConnect) {
|
|
251
|
-
continue group;
|
|
252
|
-
}
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
const groupPeersToConnect = Math.max(maxPeersToConnect - cachedENRsInGroup, 0);
|
|
256
|
-
this.custodyGroupQueries.set(group, groupPeersToConnect);
|
|
257
|
-
groupsToDiscover.add(group);
|
|
258
|
-
groupPeersToDiscover += groupPeersToConnect;
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
subnet: for (const subnetRequest of subnetRequests) {
|
|
264
|
-
// Get cached ENRs from the discovery service that are in the requested `subnetId`, but not connected yet
|
|
265
|
-
let cachedENRsInSubnet = 0;
|
|
266
|
-
|
|
267
|
-
// only dial attnet/syncnet peers if subnet sampling peers are stable
|
|
268
|
-
if (groupPeersToDiscover === 0) {
|
|
269
|
-
for (const cachedENR of cachedENRsReverse) {
|
|
270
|
-
if (cachedENR.subnets[subnetRequest.type][subnetRequest.subnet]) {
|
|
271
|
-
cachedENRsToDial.set(cachedENR.peerId.toString(), cachedENR);
|
|
272
|
-
|
|
273
|
-
if (++cachedENRsInSubnet >= subnetRequest.maxPeersToDiscover) {
|
|
274
|
-
continue subnet;
|
|
275
|
-
}
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
const subnetPeersToConnect = Math.max(subnetRequest.maxPeersToDiscover - cachedENRsInSubnet, 0);
|
|
281
|
-
|
|
282
|
-
// Extend the toUnixMs for this subnet
|
|
283
|
-
const prevUnixMs = this.subnetRequests[subnetRequest.type].get(subnetRequest.subnet)?.toUnixMs;
|
|
284
|
-
const newUnixMs =
|
|
285
|
-
prevUnixMs !== undefined && prevUnixMs > subnetRequest.toUnixMs ? prevUnixMs : subnetRequest.toUnixMs;
|
|
286
|
-
this.subnetRequests[subnetRequest.type].set(subnetRequest.subnet, {
|
|
287
|
-
toUnixMs: newUnixMs,
|
|
288
|
-
peersToConnect: subnetPeersToConnect,
|
|
289
|
-
});
|
|
290
|
-
|
|
291
|
-
// Query a discv5 query if more peers are needed
|
|
292
|
-
subnetsToDiscoverPeers.push(subnetRequest);
|
|
293
|
-
}
|
|
294
|
-
|
|
295
|
-
// If subnetRequests won't connect enough peers for peersToConnect, add more
|
|
296
|
-
if (cachedENRsToDial.size < peersToConnect) {
|
|
297
|
-
for (const cachedENR of cachedENRsReverse) {
|
|
298
|
-
cachedENRsToDial.set(cachedENR.peerId.toString(), cachedENR);
|
|
299
|
-
if (cachedENRsToDial.size >= peersToConnect) {
|
|
300
|
-
break;
|
|
301
|
-
}
|
|
302
|
-
}
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
// Queue an outgoing connection request to the cached peers that are on `s.subnet_id`.
|
|
306
|
-
// If we connect to the cached peers before the discovery query starts, then we potentially
|
|
307
|
-
// save a costly discovery query.
|
|
308
|
-
for (const [id, cachedENRToDial] of cachedENRsToDial) {
|
|
309
|
-
this.cachedENRs.delete(id);
|
|
310
|
-
void this.dialPeer(cachedENRToDial);
|
|
311
|
-
}
|
|
312
|
-
|
|
313
|
-
// Run a discv5 subnet query to try to discover new peers
|
|
314
|
-
const shouldRunFindRandomNodeQuery = subnetsToDiscoverPeers.length > 0 || cachedENRsToDial.size < peersToConnect;
|
|
315
|
-
if (shouldRunFindRandomNodeQuery) {
|
|
316
|
-
void this.runFindRandomNodeQuery();
|
|
317
|
-
}
|
|
318
|
-
|
|
319
|
-
this.logger.debug("Discover peers outcome", {
|
|
320
|
-
peersToConnect,
|
|
321
|
-
peersAvailableToDial: cachedENRsToDial.size,
|
|
322
|
-
subnetsToDiscover: subnetsToDiscoverPeers.length,
|
|
323
|
-
groupsToDiscover: Array.from(groupsToDiscover).join(","),
|
|
324
|
-
groupPeersToDiscover,
|
|
325
|
-
shouldRunFindRandomNodeQuery,
|
|
326
|
-
});
|
|
327
|
-
}
|
|
328
|
-
|
|
329
|
-
/**
|
|
330
|
-
* Request discv5 to find peers if there is no query in progress
|
|
331
|
-
*/
|
|
332
|
-
private async runFindRandomNodeQuery(): Promise<void> {
|
|
333
|
-
// Delay the 1st query after starting discv5
|
|
334
|
-
// See https://github.com/ChainSafe/lodestar/issues/3423
|
|
335
|
-
const msSinceDiscv5Start = Date.now() - this.discv5StartMs;
|
|
336
|
-
if (msSinceDiscv5Start <= this.discv5FirstQueryDelayMs) {
|
|
337
|
-
await sleep(this.discv5FirstQueryDelayMs - msSinceDiscv5Start);
|
|
338
|
-
}
|
|
339
|
-
|
|
340
|
-
// Run a general discv5 query if one is not already in progress
|
|
341
|
-
if (this.randomNodeQuery.code === QueryStatusCode.Active) {
|
|
342
|
-
this.metrics?.discovery.findNodeQueryRequests.inc({action: "ignore"});
|
|
343
|
-
return;
|
|
344
|
-
}
|
|
345
|
-
this.metrics?.discovery.findNodeQueryRequests.inc({action: "start"});
|
|
346
|
-
|
|
347
|
-
// Use async version to prevent blocking the event loop
|
|
348
|
-
// Time to completion of this function is not critical, in case this async call add extra lag
|
|
349
|
-
this.randomNodeQuery = {code: QueryStatusCode.Active, count: 0};
|
|
350
|
-
const timer = this.metrics?.discovery.findNodeQueryTime.startTimer();
|
|
351
|
-
|
|
352
|
-
try {
|
|
353
|
-
const enrs = await this.discv5.findRandomNode();
|
|
354
|
-
this.metrics?.discovery.findNodeQueryEnrCount.inc(enrs.length);
|
|
355
|
-
} catch (e) {
|
|
356
|
-
this.logger.error("Error on discv5.findNode()", {}, e as Error);
|
|
357
|
-
} finally {
|
|
358
|
-
this.randomNodeQuery = {code: QueryStatusCode.NotActive};
|
|
359
|
-
timer?.();
|
|
360
|
-
}
|
|
361
|
-
}
|
|
362
|
-
|
|
363
|
-
/**
|
|
364
|
-
* Progressively called by libp2p as a result of peer discovery or updates to its peer store
|
|
365
|
-
*/
|
|
366
|
-
private onDiscoveredPeer = (evt: CustomEvent<PeerInfo>): void => {
|
|
367
|
-
const {id, multiaddrs} = evt.detail;
|
|
368
|
-
|
|
369
|
-
// libp2p may send us PeerInfos without multiaddrs https://github.com/libp2p/js-libp2p/issues/1873
|
|
370
|
-
if (!multiaddrs || multiaddrs.length === 0) {
|
|
371
|
-
this.metrics?.discovery.discoveredStatus.inc({status: DiscoveredPeerStatus.no_multiaddrs});
|
|
372
|
-
return;
|
|
373
|
-
}
|
|
374
|
-
|
|
375
|
-
const attnets = zeroAttnets;
|
|
376
|
-
const syncnets = zeroSyncnets;
|
|
377
|
-
|
|
378
|
-
const status = this.handleDiscoveredPeer(id, multiaddrs[0], attnets, syncnets, undefined);
|
|
379
|
-
this.logger.debug("Discovered peer via libp2p", {peer: prettyPrintPeerId(id), status});
|
|
380
|
-
this.metrics?.discovery.discoveredStatus.inc({status});
|
|
381
|
-
};
|
|
382
|
-
|
|
383
|
-
/**
|
|
384
|
-
* Progressively called by discv5 as a result of any query.
|
|
385
|
-
*/
|
|
386
|
-
private onDiscoveredENR = async (enr: ENR): Promise<void> => {
|
|
387
|
-
if (this.randomNodeQuery.code === QueryStatusCode.Active) {
|
|
388
|
-
this.randomNodeQuery.count++;
|
|
389
|
-
}
|
|
390
|
-
const peerId = enr.peerId;
|
|
391
|
-
// tcp multiaddr is known to be be present, checked inside the worker
|
|
392
|
-
const multiaddrTCP = enr.getLocationMultiaddr(ENRKey.tcp);
|
|
393
|
-
if (!multiaddrTCP) {
|
|
394
|
-
this.logger.error("Discv5 worker sent enr without tcp multiaddr", {enr: enr.encodeTxt()});
|
|
395
|
-
this.metrics?.discovery.discoveredStatus.inc({status: DiscoveredPeerStatus.error});
|
|
396
|
-
return;
|
|
397
|
-
}
|
|
398
|
-
// Are this fields mandatory?
|
|
399
|
-
const attnetsBytes = enr.kvs.get(ENRKey.attnets); // 64 bits
|
|
400
|
-
const syncnetsBytes = enr.kvs.get(ENRKey.syncnets); // 4 bits
|
|
401
|
-
const custodyGroupCountBytes = enr.kvs.get(ENRKey.cgc); // not preserialized value, is byte representation of number
|
|
402
|
-
if (custodyGroupCountBytes === undefined) {
|
|
403
|
-
this.logger.debug("peer discovered with no cgc, using default/miniumn", {
|
|
404
|
-
custodyRequirement: this.config.CUSTODY_REQUIREMENT,
|
|
405
|
-
peer: prettyPrintPeerId(peerId),
|
|
406
|
-
});
|
|
407
|
-
}
|
|
408
|
-
|
|
409
|
-
// Use faster version than ssz's implementation that leverages pre-cached.
|
|
410
|
-
// Some nodes don't serialize the bitfields properly, encoding the syncnets as attnets,
|
|
411
|
-
// which cause the ssz implementation to throw on validation. deserializeEnrSubnets() will
|
|
412
|
-
// never throw and treat too long or too short bitfields as zero-ed
|
|
413
|
-
const attnets = attnetsBytes ? deserializeEnrSubnets(attnetsBytes, ATTESTATION_SUBNET_COUNT) : zeroAttnets;
|
|
414
|
-
const syncnets = syncnetsBytes ? deserializeEnrSubnets(syncnetsBytes, SYNC_COMMITTEE_SUBNET_COUNT) : zeroSyncnets;
|
|
415
|
-
const custodyGroupCount = custodyGroupCountBytes ? bytesToInt(custodyGroupCountBytes, "be") : undefined;
|
|
416
|
-
|
|
417
|
-
const status = this.handleDiscoveredPeer(peerId, multiaddrTCP, attnets, syncnets, custodyGroupCount);
|
|
418
|
-
this.logger.debug("Discovered peer via discv5", {
|
|
419
|
-
peer: prettyPrintPeerId(peerId),
|
|
420
|
-
status,
|
|
421
|
-
cgc: custodyGroupCount,
|
|
422
|
-
});
|
|
423
|
-
this.metrics?.discovery.discoveredStatus.inc({status});
|
|
424
|
-
};
|
|
425
|
-
|
|
426
|
-
/**
|
|
427
|
-
* Progressively called by peer discovery as a result of any query.
|
|
428
|
-
*/
|
|
429
|
-
private handleDiscoveredPeer(
|
|
430
|
-
peerId: PeerId,
|
|
431
|
-
multiaddrTCP: Multiaddr,
|
|
432
|
-
attnets: boolean[],
|
|
433
|
-
syncnets: boolean[],
|
|
434
|
-
custodySubnetCount?: number
|
|
435
|
-
): DiscoveredPeerStatus {
|
|
436
|
-
const nodeId = computeNodeId(peerId);
|
|
437
|
-
this.logger.debug("handleDiscoveredPeer", {nodeId: toHex(nodeId), peerId: peerId.toString()});
|
|
438
|
-
try {
|
|
439
|
-
// Check if peer is not banned or disconnected
|
|
440
|
-
if (this.peerRpcScores.getScoreState(peerId) !== ScoreState.Healthy) {
|
|
441
|
-
return DiscoveredPeerStatus.bad_score;
|
|
442
|
-
}
|
|
443
|
-
|
|
444
|
-
const peerIdStr = peerId.toString();
|
|
445
|
-
// check if peer has a cool-down period applied for reconnection. Is possible that a peer has a
|
|
446
|
-
// "healthy" score but has disconnected us and we are letting the reconnection cool-down before
|
|
447
|
-
// they are eligible for reconnection
|
|
448
|
-
if (this.peerRpcScores.isCoolingDown(peerIdStr)) {
|
|
449
|
-
return DiscoveredPeerStatus.peer_cooling_down;
|
|
450
|
-
}
|
|
451
|
-
|
|
452
|
-
// Ignore connected peers. TODO: Is this check necessary?
|
|
453
|
-
if (this.isPeerConnected(peerIdStr)) {
|
|
454
|
-
return DiscoveredPeerStatus.already_connected;
|
|
455
|
-
}
|
|
456
|
-
|
|
457
|
-
// Ignore dialing peers
|
|
458
|
-
if (
|
|
459
|
-
this.libp2p.services.components.connectionManager
|
|
460
|
-
.getDialQueue()
|
|
461
|
-
.find((pendingDial) => pendingDial.peerId?.equals(peerId))
|
|
462
|
-
) {
|
|
463
|
-
return DiscoveredPeerStatus.already_dialing;
|
|
464
|
-
}
|
|
465
|
-
|
|
466
|
-
const forkSeq = this.config.getForkSeq(this.clock.currentSlot);
|
|
467
|
-
|
|
468
|
-
// Should dial peer?
|
|
469
|
-
const cachedPeer: CachedENR = {
|
|
470
|
-
peerId,
|
|
471
|
-
multiaddrTCP,
|
|
472
|
-
subnets: {attnets, syncnets},
|
|
473
|
-
addedUnixMs: Date.now(),
|
|
474
|
-
// for pre-fulu, custodyGroups is null
|
|
475
|
-
custodyGroups:
|
|
476
|
-
forkSeq >= ForkSeq.fulu
|
|
477
|
-
? getCustodyGroups(this.config, nodeId, custodySubnetCount ?? this.config.CUSTODY_REQUIREMENT)
|
|
478
|
-
: null,
|
|
479
|
-
};
|
|
480
|
-
|
|
481
|
-
// Only dial peer if necessary
|
|
482
|
-
if (this.shouldDialPeer(cachedPeer)) {
|
|
483
|
-
void this.dialPeer(cachedPeer);
|
|
484
|
-
return DiscoveredPeerStatus.attempt_dial;
|
|
485
|
-
}
|
|
486
|
-
|
|
487
|
-
// Add to pending good peers with a last seen time
|
|
488
|
-
this.cachedENRs.set(peerId.toString(), cachedPeer);
|
|
489
|
-
const dropped = pruneSetToMax(this.cachedENRs, MAX_CACHED_ENRS);
|
|
490
|
-
// If the cache was already full, count the peer as dropped
|
|
491
|
-
return dropped > 0 ? DiscoveredPeerStatus.dropped : DiscoveredPeerStatus.cached;
|
|
492
|
-
} catch (e) {
|
|
493
|
-
this.logger.error("Error onDiscovered", {}, e as Error);
|
|
494
|
-
return DiscoveredPeerStatus.error;
|
|
495
|
-
}
|
|
496
|
-
}
|
|
497
|
-
|
|
498
|
-
private shouldDialPeer(peer: CachedENR): boolean {
|
|
499
|
-
const forkSeq = this.config.getForkSeq(this.clock.currentSlot);
|
|
500
|
-
if (forkSeq >= ForkSeq.fulu && peer.custodyGroups !== null) {
|
|
501
|
-
// pre-fulu `this.custodyGroupQueries` is empty
|
|
502
|
-
// starting from fulu, we need to make sure we have stable subnet sampling peers first
|
|
503
|
-
// given SAMPLES_PER_SLOT = 8 and 100 peers, we have 800 custody columns from peers
|
|
504
|
-
// with NUMBER_OF_CUSTODY_GROUPS = 128, we have 800 / 128 = 6.25 peers per column in average
|
|
505
|
-
// it would not be hard to find TARGET_SUBNET_PEERS(6) peers per sampling columns columns and TARGET_GROUP_PEERS_PER_SUBNET(4) peers per non-sampling columns
|
|
506
|
-
// after some first heartbeats, we should have no more column requested, then go with conditions of prior forks
|
|
507
|
-
let hasMatchingGroup = false;
|
|
508
|
-
let custodyGroupRequestCount = 0;
|
|
509
|
-
for (const [group, peersToConnect] of this.custodyGroupQueries.entries()) {
|
|
510
|
-
if (peersToConnect <= 0) {
|
|
511
|
-
this.custodyGroupQueries.delete(group);
|
|
512
|
-
} else if (peer.custodyGroups.includes(group)) {
|
|
513
|
-
this.custodyGroupQueries.set(group, Math.max(0, peersToConnect - 1));
|
|
514
|
-
hasMatchingGroup = true;
|
|
515
|
-
custodyGroupRequestCount += peersToConnect;
|
|
516
|
-
}
|
|
517
|
-
}
|
|
518
|
-
|
|
519
|
-
// if subnet sampling peers are not stable and this peer is not in the requested columns, ignore it
|
|
520
|
-
if (custodyGroupRequestCount > 0 && !hasMatchingGroup) {
|
|
521
|
-
this.metrics?.discovery.notDialReason.inc({reason: NotDialReason.not_contain_requested_sampling_groups});
|
|
522
|
-
return false;
|
|
523
|
-
}
|
|
524
|
-
}
|
|
525
|
-
|
|
526
|
-
// logics up to Deneb fork
|
|
527
|
-
for (const type of [SubnetType.attnets, SubnetType.syncnets]) {
|
|
528
|
-
for (const [subnet, {toUnixMs, peersToConnect}] of this.subnetRequests[type].entries()) {
|
|
529
|
-
if (toUnixMs < Date.now() || peersToConnect === 0) {
|
|
530
|
-
// Prune all requests so that we don't have to loop again
|
|
531
|
-
// if we have low subnet peers then PeerManager will update us again with subnet + toUnixMs + peersToConnect
|
|
532
|
-
this.subnetRequests[type].delete(subnet);
|
|
533
|
-
} else {
|
|
534
|
-
// not expired and peersToConnect > 0
|
|
535
|
-
// if we have enough subnet peers, no need to dial more or we may have performance issues
|
|
536
|
-
// see https://github.com/ChainSafe/lodestar/issues/5741#issuecomment-1643113577
|
|
537
|
-
if (peer.subnets[type][subnet]) {
|
|
538
|
-
this.subnetRequests[type].set(subnet, {toUnixMs, peersToConnect: Math.max(peersToConnect - 1, 0)});
|
|
539
|
-
return true;
|
|
540
|
-
}
|
|
541
|
-
}
|
|
542
|
-
}
|
|
543
|
-
}
|
|
544
|
-
|
|
545
|
-
// ideally we may want to leave this cheap condition at the top of the function
|
|
546
|
-
// however we want to also update peersToConnect in this.subnetRequests
|
|
547
|
-
// the this.subnetRequests[type] gradually has 0 subnet so this function should be cheap enough
|
|
548
|
-
if (this.peersToConnect > 0) {
|
|
549
|
-
return true;
|
|
550
|
-
}
|
|
551
|
-
|
|
552
|
-
this.metrics?.discovery.notDialReason.inc({reason: NotDialReason.not_contain_requested_attnet_syncnet_subnets});
|
|
553
|
-
return false;
|
|
554
|
-
}
|
|
555
|
-
|
|
556
|
-
/**
|
|
557
|
-
* Handles DiscoveryEvent::QueryResult
|
|
558
|
-
* Peers that have been returned by discovery requests are dialed here if they are suitable.
|
|
559
|
-
*/
|
|
560
|
-
private async dialPeer(cachedPeer: CachedENR): Promise<void> {
|
|
561
|
-
// we dial a peer when:
|
|
562
|
-
// - this.peersToConnect > 0
|
|
563
|
-
// - or the peer subscribes to a subnet that we want
|
|
564
|
-
// If this.peersToConnect is 3 while we need to dial 5 subnet peers, in that case we want this.peersToConnect
|
|
565
|
-
// to be 0 instead of a negative value. The next heartbeat may increase this.peersToConnect again if some dials
|
|
566
|
-
// are not successful.
|
|
567
|
-
this.peersToConnect = Math.max(this.peersToConnect - 1, 0);
|
|
568
|
-
|
|
569
|
-
const {peerId, multiaddrTCP} = cachedPeer;
|
|
570
|
-
|
|
571
|
-
// Must add the multiaddrs array to the address book before dialing
|
|
572
|
-
// https://github.com/libp2p/js-libp2p/blob/aec8e3d3bb1b245051b60c2a890550d262d5b062/src/index.js#L638
|
|
573
|
-
const peer = await this.libp2p.peerStore.merge(peerId, {multiaddrs: [multiaddrTCP]});
|
|
574
|
-
if (peer.addresses.length === 0) {
|
|
575
|
-
this.metrics?.discovery.notDialReason.inc({reason: NotDialReason.no_multiaddrs});
|
|
576
|
-
return;
|
|
577
|
-
}
|
|
578
|
-
|
|
579
|
-
// Note: PeerDiscovery adds the multiaddrTCP beforehand
|
|
580
|
-
const peerIdShort = prettyPrintPeerId(peerId);
|
|
581
|
-
this.logger.debug("Dialing discovered peer", {peer: peerIdShort});
|
|
582
|
-
|
|
583
|
-
this.metrics?.discovery.dialAttempts.inc();
|
|
584
|
-
const timer = this.metrics?.discovery.dialTime.startTimer();
|
|
585
|
-
|
|
586
|
-
// Note: `libp2p.dial()` is what libp2p.connectionManager autoDial calls
|
|
587
|
-
// Note: You must listen to the connected events to listen for a successful conn upgrade
|
|
588
|
-
try {
|
|
589
|
-
await this.libp2p.dial(peerId);
|
|
590
|
-
timer?.({status: "success"});
|
|
591
|
-
this.logger.debug("Dialed discovered peer", {peer: peerIdShort});
|
|
592
|
-
} catch (e) {
|
|
593
|
-
timer?.({status: "error"});
|
|
594
|
-
formatLibp2pDialError(e as Error);
|
|
595
|
-
this.metrics?.discovery.dialError.inc({reason: getLibp2pError(e as Error)});
|
|
596
|
-
this.logger.debug("Error dialing discovered peer", {peer: peerIdShort}, e as Error);
|
|
597
|
-
}
|
|
598
|
-
}
|
|
599
|
-
|
|
600
|
-
/** Check if there is 1+ open connection with this peer */
|
|
601
|
-
private isPeerConnected(peerIdStr: PeerIdStr): boolean {
|
|
602
|
-
const connections = getConnectionsMap(this.libp2p).get(peerIdStr);
|
|
603
|
-
return Boolean(connections?.value.some((connection) => connection.status === "open"));
|
|
604
|
-
}
|
|
605
|
-
}
|
|
606
|
-
|
|
607
|
-
/**
|
|
608
|
-
* libp2p errors with extremely noisy errors here, which are deeply nested taking 30-50 lines.
|
|
609
|
-
* Some known errors:
|
|
610
|
-
* ```
|
|
611
|
-
* Error: The operation was aborted
|
|
612
|
-
* Error: stream ended before 1 bytes became available
|
|
613
|
-
* Error: Error occurred during XX handshake: Error occurred while verifying signed payload: Peer ID doesn't match libp2p public key
|
|
614
|
-
* ```
|
|
615
|
-
*
|
|
616
|
-
* Also the error's message is not properly formatted, where the error message is indented and includes the full stack
|
|
617
|
-
* ```
|
|
618
|
-
* {
|
|
619
|
-
* emessage: '\n' +
|
|
620
|
-
* ' Error: stream ended before 1 bytes became available\n' +
|
|
621
|
-
* ' at /home/lion/Code/eth2.0/lodestar/node_modules/it-reader/index.js:37:9\n' +
|
|
622
|
-
* ' at runMicrotasks (<anonymous>)\n' +
|
|
623
|
-
* ' at decoder (/home/lion/Code/eth2.0/lodestar/node_modules/it-length-prefixed/src/decode.js:113:22)\n' +
|
|
624
|
-
* ' at first (/home/lion/Code/eth2.0/lodestar/node_modules/it-first/index.js:11:20)\n' +
|
|
625
|
-
* ' at Object.exports.read (/home/lion/Code/eth2.0/lodestar/node_modules/multistream-select/src/multistream.js:31:15)\n' +
|
|
626
|
-
* ' at module.exports (/home/lion/Code/eth2.0/lodestar/node_modules/multistream-select/src/select.js:21:19)\n' +
|
|
627
|
-
* ' at Upgrader._encryptOutbound (/home/lion/Code/eth2.0/lodestar/node_modules/libp2p/src/upgrader.js:397:36)\n' +
|
|
628
|
-
* ' at Upgrader.upgradeOutbound (/home/lion/Code/eth2.0/lodestar/node_modules/libp2p/src/upgrader.js:176:11)\n' +
|
|
629
|
-
* ' at ClassIsWrapper.dial (/home/lion/Code/eth2.0/lodestar/node_modules/libp2p-tcp/src/index.js:49:18)'
|
|
630
|
-
* }
|
|
631
|
-
* ```
|
|
632
|
-
*
|
|
633
|
-
* Tracking issue https://github.com/libp2p/js-libp2p/issues/996
|
|
634
|
-
*/
|
|
635
|
-
function formatLibp2pDialError(e: Error): void {
|
|
636
|
-
const errorMessage = e.message.trim();
|
|
637
|
-
const newlineIndex = errorMessage.indexOf("\n");
|
|
638
|
-
e.message = newlineIndex !== -1 ? errorMessage.slice(0, newlineIndex) : errorMessage;
|
|
639
|
-
|
|
640
|
-
if (
|
|
641
|
-
e.message.includes("The operation was aborted") ||
|
|
642
|
-
e.message.includes("stream ended before 1 bytes became available") ||
|
|
643
|
-
e.message.includes("The operation was aborted")
|
|
644
|
-
) {
|
|
645
|
-
e.stack = undefined;
|
|
646
|
-
}
|
|
647
|
-
}
|