UNPKG

@lodestar/beacon-node

Version:

A Typescript implementation of the beacon chain

69 lines 2.92 kB
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