reth::transaction_pool::blobstore

Trait BlobStore

pub trait BlobStore:
    Debug
    + Send
    + Sync
    + 'static {
    // Required methods
    fn insert(
        &self,
        tx: FixedBytes<32>,
        data: BlobTransactionSidecar,
    ) -> Result<(), BlobStoreError>;
    fn insert_all(
        &self,
        txs: Vec<(FixedBytes<32>, BlobTransactionSidecar)>,
    ) -> Result<(), BlobStoreError>;
    fn delete(&self, tx: FixedBytes<32>) -> Result<(), BlobStoreError>;
    fn delete_all(&self, txs: Vec<FixedBytes<32>>) -> Result<(), BlobStoreError>;
    fn cleanup(&self) -> BlobStoreCleanupStat;
    fn get(
        &self,
        tx: FixedBytes<32>,
    ) -> Result<Option<Arc<BlobTransactionSidecar>>, BlobStoreError>;
    fn contains(&self, tx: FixedBytes<32>) -> Result<bool, BlobStoreError>;
    fn get_all(
        &self,
        txs: Vec<FixedBytes<32>>,
    ) -> Result<Vec<(FixedBytes<32>, Arc<BlobTransactionSidecar>)>, BlobStoreError>;
    fn get_exact(
        &self,
        txs: Vec<FixedBytes<32>>,
    ) -> Result<Vec<Arc<BlobTransactionSidecar>>, BlobStoreError>;
    fn get_by_versioned_hashes(
        &self,
        versioned_hashes: &[FixedBytes<32>],
    ) -> Result<Vec<Option<BlobAndProofV1>>, BlobStoreError>;
    fn data_size_hint(&self) -> Option<usize>;
    fn blobs_len(&self) -> usize;
}
Expand description

A blob store that can be used to store blob data of EIP4844 transactions.

This type is responsible for keeping track of blob data until it is no longer needed (after finalization).

Note: this is Clone because it is expected to be wrapped in an Arc.

Required Methods§

fn insert( &self, tx: FixedBytes<32>, data: BlobTransactionSidecar, ) -> Result<(), BlobStoreError>

Inserts the blob sidecar into the store

fn insert_all( &self, txs: Vec<(FixedBytes<32>, BlobTransactionSidecar)>, ) -> Result<(), BlobStoreError>

Inserts multiple blob sidecars into the store

fn delete(&self, tx: FixedBytes<32>) -> Result<(), BlobStoreError>

Deletes the blob sidecar from the store

fn delete_all(&self, txs: Vec<FixedBytes<32>>) -> Result<(), BlobStoreError>

Deletes multiple blob sidecars from the store

fn cleanup(&self) -> BlobStoreCleanupStat

A maintenance function that can be called periodically to clean up the blob store, returns the number of successfully deleted blobs and the number of failed deletions.

This is intended to be called in the background to clean up any old or unused data, in case the store uses deferred cleanup: DiskFileBlobStore

fn get( &self, tx: FixedBytes<32>, ) -> Result<Option<Arc<BlobTransactionSidecar>>, BlobStoreError>

Retrieves the decoded blob data for the given transaction hash.

fn contains(&self, tx: FixedBytes<32>) -> Result<bool, BlobStoreError>

Checks if the given transaction hash is in the blob store.

fn get_all( &self, txs: Vec<FixedBytes<32>>, ) -> Result<Vec<(FixedBytes<32>, Arc<BlobTransactionSidecar>)>, BlobStoreError>

Retrieves all decoded blob data for the given transaction hashes.

This only returns the blobs that were found in the store. If there’s no blob it will not be returned.

Note: this is not guaranteed to return the blobs in the same order as the input.

fn get_exact( &self, txs: Vec<FixedBytes<32>>, ) -> Result<Vec<Arc<BlobTransactionSidecar>>, BlobStoreError>

Returns the exact BlobTransactionSidecar for the given transaction hashes in the exact order they were requested.

Returns an error if any of the blobs are not found in the blob store.

fn get_by_versioned_hashes( &self, versioned_hashes: &[FixedBytes<32>], ) -> Result<Vec<Option<BlobAndProofV1>>, BlobStoreError>

Return the BlobTransactionSidecars for a list of blob versioned hashes.

fn data_size_hint(&self) -> Option<usize>

Data size of all transactions in the blob store.

fn blobs_len(&self) -> usize

How many blobs are in the blob store.

Implementors§