reth_primitives_traits/block/
header.rs

1//! Block header data primitive.
2
3use crate::{InMemorySize, MaybeCompact, MaybeSerde, MaybeSerdeBincodeCompat};
4use alloy_primitives::Sealable;
5use core::{fmt, hash::Hash};
6
7/// Re-exported alias
8pub use alloy_consensus::BlockHeader as AlloyBlockHeader;
9
10/// Helper trait that unifies all behaviour required by block header to support full node
11/// operations.
12pub trait FullBlockHeader: BlockHeader + MaybeCompact {}
13
14impl<T> FullBlockHeader for T where T: BlockHeader + MaybeCompact {}
15
16/// Abstraction of a block header.
17pub trait BlockHeader:
18    Send
19    + Sync
20    + Unpin
21    + Clone
22    + Hash
23    + Default
24    + fmt::Debug
25    + PartialEq
26    + Eq
27    + alloy_rlp::Encodable
28    + alloy_rlp::Decodable
29    + alloy_consensus::BlockHeader
30    + Sealable
31    + InMemorySize
32    + MaybeSerde
33    + MaybeSerdeBincodeCompat
34    + AsRef<Self>
35    + 'static
36{
37}
38
39impl BlockHeader for alloy_consensus::Header {}