darkfi_money_contract/
lib.rs1use darkfi_sdk::error::ContractError;
25
26#[repr(u8)]
28#[derive(Debug)]
29pub enum MoneyFunction {
31 FeeV1 = 0x00,
32 GenesisMintV1 = 0x01,
33 PoWRewardV1 = 0x02,
34 TransferV1 = 0x03,
35 OtcSwapV1 = 0x04,
36 AuthTokenMintV1 = 0x05,
37 AuthTokenFreezeV1 = 0x06,
38 TokenMintV1 = 0x07,
39}
40impl TryFrom<u8> for MoneyFunction {
43 type Error = ContractError;
44
45 fn try_from(b: u8) -> core::result::Result<Self, Self::Error> {
46 match b {
47 0x00 => Ok(Self::FeeV1),
48 0x01 => Ok(Self::GenesisMintV1),
49 0x02 => Ok(Self::PoWRewardV1),
50 0x03 => Ok(Self::TransferV1),
51 0x04 => Ok(Self::OtcSwapV1),
52 0x05 => Ok(Self::AuthTokenMintV1),
53 0x06 => Ok(Self::AuthTokenFreezeV1),
54 0x07 => Ok(Self::TokenMintV1),
55 _ => Err(ContractError::InvalidFunction),
56 }
57 }
58}
59
60pub mod error;
62
63pub mod model;
65
66#[cfg(not(feature = "no-entrypoint"))]
67pub mod entrypoint;
69
70#[cfg(feature = "client")]
71pub mod client;
73
74pub const MONEY_CONTRACT_INFO_TREE: &str = "info";
76pub const MONEY_CONTRACT_COINS_TREE: &str = "coins";
77pub const MONEY_CONTRACT_COIN_ROOTS_TREE: &str = "coin_roots";
78pub const MONEY_CONTRACT_NULLIFIERS_TREE: &str = "nullifiers";
79pub const MONEY_CONTRACT_NULLIFIER_ROOTS_TREE: &str = "nullifier_roots";
80pub const MONEY_CONTRACT_TOKEN_FREEZE_TREE: &str = "token_freezes";
81pub const MONEY_CONTRACT_FEES_TREE: &str = "fees";
82
83pub const MONEY_CONTRACT_DB_VERSION: &[u8] = b"db_version";
85pub const MONEY_CONTRACT_COIN_MERKLE_TREE: &[u8] = b"coins_tree";
86pub const MONEY_CONTRACT_LATEST_COIN_ROOT: &[u8] = b"last_coins_root";
87pub const MONEY_CONTRACT_LATEST_NULLIFIER_ROOT: &[u8] = b"last_nullifiers_root";
88
89pub const EMPTY_COINS_TREE_ROOT: [u8; 32] = [
92 0xb8, 0xc1, 0x07, 0x5a, 0x80, 0xa8, 0x09, 0x65, 0xc2, 0x39, 0x8f, 0x71, 0x1f, 0xe7, 0x3e, 0x05,
93 0xb4, 0xed, 0xae, 0xde, 0xf1, 0x62, 0xf2, 0x61, 0xd4, 0xee, 0xd7, 0xcd, 0x72, 0x74, 0x8d, 0x17,
94];
95
96pub const MONEY_CONTRACT_ZKAS_FEE_NS_V1: &str = "Fee_V1";
98pub const MONEY_CONTRACT_ZKAS_MINT_NS_V1: &str = "Mint_V1";
100pub const MONEY_CONTRACT_ZKAS_BURN_NS_V1: &str = "Burn_V1";
102pub const MONEY_CONTRACT_ZKAS_AUTH_TOKEN_MINT_NS_V1: &str = "AuthTokenMint_V1";
104pub const MONEY_CONTRACT_ZKAS_TOKEN_MINT_NS_V1: &str = "TokenMint_V1";