@lodestar/beacon-node 1.35.0-dev.8689cc3545 → 1.35.0-dev.8b45b1e978
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/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/network/network.js +4 -2
- package/lib/network/network.js.map +1 -1
- package/lib/util/blobs.js +3 -5
- package/lib/util/blobs.js.map +1 -1
- package/package.json +20 -18
- 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 -1538
- 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 -851
- 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 -603
- 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 -34
- 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 -128
- 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 -1365
- 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 -283
- package/src/chain/opPools/index.ts +0 -5
- package/src/chain/opPools/opPool.ts +0 -462
- package/src/chain/opPools/syncCommitteeMessagePool.ts +0 -167
- 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 -835
- 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 -45
- package/src/chain/validation/lightClientOptimisticUpdate.ts +0 -67
- 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 -1299
- 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 -497
- 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 -59
- package/src/sync/unknownBlock.ts +0 -862
- 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 -204
- 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,184 +0,0 @@
|
|
|
1
|
-
import {isForkPostFulu} from "@lodestar/params";
|
|
2
|
-
import {PeerSyncMeta} from "../../../network/peers/peersData.js";
|
|
3
|
-
import {CustodyConfig} from "../../../util/dataColumns.js";
|
|
4
|
-
import {PeerIdStr} from "../../../util/peerId.js";
|
|
5
|
-
import {shuffle} from "../../../util/shuffle.js";
|
|
6
|
-
import {sortBy} from "../../../util/sortBy.js";
|
|
7
|
-
import {MAX_CONCURRENT_REQUESTS} from "../../constants.js";
|
|
8
|
-
import {RangeSyncType} from "../../utils/remoteSyncType.js";
|
|
9
|
-
import {Batch, BatchStatus} from "../batch.js";
|
|
10
|
-
import {ChainTarget} from "./chainTarget.js";
|
|
11
|
-
|
|
12
|
-
export type PeerSyncInfo = PeerSyncMeta & {
|
|
13
|
-
target: ChainTarget;
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
type PeerInfoColumn = {syncInfo: PeerSyncInfo; columns: number; hasEarliestAvailableSlots: boolean};
|
|
17
|
-
|
|
18
|
-
/**
|
|
19
|
-
* Balance and organize peers to perform requests with a SyncChain
|
|
20
|
-
* Shuffles peers only once on instantiation
|
|
21
|
-
*/
|
|
22
|
-
export class ChainPeersBalancer {
|
|
23
|
-
private peers: PeerSyncInfo[];
|
|
24
|
-
private activeRequestsByPeer = new Map<PeerIdStr, number>();
|
|
25
|
-
private readonly custodyConfig: CustodyConfig;
|
|
26
|
-
private readonly syncType: RangeSyncType;
|
|
27
|
-
private readonly maxConcurrentRequests: number;
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* No need to specify `maxConcurrentRequests` for production code
|
|
31
|
-
* It is used for testing purposes to limit the number of concurrent requests
|
|
32
|
-
*/
|
|
33
|
-
constructor(
|
|
34
|
-
peers: PeerSyncInfo[],
|
|
35
|
-
batches: Batch[],
|
|
36
|
-
custodyConfig: CustodyConfig,
|
|
37
|
-
syncType: RangeSyncType,
|
|
38
|
-
maxConcurrentRequests = MAX_CONCURRENT_REQUESTS
|
|
39
|
-
) {
|
|
40
|
-
this.peers = shuffle(peers);
|
|
41
|
-
this.custodyConfig = custodyConfig;
|
|
42
|
-
this.syncType = syncType;
|
|
43
|
-
this.maxConcurrentRequests = maxConcurrentRequests;
|
|
44
|
-
|
|
45
|
-
// Compute activeRequestsByPeer from all batches internal states
|
|
46
|
-
for (const batch of batches) {
|
|
47
|
-
if (batch.state.status === BatchStatus.Downloading) {
|
|
48
|
-
this.activeRequestsByPeer.set(batch.state.peer, (this.activeRequestsByPeer.get(batch.state.peer) ?? 0) + 1);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* Return the most suitable peer to retry
|
|
55
|
-
* Sort peers by (1) no failed request (2) less active requests, then pick first
|
|
56
|
-
*/
|
|
57
|
-
bestPeerToRetryBatch(batch: Batch): PeerSyncMeta | undefined {
|
|
58
|
-
if (batch.state.status !== BatchStatus.AwaitingDownload) {
|
|
59
|
-
return;
|
|
60
|
-
}
|
|
61
|
-
const {columnsRequest} = batch.requests;
|
|
62
|
-
// TODO(fulu): This is fulu specific and hinders our peer selection PreFulu
|
|
63
|
-
const pendingDataColumns = columnsRequest?.columns ?? this.custodyConfig.sampledColumns;
|
|
64
|
-
const eligiblePeers = this.filterPeers(batch, pendingDataColumns, false);
|
|
65
|
-
|
|
66
|
-
const failedPeers = new Set(batch.getFailedPeers());
|
|
67
|
-
const sortedBestPeers = sortBy(
|
|
68
|
-
eligiblePeers,
|
|
69
|
-
({syncInfo}) => (failedPeers.has(syncInfo.peerId) ? 1 : 0), // prefer peers without failed requests
|
|
70
|
-
({syncInfo}) => this.activeRequestsByPeer.get(syncInfo.peerId) ?? 0, // prefer peers with least active req
|
|
71
|
-
({columns}) => -1 * columns // prefer peers with the most columns
|
|
72
|
-
);
|
|
73
|
-
|
|
74
|
-
if (sortedBestPeers.length > 0) {
|
|
75
|
-
const bestPeer = sortedBestPeers[0];
|
|
76
|
-
// we will use this peer for batch in SyncChain right after this call
|
|
77
|
-
this.activeRequestsByPeer.set(
|
|
78
|
-
bestPeer.syncInfo.peerId,
|
|
79
|
-
(this.activeRequestsByPeer.get(bestPeer.syncInfo.peerId) ?? 0) + 1
|
|
80
|
-
);
|
|
81
|
-
return bestPeer.syncInfo;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
return undefined;
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
/**
|
|
88
|
-
* Return peers with 0 or no active requests that has a higher target slot than this batch and has columns we need.
|
|
89
|
-
*/
|
|
90
|
-
idlePeerForBatch(batch: Batch): PeerSyncInfo | undefined {
|
|
91
|
-
if (batch.state.status !== BatchStatus.AwaitingDownload) {
|
|
92
|
-
return;
|
|
93
|
-
}
|
|
94
|
-
const eligiblePeers = this.filterPeers(batch, this.custodyConfig.sampledColumns, true);
|
|
95
|
-
|
|
96
|
-
// pick idle peer that has (for pre-fulu they are the same)
|
|
97
|
-
// - earliestAvailableSlot defined
|
|
98
|
-
// - the most columns we need
|
|
99
|
-
const sortedBestPeers = sortBy(
|
|
100
|
-
eligiblePeers,
|
|
101
|
-
({columns}) => -1 * columns // prefer peers with most columns we need
|
|
102
|
-
);
|
|
103
|
-
const bestPeer = sortedBestPeers[0];
|
|
104
|
-
if (bestPeer != null) {
|
|
105
|
-
// we will use this peer for batch in SyncChain right after this call
|
|
106
|
-
this.activeRequestsByPeer.set(bestPeer.syncInfo.peerId, 1);
|
|
107
|
-
return bestPeer.syncInfo;
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
return undefined;
|
|
111
|
-
}
|
|
112
|
-
|
|
113
|
-
private filterPeers(batch: Batch, requestColumns: number[], noActiveRequest: boolean): PeerInfoColumn[] {
|
|
114
|
-
const eligiblePeers: PeerInfoColumn[] = [];
|
|
115
|
-
|
|
116
|
-
if (batch.state.status !== BatchStatus.AwaitingDownload) {
|
|
117
|
-
return eligiblePeers;
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
for (const peer of this.peers) {
|
|
121
|
-
const {earliestAvailableSlot, target, peerId} = peer;
|
|
122
|
-
|
|
123
|
-
const activeRequest = this.activeRequestsByPeer.get(peerId) ?? 0;
|
|
124
|
-
if (noActiveRequest && activeRequest > 0) {
|
|
125
|
-
// consumer wants to find peer with no active request, but this peer has active request
|
|
126
|
-
continue;
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
if (activeRequest >= this.maxConcurrentRequests) {
|
|
130
|
-
// consumer wants to find peer with no more than MAX_CONCURRENT_REQUESTS active requests
|
|
131
|
-
continue;
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
if (target.slot < batch.startSlot) {
|
|
135
|
-
continue;
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
if (isForkPostFulu(batch.forkName) && this.syncType === RangeSyncType.Head) {
|
|
139
|
-
// for head sync, target slot is head slot and each peer may have a different head slot
|
|
140
|
-
// we don't want to retry a batch with a peer that's not as up-to-date as the previous peer
|
|
141
|
-
// see https://github.com/ChainSafe/lodestar/issues/8193
|
|
142
|
-
const blocks = batch.state?.blocks;
|
|
143
|
-
const lastBlock = blocks?.at(-1);
|
|
144
|
-
const lastBlockSlot = lastBlock?.slot;
|
|
145
|
-
if (lastBlockSlot && lastBlockSlot > target.slot) {
|
|
146
|
-
continue;
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
if (!isForkPostFulu(batch.forkName)) {
|
|
151
|
-
// pre-fulu logic, we don't care columns and earliestAvailableSlot
|
|
152
|
-
eligiblePeers.push({syncInfo: peer, columns: 0, hasEarliestAvailableSlots: false});
|
|
153
|
-
continue;
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
// we don't accept peers without earliestAvailableSlot because it may return 0 blocks and we get stuck
|
|
157
|
-
// see https://github.com/ChainSafe/lodestar/issues/8147
|
|
158
|
-
if (earliestAvailableSlot == null) {
|
|
159
|
-
continue;
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
if (earliestAvailableSlot > batch.startSlot) {
|
|
163
|
-
continue;
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
const columns = peer.custodyColumns.reduce((acc, elem) => {
|
|
167
|
-
if (requestColumns.includes(elem)) {
|
|
168
|
-
acc.push(elem);
|
|
169
|
-
}
|
|
170
|
-
return acc;
|
|
171
|
-
}, [] as number[]);
|
|
172
|
-
|
|
173
|
-
if (columns.length > 0) {
|
|
174
|
-
eligiblePeers.push({
|
|
175
|
-
syncInfo: peer,
|
|
176
|
-
columns: columns.length,
|
|
177
|
-
hasEarliestAvailableSlots: earliestAvailableSlot != null,
|
|
178
|
-
});
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
|
|
182
|
-
return eligiblePeers;
|
|
183
|
-
}
|
|
184
|
-
}
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
import {sortBy} from "../../../util/sortBy.js";
|
|
2
|
-
import {MIN_FINALIZED_CHAIN_VALIDATED_EPOCHS, PARALLEL_HEAD_CHAINS} from "../../constants.js";
|
|
3
|
-
import {RangeSyncType} from "../../utils/remoteSyncType.js";
|
|
4
|
-
import {SyncChain} from "../chain.js";
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Priotize existing chains based on their target and peer count
|
|
8
|
-
* Returns an array of chains toStart and toStop to comply with the priotization
|
|
9
|
-
*/
|
|
10
|
-
export function updateChains(chains: SyncChain[]): {toStart: SyncChain[]; toStop: SyncChain[]} {
|
|
11
|
-
const finalizedChains: SyncChain[] = [];
|
|
12
|
-
const headChains: SyncChain[] = [];
|
|
13
|
-
for (const chain of chains) {
|
|
14
|
-
if (chain.syncType === RangeSyncType.Finalized) {
|
|
15
|
-
finalizedChains.push(chain);
|
|
16
|
-
} else {
|
|
17
|
-
headChains.push(chain);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
const toStart: SyncChain[] = [];
|
|
22
|
-
const toStop: SyncChain[] = [];
|
|
23
|
-
|
|
24
|
-
if (finalizedChains.length > 0) {
|
|
25
|
-
// Pick first only
|
|
26
|
-
const [newSyncChain] = prioritizeSyncChains(finalizedChains);
|
|
27
|
-
|
|
28
|
-
// TODO: Should it stop all HEAD chains if going from a head sync to a finalized sync?
|
|
29
|
-
|
|
30
|
-
const currentSyncChain = finalizedChains.find((syncChain) => syncChain.isSyncing);
|
|
31
|
-
|
|
32
|
-
// Only switch from currentSyncChain to newSyncChain if necessary
|
|
33
|
-
// Avoid unnecesary switchings and try to advance it
|
|
34
|
-
if (
|
|
35
|
-
!currentSyncChain ||
|
|
36
|
-
(newSyncChain !== currentSyncChain &&
|
|
37
|
-
newSyncChain.peers > currentSyncChain.peers &&
|
|
38
|
-
currentSyncChain.validatedEpochs > MIN_FINALIZED_CHAIN_VALIDATED_EPOCHS)
|
|
39
|
-
) {
|
|
40
|
-
toStart.push(newSyncChain);
|
|
41
|
-
if (currentSyncChain) toStop.push(currentSyncChain);
|
|
42
|
-
}
|
|
43
|
-
} else {
|
|
44
|
-
for (const syncChain of prioritizeSyncChains(headChains)) {
|
|
45
|
-
if (toStart.length < PARALLEL_HEAD_CHAINS) {
|
|
46
|
-
toStart.push(syncChain);
|
|
47
|
-
} else {
|
|
48
|
-
toStop.push(syncChain);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
return {toStart, toStop};
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
/**
|
|
57
|
-
* Order `syncChains` by most peers and already syncing first
|
|
58
|
-
* If two chains have the same number of peers, prefer the already syncing to not drop progress
|
|
59
|
-
*/
|
|
60
|
-
function prioritizeSyncChains(syncChains: SyncChain[]): SyncChain[] {
|
|
61
|
-
return sortBy(
|
|
62
|
-
syncChains,
|
|
63
|
-
(syncChain) => -syncChain.peers, // Sort from high peer count to low: negative to reverse
|
|
64
|
-
(syncChain) => (syncChain.isSyncing ? 0 : 1) // Sort by isSyncing first = 0
|
|
65
|
-
);
|
|
66
|
-
}
|
package/src/sync/sync.ts
DELETED
|
@@ -1,290 +0,0 @@
|
|
|
1
|
-
import {SLOTS_PER_EPOCH} from "@lodestar/params";
|
|
2
|
-
import {Slot} from "@lodestar/types";
|
|
3
|
-
import {Logger} from "@lodestar/utils";
|
|
4
|
-
import {IBeaconChain} from "../chain/index.js";
|
|
5
|
-
import {GENESIS_SLOT} from "../constants/constants.js";
|
|
6
|
-
import {ExecutionEngineState} from "../execution/index.js";
|
|
7
|
-
import {Metrics} from "../metrics/index.js";
|
|
8
|
-
import {INetwork, NetworkEvent, NetworkEventData} from "../network/index.js";
|
|
9
|
-
import {ClockEvent} from "../util/clock.js";
|
|
10
|
-
import {isOptimisticBlock} from "../util/forkChoice.js";
|
|
11
|
-
import {MIN_EPOCH_TO_START_GOSSIP} from "./constants.js";
|
|
12
|
-
import {IBeaconSync, SyncChainDebugState, SyncModules, SyncState, SyncingStatus, syncStateMetric} from "./interface.js";
|
|
13
|
-
import {SyncOptions} from "./options.js";
|
|
14
|
-
import {RangeSync, RangeSyncEvent, RangeSyncStatus} from "./range/range.js";
|
|
15
|
-
import {BlockInputSync} from "./unknownBlock.js";
|
|
16
|
-
import {PeerSyncType, getPeerSyncType, peerSyncTypes} from "./utils/remoteSyncType.js";
|
|
17
|
-
|
|
18
|
-
export class BeaconSync implements IBeaconSync {
|
|
19
|
-
private readonly logger: Logger;
|
|
20
|
-
private readonly network: INetwork;
|
|
21
|
-
private readonly chain: IBeaconChain;
|
|
22
|
-
private readonly metrics: Metrics | null;
|
|
23
|
-
private readonly opts: SyncOptions;
|
|
24
|
-
|
|
25
|
-
private readonly rangeSync: RangeSync;
|
|
26
|
-
private readonly unknownBlockSync: BlockInputSync;
|
|
27
|
-
|
|
28
|
-
/** For metrics only */
|
|
29
|
-
private readonly peerSyncType = new Map<string, PeerSyncType>();
|
|
30
|
-
private readonly slotImportTolerance: Slot;
|
|
31
|
-
|
|
32
|
-
constructor(opts: SyncOptions, modules: SyncModules) {
|
|
33
|
-
const {config, chain, metrics, network, logger} = modules;
|
|
34
|
-
this.opts = opts;
|
|
35
|
-
this.network = network;
|
|
36
|
-
this.chain = chain;
|
|
37
|
-
this.metrics = metrics;
|
|
38
|
-
this.logger = logger;
|
|
39
|
-
this.rangeSync = new RangeSync(modules, opts);
|
|
40
|
-
this.unknownBlockSync = new BlockInputSync(config, network, chain, logger, metrics, opts);
|
|
41
|
-
this.slotImportTolerance = opts.slotImportTolerance ?? SLOTS_PER_EPOCH;
|
|
42
|
-
|
|
43
|
-
// Subscribe to RangeSync completing a SyncChain and recompute sync state
|
|
44
|
-
if (!opts.disableRangeSync) {
|
|
45
|
-
// prod code
|
|
46
|
-
this.logger.debug("RangeSync enabled.");
|
|
47
|
-
this.rangeSync.on(RangeSyncEvent.completedChain, this.updateSyncState);
|
|
48
|
-
this.network.events.on(NetworkEvent.peerConnected, this.addPeer);
|
|
49
|
-
this.network.events.on(NetworkEvent.peerDisconnected, this.removePeer);
|
|
50
|
-
this.chain.clock.on(ClockEvent.epoch, this.onClockEpoch);
|
|
51
|
-
} else {
|
|
52
|
-
// test code, this is needed for Unknown block sync sim test
|
|
53
|
-
this.unknownBlockSync.subscribeToNetwork();
|
|
54
|
-
this.logger.debug("RangeSync disabled.");
|
|
55
|
-
|
|
56
|
-
// In case node is started with `rangeSync` disabled and `unknownBlockSync` is enabled.
|
|
57
|
-
// If the epoch boundary happens right away the `onClockEpoch` will check for the `syncDiff` and if
|
|
58
|
-
// it's more than 2 epoch will disable the disabling the `unknownBlockSync` as well.
|
|
59
|
-
// This will result into node hanging on the head slot and not syncing any blocks.
|
|
60
|
-
// This was the scenario in the test case `Unknown block sync` in `packages/cli/test/sim/multi_fork.test.ts`
|
|
61
|
-
// So we are adding a particular delay to ensure that the `unknownBlockSync` is enabled.
|
|
62
|
-
const syncStartSlot = this.chain.clock.currentSlot;
|
|
63
|
-
// Having one epoch time for the node to connect to peers and start a syncing process
|
|
64
|
-
const epochCheckForSyncSlot = syncStartSlot + SLOTS_PER_EPOCH;
|
|
65
|
-
const initiateEpochCheckForSync = (): void => {
|
|
66
|
-
if (this.chain.clock.currentSlot > epochCheckForSyncSlot) {
|
|
67
|
-
this.logger.info("Initiating epoch check for sync progress");
|
|
68
|
-
this.chain.clock.off(ClockEvent.slot, initiateEpochCheckForSync);
|
|
69
|
-
this.chain.clock.on(ClockEvent.epoch, this.onClockEpoch);
|
|
70
|
-
}
|
|
71
|
-
};
|
|
72
|
-
this.chain.clock.on(ClockEvent.slot, initiateEpochCheckForSync);
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
if (metrics) {
|
|
76
|
-
metrics.syncStatus.addCollect(() => this.scrapeMetrics(metrics));
|
|
77
|
-
}
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
close(): void {
|
|
81
|
-
this.network.events.off(NetworkEvent.peerConnected, this.addPeer);
|
|
82
|
-
this.network.events.off(NetworkEvent.peerDisconnected, this.removePeer);
|
|
83
|
-
this.chain.clock.off(ClockEvent.epoch, this.onClockEpoch);
|
|
84
|
-
this.rangeSync.close();
|
|
85
|
-
this.unknownBlockSync.close();
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
getSyncStatus(): SyncingStatus {
|
|
89
|
-
const currentSlot = this.chain.clock.currentSlot;
|
|
90
|
-
const elOffline =
|
|
91
|
-
this.chain.executionEngine.state === ExecutionEngineState.OFFLINE ||
|
|
92
|
-
this.chain.executionEngine.state === ExecutionEngineState.AUTH_FAILED;
|
|
93
|
-
|
|
94
|
-
// If we are pre/at genesis, signal ready
|
|
95
|
-
if (currentSlot <= GENESIS_SLOT) {
|
|
96
|
-
return {
|
|
97
|
-
headSlot: 0,
|
|
98
|
-
syncDistance: 0,
|
|
99
|
-
isSyncing: false,
|
|
100
|
-
isOptimistic: false,
|
|
101
|
-
elOffline,
|
|
102
|
-
};
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
const head = this.chain.forkChoice.getHead();
|
|
106
|
-
|
|
107
|
-
switch (this.state) {
|
|
108
|
-
case SyncState.SyncingFinalized:
|
|
109
|
-
case SyncState.SyncingHead:
|
|
110
|
-
case SyncState.Stalled:
|
|
111
|
-
return {
|
|
112
|
-
headSlot: head.slot,
|
|
113
|
-
syncDistance: currentSlot - head.slot,
|
|
114
|
-
isSyncing: true,
|
|
115
|
-
isOptimistic: isOptimisticBlock(head),
|
|
116
|
-
elOffline,
|
|
117
|
-
};
|
|
118
|
-
case SyncState.Synced:
|
|
119
|
-
return {
|
|
120
|
-
headSlot: head.slot,
|
|
121
|
-
syncDistance: 0,
|
|
122
|
-
isSyncing: false,
|
|
123
|
-
isOptimistic: isOptimisticBlock(head),
|
|
124
|
-
elOffline,
|
|
125
|
-
};
|
|
126
|
-
default:
|
|
127
|
-
throw new Error("Node is stopped, cannot get sync status");
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
isSyncing(): boolean {
|
|
132
|
-
const state = this.state; // Don't run the getter twice
|
|
133
|
-
return state === SyncState.SyncingFinalized || state === SyncState.SyncingHead;
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
isSynced(): boolean {
|
|
137
|
-
return this.state === SyncState.Synced;
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
get state(): SyncState {
|
|
141
|
-
const currentSlot = this.chain.clock.currentSlot;
|
|
142
|
-
const headSlot = this.chain.forkChoice.getHead().slot;
|
|
143
|
-
|
|
144
|
-
if (
|
|
145
|
-
// Consider node synced IF
|
|
146
|
-
// Before genesis OR
|
|
147
|
-
(currentSlot < 0 ||
|
|
148
|
-
// head is behind clock but close enough with some tolerance
|
|
149
|
-
(headSlot <= currentSlot && headSlot >= currentSlot - this.slotImportTolerance)) &&
|
|
150
|
-
// Ensure there at least one connected peer to not claim synced if has no peers
|
|
151
|
-
// Allow to bypass this conditions for local networks with a single node
|
|
152
|
-
(this.opts.isSingleNode || this.network.getConnectedPeerCount() > 0)
|
|
153
|
-
// TODO: Consider enabling this condition (used in Lighthouse)
|
|
154
|
-
// && headSlot > 0
|
|
155
|
-
) {
|
|
156
|
-
return SyncState.Synced;
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
const rangeSyncState = this.rangeSync.state;
|
|
160
|
-
switch (rangeSyncState.status) {
|
|
161
|
-
case RangeSyncStatus.Finalized:
|
|
162
|
-
return SyncState.SyncingFinalized;
|
|
163
|
-
case RangeSyncStatus.Head:
|
|
164
|
-
return SyncState.SyncingHead;
|
|
165
|
-
case RangeSyncStatus.Idle:
|
|
166
|
-
return SyncState.Stalled;
|
|
167
|
-
default:
|
|
168
|
-
throw new Error("Unreachable code");
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
/** Full debug state for lodestar API */
|
|
173
|
-
getSyncChainsDebugState(): SyncChainDebugState[] {
|
|
174
|
-
return this.rangeSync.getSyncChainsDebugState();
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
/**
|
|
178
|
-
* A peer has connected which has blocks that are unknown to us.
|
|
179
|
-
*
|
|
180
|
-
* This function handles the logic associated with the connection of a new peer. If the peer
|
|
181
|
-
* is sufficiently ahead of our current head, a range-sync (batch) sync is started and
|
|
182
|
-
* batches of blocks are queued to download from the peer. Batched blocks begin at our latest
|
|
183
|
-
* finalized head.
|
|
184
|
-
*
|
|
185
|
-
* If the peer is within the `SLOT_IMPORT_TOLERANCE`, then it's head is sufficiently close to
|
|
186
|
-
* ours that we consider it fully sync'd with respect to our current chain.
|
|
187
|
-
*/
|
|
188
|
-
private addPeer = (data: NetworkEventData[NetworkEvent.peerConnected]): void => {
|
|
189
|
-
const localStatus = this.chain.getStatus();
|
|
190
|
-
const syncType = getPeerSyncType(localStatus, data.status, this.chain.forkChoice, this.slotImportTolerance);
|
|
191
|
-
|
|
192
|
-
// For metrics only
|
|
193
|
-
this.peerSyncType.set(data.peer, syncType);
|
|
194
|
-
|
|
195
|
-
if (syncType === PeerSyncType.Advanced) {
|
|
196
|
-
this.rangeSync.addPeer(data.peer, localStatus, data.status);
|
|
197
|
-
}
|
|
198
|
-
|
|
199
|
-
this.updateSyncState();
|
|
200
|
-
};
|
|
201
|
-
|
|
202
|
-
/**
|
|
203
|
-
* Must be called by libp2p when a peer is removed from the peer manager
|
|
204
|
-
*/
|
|
205
|
-
private removePeer = (data: NetworkEventData[NetworkEvent.peerDisconnected]): void => {
|
|
206
|
-
this.rangeSync.removePeer(data.peer);
|
|
207
|
-
|
|
208
|
-
this.peerSyncType.delete(data.peer.toString());
|
|
209
|
-
};
|
|
210
|
-
|
|
211
|
-
/**
|
|
212
|
-
* Run this function when the sync state can potentially change.
|
|
213
|
-
*/
|
|
214
|
-
private updateSyncState = (): void => {
|
|
215
|
-
const state = this.state; // Don't run the getter twice
|
|
216
|
-
|
|
217
|
-
// We have become synced, subscribe to all the gossip core topics
|
|
218
|
-
if (state === SyncState.Synced && this.chain.clock.currentEpoch >= MIN_EPOCH_TO_START_GOSSIP) {
|
|
219
|
-
if (!this.network.isSubscribedToGossipCoreTopics()) {
|
|
220
|
-
this.network
|
|
221
|
-
.subscribeGossipCoreTopics()
|
|
222
|
-
.then(() => {
|
|
223
|
-
this.metrics?.syncSwitchGossipSubscriptions.inc({action: "subscribed"});
|
|
224
|
-
this.logger.info("Subscribed gossip core topics");
|
|
225
|
-
})
|
|
226
|
-
.catch((e) => {
|
|
227
|
-
this.logger.error("Error subscribing to gossip core topics", {}, e);
|
|
228
|
-
});
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
// also start searching for unknown blocks
|
|
232
|
-
if (!this.unknownBlockSync.isSubscribedToNetwork()) {
|
|
233
|
-
this.unknownBlockSync.subscribeToNetwork();
|
|
234
|
-
this.metrics?.blockInputSync.switchNetworkSubscriptions.inc({action: "subscribed"});
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
// If we stopped being synced and fallen significantly behind, stop gossip
|
|
239
|
-
else if (state !== SyncState.Synced) {
|
|
240
|
-
const syncDiff = this.chain.clock.currentSlot - this.chain.forkChoice.getHead().slot;
|
|
241
|
-
if (syncDiff > this.slotImportTolerance * 2) {
|
|
242
|
-
if (this.network.isSubscribedToGossipCoreTopics()) {
|
|
243
|
-
this.logger.warn(`Node sync has fallen behind by ${syncDiff} slots`);
|
|
244
|
-
this.network
|
|
245
|
-
.unsubscribeGossipCoreTopics()
|
|
246
|
-
.then(() => {
|
|
247
|
-
this.metrics?.syncSwitchGossipSubscriptions.inc({action: "unsubscribed"});
|
|
248
|
-
this.logger.info("Un-subscribed gossip core topics");
|
|
249
|
-
})
|
|
250
|
-
.catch((e) => {
|
|
251
|
-
this.logger.error("Error unsubscribing to gossip core topics", {}, e);
|
|
252
|
-
});
|
|
253
|
-
}
|
|
254
|
-
|
|
255
|
-
// also stop searching for unknown blocks
|
|
256
|
-
if (this.unknownBlockSync.isSubscribedToNetwork()) {
|
|
257
|
-
this.unknownBlockSync.unsubscribeFromNetwork();
|
|
258
|
-
this.metrics?.blockInputSync.switchNetworkSubscriptions.inc({action: "unsubscribed"});
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
};
|
|
263
|
-
|
|
264
|
-
private onClockEpoch = (): void => {
|
|
265
|
-
// If a node witness the genesis event consider starting gossip
|
|
266
|
-
// Also, ensure that updateSyncState is run at least once per epoch.
|
|
267
|
-
// If the chain gets stuck or very overloaded it could helps to resolve the situation
|
|
268
|
-
// by realizing it's way behind and turning gossip off.
|
|
269
|
-
this.updateSyncState();
|
|
270
|
-
};
|
|
271
|
-
|
|
272
|
-
private scrapeMetrics(metrics: Metrics): void {
|
|
273
|
-
// Compute current sync state
|
|
274
|
-
metrics.syncStatus.set(syncStateMetric[this.state]);
|
|
275
|
-
|
|
276
|
-
// Count peers by syncType
|
|
277
|
-
const peerCountByType: Record<PeerSyncType, number> = {
|
|
278
|
-
[PeerSyncType.Advanced]: 0,
|
|
279
|
-
[PeerSyncType.FullySynced]: 0,
|
|
280
|
-
[PeerSyncType.Behind]: 0,
|
|
281
|
-
};
|
|
282
|
-
for (const syncType of this.peerSyncType.values()) {
|
|
283
|
-
peerCountByType[syncType]++;
|
|
284
|
-
}
|
|
285
|
-
|
|
286
|
-
for (const syncType of peerSyncTypes) {
|
|
287
|
-
metrics.syncPeersBySyncType.set({syncType}, peerCountByType[syncType]);
|
|
288
|
-
}
|
|
289
|
-
}
|
|
290
|
-
}
|
package/src/sync/types.ts
DELETED
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
import {RootHex, Slot} from "@lodestar/types";
|
|
2
|
-
import {IBlockInput} from "../chain/blocks/blockInput/index.js";
|
|
3
|
-
|
|
4
|
-
export enum PendingBlockType {
|
|
5
|
-
/**
|
|
6
|
-
* We got a block root (from a gossip attestation, for exxample) but we don't have the block in forkchoice.
|
|
7
|
-
*/
|
|
8
|
-
UNKNOWN_BLOCK_ROOT = "UnknownBlockRoot",
|
|
9
|
-
/**
|
|
10
|
-
* During gossip time, we may get a block but the parent root is unknown (not in forkchoice).
|
|
11
|
-
*/
|
|
12
|
-
UNKNOWN_PARENT = "unknown_parent",
|
|
13
|
-
/**
|
|
14
|
-
* During gossip we wait for a set amount of time to receive the complete block input but if it does not
|
|
15
|
-
* arrive in time we turn to req/resp to pull the remainder so that it can be processed
|
|
16
|
-
*/
|
|
17
|
-
INCOMPLETE_BLOCK_INPUT = "IncompleteBlockInput",
|
|
18
|
-
|
|
19
|
-
UNKNOWN_DATA = "unknown_data",
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
export enum PendingBlockInputStatus {
|
|
23
|
-
pending = "pending",
|
|
24
|
-
fetching = "fetching",
|
|
25
|
-
downloaded = "downloaded",
|
|
26
|
-
processing = "processing",
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
export type PendingBlockInput = {
|
|
30
|
-
status: PendingBlockInputStatus;
|
|
31
|
-
blockInput: IBlockInput;
|
|
32
|
-
timeAddedSec: number;
|
|
33
|
-
timeSyncedSec?: number;
|
|
34
|
-
peerIdStrings: Set<string>;
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
export type PendingRootHex = {
|
|
38
|
-
status: PendingBlockInputStatus.pending | PendingBlockInputStatus.fetching;
|
|
39
|
-
rootHex: RootHex;
|
|
40
|
-
// optional because we may not know the slot of parent_unknown event
|
|
41
|
-
slot?: Slot;
|
|
42
|
-
timeAddedSec: number;
|
|
43
|
-
timeSyncedSec?: number;
|
|
44
|
-
peerIdStrings: Set<string>;
|
|
45
|
-
};
|
|
46
|
-
|
|
47
|
-
export type BlockInputSyncCacheItem = PendingBlockInput | PendingRootHex;
|
|
48
|
-
|
|
49
|
-
export function isPendingBlockInput(pending: BlockInputSyncCacheItem): pending is PendingBlockInput {
|
|
50
|
-
return "blockInput" in pending;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
export function getBlockInputSyncCacheItemRootHex(block: BlockInputSyncCacheItem): RootHex {
|
|
54
|
-
return isPendingBlockInput(block) ? block.blockInput.blockRootHex : block.rootHex;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
export function getBlockInputSyncCacheItemSlot(block: BlockInputSyncCacheItem): Slot | string {
|
|
58
|
-
return isPendingBlockInput(block) ? block.blockInput.slot : "unknown";
|
|
59
|
-
}
|