@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
package/src/sync/range/range.ts
DELETED
|
@@ -1,354 +0,0 @@
|
|
|
1
|
-
import {EventEmitter} from "node:events";
|
|
2
|
-
import {StrictEventEmitter} from "strict-event-emitter-types";
|
|
3
|
-
import {BeaconConfig} from "@lodestar/config";
|
|
4
|
-
import {computeStartSlotAtEpoch} from "@lodestar/state-transition";
|
|
5
|
-
import {Epoch, Status, fulu} from "@lodestar/types";
|
|
6
|
-
import {Logger, toRootHex} from "@lodestar/utils";
|
|
7
|
-
import {IBlockInput} from "../../chain/blocks/blockInput/types.js";
|
|
8
|
-
import {AttestationImportOpt, ImportBlockOpts} from "../../chain/blocks/index.js";
|
|
9
|
-
import {IBeaconChain} from "../../chain/index.js";
|
|
10
|
-
import {Metrics} from "../../metrics/index.js";
|
|
11
|
-
import {INetwork} from "../../network/index.js";
|
|
12
|
-
import {PeerIdStr} from "../../util/peerId.js";
|
|
13
|
-
import {cacheByRangeResponses, downloadByRange} from "../utils/downloadByRange.js";
|
|
14
|
-
import {RangeSyncType, getRangeSyncTarget, rangeSyncTypes} from "../utils/remoteSyncType.js";
|
|
15
|
-
import {ChainTarget, SyncChain, SyncChainDebugState, SyncChainFns} from "./chain.js";
|
|
16
|
-
import {updateChains} from "./utils/index.js";
|
|
17
|
-
|
|
18
|
-
export enum RangeSyncEvent {
|
|
19
|
-
completedChain = "RangeSync-completedChain",
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
type RangeSyncEvents = {
|
|
23
|
-
[RangeSyncEvent.completedChain]: () => void;
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
type RangeSyncEmitter = StrictEventEmitter<EventEmitter, RangeSyncEvents>;
|
|
27
|
-
|
|
28
|
-
export enum RangeSyncStatus {
|
|
29
|
-
/** A finalized chain is being synced */
|
|
30
|
-
Finalized,
|
|
31
|
-
/** There are no finalized chains and we are syncing one more head chains */
|
|
32
|
-
Head,
|
|
33
|
-
/** There are no head or finalized chains and no long range sync is in progress */
|
|
34
|
-
Idle,
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
type RangeSyncState =
|
|
38
|
-
| {status: RangeSyncStatus.Finalized; target: ChainTarget}
|
|
39
|
-
| {status: RangeSyncStatus.Head; targets: ChainTarget[]}
|
|
40
|
-
| {status: RangeSyncStatus.Idle};
|
|
41
|
-
|
|
42
|
-
export type RangeSyncModules = {
|
|
43
|
-
chain: IBeaconChain;
|
|
44
|
-
network: INetwork;
|
|
45
|
-
metrics: Metrics | null;
|
|
46
|
-
config: BeaconConfig;
|
|
47
|
-
logger: Logger;
|
|
48
|
-
};
|
|
49
|
-
|
|
50
|
-
export type RangeSyncOpts = {
|
|
51
|
-
disableProcessAsChainSegment?: boolean;
|
|
52
|
-
};
|
|
53
|
-
|
|
54
|
-
/**
|
|
55
|
-
* RangeSync groups peers by their `status` into static target `SyncChain` instances
|
|
56
|
-
* Peers on each chain will be queried for batches until reaching their target.
|
|
57
|
-
*
|
|
58
|
-
* Not all SyncChain-s will sync at once, and are grouped by sync type:
|
|
59
|
-
* - Finalized Chain Sync
|
|
60
|
-
* - Head Chain Sync
|
|
61
|
-
*
|
|
62
|
-
* ### Finalized Chain Sync
|
|
63
|
-
*
|
|
64
|
-
* At least one peer's status finalized checkpoint is greater than ours. Then we'll form
|
|
65
|
-
* a chain starting from our finalized epoch and sync up to their finalized checkpoint.
|
|
66
|
-
* - Only one finalized chain can sync at a time
|
|
67
|
-
* - The finalized chain with the largest peer pool takes priority
|
|
68
|
-
* - As peers' status progresses we will switch to a SyncChain with a better target
|
|
69
|
-
*
|
|
70
|
-
* ### Head Chain Sync
|
|
71
|
-
*
|
|
72
|
-
* If no Finalized Chain Sync is active, and the peer's STATUS head is beyond
|
|
73
|
-
* `SLOT_IMPORT_TOLERANCE`, then we'll form a chain starting from our finalized epoch and sync
|
|
74
|
-
* up to their head.
|
|
75
|
-
* - More than one head chain can sync in parallel
|
|
76
|
-
* - If there are many head chains the ones with more peers take priority
|
|
77
|
-
*/
|
|
78
|
-
export class RangeSync extends (EventEmitter as {new (): RangeSyncEmitter}) {
|
|
79
|
-
private readonly chain: IBeaconChain;
|
|
80
|
-
private readonly network: INetwork;
|
|
81
|
-
private readonly metrics: Metrics | null;
|
|
82
|
-
private readonly config: BeaconConfig;
|
|
83
|
-
private readonly logger: Logger;
|
|
84
|
-
/** There is a single chain per type, 1 finalized sync, 1 head sync */
|
|
85
|
-
private readonly chains = new Map<RangeSyncType, SyncChain>();
|
|
86
|
-
|
|
87
|
-
private opts?: RangeSyncOpts;
|
|
88
|
-
|
|
89
|
-
constructor(modules: RangeSyncModules, opts?: RangeSyncOpts) {
|
|
90
|
-
super();
|
|
91
|
-
const {chain, network, metrics, config, logger} = modules;
|
|
92
|
-
this.chain = chain;
|
|
93
|
-
this.network = network;
|
|
94
|
-
this.metrics = metrics;
|
|
95
|
-
this.config = config;
|
|
96
|
-
this.logger = logger;
|
|
97
|
-
this.opts = opts;
|
|
98
|
-
|
|
99
|
-
if (metrics) {
|
|
100
|
-
metrics.syncStatus.addCollect(() => this.scrapeMetrics(metrics));
|
|
101
|
-
}
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
/** Throw / return all AsyncGenerators inside every SyncChain instance */
|
|
105
|
-
close(): void {
|
|
106
|
-
for (const chain of this.chains.values()) {
|
|
107
|
-
chain.remove();
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
/**
|
|
112
|
-
* A peer with a relevant STATUS message has been found, which also is advanced from us.
|
|
113
|
-
* Add this peer to an existing chain or create a new one. The update the chains status.
|
|
114
|
-
*/
|
|
115
|
-
addPeer(peerId: PeerIdStr, localStatus: Status, peerStatus: Status): void {
|
|
116
|
-
// Compute if we should do a Finalized or Head sync with this peer
|
|
117
|
-
const {syncType, startEpoch, target} = getRangeSyncTarget(localStatus, peerStatus, this.chain.forkChoice);
|
|
118
|
-
this.logger.debug("Sync peer joined", {
|
|
119
|
-
peer: peerId,
|
|
120
|
-
syncType,
|
|
121
|
-
startEpoch,
|
|
122
|
-
targetSlot: target.slot,
|
|
123
|
-
targetRoot: toRootHex(target.root),
|
|
124
|
-
earliestAvailableSlot: (peerStatus as fulu.Status).earliestAvailableSlot ?? Infinity,
|
|
125
|
-
});
|
|
126
|
-
|
|
127
|
-
// If the peer existed in any other chain, remove it.
|
|
128
|
-
// re-status'd peers can exist in multiple finalized chains, only one sync at a time
|
|
129
|
-
if (syncType === RangeSyncType.Head) {
|
|
130
|
-
this.removePeer(peerId);
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
this.addPeerOrCreateChain(startEpoch, target, peerId, syncType);
|
|
134
|
-
this.update(localStatus.finalizedEpoch);
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
/**
|
|
138
|
-
* Remove this peer from all head and finalized chains. A chain may become peer-empty and be dropped
|
|
139
|
-
*/
|
|
140
|
-
removePeer(peerId: PeerIdStr): void {
|
|
141
|
-
for (const syncChain of this.chains.values()) {
|
|
142
|
-
syncChain.removePeer(peerId);
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
/**
|
|
147
|
-
* Compute the current RangeSync state, not cached
|
|
148
|
-
*/
|
|
149
|
-
get state(): RangeSyncState {
|
|
150
|
-
const syncingHeadTargets: ChainTarget[] = [];
|
|
151
|
-
for (const chain of this.chains.values()) {
|
|
152
|
-
if (chain.isSyncing) {
|
|
153
|
-
if (chain.syncType === RangeSyncType.Finalized) {
|
|
154
|
-
return {status: RangeSyncStatus.Finalized, target: chain.target};
|
|
155
|
-
}
|
|
156
|
-
syncingHeadTargets.push(chain.target);
|
|
157
|
-
}
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
if (syncingHeadTargets.length > 0) {
|
|
161
|
-
return {status: RangeSyncStatus.Head, targets: syncingHeadTargets};
|
|
162
|
-
}
|
|
163
|
-
return {status: RangeSyncStatus.Idle};
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
/** Full debug state for lodestar API */
|
|
167
|
-
getSyncChainsDebugState(): SyncChainDebugState[] {
|
|
168
|
-
return Array.from(this.chains.values())
|
|
169
|
-
.map((syncChain) => syncChain.getDebugState())
|
|
170
|
-
.reverse(); // Newest additions first
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
/** Convenience method for `SyncChain` */
|
|
174
|
-
private processChainSegment: SyncChainFns["processChainSegment"] = async (blocks, syncType) => {
|
|
175
|
-
// Not trusted, verify signatures
|
|
176
|
-
const flags: ImportBlockOpts = {
|
|
177
|
-
// Only skip importing attestations for finalized sync. For head sync attestation are valuable.
|
|
178
|
-
// Importing attestations also triggers a head update, see https://github.com/ChainSafe/lodestar/issues/3804
|
|
179
|
-
// TODO: Review if this is okay, can we prevent some attacks by importing attestations?
|
|
180
|
-
importAttestations: syncType === RangeSyncType.Finalized ? AttestationImportOpt.Skip : undefined,
|
|
181
|
-
// Ignores ALREADY_KNOWN or GENESIS_BLOCK errors, and continues with the next block in chain segment
|
|
182
|
-
ignoreIfKnown: true,
|
|
183
|
-
// Ignore WOULD_REVERT_FINALIZED_SLOT error, continue with the next block in chain segment
|
|
184
|
-
ignoreIfFinalized: true,
|
|
185
|
-
// We won't attest to this block so it's okay to ignore a SYNCING message from execution layer
|
|
186
|
-
fromRangeSync: true,
|
|
187
|
-
// when this runs, syncing is the most important thing and gossip is not likely to run
|
|
188
|
-
// so we can utilize worker threads to verify signatures
|
|
189
|
-
blsVerifyOnMainThread: false,
|
|
190
|
-
// we want to be safe to only persist blocks after verifying it to avoid any attacks that may cause our DB
|
|
191
|
-
// to grow too much
|
|
192
|
-
eagerPersistBlock: false,
|
|
193
|
-
};
|
|
194
|
-
|
|
195
|
-
if (this.opts?.disableProcessAsChainSegment) {
|
|
196
|
-
// Should only be used for debugging or testing
|
|
197
|
-
for (const block of blocks) await this.chain.processBlock(block, flags);
|
|
198
|
-
} else {
|
|
199
|
-
await this.chain.processChainSegment(blocks, flags);
|
|
200
|
-
}
|
|
201
|
-
};
|
|
202
|
-
|
|
203
|
-
private downloadByRange: SyncChainFns["downloadByRange"] = async (peer, batch) => {
|
|
204
|
-
const batchBlocks = batch.getBlocks();
|
|
205
|
-
const {result, warnings} = await downloadByRange({
|
|
206
|
-
config: this.config,
|
|
207
|
-
network: this.network,
|
|
208
|
-
logger: this.logger,
|
|
209
|
-
peerIdStr: peer.peerId,
|
|
210
|
-
batchBlocks,
|
|
211
|
-
...batch.getRequestsForPeer(peer),
|
|
212
|
-
});
|
|
213
|
-
const cached = cacheByRangeResponses({
|
|
214
|
-
cache: this.chain.seenBlockInputCache,
|
|
215
|
-
peerIdStr: peer.peerId,
|
|
216
|
-
responses: result,
|
|
217
|
-
batchBlocks,
|
|
218
|
-
});
|
|
219
|
-
return {result: cached, warnings};
|
|
220
|
-
};
|
|
221
|
-
|
|
222
|
-
private pruneBlockInputs: SyncChainFns["pruneBlockInputs"] = (blocks: IBlockInput[]) => {
|
|
223
|
-
for (const block of blocks) {
|
|
224
|
-
this.chain.seenBlockInputCache.prune(block.blockRootHex);
|
|
225
|
-
}
|
|
226
|
-
};
|
|
227
|
-
|
|
228
|
-
/** Convenience method for `SyncChain` */
|
|
229
|
-
private reportPeer: SyncChainFns["reportPeer"] = (peer, action, actionName) => {
|
|
230
|
-
this.network.reportPeer(peer, action, actionName);
|
|
231
|
-
};
|
|
232
|
-
|
|
233
|
-
private getConnectedPeerSyncMeta: SyncChainFns["getConnectedPeerSyncMeta"] = (peerId) => {
|
|
234
|
-
return this.network.getConnectedPeerSyncMeta(peerId);
|
|
235
|
-
};
|
|
236
|
-
|
|
237
|
-
/** Convenience method for `SyncChain` */
|
|
238
|
-
private onSyncChainEnd: SyncChainFns["onEnd"] = (err, target) => {
|
|
239
|
-
this.update(this.chain.forkChoice.getFinalizedCheckpoint().epoch);
|
|
240
|
-
this.emit(RangeSyncEvent.completedChain);
|
|
241
|
-
|
|
242
|
-
if (err === null && target !== null) {
|
|
243
|
-
this.metrics?.syncRange.syncChainHighestTargetSlotCompleted.set(target.slot);
|
|
244
|
-
}
|
|
245
|
-
};
|
|
246
|
-
|
|
247
|
-
private addPeerOrCreateChain(startEpoch: Epoch, target: ChainTarget, peer: PeerIdStr, syncType: RangeSyncType): void {
|
|
248
|
-
let syncChain = this.chains.get(syncType);
|
|
249
|
-
if (!syncChain) {
|
|
250
|
-
syncChain = new SyncChain(
|
|
251
|
-
startEpoch,
|
|
252
|
-
target,
|
|
253
|
-
syncType,
|
|
254
|
-
{
|
|
255
|
-
processChainSegment: this.processChainSegment,
|
|
256
|
-
downloadByRange: this.downloadByRange,
|
|
257
|
-
reportPeer: this.reportPeer,
|
|
258
|
-
getConnectedPeerSyncMeta: this.getConnectedPeerSyncMeta,
|
|
259
|
-
pruneBlockInputs: this.pruneBlockInputs,
|
|
260
|
-
onEnd: this.onSyncChainEnd,
|
|
261
|
-
},
|
|
262
|
-
{
|
|
263
|
-
config: this.config,
|
|
264
|
-
clock: this.chain.clock,
|
|
265
|
-
logger: this.logger,
|
|
266
|
-
custodyConfig: this.chain.custodyConfig,
|
|
267
|
-
metrics: this.metrics,
|
|
268
|
-
}
|
|
269
|
-
);
|
|
270
|
-
this.chains.set(syncType, syncChain);
|
|
271
|
-
|
|
272
|
-
this.metrics?.syncRange.syncChainsEvents.inc({syncType: syncChain.syncType, event: "add"});
|
|
273
|
-
this.logger.debug("SyncChain added", {
|
|
274
|
-
syncType,
|
|
275
|
-
firstEpoch: syncChain.firstBatchEpoch,
|
|
276
|
-
targetSlot: syncChain.target.slot,
|
|
277
|
-
targetRoot: toRootHex(syncChain.target.root),
|
|
278
|
-
peer,
|
|
279
|
-
});
|
|
280
|
-
}
|
|
281
|
-
|
|
282
|
-
syncChain.addPeer(peer, target);
|
|
283
|
-
}
|
|
284
|
-
|
|
285
|
-
private update(localFinalizedEpoch: Epoch): void {
|
|
286
|
-
const localFinalizedSlot = computeStartSlotAtEpoch(localFinalizedEpoch);
|
|
287
|
-
|
|
288
|
-
// Remove chains that are out-dated, peer-empty, completed or failed
|
|
289
|
-
for (const [id, syncChain] of this.chains.entries()) {
|
|
290
|
-
// Checks if a Finalized or Head chain should be removed
|
|
291
|
-
if (
|
|
292
|
-
// Sync chain has completed syncing or encountered an error
|
|
293
|
-
syncChain.isRemovable ||
|
|
294
|
-
// Sync chain has no more peers to download from
|
|
295
|
-
syncChain.peers === 0 ||
|
|
296
|
-
// Outdated: our chain has progressed beyond this sync chain
|
|
297
|
-
syncChain.target.slot < localFinalizedSlot ||
|
|
298
|
-
this.chain.forkChoice.hasBlock(syncChain.target.root)
|
|
299
|
-
) {
|
|
300
|
-
syncChain.remove();
|
|
301
|
-
this.chains.delete(id);
|
|
302
|
-
|
|
303
|
-
this.metrics?.syncRange.syncChainsEvents.inc({syncType: syncChain.syncType, event: "remove"});
|
|
304
|
-
this.logger.debug("SyncChain removed", {
|
|
305
|
-
id: syncChain.logId,
|
|
306
|
-
localFinalizedSlot,
|
|
307
|
-
lastValidatedSlot: syncChain.lastValidatedSlot,
|
|
308
|
-
firstEpoch: syncChain.firstBatchEpoch,
|
|
309
|
-
targetSlot: syncChain.target.slot,
|
|
310
|
-
targetRoot: toRootHex(syncChain.target.root),
|
|
311
|
-
validatedEpochs: syncChain.validatedEpochs,
|
|
312
|
-
});
|
|
313
|
-
|
|
314
|
-
// Re-status peers from successful chain. Potentially trigger a Head sync
|
|
315
|
-
this.network
|
|
316
|
-
.reStatusPeers(syncChain.getPeers())
|
|
317
|
-
.catch((e) => this.logger.error("Error resyncing peers", {}, e));
|
|
318
|
-
}
|
|
319
|
-
}
|
|
320
|
-
|
|
321
|
-
const {toStop, toStart} = updateChains(Array.from(this.chains.values()));
|
|
322
|
-
|
|
323
|
-
for (const syncChain of toStop) {
|
|
324
|
-
syncChain.stopSyncing();
|
|
325
|
-
if (syncChain.isSyncing) {
|
|
326
|
-
this.metrics?.syncRange.syncChainsEvents.inc({syncType: syncChain.syncType, event: "stop"});
|
|
327
|
-
}
|
|
328
|
-
}
|
|
329
|
-
|
|
330
|
-
for (const syncChain of toStart) {
|
|
331
|
-
syncChain.startSyncing(localFinalizedEpoch);
|
|
332
|
-
if (!syncChain.isSyncing) {
|
|
333
|
-
this.metrics?.syncRange.syncChainsEvents.inc({syncType: syncChain.syncType, event: "start"});
|
|
334
|
-
}
|
|
335
|
-
}
|
|
336
|
-
}
|
|
337
|
-
|
|
338
|
-
private scrapeMetrics(metrics: Metrics): void {
|
|
339
|
-
metrics.syncRange.syncChainsPeers.reset();
|
|
340
|
-
const syncChainsByType: Record<RangeSyncType, number> = {
|
|
341
|
-
[RangeSyncType.Finalized]: 0,
|
|
342
|
-
[RangeSyncType.Head]: 0,
|
|
343
|
-
};
|
|
344
|
-
|
|
345
|
-
for (const chain of this.chains.values()) {
|
|
346
|
-
metrics.syncRange.syncChainsPeers.observe({syncType: chain.syncType}, chain.peers);
|
|
347
|
-
syncChainsByType[chain.syncType]++;
|
|
348
|
-
}
|
|
349
|
-
|
|
350
|
-
for (const syncType of rangeSyncTypes) {
|
|
351
|
-
metrics.syncRange.syncChains.set({syncType}, syncChainsByType[syncType]);
|
|
352
|
-
}
|
|
353
|
-
}
|
|
354
|
-
}
|
|
@@ -1,119 +0,0 @@
|
|
|
1
|
-
import {SLOTS_PER_EPOCH} from "@lodestar/params";
|
|
2
|
-
import {computeStartSlotAtEpoch} from "@lodestar/state-transition";
|
|
3
|
-
import {Epoch, Slot} from "@lodestar/types";
|
|
4
|
-
import {BATCH_SLOT_OFFSET, EPOCHS_PER_BATCH} from "../../constants.js";
|
|
5
|
-
import {Batch, BatchStatus} from "../batch.js";
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Validates that the status and ordering of batches is valid
|
|
9
|
-
* ```
|
|
10
|
-
* [AwaitingValidation]* [Processing]? [AwaitingDownload,Downloading,AwaitingProcessing]*
|
|
11
|
-
* ```
|
|
12
|
-
*/
|
|
13
|
-
export function validateBatchesStatus(batches: Batch[]): void {
|
|
14
|
-
let processing = 0;
|
|
15
|
-
let preProcessing = 0;
|
|
16
|
-
for (const batch of batches) {
|
|
17
|
-
const status = batch.state.status;
|
|
18
|
-
switch (status) {
|
|
19
|
-
case BatchStatus.AwaitingValidation:
|
|
20
|
-
if (processing > 0) throw Error("AwaitingValidation state found after Processing");
|
|
21
|
-
if (preProcessing > 0) throw Error("AwaitingValidation state found after PreProcessing");
|
|
22
|
-
break;
|
|
23
|
-
|
|
24
|
-
case BatchStatus.Processing:
|
|
25
|
-
if (preProcessing > 0) throw Error("Processing state found after PreProcessing");
|
|
26
|
-
if (processing > 0) throw Error("More than one Processing state found");
|
|
27
|
-
processing++;
|
|
28
|
-
break;
|
|
29
|
-
|
|
30
|
-
case BatchStatus.AwaitingDownload:
|
|
31
|
-
case BatchStatus.Downloading:
|
|
32
|
-
case BatchStatus.AwaitingProcessing:
|
|
33
|
-
preProcessing++;
|
|
34
|
-
break;
|
|
35
|
-
|
|
36
|
-
default:
|
|
37
|
-
throw Error(`Unknown status: ${status}`);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* Return the next batch to process if any.
|
|
44
|
-
* @see validateBatchesStatus for batches state description
|
|
45
|
-
*/
|
|
46
|
-
export function getNextBatchToProcess(batches: Batch[]): Batch | null {
|
|
47
|
-
for (const batch of batches) {
|
|
48
|
-
switch (batch.state.status) {
|
|
49
|
-
// If an AwaitingProcessing batch exists it can only be preceeded by AwaitingValidation
|
|
50
|
-
case BatchStatus.AwaitingValidation:
|
|
51
|
-
break;
|
|
52
|
-
|
|
53
|
-
case BatchStatus.AwaitingProcessing:
|
|
54
|
-
return batch;
|
|
55
|
-
|
|
56
|
-
// There MUST be no AwaitingProcessing state after AwaitingDownload, Downloading, Processing
|
|
57
|
-
case BatchStatus.AwaitingDownload:
|
|
58
|
-
case BatchStatus.Downloading:
|
|
59
|
-
case BatchStatus.Processing:
|
|
60
|
-
return null;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
// Exhausted batches
|
|
64
|
-
return null;
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* Compute the startEpoch of the next batch to be downloaded
|
|
69
|
-
*/
|
|
70
|
-
export function toBeDownloadedStartEpoch(batches: Batch[], startEpoch: Epoch): Epoch {
|
|
71
|
-
// Note: batches are inserted in ascending `startEpoch` order
|
|
72
|
-
const lastBatch = batches.at(-1);
|
|
73
|
-
return lastBatch ? lastBatch.startEpoch + EPOCHS_PER_BATCH : startEpoch;
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
export function toArr<K, V>(map: Map<K, V>): V[] {
|
|
77
|
-
return Array.from(map.values());
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
export function getBatchSlotRange(startEpoch: Epoch): {startSlot: number; count: number} {
|
|
81
|
-
return {
|
|
82
|
-
startSlot: computeStartSlotAtEpoch(startEpoch) + BATCH_SLOT_OFFSET,
|
|
83
|
-
count: EPOCHS_PER_BATCH * SLOTS_PER_EPOCH,
|
|
84
|
-
};
|
|
85
|
-
}
|
|
86
|
-
|
|
87
|
-
/**
|
|
88
|
-
* Given a batch's startEpoch, return true if batch does not include slot and is strictly after
|
|
89
|
-
* ```
|
|
90
|
-
* Batch1 Batch2 Batch3
|
|
91
|
-
* ----|--------|-----X--|--------|---
|
|
92
|
-
* ```
|
|
93
|
-
* - Batch1 = not includes and before = false
|
|
94
|
-
* - Batch2 = includes = false
|
|
95
|
-
* - Batch3 = not includes and after = true
|
|
96
|
-
*/
|
|
97
|
-
export function batchStartEpochIsAfterSlot(startEpoch: Epoch, targetSlot: Slot): boolean {
|
|
98
|
-
// The range of slots (inclusive) downloaded by a batch
|
|
99
|
-
const {startSlot} = getBatchSlotRange(startEpoch);
|
|
100
|
-
|
|
101
|
-
return startSlot > targetSlot;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
/**
|
|
105
|
-
* Returns true if SyncChain has processed all possible blocks with slot <= target.slot
|
|
106
|
-
*/
|
|
107
|
-
export function isSyncChainDone(batches: Batch[], lastEpochWithProcessBlocks: Epoch, targetSlot: Slot): boolean {
|
|
108
|
-
// In case of full epochs of skipped slots, lastEpochWithProcessBlocks won't be updated.
|
|
109
|
-
// In that case it is assumed that the batches are valid only to be able to mark this SyncChain as done
|
|
110
|
-
const lastAwaitingValidation = batches
|
|
111
|
-
.reverse()
|
|
112
|
-
.find((batch) => batch.state.status === BatchStatus.AwaitingValidation);
|
|
113
|
-
|
|
114
|
-
if (lastAwaitingValidation) {
|
|
115
|
-
return batchStartEpochIsAfterSlot(lastAwaitingValidation.startEpoch + EPOCHS_PER_BATCH, targetSlot);
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
return batchStartEpochIsAfterSlot(lastEpochWithProcessBlocks, targetSlot);
|
|
119
|
-
}
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import {Root, Slot} from "@lodestar/types";
|
|
2
|
-
import {toRootHex} from "@lodestar/utils";
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* Sync this up to this target. Uses slot instead of epoch to re-use logic for finalized sync
|
|
6
|
-
* and head sync. The root is used to uniquely identify this chain on different forks
|
|
7
|
-
*/
|
|
8
|
-
export type ChainTarget = {
|
|
9
|
-
slot: Slot;
|
|
10
|
-
root: Root;
|
|
11
|
-
};
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Previously we use computeMostCommonTarget to compute the target for a chain.
|
|
15
|
-
* Starting from fulu, we use computeHighestTarget to compute the target for a chain.
|
|
16
|
-
*/
|
|
17
|
-
export function computeHighestTarget(targets: ChainTarget[]): ChainTarget {
|
|
18
|
-
if (targets.length === 0) {
|
|
19
|
-
throw Error("Must provide at least one target");
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
let highestSlot = -1;
|
|
23
|
-
let highestTargets: ChainTarget[] = [];
|
|
24
|
-
for (const target of targets) {
|
|
25
|
-
if (target.slot > highestSlot) {
|
|
26
|
-
highestSlot = target.slot;
|
|
27
|
-
highestTargets = [target];
|
|
28
|
-
} else if (target.slot === highestSlot) {
|
|
29
|
-
highestTargets.push(target);
|
|
30
|
-
}
|
|
31
|
-
// ignore if target.slot < highestSlot
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
if (highestTargets.length === 1) {
|
|
35
|
-
return highestTargets[0];
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
return computeMostCommonTarget(highestTargets);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
function computeMostCommonTarget(targets: ChainTarget[]): ChainTarget {
|
|
42
|
-
if (targets.length === 0) {
|
|
43
|
-
throw Error("Must provide at least one target");
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
const countById = new Map<string, number>();
|
|
47
|
-
|
|
48
|
-
let mostCommonTarget = targets[0];
|
|
49
|
-
let mostCommonCount = 0;
|
|
50
|
-
|
|
51
|
-
for (const target of targets) {
|
|
52
|
-
const targetId = `${target.slot}-${toRootHex(target.root)}`;
|
|
53
|
-
const count = 1 + (countById.get(targetId) ?? 0);
|
|
54
|
-
countById.set(targetId, count);
|
|
55
|
-
if (count > mostCommonCount) {
|
|
56
|
-
mostCommonCount = count;
|
|
57
|
-
mostCommonTarget = target;
|
|
58
|
-
}
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
return mostCommonTarget;
|
|
62
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import {ChainForkConfig} from "@lodestar/config";
|
|
2
|
-
import {RootHex, SignedBeaconBlock} from "@lodestar/types";
|
|
3
|
-
import {toRootHex} from "@lodestar/utils";
|
|
4
|
-
import {IBlockInput} from "../../../chain/blocks/blockInput/types.js";
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* String to uniquely identify block segments. Used for peer scoring and to compare if batches are equivalent.
|
|
8
|
-
*/
|
|
9
|
-
export function hashBlocks(blocks: IBlockInput[], config: ChainForkConfig): RootHex {
|
|
10
|
-
switch (blocks.length) {
|
|
11
|
-
case 0:
|
|
12
|
-
return "0x";
|
|
13
|
-
case 1: {
|
|
14
|
-
const block0 = blocks[0].getBlock();
|
|
15
|
-
return toRootHex(config.getForkTypes(block0.message.slot).SignedBeaconBlock.hashTreeRoot(block0));
|
|
16
|
-
}
|
|
17
|
-
default: {
|
|
18
|
-
const block0 = blocks[0].getBlock();
|
|
19
|
-
const blockN = blocks.at(-1)?.getBlock() as SignedBeaconBlock;
|
|
20
|
-
return (
|
|
21
|
-
// TODO(fulu): should we be doing checks for presence to make sure these do not blow up?
|
|
22
|
-
toRootHex(config.getForkTypes(block0.message.slot).SignedBeaconBlock.hashTreeRoot(block0)) +
|
|
23
|
-
toRootHex(config.getForkTypes(blockN.message.slot).SignedBeaconBlock.hashTreeRoot(blockN))
|
|
24
|
-
);
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
}
|