namada_shielded_token/
lib.rs

1//! Namada shielded token.
2
3#![doc(html_favicon_url = "https://dev.namada.net/master/favicon.png")]
4#![doc(html_logo_url = "https://dev.namada.net/master/rustdoc-logo.png")]
5#![deny(rustdoc::broken_intra_doc_links)]
6#![deny(rustdoc::private_intra_doc_links)]
7#![warn(
8    missing_docs,
9    rust_2018_idioms,
10    clippy::cast_sign_loss,
11    clippy::cast_possible_truncation,
12    clippy::cast_possible_wrap,
13    clippy::cast_lossless,
14    clippy::arithmetic_side_effects,
15    clippy::dbg_macro,
16    clippy::print_stdout,
17    clippy::print_stderr
18)]
19
20pub mod conversion;
21
22#[cfg(feature = "masp")]
23pub mod masp;
24mod storage;
25pub mod storage_key;
26pub mod utils;
27pub mod validation;
28pub mod vp;
29
30use std::str::FromStr;
31
32use namada_core::borsh::{BorshDeserialize, BorshSchema, BorshSerialize};
33pub use namada_core::dec::Dec;
34pub use namada_core::masp::{MaspEpoch, MaspTransaction, MaspTxId, MaspValue};
35pub use namada_state::{
36    ConversionLeaf, ConversionState, Error, Key, OptionExt, Result, ResultExt,
37    StorageRead, StorageWrite, WithConversionState,
38};
39use serde::{Deserialize, Serialize};
40pub use storage::*;
41
42#[cfg(feature = "masp")]
43pub use crate::masp::shielded_wallet::ShieldedWallet;
44
45/// Token parameters for each kind of asset held on chain
46#[derive(
47    Clone,
48    Debug,
49    PartialEq,
50    Eq,
51    PartialOrd,
52    Ord,
53    Hash,
54    BorshSerialize,
55    BorshDeserialize,
56    BorshSchema,
57    Deserialize,
58    Serialize,
59)]
60pub struct ShieldedParams {
61    /// Maximum reward rate
62    pub max_reward_rate: Dec,
63    /// Shielded Pool nominal derivative gain
64    pub kd_gain_nom: Dec,
65    /// Shielded Pool nominal proportional gain for the given token
66    pub kp_gain_nom: Dec,
67    /// Target amount for the given token that is locked in the shielded pool
68    // TODO(namada#3255): use `Uint` here
69    pub locked_amount_target: u64,
70}
71
72impl Default for ShieldedParams {
73    fn default() -> Self {
74        Self {
75            max_reward_rate: Dec::from_str("0.1").unwrap(),
76            kp_gain_nom: Dec::from_str("0.25").unwrap(),
77            kd_gain_nom: Dec::from_str("0.25").unwrap(),
78            locked_amount_target: 10_000_u64,
79        }
80    }
81}