UNPKG

@lodestar/beacon-node

Version:

A Typescript implementation of the beacon chain

133 lines (125 loc) 5.16 kB
import {defaultOptions as defaultValidatorOptions} from "@lodestar/validator"; import {DEFAULT_ARCHIVE_MODE} from "./archiveStore/constants.js"; import {ArchiveMode, ArchiveStoreOpts} from "./archiveStore/interface.js"; import {ForkChoiceOpts} from "./forkChoice/index.js"; import {LightClientServerOpts} from "./lightClient/index.js"; import {ShufflingCacheOpts} from "./shufflingCache.js"; import {DEFAULT_MAX_BLOCK_STATES, FIFOBlockStateCacheOpts} from "./stateCache/fifoBlockStateCache.js"; import { DEFAULT_MAX_CP_STATE_EPOCHS_IN_MEMORY, DEFAULT_MAX_CP_STATE_ON_DISK, PersistentCheckpointStateCacheOpts, } from "./stateCache/persistentCheckpointsCache.js"; import {ValidatorMonitorOpts} from "./validatorMonitor.js"; export {ArchiveMode, DEFAULT_ARCHIVE_MODE}; export type IChainOptions = BlockProcessOpts & PoolOpts & SeenCacheOpts & ForkChoiceOpts & ArchiveStoreOpts & FIFOBlockStateCacheOpts & PersistentCheckpointStateCacheOpts & ShufflingCacheOpts & ValidatorMonitorOpts & LightClientServerOpts & { blsVerifyAllMainThread?: boolean; blsVerifyAllMultiThread?: boolean; blacklistedBlocks?: string[]; // TODO GLOAS: add similar option for execution payload envelopes? persistProducedBlocks?: boolean; persistInvalidSszObjects?: boolean; persistInvalidSszObjectsDir?: string; persistOrphanedBlocks?: boolean; persistOrphanedBlocksDir?: string; skipCreateStateCacheIfAvailable?: boolean; suggestedFeeRecipient: string; maxSkipSlots?: number; /** Ensure blobs returned by the execution engine are valid */ sanityCheckExecutionEngineBlobs?: boolean; /** Max number of produced blobs by local validators to cache */ maxCachedBlobSidecars?: number; /** Max number of produced block roots (blinded or full) cached for broadcast validations */ maxCachedProducedRoots?: number; initialCustodyGroupCount?: number; broadcastValidationStrictness?: string; minSameMessageSignatureSetsToBatch: number; archiveDateEpochs?: number; nHistoricalStatesFileDataStore?: boolean; nativeStateView?: boolean; }; export type BlockProcessOpts = { /** * Do not use BLS batch verify to validate all block signatures at once. * Will double processing times. Use only for debugging purposes. */ disableBlsBatchVerify?: boolean; /** * Assert progressive balances the same to EpochTransitionCache */ assertCorrectProgressiveBalances?: boolean; /** Used for fork_choice spec tests */ disableOnBlockError?: boolean; /** Used for fork_choice spec tests */ disablePrepareNextSlot?: boolean; /** * Used to connect beacon in follow mode to an EL, * will still issue fcU for block proposal */ disableImportExecutionFcU?: boolean; emitPayloadAttributes?: boolean; /** * Used to specify to specify to run verifications only and not * to save the block or log transitions for e.g. doing * broadcastValidation while publishing the block */ verifyOnly?: boolean; /** Used to specify to skip execution payload validation */ skipVerifyExecutionPayload?: boolean; /** Used to specify to skip block signatures validation */ skipVerifyBlockSignatures?: boolean; }; export type PoolOpts = { /** * Only preaggregate attestation/sync committee message since clockSlot - preaggregateSlotDistance */ preaggregateSlotDistance?: number; }; export type SeenCacheOpts = { /** * Slot distance from current slot to cache AttestationData */ attDataCacheSlotDistance?: number; }; export const defaultChainOptions: IChainOptions = { blsVerifyAllMainThread: false, blsVerifyAllMultiThread: false, blacklistedBlocks: [], disableBlsBatchVerify: false, proposerBoost: true, proposerBoostReorg: true, computeUnrealized: true, suggestedFeeRecipient: defaultValidatorOptions.suggestedFeeRecipient, serveHistoricalState: false, assertCorrectProgressiveBalances: false, archiveStateEpochFrequency: 1024, archiveMode: DEFAULT_ARCHIVE_MODE, pruneHistory: false, emitPayloadAttributes: false, // for gossip block validation, it's unlikely we see a reorg with 32 slots // for attestation validation, having this value ensures we don't have to regen states most of the time maxSkipSlots: 32, broadcastValidationStrictness: "warn", // should be less than or equal to MIN_SIGNATURE_SETS_TO_BATCH_VERIFY // batching too much may block the I/O thread so if useWorker=false, suggest this value to be 32 // since this batch attestation work is designed to work with useWorker=true, make this the lowest value minSameMessageSignatureSetsToBatch: 2, // as of Feb 2025, this option turned out to be very useful: // - it allows to share a persisted checkpoint state to other nodes // - users can prune the persisted checkpoint state files manually to save disc space // - it helps debug easier when network is unfinalized nHistoricalStatesFileDataStore: true, nativeStateView: false, maxBlockStates: DEFAULT_MAX_BLOCK_STATES, maxCPStateEpochsInMemory: DEFAULT_MAX_CP_STATE_EPOCHS_IN_MEMORY, maxCPStateEpochsOnDisk: DEFAULT_MAX_CP_STATE_ON_DISK, };