From ce9154d9bdf63f18c7984886708297b1c18a7810 Mon Sep 17 00:00:00 2001 From: Dan Cline <6798349+Rjected@users.noreply.github.com> Date: Fri, 31 May 2024 12:46:46 -0400 Subject: [PATCH] chore: expose blob_versioned_hashes methods on block (#8530) --- crates/primitives/src/block.rs | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/crates/primitives/src/block.rs b/crates/primitives/src/block.rs index b37d5146f..a797b01bb 100644 --- a/crates/primitives/src/block.rs +++ b/crates/primitives/src/block.rs @@ -144,6 +144,32 @@ impl Block { self.body.iter().any(|tx| tx.is_eip4844()) } + /// Returns an iterator over all blob transactions of the block + #[inline] + pub fn blob_transactions_iter(&self) -> impl Iterator + '_ { + self.body.iter().filter(|tx| tx.is_eip4844()) + } + + /// Returns only the blob transactions, if any, from the block body. + #[inline] + pub fn blob_transactions(&self) -> Vec<&TransactionSigned> { + self.blob_transactions_iter().collect() + } + + /// 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() + } + + /// Returns all blob versioned hashes from the block body. + #[inline] + pub fn blob_versioned_hashes(&self) -> Vec<&B256> { + self.blob_versioned_hashes_iter().collect() + } + /// Calculates a heuristic for the in-memory size of the [Block]. #[inline] pub fn size(&self) -> usize {