EngineValidator

Trait EngineValidator 

pub trait EngineValidator<Types, N = <<Types as PayloadTypes>::BuiltPayload as BuiltPayload>::Primitives>:
    Send
    + Sync
    + 'static
where Types: PayloadTypes, N: NodePrimitives,
{ // Required methods fn validate_payload_attributes_against_header( &self, attr: &<Types as PayloadTypes>::PayloadAttributes, header: &<N as NodePrimitives>::BlockHeader, ) -> Result<(), InvalidPayloadAttributesError>; fn convert_payload_to_block( &self, payload: <Types as PayloadTypes>::ExecutionData, ) -> Result<SealedBlock<<N as NodePrimitives>::Block>, NewPayloadError>; fn validate_payload( &mut self, payload: <Types as PayloadTypes>::ExecutionData, ctx: TreeCtx<'_, N>, ) -> Result<ExecutedBlock<N>, InsertPayloadError<<N as NodePrimitives>::Block>>; fn validate_block( &mut self, block: SealedBlock<<N as NodePrimitives>::Block>, ctx: TreeCtx<'_, N>, ) -> Result<ExecutedBlock<N>, InsertPayloadError<<N as NodePrimitives>::Block>>; fn on_inserted_executed_block(&self, block: ExecutedBlock<N>); }
Expand description

Type that validates the payloads processed by the engine.

This provides the necessary functions for validating/executing payloads/blocks.

Required Methods§

fn validate_payload_attributes_against_header( &self, attr: &<Types as PayloadTypes>::PayloadAttributes, header: &<N as NodePrimitives>::BlockHeader, ) -> Result<(), InvalidPayloadAttributesError>

Validates the payload attributes with respect to the header.

By default, this enforces that the payload attributes timestamp is greater than the timestamp according to:

  1. Client software MUST ensure that payloadAttributes.timestamp is greater than timestamp of a block referenced by forkchoiceState.headBlockHash.

See also: https://github.com/ethereum/execution-apis/blob/main/src/engine/common.md#specification-1

fn convert_payload_to_block( &self, payload: <Types as PayloadTypes>::ExecutionData, ) -> Result<SealedBlock<<N as NodePrimitives>::Block>, NewPayloadError>

Ensures that the given payload does not violate any consensus rules that concern the block’s layout.

This function must convert the payload into the executable block and pre-validate its fields.

Implementers should ensure that the checks are done in the order that conforms with the engine-API specification.

fn validate_payload( &mut self, payload: <Types as PayloadTypes>::ExecutionData, ctx: TreeCtx<'_, N>, ) -> Result<ExecutedBlock<N>, InsertPayloadError<<N as NodePrimitives>::Block>>

Validates a payload received from engine API.

fn validate_block( &mut self, block: SealedBlock<<N as NodePrimitives>::Block>, ctx: TreeCtx<'_, N>, ) -> Result<ExecutedBlock<N>, InsertPayloadError<<N as NodePrimitives>::Block>>

Validates a block downloaded from the network.

fn on_inserted_executed_block(&self, block: ExecutedBlock<N>)

Hook called after an executed block is inserted directly into the tree.

This is invoked when blocks are inserted via InsertExecutedBlock (e.g., locally built blocks by sequencers) to allow implementations to update internal state such as caches.

Implementors§