ergo_lib/wallet/
miner_fee.rs

1//! Miner fee included in transaction
2
3use ergotree_ir::chain::address::Address;
4use ergotree_ir::chain::address::AddressEncoder;
5use ergotree_ir::chain::address::NetworkPrefix;
6use lazy_static::lazy_static;
7
8/// Base16 encoded serialized ErgoTree of the miners fee (delay 720)
9pub const MINERS_FEE_BASE16_BYTES: &str = "1005040004000e36100204a00b08cd0279be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798ea02d192a39a8cc7a701730073011001020402d19683030193a38cc7b2a57300000193c2b2a57301007473027303830108cdeeac93b1a57304";
10
11lazy_static! {
12    /// Miner fee P2S address on mainnet
13    pub static ref MINERS_FEE_ADDRESS: Address =
14        #[allow(clippy::unwrap_used)]
15        Address::P2S(base16::decode(MINERS_FEE_BASE16_BYTES).unwrap());
16
17    /// Miner fee Base58 encoded P2S address on mainnet
18    pub static ref MINERS_FEE_MAINNET_ADDRESS_STR: String =
19        AddressEncoder::new(NetworkPrefix::Mainnet).address_to_str(&MINERS_FEE_ADDRESS);
20
21    /// Miner fee Base58 encoded P2S address on testnet
22    pub static ref MINERS_FEE_TESTNET_ADDRESS_STR: String =
23        AddressEncoder::new(NetworkPrefix::Testnet).address_to_str(&MINERS_FEE_ADDRESS);
24}
25
26#[allow(clippy::unwrap_used)]
27#[cfg(test)]
28mod tests {
29
30    use ergotree_ir::ergo_tree::ErgoTree;
31    use ergotree_ir::serialization::SigmaSerializable;
32    use pretty_assertions::assert_eq;
33
34    use super::*;
35
36    #[test]
37    fn fee_mainnet_address() {
38        assert_eq!(
39            MINERS_FEE_MAINNET_ADDRESS_STR.as_str(),
40            "2iHkR7CWvD1R4j1yZg5bkeDRQavjAaVPeTDFGGLZduHyfWMuYpmhHocX8GJoaieTx78FntzJbCBVL6rf96ocJoZdmWBL2fci7NqWgAirppPQmZ7fN9V6z13Ay6brPriBKYqLp1bT2Fk4FkFLCfdPpe"
41        );
42    }
43
44    #[test]
45    fn fee_testnet_address() {
46        assert_eq!(
47            MINERS_FEE_TESTNET_ADDRESS_STR.as_str(),
48            "Bf1X9JgQTUtgntaer91B24n6kP8L2kqEiQqNf1z97BKo9UbnW3WRP9VXu8BXd1LsYCiYbHJEdWKxkF5YNx5n7m31wsDjbEuB3B13ZMDVBWkepGmWfGa71otpFViHDCuvbw1uNicAQnfuWfnj8fbCa4"
49        );
50    }
51
52    #[test]
53    fn parses_fee_address() {
54        ErgoTree::sigma_parse_bytes(base16::decode(MINERS_FEE_BASE16_BYTES).unwrap().as_slice())
55            .unwrap();
56    }
57}