@lodestar/beacon-node
Version:
A Typescript implementation of the beacon chain
65 lines • 2.61 kB
TypeScript
import { ChainForkConfig } from "@lodestar/config";
import { BlockExecutionStatus, ExecutionStatus, IForkChoice, LVHInvalidResponse, LVHValidResponse, ProtoBlock } from "@lodestar/fork-choice";
import { IBeaconStateView } from "@lodestar/state-transition";
import { Logger } from "@lodestar/utils";
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 { IBlockInput } from "./blockInput/types.js";
import { ImportBlockOpts } from "./types.js";
export type VerifyBlockExecutionPayloadModules = {
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: BlockExecutionStatus[];
executionTime: number;
} | {
execAborted: ExecAbortType;
invalidSegmentLVH?: LVHInvalidResponse;
};
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, blockInputs: IBlockInput[], preState0: IBeaconStateView, 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, blockInput: IBlockInput, preState0: IBeaconStateView): Promise<VerifyBlockExecutionResponse>;
export {};
//# sourceMappingURL=verifyBlocksExecutionPayloads.d.ts.map