@lodestar/beacon-node 1.35.0-dev.b42a298a7c → 1.35.0-dev.ba92bd8a88
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/api.d.ts.map +1 -0
- package/lib/api/impl/beacon/blocks/index.d.ts.map +1 -0
- package/lib/api/impl/beacon/blocks/utils.d.ts.map +1 -0
- package/lib/api/impl/beacon/index.d.ts.map +1 -0
- package/lib/api/impl/beacon/pool/index.d.ts.map +1 -0
- package/lib/api/impl/beacon/rewards/index.d.ts.map +1 -0
- package/lib/api/impl/beacon/state/index.d.ts.map +1 -0
- package/lib/api/impl/beacon/state/utils.d.ts.map +1 -0
- package/lib/api/impl/config/constants.d.ts.map +1 -0
- package/lib/api/impl/config/index.d.ts.map +1 -0
- package/lib/api/impl/debug/index.d.ts.map +1 -0
- package/lib/api/impl/errors.d.ts.map +1 -0
- package/lib/api/impl/events/index.d.ts.map +1 -0
- package/lib/api/impl/index.d.ts.map +1 -0
- package/lib/api/impl/lightclient/index.d.ts.map +1 -0
- package/lib/api/impl/lodestar/index.d.ts.map +1 -0
- package/lib/api/impl/node/index.d.ts.map +1 -0
- package/lib/api/impl/node/utils.d.ts.map +1 -0
- package/lib/api/impl/proof/index.d.ts.map +1 -0
- package/lib/api/impl/types.d.ts.map +1 -0
- package/lib/api/impl/utils.d.ts.map +1 -0
- package/lib/api/impl/validator/index.d.ts.map +1 -0
- package/lib/api/impl/validator/utils.d.ts.map +1 -0
- package/lib/api/index.d.ts.map +1 -0
- package/lib/api/options.d.ts.map +1 -0
- package/lib/api/rest/activeSockets.d.ts.map +1 -0
- package/lib/api/rest/base.d.ts.map +1 -0
- package/lib/api/rest/index.d.ts.map +1 -0
- package/lib/api/rest/swaggerUI.d.ts.map +1 -0
- package/lib/bun-wrappers/prometheus-gc-stats.d.ts.map +1 -0
- package/lib/chain/ColumnReconstructionTracker.d.ts.map +1 -0
- package/lib/chain/GetBlobsTracker.d.ts.map +1 -0
- package/lib/chain/archiveStore/archiveStore.d.ts.map +1 -0
- package/lib/chain/archiveStore/constants.d.ts.map +1 -0
- package/lib/chain/archiveStore/historicalState/getHistoricalState.d.ts.map +1 -0
- package/lib/chain/archiveStore/historicalState/historicalStateRegen.d.ts.map +1 -0
- package/lib/chain/archiveStore/historicalState/metrics.d.ts.map +1 -0
- package/lib/chain/archiveStore/historicalState/types.d.ts.map +1 -0
- package/lib/chain/archiveStore/historicalState/worker.d.ts.map +1 -0
- package/lib/chain/archiveStore/historicalState/worker.js +1 -1
- package/lib/chain/archiveStore/historicalState/worker.js.map +1 -1
- package/lib/chain/archiveStore/index.d.ts.map +1 -0
- package/lib/chain/archiveStore/interface.d.ts.map +1 -0
- package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.d.ts.map +1 -0
- package/lib/chain/archiveStore/utils/archiveBlocks.d.ts.map +1 -0
- package/lib/chain/archiveStore/utils/pruneHistory.d.ts.map +1 -0
- package/lib/chain/archiveStore/utils/updateBackfillRange.d.ts.map +1 -0
- package/lib/chain/balancesCache.d.ts.map +1 -0
- package/lib/chain/beaconProposerCache.d.ts.map +1 -0
- package/lib/chain/blocks/blockInput/blockInput.d.ts.map +1 -0
- package/lib/chain/blocks/blockInput/errors.d.ts.map +1 -0
- package/lib/chain/blocks/blockInput/index.d.ts.map +1 -0
- package/lib/chain/blocks/blockInput/types.d.ts.map +1 -0
- package/lib/chain/blocks/blockInput/utils.d.ts.map +1 -0
- package/lib/chain/blocks/importBlock.d.ts.map +1 -0
- package/lib/chain/blocks/index.d.ts.map +1 -0
- package/lib/chain/blocks/types.d.ts.map +1 -0
- package/lib/chain/blocks/utils/blowfishBanner.d.ts.map +1 -0
- package/lib/chain/blocks/utils/chainSegment.d.ts.map +1 -0
- package/lib/chain/blocks/utils/checkpoint.d.ts.map +1 -0
- package/lib/chain/blocks/utils/giraffeBanner.d.ts.map +1 -0
- package/lib/chain/blocks/utils/ownBanner.d.ts.map +1 -0
- package/lib/chain/blocks/utils/pandaMergeTransitionBanner.d.ts.map +1 -0
- package/lib/chain/blocks/utils/zebraBanner.d.ts.map +1 -0
- package/lib/chain/blocks/verifyBlock.d.ts.map +1 -0
- package/lib/chain/blocks/verifyBlocksDataAvailability.d.ts.map +1 -0
- package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts.map +1 -0
- package/lib/chain/blocks/verifyBlocksSanityChecks.d.ts.map +1 -0
- package/lib/chain/blocks/verifyBlocksSignatures.d.ts.map +1 -0
- package/lib/chain/blocks/verifyBlocksStateTransitionOnly.d.ts.map +1 -0
- package/lib/chain/blocks/writeBlockInputToDb.d.ts.map +1 -0
- package/lib/chain/bls/index.d.ts.map +1 -0
- package/lib/chain/bls/interface.d.ts.map +1 -0
- package/lib/chain/bls/maybeBatch.d.ts.map +1 -0
- package/lib/chain/bls/multithread/index.d.ts.map +1 -0
- package/lib/chain/bls/multithread/jobItem.d.ts.map +1 -0
- package/lib/chain/bls/multithread/poolSize.d.ts.map +1 -0
- package/lib/chain/bls/multithread/types.d.ts.map +1 -0
- package/lib/chain/bls/multithread/utils.d.ts.map +1 -0
- package/lib/chain/bls/multithread/worker.d.ts.map +1 -0
- package/lib/chain/bls/singleThread.d.ts.map +1 -0
- package/lib/chain/bls/utils.d.ts.map +1 -0
- package/lib/chain/chain.d.ts.map +1 -0
- package/lib/chain/emitter.d.ts +2 -2
- package/lib/chain/emitter.d.ts.map +1 -0
- package/lib/chain/errors/attestationError.d.ts.map +1 -0
- package/lib/chain/errors/attesterSlashingError.d.ts.map +1 -0
- package/lib/chain/errors/blobSidecarError.d.ts.map +1 -0
- package/lib/chain/errors/blockError.d.ts.map +1 -0
- package/lib/chain/errors/blsToExecutionChangeError.d.ts.map +1 -0
- package/lib/chain/errors/dataColumnSidecarError.d.ts.map +1 -0
- package/lib/chain/errors/gossipValidation.d.ts.map +1 -0
- package/lib/chain/errors/index.d.ts.map +1 -0
- package/lib/chain/errors/lightClientError.d.ts.map +1 -0
- package/lib/chain/errors/proposerSlashingError.d.ts.map +1 -0
- package/lib/chain/errors/syncCommitteeError.d.ts.map +1 -0
- package/lib/chain/errors/voluntaryExitError.d.ts.map +1 -0
- package/lib/chain/forkChoice/index.d.ts.map +1 -0
- package/lib/chain/genesis/genesis.d.ts.map +1 -0
- package/lib/chain/genesis/interface.d.ts.map +1 -0
- package/lib/chain/index.d.ts.map +1 -0
- package/lib/chain/initState.d.ts.map +1 -0
- package/lib/chain/interface.d.ts.map +1 -0
- package/lib/chain/lightClient/index.d.ts.map +1 -0
- package/lib/chain/lightClient/proofs.d.ts.map +1 -0
- package/lib/chain/lightClient/types.d.ts.map +1 -0
- package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +1 -0
- package/lib/chain/opPools/attestationPool.d.ts.map +1 -0
- package/lib/chain/opPools/index.d.ts.map +1 -0
- package/lib/chain/opPools/opPool.d.ts.map +1 -0
- package/lib/chain/opPools/syncCommitteeMessagePool.d.ts.map +1 -0
- package/lib/chain/opPools/syncContributionAndProofPool.d.ts.map +1 -0
- package/lib/chain/opPools/types.d.ts.map +1 -0
- package/lib/chain/opPools/utils.d.ts.map +1 -0
- package/lib/chain/options.d.ts.map +1 -0
- package/lib/chain/prepareNextSlot.d.ts.map +1 -0
- package/lib/chain/produceBlock/computeNewStateRoot.d.ts.map +1 -0
- package/lib/chain/produceBlock/index.d.ts.map +1 -0
- package/lib/chain/produceBlock/produceBlockBody.d.ts.map +1 -0
- package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.d.ts.map +1 -0
- package/lib/chain/regen/errors.d.ts.map +1 -0
- package/lib/chain/regen/index.d.ts.map +1 -0
- package/lib/chain/regen/interface.d.ts.map +1 -0
- package/lib/chain/regen/queued.d.ts.map +1 -0
- package/lib/chain/regen/regen.d.ts.map +1 -0
- package/lib/chain/reprocess.d.ts.map +1 -0
- package/lib/chain/rewards/attestationsRewards.d.ts.map +1 -0
- package/lib/chain/rewards/blockRewards.d.ts.map +1 -0
- package/lib/chain/rewards/syncCommitteeRewards.d.ts.map +1 -0
- package/lib/chain/seenCache/index.d.ts.map +1 -0
- package/lib/chain/seenCache/seenAggregateAndProof.d.ts.map +1 -0
- package/lib/chain/seenCache/seenAttestationData.d.ts.map +1 -0
- package/lib/chain/seenCache/seenAttesters.d.ts.map +1 -0
- package/lib/chain/seenCache/seenBlockAttesters.d.ts.map +1 -0
- package/lib/chain/seenCache/seenBlockProposers.d.ts.map +1 -0
- package/lib/chain/seenCache/seenCommittee.d.ts.map +1 -0
- package/lib/chain/seenCache/seenCommitteeContribution.d.ts.map +1 -0
- package/lib/chain/seenCache/seenGossipBlockInput.d.ts.map +1 -0
- package/lib/chain/serializeState.d.ts.map +1 -0
- package/lib/chain/shufflingCache.d.ts.map +1 -0
- package/lib/chain/stateCache/blockStateCacheImpl.d.ts.map +1 -0
- package/lib/chain/stateCache/datastore/db.d.ts.map +1 -0
- package/lib/chain/stateCache/datastore/file.d.ts.map +1 -0
- package/lib/chain/stateCache/datastore/index.d.ts.map +1 -0
- package/lib/chain/stateCache/datastore/types.d.ts.map +1 -0
- package/lib/chain/stateCache/fifoBlockStateCache.d.ts.map +1 -0
- package/lib/chain/stateCache/inMemoryCheckpointsCache.d.ts.map +1 -0
- package/lib/chain/stateCache/index.d.ts.map +1 -0
- package/lib/chain/stateCache/mapMetrics.d.ts.map +1 -0
- package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +1 -0
- package/lib/chain/stateCache/types.d.ts.map +1 -0
- package/lib/chain/validation/aggregateAndProof.d.ts.map +1 -0
- package/lib/chain/validation/attestation.d.ts.map +1 -0
- package/lib/chain/validation/attesterSlashing.d.ts.map +1 -0
- package/lib/chain/validation/blobSidecar.d.ts.map +1 -0
- package/lib/chain/validation/block.d.ts.map +1 -0
- package/lib/chain/validation/blsToExecutionChange.d.ts.map +1 -0
- package/lib/chain/validation/dataColumnSidecar.d.ts.map +1 -0
- package/lib/chain/validation/index.d.ts.map +1 -0
- package/lib/chain/validation/lightClientFinalityUpdate.d.ts.map +1 -0
- package/lib/chain/validation/lightClientOptimisticUpdate.d.ts.map +1 -0
- package/lib/chain/validation/proposerSlashing.d.ts.map +1 -0
- package/lib/chain/validation/signatureSets/aggregateAndProof.d.ts.map +1 -0
- package/lib/chain/validation/signatureSets/contributionAndProof.d.ts.map +1 -0
- package/lib/chain/validation/signatureSets/index.d.ts.map +1 -0
- package/lib/chain/validation/signatureSets/selectionProof.d.ts.map +1 -0
- package/lib/chain/validation/signatureSets/syncCommittee.d.ts.map +1 -0
- package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts.map +1 -0
- package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts.map +1 -0
- package/lib/chain/validation/syncCommittee.d.ts.map +1 -0
- package/lib/chain/validation/syncCommitteeContributionAndProof.d.ts.map +1 -0
- package/lib/chain/validation/voluntaryExit.d.ts.map +1 -0
- package/lib/chain/validatorMonitor.d.ts.map +1 -0
- package/lib/constants/constants.d.ts.map +1 -0
- package/lib/constants/index.d.ts.map +1 -0
- package/lib/constants/network.d.ts.map +1 -0
- package/lib/db/beacon.d.ts.map +1 -0
- package/lib/db/buckets.d.ts +4 -4
- package/lib/db/buckets.d.ts.map +1 -0
- package/lib/db/buckets.js +4 -4
- package/lib/db/buckets.js.map +1 -1
- package/lib/db/index.d.ts.map +1 -0
- package/lib/db/interface.d.ts.map +1 -0
- package/lib/db/options.d.ts.map +1 -0
- package/lib/db/repositories/attesterSlashing.d.ts.map +1 -0
- package/lib/db/repositories/backfilledRanges.d.ts.map +1 -0
- package/lib/db/repositories/blobSidecars.d.ts.map +1 -0
- package/lib/db/repositories/blobSidecars.js +1 -1
- package/lib/db/repositories/blobSidecars.js.map +1 -1
- package/lib/db/repositories/blobSidecarsArchive.d.ts.map +1 -0
- package/lib/db/repositories/blobSidecarsArchive.js +1 -1
- package/lib/db/repositories/blobSidecarsArchive.js.map +1 -1
- package/lib/db/repositories/block.d.ts.map +1 -0
- package/lib/db/repositories/blockArchive.d.ts.map +1 -0
- package/lib/db/repositories/blockArchiveIndex.d.ts +2 -2
- package/lib/db/repositories/blockArchiveIndex.d.ts.map +1 -0
- package/lib/db/repositories/blsToExecutionChange.d.ts.map +1 -0
- package/lib/db/repositories/checkpointState.d.ts.map +1 -0
- package/lib/db/repositories/dataColumnSidecar.d.ts.map +1 -0
- package/lib/db/repositories/dataColumnSidecar.js +1 -1
- package/lib/db/repositories/dataColumnSidecar.js.map +1 -1
- package/lib/db/repositories/dataColumnSidecarArchive.d.ts.map +1 -0
- package/lib/db/repositories/dataColumnSidecarArchive.js +1 -1
- package/lib/db/repositories/dataColumnSidecarArchive.js.map +1 -1
- package/lib/db/repositories/depositDataRoot.d.ts.map +1 -0
- package/lib/db/repositories/depositEvent.d.ts.map +1 -0
- package/lib/db/repositories/eth1Data.d.ts.map +1 -0
- package/lib/db/repositories/index.d.ts.map +1 -0
- package/lib/db/repositories/lightclientBestUpdate.d.ts.map +1 -0
- package/lib/db/repositories/lightclientCheckpointHeader.d.ts.map +1 -0
- package/lib/db/repositories/lightclientSyncCommittee.d.ts.map +1 -0
- package/lib/db/repositories/lightclientSyncCommitteeWitness.d.ts.map +1 -0
- package/lib/db/repositories/proposerSlashing.d.ts.map +1 -0
- package/lib/db/repositories/stateArchive.d.ts.map +1 -0
- package/lib/db/repositories/stateArchiveIndex.d.ts.map +1 -0
- package/lib/db/repositories/voluntaryExit.d.ts.map +1 -0
- package/lib/db/single/index.d.ts.map +1 -0
- package/lib/db/single/preGenesisState.d.ts.map +1 -0
- package/lib/db/single/preGenesisStateLastProcessedBlock.d.ts.map +1 -0
- package/lib/eth1/errors.d.ts.map +1 -0
- package/lib/eth1/eth1DataCache.d.ts.map +1 -0
- package/lib/eth1/eth1DepositDataTracker.d.ts.map +1 -0
- package/lib/eth1/eth1DepositsCache.d.ts.map +1 -0
- package/lib/eth1/eth1MergeBlockTracker.d.ts.map +1 -0
- package/lib/eth1/index.d.ts.map +1 -0
- package/lib/eth1/interface.d.ts.map +1 -0
- package/lib/eth1/options.d.ts.map +1 -0
- package/lib/eth1/provider/eth1Provider.d.ts.map +1 -0
- package/lib/eth1/provider/jsonRpcHttpClient.d.ts.map +1 -0
- package/lib/eth1/provider/jwt.d.ts.map +1 -0
- package/lib/eth1/provider/utils.d.ts.map +1 -0
- package/lib/eth1/stream.d.ts.map +1 -0
- package/lib/eth1/utils/depositContract.d.ts.map +1 -0
- package/lib/eth1/utils/deposits.d.ts.map +1 -0
- package/lib/eth1/utils/eth1Data.d.ts.map +1 -0
- package/lib/eth1/utils/eth1DepositEvent.d.ts.map +1 -0
- package/lib/eth1/utils/eth1Vote.d.ts.map +1 -0
- package/lib/eth1/utils/groupDepositEventsByBlock.d.ts.map +1 -0
- package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.d.ts.map +1 -0
- package/lib/execution/builder/cache.d.ts.map +1 -0
- package/lib/execution/builder/http.d.ts.map +1 -0
- package/lib/execution/builder/index.d.ts.map +1 -0
- package/lib/execution/builder/interface.d.ts.map +1 -0
- package/lib/execution/builder/utils.d.ts.map +1 -0
- package/lib/execution/engine/disabled.d.ts.map +1 -0
- package/lib/execution/engine/http.d.ts.map +1 -0
- package/lib/execution/engine/index.d.ts.map +1 -0
- package/lib/execution/engine/interface.d.ts.map +1 -0
- package/lib/execution/engine/mock.d.ts.map +1 -0
- package/lib/execution/engine/payloadIdCache.d.ts.map +1 -0
- package/lib/execution/engine/types.d.ts.map +1 -0
- package/lib/execution/engine/utils.d.ts.map +1 -0
- package/lib/execution/index.d.ts.map +1 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/metrics/index.d.ts.map +1 -0
- package/lib/metrics/metrics/beacon.d.ts.map +1 -0
- package/lib/metrics/metrics/lodestar.d.ts.map +1 -0
- package/lib/metrics/metrics.d.ts.map +1 -0
- package/lib/metrics/nodeJsMetrics.d.ts.map +1 -0
- package/lib/metrics/options.d.ts.map +1 -0
- package/lib/metrics/server/http.d.ts.map +1 -0
- package/lib/metrics/server/index.d.ts.map +1 -0
- package/lib/metrics/utils/avgMinMax.d.ts.map +1 -0
- package/lib/metrics/utils/gauge.d.ts.map +1 -0
- package/lib/metrics/utils/registryMetricCreator.d.ts.map +1 -0
- package/lib/monitoring/clientStats.d.ts.map +1 -0
- package/lib/monitoring/index.d.ts.map +1 -0
- package/lib/monitoring/options.d.ts.map +1 -0
- package/lib/monitoring/properties.d.ts.map +1 -0
- package/lib/monitoring/service.d.ts.map +1 -0
- package/lib/monitoring/system.d.ts.map +1 -0
- package/lib/monitoring/types.d.ts.map +1 -0
- package/lib/network/core/events.d.ts.map +1 -0
- package/lib/network/core/index.d.ts.map +1 -0
- package/lib/network/core/metrics.d.ts.map +1 -0
- package/lib/network/core/networkCore.d.ts.map +1 -0
- package/lib/network/core/networkCoreWorker.d.ts.map +1 -0
- package/lib/network/core/networkCoreWorkerHandler.d.ts.map +1 -0
- package/lib/network/core/types.d.ts.map +1 -0
- package/lib/network/discv5/index.d.ts.map +1 -0
- package/lib/network/discv5/types.d.ts.map +1 -0
- package/lib/network/discv5/utils.d.ts.map +1 -0
- package/lib/network/discv5/worker.d.ts.map +1 -0
- package/lib/network/events.d.ts.map +1 -0
- package/lib/network/forks.d.ts.map +1 -0
- package/lib/network/gossip/constants.d.ts.map +1 -0
- package/lib/network/gossip/encoding.d.ts.map +1 -0
- package/lib/network/gossip/errors.d.ts.map +1 -0
- package/lib/network/gossip/gossipsub.d.ts +1 -0
- package/lib/network/gossip/gossipsub.d.ts.map +1 -0
- package/lib/network/gossip/gossipsub.js +35 -16
- package/lib/network/gossip/gossipsub.js.map +1 -1
- package/lib/network/gossip/index.d.ts.map +1 -0
- package/lib/network/gossip/interface.d.ts.map +1 -0
- package/lib/network/gossip/metrics.d.ts +15 -7
- package/lib/network/gossip/metrics.d.ts.map +1 -0
- package/lib/network/gossip/metrics.js +16 -6
- package/lib/network/gossip/metrics.js.map +1 -1
- package/lib/network/gossip/scoringParameters.d.ts.map +1 -0
- package/lib/network/gossip/topic.d.ts.map +1 -0
- package/lib/network/index.d.ts.map +1 -0
- package/lib/network/interface.d.ts.map +1 -0
- package/lib/network/libp2p/error.d.ts.map +1 -0
- package/lib/network/libp2p/index.d.ts.map +1 -0
- package/lib/network/metadata.d.ts.map +1 -0
- package/lib/network/metadata.js +2 -1
- package/lib/network/metadata.js.map +1 -1
- package/lib/network/network.d.ts.map +1 -0
- package/lib/network/network.js +2 -4
- package/lib/network/network.js.map +1 -1
- package/lib/network/networkConfig.d.ts.map +1 -0
- package/lib/network/options.d.ts.map +1 -0
- package/lib/network/peers/client.d.ts.map +1 -0
- package/lib/network/peers/datastore.d.ts.map +1 -0
- package/lib/network/peers/discover.d.ts.map +1 -0
- package/lib/network/peers/index.d.ts.map +1 -0
- package/lib/network/peers/peerManager.d.ts.map +1 -0
- package/lib/network/peers/peersData.d.ts.map +1 -0
- package/lib/network/peers/score/constants.d.ts.map +1 -0
- package/lib/network/peers/score/index.d.ts.map +1 -0
- package/lib/network/peers/score/interface.d.ts.map +1 -0
- package/lib/network/peers/score/score.d.ts.map +1 -0
- package/lib/network/peers/score/store.d.ts.map +1 -0
- package/lib/network/peers/score/utils.d.ts.map +1 -0
- package/lib/network/peers/utils/assertPeerRelevance.d.ts.map +1 -0
- package/lib/network/peers/utils/enrSubnetsDeserialize.d.ts.map +1 -0
- package/lib/network/peers/utils/getConnectedPeerIds.d.ts.map +1 -0
- package/lib/network/peers/utils/index.d.ts.map +1 -0
- package/lib/network/peers/utils/prioritizePeers.d.ts.map +1 -0
- package/lib/network/peers/utils/subnetMap.d.ts.map +1 -0
- package/lib/network/processor/aggregatorTracker.d.ts.map +1 -0
- package/lib/network/processor/extractSlotRootFns.d.ts.map +1 -0
- package/lib/network/processor/gossipHandlers.d.ts.map +1 -0
- package/lib/network/processor/gossipQueues/index.d.ts.map +1 -0
- package/lib/network/processor/gossipQueues/indexed.d.ts.map +1 -0
- package/lib/network/processor/gossipQueues/linear.d.ts.map +1 -0
- package/lib/network/processor/gossipQueues/types.d.ts.map +1 -0
- package/lib/network/processor/gossipValidatorFn.d.ts.map +1 -0
- package/lib/network/processor/index.d.ts +1 -1
- package/lib/network/processor/index.d.ts.map +1 -0
- package/lib/network/processor/index.js +2 -3
- package/lib/network/processor/index.js.map +1 -1
- package/lib/network/processor/types.d.ts.map +1 -0
- package/lib/network/reqresp/ReqRespBeaconNode.d.ts.map +1 -0
- package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts.map +1 -0
- package/lib/network/reqresp/handlers/beaconBlocksByRoot.d.ts.map +1 -0
- package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts.map +1 -0
- package/lib/network/reqresp/handlers/blobSidecarsByRoot.d.ts.map +1 -0
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts.map +1 -0
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.d.ts.map +1 -0
- package/lib/network/reqresp/handlers/index.d.ts.map +1 -0
- package/lib/network/reqresp/handlers/lightClientBootstrap.d.ts.map +1 -0
- package/lib/network/reqresp/handlers/lightClientFinalityUpdate.d.ts.map +1 -0
- package/lib/network/reqresp/handlers/lightClientOptimisticUpdate.d.ts.map +1 -0
- package/lib/network/reqresp/handlers/lightClientUpdatesByRange.d.ts.map +1 -0
- package/lib/network/reqresp/index.d.ts.map +1 -0
- package/lib/network/reqresp/interface.d.ts.map +1 -0
- package/lib/network/reqresp/protocols.d.ts.map +1 -0
- package/lib/network/reqresp/rateLimit.d.ts.map +1 -0
- package/lib/network/reqresp/score.d.ts.map +1 -0
- package/lib/network/reqresp/types.d.ts.map +1 -0
- package/lib/network/reqresp/utils/collect.d.ts.map +1 -0
- package/lib/network/reqresp/utils/collectSequentialBlocksInRange.d.ts.map +1 -0
- package/lib/network/reqresp/utils/dataColumnResponseValidation.d.ts.map +1 -0
- package/lib/network/statusCache.d.ts.map +1 -0
- package/lib/network/subnets/attnetsService.d.ts.map +1 -0
- package/lib/network/subnets/index.d.ts.map +1 -0
- package/lib/network/subnets/interface.d.ts.map +1 -0
- package/lib/network/subnets/syncnetsService.d.ts.map +1 -0
- package/lib/network/subnets/util.d.ts.map +1 -0
- package/lib/network/util.d.ts.map +1 -0
- package/lib/node/index.d.ts.map +1 -0
- package/lib/node/nodejs.d.ts.map +1 -0
- package/lib/node/notifier.d.ts.map +1 -0
- package/lib/node/options.d.ts.map +1 -0
- package/lib/node/utils/interop/deposits.d.ts.map +1 -0
- package/lib/node/utils/interop/state.d.ts.map +1 -0
- package/lib/node/utils/lightclient.d.ts.map +1 -0
- package/lib/node/utils/state.d.ts.map +1 -0
- package/lib/sync/backfill/backfill.d.ts.map +1 -0
- package/lib/sync/backfill/errors.d.ts.map +1 -0
- package/lib/sync/backfill/index.d.ts.map +1 -0
- package/lib/sync/backfill/verify.d.ts.map +1 -0
- package/lib/sync/constants.d.ts.map +1 -0
- package/lib/sync/index.d.ts.map +1 -0
- package/lib/sync/interface.d.ts.map +1 -0
- package/lib/sync/options.d.ts.map +1 -0
- package/lib/sync/range/batch.d.ts.map +1 -0
- package/lib/sync/range/chain.d.ts.map +1 -0
- package/lib/sync/range/range.d.ts.map +1 -0
- package/lib/sync/range/utils/batches.d.ts.map +1 -0
- package/lib/sync/range/utils/chainTarget.d.ts.map +1 -0
- package/lib/sync/range/utils/hashBlocks.d.ts.map +1 -0
- package/lib/sync/range/utils/index.d.ts.map +1 -0
- package/lib/sync/range/utils/peerBalancer.d.ts.map +1 -0
- package/lib/sync/range/utils/updateChains.d.ts.map +1 -0
- package/lib/sync/sync.d.ts.map +1 -0
- package/lib/sync/types.d.ts +0 -1
- package/lib/sync/types.d.ts.map +1 -0
- package/lib/sync/types.js.map +1 -1
- package/lib/sync/unknownBlock.d.ts.map +1 -0
- package/lib/sync/unknownBlock.js +12 -14
- package/lib/sync/unknownBlock.js.map +1 -1
- package/lib/sync/utils/downloadByRange.d.ts.map +1 -0
- package/lib/sync/utils/downloadByRoot.d.ts +3 -1
- package/lib/sync/utils/downloadByRoot.d.ts.map +1 -0
- package/lib/sync/utils/downloadByRoot.js +32 -5
- package/lib/sync/utils/downloadByRoot.js.map +1 -1
- package/lib/sync/utils/pendingBlocksTree.d.ts.map +1 -0
- package/lib/sync/utils/remoteSyncType.d.ts.map +1 -0
- package/lib/util/address.d.ts.map +1 -0
- package/lib/util/array.d.ts.map +1 -0
- package/lib/util/asyncIterableToEvents.d.ts.map +1 -0
- package/lib/util/binarySearch.d.ts.map +1 -0
- package/lib/util/bitArray.d.ts.map +1 -0
- package/lib/util/blobs.d.ts.map +1 -0
- package/lib/util/blobs.js +5 -3
- package/lib/util/blobs.js.map +1 -1
- package/lib/util/bufferPool.d.ts.map +1 -0
- package/lib/util/bytes.d.ts.map +1 -0
- package/lib/util/chunkify.d.ts.map +1 -0
- package/lib/util/clock.d.ts.map +1 -0
- package/lib/util/dataColumns.d.ts.map +1 -0
- package/lib/util/dependentRoot.d.ts.map +1 -0
- package/lib/util/enum.d.ts.map +1 -0
- package/lib/util/error.d.ts.map +1 -0
- package/lib/util/eventLoop.d.ts.map +1 -0
- package/lib/util/execution.d.ts.map +1 -0
- package/lib/util/file.d.ts.map +1 -0
- package/lib/util/forkChoice.d.ts.map +1 -0
- package/lib/util/forkName.d.ts.map +1 -0
- package/lib/util/graffiti.d.ts.map +1 -0
- package/lib/util/hex.d.ts.map +1 -0
- package/lib/util/index.d.ts.map +1 -0
- package/lib/util/ip.d.ts.map +1 -0
- package/lib/util/itTrigger.d.ts.map +1 -0
- package/lib/util/kzg.d.ts.map +1 -0
- package/lib/util/map.d.ts.map +1 -0
- package/lib/util/metadata.d.ts.map +1 -0
- package/lib/util/multifork.d.ts.map +1 -0
- package/lib/util/numpy.d.ts.map +1 -0
- package/lib/util/peerId.d.ts.map +1 -0
- package/lib/util/profile.d.ts.map +1 -0
- package/lib/util/promises.d.ts.map +1 -0
- package/lib/util/queue/errors.d.ts.map +1 -0
- package/lib/util/queue/fnQueue.d.ts.map +1 -0
- package/lib/util/queue/index.d.ts.map +1 -0
- package/lib/util/queue/itemQueue.d.ts.map +1 -0
- package/lib/util/queue/options.d.ts.map +1 -0
- package/lib/util/serializedCache.d.ts.map +1 -0
- package/lib/util/set.d.ts.map +1 -0
- package/lib/util/shuffle.d.ts.map +1 -0
- package/lib/util/sortBy.d.ts.map +1 -0
- package/lib/util/sszBytes.d.ts.map +1 -0
- package/lib/util/strictEvents.d.ts.map +1 -0
- package/lib/util/time.d.ts.map +1 -0
- package/lib/util/timeSeries.d.ts.map +1 -0
- package/lib/util/types.d.ts.map +1 -0
- package/lib/util/workerEvents.d.ts.map +1 -0
- package/lib/util/wrapError.d.ts.map +1 -0
- package/package.json +18 -20
- package/src/api/impl/api.ts +26 -0
- package/src/api/impl/beacon/blocks/index.ts +744 -0
- package/src/api/impl/beacon/blocks/utils.ts +75 -0
- package/src/api/impl/beacon/index.ts +35 -0
- package/src/api/impl/beacon/pool/index.ts +314 -0
- package/src/api/impl/beacon/rewards/index.ts +30 -0
- package/src/api/impl/beacon/state/index.ts +406 -0
- package/src/api/impl/beacon/state/utils.ts +189 -0
- package/src/api/impl/config/constants.ts +127 -0
- package/src/api/impl/config/index.ts +59 -0
- package/src/api/impl/debug/index.ts +131 -0
- package/src/api/impl/errors.ts +50 -0
- package/src/api/impl/events/index.ts +33 -0
- package/src/api/impl/index.ts +6 -0
- package/src/api/impl/lightclient/index.ts +64 -0
- package/src/api/impl/lodestar/index.ts +257 -0
- package/src/api/impl/node/index.ts +88 -0
- package/src/api/impl/node/utils.ts +51 -0
- package/src/api/impl/proof/index.ts +60 -0
- package/src/api/impl/types.ts +17 -0
- package/src/api/impl/utils.ts +25 -0
- package/src/api/impl/validator/index.ts +1538 -0
- package/src/api/impl/validator/utils.ts +85 -0
- package/src/api/index.ts +2 -0
- package/src/api/options.ts +16 -0
- package/src/api/rest/activeSockets.ts +109 -0
- package/src/api/rest/base.ts +216 -0
- package/src/api/rest/index.ts +63 -0
- package/src/api/rest/swaggerUI.ts +80 -0
- package/src/bun-wrappers/prometheus-gc-stats.ts +7 -0
- package/src/chain/ColumnReconstructionTracker.ts +90 -0
- package/src/chain/GetBlobsTracker.ts +115 -0
- package/src/chain/archiveStore/archiveStore.ts +222 -0
- package/src/chain/archiveStore/constants.ts +5 -0
- package/src/chain/archiveStore/historicalState/getHistoricalState.ts +116 -0
- package/src/chain/archiveStore/historicalState/historicalStateRegen.ts +68 -0
- package/src/chain/archiveStore/historicalState/metrics.ts +214 -0
- package/src/chain/archiveStore/historicalState/types.ts +41 -0
- package/src/chain/archiveStore/historicalState/worker.ts +77 -0
- package/src/chain/archiveStore/index.ts +3 -0
- package/src/chain/archiveStore/interface.ts +75 -0
- package/src/chain/archiveStore/strategies/frequencyStateArchiveStrategy.ts +138 -0
- package/src/chain/archiveStore/utils/archiveBlocks.ts +437 -0
- package/src/chain/archiveStore/utils/pruneHistory.ts +56 -0
- package/src/chain/archiveStore/utils/updateBackfillRange.ts +50 -0
- package/src/chain/balancesCache.ts +52 -0
- package/src/chain/beaconProposerCache.ts +43 -0
- package/src/chain/blocks/blockInput/blockInput.ts +851 -0
- package/src/chain/blocks/blockInput/errors.ts +48 -0
- package/src/chain/blocks/blockInput/index.ts +4 -0
- package/src/chain/blocks/blockInput/types.ts +145 -0
- package/src/chain/blocks/blockInput/utils.ts +21 -0
- package/src/chain/blocks/importBlock.ts +603 -0
- package/src/chain/blocks/index.ts +179 -0
- package/src/chain/blocks/types.ts +101 -0
- package/src/chain/blocks/utils/blowfishBanner.ts +28 -0
- package/src/chain/blocks/utils/chainSegment.ts +29 -0
- package/src/chain/blocks/utils/checkpoint.ts +25 -0
- package/src/chain/blocks/utils/giraffeBanner.ts +30 -0
- package/src/chain/blocks/utils/ownBanner.ts +20 -0
- package/src/chain/blocks/utils/pandaMergeTransitionBanner.ts +43 -0
- package/src/chain/blocks/utils/zebraBanner.ts +45 -0
- package/src/chain/blocks/verifyBlock.ts +242 -0
- package/src/chain/blocks/verifyBlocksDataAvailability.ts +34 -0
- package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +438 -0
- package/src/chain/blocks/verifyBlocksSanityChecks.ts +129 -0
- package/src/chain/blocks/verifyBlocksSignatures.ts +105 -0
- package/src/chain/blocks/verifyBlocksStateTransitionOnly.ts +114 -0
- package/src/chain/blocks/writeBlockInputToDb.ts +128 -0
- package/src/chain/bls/index.ts +4 -0
- package/src/chain/bls/interface.ts +68 -0
- package/src/chain/bls/maybeBatch.ts +45 -0
- package/src/chain/bls/multithread/index.ts +582 -0
- package/src/chain/bls/multithread/jobItem.ts +119 -0
- package/src/chain/bls/multithread/poolSize.ts +16 -0
- package/src/chain/bls/multithread/types.ts +38 -0
- package/src/chain/bls/multithread/utils.ts +19 -0
- package/src/chain/bls/multithread/worker.ts +114 -0
- package/src/chain/bls/singleThread.ts +87 -0
- package/src/chain/bls/utils.ts +30 -0
- package/src/chain/chain.ts +1365 -0
- package/src/chain/emitter.ts +113 -0
- package/src/chain/errors/attestationError.ts +194 -0
- package/src/chain/errors/attesterSlashingError.ts +11 -0
- package/src/chain/errors/blobSidecarError.ts +60 -0
- package/src/chain/errors/blockError.ts +166 -0
- package/src/chain/errors/blsToExecutionChangeError.ts +13 -0
- package/src/chain/errors/dataColumnSidecarError.ts +80 -0
- package/src/chain/errors/gossipValidation.ts +20 -0
- package/src/chain/errors/index.ts +10 -0
- package/src/chain/errors/lightClientError.ts +30 -0
- package/src/chain/errors/proposerSlashingError.ts +11 -0
- package/src/chain/errors/syncCommitteeError.ts +36 -0
- package/src/chain/errors/voluntaryExitError.ts +13 -0
- package/src/chain/forkChoice/index.ts +112 -0
- package/src/chain/genesis/genesis.ts +190 -0
- package/src/chain/genesis/interface.ts +14 -0
- package/src/chain/index.ts +6 -0
- package/src/chain/initState.ts +221 -0
- package/src/chain/interface.ts +280 -0
- package/src/chain/lightClient/index.ts +764 -0
- package/src/chain/lightClient/proofs.ts +85 -0
- package/src/chain/lightClient/types.ts +33 -0
- package/src/chain/opPools/aggregatedAttestationPool.ts +1063 -0
- package/src/chain/opPools/attestationPool.ts +283 -0
- package/src/chain/opPools/index.ts +5 -0
- package/src/chain/opPools/opPool.ts +462 -0
- package/src/chain/opPools/syncCommitteeMessagePool.ts +167 -0
- package/src/chain/opPools/syncContributionAndProofPool.ts +240 -0
- package/src/chain/opPools/types.ts +35 -0
- package/src/chain/opPools/utils.ts +65 -0
- package/src/chain/options.ts +138 -0
- package/src/chain/prepareNextSlot.ts +277 -0
- package/src/chain/produceBlock/computeNewStateRoot.ts +55 -0
- package/src/chain/produceBlock/index.ts +2 -0
- package/src/chain/produceBlock/produceBlockBody.ts +797 -0
- package/src/chain/produceBlock/validateBlobsAndKzgCommitments.ts +54 -0
- package/src/chain/regen/errors.ts +30 -0
- package/src/chain/regen/index.ts +4 -0
- package/src/chain/regen/interface.ts +93 -0
- package/src/chain/regen/queued.ts +317 -0
- package/src/chain/regen/regen.ts +424 -0
- package/src/chain/reprocess.ts +161 -0
- package/src/chain/rewards/attestationsRewards.ts +196 -0
- package/src/chain/rewards/blockRewards.ts +150 -0
- package/src/chain/rewards/syncCommitteeRewards.ts +58 -0
- package/src/chain/seenCache/index.ts +5 -0
- package/src/chain/seenCache/seenAggregateAndProof.ts +120 -0
- package/src/chain/seenCache/seenAttestationData.ts +145 -0
- package/src/chain/seenCache/seenAttesters.ts +58 -0
- package/src/chain/seenCache/seenBlockAttesters.ts +18 -0
- package/src/chain/seenCache/seenBlockProposers.ts +48 -0
- package/src/chain/seenCache/seenCommittee.ts +43 -0
- package/src/chain/seenCache/seenCommitteeContribution.ts +104 -0
- package/src/chain/seenCache/seenGossipBlockInput.ts +373 -0
- package/src/chain/serializeState.ts +32 -0
- package/src/chain/shufflingCache.ts +238 -0
- package/src/chain/stateCache/blockStateCacheImpl.ts +150 -0
- package/src/chain/stateCache/datastore/db.ts +36 -0
- package/src/chain/stateCache/datastore/file.ts +53 -0
- package/src/chain/stateCache/datastore/index.ts +2 -0
- package/src/chain/stateCache/datastore/types.ts +13 -0
- package/src/chain/stateCache/fifoBlockStateCache.ts +208 -0
- package/src/chain/stateCache/inMemoryCheckpointsCache.ts +198 -0
- package/src/chain/stateCache/index.ts +3 -0
- package/src/chain/stateCache/mapMetrics.ts +52 -0
- package/src/chain/stateCache/persistentCheckpointsCache.ts +835 -0
- package/src/chain/stateCache/types.ts +86 -0
- package/src/chain/validation/aggregateAndProof.ts +258 -0
- package/src/chain/validation/attestation.ts +885 -0
- package/src/chain/validation/attesterSlashing.ts +61 -0
- package/src/chain/validation/blobSidecar.ts +301 -0
- package/src/chain/validation/block.ts +188 -0
- package/src/chain/validation/blsToExecutionChange.ts +61 -0
- package/src/chain/validation/dataColumnSidecar.ts +381 -0
- package/src/chain/validation/index.ts +9 -0
- package/src/chain/validation/lightClientFinalityUpdate.ts +45 -0
- package/src/chain/validation/lightClientOptimisticUpdate.ts +67 -0
- package/src/chain/validation/proposerSlashing.ts +54 -0
- package/src/chain/validation/signatureSets/aggregateAndProof.ts +38 -0
- package/src/chain/validation/signatureSets/contributionAndProof.ts +27 -0
- package/src/chain/validation/signatureSets/index.ts +6 -0
- package/src/chain/validation/signatureSets/selectionProof.ts +27 -0
- package/src/chain/validation/signatureSets/syncCommittee.ts +22 -0
- package/src/chain/validation/signatureSets/syncCommitteeContribution.ts +18 -0
- package/src/chain/validation/signatureSets/syncCommitteeSelectionProof.ts +27 -0
- package/src/chain/validation/syncCommittee.ts +165 -0
- package/src/chain/validation/syncCommitteeContributionAndProof.ts +122 -0
- package/src/chain/validation/voluntaryExit.ts +58 -0
- package/src/chain/validatorMonitor.ts +1299 -0
- package/src/constants/constants.ts +15 -0
- package/src/constants/index.ts +2 -0
- package/src/constants/network.ts +52 -0
- package/src/db/beacon.ts +113 -0
- package/src/db/buckets.ts +80 -0
- package/src/db/index.ts +2 -0
- package/src/db/interface.ts +76 -0
- package/src/db/options.ts +7 -0
- package/src/db/repositories/attesterSlashing.ts +38 -0
- package/src/db/repositories/backfilledRanges.ts +29 -0
- package/src/db/repositories/blobSidecars.ts +37 -0
- package/src/db/repositories/blobSidecarsArchive.ts +28 -0
- package/src/db/repositories/block.ts +33 -0
- package/src/db/repositories/blockArchive.ts +170 -0
- package/src/db/repositories/blockArchiveIndex.ts +45 -0
- package/src/db/repositories/blsToExecutionChange.ts +16 -0
- package/src/db/repositories/checkpointState.ts +31 -0
- package/src/db/repositories/dataColumnSidecar.ts +49 -0
- package/src/db/repositories/dataColumnSidecarArchive.ts +56 -0
- package/src/db/repositories/depositDataRoot.ts +80 -0
- package/src/db/repositories/depositEvent.ts +32 -0
- package/src/db/repositories/eth1Data.ts +33 -0
- package/src/db/repositories/index.ts +20 -0
- package/src/db/repositories/lightclientBestUpdate.ts +41 -0
- package/src/db/repositories/lightclientCheckpointHeader.ts +32 -0
- package/src/db/repositories/lightclientSyncCommittee.ts +16 -0
- package/src/db/repositories/lightclientSyncCommitteeWitness.ts +77 -0
- package/src/db/repositories/proposerSlashing.ts +15 -0
- package/src/db/repositories/stateArchive.ts +69 -0
- package/src/db/repositories/stateArchiveIndex.ts +18 -0
- package/src/db/repositories/voluntaryExit.ts +15 -0
- package/src/db/single/index.ts +2 -0
- package/src/db/single/preGenesisState.ts +37 -0
- package/src/db/single/preGenesisStateLastProcessedBlock.ts +34 -0
- package/src/eth1/errors.ts +40 -0
- package/src/eth1/eth1DataCache.ts +26 -0
- package/src/eth1/eth1DepositDataTracker.ts +410 -0
- package/src/eth1/eth1DepositsCache.ts +141 -0
- package/src/eth1/eth1MergeBlockTracker.ts +328 -0
- package/src/eth1/index.ts +157 -0
- package/src/eth1/interface.ts +131 -0
- package/src/eth1/options.ts +28 -0
- package/src/eth1/provider/eth1Provider.ts +229 -0
- package/src/eth1/provider/jsonRpcHttpClient.ts +390 -0
- package/src/eth1/provider/jwt.ts +36 -0
- package/src/eth1/provider/utils.ts +136 -0
- package/src/eth1/stream.ts +75 -0
- package/src/eth1/utils/depositContract.ts +37 -0
- package/src/eth1/utils/deposits.ts +70 -0
- package/src/eth1/utils/eth1Data.ts +100 -0
- package/src/eth1/utils/eth1DepositEvent.ts +12 -0
- package/src/eth1/utils/eth1Vote.ts +142 -0
- package/src/eth1/utils/groupDepositEventsByBlock.ts +19 -0
- package/src/eth1/utils/optimizeNextBlockDiffForGenesis.ts +18 -0
- package/src/execution/builder/cache.ts +39 -0
- package/src/execution/builder/http.ts +229 -0
- package/src/execution/builder/index.ts +27 -0
- package/src/execution/builder/interface.ts +49 -0
- package/src/execution/builder/utils.ts +19 -0
- package/src/execution/engine/disabled.ts +35 -0
- package/src/execution/engine/http.ts +644 -0
- package/src/execution/engine/index.ts +63 -0
- package/src/execution/engine/interface.ts +199 -0
- package/src/execution/engine/mock.ts +493 -0
- package/src/execution/engine/payloadIdCache.ts +54 -0
- package/src/execution/engine/types.ts +640 -0
- package/src/execution/engine/utils.ts +136 -0
- package/src/execution/index.ts +4 -0
- package/src/index.ts +20 -0
- package/src/metrics/index.ts +4 -0
- package/src/metrics/metrics/beacon.ts +390 -0
- package/src/metrics/metrics/lodestar.ts +1870 -0
- package/src/metrics/metrics.ts +43 -0
- package/src/metrics/nodeJsMetrics.ts +19 -0
- package/src/metrics/options.ts +22 -0
- package/src/metrics/server/http.ts +114 -0
- package/src/metrics/server/index.ts +1 -0
- package/src/metrics/utils/avgMinMax.ts +87 -0
- package/src/metrics/utils/gauge.ts +22 -0
- package/src/metrics/utils/registryMetricCreator.ts +41 -0
- package/src/monitoring/clientStats.ts +297 -0
- package/src/monitoring/index.ts +2 -0
- package/src/monitoring/options.ts +19 -0
- package/src/monitoring/properties.ts +152 -0
- package/src/monitoring/service.ts +235 -0
- package/src/monitoring/system.ts +146 -0
- package/src/monitoring/types.ts +21 -0
- package/src/network/core/events.ts +59 -0
- package/src/network/core/index.ts +3 -0
- package/src/network/core/metrics.ts +304 -0
- package/src/network/core/networkCore.ts +599 -0
- package/src/network/core/networkCoreWorker.ts +176 -0
- package/src/network/core/networkCoreWorkerHandler.ts +284 -0
- package/src/network/core/types.ts +119 -0
- package/src/network/discv5/index.ts +132 -0
- package/src/network/discv5/types.ts +74 -0
- package/src/network/discv5/utils.ts +50 -0
- package/src/network/discv5/worker.ts +137 -0
- package/src/network/events.ts +51 -0
- package/src/network/forks.ts +94 -0
- package/src/network/gossip/constants.ts +15 -0
- package/src/network/gossip/encoding.ts +111 -0
- package/src/network/gossip/errors.ts +7 -0
- package/src/network/gossip/gossipsub.ts +384 -0
- package/src/network/gossip/index.ts +4 -0
- package/src/network/gossip/interface.ts +215 -0
- package/src/network/gossip/metrics.ts +71 -0
- package/src/network/gossip/scoringParameters.ts +333 -0
- package/src/network/gossip/topic.ts +332 -0
- package/src/network/index.ts +8 -0
- package/src/network/interface.ts +134 -0
- package/src/network/libp2p/error.ts +55 -0
- package/src/network/libp2p/index.ts +153 -0
- package/src/network/metadata.ts +162 -0
- package/src/network/network.ts +767 -0
- package/src/network/networkConfig.ts +12 -0
- package/src/network/options.ts +70 -0
- package/src/network/peers/client.ts +29 -0
- package/src/network/peers/datastore.ts +188 -0
- package/src/network/peers/discover.ts +647 -0
- package/src/network/peers/index.ts +2 -0
- package/src/network/peers/peerManager.ts +899 -0
- package/src/network/peers/peersData.ts +65 -0
- package/src/network/peers/score/constants.ts +34 -0
- package/src/network/peers/score/index.ts +4 -0
- package/src/network/peers/score/interface.ts +74 -0
- package/src/network/peers/score/score.ts +200 -0
- package/src/network/peers/score/store.ts +95 -0
- package/src/network/peers/score/utils.ts +37 -0
- package/src/network/peers/utils/assertPeerRelevance.ts +99 -0
- package/src/network/peers/utils/enrSubnetsDeserialize.ts +27 -0
- package/src/network/peers/utils/getConnectedPeerIds.ts +33 -0
- package/src/network/peers/utils/index.ts +4 -0
- package/src/network/peers/utils/prioritizePeers.ts +627 -0
- package/src/network/peers/utils/subnetMap.ts +88 -0
- package/src/network/processor/aggregatorTracker.ts +38 -0
- package/src/network/processor/extractSlotRootFns.ts +64 -0
- package/src/network/processor/gossipHandlers.ts +951 -0
- package/src/network/processor/gossipQueues/index.ts +114 -0
- package/src/network/processor/gossipQueues/indexed.ts +219 -0
- package/src/network/processor/gossipQueues/linear.ts +162 -0
- package/src/network/processor/gossipQueues/types.ts +57 -0
- package/src/network/processor/gossipValidatorFn.ts +142 -0
- package/src/network/processor/index.ts +496 -0
- package/src/network/processor/types.ts +27 -0
- package/src/network/reqresp/ReqRespBeaconNode.ts +373 -0
- package/src/network/reqresp/handlers/beaconBlocksByRange.ts +101 -0
- package/src/network/reqresp/handlers/beaconBlocksByRoot.ts +49 -0
- package/src/network/reqresp/handlers/blobSidecarsByRange.ts +114 -0
- package/src/network/reqresp/handlers/blobSidecarsByRoot.ts +62 -0
- package/src/network/reqresp/handlers/dataColumnSidecarsByRange.ts +144 -0
- package/src/network/reqresp/handlers/dataColumnSidecarsByRoot.ts +88 -0
- package/src/network/reqresp/handlers/index.ts +78 -0
- package/src/network/reqresp/handlers/lightClientBootstrap.ts +31 -0
- package/src/network/reqresp/handlers/lightClientFinalityUpdate.ts +21 -0
- package/src/network/reqresp/handlers/lightClientOptimisticUpdate.ts +21 -0
- package/src/network/reqresp/handlers/lightClientUpdatesByRange.ts +39 -0
- package/src/network/reqresp/index.ts +2 -0
- package/src/network/reqresp/interface.ts +45 -0
- package/src/network/reqresp/protocols.ts +146 -0
- package/src/network/reqresp/rateLimit.ts +112 -0
- package/src/network/reqresp/score.ts +70 -0
- package/src/network/reqresp/types.ts +174 -0
- package/src/network/reqresp/utils/collect.ts +84 -0
- package/src/network/reqresp/utils/collectSequentialBlocksInRange.ts +57 -0
- package/src/network/reqresp/utils/dataColumnResponseValidation.ts +99 -0
- package/src/network/statusCache.ts +17 -0
- package/src/network/subnets/attnetsService.ts +385 -0
- package/src/network/subnets/index.ts +2 -0
- package/src/network/subnets/interface.ts +66 -0
- package/src/network/subnets/syncnetsService.ts +147 -0
- package/src/network/subnets/util.ts +63 -0
- package/src/network/util.ts +29 -0
- package/src/node/index.ts +2 -0
- package/src/node/nodejs.ts +349 -0
- package/src/node/notifier.ts +206 -0
- package/src/node/options.ts +51 -0
- package/src/node/utils/interop/deposits.ts +53 -0
- package/src/node/utils/interop/state.ts +59 -0
- package/src/node/utils/lightclient.ts +7 -0
- package/src/node/utils/state.ts +37 -0
- package/src/sync/backfill/backfill.ts +893 -0
- package/src/sync/backfill/errors.ts +23 -0
- package/src/sync/backfill/index.ts +1 -0
- package/src/sync/backfill/verify.ts +58 -0
- package/src/sync/constants.ts +71 -0
- package/src/sync/index.ts +2 -0
- package/src/sync/interface.ts +55 -0
- package/src/sync/options.ts +45 -0
- package/src/sync/range/batch.ts +455 -0
- package/src/sync/range/chain.ts +715 -0
- package/src/sync/range/range.ts +354 -0
- package/src/sync/range/utils/batches.ts +119 -0
- package/src/sync/range/utils/chainTarget.ts +62 -0
- package/src/sync/range/utils/hashBlocks.ts +27 -0
- package/src/sync/range/utils/index.ts +5 -0
- package/src/sync/range/utils/peerBalancer.ts +184 -0
- package/src/sync/range/utils/updateChains.ts +66 -0
- package/src/sync/sync.ts +290 -0
- package/src/sync/types.ts +57 -0
- package/src/sync/unknownBlock.ts +859 -0
- package/src/sync/utils/downloadByRange.ts +808 -0
- package/src/sync/utils/downloadByRoot.ts +560 -0
- package/src/sync/utils/pendingBlocksTree.ts +97 -0
- package/src/sync/utils/remoteSyncType.ts +144 -0
- package/src/util/address.ts +3 -0
- package/src/util/array.ts +311 -0
- package/src/util/asyncIterableToEvents.ts +164 -0
- package/src/util/binarySearch.ts +48 -0
- package/src/util/bitArray.ts +84 -0
- package/src/util/blobs.ts +210 -0
- package/src/util/bufferPool.ts +95 -0
- package/src/util/bytes.ts +11 -0
- package/src/util/chunkify.ts +27 -0
- package/src/util/clock.ts +204 -0
- package/src/util/dataColumns.ts +415 -0
- package/src/util/dependentRoot.ts +47 -0
- package/src/util/enum.ts +17 -0
- package/src/util/error.ts +56 -0
- package/src/util/eventLoop.ts +22 -0
- package/src/util/execution.ts +223 -0
- package/src/util/file.ts +52 -0
- package/src/util/forkChoice.ts +5 -0
- package/src/util/forkName.ts +20 -0
- package/src/util/graffiti.ts +39 -0
- package/src/util/hex.ts +9 -0
- package/src/util/index.ts +2 -0
- package/src/util/ip.ts +6 -0
- package/src/util/itTrigger.ts +49 -0
- package/src/util/kzg.ts +3 -0
- package/src/util/map.ts +77 -0
- package/src/util/metadata.ts +22 -0
- package/src/util/multifork.ts +69 -0
- package/src/util/numpy.ts +8 -0
- package/src/util/peerId.ts +16 -0
- package/src/util/profile.ts +54 -0
- package/src/util/promises.ts +14 -0
- package/src/util/queue/errors.ts +14 -0
- package/src/util/queue/fnQueue.ts +16 -0
- package/src/util/queue/index.ts +4 -0
- package/src/util/queue/itemQueue.ts +128 -0
- package/src/util/queue/options.ts +37 -0
- package/src/util/serializedCache.ts +20 -0
- package/src/util/set.ts +62 -0
- package/src/util/shuffle.ts +21 -0
- package/src/util/sortBy.ts +19 -0
- package/src/util/sszBytes.ts +481 -0
- package/src/util/strictEvents.ts +8 -0
- package/src/util/time.ts +13 -0
- package/src/util/timeSeries.ts +118 -0
- package/src/util/types.ts +31 -0
- package/src/util/workerEvents.ts +142 -0
- package/src/util/wrapError.ts +27 -0
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
import {Signature, aggregateSignatures} from "@chainsafe/blst";
|
|
2
|
+
import {BitArray} from "@chainsafe/ssz";
|
|
3
|
+
import {SYNC_COMMITTEE_SIZE, SYNC_COMMITTEE_SUBNET_SIZE} from "@lodestar/params";
|
|
4
|
+
import {G2_POINT_AT_INFINITY} from "@lodestar/state-transition";
|
|
5
|
+
import {Root, Slot, SubnetID, altair, ssz} from "@lodestar/types";
|
|
6
|
+
import {Logger, MapDef, toRootHex} from "@lodestar/utils";
|
|
7
|
+
import {MAXIMUM_GOSSIP_CLOCK_DISPARITY} from "../../constants/constants.js";
|
|
8
|
+
import {Metrics} from "../../metrics/metrics.js";
|
|
9
|
+
import {IClock} from "../../util/clock.js";
|
|
10
|
+
import {InsertOutcome, OpPoolError, OpPoolErrorCode} from "./types.js";
|
|
11
|
+
import {pruneBySlot, signatureFromBytesNoCheck} from "./utils.js";
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* SyncCommittee aggregates are only useful for the next block they have signed.
|
|
15
|
+
*/
|
|
16
|
+
const SLOTS_RETAINED = 8;
|
|
17
|
+
|
|
18
|
+
/**
|
|
19
|
+
* The maximum number of distinct `SyncAggregateFast` that will be stored in each slot.
|
|
20
|
+
*
|
|
21
|
+
* This is a DoS protection measure.
|
|
22
|
+
*/
|
|
23
|
+
const MAX_ITEMS_PER_SLOT = 512;
|
|
24
|
+
|
|
25
|
+
// SyncContributionAndProofPool constructor ensures SYNC_COMMITTEE_SUBNET_SIZE is multiple of 8
|
|
26
|
+
const SYNC_COMMITTEE_SUBNET_BYTES = SYNC_COMMITTEE_SUBNET_SIZE / 8;
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* A one-one mapping to SyncContribution with fast data structure to help speed up the aggregation.
|
|
30
|
+
*/
|
|
31
|
+
export type SyncContributionFast = {
|
|
32
|
+
syncSubcommitteeBits: BitArray;
|
|
33
|
+
numParticipants: number;
|
|
34
|
+
syncSubcommitteeSignature: Uint8Array;
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
/** Hex string of `contribution.beaconBlockRoot` */
|
|
38
|
+
type BlockRootHex = string;
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Cache SyncCommitteeContribution and seen ContributionAndProof.
|
|
42
|
+
* This is used for SignedContributionAndProof validation and block factory.
|
|
43
|
+
* This stays in-memory and should be pruned per slot.
|
|
44
|
+
*/
|
|
45
|
+
export class SyncContributionAndProofPool {
|
|
46
|
+
private readonly bestContributionBySubnetRootBySlot = new MapDef<
|
|
47
|
+
Slot,
|
|
48
|
+
MapDef<BlockRootHex, Map<SubnetID, SyncContributionFast>>
|
|
49
|
+
>(() => new MapDef<BlockRootHex, Map<SubnetID, SyncContributionFast>>(() => new Map<number, SyncContributionFast>()));
|
|
50
|
+
|
|
51
|
+
private lowestPermissibleSlot = 0;
|
|
52
|
+
|
|
53
|
+
constructor(
|
|
54
|
+
private readonly clock: IClock,
|
|
55
|
+
private readonly metrics: Metrics | null = null,
|
|
56
|
+
private logger: Logger | null = null
|
|
57
|
+
) {
|
|
58
|
+
// Param guarantee for optimizations below that merge syncSubcommitteeBits as bytes
|
|
59
|
+
if (SYNC_COMMITTEE_SUBNET_SIZE % 8 !== 0) {
|
|
60
|
+
throw Error("SYNC_COMMITTEE_SUBNET_SIZE must be multiple of 8");
|
|
61
|
+
}
|
|
62
|
+
metrics?.opPool.syncContributionAndProofPool.size.addCollect(() => this.onScrapeMetrics(metrics));
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/** Returns current count of unique SyncContributionFast by block root and subnet */
|
|
66
|
+
get size(): number {
|
|
67
|
+
let count = 0;
|
|
68
|
+
for (const bestContributionByRootBySubnet of this.bestContributionBySubnetRootBySlot.values()) {
|
|
69
|
+
for (const bestContributionByRoot of bestContributionByRootBySubnet.values()) {
|
|
70
|
+
count += bestContributionByRoot.size;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return count;
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* Only call this once we pass all validation.
|
|
78
|
+
*/
|
|
79
|
+
add(
|
|
80
|
+
contributionAndProof: altair.ContributionAndProof,
|
|
81
|
+
syncCommitteeParticipants: number,
|
|
82
|
+
priority?: boolean
|
|
83
|
+
): InsertOutcome {
|
|
84
|
+
const {contribution} = contributionAndProof;
|
|
85
|
+
const {slot, beaconBlockRoot} = contribution;
|
|
86
|
+
const rootHex = toRootHex(beaconBlockRoot);
|
|
87
|
+
|
|
88
|
+
// Reject if too old.
|
|
89
|
+
if (slot < this.lowestPermissibleSlot) {
|
|
90
|
+
return InsertOutcome.Old;
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
// Reject ContributionAndProofs of previous slots
|
|
94
|
+
// for api ContributionAndProofs, we allow them to be added to the pool
|
|
95
|
+
if (!priority && slot < this.clock.slotWithPastTolerance(MAXIMUM_GOSSIP_CLOCK_DISPARITY)) {
|
|
96
|
+
return InsertOutcome.Late;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// Limit object per slot
|
|
100
|
+
const bestContributionBySubnetByRoot = this.bestContributionBySubnetRootBySlot.getOrDefault(slot);
|
|
101
|
+
if (bestContributionBySubnetByRoot.size >= MAX_ITEMS_PER_SLOT) {
|
|
102
|
+
throw new OpPoolError({code: OpPoolErrorCode.REACHED_MAX_PER_SLOT});
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
const bestContributionBySubnet = bestContributionBySubnetByRoot.getOrDefault(rootHex);
|
|
106
|
+
const subnet = contribution.subcommitteeIndex;
|
|
107
|
+
const bestContribution = bestContributionBySubnet.get(subnet);
|
|
108
|
+
if (bestContribution) {
|
|
109
|
+
return replaceIfBetter(bestContribution, contribution, syncCommitteeParticipants);
|
|
110
|
+
}
|
|
111
|
+
bestContributionBySubnet.set(subnet, contributionToFast(contribution, syncCommitteeParticipants));
|
|
112
|
+
return InsertOutcome.NewData;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* This is for producing blocks, the same to process_sync_committee_contributions in the spec.
|
|
117
|
+
*/
|
|
118
|
+
getAggregate(slot: Slot, prevBlockRoot: Root): altair.SyncAggregate {
|
|
119
|
+
const opPoolMetrics = this.metrics?.opPool.syncContributionAndProofPool;
|
|
120
|
+
const bestContributionBySubnetByRoot = this.bestContributionBySubnetRootBySlot.getOrDefault(slot);
|
|
121
|
+
opPoolMetrics?.getAggregateRoots.set(bestContributionBySubnetByRoot.size);
|
|
122
|
+
const prevBlockRootHex = toRootHex(prevBlockRoot);
|
|
123
|
+
const bestContributionBySubnet = bestContributionBySubnetByRoot.get(prevBlockRootHex) ?? new Map();
|
|
124
|
+
opPoolMetrics?.getAggregateSubnets.set(bestContributionBySubnet.size);
|
|
125
|
+
|
|
126
|
+
if (bestContributionBySubnet.size === 0) {
|
|
127
|
+
opPoolMetrics?.getAggregateReturnsEmpty.inc();
|
|
128
|
+
// this may happen, see https://github.com/ChainSafe/lodestar/issues/7299
|
|
129
|
+
const availableRoots = Array.from(bestContributionBySubnetByRoot.keys()).join(",");
|
|
130
|
+
this.logger?.warn("SyncContributionAndProofPool.getAggregate: no contributions for root", {
|
|
131
|
+
slot,
|
|
132
|
+
root: prevBlockRootHex,
|
|
133
|
+
availableRoots,
|
|
134
|
+
});
|
|
135
|
+
// Must return signature as G2_POINT_AT_INFINITY when participating bits are empty
|
|
136
|
+
// https://github.com/ethereum/consensus-specs/blob/30f2a076377264677e27324a8c3c78c590ae5e20/specs/altair/bls.md#eth2_fast_aggregate_verify
|
|
137
|
+
return {
|
|
138
|
+
syncCommitteeBits: ssz.altair.SyncCommitteeBits.defaultValue(),
|
|
139
|
+
syncCommitteeSignature: G2_POINT_AT_INFINITY,
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
return aggregate(bestContributionBySubnet, this.metrics);
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
/**
|
|
147
|
+
* Prune per head slot.
|
|
148
|
+
* SyncCommittee aggregates are only useful for the next block they have signed.
|
|
149
|
+
* We don't want to prune by clock slot in case there's a long period of skipped slots.
|
|
150
|
+
*/
|
|
151
|
+
prune(headSlot: Slot): void {
|
|
152
|
+
pruneBySlot(this.bestContributionBySubnetRootBySlot, headSlot, SLOTS_RETAINED);
|
|
153
|
+
this.lowestPermissibleSlot = Math.max(headSlot - SLOTS_RETAINED, 0);
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
private onScrapeMetrics(metrics: Metrics): void {
|
|
157
|
+
const poolMetrics = metrics.opPool.syncContributionAndProofPool;
|
|
158
|
+
poolMetrics.size.set(this.size);
|
|
159
|
+
const previousSlot = this.clock.currentSlot - 1;
|
|
160
|
+
const contributionBySubnetByBlockRoot = this.bestContributionBySubnetRootBySlot.getOrDefault(previousSlot);
|
|
161
|
+
poolMetrics.blockRootsPerSlot.set(contributionBySubnetByBlockRoot.size);
|
|
162
|
+
let index = 0;
|
|
163
|
+
for (const contributionsBySubnet of contributionBySubnetByBlockRoot.values()) {
|
|
164
|
+
let participationCount = 0;
|
|
165
|
+
for (const contribution of contributionsBySubnet.values()) {
|
|
166
|
+
participationCount += contribution.numParticipants;
|
|
167
|
+
}
|
|
168
|
+
poolMetrics.subnetsByBlockRoot.set({index}, contributionsBySubnet.size);
|
|
169
|
+
poolMetrics.participantsByBlockRoot.set({index}, participationCount);
|
|
170
|
+
index++;
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* Mutate bestContribution if new contribution has more participants
|
|
177
|
+
*/
|
|
178
|
+
export function replaceIfBetter(
|
|
179
|
+
bestContribution: SyncContributionFast,
|
|
180
|
+
newContribution: altair.SyncCommitteeContribution,
|
|
181
|
+
newNumParticipants: number
|
|
182
|
+
): InsertOutcome {
|
|
183
|
+
const {numParticipants} = bestContribution;
|
|
184
|
+
|
|
185
|
+
if (newNumParticipants <= numParticipants) {
|
|
186
|
+
return InsertOutcome.NotBetterThan;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
bestContribution.syncSubcommitteeBits = newContribution.aggregationBits;
|
|
190
|
+
bestContribution.numParticipants = newNumParticipants;
|
|
191
|
+
bestContribution.syncSubcommitteeSignature = newContribution.signature;
|
|
192
|
+
return InsertOutcome.NewData;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
/**
|
|
196
|
+
* Format `contribution` into an efficient data structure to aggregate later.
|
|
197
|
+
*/
|
|
198
|
+
export function contributionToFast(
|
|
199
|
+
contribution: altair.SyncCommitteeContribution,
|
|
200
|
+
numParticipants: number
|
|
201
|
+
): SyncContributionFast {
|
|
202
|
+
return {
|
|
203
|
+
// No need to clone, aggregationBits are not mutated, only replaced
|
|
204
|
+
syncSubcommitteeBits: contribution.aggregationBits,
|
|
205
|
+
numParticipants,
|
|
206
|
+
// No need to deserialize, signatures are not aggregated until when calling .getAggregate()
|
|
207
|
+
syncSubcommitteeSignature: contribution.signature,
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
/**
|
|
212
|
+
* Aggregate best contributions of each subnet into SyncAggregate
|
|
213
|
+
* @returns SyncAggregate to be included in block body.
|
|
214
|
+
*/
|
|
215
|
+
export function aggregate(
|
|
216
|
+
bestContributionBySubnet: Map<number, SyncContributionFast>,
|
|
217
|
+
metrics: Metrics | null = null
|
|
218
|
+
): altair.SyncAggregate {
|
|
219
|
+
// check for empty/undefined bestContributionBySubnet earlier
|
|
220
|
+
const syncCommitteeBits = BitArray.fromBitLen(SYNC_COMMITTEE_SIZE);
|
|
221
|
+
|
|
222
|
+
const signatures: Signature[] = [];
|
|
223
|
+
let participationCount = 0;
|
|
224
|
+
for (const [subnet, bestContribution] of bestContributionBySubnet.entries()) {
|
|
225
|
+
participationCount += bestContribution.numParticipants;
|
|
226
|
+
const byteOffset = subnet * SYNC_COMMITTEE_SUBNET_BYTES;
|
|
227
|
+
|
|
228
|
+
for (let i = 0; i < SYNC_COMMITTEE_SUBNET_BYTES; i++) {
|
|
229
|
+
syncCommitteeBits.uint8Array[byteOffset + i] = bestContribution.syncSubcommitteeBits.uint8Array[i];
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
signatures.push(signatureFromBytesNoCheck(bestContribution.syncSubcommitteeSignature));
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
metrics?.opPool.syncContributionAndProofPool.getAggregateParticipants.set(participationCount);
|
|
236
|
+
return {
|
|
237
|
+
syncCommitteeBits,
|
|
238
|
+
syncCommitteeSignature: aggregateSignatures(signatures).toBytes(),
|
|
239
|
+
};
|
|
240
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import {Slot} from "@lodestar/types";
|
|
2
|
+
import {LodestarError} from "@lodestar/utils";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Result of adding data to an operation pool of an aggregatable object.
|
|
6
|
+
*/
|
|
7
|
+
export enum InsertOutcome {
|
|
8
|
+
/** The data had not been seen before and was added to the pool. */
|
|
9
|
+
NewData = "NewData",
|
|
10
|
+
/** A validator signature for a participant of this data is already known. No changes were made. */
|
|
11
|
+
AlreadyKnown = "AlreadyKnown",
|
|
12
|
+
/** Not existing in the pool but it's too old to add. No changes were made. */
|
|
13
|
+
Old = "Old",
|
|
14
|
+
/** The pool has reached its limit. No changes were made. */
|
|
15
|
+
ReachLimit = "ReachLimit",
|
|
16
|
+
/** Messages don't bring any value, for example attestations come to the pool at > 2/3 of slot. No changes were made */
|
|
17
|
+
Late = "Late",
|
|
18
|
+
/** The data is know, and the new participants have been added to the aggregated signature */
|
|
19
|
+
Aggregated = "Aggregated",
|
|
20
|
+
/** The data is not better than the existing data*/
|
|
21
|
+
NotBetterThan = "NotBetterThan",
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export enum OpPoolErrorCode {
|
|
25
|
+
/** The given object slot was too low to be stored. No changes were made. */
|
|
26
|
+
SLOT_TOO_LOW = "OP_POOL_ERROR_SLOT_TOO_LOW",
|
|
27
|
+
/** Reached max number of unique objects per slot. This is a DoS protection function. */
|
|
28
|
+
REACHED_MAX_PER_SLOT = "OP_POOL_ERROR_REACHED_MAX_PER_SLOT",
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export type OpPoolErrorType =
|
|
32
|
+
| {code: OpPoolErrorCode.SLOT_TOO_LOW; slot: Slot; lowestPermissibleSlot: Slot}
|
|
33
|
+
| {code: OpPoolErrorCode.REACHED_MAX_PER_SLOT};
|
|
34
|
+
|
|
35
|
+
export class OpPoolError extends LodestarError<OpPoolErrorType> {}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import {Signature} from "@chainsafe/blst";
|
|
2
|
+
import {BLS_WITHDRAWAL_PREFIX} from "@lodestar/params";
|
|
3
|
+
import {CachedBeaconStateAllForks} from "@lodestar/state-transition";
|
|
4
|
+
import {Slot, capella} from "@lodestar/types";
|
|
5
|
+
import {AggregateFast, AggregateFastElectra} from "./attestationPool.js";
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Prune a Map indexed by slot to keep the most recent slots, up to `slotsRetained`
|
|
9
|
+
*/
|
|
10
|
+
export function pruneBySlot(map: Map<Slot, unknown>, slot: Slot, slotsRetained: Slot): Slot {
|
|
11
|
+
const lowestPermissibleSlot = Math.max(slot - slotsRetained, 0);
|
|
12
|
+
|
|
13
|
+
// No need to prune if the lowest permissible slot has not changed and the queue length is less than the maximum
|
|
14
|
+
if (map.size <= slotsRetained) {
|
|
15
|
+
return lowestPermissibleSlot;
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
// Remove the oldest slots to keep a max of `slotsRetained` slots
|
|
19
|
+
const slots = Array.from(map.keys());
|
|
20
|
+
const slotsToDelete = slots.sort((a, b) => b - a).slice(slotsRetained);
|
|
21
|
+
for (const slot of slotsToDelete) {
|
|
22
|
+
map.delete(slot);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
return lowestPermissibleSlot;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* De-serialize bytes into Signature.
|
|
30
|
+
* No need to verify Signature is valid, already run sig-verify = false
|
|
31
|
+
*/
|
|
32
|
+
export function signatureFromBytesNoCheck(signature: Uint8Array): Signature {
|
|
33
|
+
return Signature.fromBytes(signature);
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* Ensures that a SignedBLSToExecutionChange object is _still_ valid for block inclusion. An object valid for the pool,
|
|
38
|
+
* can become invalid for certain forks.
|
|
39
|
+
*/
|
|
40
|
+
export function isValidBlsToExecutionChangeForBlockInclusion(
|
|
41
|
+
state: CachedBeaconStateAllForks,
|
|
42
|
+
signedBLSToExecutionChange: capella.SignedBLSToExecutionChange
|
|
43
|
+
): boolean {
|
|
44
|
+
// For each condition from https://github.com/ethereum/consensus-specs/blob/dev/specs/capella/beacon-chain.md#new-process_bls_to_execution_change
|
|
45
|
+
//
|
|
46
|
+
// 1. assert address_change.validator_index < len(state.validators):
|
|
47
|
+
// If valid before will always be valid in the future, no need to check
|
|
48
|
+
//
|
|
49
|
+
// 2. assert validator.withdrawal_credentials[:1] == BLS_WITHDRAWAL_PREFIX:
|
|
50
|
+
// Must be checked again, since it can already be changed by now.
|
|
51
|
+
const validator = state.validators.getReadonly(signedBLSToExecutionChange.message.validatorIndex);
|
|
52
|
+
const {withdrawalCredentials} = validator;
|
|
53
|
+
if (withdrawalCredentials[0] !== BLS_WITHDRAWAL_PREFIX) {
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
// 3. assert validator.withdrawal_credentials[1:] == hash(address_change.from_bls_pubkey)[1:]:
|
|
58
|
+
// If valid before will always be valid in the future, no need to check
|
|
59
|
+
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export function isElectraAggregate(aggregate: AggregateFast): aggregate is AggregateFastElectra {
|
|
64
|
+
return (aggregate as AggregateFastElectra).committeeBits !== undefined;
|
|
65
|
+
}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import {SAFE_SLOTS_TO_IMPORT_OPTIMISTICALLY} from "@lodestar/params";
|
|
2
|
+
import {defaultOptions as defaultValidatorOptions} from "@lodestar/validator";
|
|
3
|
+
import {DEFAULT_ARCHIVE_MODE} from "./archiveStore/constants.js";
|
|
4
|
+
import {ArchiveMode, ArchiveStoreOpts} from "./archiveStore/interface.js";
|
|
5
|
+
import {ForkChoiceOpts} from "./forkChoice/index.js";
|
|
6
|
+
import {LightClientServerOpts} from "./lightClient/index.js";
|
|
7
|
+
import {ShufflingCacheOpts} from "./shufflingCache.js";
|
|
8
|
+
import {DEFAULT_MAX_BLOCK_STATES, FIFOBlockStateCacheOpts} from "./stateCache/fifoBlockStateCache.js";
|
|
9
|
+
import {
|
|
10
|
+
DEFAULT_MAX_CP_STATE_EPOCHS_IN_MEMORY,
|
|
11
|
+
PersistentCheckpointStateCacheOpts,
|
|
12
|
+
} from "./stateCache/persistentCheckpointsCache.js";
|
|
13
|
+
import {ValidatorMonitorOpts} from "./validatorMonitor.js";
|
|
14
|
+
|
|
15
|
+
export {ArchiveMode, DEFAULT_ARCHIVE_MODE};
|
|
16
|
+
|
|
17
|
+
export type IChainOptions = BlockProcessOpts &
|
|
18
|
+
PoolOpts &
|
|
19
|
+
SeenCacheOpts &
|
|
20
|
+
ForkChoiceOpts &
|
|
21
|
+
ArchiveStoreOpts &
|
|
22
|
+
FIFOBlockStateCacheOpts &
|
|
23
|
+
PersistentCheckpointStateCacheOpts &
|
|
24
|
+
ShufflingCacheOpts &
|
|
25
|
+
ValidatorMonitorOpts &
|
|
26
|
+
LightClientServerOpts & {
|
|
27
|
+
blsVerifyAllMainThread?: boolean;
|
|
28
|
+
blsVerifyAllMultiThread?: boolean;
|
|
29
|
+
blacklistedBlocks?: string[];
|
|
30
|
+
persistProducedBlocks?: boolean;
|
|
31
|
+
persistInvalidSszObjects?: boolean;
|
|
32
|
+
persistInvalidSszObjectsDir?: string;
|
|
33
|
+
persistOrphanedBlocks?: boolean;
|
|
34
|
+
persistOrphanedBlocksDir?: string;
|
|
35
|
+
skipCreateStateCacheIfAvailable?: boolean;
|
|
36
|
+
suggestedFeeRecipient: string;
|
|
37
|
+
maxSkipSlots?: number;
|
|
38
|
+
/** Ensure blobs returned by the execution engine are valid */
|
|
39
|
+
sanityCheckExecutionEngineBlobs?: boolean;
|
|
40
|
+
/** Max number of produced blobs by local validators to cache */
|
|
41
|
+
maxCachedBlobSidecars?: number;
|
|
42
|
+
/** Max number of produced block roots (blinded or full) cached for broadcast validations */
|
|
43
|
+
maxCachedProducedRoots?: number;
|
|
44
|
+
/** Subscribe to and custody all data column sidecar subnets */
|
|
45
|
+
supernode?: boolean;
|
|
46
|
+
initialCustodyGroupCount?: number;
|
|
47
|
+
broadcastValidationStrictness?: string;
|
|
48
|
+
minSameMessageSignatureSetsToBatch: number;
|
|
49
|
+
archiveDateEpochs?: number;
|
|
50
|
+
nHistoricalStates?: boolean;
|
|
51
|
+
nHistoricalStatesFileDataStore?: boolean;
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
export type BlockProcessOpts = {
|
|
55
|
+
/**
|
|
56
|
+
* Do not use BLS batch verify to validate all block signatures at once.
|
|
57
|
+
* Will double processing times. Use only for debugging purposes.
|
|
58
|
+
*/
|
|
59
|
+
disableBlsBatchVerify?: boolean;
|
|
60
|
+
/**
|
|
61
|
+
* Override SAFE_SLOTS_TO_IMPORT_OPTIMISTICALLY
|
|
62
|
+
*/
|
|
63
|
+
safeSlotsToImportOptimistically?: number;
|
|
64
|
+
/**
|
|
65
|
+
* Assert progressive balances the same to EpochTransitionCache
|
|
66
|
+
*/
|
|
67
|
+
assertCorrectProgressiveBalances?: boolean;
|
|
68
|
+
/** Used for fork_choice spec tests */
|
|
69
|
+
disableOnBlockError?: boolean;
|
|
70
|
+
/** Used for fork_choice spec tests */
|
|
71
|
+
disablePrepareNextSlot?: boolean;
|
|
72
|
+
/**
|
|
73
|
+
* Used to connect beacon in follow mode to an EL,
|
|
74
|
+
* will still issue fcU for block proposal
|
|
75
|
+
*/
|
|
76
|
+
disableImportExecutionFcU?: boolean;
|
|
77
|
+
emitPayloadAttributes?: boolean;
|
|
78
|
+
|
|
79
|
+
/**
|
|
80
|
+
* Used to specify to specify to run verifications only and not
|
|
81
|
+
* to save the block or log transitions for e.g. doing
|
|
82
|
+
* broadcastValidation while publishing the block
|
|
83
|
+
*/
|
|
84
|
+
verifyOnly?: boolean;
|
|
85
|
+
/** Used to specify to skip execution payload validation */
|
|
86
|
+
skipVerifyExecutionPayload?: boolean;
|
|
87
|
+
/** Used to specify to skip block signatures validation */
|
|
88
|
+
skipVerifyBlockSignatures?: boolean;
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
export type PoolOpts = {
|
|
92
|
+
/**
|
|
93
|
+
* Only preaggregate attestation/sync committee message since clockSlot - preaggregateSlotDistance
|
|
94
|
+
*/
|
|
95
|
+
preaggregateSlotDistance?: number;
|
|
96
|
+
};
|
|
97
|
+
|
|
98
|
+
export type SeenCacheOpts = {
|
|
99
|
+
/**
|
|
100
|
+
* Slot distance from current slot to cache AttestationData
|
|
101
|
+
*/
|
|
102
|
+
attDataCacheSlotDistance?: number;
|
|
103
|
+
};
|
|
104
|
+
|
|
105
|
+
export const defaultChainOptions: IChainOptions = {
|
|
106
|
+
blsVerifyAllMainThread: false,
|
|
107
|
+
blsVerifyAllMultiThread: false,
|
|
108
|
+
blacklistedBlocks: [],
|
|
109
|
+
disableBlsBatchVerify: false,
|
|
110
|
+
proposerBoost: true,
|
|
111
|
+
proposerBoostReorg: true,
|
|
112
|
+
computeUnrealized: true,
|
|
113
|
+
safeSlotsToImportOptimistically: SAFE_SLOTS_TO_IMPORT_OPTIMISTICALLY,
|
|
114
|
+
suggestedFeeRecipient: defaultValidatorOptions.suggestedFeeRecipient,
|
|
115
|
+
serveHistoricalState: false,
|
|
116
|
+
assertCorrectProgressiveBalances: false,
|
|
117
|
+
archiveStateEpochFrequency: 1024,
|
|
118
|
+
archiveMode: DEFAULT_ARCHIVE_MODE,
|
|
119
|
+
pruneHistory: false,
|
|
120
|
+
emitPayloadAttributes: false,
|
|
121
|
+
supernode: false,
|
|
122
|
+
// for gossip block validation, it's unlikely we see a reorg with 32 slots
|
|
123
|
+
// for attestation validation, having this value ensures we don't have to regen states most of the time
|
|
124
|
+
maxSkipSlots: 32,
|
|
125
|
+
broadcastValidationStrictness: "warn",
|
|
126
|
+
// should be less than or equal to MIN_SIGNATURE_SETS_TO_BATCH_VERIFY
|
|
127
|
+
// batching too much may block the I/O thread so if useWorker=false, suggest this value to be 32
|
|
128
|
+
// since this batch attestation work is designed to work with useWorker=true, make this the lowest value
|
|
129
|
+
minSameMessageSignatureSetsToBatch: 2,
|
|
130
|
+
nHistoricalStates: true,
|
|
131
|
+
// as of Feb 2025, this option turned out to be very useful:
|
|
132
|
+
// - it allows to share a persisted checkpoint state to other nodes
|
|
133
|
+
// - users can prune the persisted checkpoint state files manually to save disc space
|
|
134
|
+
// - it helps debug easier when network is unfinalized
|
|
135
|
+
nHistoricalStatesFileDataStore: true,
|
|
136
|
+
maxBlockStates: DEFAULT_MAX_BLOCK_STATES,
|
|
137
|
+
maxCPStateEpochsInMemory: DEFAULT_MAX_CP_STATE_EPOCHS_IN_MEMORY,
|
|
138
|
+
};
|