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