UNPKG

@lodestar/beacon-node

Version:

A Typescript implementation of the beacon chain

51 lines 2.07 kB
import { ChainForkConfig } from "@lodestar/config"; import { BeaconStateAllForks, CachedBeaconStateAllForks } from "@lodestar/state-transition"; import { Logger } from "@lodestar/utils"; import { DepositTree } from "../../db/repositories/depositDataRoot.js"; import { IEth1Provider } from "../../eth1/index.js"; import { GenesisResult, IGenesisBuilder } from "./interface.js"; export type GenesisBuilderKwargs = { config: ChainForkConfig; eth1Provider: IEth1Provider; logger: Logger; /** Use to restore pending progress */ pendingStatus?: { state: BeaconStateAllForks; depositTree: DepositTree; lastProcessedBlockNumber: number; }; signal?: AbortSignal; maxBlocksPerPoll?: number; }; export declare class GenesisBuilder implements IGenesisBuilder { readonly state: CachedBeaconStateAllForks; readonly depositTree: DepositTree; /** Is null if no block has been processed yet */ lastProcessedBlockNumber: number | null; private readonly config; private readonly eth1Provider; private readonly logger; private readonly signal?; private readonly eth1Params; private readonly depositCache; private readonly fromBlock; private readonly logEvery; private lastLog; /** Current count of active validators in the state */ private activatedValidatorCount; constructor({ config, eth1Provider, logger, signal, pendingStatus, maxBlocksPerPoll }: GenesisBuilderKwargs); /** * Get eth1 deposit events and blocks and apply to this.state until we found genesis. */ waitForGenesis(): Promise<GenesisResult>; /** * First phase of waiting for genesis. * Stream deposits events in batches as big as possible without querying block data * @returns Block number at which there are enough active validators is state for genesis */ private waitForGenesisValidators; private applyDeposits; /** Throttle genesis generation status log to prevent spamming */ private throttledLog; } //# sourceMappingURL=genesis.d.ts.map