diff --git a/crates/fuel-core/src/service/sub_services/algorithm_updater.rs b/crates/fuel-core/src/service/sub_services/algorithm_updater.rs index 1fe5b7ba017..d067c2a6929 100644 --- a/crates/fuel-core/src/service/sub_services/algorithm_updater.rs +++ b/crates/fuel-core/src/service/sub_services/algorithm_updater.rs @@ -1,5 +1,3 @@ -use crate::service::adapters::ConsensusParametersProvider; - use fuel_core_gas_price_service::{ fuel_gas_price_updater::{ da_source_adapter::{ @@ -51,16 +49,16 @@ use fuel_core_types::{ services::block_importer::SharedImportResult, }; -type Updater = FuelGasPriceUpdater< - FuelL2BlockSource, +type Updater = FuelGasPriceUpdater< + FuelL2BlockSource, StructuredStorage, DaBlockCostsSharedState, >; -pub struct InitializeTask { +pub struct InitializeTask { pub config: GasPriceServiceConfig, pub genesis_block_height: BlockHeight, - pub settings: ConsensusParametersProvider, + pub settings: SettingsProvider, pub gas_price_db: GasPriceStore, pub on_chain_db: L2DataStoreView, pub block_stream: BoxStream, @@ -68,19 +66,21 @@ pub struct InitializeTask { pub da_block_costs_provider: DaBlockCostsProvider, } -type Task = GasPriceService>; +type Task = + GasPriceService>; -impl - InitializeTask +impl + InitializeTask where L2DataStore: L2Data, L2DataStoreView: AtomicView, GasPriceStore: GasPriceData + Modifiable + KeyValueInspect, + SettingsProvider: GasPriceSettingsProvider, { pub fn new( config: GasPriceServiceConfig, genesis_block_height: BlockHeight, - settings: ConsensusParametersProvider, + settings: SettingsProvider, block_stream: BoxStream, mut gas_price_db: GasPriceStore, on_chain_db: L2DataStoreView, @@ -145,16 +145,17 @@ where Ok(algo) } #[async_trait::async_trait] -impl RunnableService - for InitializeTask +impl RunnableService + for InitializeTask where L2DataStore: L2Data, L2DataStoreView: AtomicView, GasPriceStore: GasPriceData + Modifiable + KeyValueInspect, + SettingsProvider: GasPriceSettingsProvider, { const NAME: &'static str = "GasPriceUpdater"; type SharedData = SharedGasPriceAlgo; - type Task = Task; + type Task = Task; type TaskParams = (); fn shared_data(&self) -> Self::SharedData { @@ -189,19 +190,25 @@ where } } -pub fn get_synced_gas_price_updater( +pub fn get_synced_gas_price_updater< + L2DataStore, + L2DataStoreView, + GasPriceStore, + SettingsProvider, +>( config: GasPriceServiceConfig, genesis_block_height: BlockHeight, - settings: ConsensusParametersProvider, + settings: SettingsProvider, gas_price_db: GasPriceStore, on_chain_db: &L2DataStoreView, block_stream: BoxStream, da_block_costs: DaBlockCostsSharedState, -) -> anyhow::Result> +) -> anyhow::Result> where L2DataStore: L2Data, L2DataStoreView: AtomicView, GasPriceStore: GasPriceData + Modifiable + KeyValueInspect, + SettingsProvider: GasPriceSettingsProvider, { let mut first_run = false; let latest_block_height: u32 = on_chain_db @@ -256,8 +263,13 @@ where } } -fn sync_gas_price_db_with_on_chain_storage( - settings: &ConsensusParametersProvider, +fn sync_gas_price_db_with_on_chain_storage< + L2DataStore, + L2DataStoreView, + GasPriceStore, + SettingsProvider, +>( + settings: &SettingsProvider, metadata_storage: &mut StructuredStorage, on_chain_db: &L2DataStoreView, metadata_height: u32, @@ -267,6 +279,7 @@ where L2DataStore: L2Data, L2DataStoreView: AtomicView, GasPriceStore: GasPriceData + Modifiable + KeyValueInspect, + SettingsProvider: GasPriceSettingsProvider, { let metadata = metadata_storage .get_metadata(&metadata_height.into())? @@ -292,8 +305,8 @@ where Ok(()) } -fn sync_v0_metadata( - settings: &ConsensusParametersProvider, +fn sync_v0_metadata( + settings: &SettingsProvider, on_chain_db: &L2DataStoreView, metadata_height: u32, latest_block_height: u32, @@ -304,6 +317,7 @@ where L2DataStore: L2Data, L2DataStoreView: AtomicView, GasPriceStore: GasPriceData + Modifiable + KeyValueInspect, + SettingsProvider: GasPriceSettingsProvider, { let first = metadata_height.saturating_add(1); let view = on_chain_db.latest_view()?; diff --git a/crates/services/gas_price_service/src/fuel_gas_price_updater/fuel_core_storage_adapter.rs b/crates/services/gas_price_service/src/fuel_gas_price_updater/fuel_core_storage_adapter.rs index 3b64c17c68a..93fb0f7551c 100644 --- a/crates/services/gas_price_service/src/fuel_gas_price_updater/fuel_core_storage_adapter.rs +++ b/crates/services/gas_price_service/src/fuel_gas_price_updater/fuel_core_storage_adapter.rs @@ -113,7 +113,7 @@ pub struct GasPriceSettings { pub gas_price_factor: u64, pub block_gas_limit: u64, } -pub trait GasPriceSettingsProvider { +pub trait GasPriceSettingsProvider: Send + Sync + Clone { fn settings( &self, param_version: &ConsensusParametersVersion, diff --git a/crates/services/gas_price_service/src/fuel_gas_price_updater/fuel_core_storage_adapter/l2_source_tests.rs b/crates/services/gas_price_service/src/fuel_gas_price_updater/fuel_core_storage_adapter/l2_source_tests.rs index 06bc49b342e..8d25fcb0c59 100644 --- a/crates/services/gas_price_service/src/fuel_gas_price_updater/fuel_core_storage_adapter/l2_source_tests.rs +++ b/crates/services/gas_price_service/src/fuel_gas_price_updater/fuel_core_storage_adapter/l2_source_tests.rs @@ -34,6 +34,7 @@ use std::{ }; use tokio_stream::wrappers::ReceiverStream; +#[derive(Clone)] struct FakeSettings { gas_price_factor: u64, block_gas_limit: u64,