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 {}