@lodestar/beacon-node 1.35.0-dev.83de5b8dea → 1.35.0-dev.8689cc3545
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/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.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.map +1 -0
- 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/blobSidecarsArchive.d.ts.map +1 -0
- 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.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/dataColumnSidecarArchive.d.ts.map +1 -0
- 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.map +1 -0
- 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.map +1 -0
- 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/network.d.ts.map +1 -0
- 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.map +1 -0
- 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.map +1 -0
- package/lib/sync/unknownBlock.d.ts.map +1 -0
- package/lib/sync/utils/downloadByRange.d.ts.map +1 -0
- package/lib/sync/utils/downloadByRoot.d.ts.map +1 -0
- 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 +17 -19
- 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 +497 -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 +59 -0
- package/src/sync/unknownBlock.ts +862 -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,113 @@
|
|
|
1
|
+
import {EventEmitter} from "node:events";
|
|
2
|
+
import {StrictEventEmitter} from "strict-event-emitter-types";
|
|
3
|
+
import {routes} from "@lodestar/api";
|
|
4
|
+
import {CheckpointWithHex} from "@lodestar/fork-choice";
|
|
5
|
+
import {CachedBeaconStateAllForks} from "@lodestar/state-transition";
|
|
6
|
+
import {RootOptionalSlot, deneb, fulu, phase0} from "@lodestar/types";
|
|
7
|
+
import {PeerIdStr} from "../util/peerId.js";
|
|
8
|
+
import {BlockInputSource, IBlockInput} from "./blocks/blockInput/types.js";
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Important chain events that occur during normal chain operation.
|
|
12
|
+
*
|
|
13
|
+
* Chain events can be broken into several categories:
|
|
14
|
+
* - Clock: the chain's clock is updated
|
|
15
|
+
* - Fork Choice: the chain's fork choice is updated
|
|
16
|
+
* - Checkpointing: the chain processes epoch boundaries
|
|
17
|
+
*/
|
|
18
|
+
export enum ChainEvent {
|
|
19
|
+
/**
|
|
20
|
+
* This event signals that the chain has processed (or reprocessed) a checkpoint.
|
|
21
|
+
*
|
|
22
|
+
* This event is not tied to clock events, but rather tied to generation (or regeneration) of state.
|
|
23
|
+
* This event is guaranteed to be called after _any_ checkpoint is processed, including skip-slot checkpoints, checkpoints that are formed as a result of processing blocks, etc.
|
|
24
|
+
*/
|
|
25
|
+
checkpoint = "checkpoint",
|
|
26
|
+
/**
|
|
27
|
+
* This event signals that the fork choice store has been updated.
|
|
28
|
+
*
|
|
29
|
+
* This event is guaranteed to be triggered whenever the fork choice justified checkpoint is updated. This is either in response to a newly processed block or a new clock tick.
|
|
30
|
+
*/
|
|
31
|
+
forkChoiceJustified = "forkChoice:justified",
|
|
32
|
+
/**
|
|
33
|
+
* This event signals that the fork choice store has been updated.
|
|
34
|
+
*
|
|
35
|
+
* This event is guaranteed to be triggered whenever the fork choice justified checkpoint is updated. This is in response to a newly processed block.
|
|
36
|
+
*/
|
|
37
|
+
forkChoiceFinalized = "forkChoice:finalized",
|
|
38
|
+
/**
|
|
39
|
+
* This event signals that dependent services (e.g. custody sampling) should update to account for the new target group count.
|
|
40
|
+
*/
|
|
41
|
+
updateTargetCustodyGroupCount = "updateTargetCustodyGroupCount",
|
|
42
|
+
/**
|
|
43
|
+
* This event signals that data columns have been fetched from the execution engine
|
|
44
|
+
* and are ready to be published.
|
|
45
|
+
*/
|
|
46
|
+
publishDataColumns = "publishDataColumns",
|
|
47
|
+
/**
|
|
48
|
+
* This event signals that blobs have been fetched from the execution engine
|
|
49
|
+
* and are ready to be published.
|
|
50
|
+
*/
|
|
51
|
+
publishBlobSidecars = "publishBlobSidecars",
|
|
52
|
+
/**
|
|
53
|
+
* Trigger an update of status so reqresp by peers have current earliestAvailableSlot
|
|
54
|
+
*/
|
|
55
|
+
updateStatus = "updateStatus",
|
|
56
|
+
/**
|
|
57
|
+
* Trigger a BlockInputSync for blocks where the parentRoot is not known to fork choice
|
|
58
|
+
*/
|
|
59
|
+
unknownParent = "unknownParent",
|
|
60
|
+
/**
|
|
61
|
+
* Trigger BlockInputSync for objects that correspond to a block that is not known to fork choice
|
|
62
|
+
*/
|
|
63
|
+
unknownBlockRoot = "unknownBlockRoot",
|
|
64
|
+
/**
|
|
65
|
+
* Trigger BlockInputSync for blocks that are partially received via gossip but are not complete by time the
|
|
66
|
+
* cut-off window passes for waiting on gossip
|
|
67
|
+
*/
|
|
68
|
+
incompleteBlockInput = "incompleteBlockInput",
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export type HeadEventData = routes.events.EventData[routes.events.EventType.head];
|
|
72
|
+
export type ReorgEventData = routes.events.EventData[routes.events.EventType.chainReorg];
|
|
73
|
+
|
|
74
|
+
// API events are emitted through the same ChainEventEmitter for re-use internally
|
|
75
|
+
type ApiEvents = {[K in routes.events.EventType]: (data: routes.events.EventData[K]) => void};
|
|
76
|
+
|
|
77
|
+
export type ChainEventData = {
|
|
78
|
+
[ChainEvent.unknownParent]: {blockInput: IBlockInput; peer: PeerIdStr; source: BlockInputSource};
|
|
79
|
+
[ChainEvent.unknownBlockRoot]: {rootSlot: RootOptionalSlot; peer?: PeerIdStr; source: BlockInputSource};
|
|
80
|
+
[ChainEvent.incompleteBlockInput]: {blockInput: IBlockInput; peer: PeerIdStr; source: BlockInputSource};
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
export type IChainEvents = ApiEvents & {
|
|
84
|
+
[ChainEvent.checkpoint]: (checkpoint: phase0.Checkpoint, state: CachedBeaconStateAllForks) => void;
|
|
85
|
+
|
|
86
|
+
[ChainEvent.forkChoiceJustified]: (checkpoint: CheckpointWithHex) => void;
|
|
87
|
+
[ChainEvent.forkChoiceFinalized]: (checkpoint: CheckpointWithHex) => void;
|
|
88
|
+
|
|
89
|
+
[ChainEvent.updateTargetCustodyGroupCount]: (targetGroupCount: number) => void;
|
|
90
|
+
|
|
91
|
+
[ChainEvent.publishDataColumns]: (sidecars: fulu.DataColumnSidecar[]) => void;
|
|
92
|
+
|
|
93
|
+
[ChainEvent.publishBlobSidecars]: (sidecars: deneb.BlobSidecar[]) => void;
|
|
94
|
+
|
|
95
|
+
[ChainEvent.updateStatus]: () => void;
|
|
96
|
+
|
|
97
|
+
// Sync events that are chain->chain. Initiated from network requests but do not cross the network
|
|
98
|
+
// barrier so are considered ChainEvent(s).
|
|
99
|
+
[ChainEvent.unknownParent]: (data: ChainEventData[ChainEvent.unknownParent]) => void;
|
|
100
|
+
[ChainEvent.unknownBlockRoot]: (data: ChainEventData[ChainEvent.unknownBlockRoot]) => void;
|
|
101
|
+
[ChainEvent.incompleteBlockInput]: (data: ChainEventData[ChainEvent.incompleteBlockInput]) => void;
|
|
102
|
+
};
|
|
103
|
+
|
|
104
|
+
/**
|
|
105
|
+
* Emits important chain events that occur during normal chain operation.
|
|
106
|
+
*
|
|
107
|
+
* Chain events can be broken into several categories:
|
|
108
|
+
* - Clock: the chain's clock is updated
|
|
109
|
+
* - Fork Choice: the chain's fork choice is updated
|
|
110
|
+
* - Processing: the chain processes attestations and blocks, either successfully or with an error
|
|
111
|
+
* - Checkpointing: the chain processes epoch boundaries
|
|
112
|
+
*/
|
|
113
|
+
export class ChainEventEmitter extends (EventEmitter as {new (): StrictEventEmitter<EventEmitter, IChainEvents>}) {}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
import {Epoch, RootHex, Slot, ValidatorIndex} from "@lodestar/types";
|
|
2
|
+
import {toRootHex} from "@lodestar/utils";
|
|
3
|
+
import {GossipActionError} from "./gossipValidation.js";
|
|
4
|
+
|
|
5
|
+
export enum AttestationErrorCode {
|
|
6
|
+
/**
|
|
7
|
+
* The target state cannot be fetched
|
|
8
|
+
*/
|
|
9
|
+
TARGET_STATE_MISSING = "ATTESTATION_ERROR_TARGET_STATE_MISSING",
|
|
10
|
+
/**
|
|
11
|
+
* The attestation is from a slot that is later than the current slot (with respect to the gossip clock disparity).
|
|
12
|
+
*/
|
|
13
|
+
FUTURE_SLOT = "ATTESTATION_ERROR_FUTURE_SLOT",
|
|
14
|
+
/**
|
|
15
|
+
* The attestation is from a slot that is prior to the earliest permissible slot
|
|
16
|
+
* (with respect to the gossip clock disparity).
|
|
17
|
+
*/
|
|
18
|
+
PAST_SLOT = "ATTESTATION_ERROR_PAST_SLOT",
|
|
19
|
+
/**
|
|
20
|
+
* The attestations aggregation bits were empty when they shouldn't be.
|
|
21
|
+
*/
|
|
22
|
+
EMPTY_AGGREGATION_BITFIELD = "ATTESTATION_ERROR_EMPTY_AGGREGATION_BITFIELD",
|
|
23
|
+
/**
|
|
24
|
+
* The `selection_proof` on the aggregate attestation selects it as a validator,
|
|
25
|
+
* however the aggregator index is not in the committee for that attestation.
|
|
26
|
+
*/
|
|
27
|
+
AGGREGATOR_NOT_IN_COMMITTEE = "ATTESTATION_ERROR_AGGREGATOR_NOT_IN_COMMITTEE",
|
|
28
|
+
/**
|
|
29
|
+
* The aggregator index refers to a validator index that we have not seen.
|
|
30
|
+
*/
|
|
31
|
+
AGGREGATOR_PUBKEY_UNKNOWN = "ATTESTATION_ERROR_AGGREGATOR_PUBKEY_UNKNOWN",
|
|
32
|
+
/**
|
|
33
|
+
* The attestation has been seen before; either in a block, on the gossip network or from a local validator.
|
|
34
|
+
*/
|
|
35
|
+
ATTESTATION_ALREADY_KNOWN = "ATTESTATION_ERROR_ATTESTATION_ALREADY_KNOWN",
|
|
36
|
+
/**
|
|
37
|
+
* There has already been an aggregation observed for this validator, we refuse to process a second.
|
|
38
|
+
*/
|
|
39
|
+
AGGREGATOR_ALREADY_KNOWN = "ATTESTATION_ERROR_AGGREGATOR_ALREADY_KNOWN",
|
|
40
|
+
/**
|
|
41
|
+
* All of the attesters are known, we refuse to process subset of attesting indices since it brings no value.
|
|
42
|
+
*/
|
|
43
|
+
ATTESTERS_ALREADY_KNOWN = "ATTESTATION_ERROR_ATTESTERS_ALREADY_KNOWN",
|
|
44
|
+
/**
|
|
45
|
+
* The aggregator index is higher than the maximum possible validator count.
|
|
46
|
+
*/
|
|
47
|
+
AGGREGATOR_INDEX_TOO_HIGH = "ATTESTATION_ERROR_AGGREGATOR_INDEX_TOO_HIGH",
|
|
48
|
+
/**
|
|
49
|
+
* The `attestation.data.beacon_block_root` block is unknown or prefinalized.
|
|
50
|
+
*/
|
|
51
|
+
UNKNOWN_OR_PREFINALIZED_BEACON_BLOCK_ROOT = "ATTESTATION_ERROR_UNKNOWN_OR_PREFINALIZED_BEACON_BLOCK_ROOT",
|
|
52
|
+
/**
|
|
53
|
+
* The `attestation.data.slot` is not from the same epoch as `data.target.epoch`.
|
|
54
|
+
*/
|
|
55
|
+
BAD_TARGET_EPOCH = "ATTESTATION_ERROR_BAD_TARGET_EPOCH",
|
|
56
|
+
/**
|
|
57
|
+
* The `attestation.data.beaconBlockRoot` is not a descendant of `data.target.root`.
|
|
58
|
+
*/
|
|
59
|
+
HEAD_NOT_TARGET_DESCENDANT = "ATTESTATION_ERROR_HEAD_NOT_TARGET_DESCENDANT",
|
|
60
|
+
/**
|
|
61
|
+
* The target root of the attestation points to a block that we have not verified.
|
|
62
|
+
*/
|
|
63
|
+
UNKNOWN_TARGET_ROOT = "ATTESTATION_ERROR_UNKNOWN_TARGET_ROOT",
|
|
64
|
+
/**
|
|
65
|
+
* A signature on the attestation is invalid.
|
|
66
|
+
*/
|
|
67
|
+
INVALID_SIGNATURE = "ATTESTATION_ERROR_INVALID_SIGNATURE",
|
|
68
|
+
/**
|
|
69
|
+
* The unaggregated attestation doesn't have only one aggregation bit set.
|
|
70
|
+
*/
|
|
71
|
+
NOT_EXACTLY_ONE_AGGREGATION_BIT_SET = "ATTESTATION_ERROR_NOT_EXACTLY_ONE_AGGREGATION_BIT_SET",
|
|
72
|
+
/**
|
|
73
|
+
* We have already observed an attestation for the `validator_index` and refuse to process another.
|
|
74
|
+
*/
|
|
75
|
+
PRIOR_ATTESTATION_KNOWN = "ATTESTATION_ERROR_PRIOR_ATTESTATION_KNOWN",
|
|
76
|
+
/**
|
|
77
|
+
* The attestation is for an epoch in the future (with respect to the gossip clock disparity).
|
|
78
|
+
*/
|
|
79
|
+
FUTURE_EPOCH = "ATTESTATION_ERROR_FUTURE_EPOCH",
|
|
80
|
+
/**
|
|
81
|
+
* The attestation is for an epoch in the past (with respect to the gossip clock disparity).
|
|
82
|
+
*/
|
|
83
|
+
PAST_EPOCH = "ATTESTATION_ERROR_PAST_EPOCH",
|
|
84
|
+
/**
|
|
85
|
+
* The attestation is attesting to a state that is later than itself. (Viz., attesting to the future).
|
|
86
|
+
*/
|
|
87
|
+
ATTESTS_TO_FUTURE_BLOCK = "ATTESTATION_ERROR_ATTESTS_TO_FUTURE_BLOCK",
|
|
88
|
+
/**
|
|
89
|
+
* The attestation was received on an invalid attestation subnet.
|
|
90
|
+
*/
|
|
91
|
+
INVALID_SUBNET_ID = "ATTESTATION_ERROR_INVALID_SUBNET_ID",
|
|
92
|
+
/**
|
|
93
|
+
* Number of aggregation bits does not match committee size
|
|
94
|
+
*/
|
|
95
|
+
WRONG_NUMBER_OF_AGGREGATION_BITS = "ATTESTATION_ERROR_WRONG_NUMBER_OF_AGGREGATION_BITS",
|
|
96
|
+
/**
|
|
97
|
+
* Block did not pass validation during block processing.
|
|
98
|
+
*/
|
|
99
|
+
KNOWN_BAD_BLOCK = "ATTESTATION_ERROR_KNOWN_BAD_BLOCK",
|
|
100
|
+
/**
|
|
101
|
+
* The current finalized checkpoint is not an ancestor of the block defined by attestation.data.beacon_block_root.
|
|
102
|
+
*/
|
|
103
|
+
INVALID_TARGET_ROOT = "ATTESTATION_ERROR_INVALID_TARGET_ROOT",
|
|
104
|
+
/**
|
|
105
|
+
* The The attestation target block is not an ancestor of the block named in the LMD vote.
|
|
106
|
+
*/
|
|
107
|
+
TARGET_BLOCK_NOT_AN_ANCESTOR_OF_LMD_BLOCK = "ATTESTATION_ERROR_TARGET_BLOCK_NOT_AN_ANCESTOR_OF_LMD_BLOCK",
|
|
108
|
+
/**
|
|
109
|
+
* Committee index out of range.
|
|
110
|
+
*/
|
|
111
|
+
COMMITTEE_INDEX_OUT_OF_RANGE = "ATTESTATION_ERROR_COMMITTEE_INDEX_OUT_OF_RANGE",
|
|
112
|
+
/**
|
|
113
|
+
* Missing state to verify attestation
|
|
114
|
+
*/
|
|
115
|
+
MISSING_STATE_TO_VERIFY_ATTESTATION = "ATTESTATION_ERROR_MISSING_STATE_TO_VERIFY_ATTESTATION",
|
|
116
|
+
/**
|
|
117
|
+
* Invalid aggregator.
|
|
118
|
+
*/
|
|
119
|
+
INVALID_AGGREGATOR = "ATTESTATION_ERROR_INVALID_AGGREGATOR",
|
|
120
|
+
/**
|
|
121
|
+
* Invalid attestation indexes: not sorted or unique
|
|
122
|
+
*/
|
|
123
|
+
INVALID_INDEXED_ATTESTATION = "ATTESTATION_ERROR_INVALID_INDEXED_ATTESTATION",
|
|
124
|
+
/**
|
|
125
|
+
* Invalid ssz bytes.
|
|
126
|
+
*/
|
|
127
|
+
INVALID_SERIALIZED_BYTES = "ATTESTATION_ERROR_INVALID_SERIALIZED_BYTES",
|
|
128
|
+
/** Too many skipped slots. */
|
|
129
|
+
TOO_MANY_SKIPPED_SLOTS = "ATTESTATION_ERROR_TOO_MANY_SKIPPED_SLOTS",
|
|
130
|
+
/**
|
|
131
|
+
* Electra: The aggregated attestation does not have exactly one committee bit set.
|
|
132
|
+
*/
|
|
133
|
+
NOT_EXACTLY_ONE_COMMITTEE_BIT_SET = "ATTESTATION_ERROR_NOT_EXACTLY_ONE_COMMITTEE_BIT_SET",
|
|
134
|
+
/**
|
|
135
|
+
* Electra: Invalid attestationData index: is non-zero
|
|
136
|
+
*/
|
|
137
|
+
NON_ZERO_ATTESTATION_DATA_INDEX = "ATTESTATION_ERROR_NON_ZERO_ATTESTATION_DATA_INDEX",
|
|
138
|
+
/**
|
|
139
|
+
* Electra: Attester not in committee
|
|
140
|
+
*/
|
|
141
|
+
ATTESTER_NOT_IN_COMMITTEE = "ATTESTATION_ERROR_ATTESTER_NOT_IN_COMMITTEE",
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
export type AttestationErrorType =
|
|
145
|
+
| {code: AttestationErrorCode.TARGET_STATE_MISSING}
|
|
146
|
+
| {code: AttestationErrorCode.FUTURE_SLOT; attestationSlot: Slot; latestPermissibleSlot: Slot}
|
|
147
|
+
| {code: AttestationErrorCode.PAST_SLOT; attestationSlot: Slot; earliestPermissibleSlot: Slot}
|
|
148
|
+
| {code: AttestationErrorCode.EMPTY_AGGREGATION_BITFIELD}
|
|
149
|
+
| {code: AttestationErrorCode.AGGREGATOR_NOT_IN_COMMITTEE}
|
|
150
|
+
| {code: AttestationErrorCode.AGGREGATOR_PUBKEY_UNKNOWN; aggregatorIndex: ValidatorIndex}
|
|
151
|
+
| {code: AttestationErrorCode.ATTESTATION_ALREADY_KNOWN; targetEpoch: Epoch; validatorIndex: number}
|
|
152
|
+
| {code: AttestationErrorCode.AGGREGATOR_ALREADY_KNOWN; targetEpoch: Epoch; aggregatorIndex: number}
|
|
153
|
+
| {code: AttestationErrorCode.ATTESTERS_ALREADY_KNOWN; targetEpoch: Epoch; aggregateRoot: RootHex}
|
|
154
|
+
| {code: AttestationErrorCode.AGGREGATOR_INDEX_TOO_HIGH; aggregatorIndex: ValidatorIndex}
|
|
155
|
+
| {code: AttestationErrorCode.UNKNOWN_OR_PREFINALIZED_BEACON_BLOCK_ROOT; root: RootHex}
|
|
156
|
+
| {code: AttestationErrorCode.BAD_TARGET_EPOCH}
|
|
157
|
+
| {code: AttestationErrorCode.HEAD_NOT_TARGET_DESCENDANT}
|
|
158
|
+
| {code: AttestationErrorCode.UNKNOWN_TARGET_ROOT; root: Uint8Array}
|
|
159
|
+
| {code: AttestationErrorCode.INVALID_SIGNATURE}
|
|
160
|
+
| {code: AttestationErrorCode.NOT_EXACTLY_ONE_AGGREGATION_BIT_SET}
|
|
161
|
+
| {code: AttestationErrorCode.PRIOR_ATTESTATION_KNOWN; validatorIndex: ValidatorIndex; epoch: Epoch}
|
|
162
|
+
| {code: AttestationErrorCode.FUTURE_EPOCH; attestationEpoch: Epoch; currentEpoch: Epoch}
|
|
163
|
+
| {code: AttestationErrorCode.PAST_EPOCH; attestationEpoch: Epoch; previousEpoch: Epoch}
|
|
164
|
+
| {code: AttestationErrorCode.ATTESTS_TO_FUTURE_BLOCK; block: Slot; attestation: Slot}
|
|
165
|
+
| {code: AttestationErrorCode.INVALID_SUBNET_ID; received: number; expected: number}
|
|
166
|
+
| {code: AttestationErrorCode.WRONG_NUMBER_OF_AGGREGATION_BITS}
|
|
167
|
+
| {code: AttestationErrorCode.KNOWN_BAD_BLOCK}
|
|
168
|
+
| {code: AttestationErrorCode.INVALID_TARGET_ROOT; targetRoot: RootHex; expected: string | null}
|
|
169
|
+
| {code: AttestationErrorCode.TARGET_BLOCK_NOT_AN_ANCESTOR_OF_LMD_BLOCK}
|
|
170
|
+
| {code: AttestationErrorCode.COMMITTEE_INDEX_OUT_OF_RANGE; index: number}
|
|
171
|
+
| {code: AttestationErrorCode.MISSING_STATE_TO_VERIFY_ATTESTATION; error: Error}
|
|
172
|
+
| {code: AttestationErrorCode.INVALID_AGGREGATOR}
|
|
173
|
+
| {code: AttestationErrorCode.INVALID_INDEXED_ATTESTATION}
|
|
174
|
+
| {code: AttestationErrorCode.INVALID_SERIALIZED_BYTES}
|
|
175
|
+
| {code: AttestationErrorCode.TOO_MANY_SKIPPED_SLOTS; headBlockSlot: Slot; attestationSlot: Slot}
|
|
176
|
+
| {code: AttestationErrorCode.NOT_EXACTLY_ONE_COMMITTEE_BIT_SET}
|
|
177
|
+
| {code: AttestationErrorCode.NON_ZERO_ATTESTATION_DATA_INDEX}
|
|
178
|
+
| {code: AttestationErrorCode.ATTESTER_NOT_IN_COMMITTEE};
|
|
179
|
+
|
|
180
|
+
export class AttestationError extends GossipActionError<AttestationErrorType> {
|
|
181
|
+
getMetadata(): Record<string, string | number | null> {
|
|
182
|
+
const type = this.type;
|
|
183
|
+
switch (type.code) {
|
|
184
|
+
case AttestationErrorCode.UNKNOWN_TARGET_ROOT:
|
|
185
|
+
return {code: type.code, root: toRootHex(type.root)};
|
|
186
|
+
case AttestationErrorCode.MISSING_STATE_TO_VERIFY_ATTESTATION:
|
|
187
|
+
// TODO: The stack trace gets lost here
|
|
188
|
+
return {code: type.code, error: type.error.message};
|
|
189
|
+
|
|
190
|
+
default:
|
|
191
|
+
return type;
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import {GossipActionError} from "./gossipValidation.js";
|
|
2
|
+
|
|
3
|
+
export enum AttesterSlashingErrorCode {
|
|
4
|
+
ALREADY_EXISTS = "ATTESTATION_SLASHING_ERROR_ALREADY_EXISTS",
|
|
5
|
+
INVALID = "ATTESTATION_SLASHING_ERROR_INVALID",
|
|
6
|
+
}
|
|
7
|
+
export type AttesterSlashingErrorType =
|
|
8
|
+
| {code: AttesterSlashingErrorCode.ALREADY_EXISTS}
|
|
9
|
+
| {code: AttesterSlashingErrorCode.INVALID; error: Error};
|
|
10
|
+
|
|
11
|
+
export class AttesterSlashingError extends GossipActionError<AttesterSlashingErrorType> {}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import {RootHex, Slot, SubnetID, ValidatorIndex} from "@lodestar/types";
|
|
2
|
+
import {LodestarError} from "@lodestar/utils";
|
|
3
|
+
import {GossipActionError} from "./gossipValidation.js";
|
|
4
|
+
|
|
5
|
+
export enum BlobSidecarErrorCode {
|
|
6
|
+
INDEX_TOO_LARGE = "BLOB_SIDECAR_ERROR_INDEX_TOO_LARGE",
|
|
7
|
+
INVALID_INDEX = "BLOB_SIDECAR_ERROR_INVALID_INDEX",
|
|
8
|
+
/** !bls.KeyValidate(block.body.blob_kzg_commitments[i]) */
|
|
9
|
+
INVALID_KZG = "BLOB_SIDECAR_ERROR_INVALID_KZG",
|
|
10
|
+
/** !verify_kzg_commitments_against_transactions(block.body.execution_payload.transactions, block.body.blob_kzg_commitments) */
|
|
11
|
+
INVALID_KZG_TXS = "BLOB_SIDECAR_ERROR_INVALID_KZG_TXS",
|
|
12
|
+
/** sidecar.beacon_block_slot != block.slot */
|
|
13
|
+
INCORRECT_SLOT = "BLOB_SIDECAR_ERROR_INCORRECT_SLOT",
|
|
14
|
+
/** BLSFieldElement in valid range (x < BLS_MODULUS) */
|
|
15
|
+
INVALID_BLOB = "BLOB_SIDECAR_ERROR_INVALID_BLOB",
|
|
16
|
+
/** !bls.KeyValidate(blobs_sidecar.kzg_aggregated_proof) */
|
|
17
|
+
INVALID_KZG_PROOF = "BLOBS_SIDECAR_ERROR_INVALID_KZG_PROOF",
|
|
18
|
+
|
|
19
|
+
// Validation errors when validating against an existing block
|
|
20
|
+
|
|
21
|
+
/** Block and sidecars blob count mismatch */
|
|
22
|
+
INCORRECT_SIDECAR_COUNT = "BLOBS_SIDECAR_ERROR_INCORRECT_SIDECAR_COUNT",
|
|
23
|
+
/** Sidecar doesn't match block */
|
|
24
|
+
INCORRECT_BLOCK = "BLOBS_SIDECAR_ERROR_INCORRECT_BLOCK",
|
|
25
|
+
/** Sidecars proofs not valid */
|
|
26
|
+
INVALID_KZG_PROOF_BATCH = "BLOBS_SIDECAR_ERROR_INVALID_KZG_PROOF_BATCH",
|
|
27
|
+
|
|
28
|
+
// following errors are adapted from the block errors
|
|
29
|
+
FUTURE_SLOT = "BLOB_SIDECAR_ERROR_FUTURE_SLOT",
|
|
30
|
+
WOULD_REVERT_FINALIZED_SLOT = "BLOB_SIDECAR_ERROR_WOULD_REVERT_FINALIZED_SLOT",
|
|
31
|
+
ALREADY_KNOWN = "BLOB_SIDECAR_ERROR_ALREADY_KNOWN",
|
|
32
|
+
PARENT_UNKNOWN = "BLOB_SIDECAR_ERROR_PARENT_UNKNOWN",
|
|
33
|
+
NOT_LATER_THAN_PARENT = "BLOB_SIDECAR_ERROR_NOT_LATER_THAN_PARENT",
|
|
34
|
+
PROPOSAL_SIGNATURE_INVALID = "BLOB_SIDECAR_ERROR_PROPOSAL_SIGNATURE_INVALID",
|
|
35
|
+
INCLUSION_PROOF_INVALID = "BLOB_SIDECAR_ERROR_INCLUSION_PROOF_INVALID",
|
|
36
|
+
INCORRECT_PROPOSER = "BLOB_SIDECAR_ERROR_INCORRECT_PROPOSER",
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
export type BlobSidecarErrorType =
|
|
40
|
+
| {code: BlobSidecarErrorCode.INDEX_TOO_LARGE; blobIdx: number; maxBlobsPerBlock: number}
|
|
41
|
+
| {code: BlobSidecarErrorCode.INVALID_INDEX; blobIdx: number; subnet: SubnetID}
|
|
42
|
+
| {code: BlobSidecarErrorCode.INVALID_KZG; blobIdx: number}
|
|
43
|
+
| {code: BlobSidecarErrorCode.INVALID_KZG_TXS}
|
|
44
|
+
| {code: BlobSidecarErrorCode.INCORRECT_SLOT; blockSlot: Slot; blobSlot: Slot; blobIdx: number}
|
|
45
|
+
| {code: BlobSidecarErrorCode.INVALID_BLOB; blobIdx: number}
|
|
46
|
+
| {code: BlobSidecarErrorCode.INVALID_KZG_PROOF; blobIdx: number}
|
|
47
|
+
| {code: BlobSidecarErrorCode.INCORRECT_SIDECAR_COUNT; slot: number; expected: number; actual: number}
|
|
48
|
+
| {code: BlobSidecarErrorCode.INCORRECT_BLOCK; slot: number; blobIdx: number; expected: string; actual: string}
|
|
49
|
+
| {code: BlobSidecarErrorCode.INVALID_KZG_PROOF_BATCH; slot: number; reason: string}
|
|
50
|
+
| {code: BlobSidecarErrorCode.FUTURE_SLOT; blockSlot: Slot; currentSlot: Slot}
|
|
51
|
+
| {code: BlobSidecarErrorCode.WOULD_REVERT_FINALIZED_SLOT; blockSlot: Slot; finalizedSlot: Slot}
|
|
52
|
+
| {code: BlobSidecarErrorCode.ALREADY_KNOWN; root: RootHex}
|
|
53
|
+
| {code: BlobSidecarErrorCode.PARENT_UNKNOWN; parentRoot: RootHex}
|
|
54
|
+
| {code: BlobSidecarErrorCode.NOT_LATER_THAN_PARENT; parentSlot: Slot; slot: Slot}
|
|
55
|
+
| {code: BlobSidecarErrorCode.PROPOSAL_SIGNATURE_INVALID}
|
|
56
|
+
| {code: BlobSidecarErrorCode.INCLUSION_PROOF_INVALID; slot: Slot; blobIdx: number}
|
|
57
|
+
| {code: BlobSidecarErrorCode.INCORRECT_PROPOSER; proposerIndex: ValidatorIndex};
|
|
58
|
+
|
|
59
|
+
export class BlobSidecarGossipError extends GossipActionError<BlobSidecarErrorType> {}
|
|
60
|
+
export class BlobSidecarValidationError extends LodestarError<BlobSidecarErrorType> {}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import {CachedBeaconStateAllForks} from "@lodestar/state-transition";
|
|
2
|
+
import {RootHex, SignedBeaconBlock, Slot, ValidatorIndex} from "@lodestar/types";
|
|
3
|
+
import {LodestarError, toRootHex} from "@lodestar/utils";
|
|
4
|
+
import {ExecutionPayloadStatus} from "../../execution/engine/interface.js";
|
|
5
|
+
import {QueueErrorCode} from "../../util/queue/index.js";
|
|
6
|
+
import {GossipActionError} from "./gossipValidation.js";
|
|
7
|
+
|
|
8
|
+
export enum BlockErrorCode {
|
|
9
|
+
/** The prestate cannot be fetched */
|
|
10
|
+
PRESTATE_MISSING = "BLOCK_ERROR_PRESTATE_MISSING",
|
|
11
|
+
/** The parent block was unknown. */
|
|
12
|
+
PARENT_UNKNOWN = "BLOCK_ERROR_PARENT_UNKNOWN",
|
|
13
|
+
/** The block slot is greater than the present slot. */
|
|
14
|
+
FUTURE_SLOT = "BLOCK_ERROR_FUTURE_SLOT",
|
|
15
|
+
/** The block state_root does not match the generated state. */
|
|
16
|
+
STATE_ROOT_MISMATCH = "BLOCK_ERROR_STATE_ROOT_MISMATCH",
|
|
17
|
+
/** The block was a genesis block, these blocks cannot be re-imported. */
|
|
18
|
+
GENESIS_BLOCK = "BLOCK_ERROR_GENESIS_BLOCK",
|
|
19
|
+
/** The slot is finalized, no need to import. */
|
|
20
|
+
WOULD_REVERT_FINALIZED_SLOT = "BLOCK_ERROR_WOULD_REVERT_FINALIZED_SLOT",
|
|
21
|
+
/** Block is already known, no need to re-import. */
|
|
22
|
+
ALREADY_KNOWN = "BLOCK_ERROR_ALREADY_KNOWN",
|
|
23
|
+
/** A block for this proposer and slot has already been observed. */
|
|
24
|
+
REPEAT_PROPOSAL = "BLOCK_ERROR_REPEAT_PROPOSAL",
|
|
25
|
+
/** The block slot exceeds the MAXIMUM_BLOCK_SLOT_NUMBER. */
|
|
26
|
+
BLOCK_SLOT_LIMIT_REACHED = "BLOCK_ERROR_BLOCK_SLOT_LIMIT_REACHED",
|
|
27
|
+
/** The `BeaconBlock` has a `proposer_index` that does not match the index we computed locally. */
|
|
28
|
+
INCORRECT_PROPOSER = "BLOCK_ERROR_INCORRECT_PROPOSER",
|
|
29
|
+
/** The proposal signature in invalid. */
|
|
30
|
+
PROPOSAL_SIGNATURE_INVALID = "BLOCK_ERROR_PROPOSAL_SIGNATURE_INVALID",
|
|
31
|
+
/** The `block.proposer_index` is not known. */
|
|
32
|
+
UNKNOWN_PROPOSER = "BLOCK_ERROR_UNKNOWN_PROPOSER",
|
|
33
|
+
/** A signature in the block is invalid (exactly which is unknown). */
|
|
34
|
+
INVALID_SIGNATURE = "BLOCK_ERROR_INVALID_SIGNATURE",
|
|
35
|
+
/** Block transition returns invalid state root. */
|
|
36
|
+
INVALID_STATE_ROOT = "BLOCK_ERROR_INVALID_STATE_ROOT",
|
|
37
|
+
/** Block (its parent) is not a descendant of current finalized block */
|
|
38
|
+
NOT_FINALIZED_DESCENDANT = "BLOCK_ERROR_NOT_FINALIZED_DESCENDANT",
|
|
39
|
+
/** The provided block is from an later slot than its parent. */
|
|
40
|
+
NOT_LATER_THAN_PARENT = "BLOCK_ERROR_NOT_LATER_THAN_PARENT",
|
|
41
|
+
/** At least one block in the chain segment did not have it's parent root set to the root of the prior block. */
|
|
42
|
+
NON_LINEAR_PARENT_ROOTS = "BLOCK_ERROR_NON_LINEAR_PARENT_ROOTS",
|
|
43
|
+
/** The slots of the blocks in the chain segment were not strictly increasing. */
|
|
44
|
+
NON_LINEAR_SLOTS = "BLOCK_ERROR_NON_LINEAR_SLOTS",
|
|
45
|
+
/** The block failed the specification's `per_block_processing` function, it is invalid. */
|
|
46
|
+
PER_BLOCK_PROCESSING_ERROR = "BLOCK_ERROR_PER_BLOCK_PROCESSING_ERROR",
|
|
47
|
+
/** There was an error whilst processing the block. It is not necessarily invalid. */
|
|
48
|
+
BEACON_CHAIN_ERROR = "BLOCK_ERROR_BEACON_CHAIN_ERROR",
|
|
49
|
+
/** Block did not pass validation during block processing. */
|
|
50
|
+
KNOWN_BAD_BLOCK = "BLOCK_ERROR_KNOWN_BAD_BLOCK",
|
|
51
|
+
/** Blacklisted blocks that should not pass processing */
|
|
52
|
+
BLACKLISTED_BLOCK = "BLOCK_ERROR_BLACKLISTED_BLOCK",
|
|
53
|
+
// Merge p2p
|
|
54
|
+
/** executionPayload.timestamp is not the expected value */
|
|
55
|
+
INCORRECT_TIMESTAMP = "BLOCK_ERROR_INCORRECT_TIMESTAMP",
|
|
56
|
+
/** executionPayload.gasUsed > executionPayload.gasLimit */
|
|
57
|
+
TOO_MUCH_GAS_USED = "BLOCK_ERROR_TOO_MUCH_GAS_USED",
|
|
58
|
+
/** executionPayload.blockHash == executionPayload.parentHash */
|
|
59
|
+
SAME_PARENT_HASH = "BLOCK_ERROR_SAME_PARENT_HASH",
|
|
60
|
+
/** Total size of executionPayload.transactions exceed a sane limit to prevent DOS attacks */
|
|
61
|
+
TRANSACTIONS_TOO_BIG = "BLOCK_ERROR_TRANSACTIONS_TOO_BIG",
|
|
62
|
+
/** Execution engine is unavailable, syncing, or api call errored. Peers must not be downscored on this code */
|
|
63
|
+
EXECUTION_ENGINE_ERROR = "BLOCK_ERROR_EXECUTION_ERROR",
|
|
64
|
+
/** The attestation head block is too far behind the attestation slot, causing many skip slots.
|
|
65
|
+
This is deemed a DoS risk */
|
|
66
|
+
TOO_MANY_SKIPPED_SLOTS = "TOO_MANY_SKIPPED_SLOTS",
|
|
67
|
+
/** The blobs are unavailable */
|
|
68
|
+
DATA_UNAVAILABLE = "BLOCK_ERROR_DATA_UNAVAILABLE",
|
|
69
|
+
/** Block contains too many kzg commitments */
|
|
70
|
+
TOO_MANY_KZG_COMMITMENTS = "BLOCK_ERROR_TOO_MANY_KZG_COMMITMENTS",
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
type ExecutionErrorStatus = Exclude<
|
|
74
|
+
ExecutionPayloadStatus,
|
|
75
|
+
ExecutionPayloadStatus.VALID | ExecutionPayloadStatus.ACCEPTED | ExecutionPayloadStatus.SYNCING
|
|
76
|
+
>;
|
|
77
|
+
|
|
78
|
+
export type BlockErrorType =
|
|
79
|
+
| {code: BlockErrorCode.PRESTATE_MISSING; error: Error}
|
|
80
|
+
| {code: BlockErrorCode.PARENT_UNKNOWN; parentRoot: RootHex}
|
|
81
|
+
| {code: BlockErrorCode.FUTURE_SLOT; blockSlot: Slot; currentSlot: Slot}
|
|
82
|
+
| {code: BlockErrorCode.STATE_ROOT_MISMATCH}
|
|
83
|
+
| {code: BlockErrorCode.GENESIS_BLOCK}
|
|
84
|
+
| {code: BlockErrorCode.TOO_MANY_SKIPPED_SLOTS; parentSlot: Slot; blockSlot: Slot}
|
|
85
|
+
| {code: BlockErrorCode.WOULD_REVERT_FINALIZED_SLOT; blockSlot: Slot; finalizedSlot: Slot}
|
|
86
|
+
| {code: BlockErrorCode.ALREADY_KNOWN; root: RootHex}
|
|
87
|
+
| {code: BlockErrorCode.REPEAT_PROPOSAL; proposerIndex: ValidatorIndex}
|
|
88
|
+
| {code: BlockErrorCode.BLOCK_SLOT_LIMIT_REACHED}
|
|
89
|
+
| {code: BlockErrorCode.INCORRECT_PROPOSER; proposerIndex: ValidatorIndex}
|
|
90
|
+
| {code: BlockErrorCode.PROPOSAL_SIGNATURE_INVALID}
|
|
91
|
+
| {code: BlockErrorCode.UNKNOWN_PROPOSER; proposerIndex: ValidatorIndex}
|
|
92
|
+
| {code: BlockErrorCode.INVALID_SIGNATURE; state: CachedBeaconStateAllForks}
|
|
93
|
+
| {
|
|
94
|
+
code: BlockErrorCode.INVALID_STATE_ROOT;
|
|
95
|
+
root: Uint8Array;
|
|
96
|
+
expectedRoot: Uint8Array;
|
|
97
|
+
preState: CachedBeaconStateAllForks;
|
|
98
|
+
postState: CachedBeaconStateAllForks;
|
|
99
|
+
}
|
|
100
|
+
| {code: BlockErrorCode.NOT_FINALIZED_DESCENDANT; parentRoot: RootHex}
|
|
101
|
+
| {code: BlockErrorCode.NOT_LATER_THAN_PARENT; parentSlot: Slot; slot: Slot}
|
|
102
|
+
| {code: BlockErrorCode.NON_LINEAR_PARENT_ROOTS}
|
|
103
|
+
| {code: BlockErrorCode.NON_LINEAR_SLOTS}
|
|
104
|
+
| {code: BlockErrorCode.PER_BLOCK_PROCESSING_ERROR; error: Error}
|
|
105
|
+
| {code: BlockErrorCode.BEACON_CHAIN_ERROR; error: Error}
|
|
106
|
+
| {code: BlockErrorCode.KNOWN_BAD_BLOCK}
|
|
107
|
+
| {code: BlockErrorCode.BLACKLISTED_BLOCK}
|
|
108
|
+
| {code: BlockErrorCode.INCORRECT_TIMESTAMP; timestamp: number; expectedTimestamp: number}
|
|
109
|
+
| {code: BlockErrorCode.TOO_MUCH_GAS_USED; gasUsed: number; gasLimit: number}
|
|
110
|
+
| {code: BlockErrorCode.SAME_PARENT_HASH; blockHash: RootHex}
|
|
111
|
+
| {code: BlockErrorCode.TRANSACTIONS_TOO_BIG; size: number; max: number}
|
|
112
|
+
| {code: BlockErrorCode.EXECUTION_ENGINE_ERROR; execStatus: ExecutionErrorStatus; errorMessage: string}
|
|
113
|
+
| {code: BlockErrorCode.DATA_UNAVAILABLE}
|
|
114
|
+
| {code: BlockErrorCode.TOO_MANY_KZG_COMMITMENTS; blobKzgCommitmentsLen: number; commitmentLimit: number};
|
|
115
|
+
|
|
116
|
+
export class BlockGossipError extends GossipActionError<BlockErrorType> {}
|
|
117
|
+
|
|
118
|
+
export class BlockError extends LodestarError<BlockErrorType> {
|
|
119
|
+
constructor(
|
|
120
|
+
readonly signedBlock: SignedBeaconBlock,
|
|
121
|
+
type: BlockErrorType
|
|
122
|
+
) {
|
|
123
|
+
super(type);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
getMetadata(): Record<string, string | number | null> {
|
|
127
|
+
return renderBlockErrorType(this.type);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
export function isBlockErrorAborted(e: unknown): e is BlockError {
|
|
132
|
+
return (
|
|
133
|
+
e instanceof BlockError &&
|
|
134
|
+
e.type.code === BlockErrorCode.EXECUTION_ENGINE_ERROR &&
|
|
135
|
+
e.type.errorMessage === QueueErrorCode.QUEUE_ABORTED
|
|
136
|
+
);
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
export function renderBlockErrorType(type: BlockErrorType): Record<string, string | number | null> {
|
|
140
|
+
switch (type.code) {
|
|
141
|
+
case BlockErrorCode.PRESTATE_MISSING:
|
|
142
|
+
case BlockErrorCode.PER_BLOCK_PROCESSING_ERROR:
|
|
143
|
+
case BlockErrorCode.BEACON_CHAIN_ERROR:
|
|
144
|
+
return {
|
|
145
|
+
code: type.code,
|
|
146
|
+
error: type.error.message,
|
|
147
|
+
};
|
|
148
|
+
|
|
149
|
+
case BlockErrorCode.INVALID_SIGNATURE:
|
|
150
|
+
return {
|
|
151
|
+
code: type.code,
|
|
152
|
+
slot: type.state.slot,
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
case BlockErrorCode.INVALID_STATE_ROOT:
|
|
156
|
+
return {
|
|
157
|
+
code: type.code,
|
|
158
|
+
slot: type.postState.slot,
|
|
159
|
+
root: toRootHex(type.root),
|
|
160
|
+
expectedRoot: toRootHex(type.expectedRoot),
|
|
161
|
+
};
|
|
162
|
+
|
|
163
|
+
default:
|
|
164
|
+
return type;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import {GossipActionError} from "./gossipValidation.js";
|
|
2
|
+
|
|
3
|
+
export enum BlsToExecutionChangeErrorCode {
|
|
4
|
+
ALREADY_EXISTS = "BLS_TO_EXECUTION_CHANGE_ERROR_ALREADY_EXISTS",
|
|
5
|
+
INVALID = "BLS_TO_EXECUTION_CHANGE_ERROR_INVALID",
|
|
6
|
+
INVALID_SIGNATURE = "BLS_TO_EXECUTION_CHANGE_ERROR_INVALID_SIGNATURE",
|
|
7
|
+
}
|
|
8
|
+
export type BlsToExecutionChangeErrorType =
|
|
9
|
+
| {code: BlsToExecutionChangeErrorCode.ALREADY_EXISTS}
|
|
10
|
+
| {code: BlsToExecutionChangeErrorCode.INVALID}
|
|
11
|
+
| {code: BlsToExecutionChangeErrorCode.INVALID_SIGNATURE};
|
|
12
|
+
|
|
13
|
+
export class BlsToExecutionChangeError extends GossipActionError<BlsToExecutionChangeErrorType> {}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import {RootHex, Slot, SubnetID} from "@lodestar/types";
|
|
2
|
+
import {LodestarError} from "@lodestar/utils";
|
|
3
|
+
import {GossipActionError} from "./gossipValidation.js";
|
|
4
|
+
|
|
5
|
+
export enum DataColumnSidecarErrorCode {
|
|
6
|
+
INVALID_INDEX = "DATA_COLUMN_SIDECAR_ERROR_INVALID_INDEX",
|
|
7
|
+
NO_COMMITMENTS = "DATA_COLUMN_SIDECAR_ERROR_NO_COMMITMENTS",
|
|
8
|
+
MISMATCHED_LENGTHS = "DATA_COLUMN_SIDECAR_ERROR_MISMATCHED_LENGTHS",
|
|
9
|
+
INVALID_SUBNET = "DATA_COLUMN_SIDECAR_ERROR_INVALID_SUBNET",
|
|
10
|
+
INVALID_KZG_PROOF = "DATA_COLUMN_SIDECAR_ERROR_INVALID_KZG_PROOF",
|
|
11
|
+
|
|
12
|
+
// Validation errors when validating against an existing block
|
|
13
|
+
|
|
14
|
+
/** Block and sidecars data column count mismatch */
|
|
15
|
+
INCORRECT_SIDECAR_COUNT = "DATA_COLUMN_SIDECAR_ERROR_INCORRECT_SIDECAR_COUNT",
|
|
16
|
+
/** Sidecar doesn't match block */
|
|
17
|
+
INCORRECT_BLOCK = "DATA_COLUMN_SIDECAR_ERROR_INCORRECT_BLOCK",
|
|
18
|
+
/** Sidecar kzg proof count not as expected */
|
|
19
|
+
INCORRECT_KZG_COMMITMENTS_COUNT = "DATA_COLUMN_SIDECAR_ERROR_INCORRECT_KZG_COMMITMENTS_COUNT",
|
|
20
|
+
/** Sidecar kzg proof count not as expected */
|
|
21
|
+
INCORRECT_KZG_PROOF_COUNT = "DATA_COLUMN_SIDECAR_ERROR_INCORRECT_KZG_PROOF_COUNT",
|
|
22
|
+
/** Sidecars proofs not valid */
|
|
23
|
+
INVALID_KZG_PROOF_BATCH = "DATA_COLUMN_SIDECAR_ERROR_INVALID_KZG_PROOF_BATCH",
|
|
24
|
+
|
|
25
|
+
// following errors are adapted from the block errors
|
|
26
|
+
ALREADY_KNOWN = "DATA_COLUMN_SIDECAR_ERROR_ALREADY_KNOWN",
|
|
27
|
+
FUTURE_SLOT = "DATA_COLUMN_SIDECAR_ERROR_FUTURE_SLOT",
|
|
28
|
+
WOULD_REVERT_FINALIZED_SLOT = "DATA_COLUMN_SIDECAR_ERROR_WOULD_REVERT_FINALIZED_SLOT",
|
|
29
|
+
PARENT_UNKNOWN = "DATA_COLUMN_SIDECAR_ERROR_PARENT_UNKNOWN",
|
|
30
|
+
NOT_LATER_THAN_PARENT = "DATA_COLUMN_SIDECAR_ERROR_NOT_LATER_THAN_PARENT",
|
|
31
|
+
PROPOSAL_SIGNATURE_INVALID = "DATA_COLUMN_SIDECAR_ERROR_PROPOSAL_SIGNATURE_INVALID",
|
|
32
|
+
INCLUSION_PROOF_INVALID = "DATA_COLUMN_SIDECAR_ERROR_INCLUSION_PROOF_INVALID",
|
|
33
|
+
INCORRECT_PROPOSER = "DATA_COLUMN_SIDECAR_ERROR_INCORRECT_PROPOSER",
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export type DataColumnSidecarErrorType =
|
|
37
|
+
| {code: DataColumnSidecarErrorCode.INVALID_INDEX; slot: Slot; columnIdx: number}
|
|
38
|
+
| {code: DataColumnSidecarErrorCode.NO_COMMITMENTS; slot: Slot; columnIdx: number}
|
|
39
|
+
| {
|
|
40
|
+
code: DataColumnSidecarErrorCode.MISMATCHED_LENGTHS;
|
|
41
|
+
columnLength: number;
|
|
42
|
+
commitmentsLength: number;
|
|
43
|
+
proofsLength: number;
|
|
44
|
+
}
|
|
45
|
+
| {code: DataColumnSidecarErrorCode.INVALID_SUBNET; columnIdx: number; gossipSubnet: SubnetID}
|
|
46
|
+
| {code: DataColumnSidecarErrorCode.ALREADY_KNOWN; columnIdx: number; slot: Slot}
|
|
47
|
+
| {code: DataColumnSidecarErrorCode.FUTURE_SLOT; blockSlot: Slot; currentSlot: Slot}
|
|
48
|
+
| {code: DataColumnSidecarErrorCode.WOULD_REVERT_FINALIZED_SLOT; blockSlot: Slot; finalizedSlot: Slot}
|
|
49
|
+
| {code: DataColumnSidecarErrorCode.PARENT_UNKNOWN; parentRoot: RootHex}
|
|
50
|
+
| {code: DataColumnSidecarErrorCode.PROPOSAL_SIGNATURE_INVALID}
|
|
51
|
+
| {code: DataColumnSidecarErrorCode.NOT_LATER_THAN_PARENT; parentSlot: Slot; slot: Slot}
|
|
52
|
+
| {code: DataColumnSidecarErrorCode.INCLUSION_PROOF_INVALID; slot: Slot; columnIdx: number}
|
|
53
|
+
| {code: DataColumnSidecarErrorCode.INVALID_KZG_PROOF; slot: Slot; columnIdx: number}
|
|
54
|
+
| {code: DataColumnSidecarErrorCode.INCORRECT_SIDECAR_COUNT; slot: number; expected: number; actual: number}
|
|
55
|
+
| {
|
|
56
|
+
code: DataColumnSidecarErrorCode.INCORRECT_BLOCK;
|
|
57
|
+
slot: number;
|
|
58
|
+
columnIdx: number;
|
|
59
|
+
expected: string;
|
|
60
|
+
actual: string;
|
|
61
|
+
}
|
|
62
|
+
| {
|
|
63
|
+
code: DataColumnSidecarErrorCode.INCORRECT_KZG_COMMITMENTS_COUNT;
|
|
64
|
+
slot: number;
|
|
65
|
+
columnIdx: number;
|
|
66
|
+
expected: number;
|
|
67
|
+
actual: number;
|
|
68
|
+
}
|
|
69
|
+
| {
|
|
70
|
+
code: DataColumnSidecarErrorCode.INCORRECT_KZG_PROOF_COUNT;
|
|
71
|
+
slot: number;
|
|
72
|
+
columnIdx: number;
|
|
73
|
+
expected: number;
|
|
74
|
+
actual: number;
|
|
75
|
+
}
|
|
76
|
+
| {code: DataColumnSidecarErrorCode.INVALID_KZG_PROOF_BATCH; slot: number; reason: string}
|
|
77
|
+
| {code: DataColumnSidecarErrorCode.INCORRECT_PROPOSER; actualProposerIndex: number; expectedProposerIndex: number};
|
|
78
|
+
|
|
79
|
+
export class DataColumnSidecarGossipError extends GossipActionError<DataColumnSidecarErrorType> {}
|
|
80
|
+
export class DataColumnSidecarValidationError extends LodestarError<DataColumnSidecarErrorType> {}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import {LodestarError} from "@lodestar/utils";
|
|
2
|
+
|
|
3
|
+
export enum GossipAction {
|
|
4
|
+
IGNORE = "IGNORE",
|
|
5
|
+
REJECT = "REJECT",
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export enum GossipErrorCode {
|
|
9
|
+
INVALID_SERIALIZED_BYTES_ERROR_CODE = "GOSSIP_ERROR_INVALID_SERIALIZED_BYTES",
|
|
10
|
+
PAST_SLOT = "GOSSIP_ERROR_PAST_SLOT",
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export class GossipActionError<T extends {code: string}> extends LodestarError<T> {
|
|
14
|
+
action: GossipAction;
|
|
15
|
+
|
|
16
|
+
constructor(action: GossipAction, type: T) {
|
|
17
|
+
super(type);
|
|
18
|
+
this.action = action;
|
|
19
|
+
}
|
|
20
|
+
}
|