reth_primitives_traits/block/
header.rs

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