pub struct OnlineBlobProviderWithFallback<B: BeaconClient, F: BlobSidecarProvider> { /* private fields */ }
Expand description
An online blob provider that optionally falls back to a secondary provider if the primary fails to fetch blob sidecars.
This is useful for scenarios where blobs have been evicted from the primary provider’s blob store and need to be fetched from a remote archive API. The default eviction policy on Ethereum is to keep blobs for 18 days.
Blob storage APIs are expected to implement the BlobSidecarProvider trait. One example can be found at https://github.com/base-org/blob-archiver
Implementations§
Source§impl<B: BeaconClient, F: BlobSidecarProvider> OnlineBlobProviderWithFallback<B, F>
impl<B: BeaconClient, F: BlobSidecarProvider> OnlineBlobProviderWithFallback<B, F>
Sourcepub const fn new(primary: OnlineBlobProvider<B>, fallback: Option<F>) -> Self
pub const fn new(primary: OnlineBlobProvider<B>, fallback: Option<F>) -> Self
Creates a new instance of the OnlineBlobProviderWithFallback with the specified primary and fallback providers.
Trait Implementations§
Source§impl<B, F> BlobProvider for OnlineBlobProviderWithFallback<B, F>
impl<B, F> BlobProvider for OnlineBlobProviderWithFallback<B, F>
Source§fn get_blobs<'life0, 'life1, 'life2, 'async_trait>(
&'life0 mut self,
block_ref: &'life1 BlockInfo,
blob_hashes: &'life2 [IndexedBlobHash],
) -> Pin<Box<dyn Future<Output = Result<Vec<Box<Blob>>, BlobProviderError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
fn get_blobs<'life0, 'life1, 'life2, 'async_trait>(
&'life0 mut self,
block_ref: &'life1 BlockInfo,
blob_hashes: &'life2 [IndexedBlobHash],
) -> Pin<Box<dyn Future<Output = Result<Vec<Box<Blob>>, BlobProviderError>> + Send + 'async_trait>>where
Self: 'async_trait,
'life0: 'async_trait,
'life1: 'async_trait,
'life2: 'async_trait,
Fetches blob sidecars that were confirmed in the specified L1 block with the given indexed hashes. The blobs are validated for their index and hashes using the specified IndexedBlobHash.
Source§type Error = BlobProviderError
type Error = BlobProviderError
Source§impl<B: Clone + BeaconClient, F: Clone + BlobSidecarProvider> Clone for OnlineBlobProviderWithFallback<B, F>
impl<B: Clone + BeaconClient, F: Clone + BlobSidecarProvider> Clone for OnlineBlobProviderWithFallback<B, F>
Source§fn clone(&self) -> OnlineBlobProviderWithFallback<B, F>
fn clone(&self) -> OnlineBlobProviderWithFallback<B, F>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl<B: Debug + BeaconClient, F: Debug + BlobSidecarProvider> Debug for OnlineBlobProviderWithFallback<B, F>
impl<B: Debug + BeaconClient, F: Debug + BlobSidecarProvider> Debug for OnlineBlobProviderWithFallback<B, F>
Source§impl<B: BeaconClient, F: BlobSidecarProvider> From<OnlineBlobProviderBuilder<B, F>> for OnlineBlobProviderWithFallback<B, F>
impl<B: BeaconClient, F: BlobSidecarProvider> From<OnlineBlobProviderBuilder<B, F>> for OnlineBlobProviderWithFallback<B, F>
Source§fn from(builder: OnlineBlobProviderBuilder<B, F>) -> Self
fn from(builder: OnlineBlobProviderBuilder<B, F>) -> Self
Auto Trait Implementations§
impl<B, F> Freeze for OnlineBlobProviderWithFallback<B, F>
impl<B, F> RefUnwindSafe for OnlineBlobProviderWithFallback<B, F>where
B: RefUnwindSafe,
F: RefUnwindSafe,
impl<B, F> Send for OnlineBlobProviderWithFallback<B, F>
impl<B, F> Sync for OnlineBlobProviderWithFallback<B, F>
impl<B, F> Unpin for OnlineBlobProviderWithFallback<B, F>
impl<B, F> UnwindSafe for OnlineBlobProviderWithFallback<B, F>where
B: UnwindSafe,
F: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more