diff --git a/crates/primitives-traits/src/block/body.rs b/crates/primitives-traits/src/block/body.rs index 14436ee01c..ed60796ce1 100644 --- a/crates/primitives-traits/src/block/body.rs +++ b/crates/primitives-traits/src/block/body.rs @@ -81,6 +81,11 @@ pub trait BlockBody: .sum() } + /// Returns an iterator over all blob versioned hashes in the block body. + fn blob_versioned_hashes_iter(&self) -> impl Iterator + '_ { + self.transactions().iter().filter_map(|tx| tx.blob_versioned_hashes()).flatten() + } + /// Returns an iterator over the encoded 2718 transactions. /// /// This is also known as `raw transactions`. diff --git a/crates/primitives/src/block.rs b/crates/primitives/src/block.rs index b02456f6c4..0ee6f860b5 100644 --- a/crates/primitives/src/block.rs +++ b/crates/primitives/src/block.rs @@ -263,12 +263,6 @@ impl SealedBlock { } impl SealedBlock { - /// Returns an iterator over all blob transactions of the block - #[inline] - pub fn blob_transactions_iter(&self) -> impl Iterator + '_ { - self.body.blob_transactions_iter() - } - /// Returns whether or not the block contains any blob transactions. #[inline] pub fn has_blob_transactions(&self) -> bool { @@ -280,19 +274,16 @@ impl SealedBlock { pub fn has_eip7702_transactions(&self) -> bool { self.body.has_eip7702_transactions() } +} - /// Returns only the blob transactions, if any, from the block body. - #[inline] - pub fn blob_transactions(&self) -> Vec<&TransactionSigned> { - self.blob_transactions_iter().collect() - } - +impl SealedBlock +where + B: reth_primitives_traits::BlockBody, +{ /// Returns an iterator over all blob versioned hashes from the block body. #[inline] pub fn blob_versioned_hashes_iter(&self) -> impl Iterator + '_ { - self.blob_transactions_iter() - .filter_map(|tx| tx.as_eip4844().map(|blob_tx| &blob_tx.blob_versioned_hashes)) - .flatten() + self.body.blob_versioned_hashes_iter() } }