@lodestar/beacon-node 1.35.0-dev.8689cc3545 → 1.35.0-dev.8b45b1e978
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/db/buckets.d.ts +4 -4
- package/lib/db/buckets.js +4 -4
- package/lib/db/buckets.js.map +1 -1
- package/lib/db/repositories/blobSidecars.js +1 -1
- package/lib/db/repositories/blobSidecars.js.map +1 -1
- package/lib/db/repositories/blobSidecarsArchive.js +1 -1
- package/lib/db/repositories/blobSidecarsArchive.js.map +1 -1
- package/lib/db/repositories/blockArchiveIndex.d.ts +2 -2
- package/lib/db/repositories/dataColumnSidecar.js +1 -1
- package/lib/db/repositories/dataColumnSidecar.js.map +1 -1
- package/lib/db/repositories/dataColumnSidecarArchive.js +1 -1
- package/lib/db/repositories/dataColumnSidecarArchive.js.map +1 -1
- package/lib/network/network.js +4 -2
- package/lib/network/network.js.map +1 -1
- package/lib/util/blobs.js +3 -5
- package/lib/util/blobs.js.map +1 -1
- package/package.json +20 -18
- package/lib/api/impl/api.d.ts.map +0 -1
- package/lib/api/impl/beacon/blocks/index.d.ts.map +0 -1
- package/lib/api/impl/beacon/blocks/utils.d.ts.map +0 -1
- package/lib/api/impl/beacon/index.d.ts.map +0 -1
- package/lib/api/impl/beacon/pool/index.d.ts.map +0 -1
- package/lib/api/impl/beacon/rewards/index.d.ts.map +0 -1
- package/lib/api/impl/beacon/state/index.d.ts.map +0 -1
- package/lib/api/impl/beacon/state/utils.d.ts.map +0 -1
- package/lib/api/impl/config/constants.d.ts.map +0 -1
- package/lib/api/impl/config/index.d.ts.map +0 -1
- package/lib/api/impl/debug/index.d.ts.map +0 -1
- package/lib/api/impl/errors.d.ts.map +0 -1
- package/lib/api/impl/events/index.d.ts.map +0 -1
- package/lib/api/impl/index.d.ts.map +0 -1
- package/lib/api/impl/lightclient/index.d.ts.map +0 -1
- package/lib/api/impl/lodestar/index.d.ts.map +0 -1
- package/lib/api/impl/node/index.d.ts.map +0 -1
- package/lib/api/impl/node/utils.d.ts.map +0 -1
- package/lib/api/impl/proof/index.d.ts.map +0 -1
- package/lib/api/impl/types.d.ts.map +0 -1
- package/lib/api/impl/utils.d.ts.map +0 -1
- package/lib/api/impl/validator/index.d.ts.map +0 -1
- package/lib/api/impl/validator/utils.d.ts.map +0 -1
- package/lib/api/index.d.ts.map +0 -1
- package/lib/api/options.d.ts.map +0 -1
- package/lib/api/rest/activeSockets.d.ts.map +0 -1
- package/lib/api/rest/base.d.ts.map +0 -1
- package/lib/api/rest/index.d.ts.map +0 -1
- package/lib/api/rest/swaggerUI.d.ts.map +0 -1
- package/lib/bun-wrappers/prometheus-gc-stats.d.ts.map +0 -1
- package/lib/chain/ColumnReconstructionTracker.d.ts.map +0 -1
- package/lib/chain/GetBlobsTracker.d.ts.map +0 -1
- package/lib/chain/archiveStore/archiveStore.d.ts.map +0 -1
- package/lib/chain/archiveStore/constants.d.ts.map +0 -1
- package/lib/chain/archiveStore/historicalState/getHistoricalState.d.ts.map +0 -1
- package/lib/chain/archiveStore/historicalState/historicalStateRegen.d.ts.map +0 -1
- package/lib/chain/archiveStore/historicalState/metrics.d.ts.map +0 -1
- package/lib/chain/archiveStore/historicalState/types.d.ts.map +0 -1
- package/lib/chain/archiveStore/historicalState/worker.d.ts.map +0 -1
- package/lib/chain/archiveStore/index.d.ts.map +0 -1
- package/lib/chain/archiveStore/interface.d.ts.map +0 -1
- package/lib/chain/archiveStore/strategies/frequencyStateArchiveStrategy.d.ts.map +0 -1
- package/lib/chain/archiveStore/utils/archiveBlocks.d.ts.map +0 -1
- package/lib/chain/archiveStore/utils/pruneHistory.d.ts.map +0 -1
- package/lib/chain/archiveStore/utils/updateBackfillRange.d.ts.map +0 -1
- package/lib/chain/balancesCache.d.ts.map +0 -1
- package/lib/chain/beaconProposerCache.d.ts.map +0 -1
- package/lib/chain/blocks/blockInput/blockInput.d.ts.map +0 -1
- package/lib/chain/blocks/blockInput/errors.d.ts.map +0 -1
- package/lib/chain/blocks/blockInput/index.d.ts.map +0 -1
- package/lib/chain/blocks/blockInput/types.d.ts.map +0 -1
- package/lib/chain/blocks/blockInput/utils.d.ts.map +0 -1
- package/lib/chain/blocks/importBlock.d.ts.map +0 -1
- package/lib/chain/blocks/index.d.ts.map +0 -1
- package/lib/chain/blocks/types.d.ts.map +0 -1
- package/lib/chain/blocks/utils/blowfishBanner.d.ts.map +0 -1
- package/lib/chain/blocks/utils/chainSegment.d.ts.map +0 -1
- package/lib/chain/blocks/utils/checkpoint.d.ts.map +0 -1
- package/lib/chain/blocks/utils/giraffeBanner.d.ts.map +0 -1
- package/lib/chain/blocks/utils/ownBanner.d.ts.map +0 -1
- package/lib/chain/blocks/utils/pandaMergeTransitionBanner.d.ts.map +0 -1
- package/lib/chain/blocks/utils/zebraBanner.d.ts.map +0 -1
- package/lib/chain/blocks/verifyBlock.d.ts.map +0 -1
- package/lib/chain/blocks/verifyBlocksDataAvailability.d.ts.map +0 -1
- package/lib/chain/blocks/verifyBlocksExecutionPayloads.d.ts.map +0 -1
- package/lib/chain/blocks/verifyBlocksSanityChecks.d.ts.map +0 -1
- package/lib/chain/blocks/verifyBlocksSignatures.d.ts.map +0 -1
- package/lib/chain/blocks/verifyBlocksStateTransitionOnly.d.ts.map +0 -1
- package/lib/chain/blocks/writeBlockInputToDb.d.ts.map +0 -1
- package/lib/chain/bls/index.d.ts.map +0 -1
- package/lib/chain/bls/interface.d.ts.map +0 -1
- package/lib/chain/bls/maybeBatch.d.ts.map +0 -1
- package/lib/chain/bls/multithread/index.d.ts.map +0 -1
- package/lib/chain/bls/multithread/jobItem.d.ts.map +0 -1
- package/lib/chain/bls/multithread/poolSize.d.ts.map +0 -1
- package/lib/chain/bls/multithread/types.d.ts.map +0 -1
- package/lib/chain/bls/multithread/utils.d.ts.map +0 -1
- package/lib/chain/bls/multithread/worker.d.ts.map +0 -1
- package/lib/chain/bls/singleThread.d.ts.map +0 -1
- package/lib/chain/bls/utils.d.ts.map +0 -1
- package/lib/chain/chain.d.ts.map +0 -1
- package/lib/chain/emitter.d.ts.map +0 -1
- package/lib/chain/errors/attestationError.d.ts.map +0 -1
- package/lib/chain/errors/attesterSlashingError.d.ts.map +0 -1
- package/lib/chain/errors/blobSidecarError.d.ts.map +0 -1
- package/lib/chain/errors/blockError.d.ts.map +0 -1
- package/lib/chain/errors/blsToExecutionChangeError.d.ts.map +0 -1
- package/lib/chain/errors/dataColumnSidecarError.d.ts.map +0 -1
- package/lib/chain/errors/gossipValidation.d.ts.map +0 -1
- package/lib/chain/errors/index.d.ts.map +0 -1
- package/lib/chain/errors/lightClientError.d.ts.map +0 -1
- package/lib/chain/errors/proposerSlashingError.d.ts.map +0 -1
- package/lib/chain/errors/syncCommitteeError.d.ts.map +0 -1
- package/lib/chain/errors/voluntaryExitError.d.ts.map +0 -1
- package/lib/chain/forkChoice/index.d.ts.map +0 -1
- package/lib/chain/genesis/genesis.d.ts.map +0 -1
- package/lib/chain/genesis/interface.d.ts.map +0 -1
- package/lib/chain/index.d.ts.map +0 -1
- package/lib/chain/initState.d.ts.map +0 -1
- package/lib/chain/interface.d.ts.map +0 -1
- package/lib/chain/lightClient/index.d.ts.map +0 -1
- package/lib/chain/lightClient/proofs.d.ts.map +0 -1
- package/lib/chain/lightClient/types.d.ts.map +0 -1
- package/lib/chain/opPools/aggregatedAttestationPool.d.ts.map +0 -1
- package/lib/chain/opPools/attestationPool.d.ts.map +0 -1
- package/lib/chain/opPools/index.d.ts.map +0 -1
- package/lib/chain/opPools/opPool.d.ts.map +0 -1
- package/lib/chain/opPools/syncCommitteeMessagePool.d.ts.map +0 -1
- package/lib/chain/opPools/syncContributionAndProofPool.d.ts.map +0 -1
- package/lib/chain/opPools/types.d.ts.map +0 -1
- package/lib/chain/opPools/utils.d.ts.map +0 -1
- package/lib/chain/options.d.ts.map +0 -1
- package/lib/chain/prepareNextSlot.d.ts.map +0 -1
- package/lib/chain/produceBlock/computeNewStateRoot.d.ts.map +0 -1
- package/lib/chain/produceBlock/index.d.ts.map +0 -1
- package/lib/chain/produceBlock/produceBlockBody.d.ts.map +0 -1
- package/lib/chain/produceBlock/validateBlobsAndKzgCommitments.d.ts.map +0 -1
- package/lib/chain/regen/errors.d.ts.map +0 -1
- package/lib/chain/regen/index.d.ts.map +0 -1
- package/lib/chain/regen/interface.d.ts.map +0 -1
- package/lib/chain/regen/queued.d.ts.map +0 -1
- package/lib/chain/regen/regen.d.ts.map +0 -1
- package/lib/chain/reprocess.d.ts.map +0 -1
- package/lib/chain/rewards/attestationsRewards.d.ts.map +0 -1
- package/lib/chain/rewards/blockRewards.d.ts.map +0 -1
- package/lib/chain/rewards/syncCommitteeRewards.d.ts.map +0 -1
- package/lib/chain/seenCache/index.d.ts.map +0 -1
- package/lib/chain/seenCache/seenAggregateAndProof.d.ts.map +0 -1
- package/lib/chain/seenCache/seenAttestationData.d.ts.map +0 -1
- package/lib/chain/seenCache/seenAttesters.d.ts.map +0 -1
- package/lib/chain/seenCache/seenBlockAttesters.d.ts.map +0 -1
- package/lib/chain/seenCache/seenBlockProposers.d.ts.map +0 -1
- package/lib/chain/seenCache/seenCommittee.d.ts.map +0 -1
- package/lib/chain/seenCache/seenCommitteeContribution.d.ts.map +0 -1
- package/lib/chain/seenCache/seenGossipBlockInput.d.ts.map +0 -1
- package/lib/chain/serializeState.d.ts.map +0 -1
- package/lib/chain/shufflingCache.d.ts.map +0 -1
- package/lib/chain/stateCache/blockStateCacheImpl.d.ts.map +0 -1
- package/lib/chain/stateCache/datastore/db.d.ts.map +0 -1
- package/lib/chain/stateCache/datastore/file.d.ts.map +0 -1
- package/lib/chain/stateCache/datastore/index.d.ts.map +0 -1
- package/lib/chain/stateCache/datastore/types.d.ts.map +0 -1
- package/lib/chain/stateCache/fifoBlockStateCache.d.ts.map +0 -1
- package/lib/chain/stateCache/inMemoryCheckpointsCache.d.ts.map +0 -1
- package/lib/chain/stateCache/index.d.ts.map +0 -1
- package/lib/chain/stateCache/mapMetrics.d.ts.map +0 -1
- package/lib/chain/stateCache/persistentCheckpointsCache.d.ts.map +0 -1
- package/lib/chain/stateCache/types.d.ts.map +0 -1
- package/lib/chain/validation/aggregateAndProof.d.ts.map +0 -1
- package/lib/chain/validation/attestation.d.ts.map +0 -1
- package/lib/chain/validation/attesterSlashing.d.ts.map +0 -1
- package/lib/chain/validation/blobSidecar.d.ts.map +0 -1
- package/lib/chain/validation/block.d.ts.map +0 -1
- package/lib/chain/validation/blsToExecutionChange.d.ts.map +0 -1
- package/lib/chain/validation/dataColumnSidecar.d.ts.map +0 -1
- package/lib/chain/validation/index.d.ts.map +0 -1
- package/lib/chain/validation/lightClientFinalityUpdate.d.ts.map +0 -1
- package/lib/chain/validation/lightClientOptimisticUpdate.d.ts.map +0 -1
- package/lib/chain/validation/proposerSlashing.d.ts.map +0 -1
- package/lib/chain/validation/signatureSets/aggregateAndProof.d.ts.map +0 -1
- package/lib/chain/validation/signatureSets/contributionAndProof.d.ts.map +0 -1
- package/lib/chain/validation/signatureSets/index.d.ts.map +0 -1
- package/lib/chain/validation/signatureSets/selectionProof.d.ts.map +0 -1
- package/lib/chain/validation/signatureSets/syncCommittee.d.ts.map +0 -1
- package/lib/chain/validation/signatureSets/syncCommitteeContribution.d.ts.map +0 -1
- package/lib/chain/validation/signatureSets/syncCommitteeSelectionProof.d.ts.map +0 -1
- package/lib/chain/validation/syncCommittee.d.ts.map +0 -1
- package/lib/chain/validation/syncCommitteeContributionAndProof.d.ts.map +0 -1
- package/lib/chain/validation/voluntaryExit.d.ts.map +0 -1
- package/lib/chain/validatorMonitor.d.ts.map +0 -1
- package/lib/constants/constants.d.ts.map +0 -1
- package/lib/constants/index.d.ts.map +0 -1
- package/lib/constants/network.d.ts.map +0 -1
- package/lib/db/beacon.d.ts.map +0 -1
- package/lib/db/buckets.d.ts.map +0 -1
- package/lib/db/index.d.ts.map +0 -1
- package/lib/db/interface.d.ts.map +0 -1
- package/lib/db/options.d.ts.map +0 -1
- package/lib/db/repositories/attesterSlashing.d.ts.map +0 -1
- package/lib/db/repositories/backfilledRanges.d.ts.map +0 -1
- package/lib/db/repositories/blobSidecars.d.ts.map +0 -1
- package/lib/db/repositories/blobSidecarsArchive.d.ts.map +0 -1
- package/lib/db/repositories/block.d.ts.map +0 -1
- package/lib/db/repositories/blockArchive.d.ts.map +0 -1
- package/lib/db/repositories/blockArchiveIndex.d.ts.map +0 -1
- package/lib/db/repositories/blsToExecutionChange.d.ts.map +0 -1
- package/lib/db/repositories/checkpointState.d.ts.map +0 -1
- package/lib/db/repositories/dataColumnSidecar.d.ts.map +0 -1
- package/lib/db/repositories/dataColumnSidecarArchive.d.ts.map +0 -1
- package/lib/db/repositories/depositDataRoot.d.ts.map +0 -1
- package/lib/db/repositories/depositEvent.d.ts.map +0 -1
- package/lib/db/repositories/eth1Data.d.ts.map +0 -1
- package/lib/db/repositories/index.d.ts.map +0 -1
- package/lib/db/repositories/lightclientBestUpdate.d.ts.map +0 -1
- package/lib/db/repositories/lightclientCheckpointHeader.d.ts.map +0 -1
- package/lib/db/repositories/lightclientSyncCommittee.d.ts.map +0 -1
- package/lib/db/repositories/lightclientSyncCommitteeWitness.d.ts.map +0 -1
- package/lib/db/repositories/proposerSlashing.d.ts.map +0 -1
- package/lib/db/repositories/stateArchive.d.ts.map +0 -1
- package/lib/db/repositories/stateArchiveIndex.d.ts.map +0 -1
- package/lib/db/repositories/voluntaryExit.d.ts.map +0 -1
- package/lib/db/single/index.d.ts.map +0 -1
- package/lib/db/single/preGenesisState.d.ts.map +0 -1
- package/lib/db/single/preGenesisStateLastProcessedBlock.d.ts.map +0 -1
- package/lib/eth1/errors.d.ts.map +0 -1
- package/lib/eth1/eth1DataCache.d.ts.map +0 -1
- package/lib/eth1/eth1DepositDataTracker.d.ts.map +0 -1
- package/lib/eth1/eth1DepositsCache.d.ts.map +0 -1
- package/lib/eth1/eth1MergeBlockTracker.d.ts.map +0 -1
- package/lib/eth1/index.d.ts.map +0 -1
- package/lib/eth1/interface.d.ts.map +0 -1
- package/lib/eth1/options.d.ts.map +0 -1
- package/lib/eth1/provider/eth1Provider.d.ts.map +0 -1
- package/lib/eth1/provider/jsonRpcHttpClient.d.ts.map +0 -1
- package/lib/eth1/provider/jwt.d.ts.map +0 -1
- package/lib/eth1/provider/utils.d.ts.map +0 -1
- package/lib/eth1/stream.d.ts.map +0 -1
- package/lib/eth1/utils/depositContract.d.ts.map +0 -1
- package/lib/eth1/utils/deposits.d.ts.map +0 -1
- package/lib/eth1/utils/eth1Data.d.ts.map +0 -1
- package/lib/eth1/utils/eth1DepositEvent.d.ts.map +0 -1
- package/lib/eth1/utils/eth1Vote.d.ts.map +0 -1
- package/lib/eth1/utils/groupDepositEventsByBlock.d.ts.map +0 -1
- package/lib/eth1/utils/optimizeNextBlockDiffForGenesis.d.ts.map +0 -1
- package/lib/execution/builder/cache.d.ts.map +0 -1
- package/lib/execution/builder/http.d.ts.map +0 -1
- package/lib/execution/builder/index.d.ts.map +0 -1
- package/lib/execution/builder/interface.d.ts.map +0 -1
- package/lib/execution/builder/utils.d.ts.map +0 -1
- package/lib/execution/engine/disabled.d.ts.map +0 -1
- package/lib/execution/engine/http.d.ts.map +0 -1
- package/lib/execution/engine/index.d.ts.map +0 -1
- package/lib/execution/engine/interface.d.ts.map +0 -1
- package/lib/execution/engine/mock.d.ts.map +0 -1
- package/lib/execution/engine/payloadIdCache.d.ts.map +0 -1
- package/lib/execution/engine/types.d.ts.map +0 -1
- package/lib/execution/engine/utils.d.ts.map +0 -1
- package/lib/execution/index.d.ts.map +0 -1
- package/lib/index.d.ts.map +0 -1
- package/lib/metrics/index.d.ts.map +0 -1
- package/lib/metrics/metrics/beacon.d.ts.map +0 -1
- package/lib/metrics/metrics/lodestar.d.ts.map +0 -1
- package/lib/metrics/metrics.d.ts.map +0 -1
- package/lib/metrics/nodeJsMetrics.d.ts.map +0 -1
- package/lib/metrics/options.d.ts.map +0 -1
- package/lib/metrics/server/http.d.ts.map +0 -1
- package/lib/metrics/server/index.d.ts.map +0 -1
- package/lib/metrics/utils/avgMinMax.d.ts.map +0 -1
- package/lib/metrics/utils/gauge.d.ts.map +0 -1
- package/lib/metrics/utils/registryMetricCreator.d.ts.map +0 -1
- package/lib/monitoring/clientStats.d.ts.map +0 -1
- package/lib/monitoring/index.d.ts.map +0 -1
- package/lib/monitoring/options.d.ts.map +0 -1
- package/lib/monitoring/properties.d.ts.map +0 -1
- package/lib/monitoring/service.d.ts.map +0 -1
- package/lib/monitoring/system.d.ts.map +0 -1
- package/lib/monitoring/types.d.ts.map +0 -1
- package/lib/network/core/events.d.ts.map +0 -1
- package/lib/network/core/index.d.ts.map +0 -1
- package/lib/network/core/metrics.d.ts.map +0 -1
- package/lib/network/core/networkCore.d.ts.map +0 -1
- package/lib/network/core/networkCoreWorker.d.ts.map +0 -1
- package/lib/network/core/networkCoreWorkerHandler.d.ts.map +0 -1
- package/lib/network/core/types.d.ts.map +0 -1
- package/lib/network/discv5/index.d.ts.map +0 -1
- package/lib/network/discv5/types.d.ts.map +0 -1
- package/lib/network/discv5/utils.d.ts.map +0 -1
- package/lib/network/discv5/worker.d.ts.map +0 -1
- package/lib/network/events.d.ts.map +0 -1
- package/lib/network/forks.d.ts.map +0 -1
- package/lib/network/gossip/constants.d.ts.map +0 -1
- package/lib/network/gossip/encoding.d.ts.map +0 -1
- package/lib/network/gossip/errors.d.ts.map +0 -1
- package/lib/network/gossip/gossipsub.d.ts.map +0 -1
- package/lib/network/gossip/index.d.ts.map +0 -1
- package/lib/network/gossip/interface.d.ts.map +0 -1
- package/lib/network/gossip/metrics.d.ts.map +0 -1
- package/lib/network/gossip/scoringParameters.d.ts.map +0 -1
- package/lib/network/gossip/topic.d.ts.map +0 -1
- package/lib/network/index.d.ts.map +0 -1
- package/lib/network/interface.d.ts.map +0 -1
- package/lib/network/libp2p/error.d.ts.map +0 -1
- package/lib/network/libp2p/index.d.ts.map +0 -1
- package/lib/network/metadata.d.ts.map +0 -1
- package/lib/network/network.d.ts.map +0 -1
- package/lib/network/networkConfig.d.ts.map +0 -1
- package/lib/network/options.d.ts.map +0 -1
- package/lib/network/peers/client.d.ts.map +0 -1
- package/lib/network/peers/datastore.d.ts.map +0 -1
- package/lib/network/peers/discover.d.ts.map +0 -1
- package/lib/network/peers/index.d.ts.map +0 -1
- package/lib/network/peers/peerManager.d.ts.map +0 -1
- package/lib/network/peers/peersData.d.ts.map +0 -1
- package/lib/network/peers/score/constants.d.ts.map +0 -1
- package/lib/network/peers/score/index.d.ts.map +0 -1
- package/lib/network/peers/score/interface.d.ts.map +0 -1
- package/lib/network/peers/score/score.d.ts.map +0 -1
- package/lib/network/peers/score/store.d.ts.map +0 -1
- package/lib/network/peers/score/utils.d.ts.map +0 -1
- package/lib/network/peers/utils/assertPeerRelevance.d.ts.map +0 -1
- package/lib/network/peers/utils/enrSubnetsDeserialize.d.ts.map +0 -1
- package/lib/network/peers/utils/getConnectedPeerIds.d.ts.map +0 -1
- package/lib/network/peers/utils/index.d.ts.map +0 -1
- package/lib/network/peers/utils/prioritizePeers.d.ts.map +0 -1
- package/lib/network/peers/utils/subnetMap.d.ts.map +0 -1
- package/lib/network/processor/aggregatorTracker.d.ts.map +0 -1
- package/lib/network/processor/extractSlotRootFns.d.ts.map +0 -1
- package/lib/network/processor/gossipHandlers.d.ts.map +0 -1
- package/lib/network/processor/gossipQueues/index.d.ts.map +0 -1
- package/lib/network/processor/gossipQueues/indexed.d.ts.map +0 -1
- package/lib/network/processor/gossipQueues/linear.d.ts.map +0 -1
- package/lib/network/processor/gossipQueues/types.d.ts.map +0 -1
- package/lib/network/processor/gossipValidatorFn.d.ts.map +0 -1
- package/lib/network/processor/index.d.ts.map +0 -1
- package/lib/network/processor/types.d.ts.map +0 -1
- package/lib/network/reqresp/ReqRespBeaconNode.d.ts.map +0 -1
- package/lib/network/reqresp/handlers/beaconBlocksByRange.d.ts.map +0 -1
- package/lib/network/reqresp/handlers/beaconBlocksByRoot.d.ts.map +0 -1
- package/lib/network/reqresp/handlers/blobSidecarsByRange.d.ts.map +0 -1
- package/lib/network/reqresp/handlers/blobSidecarsByRoot.d.ts.map +0 -1
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRange.d.ts.map +0 -1
- package/lib/network/reqresp/handlers/dataColumnSidecarsByRoot.d.ts.map +0 -1
- package/lib/network/reqresp/handlers/index.d.ts.map +0 -1
- package/lib/network/reqresp/handlers/lightClientBootstrap.d.ts.map +0 -1
- package/lib/network/reqresp/handlers/lightClientFinalityUpdate.d.ts.map +0 -1
- package/lib/network/reqresp/handlers/lightClientOptimisticUpdate.d.ts.map +0 -1
- package/lib/network/reqresp/handlers/lightClientUpdatesByRange.d.ts.map +0 -1
- package/lib/network/reqresp/index.d.ts.map +0 -1
- package/lib/network/reqresp/interface.d.ts.map +0 -1
- package/lib/network/reqresp/protocols.d.ts.map +0 -1
- package/lib/network/reqresp/rateLimit.d.ts.map +0 -1
- package/lib/network/reqresp/score.d.ts.map +0 -1
- package/lib/network/reqresp/types.d.ts.map +0 -1
- package/lib/network/reqresp/utils/collect.d.ts.map +0 -1
- package/lib/network/reqresp/utils/collectSequentialBlocksInRange.d.ts.map +0 -1
- package/lib/network/reqresp/utils/dataColumnResponseValidation.d.ts.map +0 -1
- package/lib/network/statusCache.d.ts.map +0 -1
- package/lib/network/subnets/attnetsService.d.ts.map +0 -1
- package/lib/network/subnets/index.d.ts.map +0 -1
- package/lib/network/subnets/interface.d.ts.map +0 -1
- package/lib/network/subnets/syncnetsService.d.ts.map +0 -1
- package/lib/network/subnets/util.d.ts.map +0 -1
- package/lib/network/util.d.ts.map +0 -1
- package/lib/node/index.d.ts.map +0 -1
- package/lib/node/nodejs.d.ts.map +0 -1
- package/lib/node/notifier.d.ts.map +0 -1
- package/lib/node/options.d.ts.map +0 -1
- package/lib/node/utils/interop/deposits.d.ts.map +0 -1
- package/lib/node/utils/interop/state.d.ts.map +0 -1
- package/lib/node/utils/lightclient.d.ts.map +0 -1
- package/lib/node/utils/state.d.ts.map +0 -1
- package/lib/sync/backfill/backfill.d.ts.map +0 -1
- package/lib/sync/backfill/errors.d.ts.map +0 -1
- package/lib/sync/backfill/index.d.ts.map +0 -1
- package/lib/sync/backfill/verify.d.ts.map +0 -1
- package/lib/sync/constants.d.ts.map +0 -1
- package/lib/sync/index.d.ts.map +0 -1
- package/lib/sync/interface.d.ts.map +0 -1
- package/lib/sync/options.d.ts.map +0 -1
- package/lib/sync/range/batch.d.ts.map +0 -1
- package/lib/sync/range/chain.d.ts.map +0 -1
- package/lib/sync/range/range.d.ts.map +0 -1
- package/lib/sync/range/utils/batches.d.ts.map +0 -1
- package/lib/sync/range/utils/chainTarget.d.ts.map +0 -1
- package/lib/sync/range/utils/hashBlocks.d.ts.map +0 -1
- package/lib/sync/range/utils/index.d.ts.map +0 -1
- package/lib/sync/range/utils/peerBalancer.d.ts.map +0 -1
- package/lib/sync/range/utils/updateChains.d.ts.map +0 -1
- package/lib/sync/sync.d.ts.map +0 -1
- package/lib/sync/types.d.ts.map +0 -1
- package/lib/sync/unknownBlock.d.ts.map +0 -1
- package/lib/sync/utils/downloadByRange.d.ts.map +0 -1
- package/lib/sync/utils/downloadByRoot.d.ts.map +0 -1
- package/lib/sync/utils/pendingBlocksTree.d.ts.map +0 -1
- package/lib/sync/utils/remoteSyncType.d.ts.map +0 -1
- package/lib/util/address.d.ts.map +0 -1
- package/lib/util/array.d.ts.map +0 -1
- package/lib/util/asyncIterableToEvents.d.ts.map +0 -1
- package/lib/util/binarySearch.d.ts.map +0 -1
- package/lib/util/bitArray.d.ts.map +0 -1
- package/lib/util/blobs.d.ts.map +0 -1
- package/lib/util/bufferPool.d.ts.map +0 -1
- package/lib/util/bytes.d.ts.map +0 -1
- package/lib/util/chunkify.d.ts.map +0 -1
- package/lib/util/clock.d.ts.map +0 -1
- package/lib/util/dataColumns.d.ts.map +0 -1
- package/lib/util/dependentRoot.d.ts.map +0 -1
- package/lib/util/enum.d.ts.map +0 -1
- package/lib/util/error.d.ts.map +0 -1
- package/lib/util/eventLoop.d.ts.map +0 -1
- package/lib/util/execution.d.ts.map +0 -1
- package/lib/util/file.d.ts.map +0 -1
- package/lib/util/forkChoice.d.ts.map +0 -1
- package/lib/util/forkName.d.ts.map +0 -1
- package/lib/util/graffiti.d.ts.map +0 -1
- package/lib/util/hex.d.ts.map +0 -1
- package/lib/util/index.d.ts.map +0 -1
- package/lib/util/ip.d.ts.map +0 -1
- package/lib/util/itTrigger.d.ts.map +0 -1
- package/lib/util/kzg.d.ts.map +0 -1
- package/lib/util/map.d.ts.map +0 -1
- package/lib/util/metadata.d.ts.map +0 -1
- package/lib/util/multifork.d.ts.map +0 -1
- package/lib/util/numpy.d.ts.map +0 -1
- package/lib/util/peerId.d.ts.map +0 -1
- package/lib/util/profile.d.ts.map +0 -1
- package/lib/util/promises.d.ts.map +0 -1
- package/lib/util/queue/errors.d.ts.map +0 -1
- package/lib/util/queue/fnQueue.d.ts.map +0 -1
- package/lib/util/queue/index.d.ts.map +0 -1
- package/lib/util/queue/itemQueue.d.ts.map +0 -1
- package/lib/util/queue/options.d.ts.map +0 -1
- package/lib/util/serializedCache.d.ts.map +0 -1
- package/lib/util/set.d.ts.map +0 -1
- package/lib/util/shuffle.d.ts.map +0 -1
- package/lib/util/sortBy.d.ts.map +0 -1
- package/lib/util/sszBytes.d.ts.map +0 -1
- package/lib/util/strictEvents.d.ts.map +0 -1
- package/lib/util/time.d.ts.map +0 -1
- package/lib/util/timeSeries.d.ts.map +0 -1
- package/lib/util/types.d.ts.map +0 -1
- package/lib/util/workerEvents.d.ts.map +0 -1
- package/lib/util/wrapError.d.ts.map +0 -1
- package/src/api/impl/api.ts +0 -26
- package/src/api/impl/beacon/blocks/index.ts +0 -744
- package/src/api/impl/beacon/blocks/utils.ts +0 -75
- package/src/api/impl/beacon/index.ts +0 -35
- package/src/api/impl/beacon/pool/index.ts +0 -314
- package/src/api/impl/beacon/rewards/index.ts +0 -30
- package/src/api/impl/beacon/state/index.ts +0 -406
- package/src/api/impl/beacon/state/utils.ts +0 -189
- package/src/api/impl/config/constants.ts +0 -127
- package/src/api/impl/config/index.ts +0 -59
- package/src/api/impl/debug/index.ts +0 -131
- package/src/api/impl/errors.ts +0 -50
- package/src/api/impl/events/index.ts +0 -33
- package/src/api/impl/index.ts +0 -6
- package/src/api/impl/lightclient/index.ts +0 -64
- package/src/api/impl/lodestar/index.ts +0 -257
- package/src/api/impl/node/index.ts +0 -88
- package/src/api/impl/node/utils.ts +0 -51
- package/src/api/impl/proof/index.ts +0 -60
- package/src/api/impl/types.ts +0 -17
- package/src/api/impl/utils.ts +0 -25
- package/src/api/impl/validator/index.ts +0 -1538
- package/src/api/impl/validator/utils.ts +0 -85
- package/src/api/index.ts +0 -2
- package/src/api/options.ts +0 -16
- package/src/api/rest/activeSockets.ts +0 -109
- package/src/api/rest/base.ts +0 -216
- package/src/api/rest/index.ts +0 -63
- package/src/api/rest/swaggerUI.ts +0 -80
- package/src/bun-wrappers/prometheus-gc-stats.ts +0 -7
- package/src/chain/ColumnReconstructionTracker.ts +0 -90
- package/src/chain/GetBlobsTracker.ts +0 -115
- package/src/chain/archiveStore/archiveStore.ts +0 -222
- package/src/chain/archiveStore/constants.ts +0 -5
- package/src/chain/archiveStore/historicalState/getHistoricalState.ts +0 -116
- package/src/chain/archiveStore/historicalState/historicalStateRegen.ts +0 -68
- package/src/chain/archiveStore/historicalState/metrics.ts +0 -214
- package/src/chain/archiveStore/historicalState/types.ts +0 -41
- package/src/chain/archiveStore/historicalState/worker.ts +0 -77
- package/src/chain/archiveStore/index.ts +0 -3
- package/src/chain/archiveStore/interface.ts +0 -75
- package/src/chain/archiveStore/strategies/frequencyStateArchiveStrategy.ts +0 -138
- package/src/chain/archiveStore/utils/archiveBlocks.ts +0 -437
- package/src/chain/archiveStore/utils/pruneHistory.ts +0 -56
- package/src/chain/archiveStore/utils/updateBackfillRange.ts +0 -50
- package/src/chain/balancesCache.ts +0 -52
- package/src/chain/beaconProposerCache.ts +0 -43
- package/src/chain/blocks/blockInput/blockInput.ts +0 -851
- package/src/chain/blocks/blockInput/errors.ts +0 -48
- package/src/chain/blocks/blockInput/index.ts +0 -4
- package/src/chain/blocks/blockInput/types.ts +0 -145
- package/src/chain/blocks/blockInput/utils.ts +0 -21
- package/src/chain/blocks/importBlock.ts +0 -603
- package/src/chain/blocks/index.ts +0 -179
- package/src/chain/blocks/types.ts +0 -101
- package/src/chain/blocks/utils/blowfishBanner.ts +0 -28
- package/src/chain/blocks/utils/chainSegment.ts +0 -29
- package/src/chain/blocks/utils/checkpoint.ts +0 -25
- package/src/chain/blocks/utils/giraffeBanner.ts +0 -30
- package/src/chain/blocks/utils/ownBanner.ts +0 -20
- package/src/chain/blocks/utils/pandaMergeTransitionBanner.ts +0 -43
- package/src/chain/blocks/utils/zebraBanner.ts +0 -45
- package/src/chain/blocks/verifyBlock.ts +0 -242
- package/src/chain/blocks/verifyBlocksDataAvailability.ts +0 -34
- package/src/chain/blocks/verifyBlocksExecutionPayloads.ts +0 -438
- package/src/chain/blocks/verifyBlocksSanityChecks.ts +0 -129
- package/src/chain/blocks/verifyBlocksSignatures.ts +0 -105
- package/src/chain/blocks/verifyBlocksStateTransitionOnly.ts +0 -114
- package/src/chain/blocks/writeBlockInputToDb.ts +0 -128
- package/src/chain/bls/index.ts +0 -4
- package/src/chain/bls/interface.ts +0 -68
- package/src/chain/bls/maybeBatch.ts +0 -45
- package/src/chain/bls/multithread/index.ts +0 -582
- package/src/chain/bls/multithread/jobItem.ts +0 -119
- package/src/chain/bls/multithread/poolSize.ts +0 -16
- package/src/chain/bls/multithread/types.ts +0 -38
- package/src/chain/bls/multithread/utils.ts +0 -19
- package/src/chain/bls/multithread/worker.ts +0 -114
- package/src/chain/bls/singleThread.ts +0 -87
- package/src/chain/bls/utils.ts +0 -30
- package/src/chain/chain.ts +0 -1365
- package/src/chain/emitter.ts +0 -113
- package/src/chain/errors/attestationError.ts +0 -194
- package/src/chain/errors/attesterSlashingError.ts +0 -11
- package/src/chain/errors/blobSidecarError.ts +0 -60
- package/src/chain/errors/blockError.ts +0 -166
- package/src/chain/errors/blsToExecutionChangeError.ts +0 -13
- package/src/chain/errors/dataColumnSidecarError.ts +0 -80
- package/src/chain/errors/gossipValidation.ts +0 -20
- package/src/chain/errors/index.ts +0 -10
- package/src/chain/errors/lightClientError.ts +0 -30
- package/src/chain/errors/proposerSlashingError.ts +0 -11
- package/src/chain/errors/syncCommitteeError.ts +0 -36
- package/src/chain/errors/voluntaryExitError.ts +0 -13
- package/src/chain/forkChoice/index.ts +0 -112
- package/src/chain/genesis/genesis.ts +0 -190
- package/src/chain/genesis/interface.ts +0 -14
- package/src/chain/index.ts +0 -6
- package/src/chain/initState.ts +0 -221
- package/src/chain/interface.ts +0 -280
- package/src/chain/lightClient/index.ts +0 -764
- package/src/chain/lightClient/proofs.ts +0 -85
- package/src/chain/lightClient/types.ts +0 -33
- package/src/chain/opPools/aggregatedAttestationPool.ts +0 -1063
- package/src/chain/opPools/attestationPool.ts +0 -283
- package/src/chain/opPools/index.ts +0 -5
- package/src/chain/opPools/opPool.ts +0 -462
- package/src/chain/opPools/syncCommitteeMessagePool.ts +0 -167
- package/src/chain/opPools/syncContributionAndProofPool.ts +0 -240
- package/src/chain/opPools/types.ts +0 -35
- package/src/chain/opPools/utils.ts +0 -65
- package/src/chain/options.ts +0 -138
- package/src/chain/prepareNextSlot.ts +0 -277
- package/src/chain/produceBlock/computeNewStateRoot.ts +0 -55
- package/src/chain/produceBlock/index.ts +0 -2
- package/src/chain/produceBlock/produceBlockBody.ts +0 -797
- package/src/chain/produceBlock/validateBlobsAndKzgCommitments.ts +0 -54
- package/src/chain/regen/errors.ts +0 -30
- package/src/chain/regen/index.ts +0 -4
- package/src/chain/regen/interface.ts +0 -93
- package/src/chain/regen/queued.ts +0 -317
- package/src/chain/regen/regen.ts +0 -424
- package/src/chain/reprocess.ts +0 -161
- package/src/chain/rewards/attestationsRewards.ts +0 -196
- package/src/chain/rewards/blockRewards.ts +0 -150
- package/src/chain/rewards/syncCommitteeRewards.ts +0 -58
- package/src/chain/seenCache/index.ts +0 -5
- package/src/chain/seenCache/seenAggregateAndProof.ts +0 -120
- package/src/chain/seenCache/seenAttestationData.ts +0 -145
- package/src/chain/seenCache/seenAttesters.ts +0 -58
- package/src/chain/seenCache/seenBlockAttesters.ts +0 -18
- package/src/chain/seenCache/seenBlockProposers.ts +0 -48
- package/src/chain/seenCache/seenCommittee.ts +0 -43
- package/src/chain/seenCache/seenCommitteeContribution.ts +0 -104
- package/src/chain/seenCache/seenGossipBlockInput.ts +0 -373
- package/src/chain/serializeState.ts +0 -32
- package/src/chain/shufflingCache.ts +0 -238
- package/src/chain/stateCache/blockStateCacheImpl.ts +0 -150
- package/src/chain/stateCache/datastore/db.ts +0 -36
- package/src/chain/stateCache/datastore/file.ts +0 -53
- package/src/chain/stateCache/datastore/index.ts +0 -2
- package/src/chain/stateCache/datastore/types.ts +0 -13
- package/src/chain/stateCache/fifoBlockStateCache.ts +0 -208
- package/src/chain/stateCache/inMemoryCheckpointsCache.ts +0 -198
- package/src/chain/stateCache/index.ts +0 -3
- package/src/chain/stateCache/mapMetrics.ts +0 -52
- package/src/chain/stateCache/persistentCheckpointsCache.ts +0 -835
- package/src/chain/stateCache/types.ts +0 -86
- package/src/chain/validation/aggregateAndProof.ts +0 -258
- package/src/chain/validation/attestation.ts +0 -885
- package/src/chain/validation/attesterSlashing.ts +0 -61
- package/src/chain/validation/blobSidecar.ts +0 -301
- package/src/chain/validation/block.ts +0 -188
- package/src/chain/validation/blsToExecutionChange.ts +0 -61
- package/src/chain/validation/dataColumnSidecar.ts +0 -381
- package/src/chain/validation/index.ts +0 -9
- package/src/chain/validation/lightClientFinalityUpdate.ts +0 -45
- package/src/chain/validation/lightClientOptimisticUpdate.ts +0 -67
- package/src/chain/validation/proposerSlashing.ts +0 -54
- package/src/chain/validation/signatureSets/aggregateAndProof.ts +0 -38
- package/src/chain/validation/signatureSets/contributionAndProof.ts +0 -27
- package/src/chain/validation/signatureSets/index.ts +0 -6
- package/src/chain/validation/signatureSets/selectionProof.ts +0 -27
- package/src/chain/validation/signatureSets/syncCommittee.ts +0 -22
- package/src/chain/validation/signatureSets/syncCommitteeContribution.ts +0 -18
- package/src/chain/validation/signatureSets/syncCommitteeSelectionProof.ts +0 -27
- package/src/chain/validation/syncCommittee.ts +0 -165
- package/src/chain/validation/syncCommitteeContributionAndProof.ts +0 -122
- package/src/chain/validation/voluntaryExit.ts +0 -58
- package/src/chain/validatorMonitor.ts +0 -1299
- package/src/constants/constants.ts +0 -15
- package/src/constants/index.ts +0 -2
- package/src/constants/network.ts +0 -52
- package/src/db/beacon.ts +0 -113
- package/src/db/buckets.ts +0 -80
- package/src/db/index.ts +0 -2
- package/src/db/interface.ts +0 -76
- package/src/db/options.ts +0 -7
- package/src/db/repositories/attesterSlashing.ts +0 -38
- package/src/db/repositories/backfilledRanges.ts +0 -29
- package/src/db/repositories/blobSidecars.ts +0 -37
- package/src/db/repositories/blobSidecarsArchive.ts +0 -28
- package/src/db/repositories/block.ts +0 -33
- package/src/db/repositories/blockArchive.ts +0 -170
- package/src/db/repositories/blockArchiveIndex.ts +0 -45
- package/src/db/repositories/blsToExecutionChange.ts +0 -16
- package/src/db/repositories/checkpointState.ts +0 -31
- package/src/db/repositories/dataColumnSidecar.ts +0 -49
- package/src/db/repositories/dataColumnSidecarArchive.ts +0 -56
- package/src/db/repositories/depositDataRoot.ts +0 -80
- package/src/db/repositories/depositEvent.ts +0 -32
- package/src/db/repositories/eth1Data.ts +0 -33
- package/src/db/repositories/index.ts +0 -20
- package/src/db/repositories/lightclientBestUpdate.ts +0 -41
- package/src/db/repositories/lightclientCheckpointHeader.ts +0 -32
- package/src/db/repositories/lightclientSyncCommittee.ts +0 -16
- package/src/db/repositories/lightclientSyncCommitteeWitness.ts +0 -77
- package/src/db/repositories/proposerSlashing.ts +0 -15
- package/src/db/repositories/stateArchive.ts +0 -69
- package/src/db/repositories/stateArchiveIndex.ts +0 -18
- package/src/db/repositories/voluntaryExit.ts +0 -15
- package/src/db/single/index.ts +0 -2
- package/src/db/single/preGenesisState.ts +0 -37
- package/src/db/single/preGenesisStateLastProcessedBlock.ts +0 -34
- package/src/eth1/errors.ts +0 -40
- package/src/eth1/eth1DataCache.ts +0 -26
- package/src/eth1/eth1DepositDataTracker.ts +0 -410
- package/src/eth1/eth1DepositsCache.ts +0 -141
- package/src/eth1/eth1MergeBlockTracker.ts +0 -328
- package/src/eth1/index.ts +0 -157
- package/src/eth1/interface.ts +0 -131
- package/src/eth1/options.ts +0 -28
- package/src/eth1/provider/eth1Provider.ts +0 -229
- package/src/eth1/provider/jsonRpcHttpClient.ts +0 -390
- package/src/eth1/provider/jwt.ts +0 -36
- package/src/eth1/provider/utils.ts +0 -136
- package/src/eth1/stream.ts +0 -75
- package/src/eth1/utils/depositContract.ts +0 -37
- package/src/eth1/utils/deposits.ts +0 -70
- package/src/eth1/utils/eth1Data.ts +0 -100
- package/src/eth1/utils/eth1DepositEvent.ts +0 -12
- package/src/eth1/utils/eth1Vote.ts +0 -142
- package/src/eth1/utils/groupDepositEventsByBlock.ts +0 -19
- package/src/eth1/utils/optimizeNextBlockDiffForGenesis.ts +0 -18
- package/src/execution/builder/cache.ts +0 -39
- package/src/execution/builder/http.ts +0 -229
- package/src/execution/builder/index.ts +0 -27
- package/src/execution/builder/interface.ts +0 -49
- package/src/execution/builder/utils.ts +0 -19
- package/src/execution/engine/disabled.ts +0 -35
- package/src/execution/engine/http.ts +0 -644
- package/src/execution/engine/index.ts +0 -63
- package/src/execution/engine/interface.ts +0 -199
- package/src/execution/engine/mock.ts +0 -493
- package/src/execution/engine/payloadIdCache.ts +0 -54
- package/src/execution/engine/types.ts +0 -640
- package/src/execution/engine/utils.ts +0 -136
- package/src/execution/index.ts +0 -4
- package/src/index.ts +0 -20
- package/src/metrics/index.ts +0 -4
- package/src/metrics/metrics/beacon.ts +0 -390
- package/src/metrics/metrics/lodestar.ts +0 -1870
- package/src/metrics/metrics.ts +0 -43
- package/src/metrics/nodeJsMetrics.ts +0 -19
- package/src/metrics/options.ts +0 -22
- package/src/metrics/server/http.ts +0 -114
- package/src/metrics/server/index.ts +0 -1
- package/src/metrics/utils/avgMinMax.ts +0 -87
- package/src/metrics/utils/gauge.ts +0 -22
- package/src/metrics/utils/registryMetricCreator.ts +0 -41
- package/src/monitoring/clientStats.ts +0 -297
- package/src/monitoring/index.ts +0 -2
- package/src/monitoring/options.ts +0 -19
- package/src/monitoring/properties.ts +0 -152
- package/src/monitoring/service.ts +0 -235
- package/src/monitoring/system.ts +0 -146
- package/src/monitoring/types.ts +0 -21
- package/src/network/core/events.ts +0 -59
- package/src/network/core/index.ts +0 -3
- package/src/network/core/metrics.ts +0 -304
- package/src/network/core/networkCore.ts +0 -599
- package/src/network/core/networkCoreWorker.ts +0 -176
- package/src/network/core/networkCoreWorkerHandler.ts +0 -284
- package/src/network/core/types.ts +0 -119
- package/src/network/discv5/index.ts +0 -132
- package/src/network/discv5/types.ts +0 -74
- package/src/network/discv5/utils.ts +0 -50
- package/src/network/discv5/worker.ts +0 -137
- package/src/network/events.ts +0 -51
- package/src/network/forks.ts +0 -94
- package/src/network/gossip/constants.ts +0 -15
- package/src/network/gossip/encoding.ts +0 -111
- package/src/network/gossip/errors.ts +0 -7
- package/src/network/gossip/gossipsub.ts +0 -384
- package/src/network/gossip/index.ts +0 -4
- package/src/network/gossip/interface.ts +0 -215
- package/src/network/gossip/metrics.ts +0 -71
- package/src/network/gossip/scoringParameters.ts +0 -333
- package/src/network/gossip/topic.ts +0 -332
- package/src/network/index.ts +0 -8
- package/src/network/interface.ts +0 -134
- package/src/network/libp2p/error.ts +0 -55
- package/src/network/libp2p/index.ts +0 -153
- package/src/network/metadata.ts +0 -162
- package/src/network/network.ts +0 -767
- package/src/network/networkConfig.ts +0 -12
- package/src/network/options.ts +0 -70
- package/src/network/peers/client.ts +0 -29
- package/src/network/peers/datastore.ts +0 -188
- package/src/network/peers/discover.ts +0 -647
- package/src/network/peers/index.ts +0 -2
- package/src/network/peers/peerManager.ts +0 -899
- package/src/network/peers/peersData.ts +0 -65
- package/src/network/peers/score/constants.ts +0 -34
- package/src/network/peers/score/index.ts +0 -4
- package/src/network/peers/score/interface.ts +0 -74
- package/src/network/peers/score/score.ts +0 -200
- package/src/network/peers/score/store.ts +0 -95
- package/src/network/peers/score/utils.ts +0 -37
- package/src/network/peers/utils/assertPeerRelevance.ts +0 -99
- package/src/network/peers/utils/enrSubnetsDeserialize.ts +0 -27
- package/src/network/peers/utils/getConnectedPeerIds.ts +0 -33
- package/src/network/peers/utils/index.ts +0 -4
- package/src/network/peers/utils/prioritizePeers.ts +0 -627
- package/src/network/peers/utils/subnetMap.ts +0 -88
- package/src/network/processor/aggregatorTracker.ts +0 -38
- package/src/network/processor/extractSlotRootFns.ts +0 -64
- package/src/network/processor/gossipHandlers.ts +0 -951
- package/src/network/processor/gossipQueues/index.ts +0 -114
- package/src/network/processor/gossipQueues/indexed.ts +0 -219
- package/src/network/processor/gossipQueues/linear.ts +0 -162
- package/src/network/processor/gossipQueues/types.ts +0 -57
- package/src/network/processor/gossipValidatorFn.ts +0 -142
- package/src/network/processor/index.ts +0 -497
- package/src/network/processor/types.ts +0 -27
- package/src/network/reqresp/ReqRespBeaconNode.ts +0 -373
- package/src/network/reqresp/handlers/beaconBlocksByRange.ts +0 -101
- package/src/network/reqresp/handlers/beaconBlocksByRoot.ts +0 -49
- package/src/network/reqresp/handlers/blobSidecarsByRange.ts +0 -114
- package/src/network/reqresp/handlers/blobSidecarsByRoot.ts +0 -62
- package/src/network/reqresp/handlers/dataColumnSidecarsByRange.ts +0 -144
- package/src/network/reqresp/handlers/dataColumnSidecarsByRoot.ts +0 -88
- package/src/network/reqresp/handlers/index.ts +0 -78
- package/src/network/reqresp/handlers/lightClientBootstrap.ts +0 -31
- package/src/network/reqresp/handlers/lightClientFinalityUpdate.ts +0 -21
- package/src/network/reqresp/handlers/lightClientOptimisticUpdate.ts +0 -21
- package/src/network/reqresp/handlers/lightClientUpdatesByRange.ts +0 -39
- package/src/network/reqresp/index.ts +0 -2
- package/src/network/reqresp/interface.ts +0 -45
- package/src/network/reqresp/protocols.ts +0 -146
- package/src/network/reqresp/rateLimit.ts +0 -112
- package/src/network/reqresp/score.ts +0 -70
- package/src/network/reqresp/types.ts +0 -174
- package/src/network/reqresp/utils/collect.ts +0 -84
- package/src/network/reqresp/utils/collectSequentialBlocksInRange.ts +0 -57
- package/src/network/reqresp/utils/dataColumnResponseValidation.ts +0 -99
- package/src/network/statusCache.ts +0 -17
- package/src/network/subnets/attnetsService.ts +0 -385
- package/src/network/subnets/index.ts +0 -2
- package/src/network/subnets/interface.ts +0 -66
- package/src/network/subnets/syncnetsService.ts +0 -147
- package/src/network/subnets/util.ts +0 -63
- package/src/network/util.ts +0 -29
- package/src/node/index.ts +0 -2
- package/src/node/nodejs.ts +0 -349
- package/src/node/notifier.ts +0 -206
- package/src/node/options.ts +0 -51
- package/src/node/utils/interop/deposits.ts +0 -53
- package/src/node/utils/interop/state.ts +0 -59
- package/src/node/utils/lightclient.ts +0 -7
- package/src/node/utils/state.ts +0 -37
- package/src/sync/backfill/backfill.ts +0 -893
- package/src/sync/backfill/errors.ts +0 -23
- package/src/sync/backfill/index.ts +0 -1
- package/src/sync/backfill/verify.ts +0 -58
- package/src/sync/constants.ts +0 -71
- package/src/sync/index.ts +0 -2
- package/src/sync/interface.ts +0 -55
- package/src/sync/options.ts +0 -45
- package/src/sync/range/batch.ts +0 -455
- package/src/sync/range/chain.ts +0 -715
- package/src/sync/range/range.ts +0 -354
- package/src/sync/range/utils/batches.ts +0 -119
- package/src/sync/range/utils/chainTarget.ts +0 -62
- package/src/sync/range/utils/hashBlocks.ts +0 -27
- package/src/sync/range/utils/index.ts +0 -5
- package/src/sync/range/utils/peerBalancer.ts +0 -184
- package/src/sync/range/utils/updateChains.ts +0 -66
- package/src/sync/sync.ts +0 -290
- package/src/sync/types.ts +0 -59
- package/src/sync/unknownBlock.ts +0 -862
- package/src/sync/utils/downloadByRange.ts +0 -808
- package/src/sync/utils/downloadByRoot.ts +0 -560
- package/src/sync/utils/pendingBlocksTree.ts +0 -97
- package/src/sync/utils/remoteSyncType.ts +0 -144
- package/src/util/address.ts +0 -3
- package/src/util/array.ts +0 -311
- package/src/util/asyncIterableToEvents.ts +0 -164
- package/src/util/binarySearch.ts +0 -48
- package/src/util/bitArray.ts +0 -84
- package/src/util/blobs.ts +0 -210
- package/src/util/bufferPool.ts +0 -95
- package/src/util/bytes.ts +0 -11
- package/src/util/chunkify.ts +0 -27
- package/src/util/clock.ts +0 -204
- package/src/util/dataColumns.ts +0 -415
- package/src/util/dependentRoot.ts +0 -47
- package/src/util/enum.ts +0 -17
- package/src/util/error.ts +0 -56
- package/src/util/eventLoop.ts +0 -22
- package/src/util/execution.ts +0 -223
- package/src/util/file.ts +0 -52
- package/src/util/forkChoice.ts +0 -5
- package/src/util/forkName.ts +0 -20
- package/src/util/graffiti.ts +0 -39
- package/src/util/hex.ts +0 -9
- package/src/util/index.ts +0 -2
- package/src/util/ip.ts +0 -6
- package/src/util/itTrigger.ts +0 -49
- package/src/util/kzg.ts +0 -3
- package/src/util/map.ts +0 -77
- package/src/util/metadata.ts +0 -22
- package/src/util/multifork.ts +0 -69
- package/src/util/numpy.ts +0 -8
- package/src/util/peerId.ts +0 -16
- package/src/util/profile.ts +0 -54
- package/src/util/promises.ts +0 -14
- package/src/util/queue/errors.ts +0 -14
- package/src/util/queue/fnQueue.ts +0 -16
- package/src/util/queue/index.ts +0 -4
- package/src/util/queue/itemQueue.ts +0 -128
- package/src/util/queue/options.ts +0 -37
- package/src/util/serializedCache.ts +0 -20
- package/src/util/set.ts +0 -62
- package/src/util/shuffle.ts +0 -21
- package/src/util/sortBy.ts +0 -19
- package/src/util/sszBytes.ts +0 -481
- package/src/util/strictEvents.ts +0 -8
- package/src/util/time.ts +0 -13
- package/src/util/timeSeries.ts +0 -118
- package/src/util/types.ts +0 -31
- package/src/util/workerEvents.ts +0 -142
- package/src/util/wrapError.ts +0 -27
|
@@ -1,381 +0,0 @@
|
|
|
1
|
-
import {ChainConfig} from "@lodestar/config";
|
|
2
|
-
import {
|
|
3
|
-
KZG_COMMITMENTS_INCLUSION_PROOF_DEPTH,
|
|
4
|
-
KZG_COMMITMENTS_SUBTREE_INDEX,
|
|
5
|
-
NUMBER_OF_COLUMNS,
|
|
6
|
-
} from "@lodestar/params";
|
|
7
|
-
import {computeStartSlotAtEpoch, getBlockHeaderProposerSignatureSet} from "@lodestar/state-transition";
|
|
8
|
-
import {Root, Slot, SubnetID, fulu, ssz} from "@lodestar/types";
|
|
9
|
-
import {toRootHex, verifyMerkleBranch} from "@lodestar/utils";
|
|
10
|
-
import {Metrics} from "../../metrics/metrics.js";
|
|
11
|
-
import {kzg} from "../../util/kzg.js";
|
|
12
|
-
import {
|
|
13
|
-
DataColumnSidecarErrorCode,
|
|
14
|
-
DataColumnSidecarGossipError,
|
|
15
|
-
DataColumnSidecarValidationError,
|
|
16
|
-
} from "../errors/dataColumnSidecarError.js";
|
|
17
|
-
import {GossipAction} from "../errors/gossipValidation.js";
|
|
18
|
-
import {IBeaconChain} from "../interface.js";
|
|
19
|
-
import {RegenCaller} from "../regen/interface.js";
|
|
20
|
-
|
|
21
|
-
// SPEC FUNCTION
|
|
22
|
-
// https://github.com/ethereum/consensus-specs/blob/v1.6.0-alpha.4/specs/fulu/p2p-interface.md#data_column_sidecar_subnet_id
|
|
23
|
-
export async function validateGossipDataColumnSidecar(
|
|
24
|
-
chain: IBeaconChain,
|
|
25
|
-
dataColumnSidecar: fulu.DataColumnSidecar,
|
|
26
|
-
gossipSubnet: SubnetID,
|
|
27
|
-
metrics: Metrics | null
|
|
28
|
-
): Promise<void> {
|
|
29
|
-
const blockHeader = dataColumnSidecar.signedBlockHeader.message;
|
|
30
|
-
|
|
31
|
-
// 1) [REJECT] The sidecar is valid as verified by verify_data_column_sidecar
|
|
32
|
-
verifyDataColumnSidecar(dataColumnSidecar);
|
|
33
|
-
|
|
34
|
-
// 2) [REJECT] The sidecar is for the correct subnet -- i.e. compute_subnet_for_data_column_sidecar(sidecar.index) == subnet_id
|
|
35
|
-
if (computeSubnetForDataColumnSidecar(chain.config, dataColumnSidecar) !== gossipSubnet) {
|
|
36
|
-
throw new DataColumnSidecarGossipError(GossipAction.REJECT, {
|
|
37
|
-
code: DataColumnSidecarErrorCode.INVALID_SUBNET,
|
|
38
|
-
columnIdx: dataColumnSidecar.index,
|
|
39
|
-
gossipSubnet: gossipSubnet,
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
// 3) [IGNORE] The sidecar is not from a future slot (with a MAXIMUM_GOSSIP_CLOCK_DISPARITY allowance)
|
|
44
|
-
// -- i.e. validate that sidecar.slot <= current_slot (a client MAY queue future blocks
|
|
45
|
-
// for processing at the appropriate slot).
|
|
46
|
-
const currentSlotWithGossipDisparity = chain.clock.currentSlotWithGossipDisparity;
|
|
47
|
-
if (currentSlotWithGossipDisparity < blockHeader.slot) {
|
|
48
|
-
throw new DataColumnSidecarGossipError(GossipAction.IGNORE, {
|
|
49
|
-
code: DataColumnSidecarErrorCode.FUTURE_SLOT,
|
|
50
|
-
currentSlot: currentSlotWithGossipDisparity,
|
|
51
|
-
blockSlot: blockHeader.slot,
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
// 4) [IGNORE] The sidecar is from a slot greater than the latest finalized slot -- i.e. validate that
|
|
56
|
-
// sidecar.slot > compute_start_slot_at_epoch(state.finalized_checkpoint.epoch)
|
|
57
|
-
const finalizedCheckpoint = chain.forkChoice.getFinalizedCheckpoint();
|
|
58
|
-
const finalizedSlot = computeStartSlotAtEpoch(finalizedCheckpoint.epoch);
|
|
59
|
-
if (blockHeader.slot <= finalizedSlot) {
|
|
60
|
-
throw new DataColumnSidecarGossipError(GossipAction.IGNORE, {
|
|
61
|
-
code: DataColumnSidecarErrorCode.WOULD_REVERT_FINALIZED_SLOT,
|
|
62
|
-
blockSlot: blockHeader.slot,
|
|
63
|
-
finalizedSlot,
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
// 6) [IGNORE] The sidecar's block's parent (defined by block_header.parent_root) has been seen (via gossip
|
|
68
|
-
// or non-gossip sources)
|
|
69
|
-
const parentRoot = toRootHex(blockHeader.parentRoot);
|
|
70
|
-
const parentBlock = chain.forkChoice.getBlockHex(parentRoot);
|
|
71
|
-
if (parentBlock === null) {
|
|
72
|
-
// If fork choice does *not* consider the parent to be a descendant of the finalized block,
|
|
73
|
-
// then there are two more cases:
|
|
74
|
-
//
|
|
75
|
-
// 1. We have the parent stored in our database. Because fork-choice has confirmed the
|
|
76
|
-
// parent is *not* in our post-finalization DAG, all other blocks must be either
|
|
77
|
-
// pre-finalization or conflicting with finalization.
|
|
78
|
-
// 2. The parent is unknown to us, we probably want to download it since it might actually
|
|
79
|
-
// descend from the finalized root.
|
|
80
|
-
// (Non-Lighthouse): Since we prune all blocks non-descendant from finalized checking the `db.block` database won't be useful to guard
|
|
81
|
-
// against known bad fork blocks, so we throw PARENT_UNKNOWN for cases (1) and (2)
|
|
82
|
-
throw new DataColumnSidecarGossipError(GossipAction.IGNORE, {
|
|
83
|
-
code: DataColumnSidecarErrorCode.PARENT_UNKNOWN,
|
|
84
|
-
parentRoot,
|
|
85
|
-
});
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
// 8) [REJECT] The sidecar is from a higher slot than the sidecar's block's parent
|
|
89
|
-
if (parentBlock.slot >= blockHeader.slot) {
|
|
90
|
-
throw new DataColumnSidecarGossipError(GossipAction.REJECT, {
|
|
91
|
-
code: DataColumnSidecarErrorCode.NOT_LATER_THAN_PARENT,
|
|
92
|
-
parentSlot: parentBlock.slot,
|
|
93
|
-
slot: blockHeader.slot,
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
// getBlockSlotState also checks for whether the current finalized checkpoint is an ancestor of the block.
|
|
98
|
-
// As a result, we throw an IGNORE (whereas the spec says we should REJECT for this scenario).
|
|
99
|
-
// this is something we should change this in the future to make the code airtight to the spec.
|
|
100
|
-
// 7) [REJECT] The sidecar's block's parent passes validation.
|
|
101
|
-
const blockState = await chain.regen
|
|
102
|
-
.getBlockSlotState(parentRoot, blockHeader.slot, {dontTransferCache: true}, RegenCaller.validateGossipBlock)
|
|
103
|
-
.catch(() => {
|
|
104
|
-
throw new DataColumnSidecarGossipError(GossipAction.IGNORE, {
|
|
105
|
-
code: DataColumnSidecarErrorCode.PARENT_UNKNOWN,
|
|
106
|
-
parentRoot,
|
|
107
|
-
});
|
|
108
|
-
});
|
|
109
|
-
|
|
110
|
-
// 13) [REJECT] The sidecar is proposed by the expected proposer_index for the block's slot in the context of the current
|
|
111
|
-
// shuffling (defined by block_header.parent_root/block_header.slot). If the proposer_index cannot
|
|
112
|
-
// immediately be verified against the expected shuffling, the sidecar MAY be queued for later processing
|
|
113
|
-
// while proposers for the block's branch are calculated -- in such a case do not REJECT, instead IGNORE
|
|
114
|
-
// this message.
|
|
115
|
-
const proposerIndex = blockHeader.proposerIndex;
|
|
116
|
-
const expectedProposerIndex = blockState.epochCtx.getBeaconProposer(blockHeader.slot);
|
|
117
|
-
|
|
118
|
-
if (proposerIndex !== expectedProposerIndex) {
|
|
119
|
-
throw new DataColumnSidecarGossipError(GossipAction.REJECT, {
|
|
120
|
-
code: DataColumnSidecarErrorCode.INCORRECT_PROPOSER,
|
|
121
|
-
actualProposerIndex: proposerIndex,
|
|
122
|
-
expectedProposerIndex,
|
|
123
|
-
});
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
// 5) [REJECT] The proposer signature of sidecar.signed_block_header, is valid with respect to the block_header.proposer_index pubkey.
|
|
127
|
-
const signatureSet = getBlockHeaderProposerSignatureSet(blockState, dataColumnSidecar.signedBlockHeader);
|
|
128
|
-
// Don't batch so verification is not delayed
|
|
129
|
-
if (
|
|
130
|
-
!(await chain.bls.verifySignatureSets([signatureSet], {
|
|
131
|
-
verifyOnMainThread: blockHeader.slot > chain.forkChoice.getHead().slot,
|
|
132
|
-
}))
|
|
133
|
-
) {
|
|
134
|
-
throw new DataColumnSidecarGossipError(GossipAction.REJECT, {
|
|
135
|
-
code: DataColumnSidecarErrorCode.PROPOSAL_SIGNATURE_INVALID,
|
|
136
|
-
});
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
// 9) [REJECT] The current finalized_checkpoint is an ancestor of the sidecar's block
|
|
140
|
-
// -- i.e. get_checkpoint_block(store, block_header.parent_root, store.finalized_checkpoint.epoch)
|
|
141
|
-
// == store.finalized_checkpoint.root
|
|
142
|
-
// Handled by 7)
|
|
143
|
-
|
|
144
|
-
// 10) [REJECT] The sidecar's kzg_commitments field inclusion proof is valid as verified by
|
|
145
|
-
// verify_data_column_sidecar_inclusion_proof
|
|
146
|
-
// TODO: Can cache result on (commitments, proof, header) in the future
|
|
147
|
-
const timer = metrics?.peerDas.dataColumnSidecarInclusionProofVerificationTime.startTimer();
|
|
148
|
-
const valid = verifyDataColumnSidecarInclusionProof(dataColumnSidecar);
|
|
149
|
-
timer?.();
|
|
150
|
-
|
|
151
|
-
if (!valid) {
|
|
152
|
-
throw new DataColumnSidecarGossipError(GossipAction.REJECT, {
|
|
153
|
-
code: DataColumnSidecarErrorCode.INCLUSION_PROOF_INVALID,
|
|
154
|
-
slot: dataColumnSidecar.signedBlockHeader.message.slot,
|
|
155
|
-
columnIdx: dataColumnSidecar.index,
|
|
156
|
-
});
|
|
157
|
-
}
|
|
158
|
-
|
|
159
|
-
const kzgProofTimer = metrics?.peerDas.dataColumnSidecarKzgProofsVerificationTime.startTimer();
|
|
160
|
-
// 11) [REJECT] The sidecar's column data is valid as verified by verify_data_column_sidecar_kzg_proofs
|
|
161
|
-
try {
|
|
162
|
-
await verifyDataColumnSidecarKzgProofs(
|
|
163
|
-
dataColumnSidecar.kzgCommitments,
|
|
164
|
-
Array.from({length: dataColumnSidecar.column.length}, () => dataColumnSidecar.index),
|
|
165
|
-
dataColumnSidecar.column,
|
|
166
|
-
dataColumnSidecar.kzgProofs
|
|
167
|
-
);
|
|
168
|
-
} catch {
|
|
169
|
-
throw new DataColumnSidecarGossipError(GossipAction.REJECT, {
|
|
170
|
-
code: DataColumnSidecarErrorCode.INVALID_KZG_PROOF,
|
|
171
|
-
slot: blockHeader.slot,
|
|
172
|
-
columnIdx: dataColumnSidecar.index,
|
|
173
|
-
});
|
|
174
|
-
} finally {
|
|
175
|
-
kzgProofTimer?.();
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
// 12) [IGNORE] The sidecar is the first sidecar for the tuple (block_header.slot, block_header.proposer_index,
|
|
179
|
-
// sidecar.index) with valid header signature, sidecar inclusion proof, and kzg proof
|
|
180
|
-
// -- Handled in seenGossipBlockInput
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
/**
|
|
184
|
-
* SPEC FUNCTION
|
|
185
|
-
* https://github.com/ethereum/consensus-specs/blob/v1.6.0-alpha.4/specs/fulu/p2p-interface.md#verify_data_column_sidecar
|
|
186
|
-
*/
|
|
187
|
-
function verifyDataColumnSidecar(dataColumnSidecar: fulu.DataColumnSidecar): void {
|
|
188
|
-
if (dataColumnSidecar.index >= NUMBER_OF_COLUMNS) {
|
|
189
|
-
throw new DataColumnSidecarGossipError(GossipAction.REJECT, {
|
|
190
|
-
code: DataColumnSidecarErrorCode.INVALID_INDEX,
|
|
191
|
-
slot: dataColumnSidecar.signedBlockHeader.message.slot,
|
|
192
|
-
columnIdx: dataColumnSidecar.index,
|
|
193
|
-
});
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
if (dataColumnSidecar.kzgCommitments.length === 0) {
|
|
197
|
-
throw new DataColumnSidecarGossipError(GossipAction.REJECT, {
|
|
198
|
-
code: DataColumnSidecarErrorCode.NO_COMMITMENTS,
|
|
199
|
-
slot: dataColumnSidecar.signedBlockHeader.message.slot,
|
|
200
|
-
columnIdx: dataColumnSidecar.index,
|
|
201
|
-
});
|
|
202
|
-
}
|
|
203
|
-
|
|
204
|
-
if (
|
|
205
|
-
dataColumnSidecar.column.length !== dataColumnSidecar.kzgCommitments.length ||
|
|
206
|
-
dataColumnSidecar.column.length !== dataColumnSidecar.kzgProofs.length
|
|
207
|
-
) {
|
|
208
|
-
throw new DataColumnSidecarGossipError(GossipAction.REJECT, {
|
|
209
|
-
code: DataColumnSidecarErrorCode.MISMATCHED_LENGTHS,
|
|
210
|
-
columnLength: dataColumnSidecar.column.length,
|
|
211
|
-
commitmentsLength: dataColumnSidecar.kzgCommitments.length,
|
|
212
|
-
proofsLength: dataColumnSidecar.kzgProofs.length,
|
|
213
|
-
});
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
|
|
217
|
-
/**
|
|
218
|
-
* SPEC FUNCTION
|
|
219
|
-
* https://github.com/ethereum/consensus-specs/blob/v1.6.0-alpha.4/specs/fulu/p2p-interface.md#verify_data_column_sidecar_kzg_proofs
|
|
220
|
-
*/
|
|
221
|
-
export async function verifyDataColumnSidecarKzgProofs(
|
|
222
|
-
commitments: Uint8Array[],
|
|
223
|
-
cellIndices: number[],
|
|
224
|
-
cells: Uint8Array[],
|
|
225
|
-
proofs: Uint8Array[]
|
|
226
|
-
): Promise<void> {
|
|
227
|
-
let valid: boolean;
|
|
228
|
-
try {
|
|
229
|
-
valid = await kzg.asyncVerifyCellKzgProofBatch(commitments, cellIndices, cells, proofs);
|
|
230
|
-
} catch (e) {
|
|
231
|
-
(e as Error).message = `Error on asyncVerifyCellKzgProofBatch: ${(e as Error).message}`;
|
|
232
|
-
throw e;
|
|
233
|
-
}
|
|
234
|
-
if (!valid) {
|
|
235
|
-
throw Error("Invalid verifyCellKzgProofBatch");
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
|
|
239
|
-
/**
|
|
240
|
-
* SPEC FUNCTION
|
|
241
|
-
* https://github.com/ethereum/consensus-specs/blob/v1.6.0-alpha.4/specs/fulu/p2p-interface.md#verify_data_column_sidecar_inclusion_proof
|
|
242
|
-
*/
|
|
243
|
-
export function verifyDataColumnSidecarInclusionProof(dataColumnSidecar: fulu.DataColumnSidecar): boolean {
|
|
244
|
-
return verifyMerkleBranch(
|
|
245
|
-
ssz.deneb.BlobKzgCommitments.hashTreeRoot(dataColumnSidecar.kzgCommitments),
|
|
246
|
-
dataColumnSidecar.kzgCommitmentsInclusionProof,
|
|
247
|
-
KZG_COMMITMENTS_INCLUSION_PROOF_DEPTH,
|
|
248
|
-
KZG_COMMITMENTS_SUBTREE_INDEX,
|
|
249
|
-
dataColumnSidecar.signedBlockHeader.message.bodyRoot
|
|
250
|
-
);
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
/**
|
|
254
|
-
* Validate a subset of data column sidecars in a block
|
|
255
|
-
*
|
|
256
|
-
* Requires the block to be known to the node
|
|
257
|
-
*/
|
|
258
|
-
export async function validateBlockDataColumnSidecars(
|
|
259
|
-
blockSlot: Slot,
|
|
260
|
-
blockRoot: Root,
|
|
261
|
-
blockBlobCount: number,
|
|
262
|
-
dataColumnSidecars: fulu.DataColumnSidecars
|
|
263
|
-
): Promise<void> {
|
|
264
|
-
if (dataColumnSidecars.length === 0) {
|
|
265
|
-
return;
|
|
266
|
-
}
|
|
267
|
-
|
|
268
|
-
if (blockBlobCount === 0) {
|
|
269
|
-
throw new DataColumnSidecarValidationError(
|
|
270
|
-
{
|
|
271
|
-
code: DataColumnSidecarErrorCode.INCORRECT_SIDECAR_COUNT,
|
|
272
|
-
slot: blockSlot,
|
|
273
|
-
expected: 0,
|
|
274
|
-
actual: dataColumnSidecars.length,
|
|
275
|
-
},
|
|
276
|
-
"Block has no blob commitments but data column sidecars were provided"
|
|
277
|
-
);
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
// Hash the first sidecar block header and compare the rest via (cheaper) equality
|
|
281
|
-
const firstSidecarBlockHeader = dataColumnSidecars[0].signedBlockHeader.message;
|
|
282
|
-
const firstBlockRoot = ssz.phase0.BeaconBlockHeader.hashTreeRoot(firstSidecarBlockHeader);
|
|
283
|
-
if (Buffer.compare(blockRoot, firstBlockRoot) !== 0) {
|
|
284
|
-
throw new DataColumnSidecarValidationError(
|
|
285
|
-
{
|
|
286
|
-
code: DataColumnSidecarErrorCode.INCORRECT_BLOCK,
|
|
287
|
-
slot: blockSlot,
|
|
288
|
-
columnIdx: 0,
|
|
289
|
-
expected: toRootHex(blockRoot),
|
|
290
|
-
actual: toRootHex(firstBlockRoot),
|
|
291
|
-
},
|
|
292
|
-
"DataColumnSidecar doesn't match corresponding block"
|
|
293
|
-
);
|
|
294
|
-
}
|
|
295
|
-
|
|
296
|
-
const commitments: Uint8Array[] = [];
|
|
297
|
-
const cellIndices: number[] = [];
|
|
298
|
-
const cells: Uint8Array[] = [];
|
|
299
|
-
const proofs: Uint8Array[] = [];
|
|
300
|
-
for (let i = 0; i < dataColumnSidecars.length; i++) {
|
|
301
|
-
const columnSidecar = dataColumnSidecars[i];
|
|
302
|
-
|
|
303
|
-
if (columnSidecar.index >= NUMBER_OF_COLUMNS) {
|
|
304
|
-
throw new DataColumnSidecarValidationError(
|
|
305
|
-
{
|
|
306
|
-
code: DataColumnSidecarErrorCode.INVALID_INDEX,
|
|
307
|
-
slot: blockSlot,
|
|
308
|
-
columnIdx: columnSidecar.index,
|
|
309
|
-
},
|
|
310
|
-
"DataColumnSidecar has invalid index"
|
|
311
|
-
);
|
|
312
|
-
}
|
|
313
|
-
|
|
314
|
-
if (columnSidecar.kzgCommitments.length !== blockBlobCount) {
|
|
315
|
-
throw new DataColumnSidecarValidationError({
|
|
316
|
-
code: DataColumnSidecarErrorCode.INCORRECT_KZG_COMMITMENTS_COUNT,
|
|
317
|
-
slot: blockSlot,
|
|
318
|
-
columnIdx: columnSidecar.index,
|
|
319
|
-
expected: blockBlobCount,
|
|
320
|
-
actual: columnSidecar.kzgCommitments.length,
|
|
321
|
-
});
|
|
322
|
-
}
|
|
323
|
-
|
|
324
|
-
if (columnSidecar.kzgProofs.length !== columnSidecar.kzgCommitments.length) {
|
|
325
|
-
throw new DataColumnSidecarValidationError({
|
|
326
|
-
code: DataColumnSidecarErrorCode.INCORRECT_KZG_PROOF_COUNT,
|
|
327
|
-
slot: blockSlot,
|
|
328
|
-
columnIdx: columnSidecar.index,
|
|
329
|
-
expected: columnSidecar.kzgCommitments.length,
|
|
330
|
-
actual: columnSidecar.kzgProofs.length,
|
|
331
|
-
});
|
|
332
|
-
}
|
|
333
|
-
|
|
334
|
-
if (!verifyDataColumnSidecarInclusionProof(columnSidecar)) {
|
|
335
|
-
throw new DataColumnSidecarValidationError(
|
|
336
|
-
{
|
|
337
|
-
code: DataColumnSidecarErrorCode.INCLUSION_PROOF_INVALID,
|
|
338
|
-
slot: blockSlot,
|
|
339
|
-
columnIdx: columnSidecar.index,
|
|
340
|
-
},
|
|
341
|
-
"DataColumnSidecar has invalid inclusion proof"
|
|
342
|
-
);
|
|
343
|
-
}
|
|
344
|
-
|
|
345
|
-
commitments.push(...columnSidecar.kzgCommitments);
|
|
346
|
-
cellIndices.push(...Array.from({length: columnSidecar.column.length}, () => columnSidecar.index));
|
|
347
|
-
cells.push(...columnSidecar.column);
|
|
348
|
-
proofs.push(...columnSidecar.kzgProofs);
|
|
349
|
-
}
|
|
350
|
-
|
|
351
|
-
let reason: string | undefined;
|
|
352
|
-
try {
|
|
353
|
-
const valid = await kzg.asyncVerifyCellKzgProofBatch(commitments, cellIndices, cells, proofs);
|
|
354
|
-
if (!valid) {
|
|
355
|
-
reason = "Invalid KZG proof batch";
|
|
356
|
-
}
|
|
357
|
-
} catch (e) {
|
|
358
|
-
reason = (e as Error).message;
|
|
359
|
-
}
|
|
360
|
-
if (reason !== undefined) {
|
|
361
|
-
throw new DataColumnSidecarValidationError(
|
|
362
|
-
{
|
|
363
|
-
code: DataColumnSidecarErrorCode.INVALID_KZG_PROOF_BATCH,
|
|
364
|
-
slot: blockSlot,
|
|
365
|
-
reason,
|
|
366
|
-
},
|
|
367
|
-
"DataColumnSidecar has invalid KZG proof batch"
|
|
368
|
-
);
|
|
369
|
-
}
|
|
370
|
-
}
|
|
371
|
-
|
|
372
|
-
/**
|
|
373
|
-
* SPEC FUNCTION
|
|
374
|
-
* https://github.com/ethereum/consensus-specs/blob/v1.6.0-alpha.4/specs/fulu/p2p-interface.md#compute_subnet_for_data_column_sidecar
|
|
375
|
-
*/
|
|
376
|
-
export function computeSubnetForDataColumnSidecar(
|
|
377
|
-
config: ChainConfig,
|
|
378
|
-
columnSidecar: fulu.DataColumnSidecar
|
|
379
|
-
): SubnetID {
|
|
380
|
-
return columnSidecar.index % config.DATA_COLUMN_SIDECAR_SUBNET_COUNT;
|
|
381
|
-
}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
export * from "./aggregateAndProof.js";
|
|
2
|
-
export * from "./attestation.js";
|
|
3
|
-
export * from "./attesterSlashing.js";
|
|
4
|
-
export * from "./block.js";
|
|
5
|
-
export * from "./blsToExecutionChange.js";
|
|
6
|
-
export * from "./proposerSlashing.js";
|
|
7
|
-
export * from "./syncCommittee.js";
|
|
8
|
-
export * from "./syncCommitteeContributionAndProof.js";
|
|
9
|
-
export * from "./voluntaryExit.js";
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
import {ChainForkConfig} from "@lodestar/config";
|
|
2
|
-
import {LightClientFinalityUpdate} from "@lodestar/types";
|
|
3
|
-
import {assertLightClientServer} from "../../node/utils/lightclient.js";
|
|
4
|
-
import {GossipAction} from "../errors/index.js";
|
|
5
|
-
import {LightClientError, LightClientErrorCode} from "../errors/lightClientError.js";
|
|
6
|
-
import {IBeaconChain} from "../interface.js";
|
|
7
|
-
import {updateReceivedTooEarly} from "./lightClientOptimisticUpdate.js";
|
|
8
|
-
|
|
9
|
-
// https://github.com/ethereum/consensus-specs/blob/dev/specs/altair/light-client/p2p-interface.md#light_client_finality_update
|
|
10
|
-
export function validateLightClientFinalityUpdate(
|
|
11
|
-
config: ChainForkConfig,
|
|
12
|
-
chain: IBeaconChain,
|
|
13
|
-
gossipedFinalityUpdate: LightClientFinalityUpdate
|
|
14
|
-
): void {
|
|
15
|
-
assertLightClientServer(chain.lightClientServer);
|
|
16
|
-
|
|
17
|
-
// [IGNORE] No other finality_update with a lower or equal finalized_header.slot was already forwarded on the network
|
|
18
|
-
const gossipedFinalitySlot = gossipedFinalityUpdate.finalizedHeader.beacon.slot;
|
|
19
|
-
const localFinalityUpdate = chain.lightClientServer.getFinalityUpdate();
|
|
20
|
-
|
|
21
|
-
if (localFinalityUpdate && gossipedFinalitySlot <= localFinalityUpdate.finalizedHeader.beacon.slot) {
|
|
22
|
-
throw new LightClientError(GossipAction.IGNORE, {
|
|
23
|
-
code: LightClientErrorCode.FINALITY_UPDATE_ALREADY_FORWARDED,
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
// [IGNORE] The finality_update is received after the block at signature_slot was given enough time to propagate
|
|
28
|
-
// through the network -- i.e. validate that one-third of finality_update.signature_slot has transpired
|
|
29
|
-
// (SECONDS_PER_SLOT / INTERVALS_PER_SLOT seconds after the start of the slot, with a MAXIMUM_GOSSIP_CLOCK_DISPARITY allowance)
|
|
30
|
-
if (updateReceivedTooEarly(config, chain.genesisTime, gossipedFinalityUpdate)) {
|
|
31
|
-
throw new LightClientError(GossipAction.IGNORE, {
|
|
32
|
-
code: LightClientErrorCode.FINALITY_UPDATE_RECEIVED_TOO_EARLY,
|
|
33
|
-
});
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
// [IGNORE] The received finality_update matches the locally computed one exactly
|
|
37
|
-
const sszType = config.getPostAltairForkTypes(
|
|
38
|
-
gossipedFinalityUpdate.attestedHeader.beacon.slot
|
|
39
|
-
).LightClientFinalityUpdate;
|
|
40
|
-
if (localFinalityUpdate === null || !sszType.equals(gossipedFinalityUpdate, localFinalityUpdate)) {
|
|
41
|
-
throw new LightClientError(GossipAction.IGNORE, {
|
|
42
|
-
code: LightClientErrorCode.FINALITY_UPDATE_NOT_MATCHING_LOCAL,
|
|
43
|
-
});
|
|
44
|
-
}
|
|
45
|
-
}
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
import {ChainForkConfig} from "@lodestar/config";
|
|
2
|
-
import {computeTimeAtSlot} from "@lodestar/state-transition";
|
|
3
|
-
import {LightClientOptimisticUpdate} from "@lodestar/types";
|
|
4
|
-
import {MAXIMUM_GOSSIP_CLOCK_DISPARITY} from "../../constants/index.js";
|
|
5
|
-
import {assertLightClientServer} from "../../node/utils/lightclient.js";
|
|
6
|
-
import {GossipAction} from "../errors/index.js";
|
|
7
|
-
import {LightClientError, LightClientErrorCode} from "../errors/lightClientError.js";
|
|
8
|
-
import {IBeaconChain} from "../interface.js";
|
|
9
|
-
|
|
10
|
-
// https://github.com/ethereum/consensus-specs/blob/dev/specs/altair/light-client/p2p-interface.md#light_client_optimistic_update
|
|
11
|
-
export function validateLightClientOptimisticUpdate(
|
|
12
|
-
config: ChainForkConfig,
|
|
13
|
-
chain: IBeaconChain,
|
|
14
|
-
gossipedOptimisticUpdate: LightClientOptimisticUpdate
|
|
15
|
-
): void {
|
|
16
|
-
assertLightClientServer(chain.lightClientServer);
|
|
17
|
-
|
|
18
|
-
// [IGNORE] No other optimistic_update with a lower or equal attested_header.slot was already forwarded on the network
|
|
19
|
-
const gossipedAttestedSlot = gossipedOptimisticUpdate.attestedHeader.beacon.slot;
|
|
20
|
-
const localOptimisticUpdate = chain.lightClientServer.getOptimisticUpdate();
|
|
21
|
-
|
|
22
|
-
if (localOptimisticUpdate && gossipedAttestedSlot <= localOptimisticUpdate.attestedHeader.beacon.slot) {
|
|
23
|
-
throw new LightClientError(GossipAction.IGNORE, {
|
|
24
|
-
code: LightClientErrorCode.OPTIMISTIC_UPDATE_ALREADY_FORWARDED,
|
|
25
|
-
});
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
// [IGNORE] The optimistic_update is received after the block at signature_slot was given enough time to propagate
|
|
29
|
-
// through the network -- i.e. validate that one-third of optimistic_update.signature_slot has transpired
|
|
30
|
-
// (SECONDS_PER_SLOT / INTERVALS_PER_SLOT seconds after the start of the slot, with a MAXIMUM_GOSSIP_CLOCK_DISPARITY allowance)
|
|
31
|
-
if (updateReceivedTooEarly(config, chain.genesisTime, gossipedOptimisticUpdate)) {
|
|
32
|
-
throw new LightClientError(GossipAction.IGNORE, {
|
|
33
|
-
code: LightClientErrorCode.OPTIMISTIC_UPDATE_RECEIVED_TOO_EARLY,
|
|
34
|
-
});
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
// [IGNORE] The received optimistic_update matches the locally computed one exactly
|
|
38
|
-
const sszType = config.getPostAltairForkTypes(
|
|
39
|
-
gossipedOptimisticUpdate.attestedHeader.beacon.slot
|
|
40
|
-
).LightClientOptimisticUpdate;
|
|
41
|
-
if (localOptimisticUpdate === null || !sszType.equals(gossipedOptimisticUpdate, localOptimisticUpdate)) {
|
|
42
|
-
throw new LightClientError(GossipAction.IGNORE, {
|
|
43
|
-
code: LightClientErrorCode.OPTIMISTIC_UPDATE_NOT_MATCHING_LOCAL,
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* Returns true, if the spec condition below triggers an IGNORE.
|
|
50
|
-
*
|
|
51
|
-
* Sig +1/3 time
|
|
52
|
-
* -----|-----
|
|
53
|
-
* xxx|------- (x is not okay)
|
|
54
|
-
*
|
|
55
|
-
* [IGNORE] The *update is received after the block at signature_slot was given enough time to propagate
|
|
56
|
-
* through the network -- i.e. validate that one-third of *update.signature_slot has transpired
|
|
57
|
-
* (SECONDS_PER_SLOT / INTERVALS_PER_SLOT seconds after the start of the slot, with a MAXIMUM_GOSSIP_CLOCK_DISPARITY allowance)
|
|
58
|
-
*/
|
|
59
|
-
export function updateReceivedTooEarly(
|
|
60
|
-
config: ChainForkConfig,
|
|
61
|
-
genesisTime: number,
|
|
62
|
-
update: Pick<LightClientOptimisticUpdate, "signatureSlot">
|
|
63
|
-
): boolean {
|
|
64
|
-
const signatureSlot13TimestampMs = computeTimeAtSlot(config, update.signatureSlot + 1 / 3, genesisTime) * 1000;
|
|
65
|
-
const earliestAllowedTimestampMs = signatureSlot13TimestampMs - MAXIMUM_GOSSIP_CLOCK_DISPARITY;
|
|
66
|
-
return Date.now() < earliestAllowedTimestampMs;
|
|
67
|
-
}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import {assertValidProposerSlashing, getProposerSlashingSignatureSets} from "@lodestar/state-transition";
|
|
2
|
-
import {phase0} from "@lodestar/types";
|
|
3
|
-
import {GossipAction, ProposerSlashingError, ProposerSlashingErrorCode} from "../errors/index.js";
|
|
4
|
-
import {IBeaconChain} from "../index.js";
|
|
5
|
-
|
|
6
|
-
export async function validateApiProposerSlashing(
|
|
7
|
-
chain: IBeaconChain,
|
|
8
|
-
proposerSlashing: phase0.ProposerSlashing
|
|
9
|
-
): Promise<void> {
|
|
10
|
-
const prioritizeBls = true;
|
|
11
|
-
return validateProposerSlashing(chain, proposerSlashing, prioritizeBls);
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export async function validateGossipProposerSlashing(
|
|
15
|
-
chain: IBeaconChain,
|
|
16
|
-
proposerSlashing: phase0.ProposerSlashing
|
|
17
|
-
): Promise<void> {
|
|
18
|
-
return validateProposerSlashing(chain, proposerSlashing);
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
async function validateProposerSlashing(
|
|
22
|
-
chain: IBeaconChain,
|
|
23
|
-
proposerSlashing: phase0.ProposerSlashing,
|
|
24
|
-
prioritizeBls = false
|
|
25
|
-
): Promise<void> {
|
|
26
|
-
// [IGNORE] The proposer slashing is the first valid proposer slashing received for the proposer with index
|
|
27
|
-
// proposer_slashing.signed_header_1.message.proposer_index.
|
|
28
|
-
if (chain.opPool.hasSeenProposerSlashing(proposerSlashing.signedHeader1.message.proposerIndex)) {
|
|
29
|
-
throw new ProposerSlashingError(GossipAction.IGNORE, {
|
|
30
|
-
code: ProposerSlashingErrorCode.ALREADY_EXISTS,
|
|
31
|
-
});
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
const state = chain.getHeadState();
|
|
35
|
-
|
|
36
|
-
// [REJECT] All of the conditions within process_proposer_slashing pass validation.
|
|
37
|
-
try {
|
|
38
|
-
// verifySignature = false, verified in batch below
|
|
39
|
-
assertValidProposerSlashing(state, proposerSlashing, false);
|
|
40
|
-
} catch (e) {
|
|
41
|
-
throw new ProposerSlashingError(GossipAction.REJECT, {
|
|
42
|
-
code: ProposerSlashingErrorCode.INVALID,
|
|
43
|
-
error: e as Error,
|
|
44
|
-
});
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
const signatureSets = getProposerSlashingSignatureSets(state, proposerSlashing);
|
|
48
|
-
if (!(await chain.bls.verifySignatureSets(signatureSets, {batchable: true, priority: prioritizeBls}))) {
|
|
49
|
-
throw new ProposerSlashingError(GossipAction.REJECT, {
|
|
50
|
-
code: ProposerSlashingErrorCode.INVALID,
|
|
51
|
-
error: Error("Invalid signature"),
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import {PublicKey} from "@chainsafe/blst";
|
|
2
|
-
import {BeaconConfig} from "@lodestar/config";
|
|
3
|
-
import {DOMAIN_AGGREGATE_AND_PROOF, ForkSeq} from "@lodestar/params";
|
|
4
|
-
import {
|
|
5
|
-
ISignatureSet,
|
|
6
|
-
computeSigningRoot,
|
|
7
|
-
computeStartSlotAtEpoch,
|
|
8
|
-
createSingleSignatureSetFromComponents,
|
|
9
|
-
} from "@lodestar/state-transition";
|
|
10
|
-
import {Epoch, SignedAggregateAndProof, ssz} from "@lodestar/types";
|
|
11
|
-
|
|
12
|
-
export function getAggregateAndProofSigningRoot(
|
|
13
|
-
config: BeaconConfig,
|
|
14
|
-
epoch: Epoch,
|
|
15
|
-
aggregateAndProof: SignedAggregateAndProof
|
|
16
|
-
): Uint8Array {
|
|
17
|
-
// previously, we call `const aggregatorDomain = state.config.getDomain(state.slot, DOMAIN_AGGREGATE_AND_PROOF, slot);`
|
|
18
|
-
// at fork boundary, it's required to dial to target epoch https://github.com/ChainSafe/lodestar/blob/v1.11.3/packages/beacon-node/src/chain/validation/attestation.ts#L573
|
|
19
|
-
// instead of that, just use the fork of slot in the attestation data
|
|
20
|
-
const slot = computeStartSlotAtEpoch(epoch);
|
|
21
|
-
const fork = config.getForkName(slot);
|
|
22
|
-
const aggregatorDomain = config.getDomainAtFork(fork, DOMAIN_AGGREGATE_AND_PROOF);
|
|
23
|
-
const sszType = ForkSeq[fork] >= ForkSeq.electra ? ssz.electra.AggregateAndProof : ssz.phase0.AggregateAndProof;
|
|
24
|
-
return computeSigningRoot(sszType, aggregateAndProof.message, aggregatorDomain);
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
export function getAggregateAndProofSignatureSet(
|
|
28
|
-
config: BeaconConfig,
|
|
29
|
-
epoch: Epoch,
|
|
30
|
-
aggregator: PublicKey,
|
|
31
|
-
aggregateAndProof: SignedAggregateAndProof
|
|
32
|
-
): ISignatureSet {
|
|
33
|
-
return createSingleSignatureSetFromComponents(
|
|
34
|
-
aggregator,
|
|
35
|
-
getAggregateAndProofSigningRoot(config, epoch, aggregateAndProof),
|
|
36
|
-
aggregateAndProof.signature
|
|
37
|
-
);
|
|
38
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import {DOMAIN_CONTRIBUTION_AND_PROOF} from "@lodestar/params";
|
|
2
|
-
import {
|
|
3
|
-
CachedBeaconStateAllForks,
|
|
4
|
-
ISignatureSet,
|
|
5
|
-
SignatureSetType,
|
|
6
|
-
computeSigningRoot,
|
|
7
|
-
} from "@lodestar/state-transition";
|
|
8
|
-
import {altair, ssz} from "@lodestar/types";
|
|
9
|
-
|
|
10
|
-
export function getContributionAndProofSignatureSet(
|
|
11
|
-
state: CachedBeaconStateAllForks,
|
|
12
|
-
signedContributionAndProof: altair.SignedContributionAndProof
|
|
13
|
-
): ISignatureSet {
|
|
14
|
-
const {epochCtx} = state;
|
|
15
|
-
const domain = state.config.getDomain(
|
|
16
|
-
state.slot,
|
|
17
|
-
DOMAIN_CONTRIBUTION_AND_PROOF,
|
|
18
|
-
signedContributionAndProof.message.contribution.slot
|
|
19
|
-
);
|
|
20
|
-
const signingData = signedContributionAndProof.message;
|
|
21
|
-
return {
|
|
22
|
-
type: SignatureSetType.single,
|
|
23
|
-
pubkey: epochCtx.index2pubkey[signedContributionAndProof.message.aggregatorIndex],
|
|
24
|
-
signingRoot: computeSigningRoot(ssz.altair.ContributionAndProof, signingData, domain),
|
|
25
|
-
signature: signedContributionAndProof.signature,
|
|
26
|
-
};
|
|
27
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import {PublicKey} from "@chainsafe/blst";
|
|
2
|
-
import {BeaconConfig} from "@lodestar/config";
|
|
3
|
-
import {DOMAIN_SELECTION_PROOF} from "@lodestar/params";
|
|
4
|
-
import {ISignatureSet, computeSigningRoot, createSingleSignatureSetFromComponents} from "@lodestar/state-transition";
|
|
5
|
-
import {Slot, phase0, ssz} from "@lodestar/types";
|
|
6
|
-
|
|
7
|
-
export function getSelectionProofSigningRoot(config: BeaconConfig, slot: Slot): Uint8Array {
|
|
8
|
-
// previously, we call `const selectionProofDomain = config.getDomain(state.slot, DOMAIN_SELECTION_PROOF, slot)`
|
|
9
|
-
// at fork boundary, it's required to dial to target epoch https://github.com/ChainSafe/lodestar/blob/v1.11.3/packages/beacon-node/src/chain/validation/attestation.ts#L573
|
|
10
|
-
// instead of that, just use the fork of slot in the attestation data
|
|
11
|
-
const fork = config.getForkName(slot);
|
|
12
|
-
const selectionProofDomain = config.getDomainAtFork(fork, DOMAIN_SELECTION_PROOF);
|
|
13
|
-
return computeSigningRoot(ssz.Slot, slot, selectionProofDomain);
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
export function getSelectionProofSignatureSet(
|
|
17
|
-
config: BeaconConfig,
|
|
18
|
-
slot: Slot,
|
|
19
|
-
aggregator: PublicKey,
|
|
20
|
-
aggregateAndProof: phase0.SignedAggregateAndProof
|
|
21
|
-
): ISignatureSet {
|
|
22
|
-
return createSingleSignatureSetFromComponents(
|
|
23
|
-
aggregator,
|
|
24
|
-
getSelectionProofSigningRoot(config, slot),
|
|
25
|
-
aggregateAndProof.message.selectionProof
|
|
26
|
-
);
|
|
27
|
-
}
|