Skip to main content

reth_transaction_pool/blobstore/
noop.rs

1use crate::blobstore::{BlobStore, BlobStoreCleanupStat, BlobStoreError, PooledBlobSidecar};
2use alloy_eips::{
3    eip4844::{BlobAndProofV1, BlobAndProofV2, BlobCellsAndProofsV1},
4    eip7594::{BlobTransactionSidecarVariant, Cell},
5};
6use alloy_primitives::{TxHash, B128, B256};
7use std::sync::Arc;
8
9/// A blobstore implementation that does nothing
10#[derive(Clone, Copy, Debug, PartialOrd, PartialEq, Eq, Default)]
11#[non_exhaustive]
12pub struct NoopBlobStore;
13
14impl BlobStore for NoopBlobStore {
15    fn insert(&self, _tx: B256, _data: PooledBlobSidecar) -> Result<(), BlobStoreError> {
16        Ok(())
17    }
18
19    fn insert_all(&self, _txs: Vec<(B256, PooledBlobSidecar)>) -> Result<(), BlobStoreError> {
20        Ok(())
21    }
22
23    fn delete(&self, _tx: B256) -> Result<(), BlobStoreError> {
24        Ok(())
25    }
26
27    fn delete_all(&self, _txs: Vec<B256>) -> Result<(), BlobStoreError> {
28        Ok(())
29    }
30
31    fn cleanup(&self) -> BlobStoreCleanupStat {
32        BlobStoreCleanupStat::default()
33    }
34
35    fn get(&self, _tx: B256) -> Result<Option<Arc<BlobTransactionSidecarVariant>>, BlobStoreError> {
36        Ok(None)
37    }
38
39    fn contains(&self, _tx: B256) -> Result<bool, BlobStoreError> {
40        Ok(false)
41    }
42
43    fn get_all(
44        &self,
45        _txs: Vec<B256>,
46    ) -> Result<Vec<(B256, Arc<BlobTransactionSidecarVariant>)>, BlobStoreError> {
47        Ok(vec![])
48    }
49
50    fn get_exact(
51        &self,
52        txs: Vec<B256>,
53    ) -> Result<Vec<Arc<BlobTransactionSidecarVariant>>, BlobStoreError> {
54        if txs.is_empty() {
55            return Ok(vec![])
56        }
57        Err(BlobStoreError::MissingSidecar(txs[0]))
58    }
59
60    fn get_by_versioned_hashes_v1(
61        &self,
62        versioned_hashes: &[B256],
63    ) -> Result<Vec<Option<BlobAndProofV1>>, BlobStoreError> {
64        Ok(vec![None; versioned_hashes.len()])
65    }
66
67    fn get_by_versioned_hashes_v2(
68        &self,
69        _versioned_hashes: &[B256],
70    ) -> Result<Option<Vec<BlobAndProofV2>>, BlobStoreError> {
71        Ok(None)
72    }
73
74    fn get_by_versioned_hashes_v3(
75        &self,
76        versioned_hashes: &[B256],
77    ) -> Result<Vec<Option<BlobAndProofV2>>, BlobStoreError> {
78        Ok(vec![None; versioned_hashes.len()])
79    }
80
81    fn get_by_versioned_hashes_v4(
82        &self,
83        versioned_hashes: &[B256],
84        _indices_bitarray: B128,
85    ) -> Result<Vec<Option<BlobCellsAndProofsV1>>, BlobStoreError> {
86        Ok(vec![None; versioned_hashes.len()])
87    }
88
89    fn has_versioned_hashes(&self, versioned_hashes: &[B256]) -> Result<Vec<bool>, BlobStoreError> {
90        Ok(vec![false; versioned_hashes.len()])
91    }
92
93    fn get_cells(
94        &self,
95        tx_hash: TxHash,
96        indices_bitarray: B128,
97    ) -> Result<Option<Vec<Cell>>, BlobStoreError> {
98        let _ = (tx_hash, indices_bitarray);
99        Ok(None)
100    }
101
102    fn data_size_hint(&self) -> Option<usize> {
103        Some(0)
104    }
105
106    fn blobs_len(&self) -> usize {
107        0
108    }
109}