From f717c9e97f238b1376c615ce97632cf243244941 Mon Sep 17 00:00:00 2001 From: Matthias Seitz Date: Thu, 13 Feb 2025 02:37:13 +0100 Subject: [PATCH] feat: add helpers to create a BlobSidecar (#2047) --- crates/eips/src/eip4844/sidecar.rs | 32 ++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/crates/eips/src/eip4844/sidecar.rs b/crates/eips/src/eip4844/sidecar.rs index 8273344dde0..2353bc8c335 100644 --- a/crates/eips/src/eip4844/sidecar.rs +++ b/crates/eips/src/eip4844/sidecar.rs @@ -303,6 +303,38 @@ impl BlobTransactionSidecar { self.proofs.len() * BYTES_PER_PROOF // proofs } + /// Tries to create a new [`BlobTransactionSidecar`] from the hex encoded blob str. + /// + /// See also [`Blob::from_hex`](c_kzg::Blob::from_hex) + #[cfg(all(feature = "kzg", any(test, feature = "arbitrary")))] + pub fn try_from_blobs_hex(blobs: I) -> Result + where + I: IntoIterator, + B: AsRef, + { + let blobs = blobs + .into_iter() + .map(|blob| c_kzg::Blob::from_hex(blob.as_ref())) + .collect::, _>>()?; + Self::try_from_blobs(blobs) + } + + /// Tries to create a new [`BlobTransactionSidecar`] from the given blob bytes. + /// + /// See also [`Blob::from_bytes`](c_kzg::Blob::from_bytes) + #[cfg(all(feature = "kzg", any(test, feature = "arbitrary")))] + pub fn try_from_blobs_bytes(blobs: I) -> Result + where + I: IntoIterator, + B: AsRef<[u8]>, + { + let blobs = blobs + .into_iter() + .map(|blob| c_kzg::Blob::from_bytes(blob.as_ref())) + .collect::, _>>()?; + Self::try_from_blobs(blobs) + } + /// Tries to create a new [`BlobTransactionSidecar`] from the given blobs. #[cfg(all(feature = "kzg", any(test, feature = "arbitrary")))] pub fn try_from_blobs(blobs: Vec) -> Result {