mirror of
https://github.com/paradigmxyz/reth.git
synced 2026-02-19 03:04:27 -05:00
feat(engine): add validate_payload and validate_block methods to EngineValidator trait (#17429)
This commit is contained in:
@@ -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<Types: PayloadTypes>:
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
/// Validates a payload received from engine API.
|
||||
fn validate_payload(
|
||||
&mut self,
|
||||
payload: Self::ExecutionData,
|
||||
_ctx: TreeCtx<'_, <Types::BuiltPayload as BuiltPayload>::Primitives>,
|
||||
) -> Result<PayloadValidationOutcome<Self::Block>, 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<Self::Block>,
|
||||
_ctx: TreeCtx<'_, <Types::BuiltPayload as BuiltPayload>::Primitives>,
|
||||
) -> Result<(), ConsensusError> {
|
||||
// Default implementation: accept all blocks
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user