penumbra_sdk_distributions/
params.rs

1use penumbra_sdk_proto::core::component::distributions::v1 as pb;
2use penumbra_sdk_proto::DomainType;
3use serde::{Deserialize, Serialize};
4
5#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
6#[serde(
7    try_from = "pb::DistributionsParameters",
8    into = "pb::DistributionsParameters"
9)]
10pub struct DistributionsParameters {
11    pub staking_issuance_per_block: u64,
12}
13
14impl DomainType for DistributionsParameters {
15    type Proto = pb::DistributionsParameters;
16}
17
18impl TryFrom<pb::DistributionsParameters> for DistributionsParameters {
19    type Error = anyhow::Error;
20
21    fn try_from(msg: pb::DistributionsParameters) -> anyhow::Result<Self> {
22        Ok(DistributionsParameters {
23            staking_issuance_per_block: msg.staking_issuance_per_block,
24        })
25    }
26}
27
28impl From<DistributionsParameters> for pb::DistributionsParameters {
29    fn from(params: DistributionsParameters) -> Self {
30        pb::DistributionsParameters {
31            staking_issuance_per_block: params.staking_issuance_per_block,
32        }
33    }
34}
35
36impl Default for DistributionsParameters {
37    fn default() -> Self {
38        Self {
39            staking_issuance_per_block: 1_000_000,
40        }
41    }
42}