@lodestar/beacon-node
Version:
A Typescript implementation of the beacon chain
51 lines • 2.07 kB
TypeScript
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