use std::fmt::{Debug, Display};
use serde::{Deserialize, Serialize};
use crate::engines::EngineId;
#[derive(Clone, Debug, PartialEq, Eq, Serialize, Deserialize)]
pub struct ProtocolParameters {
pub unique_decoding: bool,
pub starting_log_inv_rate: usize,
pub initial_folding_factor: usize,
pub folding_factor: usize,
pub security_level: usize,
pub pow_bits: usize,
pub batch_size: usize,
pub hash_id: EngineId,
}
impl Display for ProtocolParameters {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
writeln!(
f,
"Targeting {}-bits of security with {}-bits of PoW using {} decoding",
self.security_level,
self.pow_bits,
if self.unique_decoding {
"unique"
} else {
"list"
}
)?;
writeln!(
f,
"Starting rate: 2^-{}, initial_folding_factor: {}, folding_factor: {}",
self.starting_log_inv_rate, self.initial_folding_factor, self.folding_factor,
)
}
}