mirror of
https://github.com/logos-blockchain/logos-blockchain-simulations.git
synced 2026-01-29 02:13:07 +00:00
38 lines
1.3 KiB
Rust
38 lines
1.3 KiB
Rust
use netrunner::settings::SimulationSettings;
|
|
use nomos_mix::{
|
|
conn_maintenance::ConnectionMaintenanceSettings,
|
|
persistent_transmission::PersistentTransmissionSettings,
|
|
};
|
|
use serde::{Deserialize, Deserializer};
|
|
use std::time::Duration;
|
|
|
|
#[derive(Deserialize)]
|
|
pub struct SimSettings {
|
|
#[serde(flatten)]
|
|
pub simulation_settings: SimulationSettings,
|
|
#[serde(deserialize_with = "deserialize_duration_with_human_time")]
|
|
pub data_message_lottery_interval: Duration,
|
|
pub stake_proportion: f64,
|
|
// For tier 3: cover traffic
|
|
#[serde(deserialize_with = "deserialize_duration_with_human_time")]
|
|
pub epoch_duration: Duration,
|
|
#[serde(deserialize_with = "deserialize_duration_with_human_time")]
|
|
pub slot_duration: Duration,
|
|
pub slots_per_epoch: usize,
|
|
pub number_of_hops: usize,
|
|
// For tier 1
|
|
pub conn_maintenance: ConnectionMaintenanceSettings,
|
|
pub persistent_transmission: PersistentTransmissionSettings,
|
|
// For tier 2
|
|
pub number_of_mix_layers: usize,
|
|
pub max_delay_seconds: u64,
|
|
}
|
|
|
|
fn deserialize_duration_with_human_time<'de, D>(deserializer: D) -> Result<Duration, D::Error>
|
|
where
|
|
D: Deserializer<'de>,
|
|
{
|
|
let s = String::deserialize(deserializer)?;
|
|
humantime::parse_duration(&s).map_err(serde::de::Error::custom)
|
|
}
|