@lodestar/beacon-node
Version:
A Typescript implementation of the beacon chain
69 lines • 2.92 kB
TypeScript
import { ChainForkConfig } from "@lodestar/config";
import { ExecutionStatus, IForkChoice, LVHInvalidResponse, LVHValidResponse, MaybeValidExecutionStatus, ProtoBlock } from "@lodestar/fork-choice";
import { CachedBeaconStateAllForks } from "@lodestar/state-transition";
import { SignedBeaconBlock, Slot, bellatrix } from "@lodestar/types";
import { Logger } from "@lodestar/utils";
import { IEth1ForBlockProduction } from "../../eth1/index.js";
import { IExecutionEngine } from "../../execution/engine/interface.js";
import { Metrics } from "../../metrics/metrics.js";
import { IClock } from "../../util/clock.js";
import { BlockError } from "../errors/index.js";
import { BlockProcessOpts } from "../options.js";
import { ImportBlockOpts } from "./types.js";
export type VerifyBlockExecutionPayloadModules = {
eth1: IEth1ForBlockProduction;
executionEngine: IExecutionEngine;
clock: IClock;
logger: Logger;
metrics: Metrics | null;
forkChoice: IForkChoice;
config: ChainForkConfig;
};
type ExecAbortType = {
blockIndex: number;
execError: BlockError;
};
export type SegmentExecStatus = {
execAborted: null;
executionStatuses: MaybeValidExecutionStatus[];
executionTime: number;
mergeBlockFound: bellatrix.BeaconBlock | null;
} | {
execAborted: ExecAbortType;
invalidSegmentLVH?: LVHInvalidResponse;
mergeBlockFound: null;
};
type VerifyExecutionErrorResponse = {
executionStatus: ExecutionStatus.Invalid;
lvhResponse: LVHInvalidResponse;
execError: BlockError;
} | {
executionStatus: null;
lvhResponse: undefined;
execError: BlockError;
};
type VerifyBlockExecutionResponse = VerifyExecutionErrorResponse | {
executionStatus: ExecutionStatus.Valid;
lvhResponse: LVHValidResponse;
execError: null;
} | {
executionStatus: ExecutionStatus.Syncing;
lvhResponse?: LVHValidResponse;
execError: null;
} | {
executionStatus: ExecutionStatus.PreMerge;
lvhResponse: undefined;
execError: null;
};
/**
* Verifies 1 or more execution payloads from a linear sequence of blocks.
*
* Since the EL client must be aware of each parent, all payloads must be submitted in sequence.
*/
export declare function verifyBlocksExecutionPayload(chain: VerifyBlockExecutionPayloadModules, parentBlock: ProtoBlock, blocks: SignedBeaconBlock[], preState0: CachedBeaconStateAllForks, signal: AbortSignal, opts: BlockProcessOpts & ImportBlockOpts): Promise<SegmentExecStatus>;
/**
* Verifies a single block execution payload by sending it to the EL client (via HTTP).
*/
export declare function verifyBlockExecutionPayload(chain: VerifyBlockExecutionPayloadModules, block: SignedBeaconBlock, preState0: CachedBeaconStateAllForks, opts: BlockProcessOpts, isOptimisticallySafe: boolean, currentSlot: Slot): Promise<VerifyBlockExecutionResponse>;
export {};
//# sourceMappingURL=verifyBlocksExecutionPayloads.d.ts.map