solana_stake_interface/
config.rs

1//! Config for staking.
2//!
3//! It carries variables that the stake program cares about.
4
5#[deprecated(
6    since = "1.16.7",
7    note = "Please use `crate::state::{DEFAULT_SLASH_PENALTY, DEFAULT_WARMUP_COOLDOWN_RATE}` instead"
8)]
9pub use super::state::{DEFAULT_SLASH_PENALTY, DEFAULT_WARMUP_COOLDOWN_RATE};
10use solana_pubkey::declare_deprecated_id;
11
12// stake config ID
13declare_deprecated_id!("StakeConfig11111111111111111111111111111111");
14
15#[deprecated(
16    since = "1.16.7",
17    note = "Please use `crate::state::warmup_cooldown_rate()` instead"
18)]
19#[cfg_attr(
20    feature = "serde",
21    derive(serde_derive::Deserialize, serde_derive::Serialize)
22)]
23#[derive(Debug, PartialEq, Clone, Copy)]
24pub struct Config {
25    /// how much stake we can activate/deactivate per-epoch as a fraction of currently effective stake
26    pub warmup_cooldown_rate: f64,
27    /// percentage of stake lost when slash, expressed as a portion of u8::MAX
28    pub slash_penalty: u8,
29}
30
31impl Default for Config {
32    fn default() -> Self {
33        Self {
34            warmup_cooldown_rate: DEFAULT_WARMUP_COOLDOWN_RATE,
35            slash_penalty: DEFAULT_SLASH_PENALTY,
36        }
37    }
38}