mirror of
https://github.com/paradigmxyz/reth.git
synced 2026-01-26 23:58:46 -05:00
feat: impl block for sealedblock (#12555)
This commit is contained in:
@@ -1,10 +1,8 @@
|
||||
//! Block body abstraction.
|
||||
|
||||
use alloc::fmt;
|
||||
|
||||
use alloy_consensus::Transaction;
|
||||
|
||||
use crate::InMemorySize;
|
||||
use alloc::fmt;
|
||||
use alloy_consensus::Transaction;
|
||||
|
||||
/// Abstraction for block's body.
|
||||
pub trait BlockBody:
|
||||
@@ -21,6 +19,7 @@ pub trait BlockBody:
|
||||
+ alloy_rlp::Encodable
|
||||
+ alloy_rlp::Decodable
|
||||
+ InMemorySize
|
||||
+ 'static
|
||||
{
|
||||
/// Ordered list of signed transactions as committed in block.
|
||||
// todo: requires trait for signed transaction
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
//! Block header data primitive.
|
||||
|
||||
use core::fmt;
|
||||
|
||||
use alloy_primitives::Sealable;
|
||||
use reth_codecs::Compact;
|
||||
|
||||
use crate::InMemorySize;
|
||||
use alloy_primitives::Sealable;
|
||||
use core::fmt;
|
||||
use reth_codecs::Compact;
|
||||
|
||||
/// Helper trait that unifies all behaviour required by block header to support full node
|
||||
/// operations.
|
||||
@@ -28,6 +26,7 @@ pub trait BlockHeader:
|
||||
+ alloy_consensus::BlockHeader
|
||||
+ Sealable
|
||||
+ InMemorySize
|
||||
+ 'static
|
||||
{
|
||||
}
|
||||
|
||||
@@ -47,5 +46,6 @@ impl<T> BlockHeader for T where
|
||||
+ alloy_consensus::BlockHeader
|
||||
+ Sealable
|
||||
+ InMemorySize
|
||||
+ 'static
|
||||
{
|
||||
}
|
||||
|
||||
@@ -90,13 +90,13 @@ impl reth_primitives_traits::Block for Block {
|
||||
type Header = Header;
|
||||
type Body = BlockBody;
|
||||
|
||||
fn body(&self) -> &Self::Body {
|
||||
&self.body
|
||||
}
|
||||
|
||||
fn header(&self) -> &Self::Header {
|
||||
&self.header
|
||||
}
|
||||
|
||||
fn body(&self) -> &Self::Body {
|
||||
&self.body
|
||||
}
|
||||
}
|
||||
|
||||
impl InMemorySize for Block {
|
||||
@@ -463,6 +463,24 @@ where
|
||||
}
|
||||
}
|
||||
|
||||
impl<H, B> reth_primitives_traits::Block for SealedBlock<H, B>
|
||||
where
|
||||
H: reth_primitives_traits::BlockHeader,
|
||||
B: reth_primitives_traits::BlockBody,
|
||||
Self: Serialize + for<'a> Deserialize<'a>,
|
||||
{
|
||||
type Header = H;
|
||||
type Body = B;
|
||||
|
||||
fn header(&self) -> &Self::Header {
|
||||
self.header.header()
|
||||
}
|
||||
|
||||
fn body(&self) -> &Self::Body {
|
||||
&self.body
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(any(test, feature = "arbitrary"))]
|
||||
impl<'a, H, B> arbitrary::Arbitrary<'a> for SealedBlock<H, B>
|
||||
where
|
||||
@@ -959,6 +977,12 @@ mod tests {
|
||||
use alloy_rlp::{Decodable, Encodable};
|
||||
use std::str::FromStr;
|
||||
|
||||
const fn _traits() {
|
||||
const fn assert_block<T: reth_primitives_traits::Block>() {}
|
||||
assert_block::<Block>();
|
||||
assert_block::<SealedBlock>();
|
||||
}
|
||||
|
||||
/// Check parsing according to EIP-1898.
|
||||
#[test]
|
||||
fn can_parse_blockid_u64() {
|
||||
|
||||
Reference in New Issue
Block a user