Select Git revision
currency_params.rs 6.11 KiB
// Copyright (C) 2018 The Duniter Project Developers.
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU Affero General Public License as
// published by the Free Software Foundation, either version 3 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU Affero General Public License for more details.
//
// You should have received a copy of the GNU Affero General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
use constants::*;
use duniter_documents::v10::block::BlockV10Parameters;
use duniter_documents::CurrencyName;
use *;
#[derive(Debug, Copy, Clone)]
/// Curerncy parameters
pub struct CurrencyParameters {
/// Protocol version
pub protocol_version: usize,
/// UD target growth rate (see Relative Theorie of Money)
pub c: f64,
/// Duration between the creation of two UD (in seconds)
pub dt: u64,
/// Amount of the initial UD
pub ud0: usize,
/// Minimum duration between the writing of 2 certifications from the same issuer (in seconds)
pub sig_period: u64,
/// Minimum duration between two renewals of the same certification
pub sig_renew_period: u64,
/// Maximum number of active certifications at the same time (for the same issuer)
pub sig_stock: usize,
/// Maximum retention period of a pending certification
pub sig_window: u64,
/// Time to expiry of written certification
pub sig_validity: u64,
/// Minimum number of certifications required to become a member
pub sig_qty: usize,
/// Maximum retention period of a pending identity
pub idty_window: u64,
/// Maximum retention period of a pending membership
pub ms_window: u64,
/// Maximum retention period of a pending transaction
pub tx_window: u64,
/// Percentage of referring members who must be within step_max steps of each member
pub x_percent: f64,
/// Time to expiry of written membership
pub ms_validity: u64,
/// Minimum duration between the writing of 2 memberships from the same issuer (in seconds)
pub ms_period: u64,
/// For a member to respect the distance rule,
/// there must exist for more than x_percent % of the referring members
/// a path of less than step_max steps from the referring member to the evaluated member.
pub step_max: usize,
/// Number of blocks used for calculating median time.
pub median_time_blocks: usize,
/// The average time for writing 1 block (wished time)
pub avg_gen_time: u64,
/// The number of blocks required to evaluate again PoWMin value
pub dt_diff_eval: usize,
/// The percent of previous issuers to reach for personalized difficulty
pub percent_rot: f64,
/// Time of first UD.
pub ud_time0: u64,
/// Time of first reevaluation of the UD.