diff --git a/crates/engine/tree/src/tree/payload_validator.rs b/crates/engine/tree/src/tree/payload_validator.rs index c4a756da9c..a8cac2e31e 100644 --- a/crates/engine/tree/src/tree/payload_validator.rs +++ b/crates/engine/tree/src/tree/payload_validator.rs @@ -16,8 +16,9 @@ use reth_consensus::{ConsensusError, FullConsensus}; use reth_engine_primitives::{InvalidBlockHook, PayloadValidator}; use reth_evm::{ConfigureEvm, SpecFor}; use reth_payload_primitives::{ - EngineApiMessageVersion, EngineObjectValidationError, InvalidPayloadAttributesError, - NewPayloadError, PayloadAttributes, PayloadOrAttributes, PayloadTypes, + BuiltPayload, EngineApiMessageVersion, EngineObjectValidationError, + InvalidPayloadAttributesError, NewPayloadError, PayloadAttributes, PayloadOrAttributes, + PayloadTypes, }; use reth_primitives_traits::{ AlloyBlockHeader, Block, BlockBody, GotExpected, NodePrimitives, RecoveredBlock, SealedHeader, @@ -1014,4 +1015,29 @@ pub trait EngineValidator: } Ok(()) } + + /// Validates a payload received from engine API. + fn validate_payload( + &mut self, + payload: Self::ExecutionData, + _ctx: TreeCtx<'_, ::Primitives>, + ) -> Result, NewPayloadError> { + // Default implementation: try to convert using existing method + match self.ensure_well_formed_payload(payload) { + Ok(block) => { + Ok(PayloadValidationOutcome::Valid { block, trie_updates: TrieUpdates::default() }) + } + Err(error) => Err(error), + } + } + + /// Validates a block downloaded from the network. + fn validate_block( + &self, + _block: &RecoveredBlock, + _ctx: TreeCtx<'_, ::Primitives>, + ) -> Result<(), ConsensusError> { + // Default implementation: accept all blocks + Ok(()) + } }