reth_engine_primitives/
invalid_block_hook.rs
1use alloy_primitives::B256;
2use reth_execution_types::BlockExecutionOutput;
3use reth_primitives_traits::{NodePrimitives, RecoveredBlock, SealedHeader};
4use reth_trie::updates::TrieUpdates;
5
6pub trait InvalidBlockHook<N: NodePrimitives>: Send + Sync {
8 fn on_invalid_block(
10 &self,
11 parent_header: &SealedHeader<N::BlockHeader>,
12 block: &RecoveredBlock<N::Block>,
13 output: &BlockExecutionOutput<N::Receipt>,
14 trie_updates: Option<(&TrieUpdates, B256)>,
15 );
16}
17
18impl<F, N> InvalidBlockHook<N> for F
19where
20 N: NodePrimitives,
21 F: Fn(
22 &SealedHeader<N::BlockHeader>,
23 &RecoveredBlock<N::Block>,
24 &BlockExecutionOutput<N::Receipt>,
25 Option<(&TrieUpdates, B256)>,
26 ) + Send
27 + Sync,
28{
29 fn on_invalid_block(
30 &self,
31 parent_header: &SealedHeader<N::BlockHeader>,
32 block: &RecoveredBlock<N::Block>,
33 output: &BlockExecutionOutput<N::Receipt>,
34 trie_updates: Option<(&TrieUpdates, B256)>,
35 ) {
36 self(parent_header, block, output, trie_updates)
37 }
38}