use std::time::Duration;
use serde::{Deserialize, Serialize};
use tari_common::configuration::serializers;
use tari_comms::peer_manager::NodeId;
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct BlockchainSyncConfig {
#[serde(with = "serializers::seconds")]
pub initial_max_sync_latency: Duration,
#[serde(with = "serializers::seconds")]
pub max_latency_increase: Duration,
#[serde(with = "serializers::seconds")]
pub ban_period: Duration,
#[serde(with = "serializers::seconds")]
pub short_ban_period: Duration,
pub forced_sync_peers: Vec<NodeId>,
pub monitored_peers: Vec<NodeId>,
pub validation_concurrency: usize,
#[serde(with = "serializers::seconds")]
pub rpc_deadline: Duration,
#[serde(default = "default_num_initial_sync_rounds_seed_bootstrap")]
pub num_initial_sync_rounds_seed_bootstrap: usize,
#[serde(default = "max_reorg_depth_allowed")]
pub max_reorg_depth_allowed: usize,
}
fn default_num_initial_sync_rounds_seed_bootstrap() -> usize {
5
}
fn max_reorg_depth_allowed() -> usize {
10000
}
impl Default for BlockchainSyncConfig {
fn default() -> Self {
Self {
initial_max_sync_latency: Duration::from_secs(240), max_latency_increase: Duration::from_secs(10), ban_period: Duration::from_secs(60 * 60 * 2), short_ban_period: Duration::from_secs(240), forced_sync_peers: Default::default(),
monitored_peers: Default::default(),
validation_concurrency: 6,
rpc_deadline: Duration::from_secs(240), num_initial_sync_rounds_seed_bootstrap: default_num_initial_sync_rounds_seed_bootstrap(),
max_reorg_depth_allowed: max_reorg_depth_allowed(),
}
}
}
impl BlockchainSyncConfig {
pub fn num_initial_sync_rounds_seed_bootstrap(&self) -> usize {
self.num_initial_sync_rounds_seed_bootstrap
}
}