diff --git a/src/citrea_config/bitcoin.rs b/src/citrea_config/bitcoin.rs index e877a96..9d08e8d 100644 --- a/src/citrea_config/bitcoin.rs +++ b/src/citrea_config/bitcoin.rs @@ -17,6 +17,31 @@ pub struct MonitoringConfig { pub max_history_size: usize, } +#[derive(Debug, Clone, PartialEq, Deserialize, Serialize)] +pub struct FeeServiceConfig { + max_da_bandwidth_bytes: u64, + window_duration_secs: u64, + capacity_threshold: f64, + base_fee_multiplier: f64, + max_fee_multiplier: f64, + fee_exponential_factor: f64, + fee_multipler_scalar: f64, +} + +impl Default for FeeServiceConfig { + fn default() -> Self { + Self { + max_da_bandwidth_bytes: 4 * 1024 * 1024, // 4MB + window_duration_secs: 600, // 10min + capacity_threshold: 0.5, + base_fee_multiplier: 1.0, + max_fee_multiplier: 4.0, + fee_exponential_factor: 4.0, + fee_multipler_scalar: 10.0, + } + } +} + /// Runtime configuration for the DA service #[derive(Debug, Clone, PartialEq, Deserialize, Serialize)] pub struct BitcoinServiceConfig { @@ -35,4 +60,5 @@ pub struct BitcoinServiceConfig { pub tx_backup_dir: String, pub monitoring: Option, + pub fee: Option, } diff --git a/src/citrea_config/rollup.rs b/src/citrea_config/rollup.rs index 297aa73..3d923d3 100644 --- a/src/citrea_config/rollup.rs +++ b/src/citrea_config/rollup.rs @@ -3,7 +3,7 @@ use std::path::PathBuf; use serde::{Deserialize, Serialize}; use tempfile::TempDir; -use super::bitcoin::MonitoringConfig; +use super::bitcoin::{FeeServiceConfig, MonitoringConfig}; use crate::config::{BitcoinConfig, BitcoinServiceConfig}; /// Runner configuration. @@ -155,6 +155,7 @@ impl Default for FullNodeConfig { .display() .to_string(), monitoring: Some(MonitoringConfig::default()), + fee: Some(FeeServiceConfig::default()), }, public_keys: RollupPublicKeys { sequencer_public_key: vec![ @@ -189,6 +190,7 @@ impl From for BitcoinServiceConfig { da_private_key: None, tx_backup_dir: String::new(), monitoring: Some(Default::default()), + fee: Some(Default::default()), } } }