UNPKG

@lodestar/beacon-node

Version:

A Typescript implementation of the beacon chain

65 lines 2.61 kB
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