@lodestar/beacon-node 1.35.0-dev.fcf8d024ea → 1.35.0-dev.feed916580
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/api/impl/config/constants.d.ts +0 -5
- package/lib/api/impl/config/constants.js +1 -6
- package/lib/api/impl/config/constants.js.map +1 -1
- package/lib/api/impl/validator/index.js +3 -5
- package/lib/api/impl/validator/index.js.map +1 -1
- package/lib/chain/archiveStore/historicalState/historicalStateRegen.js +0 -1
- package/lib/chain/archiveStore/historicalState/historicalStateRegen.js.map +1 -1
- package/lib/chain/archiveStore/historicalState/worker.js +1 -1
- package/lib/chain/archiveStore/historicalState/worker.js.map +1 -1
- package/lib/chain/blocks/blockInput/blockInput.js +1 -1
- package/lib/chain/blocks/blockInput/blockInput.js.map +1 -1
- package/lib/chain/blocks/importBlock.js +3 -4
- package/lib/chain/blocks/importBlock.js.map +1 -1
- package/lib/chain/blocks/verifyBlocksDataAvailability.js +1 -8
- package/lib/chain/blocks/verifyBlocksDataAvailability.js.map +1 -1
- package/lib/chain/blocks/writeBlockInputToDb.js +7 -1
- package/lib/chain/blocks/writeBlockInputToDb.js.map +1 -1
- package/lib/chain/bls/multithread/index.js +0 -1
- package/lib/chain/bls/multithread/index.js.map +1 -1
- package/lib/chain/chain.js +3 -2
- package/lib/chain/chain.js.map +1 -1
- package/lib/chain/emitter.d.ts +2 -2
- package/lib/chain/opPools/attestationPool.d.ts +3 -2
- package/lib/chain/opPools/attestationPool.js +5 -3
- package/lib/chain/opPools/attestationPool.js.map +1 -1
- package/lib/chain/opPools/syncCommitteeMessagePool.d.ts +2 -3
- package/lib/chain/opPools/syncCommitteeMessagePool.js +5 -6
- package/lib/chain/opPools/syncCommitteeMessagePool.js.map +1 -1
- package/lib/chain/opPools/types.d.ts +1 -1
- package/lib/chain/opPools/types.js +1 -1
- package/lib/chain/opPools/types.js.map +1 -1
- package/lib/chain/prepareNextSlot.d.ts +3 -3
- package/lib/chain/prepareNextSlot.js +8 -8
- package/lib/chain/prepareNextSlot.js.map +1 -1
- package/lib/chain/stateCache/persistentCheckpointsCache.js +8 -9
- package/lib/chain/stateCache/persistentCheckpointsCache.js.map +1 -1
- package/lib/chain/validation/lightClientFinalityUpdate.js +3 -4
- package/lib/chain/validation/lightClientFinalityUpdate.js.map +1 -1
- package/lib/chain/validation/lightClientOptimisticUpdate.d.ts +4 -6
- package/lib/chain/validation/lightClientOptimisticUpdate.js +11 -11
- package/lib/chain/validation/lightClientOptimisticUpdate.js.map +1 -1
- package/lib/chain/validatorMonitor.js +14 -20
- package/lib/chain/validatorMonitor.js.map +1 -1
- package/lib/db/buckets.d.ts +4 -4
- package/lib/db/buckets.js +4 -4
- package/lib/db/buckets.js.map +1 -1
- package/lib/db/repositories/blobSidecars.js +1 -1
- package/lib/db/repositories/blobSidecars.js.map +1 -1
- package/lib/db/repositories/blobSidecarsArchive.js +1 -1
- package/lib/db/repositories/blobSidecarsArchive.js.map +1 -1
- package/lib/db/repositories/blockArchiveIndex.d.ts +2 -2
- package/lib/db/repositories/dataColumnSidecar.js +1 -1
- package/lib/db/repositories/dataColumnSidecar.js.map +1 -1
- package/lib/db/repositories/dataColumnSidecarArchive.js +1 -1
- package/lib/db/repositories/dataColumnSidecarArchive.js.map +1 -1
- package/lib/metrics/metrics/lodestar.d.ts +1 -1
- package/lib/metrics/metrics/lodestar.js +3 -3
- package/lib/metrics/metrics/lodestar.js.map +1 -1
- package/lib/network/core/networkCoreWorkerHandler.js +3 -9
- package/lib/network/core/networkCoreWorkerHandler.js.map +1 -1
- package/lib/network/discv5/index.js +1 -4
- package/lib/network/discv5/index.js.map +1 -1
- package/lib/network/gossip/gossipsub.d.ts +0 -1
- package/lib/network/gossip/gossipsub.js +16 -35
- package/lib/network/gossip/gossipsub.js.map +1 -1
- package/lib/network/gossip/metrics.d.ts +7 -15
- package/lib/network/gossip/metrics.js +6 -16
- package/lib/network/gossip/metrics.js.map +1 -1
- package/lib/network/libp2p/index.js +1 -9
- package/lib/network/libp2p/index.js.map +1 -1
- package/lib/network/metadata.js +1 -2
- package/lib/network/metadata.js.map +1 -1
- package/lib/network/network.d.ts +1 -1
- package/lib/network/network.js +13 -11
- package/lib/network/network.js.map +1 -1
- package/lib/network/peers/datastore.d.ts +2 -2
- package/lib/network/peers/datastore.js +2 -2
- package/lib/network/peers/datastore.js.map +1 -1
- package/lib/network/processor/index.d.ts +1 -1
- package/lib/network/processor/index.js +3 -2
- package/lib/network/processor/index.js.map +1 -1
- package/lib/sync/types.d.ts +1 -0
- package/lib/sync/types.js.map +1 -1
- package/lib/sync/unknownBlock.d.ts +1 -0
- package/lib/sync/unknownBlock.js +19 -17
- package/lib/sync/unknownBlock.js.map +1 -1
- package/lib/sync/utils/downloadByRoot.d.ts +1 -3
- package/lib/sync/utils/downloadByRoot.js +9 -36
- package/lib/sync/utils/downloadByRoot.js.map +1 -1
- package/lib/util/blobs.js +3 -5
- package/lib/util/blobs.js.map +1 -1
- package/lib/util/clock.d.ts +0 -5
- package/lib/util/clock.js +0 -3
- package/lib/util/clock.js.map +1 -1
- package/lib/util/dataColumns.js +1 -1
- package/lib/util/dataColumns.js.map +1 -1
- package/lib/util/execution.js +2 -19
- package/lib/util/execution.js.map +1 -1
- package/package.json +22 -32
- package/lib/api/impl/api.d.ts.map +0 -1
- package/lib/api/impl/beacon/blocks/index.d.ts.map +0 -1
- package/lib/api/impl/beacon/blocks/utils.d.ts.map +0 -1
- package/lib/api/impl/beacon/index.d.ts.map +0 -1
- package/lib/api/impl/beacon/pool/index.d.ts.map +0 -1
- package/lib/api/impl/beacon/rewards/index.d.ts.map +0 -1
- package/lib/api/impl/beacon/state/index.d.ts.map +0 -1
- package/lib/api/impl/beacon/state/utils.d.ts.map +0 -1
- package/lib/api/impl/config/constants.d.ts.map +0 -1
- package/lib/api/impl/config/index.d.ts.map +0 -1
- package/lib/api/impl/debug/index.d.ts.map +0 -1
- package/lib/api/impl/errors.d.ts.map +0 -1
- package/lib/api/impl/events/index.d.ts.map +0 -1
- package/lib/api/impl/index.d.ts.map +0 -1
- package/lib/api/impl/lightclient/index.d.ts.map +0 -1
- package/lib/api/impl/lodestar/index.d.ts.map +0 -1
- package/lib/api/impl/node/index.d.ts.map +0 -1
- package/lib/api/impl/node/utils.d.ts.map +0 -1
- package/lib/api/impl/proof/index.d.ts.map +0 -1
- package/lib/api/impl/types.d.ts.map +0 -1
- package/lib/api/impl/utils.d.ts.map +0 -1
- package/lib/api/impl/validator/index.d.ts.map +0 -1
- package/lib/api/impl/validator/utils.d.ts.map +0 -1
- package/lib/api/index.d.ts.map +0 -1
- package/lib/api/options.d.ts.map +0 -1
- package/lib/api/rest/activeSockets.d.ts.map +0 -1
- package/lib/api/rest/base.d.ts.map +0 -1
- package/lib/api/rest/index.d.ts.map +0 -1
- package/lib/api/rest/swaggerUI.d.ts.map +0 -1
- package/lib/bun-wrappers/prometheus-gc-stats.d.ts.map +0 -1
- package/lib/chain/ColumnReconstructionTracker.d.ts.map +0 -1
- package/lib/chain/GetBlobsTracker.d.ts.map +0 -1
- package/lib/chain/archiveStore/archiveStore.d.ts.map +0 -1
- package/lib/chain/archiveStore/constants.d.ts.map +0 -1
- package/lib/chain/archiveStore/historicalState/getHistoricalState.d.ts.map +0 -1
- package/lib/chain/archiveStore/historicalState/historicalStateRegen.d.ts.map +0 -1
- package/lib/chain/archiveStore/historicalState/metrics.d.ts.map +0 -1
- package/lib/chain/archiveStore/historicalState/types.d.ts.map +0 -1
- package/lib/chain/archiveStore/historicalState/worker.d.ts.map +0 -1
- package/lib/chain/archiveStore/index.d.ts.map +0 -1
- package/lib/chain/archiveStore/interface.d.ts.map +0 -1
- package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.d.ts.map +0 -1
- package/lib/chain/archiveStore/utils/archiveBlocks.d.ts.map +0 -1
- package/lib/chain/archiveStore/utils/pruneHistory.d.ts.map +0 -1
- package/lib/chain/archiveStore/utils/updateBackfillRange.d.ts.map +0 -1
- package/lib/chain/balancesCache.d.ts.map +0 -1
- package/lib/chain/beaconProposerCache.d.ts.map +0 -1
- package/lib/chain/blocks/blockInput/blockInput.d.ts.map +0 -1
- package/lib/chain/blocks/blockInput/errors.d.ts.map +0 -1
- package/lib/chain/blocks/blockInput/index.d.ts.map +0 -1
- package/lib/chain/blocks/blockInput/types.d.ts.map +0 -1
- package/lib/chain/blocks/blockInput/utils.d.ts.map +0 -1
- package/lib/chain/blocks/importBlock.d.ts.map +0 -1
- package/lib/chain/blocks/index.d.ts.map +0 -1
- package/lib/chain/blocks/types.d.ts.map +0 -1
- package/lib/chain/blocks/utils/blowfishBanner.d.ts.map +0 -1
- package/lib/chain/blocks/utils/chainSegment.d.ts.map +0 -1
- package/lib/chain/blocks/utils/checkpoint.d.ts.map +0 -1
- package/lib/chain/blocks/utils/giraffeBanner.d.ts.map +0 -1
- package/lib/chain/blocks/utils/ownBanner.d.ts.map +0 -1
- package/lib/chain/blocks/utils/pandaMergeTransitionBanner.d.ts.map +0 -1
- package/lib/chain/blocks/utils/zebraBanner.d.ts.map +0 -1
- package/lib/chain/blocks/verifyBlock.d.ts.map +0 -1
- package/lib/chain/blocks/verifyBlocksDataAvailability.d.ts.map +0 -1
- package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts.map +0 -1
- package/lib/chain/blocks/verifyBlocksSanityChecks.d.ts.map +0 -1
- package/lib/chain/blocks/verifyBlocksSignatures.d.ts.map +0 -1
- package/lib/chain/blocks/verifyBlocksStateTransitionOnly.d.ts.map +0 -1
- package/lib/chain/blocks/writeBlockInputToDb.d.ts.map +0 -1
- package/lib/chain/bls/index.d.ts.map +0 -1
- package/lib/chain/bls/interface.d.ts.map +0 -1
- package/lib/chain/bls/maybeBatch.d.ts.map +0 -1
- package/lib/chain/bls/multithread/index.d.ts.map +0 -1
- package/lib/chain/bls/multithread/jobItem.d.ts.map +0 -1
- package/lib/chain/bls/multithread/poolSize.d.ts.map +0 -1
- package/lib/chain/bls/multithread/types.d.ts.map +0 -1
- package/lib/chain/bls/multithread/utils.d.ts.map +0 -1
- package/lib/chain/bls/multithread/worker.d.ts.map +0 -1
- package/lib/chain/bls/singleThread.d.ts.map +0 -1
- package/lib/chain/bls/utils.d.ts.map +0 -1
- package/lib/chain/chain.d.ts.map +0 -1
- package/lib/chain/emitter.d.ts.map +0 -1
- package/lib/chain/errors/attestationError.d.ts.map +0 -1
- package/lib/chain/errors/attesterSlashingError.d.ts.map +0 -1
- package/lib/chain/errors/blobSidecarError.d.ts.map +0 -1
- package/lib/chain/errors/blockError.d.ts.map +0 -1
- package/lib/chain/errors/blsToExecutionChangeError.d.ts.map +0 -1
- package/lib/chain/errors/dataColumnSidecarError.d.ts.map +0 -1
- package/lib/chain/errors/gossipValidation.d.ts.map +0 -1
- package/lib/chain/errors/index.d.ts.map +0 -1
- package/lib/chain/errors/lightClientError.d.ts.map +0 -1
- package/lib/chain/errors/proposerSlashingError.d.ts.map +0 -1
- package/lib/chain/errors/syncCommitteeError.d.ts.map +0 -1
- package/lib/chain/errors/voluntaryExitError.d.ts.map +0 -1
- package/lib/chain/forkChoice/index.d.ts.map +0 -1
- package/lib/chain/genesis/genesis.d.ts.map +0 -1
- package/lib/chain/genesis/interface.d.ts.map +0 -1
- package/lib/chain/index.d.ts.map +0 -1
- package/lib/chain/initState.d.ts.map +0 -1
- package/lib/chain/interface.d.ts.map +0 -1
- package/lib/chain/lightClient/index.d.ts.map +0 -1
- package/lib/chain/lightClient/proofs.d.ts.map +0 -1
- package/lib/chain/lightClient/types.d.ts.map +0 -1
- package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +0 -1
- package/lib/chain/opPools/attestationPool.d.ts.map +0 -1
- package/lib/chain/opPools/index.d.ts.map +0 -1
- package/lib/chain/opPools/opPool.d.ts.map +0 -1
- package/lib/chain/opPools/syncCommitteeMessagePool.d.ts.map +0 -1
- package/lib/chain/opPools/syncContributionAndProofPool.d.ts.map +0 -1
- package/lib/chain/opPools/types.d.ts.map +0 -1
- package/lib/chain/opPools/utils.d.ts.map +0 -1
- package/lib/chain/options.d.ts.map +0 -1
- package/lib/chain/prepareNextSlot.d.ts.map +0 -1
- package/lib/chain/produceBlock/computeNewStateRoot.d.ts.map +0 -1
- package/lib/chain/produceBlock/index.d.ts.map +0 -1
- package/lib/chain/produceBlock/produceBlockBody.d.ts.map +0 -1
- package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.d.ts.map +0 -1
- package/lib/chain/regen/errors.d.ts.map +0 -1
- package/lib/chain/regen/index.d.ts.map +0 -1
- package/lib/chain/regen/interface.d.ts.map +0 -1
- package/lib/chain/regen/queued.d.ts.map +0 -1
- package/lib/chain/regen/regen.d.ts.map +0 -1
- package/lib/chain/reprocess.d.ts.map +0 -1
- package/lib/chain/rewards/attestationsRewards.d.ts.map +0 -1
- package/lib/chain/rewards/blockRewards.d.ts.map +0 -1
- package/lib/chain/rewards/syncCommitteeRewards.d.ts.map +0 -1
- package/lib/chain/seenCache/index.d.ts.map +0 -1
- package/lib/chain/seenCache/seenAggregateAndProof.d.ts.map +0 -1
- package/lib/chain/seenCache/seenAttestationData.d.ts.map +0 -1
- package/lib/chain/seenCache/seenAttesters.d.ts.map +0 -1
- package/lib/chain/seenCache/seenBlockAttesters.d.ts.map +0 -1
- package/lib/chain/seenCache/seenBlockProposers.d.ts.map +0 -1
- package/lib/chain/seenCache/seenCommittee.d.ts.map +0 -1
- package/lib/chain/seenCache/seenCommitteeContribution.d.ts.map +0 -1
- package/lib/chain/seenCache/seenGossipBlockInput.d.ts.map +0 -1
- package/lib/chain/serializeState.d.ts.map +0 -1
- package/lib/chain/shufflingCache.d.ts.map +0 -1
- package/lib/chain/stateCache/blockStateCacheImpl.d.ts.map +0 -1
- package/lib/chain/stateCache/datastore/db.d.ts.map +0 -1
- package/lib/chain/stateCache/datastore/file.d.ts.map +0 -1
- package/lib/chain/stateCache/datastore/index.d.ts.map +0 -1
- package/lib/chain/stateCache/datastore/types.d.ts.map +0 -1
- package/lib/chain/stateCache/fifoBlockStateCache.d.ts.map +0 -1
- package/lib/chain/stateCache/inMemoryCheckpointsCache.d.ts.map +0 -1
- package/lib/chain/stateCache/index.d.ts.map +0 -1
- package/lib/chain/stateCache/mapMetrics.d.ts.map +0 -1
- package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +0 -1
- package/lib/chain/stateCache/types.d.ts.map +0 -1
- package/lib/chain/validation/aggregateAndProof.d.ts.map +0 -1
- package/lib/chain/validation/attestation.d.ts.map +0 -1
- package/lib/chain/validation/attesterSlashing.d.ts.map +0 -1
- package/lib/chain/validation/blobSidecar.d.ts.map +0 -1
- package/lib/chain/validation/block.d.ts.map +0 -1
- package/lib/chain/validation/blsToExecutionChange.d.ts.map +0 -1
- package/lib/chain/validation/dataColumnSidecar.d.ts.map +0 -1
- package/lib/chain/validation/index.d.ts.map +0 -1
- package/lib/chain/validation/lightClientFinalityUpdate.d.ts.map +0 -1
- package/lib/chain/validation/lightClientOptimisticUpdate.d.ts.map +0 -1
- package/lib/chain/validation/proposerSlashing.d.ts.map +0 -1
- package/lib/chain/validation/signatureSets/aggregateAndProof.d.ts.map +0 -1
- package/lib/chain/validation/signatureSets/contributionAndProof.d.ts.map +0 -1
- package/lib/chain/validation/signatureSets/index.d.ts.map +0 -1
- package/lib/chain/validation/signatureSets/selectionProof.d.ts.map +0 -1
- package/lib/chain/validation/signatureSets/syncCommittee.d.ts.map +0 -1
- package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts.map +0 -1
- package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts.map +0 -1
- package/lib/chain/validation/syncCommittee.d.ts.map +0 -1
- package/lib/chain/validation/syncCommitteeContributionAndProof.d.ts.map +0 -1
- package/lib/chain/validation/voluntaryExit.d.ts.map +0 -1
- package/lib/chain/validatorMonitor.d.ts.map +0 -1
- package/lib/constants/constants.d.ts.map +0 -1
- package/lib/constants/index.d.ts.map +0 -1
- package/lib/constants/network.d.ts.map +0 -1
- package/lib/db/beacon.d.ts.map +0 -1
- package/lib/db/buckets.d.ts.map +0 -1
- package/lib/db/index.d.ts.map +0 -1
- package/lib/db/interface.d.ts.map +0 -1
- package/lib/db/options.d.ts.map +0 -1
- package/lib/db/repositories/attesterSlashing.d.ts.map +0 -1
- package/lib/db/repositories/backfilledRanges.d.ts.map +0 -1
- package/lib/db/repositories/blobSidecars.d.ts.map +0 -1
- package/lib/db/repositories/blobSidecarsArchive.d.ts.map +0 -1
- package/lib/db/repositories/block.d.ts.map +0 -1
- package/lib/db/repositories/blockArchive.d.ts.map +0 -1
- package/lib/db/repositories/blockArchiveIndex.d.ts.map +0 -1
- package/lib/db/repositories/blsToExecutionChange.d.ts.map +0 -1
- package/lib/db/repositories/checkpointState.d.ts.map +0 -1
- package/lib/db/repositories/dataColumnSidecar.d.ts.map +0 -1
- package/lib/db/repositories/dataColumnSidecarArchive.d.ts.map +0 -1
- package/lib/db/repositories/depositDataRoot.d.ts.map +0 -1
- package/lib/db/repositories/depositEvent.d.ts.map +0 -1
- package/lib/db/repositories/eth1Data.d.ts.map +0 -1
- package/lib/db/repositories/index.d.ts.map +0 -1
- package/lib/db/repositories/lightclientBestUpdate.d.ts.map +0 -1
- package/lib/db/repositories/lightclientCheckpointHeader.d.ts.map +0 -1
- package/lib/db/repositories/lightclientSyncCommittee.d.ts.map +0 -1
- package/lib/db/repositories/lightclientSyncCommitteeWitness.d.ts.map +0 -1
- package/lib/db/repositories/proposerSlashing.d.ts.map +0 -1
- package/lib/db/repositories/stateArchive.d.ts.map +0 -1
- package/lib/db/repositories/stateArchiveIndex.d.ts.map +0 -1
- package/lib/db/repositories/voluntaryExit.d.ts.map +0 -1
- package/lib/db/single/index.d.ts.map +0 -1
- package/lib/db/single/preGenesisState.d.ts.map +0 -1
- package/lib/db/single/preGenesisStateLastProcessedBlock.d.ts.map +0 -1
- package/lib/eth1/errors.d.ts.map +0 -1
- package/lib/eth1/eth1DataCache.d.ts.map +0 -1
- package/lib/eth1/eth1DepositDataTracker.d.ts.map +0 -1
- package/lib/eth1/eth1DepositsCache.d.ts.map +0 -1
- package/lib/eth1/eth1MergeBlockTracker.d.ts.map +0 -1
- package/lib/eth1/index.d.ts.map +0 -1
- package/lib/eth1/interface.d.ts.map +0 -1
- package/lib/eth1/options.d.ts.map +0 -1
- package/lib/eth1/provider/eth1Provider.d.ts.map +0 -1
- package/lib/eth1/provider/jsonRpcHttpClient.d.ts.map +0 -1
- package/lib/eth1/provider/jwt.d.ts.map +0 -1
- package/lib/eth1/provider/utils.d.ts.map +0 -1
- package/lib/eth1/stream.d.ts.map +0 -1
- package/lib/eth1/utils/depositContract.d.ts.map +0 -1
- package/lib/eth1/utils/deposits.d.ts.map +0 -1
- package/lib/eth1/utils/eth1Data.d.ts.map +0 -1
- package/lib/eth1/utils/eth1DepositEvent.d.ts.map +0 -1
- package/lib/eth1/utils/eth1Vote.d.ts.map +0 -1
- package/lib/eth1/utils/groupDepositEventsByBlock.d.ts.map +0 -1
- package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.d.ts.map +0 -1
- package/lib/execution/builder/cache.d.ts.map +0 -1
- package/lib/execution/builder/http.d.ts.map +0 -1
- package/lib/execution/builder/index.d.ts.map +0 -1
- package/lib/execution/builder/interface.d.ts.map +0 -1
- package/lib/execution/builder/utils.d.ts.map +0 -1
- package/lib/execution/engine/disabled.d.ts.map +0 -1
- package/lib/execution/engine/http.d.ts.map +0 -1
- package/lib/execution/engine/index.d.ts.map +0 -1
- package/lib/execution/engine/interface.d.ts.map +0 -1
- package/lib/execution/engine/mock.d.ts.map +0 -1
- package/lib/execution/engine/payloadIdCache.d.ts.map +0 -1
- package/lib/execution/engine/types.d.ts.map +0 -1
- package/lib/execution/engine/utils.d.ts.map +0 -1
- package/lib/execution/index.d.ts.map +0 -1
- package/lib/index.d.ts.map +0 -1
- package/lib/metrics/index.d.ts.map +0 -1
- package/lib/metrics/metrics/beacon.d.ts.map +0 -1
- package/lib/metrics/metrics/lodestar.d.ts.map +0 -1
- package/lib/metrics/metrics.d.ts.map +0 -1
- package/lib/metrics/nodeJsMetrics.d.ts.map +0 -1
- package/lib/metrics/options.d.ts.map +0 -1
- package/lib/metrics/server/http.d.ts.map +0 -1
- package/lib/metrics/server/index.d.ts.map +0 -1
- package/lib/metrics/utils/avgMinMax.d.ts.map +0 -1
- package/lib/metrics/utils/gauge.d.ts.map +0 -1
- package/lib/metrics/utils/registryMetricCreator.d.ts.map +0 -1
- package/lib/monitoring/clientStats.d.ts.map +0 -1
- package/lib/monitoring/index.d.ts.map +0 -1
- package/lib/monitoring/options.d.ts.map +0 -1
- package/lib/monitoring/properties.d.ts.map +0 -1
- package/lib/monitoring/service.d.ts.map +0 -1
- package/lib/monitoring/system.d.ts.map +0 -1
- package/lib/monitoring/types.d.ts.map +0 -1
- package/lib/network/core/events.d.ts.map +0 -1
- package/lib/network/core/index.d.ts.map +0 -1
- package/lib/network/core/metrics.d.ts.map +0 -1
- package/lib/network/core/networkCore.d.ts.map +0 -1
- package/lib/network/core/networkCoreWorker.d.ts.map +0 -1
- package/lib/network/core/networkCoreWorkerHandler.d.ts.map +0 -1
- package/lib/network/core/types.d.ts.map +0 -1
- package/lib/network/discv5/index.d.ts.map +0 -1
- package/lib/network/discv5/types.d.ts.map +0 -1
- package/lib/network/discv5/utils.d.ts.map +0 -1
- package/lib/network/discv5/worker.d.ts.map +0 -1
- package/lib/network/events.d.ts.map +0 -1
- package/lib/network/forks.d.ts.map +0 -1
- package/lib/network/gossip/constants.d.ts.map +0 -1
- package/lib/network/gossip/encoding.d.ts.map +0 -1
- package/lib/network/gossip/errors.d.ts.map +0 -1
- package/lib/network/gossip/gossipsub.d.ts.map +0 -1
- package/lib/network/gossip/index.d.ts.map +0 -1
- package/lib/network/gossip/interface.d.ts.map +0 -1
- package/lib/network/gossip/metrics.d.ts.map +0 -1
- package/lib/network/gossip/scoringParameters.d.ts.map +0 -1
- package/lib/network/gossip/topic.d.ts.map +0 -1
- package/lib/network/index.d.ts.map +0 -1
- package/lib/network/interface.d.ts.map +0 -1
- package/lib/network/libp2p/error.d.ts.map +0 -1
- package/lib/network/libp2p/index.d.ts.map +0 -1
- package/lib/network/metadata.d.ts.map +0 -1
- package/lib/network/network.d.ts.map +0 -1
- package/lib/network/networkConfig.d.ts.map +0 -1
- package/lib/network/options.d.ts.map +0 -1
- package/lib/network/peers/client.d.ts.map +0 -1
- package/lib/network/peers/datastore.d.ts.map +0 -1
- package/lib/network/peers/discover.d.ts.map +0 -1
- package/lib/network/peers/index.d.ts.map +0 -1
- package/lib/network/peers/peerManager.d.ts.map +0 -1
- package/lib/network/peers/peersData.d.ts.map +0 -1
- package/lib/network/peers/score/constants.d.ts.map +0 -1
- package/lib/network/peers/score/index.d.ts.map +0 -1
- package/lib/network/peers/score/interface.d.ts.map +0 -1
- package/lib/network/peers/score/score.d.ts.map +0 -1
- package/lib/network/peers/score/store.d.ts.map +0 -1
- package/lib/network/peers/score/utils.d.ts.map +0 -1
- package/lib/network/peers/utils/assertPeerRelevance.d.ts.map +0 -1
- package/lib/network/peers/utils/enrSubnetsDeserialize.d.ts.map +0 -1
- package/lib/network/peers/utils/getConnectedPeerIds.d.ts.map +0 -1
- package/lib/network/peers/utils/index.d.ts.map +0 -1
- package/lib/network/peers/utils/prioritizePeers.d.ts.map +0 -1
- package/lib/network/peers/utils/subnetMap.d.ts.map +0 -1
- package/lib/network/processor/aggregatorTracker.d.ts.map +0 -1
- package/lib/network/processor/extractSlotRootFns.d.ts.map +0 -1
- package/lib/network/processor/gossipHandlers.d.ts.map +0 -1
- package/lib/network/processor/gossipQueues/index.d.ts.map +0 -1
- package/lib/network/processor/gossipQueues/indexed.d.ts.map +0 -1
- package/lib/network/processor/gossipQueues/linear.d.ts.map +0 -1
- package/lib/network/processor/gossipQueues/types.d.ts.map +0 -1
- package/lib/network/processor/gossipValidatorFn.d.ts.map +0 -1
- package/lib/network/processor/index.d.ts.map +0 -1
- package/lib/network/processor/types.d.ts.map +0 -1
- package/lib/network/reqresp/ReqRespBeaconNode.d.ts.map +0 -1
- package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts.map +0 -1
- package/lib/network/reqresp/handlers/beaconBlocksByRoot.d.ts.map +0 -1
- package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts.map +0 -1
- package/lib/network/reqresp/handlers/blobSidecarsByRoot.d.ts.map +0 -1
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts.map +0 -1
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.d.ts.map +0 -1
- package/lib/network/reqresp/handlers/index.d.ts.map +0 -1
- package/lib/network/reqresp/handlers/lightClientBootstrap.d.ts.map +0 -1
- package/lib/network/reqresp/handlers/lightClientFinalityUpdate.d.ts.map +0 -1
- package/lib/network/reqresp/handlers/lightClientOptimisticUpdate.d.ts.map +0 -1
- package/lib/network/reqresp/handlers/lightClientUpdatesByRange.d.ts.map +0 -1
- package/lib/network/reqresp/index.d.ts.map +0 -1
- package/lib/network/reqresp/interface.d.ts.map +0 -1
- package/lib/network/reqresp/protocols.d.ts.map +0 -1
- package/lib/network/reqresp/rateLimit.d.ts.map +0 -1
- package/lib/network/reqresp/score.d.ts.map +0 -1
- package/lib/network/reqresp/types.d.ts.map +0 -1
- package/lib/network/reqresp/utils/collect.d.ts.map +0 -1
- package/lib/network/reqresp/utils/collectSequentialBlocksInRange.d.ts.map +0 -1
- package/lib/network/reqresp/utils/dataColumnResponseValidation.d.ts.map +0 -1
- package/lib/network/statusCache.d.ts.map +0 -1
- package/lib/network/subnets/attnetsService.d.ts.map +0 -1
- package/lib/network/subnets/index.d.ts.map +0 -1
- package/lib/network/subnets/interface.d.ts.map +0 -1
- package/lib/network/subnets/syncnetsService.d.ts.map +0 -1
- package/lib/network/subnets/util.d.ts.map +0 -1
- package/lib/network/util.d.ts.map +0 -1
- package/lib/node/index.d.ts.map +0 -1
- package/lib/node/nodejs.d.ts.map +0 -1
- package/lib/node/notifier.d.ts.map +0 -1
- package/lib/node/options.d.ts.map +0 -1
- package/lib/node/utils/interop/deposits.d.ts.map +0 -1
- package/lib/node/utils/interop/state.d.ts.map +0 -1
- package/lib/node/utils/lightclient.d.ts.map +0 -1
- package/lib/node/utils/state.d.ts.map +0 -1
- package/lib/sync/backfill/backfill.d.ts.map +0 -1
- package/lib/sync/backfill/errors.d.ts.map +0 -1
- package/lib/sync/backfill/index.d.ts.map +0 -1
- package/lib/sync/backfill/verify.d.ts.map +0 -1
- package/lib/sync/constants.d.ts.map +0 -1
- package/lib/sync/index.d.ts.map +0 -1
- package/lib/sync/interface.d.ts.map +0 -1
- package/lib/sync/options.d.ts.map +0 -1
- package/lib/sync/range/batch.d.ts.map +0 -1
- package/lib/sync/range/chain.d.ts.map +0 -1
- package/lib/sync/range/range.d.ts.map +0 -1
- package/lib/sync/range/utils/batches.d.ts.map +0 -1
- package/lib/sync/range/utils/chainTarget.d.ts.map +0 -1
- package/lib/sync/range/utils/hashBlocks.d.ts.map +0 -1
- package/lib/sync/range/utils/index.d.ts.map +0 -1
- package/lib/sync/range/utils/peerBalancer.d.ts.map +0 -1
- package/lib/sync/range/utils/updateChains.d.ts.map +0 -1
- package/lib/sync/sync.d.ts.map +0 -1
- package/lib/sync/types.d.ts.map +0 -1
- package/lib/sync/unknownBlock.d.ts.map +0 -1
- package/lib/sync/utils/downloadByRange.d.ts.map +0 -1
- package/lib/sync/utils/downloadByRoot.d.ts.map +0 -1
- package/lib/sync/utils/pendingBlocksTree.d.ts.map +0 -1
- package/lib/sync/utils/remoteSyncType.d.ts.map +0 -1
- package/lib/util/address.d.ts.map +0 -1
- package/lib/util/array.d.ts.map +0 -1
- package/lib/util/asyncIterableToEvents.d.ts.map +0 -1
- package/lib/util/binarySearch.d.ts.map +0 -1
- package/lib/util/bitArray.d.ts.map +0 -1
- package/lib/util/blobs.d.ts.map +0 -1
- package/lib/util/bufferPool.d.ts.map +0 -1
- package/lib/util/bytes.d.ts.map +0 -1
- package/lib/util/chunkify.d.ts.map +0 -1
- package/lib/util/clock.d.ts.map +0 -1
- package/lib/util/dataColumns.d.ts.map +0 -1
- package/lib/util/dependentRoot.d.ts.map +0 -1
- package/lib/util/enum.d.ts.map +0 -1
- package/lib/util/error.d.ts.map +0 -1
- package/lib/util/eventLoop.d.ts.map +0 -1
- package/lib/util/execution.d.ts.map +0 -1
- package/lib/util/file.d.ts.map +0 -1
- package/lib/util/forkChoice.d.ts.map +0 -1
- package/lib/util/forkName.d.ts.map +0 -1
- package/lib/util/graffiti.d.ts.map +0 -1
- package/lib/util/hex.d.ts.map +0 -1
- package/lib/util/index.d.ts.map +0 -1
- package/lib/util/ip.d.ts.map +0 -1
- package/lib/util/itTrigger.d.ts.map +0 -1
- package/lib/util/kzg.d.ts.map +0 -1
- package/lib/util/map.d.ts.map +0 -1
- package/lib/util/metadata.d.ts.map +0 -1
- package/lib/util/multifork.d.ts.map +0 -1
- package/lib/util/numpy.d.ts.map +0 -1
- package/lib/util/peerId.d.ts.map +0 -1
- package/lib/util/profile.d.ts.map +0 -1
- package/lib/util/promises.d.ts.map +0 -1
- package/lib/util/queue/errors.d.ts.map +0 -1
- package/lib/util/queue/fnQueue.d.ts.map +0 -1
- package/lib/util/queue/index.d.ts.map +0 -1
- package/lib/util/queue/itemQueue.d.ts.map +0 -1
- package/lib/util/queue/options.d.ts.map +0 -1
- package/lib/util/serializedCache.d.ts.map +0 -1
- package/lib/util/set.d.ts.map +0 -1
- package/lib/util/shuffle.d.ts.map +0 -1
- package/lib/util/sortBy.d.ts.map +0 -1
- package/lib/util/sszBytes.d.ts.map +0 -1
- package/lib/util/strictEvents.d.ts.map +0 -1
- package/lib/util/time.d.ts.map +0 -1
- package/lib/util/timeSeries.d.ts.map +0 -1
- package/lib/util/types.d.ts.map +0 -1
- package/lib/util/workerEvents.d.ts.map +0 -1
- package/lib/util/wrapError.d.ts.map +0 -1
- package/src/api/impl/api.ts +0 -26
- package/src/api/impl/beacon/blocks/index.ts +0 -744
- package/src/api/impl/beacon/blocks/utils.ts +0 -75
- package/src/api/impl/beacon/index.ts +0 -35
- package/src/api/impl/beacon/pool/index.ts +0 -314
- package/src/api/impl/beacon/rewards/index.ts +0 -30
- package/src/api/impl/beacon/state/index.ts +0 -406
- package/src/api/impl/beacon/state/utils.ts +0 -189
- package/src/api/impl/config/constants.ts +0 -127
- package/src/api/impl/config/index.ts +0 -59
- package/src/api/impl/debug/index.ts +0 -131
- package/src/api/impl/errors.ts +0 -50
- package/src/api/impl/events/index.ts +0 -33
- package/src/api/impl/index.ts +0 -6
- package/src/api/impl/lightclient/index.ts +0 -64
- package/src/api/impl/lodestar/index.ts +0 -257
- package/src/api/impl/node/index.ts +0 -88
- package/src/api/impl/node/utils.ts +0 -51
- package/src/api/impl/proof/index.ts +0 -60
- package/src/api/impl/types.ts +0 -17
- package/src/api/impl/utils.ts +0 -25
- package/src/api/impl/validator/index.ts +0 -1540
- package/src/api/impl/validator/utils.ts +0 -85
- package/src/api/index.ts +0 -2
- package/src/api/options.ts +0 -16
- package/src/api/rest/activeSockets.ts +0 -109
- package/src/api/rest/base.ts +0 -216
- package/src/api/rest/index.ts +0 -63
- package/src/api/rest/swaggerUI.ts +0 -80
- package/src/bun-wrappers/prometheus-gc-stats.ts +0 -7
- package/src/chain/ColumnReconstructionTracker.ts +0 -90
- package/src/chain/GetBlobsTracker.ts +0 -115
- package/src/chain/archiveStore/archiveStore.ts +0 -222
- package/src/chain/archiveStore/constants.ts +0 -5
- package/src/chain/archiveStore/historicalState/getHistoricalState.ts +0 -116
- package/src/chain/archiveStore/historicalState/historicalStateRegen.ts +0 -68
- package/src/chain/archiveStore/historicalState/metrics.ts +0 -214
- package/src/chain/archiveStore/historicalState/types.ts +0 -41
- package/src/chain/archiveStore/historicalState/worker.ts +0 -77
- package/src/chain/archiveStore/index.ts +0 -3
- package/src/chain/archiveStore/interface.ts +0 -75
- package/src/chain/archiveStore/strategies/frequencyStateArchiveStrategy.ts +0 -138
- package/src/chain/archiveStore/utils/archiveBlocks.ts +0 -437
- package/src/chain/archiveStore/utils/pruneHistory.ts +0 -56
- package/src/chain/archiveStore/utils/updateBackfillRange.ts +0 -50
- package/src/chain/balancesCache.ts +0 -52
- package/src/chain/beaconProposerCache.ts +0 -43
- package/src/chain/blocks/blockInput/blockInput.ts +0 -852
- package/src/chain/blocks/blockInput/errors.ts +0 -48
- package/src/chain/blocks/blockInput/index.ts +0 -4
- package/src/chain/blocks/blockInput/types.ts +0 -145
- package/src/chain/blocks/blockInput/utils.ts +0 -21
- package/src/chain/blocks/importBlock.ts +0 -597
- package/src/chain/blocks/index.ts +0 -179
- package/src/chain/blocks/types.ts +0 -101
- package/src/chain/blocks/utils/blowfishBanner.ts +0 -28
- package/src/chain/blocks/utils/chainSegment.ts +0 -29
- package/src/chain/blocks/utils/checkpoint.ts +0 -25
- package/src/chain/blocks/utils/giraffeBanner.ts +0 -30
- package/src/chain/blocks/utils/ownBanner.ts +0 -20
- package/src/chain/blocks/utils/pandaMergeTransitionBanner.ts +0 -43
- package/src/chain/blocks/utils/zebraBanner.ts +0 -45
- package/src/chain/blocks/verifyBlock.ts +0 -242
- package/src/chain/blocks/verifyBlocksDataAvailability.ts +0 -42
- package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +0 -438
- package/src/chain/blocks/verifyBlocksSanityChecks.ts +0 -129
- package/src/chain/blocks/verifyBlocksSignatures.ts +0 -105
- package/src/chain/blocks/verifyBlocksStateTransitionOnly.ts +0 -114
- package/src/chain/blocks/writeBlockInputToDb.ts +0 -120
- package/src/chain/bls/index.ts +0 -4
- package/src/chain/bls/interface.ts +0 -68
- package/src/chain/bls/maybeBatch.ts +0 -45
- package/src/chain/bls/multithread/index.ts +0 -582
- package/src/chain/bls/multithread/jobItem.ts +0 -119
- package/src/chain/bls/multithread/poolSize.ts +0 -16
- package/src/chain/bls/multithread/types.ts +0 -38
- package/src/chain/bls/multithread/utils.ts +0 -19
- package/src/chain/bls/multithread/worker.ts +0 -114
- package/src/chain/bls/singleThread.ts +0 -87
- package/src/chain/bls/utils.ts +0 -30
- package/src/chain/chain.ts +0 -1354
- package/src/chain/emitter.ts +0 -113
- package/src/chain/errors/attestationError.ts +0 -194
- package/src/chain/errors/attesterSlashingError.ts +0 -11
- package/src/chain/errors/blobSidecarError.ts +0 -60
- package/src/chain/errors/blockError.ts +0 -166
- package/src/chain/errors/blsToExecutionChangeError.ts +0 -13
- package/src/chain/errors/dataColumnSidecarError.ts +0 -80
- package/src/chain/errors/gossipValidation.ts +0 -20
- package/src/chain/errors/index.ts +0 -10
- package/src/chain/errors/lightClientError.ts +0 -30
- package/src/chain/errors/proposerSlashingError.ts +0 -11
- package/src/chain/errors/syncCommitteeError.ts +0 -36
- package/src/chain/errors/voluntaryExitError.ts +0 -13
- package/src/chain/forkChoice/index.ts +0 -112
- package/src/chain/genesis/genesis.ts +0 -190
- package/src/chain/genesis/interface.ts +0 -14
- package/src/chain/index.ts +0 -6
- package/src/chain/initState.ts +0 -221
- package/src/chain/interface.ts +0 -280
- package/src/chain/lightClient/index.ts +0 -764
- package/src/chain/lightClient/proofs.ts +0 -85
- package/src/chain/lightClient/types.ts +0 -33
- package/src/chain/opPools/aggregatedAttestationPool.ts +0 -1063
- package/src/chain/opPools/attestationPool.ts +0 -282
- package/src/chain/opPools/index.ts +0 -5
- package/src/chain/opPools/opPool.ts +0 -462
- package/src/chain/opPools/syncCommitteeMessagePool.ts +0 -169
- package/src/chain/opPools/syncContributionAndProofPool.ts +0 -240
- package/src/chain/opPools/types.ts +0 -35
- package/src/chain/opPools/utils.ts +0 -65
- package/src/chain/options.ts +0 -138
- package/src/chain/prepareNextSlot.ts +0 -277
- package/src/chain/produceBlock/computeNewStateRoot.ts +0 -55
- package/src/chain/produceBlock/index.ts +0 -2
- package/src/chain/produceBlock/produceBlockBody.ts +0 -797
- package/src/chain/produceBlock/validateBlobsAndKzgCommitments.ts +0 -54
- package/src/chain/regen/errors.ts +0 -30
- package/src/chain/regen/index.ts +0 -4
- package/src/chain/regen/interface.ts +0 -93
- package/src/chain/regen/queued.ts +0 -317
- package/src/chain/regen/regen.ts +0 -424
- package/src/chain/reprocess.ts +0 -161
- package/src/chain/rewards/attestationsRewards.ts +0 -196
- package/src/chain/rewards/blockRewards.ts +0 -150
- package/src/chain/rewards/syncCommitteeRewards.ts +0 -58
- package/src/chain/seenCache/index.ts +0 -5
- package/src/chain/seenCache/seenAggregateAndProof.ts +0 -120
- package/src/chain/seenCache/seenAttestationData.ts +0 -145
- package/src/chain/seenCache/seenAttesters.ts +0 -58
- package/src/chain/seenCache/seenBlockAttesters.ts +0 -18
- package/src/chain/seenCache/seenBlockProposers.ts +0 -48
- package/src/chain/seenCache/seenCommittee.ts +0 -43
- package/src/chain/seenCache/seenCommitteeContribution.ts +0 -104
- package/src/chain/seenCache/seenGossipBlockInput.ts +0 -373
- package/src/chain/serializeState.ts +0 -32
- package/src/chain/shufflingCache.ts +0 -238
- package/src/chain/stateCache/blockStateCacheImpl.ts +0 -150
- package/src/chain/stateCache/datastore/db.ts +0 -36
- package/src/chain/stateCache/datastore/file.ts +0 -53
- package/src/chain/stateCache/datastore/index.ts +0 -2
- package/src/chain/stateCache/datastore/types.ts +0 -13
- package/src/chain/stateCache/fifoBlockStateCache.ts +0 -208
- package/src/chain/stateCache/inMemoryCheckpointsCache.ts +0 -198
- package/src/chain/stateCache/index.ts +0 -3
- package/src/chain/stateCache/mapMetrics.ts +0 -52
- package/src/chain/stateCache/persistentCheckpointsCache.ts +0 -837
- package/src/chain/stateCache/types.ts +0 -86
- package/src/chain/validation/aggregateAndProof.ts +0 -258
- package/src/chain/validation/attestation.ts +0 -885
- package/src/chain/validation/attesterSlashing.ts +0 -61
- package/src/chain/validation/blobSidecar.ts +0 -301
- package/src/chain/validation/block.ts +0 -188
- package/src/chain/validation/blsToExecutionChange.ts +0 -61
- package/src/chain/validation/dataColumnSidecar.ts +0 -381
- package/src/chain/validation/index.ts +0 -9
- package/src/chain/validation/lightClientFinalityUpdate.ts +0 -46
- package/src/chain/validation/lightClientOptimisticUpdate.ts +0 -68
- package/src/chain/validation/proposerSlashing.ts +0 -54
- package/src/chain/validation/signatureSets/aggregateAndProof.ts +0 -38
- package/src/chain/validation/signatureSets/contributionAndProof.ts +0 -27
- package/src/chain/validation/signatureSets/index.ts +0 -6
- package/src/chain/validation/signatureSets/selectionProof.ts +0 -27
- package/src/chain/validation/signatureSets/syncCommittee.ts +0 -22
- package/src/chain/validation/signatureSets/syncCommitteeContribution.ts +0 -18
- package/src/chain/validation/signatureSets/syncCommitteeSelectionProof.ts +0 -27
- package/src/chain/validation/syncCommittee.ts +0 -165
- package/src/chain/validation/syncCommitteeContributionAndProof.ts +0 -122
- package/src/chain/validation/voluntaryExit.ts +0 -58
- package/src/chain/validatorMonitor.ts +0 -1309
- package/src/constants/constants.ts +0 -15
- package/src/constants/index.ts +0 -2
- package/src/constants/network.ts +0 -52
- package/src/db/beacon.ts +0 -113
- package/src/db/buckets.ts +0 -80
- package/src/db/index.ts +0 -2
- package/src/db/interface.ts +0 -76
- package/src/db/options.ts +0 -7
- package/src/db/repositories/attesterSlashing.ts +0 -38
- package/src/db/repositories/backfilledRanges.ts +0 -29
- package/src/db/repositories/blobSidecars.ts +0 -37
- package/src/db/repositories/blobSidecarsArchive.ts +0 -28
- package/src/db/repositories/block.ts +0 -33
- package/src/db/repositories/blockArchive.ts +0 -170
- package/src/db/repositories/blockArchiveIndex.ts +0 -45
- package/src/db/repositories/blsToExecutionChange.ts +0 -16
- package/src/db/repositories/checkpointState.ts +0 -31
- package/src/db/repositories/dataColumnSidecar.ts +0 -49
- package/src/db/repositories/dataColumnSidecarArchive.ts +0 -56
- package/src/db/repositories/depositDataRoot.ts +0 -80
- package/src/db/repositories/depositEvent.ts +0 -32
- package/src/db/repositories/eth1Data.ts +0 -33
- package/src/db/repositories/index.ts +0 -20
- package/src/db/repositories/lightclientBestUpdate.ts +0 -41
- package/src/db/repositories/lightclientCheckpointHeader.ts +0 -32
- package/src/db/repositories/lightclientSyncCommittee.ts +0 -16
- package/src/db/repositories/lightclientSyncCommitteeWitness.ts +0 -77
- package/src/db/repositories/proposerSlashing.ts +0 -15
- package/src/db/repositories/stateArchive.ts +0 -69
- package/src/db/repositories/stateArchiveIndex.ts +0 -18
- package/src/db/repositories/voluntaryExit.ts +0 -15
- package/src/db/single/index.ts +0 -2
- package/src/db/single/preGenesisState.ts +0 -37
- package/src/db/single/preGenesisStateLastProcessedBlock.ts +0 -34
- package/src/eth1/errors.ts +0 -40
- package/src/eth1/eth1DataCache.ts +0 -26
- package/src/eth1/eth1DepositDataTracker.ts +0 -410
- package/src/eth1/eth1DepositsCache.ts +0 -141
- package/src/eth1/eth1MergeBlockTracker.ts +0 -328
- package/src/eth1/index.ts +0 -157
- package/src/eth1/interface.ts +0 -131
- package/src/eth1/options.ts +0 -28
- package/src/eth1/provider/eth1Provider.ts +0 -229
- package/src/eth1/provider/jsonRpcHttpClient.ts +0 -390
- package/src/eth1/provider/jwt.ts +0 -36
- package/src/eth1/provider/utils.ts +0 -136
- package/src/eth1/stream.ts +0 -75
- package/src/eth1/utils/depositContract.ts +0 -37
- package/src/eth1/utils/deposits.ts +0 -70
- package/src/eth1/utils/eth1Data.ts +0 -100
- package/src/eth1/utils/eth1DepositEvent.ts +0 -12
- package/src/eth1/utils/eth1Vote.ts +0 -142
- package/src/eth1/utils/groupDepositEventsByBlock.ts +0 -19
- package/src/eth1/utils/optimizeNextBlockDiffForGenesis.ts +0 -18
- package/src/execution/builder/cache.ts +0 -39
- package/src/execution/builder/http.ts +0 -229
- package/src/execution/builder/index.ts +0 -27
- package/src/execution/builder/interface.ts +0 -49
- package/src/execution/builder/utils.ts +0 -19
- package/src/execution/engine/disabled.ts +0 -35
- package/src/execution/engine/http.ts +0 -644
- package/src/execution/engine/index.ts +0 -63
- package/src/execution/engine/interface.ts +0 -199
- package/src/execution/engine/mock.ts +0 -493
- package/src/execution/engine/payloadIdCache.ts +0 -54
- package/src/execution/engine/types.ts +0 -640
- package/src/execution/engine/utils.ts +0 -136
- package/src/execution/index.ts +0 -4
- package/src/index.ts +0 -20
- package/src/metrics/index.ts +0 -4
- package/src/metrics/metrics/beacon.ts +0 -390
- package/src/metrics/metrics/lodestar.ts +0 -1870
- package/src/metrics/metrics.ts +0 -43
- package/src/metrics/nodeJsMetrics.ts +0 -19
- package/src/metrics/options.ts +0 -22
- package/src/metrics/server/http.ts +0 -114
- package/src/metrics/server/index.ts +0 -1
- package/src/metrics/utils/avgMinMax.ts +0 -87
- package/src/metrics/utils/gauge.ts +0 -22
- package/src/metrics/utils/registryMetricCreator.ts +0 -41
- package/src/monitoring/clientStats.ts +0 -297
- package/src/monitoring/index.ts +0 -2
- package/src/monitoring/options.ts +0 -19
- package/src/monitoring/properties.ts +0 -152
- package/src/monitoring/service.ts +0 -235
- package/src/monitoring/system.ts +0 -146
- package/src/monitoring/types.ts +0 -21
- package/src/network/core/events.ts +0 -59
- package/src/network/core/index.ts +0 -3
- package/src/network/core/metrics.ts +0 -304
- package/src/network/core/networkCore.ts +0 -599
- package/src/network/core/networkCoreWorker.ts +0 -176
- package/src/network/core/networkCoreWorkerHandler.ts +0 -284
- package/src/network/core/types.ts +0 -119
- package/src/network/discv5/index.ts +0 -132
- package/src/network/discv5/types.ts +0 -74
- package/src/network/discv5/utils.ts +0 -50
- package/src/network/discv5/worker.ts +0 -137
- package/src/network/events.ts +0 -51
- package/src/network/forks.ts +0 -94
- package/src/network/gossip/constants.ts +0 -15
- package/src/network/gossip/encoding.ts +0 -111
- package/src/network/gossip/errors.ts +0 -7
- package/src/network/gossip/gossipsub.ts +0 -384
- package/src/network/gossip/index.ts +0 -4
- package/src/network/gossip/interface.ts +0 -215
- package/src/network/gossip/metrics.ts +0 -71
- package/src/network/gossip/scoringParameters.ts +0 -333
- package/src/network/gossip/topic.ts +0 -332
- package/src/network/index.ts +0 -8
- package/src/network/interface.ts +0 -134
- package/src/network/libp2p/error.ts +0 -55
- package/src/network/libp2p/index.ts +0 -153
- package/src/network/metadata.ts +0 -162
- package/src/network/network.ts +0 -767
- package/src/network/networkConfig.ts +0 -12
- package/src/network/options.ts +0 -70
- package/src/network/peers/client.ts +0 -29
- package/src/network/peers/datastore.ts +0 -188
- package/src/network/peers/discover.ts +0 -647
- package/src/network/peers/index.ts +0 -2
- package/src/network/peers/peerManager.ts +0 -899
- package/src/network/peers/peersData.ts +0 -65
- package/src/network/peers/score/constants.ts +0 -34
- package/src/network/peers/score/index.ts +0 -4
- package/src/network/peers/score/interface.ts +0 -74
- package/src/network/peers/score/score.ts +0 -200
- package/src/network/peers/score/store.ts +0 -95
- package/src/network/peers/score/utils.ts +0 -37
- package/src/network/peers/utils/assertPeerRelevance.ts +0 -99
- package/src/network/peers/utils/enrSubnetsDeserialize.ts +0 -27
- package/src/network/peers/utils/getConnectedPeerIds.ts +0 -33
- package/src/network/peers/utils/index.ts +0 -4
- package/src/network/peers/utils/prioritizePeers.ts +0 -627
- package/src/network/peers/utils/subnetMap.ts +0 -88
- package/src/network/processor/aggregatorTracker.ts +0 -38
- package/src/network/processor/extractSlotRootFns.ts +0 -64
- package/src/network/processor/gossipHandlers.ts +0 -951
- package/src/network/processor/gossipQueues/index.ts +0 -114
- package/src/network/processor/gossipQueues/indexed.ts +0 -219
- package/src/network/processor/gossipQueues/linear.ts +0 -162
- package/src/network/processor/gossipQueues/types.ts +0 -57
- package/src/network/processor/gossipValidatorFn.ts +0 -142
- package/src/network/processor/index.ts +0 -496
- package/src/network/processor/types.ts +0 -27
- package/src/network/reqresp/ReqRespBeaconNode.ts +0 -373
- package/src/network/reqresp/handlers/beaconBlocksByRange.ts +0 -101
- package/src/network/reqresp/handlers/beaconBlocksByRoot.ts +0 -49
- package/src/network/reqresp/handlers/blobSidecarsByRange.ts +0 -114
- package/src/network/reqresp/handlers/blobSidecarsByRoot.ts +0 -62
- package/src/network/reqresp/handlers/dataColumnSidecarsByRange.ts +0 -144
- package/src/network/reqresp/handlers/dataColumnSidecarsByRoot.ts +0 -88
- package/src/network/reqresp/handlers/index.ts +0 -78
- package/src/network/reqresp/handlers/lightClientBootstrap.ts +0 -31
- package/src/network/reqresp/handlers/lightClientFinalityUpdate.ts +0 -21
- package/src/network/reqresp/handlers/lightClientOptimisticUpdate.ts +0 -21
- package/src/network/reqresp/handlers/lightClientUpdatesByRange.ts +0 -39
- package/src/network/reqresp/index.ts +0 -2
- package/src/network/reqresp/interface.ts +0 -45
- package/src/network/reqresp/protocols.ts +0 -146
- package/src/network/reqresp/rateLimit.ts +0 -112
- package/src/network/reqresp/score.ts +0 -70
- package/src/network/reqresp/types.ts +0 -174
- package/src/network/reqresp/utils/collect.ts +0 -84
- package/src/network/reqresp/utils/collectSequentialBlocksInRange.ts +0 -57
- package/src/network/reqresp/utils/dataColumnResponseValidation.ts +0 -99
- package/src/network/statusCache.ts +0 -17
- package/src/network/subnets/attnetsService.ts +0 -385
- package/src/network/subnets/index.ts +0 -2
- package/src/network/subnets/interface.ts +0 -66
- package/src/network/subnets/syncnetsService.ts +0 -147
- package/src/network/subnets/util.ts +0 -63
- package/src/network/util.ts +0 -29
- package/src/node/index.ts +0 -2
- package/src/node/nodejs.ts +0 -349
- package/src/node/notifier.ts +0 -206
- package/src/node/options.ts +0 -51
- package/src/node/utils/interop/deposits.ts +0 -53
- package/src/node/utils/interop/state.ts +0 -59
- package/src/node/utils/lightclient.ts +0 -7
- package/src/node/utils/state.ts +0 -37
- package/src/sync/backfill/backfill.ts +0 -893
- package/src/sync/backfill/errors.ts +0 -23
- package/src/sync/backfill/index.ts +0 -1
- package/src/sync/backfill/verify.ts +0 -58
- package/src/sync/constants.ts +0 -71
- package/src/sync/index.ts +0 -2
- package/src/sync/interface.ts +0 -55
- package/src/sync/options.ts +0 -45
- package/src/sync/range/batch.ts +0 -455
- package/src/sync/range/chain.ts +0 -715
- package/src/sync/range/range.ts +0 -354
- package/src/sync/range/utils/batches.ts +0 -119
- package/src/sync/range/utils/chainTarget.ts +0 -62
- package/src/sync/range/utils/hashBlocks.ts +0 -27
- package/src/sync/range/utils/index.ts +0 -5
- package/src/sync/range/utils/peerBalancer.ts +0 -184
- package/src/sync/range/utils/updateChains.ts +0 -66
- package/src/sync/sync.ts +0 -290
- package/src/sync/types.ts +0 -57
- package/src/sync/unknownBlock.ts +0 -859
- package/src/sync/utils/downloadByRange.ts +0 -808
- package/src/sync/utils/downloadByRoot.ts +0 -560
- package/src/sync/utils/pendingBlocksTree.ts +0 -97
- package/src/sync/utils/remoteSyncType.ts +0 -144
- package/src/util/address.ts +0 -3
- package/src/util/array.ts +0 -311
- package/src/util/asyncIterableToEvents.ts +0 -164
- package/src/util/binarySearch.ts +0 -48
- package/src/util/bitArray.ts +0 -84
- package/src/util/blobs.ts +0 -210
- package/src/util/bufferPool.ts +0 -95
- package/src/util/bytes.ts +0 -11
- package/src/util/chunkify.ts +0 -27
- package/src/util/clock.ts +0 -212
- package/src/util/dataColumns.ts +0 -415
- package/src/util/dependentRoot.ts +0 -47
- package/src/util/enum.ts +0 -17
- package/src/util/error.ts +0 -56
- package/src/util/eventLoop.ts +0 -22
- package/src/util/execution.ts +0 -223
- package/src/util/file.ts +0 -52
- package/src/util/forkChoice.ts +0 -5
- package/src/util/forkName.ts +0 -20
- package/src/util/graffiti.ts +0 -39
- package/src/util/hex.ts +0 -9
- package/src/util/index.ts +0 -2
- package/src/util/ip.ts +0 -6
- package/src/util/itTrigger.ts +0 -49
- package/src/util/kzg.ts +0 -3
- package/src/util/map.ts +0 -77
- package/src/util/metadata.ts +0 -22
- package/src/util/multifork.ts +0 -69
- package/src/util/numpy.ts +0 -8
- package/src/util/peerId.ts +0 -16
- package/src/util/profile.ts +0 -54
- package/src/util/promises.ts +0 -14
- package/src/util/queue/errors.ts +0 -14
- package/src/util/queue/fnQueue.ts +0 -16
- package/src/util/queue/index.ts +0 -4
- package/src/util/queue/itemQueue.ts +0 -128
- package/src/util/queue/options.ts +0 -37
- package/src/util/serializedCache.ts +0 -20
- package/src/util/set.ts +0 -62
- package/src/util/shuffle.ts +0 -21
- package/src/util/sortBy.ts +0 -19
- package/src/util/sszBytes.ts +0 -481
- package/src/util/strictEvents.ts +0 -8
- package/src/util/time.ts +0 -13
- package/src/util/timeSeries.ts +0 -118
- package/src/util/types.ts +0 -31
- package/src/util/workerEvents.ts +0 -142
- package/src/util/wrapError.ts +0 -27
|
@@ -1,437 +0,0 @@
|
|
|
1
|
-
import path from "node:path";
|
|
2
|
-
import {ChainForkConfig} from "@lodestar/config";
|
|
3
|
-
import {KeyValue} from "@lodestar/db";
|
|
4
|
-
import {IForkChoice} from "@lodestar/fork-choice";
|
|
5
|
-
import {ForkSeq, SLOTS_PER_EPOCH} from "@lodestar/params";
|
|
6
|
-
import {computeEpochAtSlot, computeStartSlotAtEpoch} from "@lodestar/state-transition";
|
|
7
|
-
import {Epoch, RootHex, Slot} from "@lodestar/types";
|
|
8
|
-
import {Logger, fromAsync, fromHex, prettyPrintIndices, toRootHex} from "@lodestar/utils";
|
|
9
|
-
import {IBeaconDb} from "../../../db/index.js";
|
|
10
|
-
import {BlockArchiveBatchPutBinaryItem} from "../../../db/repositories/index.js";
|
|
11
|
-
import {ensureDir, writeIfNotExist} from "../../../util/file.js";
|
|
12
|
-
import {BlockRootHex} from "../../../util/sszBytes.js";
|
|
13
|
-
import {LightClientServer} from "../../lightClient/index.js";
|
|
14
|
-
|
|
15
|
-
// Process in chunks to avoid OOM
|
|
16
|
-
// this number of blocks per chunk is tested in e2e test blockArchive.test.ts
|
|
17
|
-
// TODO: Review after merge since the size of blocks will increase significantly
|
|
18
|
-
const BLOCK_BATCH_SIZE = 256;
|
|
19
|
-
const BLOB_SIDECAR_BATCH_SIZE = 32;
|
|
20
|
-
|
|
21
|
-
type BlockRootSlot = {slot: Slot; root: Uint8Array};
|
|
22
|
-
type CheckpointHex = {epoch: Epoch; rootHex: RootHex};
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Persist orphaned block to disk
|
|
26
|
-
*/
|
|
27
|
-
async function persistOrphanedBlock(
|
|
28
|
-
slot: Slot,
|
|
29
|
-
blockRoot: BlockRootHex,
|
|
30
|
-
bytes: Uint8Array,
|
|
31
|
-
opts: {
|
|
32
|
-
persistOrphanedBlocksDir: string;
|
|
33
|
-
}
|
|
34
|
-
) {
|
|
35
|
-
const dirpath = path.join(opts.persistOrphanedBlocksDir ?? "orphaned_blocks");
|
|
36
|
-
const filepath = path.join(dirpath, `${slot}_${blockRoot}.ssz`);
|
|
37
|
-
await ensureDir(dirpath);
|
|
38
|
-
await writeIfNotExist(filepath, bytes);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* Archives finalized blocks from active bucket to archive bucket.
|
|
43
|
-
*
|
|
44
|
-
* Only archive blocks on the same chain to the finalized checkpoint.
|
|
45
|
-
* Each run should move all finalized blocks to blockArhive db to make it consistent
|
|
46
|
-
* to stateArchive, so that the node always work well when we restart.
|
|
47
|
-
* Note that the finalized block still stay in forkchoice to check finalize checkpoint of next onBlock calls,
|
|
48
|
-
* the next run should not reprocess finalzied block of this run.
|
|
49
|
-
*/
|
|
50
|
-
export async function archiveBlocks(
|
|
51
|
-
config: ChainForkConfig,
|
|
52
|
-
db: IBeaconDb,
|
|
53
|
-
forkChoice: IForkChoice,
|
|
54
|
-
lightclientServer: LightClientServer | undefined,
|
|
55
|
-
logger: Logger,
|
|
56
|
-
finalizedCheckpoint: CheckpointHex,
|
|
57
|
-
currentEpoch: Epoch,
|
|
58
|
-
archiveDataEpochs?: number,
|
|
59
|
-
persistOrphanedBlocks?: boolean,
|
|
60
|
-
persistOrphanedBlocksDir?: string
|
|
61
|
-
): Promise<void> {
|
|
62
|
-
// Use fork choice to determine the blocks to archive and delete
|
|
63
|
-
// getAllAncestorBlocks response includes the finalized block, so it's also moved to the cold db
|
|
64
|
-
const {ancestors: finalizedCanonicalBlocks, nonAncestors: finalizedNonCanonicalBlocks} =
|
|
65
|
-
forkChoice.getAllAncestorAndNonAncestorBlocks(finalizedCheckpoint.rootHex);
|
|
66
|
-
|
|
67
|
-
// NOTE: The finalized block will be exactly the first block of `epoch` or previous
|
|
68
|
-
const finalizedPostDeneb = finalizedCheckpoint.epoch >= config.DENEB_FORK_EPOCH;
|
|
69
|
-
const finalizedPostFulu = finalizedCheckpoint.epoch >= config.FULU_FORK_EPOCH;
|
|
70
|
-
|
|
71
|
-
const finalizedCanonicalBlockRoots: BlockRootSlot[] = finalizedCanonicalBlocks.map((block) => ({
|
|
72
|
-
slot: block.slot,
|
|
73
|
-
root: fromHex(block.blockRoot),
|
|
74
|
-
}));
|
|
75
|
-
|
|
76
|
-
if (finalizedCanonicalBlockRoots.length > 0) {
|
|
77
|
-
await migrateBlocksFromHotToColdDb(db, finalizedCanonicalBlockRoots);
|
|
78
|
-
logger.verbose("Migrated blocks from hot DB to cold DB", {
|
|
79
|
-
fromSlot: finalizedCanonicalBlockRoots[0].slot,
|
|
80
|
-
toSlot: finalizedCanonicalBlockRoots.at(-1)?.slot,
|
|
81
|
-
size: finalizedCanonicalBlockRoots.length,
|
|
82
|
-
});
|
|
83
|
-
|
|
84
|
-
if (finalizedPostDeneb) {
|
|
85
|
-
const migratedEntries = await migrateBlobSidecarsFromHotToColdDb(
|
|
86
|
-
config,
|
|
87
|
-
db,
|
|
88
|
-
finalizedCanonicalBlockRoots,
|
|
89
|
-
currentEpoch
|
|
90
|
-
);
|
|
91
|
-
logger.verbose("Migrated blobSidecars from hot DB to cold DB", {migratedEntries});
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
if (finalizedPostFulu) {
|
|
95
|
-
const migratedEntries = await migrateDataColumnSidecarsFromHotToColdDb(
|
|
96
|
-
config,
|
|
97
|
-
db,
|
|
98
|
-
logger,
|
|
99
|
-
finalizedCanonicalBlockRoots,
|
|
100
|
-
currentEpoch
|
|
101
|
-
);
|
|
102
|
-
logger.verbose("Migrated dataColumnSidecars from hot DB to cold DB", {migratedEntries});
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
|
|
106
|
-
// deleteNonCanonicalBlocks
|
|
107
|
-
// loop through forkchoice single time
|
|
108
|
-
|
|
109
|
-
const nonCanonicalBlockRoots = finalizedNonCanonicalBlocks.map((summary) => fromHex(summary.blockRoot));
|
|
110
|
-
if (nonCanonicalBlockRoots.length > 0) {
|
|
111
|
-
if (persistOrphanedBlocks) {
|
|
112
|
-
// Persist orphaned blocks to disk before deleting them from hot db
|
|
113
|
-
await Promise.all(
|
|
114
|
-
nonCanonicalBlockRoots.map(async (root, index) => {
|
|
115
|
-
const block = finalizedNonCanonicalBlocks[index];
|
|
116
|
-
const blockBytes = await db.block.getBinary(root);
|
|
117
|
-
const logCtx = {slot: block.slot, root: block.blockRoot};
|
|
118
|
-
if (blockBytes) {
|
|
119
|
-
await persistOrphanedBlock(block.slot, block.blockRoot, blockBytes, {
|
|
120
|
-
persistOrphanedBlocksDir: persistOrphanedBlocksDir ?? "orphaned_blocks",
|
|
121
|
-
});
|
|
122
|
-
logger.verbose("Persisted orphaned block", logCtx);
|
|
123
|
-
} else {
|
|
124
|
-
logger.warn("Tried to persist orphaned block but no block found", logCtx);
|
|
125
|
-
}
|
|
126
|
-
})
|
|
127
|
-
);
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
await db.block.batchDelete(nonCanonicalBlockRoots);
|
|
131
|
-
logger.verbose("Deleted non canonical blocks from hot DB", {
|
|
132
|
-
slots: finalizedNonCanonicalBlocks.map((summary) => summary.slot).join(","),
|
|
133
|
-
});
|
|
134
|
-
|
|
135
|
-
if (finalizedPostDeneb) {
|
|
136
|
-
await db.blobSidecars.batchDelete(nonCanonicalBlockRoots);
|
|
137
|
-
logger.verbose("Deleted non canonical blobSidecars from hot DB");
|
|
138
|
-
}
|
|
139
|
-
|
|
140
|
-
if (finalizedPostFulu) {
|
|
141
|
-
await db.dataColumnSidecar.deleteMany(nonCanonicalBlockRoots);
|
|
142
|
-
logger.verbose("Deleted non canonical dataColumnSidecars from hot DB");
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
|
|
146
|
-
// Delete expired blobs
|
|
147
|
-
// Keep only `[current_epoch - max(MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS, archiveDataEpochs)]`
|
|
148
|
-
// if archiveDataEpochs set to Infinity do not prune`
|
|
149
|
-
if (finalizedPostDeneb) {
|
|
150
|
-
if (archiveDataEpochs !== Infinity) {
|
|
151
|
-
const blobsArchiveWindow = Math.max(config.MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS, archiveDataEpochs ?? 0);
|
|
152
|
-
const blobSidecarsMinEpoch = currentEpoch - blobsArchiveWindow;
|
|
153
|
-
if (blobSidecarsMinEpoch >= config.DENEB_FORK_EPOCH) {
|
|
154
|
-
const slotsToDelete = await db.blobSidecarsArchive.keys({lt: computeStartSlotAtEpoch(blobSidecarsMinEpoch)});
|
|
155
|
-
if (slotsToDelete.length > 0) {
|
|
156
|
-
await db.blobSidecarsArchive.batchDelete(slotsToDelete);
|
|
157
|
-
logger.verbose(`blobSidecars prune: batchDelete range ${slotsToDelete[0]}..${slotsToDelete.at(-1)}`);
|
|
158
|
-
} else {
|
|
159
|
-
logger.verbose(`blobSidecars prune: no entries before epoch ${blobSidecarsMinEpoch}`);
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
} else {
|
|
163
|
-
logger.verbose("blobSidecars pruning skipped: archiveDataEpochs set to Infinity");
|
|
164
|
-
}
|
|
165
|
-
}
|
|
166
|
-
|
|
167
|
-
// Delete expired data column sidecars
|
|
168
|
-
// Keep only `[current_epoch - max(MIN_EPOCHS_FOR_DATA_COLUMN_SIDECARS_REQUESTS, archiveDataEpochs)]`
|
|
169
|
-
if (finalizedPostFulu) {
|
|
170
|
-
if (archiveDataEpochs !== Infinity) {
|
|
171
|
-
const dataColumnSidecarsArchiveWindow = Math.max(
|
|
172
|
-
config.MIN_EPOCHS_FOR_DATA_COLUMN_SIDECARS_REQUESTS,
|
|
173
|
-
archiveDataEpochs ?? 0
|
|
174
|
-
);
|
|
175
|
-
const dataColumnSidecarsMinEpoch = currentEpoch - dataColumnSidecarsArchiveWindow;
|
|
176
|
-
if (dataColumnSidecarsMinEpoch >= config.FULU_FORK_EPOCH) {
|
|
177
|
-
const prefixedKeys = await db.dataColumnSidecarArchive.keys({
|
|
178
|
-
// The `id` value `0` refers to the column index. So we want to fetch all sidecars less than zero column of `dataColumnSidecarsMinEpoch`
|
|
179
|
-
lt: {prefix: computeStartSlotAtEpoch(dataColumnSidecarsMinEpoch), id: 0},
|
|
180
|
-
});
|
|
181
|
-
// for each slot there could be multiple dataColumnSidecar, so we need to deduplicate it
|
|
182
|
-
const slotsToDelete = [...new Set(prefixedKeys.map(({prefix}) => prefix))].sort((a, b) => a - b);
|
|
183
|
-
|
|
184
|
-
if (slotsToDelete.length > 0) {
|
|
185
|
-
await db.dataColumnSidecarArchive.deleteMany(slotsToDelete);
|
|
186
|
-
logger.verbose("dataColumnSidecars prune", {
|
|
187
|
-
slotRange: prettyPrintIndices(slotsToDelete),
|
|
188
|
-
numOfSlots: slotsToDelete.length,
|
|
189
|
-
totalNumOfSidecars: prefixedKeys.length,
|
|
190
|
-
});
|
|
191
|
-
} else {
|
|
192
|
-
logger.verbose(`dataColumnSidecars prune: no entries before epoch ${dataColumnSidecarsMinEpoch}`);
|
|
193
|
-
}
|
|
194
|
-
} else {
|
|
195
|
-
logger.verbose(
|
|
196
|
-
`dataColumnSidecars pruning skipped: ${dataColumnSidecarsMinEpoch} is before fulu fork epoch ${config.FULU_FORK_EPOCH}`
|
|
197
|
-
);
|
|
198
|
-
}
|
|
199
|
-
} else {
|
|
200
|
-
logger.verbose("dataColumnSidecars pruning skipped: archiveDataEpochs set to Infinity");
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
// Prunning potential checkpoint data
|
|
205
|
-
const finalizedCanonicalNonCheckpointBlocks = getNonCheckpointBlocks(finalizedCanonicalBlockRoots);
|
|
206
|
-
const nonCheckpointBlockRoots: Uint8Array[] = [...nonCanonicalBlockRoots];
|
|
207
|
-
for (const block of finalizedCanonicalNonCheckpointBlocks) {
|
|
208
|
-
nonCheckpointBlockRoots.push(block.root);
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
if (lightclientServer) {
|
|
212
|
-
await lightclientServer.pruneNonCheckpointData(nonCheckpointBlockRoots);
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
logger.verbose("Archiving of finalized blocks complete", {
|
|
216
|
-
totalArchived: finalizedCanonicalBlocks.length,
|
|
217
|
-
finalizedEpoch: finalizedCheckpoint.epoch,
|
|
218
|
-
});
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
async function migrateBlocksFromHotToColdDb(db: IBeaconDb, blocks: BlockRootSlot[]): Promise<void> {
|
|
222
|
-
// Start from `i=0`: 1st block in iterateAncestorBlocks() is the finalized block itself
|
|
223
|
-
// we move it to blockArchive but forkchoice still have it to check next onBlock calls
|
|
224
|
-
// the next iterateAncestorBlocks call does not return this block
|
|
225
|
-
for (let i = 0; i < blocks.length; i += BLOCK_BATCH_SIZE) {
|
|
226
|
-
const toIdx = Math.min(i + BLOCK_BATCH_SIZE, blocks.length);
|
|
227
|
-
const canonicalBlocks = blocks.slice(i, toIdx);
|
|
228
|
-
|
|
229
|
-
// processCanonicalBlocks
|
|
230
|
-
if (canonicalBlocks.length === 0) return;
|
|
231
|
-
|
|
232
|
-
// load Buffer instead of SignedBeaconBlock to improve performance
|
|
233
|
-
const canonicalBlockEntries: BlockArchiveBatchPutBinaryItem[] = await Promise.all(
|
|
234
|
-
canonicalBlocks.map(async (block) => {
|
|
235
|
-
const blockBuffer = await db.block.getBinary(block.root);
|
|
236
|
-
if (!blockBuffer) {
|
|
237
|
-
throw Error(`Block not found for slot ${block.slot} root ${toRootHex(block.root)}`);
|
|
238
|
-
}
|
|
239
|
-
return {
|
|
240
|
-
key: block.slot,
|
|
241
|
-
value: blockBuffer,
|
|
242
|
-
slot: block.slot,
|
|
243
|
-
blockRoot: block.root,
|
|
244
|
-
// TODO: Benchmark if faster to slice Buffer or fromHex()
|
|
245
|
-
parentRoot: getParentRootFromSignedBlock(blockBuffer),
|
|
246
|
-
};
|
|
247
|
-
})
|
|
248
|
-
);
|
|
249
|
-
|
|
250
|
-
// put to blockArchive db and delete block db
|
|
251
|
-
await Promise.all([
|
|
252
|
-
db.blockArchive.batchPutBinary(canonicalBlockEntries),
|
|
253
|
-
db.block.batchDelete(canonicalBlocks.map((block) => block.root)),
|
|
254
|
-
]);
|
|
255
|
-
}
|
|
256
|
-
}
|
|
257
|
-
|
|
258
|
-
/**
|
|
259
|
-
* Migrate blobSidecars from hot db to cold db.
|
|
260
|
-
* @returns true if we do that, false if block is out of range data.
|
|
261
|
-
*/
|
|
262
|
-
async function migrateBlobSidecarsFromHotToColdDb(
|
|
263
|
-
config: ChainForkConfig,
|
|
264
|
-
db: IBeaconDb,
|
|
265
|
-
blocks: BlockRootSlot[],
|
|
266
|
-
currentEpoch: Epoch
|
|
267
|
-
): Promise<number> {
|
|
268
|
-
let migratedWrappedBlobSidecars = 0;
|
|
269
|
-
for (let i = 0; i < blocks.length; i += BLOB_SIDECAR_BATCH_SIZE) {
|
|
270
|
-
const toIdx = Math.min(i + BLOB_SIDECAR_BATCH_SIZE, blocks.length);
|
|
271
|
-
const canonicalBlocks = blocks.slice(i, toIdx);
|
|
272
|
-
|
|
273
|
-
// processCanonicalBlocks
|
|
274
|
-
if (canonicalBlocks.length === 0) break;
|
|
275
|
-
|
|
276
|
-
// load Buffer instead of ssz deserialized to improve performance
|
|
277
|
-
const canonicalBlobSidecarsEntries: KeyValue<Slot, Uint8Array>[] = await Promise.all(
|
|
278
|
-
canonicalBlocks
|
|
279
|
-
.filter((block) => {
|
|
280
|
-
const blockSlot = block.slot;
|
|
281
|
-
const blockEpoch = computeEpochAtSlot(blockSlot);
|
|
282
|
-
const forkSeq = config.getForkSeq(blockSlot);
|
|
283
|
-
return (
|
|
284
|
-
forkSeq >= ForkSeq.deneb &&
|
|
285
|
-
forkSeq < ForkSeq.fulu &&
|
|
286
|
-
// if block is out of ${config.MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS}, skip this step
|
|
287
|
-
blockEpoch >= currentEpoch - config.MIN_EPOCHS_FOR_BLOB_SIDECARS_REQUESTS
|
|
288
|
-
);
|
|
289
|
-
})
|
|
290
|
-
.map(async (block) => {
|
|
291
|
-
const bytes = await db.blobSidecars.getBinary(block.root);
|
|
292
|
-
if (!bytes) {
|
|
293
|
-
throw Error(`No blobSidecars found for slot ${block.slot} root ${toRootHex(block.root)}`);
|
|
294
|
-
}
|
|
295
|
-
return {key: block.slot, value: bytes};
|
|
296
|
-
})
|
|
297
|
-
);
|
|
298
|
-
|
|
299
|
-
// put to blockArchive db and delete block db
|
|
300
|
-
await Promise.all([
|
|
301
|
-
db.blobSidecarsArchive.batchPutBinary(canonicalBlobSidecarsEntries),
|
|
302
|
-
db.blobSidecars.batchDelete(canonicalBlocks.map((block) => block.root)),
|
|
303
|
-
]);
|
|
304
|
-
migratedWrappedBlobSidecars += canonicalBlobSidecarsEntries.length;
|
|
305
|
-
}
|
|
306
|
-
|
|
307
|
-
return migratedWrappedBlobSidecars;
|
|
308
|
-
}
|
|
309
|
-
|
|
310
|
-
// TODO: This function can be simplified further by reducing layers of promises in a loop
|
|
311
|
-
async function migrateDataColumnSidecarsFromHotToColdDb(
|
|
312
|
-
config: ChainForkConfig,
|
|
313
|
-
db: IBeaconDb,
|
|
314
|
-
logger: Logger,
|
|
315
|
-
blocks: BlockRootSlot[],
|
|
316
|
-
currentEpoch: Epoch
|
|
317
|
-
): Promise<number> {
|
|
318
|
-
let migratedWrappedDataColumns = 0;
|
|
319
|
-
for (let i = 0; i < blocks.length; i += BLOB_SIDECAR_BATCH_SIZE) {
|
|
320
|
-
const toIdx = Math.min(i + BLOB_SIDECAR_BATCH_SIZE, blocks.length);
|
|
321
|
-
const canonicalBlocks = blocks.slice(i, toIdx);
|
|
322
|
-
|
|
323
|
-
// processCanonicalBlocks
|
|
324
|
-
if (canonicalBlocks.length === 0) break;
|
|
325
|
-
const promises = [];
|
|
326
|
-
|
|
327
|
-
// load Buffer instead of ssz deserialized to improve performance
|
|
328
|
-
for (const block of canonicalBlocks) {
|
|
329
|
-
const blockSlot = block.slot;
|
|
330
|
-
const blockEpoch = computeEpochAtSlot(blockSlot);
|
|
331
|
-
|
|
332
|
-
if (
|
|
333
|
-
config.getForkSeq(blockSlot) < ForkSeq.fulu ||
|
|
334
|
-
// if block is out of ${config.MIN_EPOCHS_FOR_DATA_COLUMN_SIDECARS_REQUESTS}, skip this step
|
|
335
|
-
blockEpoch < currentEpoch - config.MIN_EPOCHS_FOR_DATA_COLUMN_SIDECARS_REQUESTS
|
|
336
|
-
) {
|
|
337
|
-
continue;
|
|
338
|
-
}
|
|
339
|
-
|
|
340
|
-
const dataColumnSidecarBytes = await fromAsync(db.dataColumnSidecar.valuesStreamBinary(block.root));
|
|
341
|
-
// there could be 0 dataColumnSidecarBytes if block has no blob
|
|
342
|
-
logger.verbose("migrateDataColumnSidecarsFromHotToColdDb", {
|
|
343
|
-
slot: block.slot,
|
|
344
|
-
root: toRootHex(block.root),
|
|
345
|
-
numSidecars: dataColumnSidecarBytes.length,
|
|
346
|
-
});
|
|
347
|
-
promises.push(
|
|
348
|
-
db.dataColumnSidecarArchive.putManyBinary(
|
|
349
|
-
block.slot,
|
|
350
|
-
dataColumnSidecarBytes.map((p) => ({key: p.id, value: p.value}))
|
|
351
|
-
)
|
|
352
|
-
);
|
|
353
|
-
migratedWrappedDataColumns += dataColumnSidecarBytes.length;
|
|
354
|
-
}
|
|
355
|
-
|
|
356
|
-
promises.push(db.dataColumnSidecar.deleteMany(canonicalBlocks.map((block) => block.root)));
|
|
357
|
-
|
|
358
|
-
// put to blockArchive db and delete block db
|
|
359
|
-
await Promise.all(promises);
|
|
360
|
-
}
|
|
361
|
-
|
|
362
|
-
return migratedWrappedDataColumns;
|
|
363
|
-
}
|
|
364
|
-
|
|
365
|
-
/**
|
|
366
|
-
* ```
|
|
367
|
-
* class SignedBeaconBlock(Container):
|
|
368
|
-
* message: BeaconBlock [offset - 4 bytes]
|
|
369
|
-
* signature: BLSSignature [fixed - 96 bytes]
|
|
370
|
-
*
|
|
371
|
-
* class BeaconBlock(Container):
|
|
372
|
-
* slot: Slot [fixed - 8 bytes]
|
|
373
|
-
* proposer_index: ValidatorIndex [fixed - 8 bytes]
|
|
374
|
-
* parent_root: Root [fixed - 32 bytes]
|
|
375
|
-
* state_root: Root
|
|
376
|
-
* body: BeaconBlockBody
|
|
377
|
-
* ```
|
|
378
|
-
* From byte: `4 + 96 + 8 + 8 = 116`
|
|
379
|
-
* To byte: `116 + 32 = 148`
|
|
380
|
-
*/
|
|
381
|
-
export function getParentRootFromSignedBlock(bytes: Uint8Array): Uint8Array {
|
|
382
|
-
return bytes.slice(116, 148);
|
|
383
|
-
}
|
|
384
|
-
|
|
385
|
-
/**
|
|
386
|
-
*
|
|
387
|
-
* @param blocks sequence of linear blocks, from child to ancestor.
|
|
388
|
-
* In ProtoArray.getAllAncestorNodes child nodes are pushed first to the returned array.
|
|
389
|
-
*/
|
|
390
|
-
export function getNonCheckpointBlocks<T extends {slot: Slot}>(blocks: T[]): T[] {
|
|
391
|
-
// Iterate from lowest child to highest ancestor
|
|
392
|
-
// Look for the checkpoint of the lowest epoch
|
|
393
|
-
// If block at `epoch * SLOTS_PER_EPOCH`, it's a checkpoint.
|
|
394
|
-
// - Then for the previous epoch all blocks but the 0 are NOT checkpoints
|
|
395
|
-
// - Otherwise for the previous epoch the last block is a checkpoint
|
|
396
|
-
|
|
397
|
-
if (blocks.length < 1) {
|
|
398
|
-
return [];
|
|
399
|
-
}
|
|
400
|
-
|
|
401
|
-
const nonCheckpointBlocks: T[] = [];
|
|
402
|
-
// Start with Infinity to always trigger `blockEpoch < epochPtr` in the first loop
|
|
403
|
-
let epochPtr = Infinity;
|
|
404
|
-
// Assume worst case, since it's unknown if a future epoch will skip the first slot or not.
|
|
405
|
-
// This function must return only blocks that are guaranteed to never become checkpoints.
|
|
406
|
-
let epochPtrHasFirstSlot = false;
|
|
407
|
-
|
|
408
|
-
// blocks order: from child to ancestor, decreasing slot
|
|
409
|
-
for (let i = 0; i < blocks.length; i++) {
|
|
410
|
-
let isCheckpoint = false;
|
|
411
|
-
const block = blocks[i];
|
|
412
|
-
const blockEpoch = computeEpochAtSlot(block.slot);
|
|
413
|
-
|
|
414
|
-
if (blockEpoch < epochPtr) {
|
|
415
|
-
// If future epoch has skipped the first slot, the last block in the previous epoch is a checkpoint
|
|
416
|
-
if (!epochPtrHasFirstSlot) {
|
|
417
|
-
isCheckpoint = true;
|
|
418
|
-
}
|
|
419
|
-
|
|
420
|
-
// Reset epoch pointer
|
|
421
|
-
epochPtr = blockEpoch;
|
|
422
|
-
epochPtrHasFirstSlot = false;
|
|
423
|
-
}
|
|
424
|
-
|
|
425
|
-
// The block in the first slot of an epoch is always a checkpoint slot
|
|
426
|
-
if (block.slot % SLOTS_PER_EPOCH === 0) {
|
|
427
|
-
epochPtrHasFirstSlot = true;
|
|
428
|
-
isCheckpoint = true;
|
|
429
|
-
}
|
|
430
|
-
|
|
431
|
-
if (!isCheckpoint) {
|
|
432
|
-
nonCheckpointBlocks.push(block);
|
|
433
|
-
}
|
|
434
|
-
}
|
|
435
|
-
|
|
436
|
-
return nonCheckpointBlocks;
|
|
437
|
-
}
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
import {ChainConfig} from "@lodestar/config";
|
|
2
|
-
import {computeStartSlotAtEpoch} from "@lodestar/state-transition";
|
|
3
|
-
import {Epoch} from "@lodestar/types";
|
|
4
|
-
import {Logger} from "@lodestar/utils";
|
|
5
|
-
import {IBeaconDb} from "../../../db/interface.js";
|
|
6
|
-
import {Metrics} from "../../../metrics/index.js";
|
|
7
|
-
|
|
8
|
-
export async function pruneHistory(
|
|
9
|
-
config: ChainConfig,
|
|
10
|
-
db: IBeaconDb,
|
|
11
|
-
logger: Logger,
|
|
12
|
-
metrics: Metrics | null | undefined,
|
|
13
|
-
finalizedEpoch: Epoch,
|
|
14
|
-
currentEpoch: Epoch
|
|
15
|
-
): Promise<void> {
|
|
16
|
-
const blockCutoffEpoch = Math.min(
|
|
17
|
-
// set by config, with underflow protection
|
|
18
|
-
Math.max(currentEpoch - config.MIN_EPOCHS_FOR_BLOCK_REQUESTS, 0),
|
|
19
|
-
// ensure that during (extremely lol) long periods of non-finality we don't delete unfinalized epoch data
|
|
20
|
-
finalizedEpoch
|
|
21
|
-
);
|
|
22
|
-
const blockCutoffSlot = computeStartSlotAtEpoch(blockCutoffEpoch);
|
|
23
|
-
|
|
24
|
-
logger.debug("Preparing to prune history", {
|
|
25
|
-
currentEpoch,
|
|
26
|
-
finalizedEpoch,
|
|
27
|
-
blockCutoffEpoch,
|
|
28
|
-
});
|
|
29
|
-
|
|
30
|
-
const step0 = metrics?.pruneHistory.fetchKeys.startTimer();
|
|
31
|
-
const [blocks, states] = await Promise.all([
|
|
32
|
-
db.blockArchive.keys({gte: 0, lt: blockCutoffSlot}),
|
|
33
|
-
db.stateArchive.keys({gte: 0, lt: finalizedEpoch}),
|
|
34
|
-
]);
|
|
35
|
-
step0?.();
|
|
36
|
-
|
|
37
|
-
logger.debug("Pruning history", {
|
|
38
|
-
currentEpoch,
|
|
39
|
-
blocksToPrune: blocks.length,
|
|
40
|
-
statesToPrune: states.length,
|
|
41
|
-
});
|
|
42
|
-
|
|
43
|
-
const step1 = metrics?.pruneHistory.pruneKeys.startTimer();
|
|
44
|
-
await Promise.all([
|
|
45
|
-
// ->
|
|
46
|
-
db.blockArchive.batchDelete(blocks),
|
|
47
|
-
db.stateArchive.batchDelete(states),
|
|
48
|
-
]);
|
|
49
|
-
step1?.();
|
|
50
|
-
|
|
51
|
-
logger.debug("Pruned history", {
|
|
52
|
-
currentEpoch,
|
|
53
|
-
});
|
|
54
|
-
|
|
55
|
-
metrics?.pruneHistory.pruneCount.inc();
|
|
56
|
-
}
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
import {CheckpointWithHex} from "@lodestar/fork-choice";
|
|
2
|
-
import {Logger} from "@lodestar/logger";
|
|
3
|
-
import {IBeaconDb} from "../../../db/interface.js";
|
|
4
|
-
import {IBeaconChain} from "../../interface.js";
|
|
5
|
-
|
|
6
|
-
/**
|
|
7
|
-
* Backfill sync relies on verified connected ranges (which are represented as key,value
|
|
8
|
-
* with a verified jump from a key back to value). Since the node could have progressed
|
|
9
|
-
* ahead from, we need to save the forward progress of this node as another backfill
|
|
10
|
-
* range entry, that backfill sync will use to jump back if this node is restarted
|
|
11
|
-
* for any reason.
|
|
12
|
-
* The current backfill has its own backfill entry from anchor slot to last backfilled
|
|
13
|
-
* slot. And this would create the entry from the current finalized slot to the anchor
|
|
14
|
-
* slot.
|
|
15
|
-
*/
|
|
16
|
-
export async function updateBackfillRange(
|
|
17
|
-
{chain, db, logger}: {chain: IBeaconChain; db: IBeaconDb; logger: Logger},
|
|
18
|
-
finalized: CheckpointWithHex
|
|
19
|
-
): Promise<void> {
|
|
20
|
-
try {
|
|
21
|
-
// Mark the sequence in backfill db from finalized block's slot till anchor slot as
|
|
22
|
-
// filled.
|
|
23
|
-
const finalizedBlockFC = chain.forkChoice.getBlockHex(finalized.rootHex);
|
|
24
|
-
if (finalizedBlockFC && finalizedBlockFC.slot > chain.anchorStateLatestBlockSlot) {
|
|
25
|
-
await db.backfilledRanges.put(finalizedBlockFC.slot, chain.anchorStateLatestBlockSlot);
|
|
26
|
-
|
|
27
|
-
// Clear previously marked sequence till anchorStateLatestBlockSlot, without
|
|
28
|
-
// touching backfill sync process sequence which are at
|
|
29
|
-
// <=anchorStateLatestBlockSlot i.e. clear >anchorStateLatestBlockSlot
|
|
30
|
-
// and < currentSlot
|
|
31
|
-
const filteredSeqs = await db.backfilledRanges.entries({
|
|
32
|
-
gt: chain.anchorStateLatestBlockSlot,
|
|
33
|
-
lt: finalizedBlockFC.slot,
|
|
34
|
-
});
|
|
35
|
-
logger.debug("updated backfilledRanges", {
|
|
36
|
-
key: finalizedBlockFC.slot,
|
|
37
|
-
value: chain.anchorStateLatestBlockSlot,
|
|
38
|
-
});
|
|
39
|
-
if (filteredSeqs.length > 0) {
|
|
40
|
-
await db.backfilledRanges.batchDelete(filteredSeqs.map((entry) => entry.key));
|
|
41
|
-
logger.debug(
|
|
42
|
-
`Forward Sync - cleaned up backfilledRanges between ${finalizedBlockFC.slot},${chain.anchorStateLatestBlockSlot}`,
|
|
43
|
-
{seqs: JSON.stringify(filteredSeqs)}
|
|
44
|
-
);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
} catch (e) {
|
|
48
|
-
logger.error("Error updating backfilledRanges on finalization", {epoch: finalized.epoch}, e as Error);
|
|
49
|
-
}
|
|
50
|
-
}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import {CheckpointWithHex} from "@lodestar/fork-choice";
|
|
2
|
-
import {
|
|
3
|
-
CachedBeaconStateAllForks,
|
|
4
|
-
EffectiveBalanceIncrements,
|
|
5
|
-
computeStartSlotAtEpoch,
|
|
6
|
-
getBlockRootAtSlot,
|
|
7
|
-
getEffectiveBalanceIncrementsZeroInactive,
|
|
8
|
-
} from "@lodestar/state-transition";
|
|
9
|
-
import {Epoch, RootHex} from "@lodestar/types";
|
|
10
|
-
import {toRootHex} from "@lodestar/utils";
|
|
11
|
-
|
|
12
|
-
/** The number of validator balance sets that are cached within `CheckpointBalancesCache`. */
|
|
13
|
-
const MAX_BALANCE_CACHE_SIZE = 4;
|
|
14
|
-
|
|
15
|
-
type BalancesCacheItem = {
|
|
16
|
-
rootHex: RootHex;
|
|
17
|
-
epoch: Epoch;
|
|
18
|
-
balances: EffectiveBalanceIncrements;
|
|
19
|
-
};
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Cache EffectiveBalanceIncrements of checkpoint blocks
|
|
23
|
-
*/
|
|
24
|
-
export class CheckpointBalancesCache {
|
|
25
|
-
private readonly items: BalancesCacheItem[] = [];
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Inspect the given `state` and determine the root of the block at the first slot of
|
|
29
|
-
* `state.current_epoch`. If there is not already some entry for the given block root, then
|
|
30
|
-
* add the effective balances from the `state` to the cache.
|
|
31
|
-
*/
|
|
32
|
-
processState(blockRootHex: RootHex, state: CachedBeaconStateAllForks): void {
|
|
33
|
-
const epoch = state.epochCtx.epoch;
|
|
34
|
-
const epochBoundarySlot = computeStartSlotAtEpoch(epoch);
|
|
35
|
-
const epochBoundaryRoot =
|
|
36
|
-
epochBoundarySlot === state.slot ? blockRootHex : toRootHex(getBlockRootAtSlot(state, epochBoundarySlot));
|
|
37
|
-
|
|
38
|
-
const index = this.items.findIndex((item) => item.epoch === epoch && item.rootHex === epochBoundaryRoot);
|
|
39
|
-
if (index === -1) {
|
|
40
|
-
if (this.items.length === MAX_BALANCE_CACHE_SIZE) {
|
|
41
|
-
this.items.shift();
|
|
42
|
-
}
|
|
43
|
-
// expect to reach this once per epoch
|
|
44
|
-
this.items.push({epoch, rootHex: epochBoundaryRoot, balances: getEffectiveBalanceIncrementsZeroInactive(state)});
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
get(checkpoint: CheckpointWithHex): EffectiveBalanceIncrements | undefined {
|
|
49
|
-
const {rootHex, epoch} = checkpoint;
|
|
50
|
-
return this.items.find((item) => item.epoch === epoch && item.rootHex === rootHex)?.balances;
|
|
51
|
-
}
|
|
52
|
-
}
|
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
import {routes} from "@lodestar/api";
|
|
2
|
-
import {Epoch} from "@lodestar/types";
|
|
3
|
-
import {MapDef} from "@lodestar/utils";
|
|
4
|
-
|
|
5
|
-
const PROPOSER_PRESERVE_EPOCHS = 2;
|
|
6
|
-
|
|
7
|
-
export type ProposerPreparationData = routes.validator.ProposerPreparationData;
|
|
8
|
-
|
|
9
|
-
export class BeaconProposerCache {
|
|
10
|
-
private readonly feeRecipientByValidatorIndex: MapDef<number, {epoch: Epoch; feeRecipient: string}>;
|
|
11
|
-
constructor(opts: {suggestedFeeRecipient: string}) {
|
|
12
|
-
this.feeRecipientByValidatorIndex = new MapDef(() => ({
|
|
13
|
-
epoch: 0,
|
|
14
|
-
feeRecipient: opts.suggestedFeeRecipient,
|
|
15
|
-
}));
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
add(epoch: Epoch, {validatorIndex, feeRecipient}: ProposerPreparationData): void {
|
|
19
|
-
this.feeRecipientByValidatorIndex.set(validatorIndex, {epoch, feeRecipient});
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
prune(epoch: Epoch): void {
|
|
23
|
-
// This is not so optimized function, but could maintain a 2d array may be?
|
|
24
|
-
for (const [validatorIndex, feeRecipientEntry] of this.feeRecipientByValidatorIndex.entries()) {
|
|
25
|
-
// We only retain an entry for PROPOSER_PRESERVE_EPOCHS epochs
|
|
26
|
-
if (feeRecipientEntry.epoch + PROPOSER_PRESERVE_EPOCHS < epoch) {
|
|
27
|
-
this.feeRecipientByValidatorIndex.delete(validatorIndex);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
getOrDefault(proposerIndex: number): string {
|
|
33
|
-
return this.feeRecipientByValidatorIndex.getOrDefault(proposerIndex).feeRecipient;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
get(proposerIndex: number): string | undefined {
|
|
37
|
-
return this.feeRecipientByValidatorIndex.get(proposerIndex)?.feeRecipient;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
getValidatorIndices(): number[] {
|
|
41
|
-
return Array.from(this.feeRecipientByValidatorIndex.keys());
|
|
42
|
-
}
|
|
43
|
-
}
|