Revert "Revert "chore(sdk): Add MaybeArbitrary as super trait"" (#12810)

Co-authored-by: Emilia Hane <elsaemiliaevahane@gmail.com>
This commit is contained in:
Matthias Seitz
2024-11-24 08:46:16 +01:00
committed by GitHub
parent 6695d07c65
commit 0d6ebec574
13 changed files with 175 additions and 133 deletions

View File

@ -4,7 +4,7 @@ use alloc::fmt;
use alloy_consensus::Transaction;
use crate::{FullSignedTx, InMemorySize, MaybeSerde};
use crate::{FullSignedTx, InMemorySize, MaybeArbitrary, MaybeSerde};
/// Helper trait that unifies all behaviour required by transaction to support full node operations.
pub trait FullBlockBody: BlockBody<Transaction: FullSignedTx> {}
@ -26,6 +26,7 @@ pub trait BlockBody:
+ alloy_rlp::Decodable
+ InMemorySize
+ MaybeSerde
+ MaybeArbitrary
{
/// Ordered list of signed transactions as committed in block.
type Transaction: Transaction;

View File

@ -4,7 +4,7 @@ use core::fmt;
use alloy_primitives::Sealable;
use crate::{InMemorySize, MaybeCompact, MaybeSerde};
use crate::{InMemorySize, MaybeArbitrary, MaybeCompact, MaybeSerde};
/// Helper trait that unifies all behaviour required by block header to support full node
/// operations.
@ -28,6 +28,7 @@ pub trait BlockHeader:
+ Sealable
+ InMemorySize
+ MaybeSerde
+ MaybeArbitrary
{
}
@ -46,5 +47,6 @@ impl<T> BlockHeader for T where
+ Sealable
+ InMemorySize
+ MaybeSerde
+ MaybeArbitrary
{
}

View File

@ -5,7 +5,9 @@ pub mod header;
use alloc::fmt;
use crate::{BlockHeader, FullBlockBody, FullBlockHeader, InMemorySize, MaybeSerde};
use crate::{
BlockHeader, FullBlockBody, FullBlockHeader, InMemorySize, MaybeArbitrary, MaybeSerde,
};
/// Helper trait that unifies all behaviour required by block to support full node operations.
pub trait FullBlock:
@ -26,7 +28,17 @@ impl<T> FullBlock for T where
// senders
#[auto_impl::auto_impl(&, Arc)]
pub trait Block:
Send + Sync + Unpin + Clone + Default + fmt::Debug + PartialEq + Eq + InMemorySize + MaybeSerde
Send
+ Sync
+ Unpin
+ Clone
+ Default
+ fmt::Debug
+ PartialEq
+ Eq
+ InMemorySize
+ MaybeSerde
+ MaybeArbitrary
{
/// Header part of the block.
type Header: BlockHeader + 'static;

View File

@ -159,9 +159,12 @@ impl<H> From<SealedHeader<H>> for Sealed<H> {
}
#[cfg(any(test, feature = "arbitrary"))]
impl<'a> arbitrary::Arbitrary<'a> for SealedHeader {
impl<'a, H> arbitrary::Arbitrary<'a> for SealedHeader<H>
where
H: for<'b> arbitrary::Arbitrary<'b> + Sealable,
{
fn arbitrary(u: &mut arbitrary::Unstructured<'a>) -> arbitrary::Result<Self> {
let header = Header::arbitrary(u)?;
let header = H::arbitrary(u)?;
Ok(Self::seal(header))
}

View File

@ -1,12 +1,12 @@
//! Receipt abstraction
use alloc::vec::Vec;
use core::fmt;
use alloc::vec::Vec;
use alloy_consensus::TxReceipt;
use alloy_primitives::B256;
use crate::{InMemorySize, MaybeCompact, MaybeSerde};
use crate::{InMemorySize, MaybeArbitrary, MaybeCompact, MaybeSerde};
/// Helper trait that unifies all behaviour required by receipt to support full node operations.
pub trait FullReceipt: Receipt + MaybeCompact {}
@ -27,6 +27,7 @@ pub trait Receipt:
+ alloy_rlp::Decodable
+ MaybeSerde
+ InMemorySize
+ MaybeArbitrary
{
/// Returns transaction type.
fn tx_type(&self) -> u8;

View File

@ -4,7 +4,7 @@ use core::fmt;
use alloy_primitives::{U64, U8};
use crate::{InMemorySize, MaybeCompact};
use crate::{InMemorySize, MaybeArbitrary, MaybeCompact};
/// Helper trait that unifies all behaviour required by transaction type ID to support full node
/// operations.
@ -33,6 +33,7 @@ pub trait TxType:
+ alloy_rlp::Encodable
+ alloy_rlp::Decodable
+ InMemorySize
+ MaybeArbitrary
{
/// Returns `true` if this is a legacy transaction.
fn is_legacy(&self) -> bool;