diff --git a/crates/derive/src/online/alloy_providers.rs b/crates/derive/src/online/alloy_providers.rs index 133d016e..a30a0bb5 100644 --- a/crates/derive/src/online/alloy_providers.rs +++ b/crates/derive/src/online/alloy_providers.rs @@ -24,7 +24,7 @@ const CACHE_SIZE: usize = 16; /// **Note**: /// This provider fetches data using the `debug_getRawHeader`, `debug_getRawReceipts`, and /// `debug_getRawBlock` methods. The RPC must support this namespace. -#[derive(Debug)] +#[derive(Debug, Clone)] pub struct AlloyChainProvider>> { /// The inner Ethereum JSON-RPC provider. inner: T, diff --git a/crates/derive/src/online/beacon_client.rs b/crates/derive/src/online/beacon_client.rs index 53b6609a..b02002ce 100644 --- a/crates/derive/src/online/beacon_client.rs +++ b/crates/derive/src/online/beacon_client.rs @@ -45,7 +45,7 @@ pub trait BeaconClient { } /// An online implementation of the [BeaconClient] trait. -#[derive(Debug)] +#[derive(Debug, Clone)] pub struct OnlineBeaconClient>> { /// The inner Ethereum JSON-RPC provider. inner: T, diff --git a/crates/derive/src/online/blob_provider.rs b/crates/derive/src/online/blob_provider.rs index 152a8304..3eefc6e0 100644 --- a/crates/derive/src/online/blob_provider.rs +++ b/crates/derive/src/online/blob_provider.rs @@ -56,7 +56,7 @@ impl From for OnlineBlobProviderError { } /// An online implementation of the [BlobProvider] trait. -#[derive(Debug)] +#[derive(Debug, Clone)] pub struct OnlineBlobProvider>, B: BeaconClient, S: SlotDerivation> { /// The inner Ethereum JSON-RPC provider. _inner: T, @@ -168,7 +168,7 @@ impl>, B: BeaconClient, S: SlotDerivation> OnlineBlobPr } /// Minimal slot derivation implementation. -#[derive(Debug, Default)] +#[derive(Debug, Default, Clone)] pub struct SimpleSlotDerivation; impl SlotDerivation for SimpleSlotDerivation { diff --git a/crates/derive/src/online/mod.rs b/crates/derive/src/online/mod.rs index c851b0de..399336fb 100644 --- a/crates/derive/src/online/mod.rs +++ b/crates/derive/src/online/mod.rs @@ -1,11 +1,12 @@ //! Contains "online" implementations for providers. use crate::{ + sources::DataSourceFactory, stages::{ AttributesQueue, BatchQueue, ChannelBank, ChannelReader, FrameQueue, L1Retrieval, L1Traversal, NextAttributes, StatefulAttributesBuilder, }, - traits::{DataAvailabilityProvider, ResettableStage}, + traits::ResettableStage, types::RollupConfig, }; @@ -18,7 +19,14 @@ use core::fmt::Debug; pub fn new_online_stack( rollup_config: Arc, chain_provider: AlloyChainProvider, - dap_source: impl DataAvailabilityProvider + Send + Sync + Debug, + dap_source: DataSourceFactory< + AlloyChainProvider, + OnlineBlobProvider< + ReqwestProvider, + OnlineBeaconClient, + SimpleSlotDerivation, + >, + >, fetcher: AlloyL2ChainProvider, builder: StatefulAttributesBuilder< AlloyChainProvider,