alloy_consensus/transaction/
eip4844_sidecar.rs1use alloy_eips::{
2 eip4844::BlobTransactionSidecar,
3 eip7594::{BlobTransactionSidecarEip7594, BlobTransactionSidecarVariant},
4};
5
6#[cfg(feature = "kzg")]
7#[doc(inline)]
8pub use alloy_eips::eip4844::BlobTransactionValidationError;
9
10pub trait TxEip4844Sidecar {
12 #[cfg(feature = "kzg")]
15 fn validate(
16 &self,
17 blob_versioned_hashes: &[alloy_primitives::B256],
18 proof_settings: &c_kzg::KzgSettings,
19 ) -> Result<(), BlobTransactionValidationError>;
20
21 fn size(&self) -> usize;
23}
24
25impl TxEip4844Sidecar for BlobTransactionSidecar {
26 #[cfg(feature = "kzg")]
27 fn validate(
28 &self,
29 blob_versioned_hashes: &[alloy_primitives::B256],
30 proof_settings: &c_kzg::KzgSettings,
31 ) -> Result<(), BlobTransactionValidationError> {
32 Self::validate(self, blob_versioned_hashes, proof_settings)
33 }
34
35 fn size(&self) -> usize {
36 Self::size(self)
37 }
38}
39
40impl TxEip4844Sidecar for BlobTransactionSidecarEip7594 {
41 #[cfg(feature = "kzg")]
42 fn validate(
43 &self,
44 blob_versioned_hashes: &[alloy_primitives::B256],
45 proof_settings: &c_kzg::KzgSettings,
46 ) -> Result<(), BlobTransactionValidationError> {
47 Self::validate(self, blob_versioned_hashes, proof_settings)
48 }
49
50 fn size(&self) -> usize {
51 Self::size(self)
52 }
53}
54
55impl TxEip4844Sidecar for BlobTransactionSidecarVariant {
56 #[cfg(feature = "kzg")]
57 fn validate(
58 &self,
59 blob_versioned_hashes: &[alloy_primitives::B256],
60 proof_settings: &c_kzg::KzgSettings,
61 ) -> Result<(), BlobTransactionValidationError> {
62 Self::validate(self, blob_versioned_hashes, proof_settings)
63 }
64
65 fn size(&self) -> usize {
66 Self::size(self)
67 }
68}