bsv_wasm/chainparams/
mod.rs

1#[cfg(target_arch = "wasm32")]
2use wasm_bindgen::{prelude::*, throw_str};
3
4#[cfg_attr(all(target_arch = "wasm32", feature = "wasm-bindgen-address"), wasm_bindgen)]
5#[derive(Debug, Clone, PartialEq, Eq)]
6pub struct ChainParams {
7    pub p2pkh: u8,
8    pub p2sh: u8,
9    pub privkey: u8,
10    pub xpub: u32,
11    pub xpriv: u32,
12    pub magic: u32,
13}
14
15#[cfg_attr(all(target_arch = "wasm32", feature = "wasm-bindgen-address"), wasm_bindgen)]
16impl ChainParams {
17    #[cfg_attr(all(target_arch = "wasm32", feature = "wasm-bindgen-address"), wasm_bindgen(constructor))]
18    pub fn default() -> ChainParams {
19        ChainParams {
20            p2pkh: 0x00,
21            p2sh: 0x05,
22            privkey: 0x80,
23            xpub: 0x0488b21e,
24            xpriv: 0x0488ade4,
25            magic: 0xe3e1f3e8,
26        }
27    }
28
29    pub fn new(p2pkh: u8, p2sh: u8, privkey: u8, xpub: u32, xpriv: u32, magic: u32) -> ChainParams {
30        ChainParams {
31            p2pkh,
32            p2sh,
33            privkey,
34            xpub,
35            xpriv,
36            magic,
37        }
38    }
39
40    #[cfg_attr(all(target_arch = "wasm32", feature = "wasm-bindgen-address"), wasm_bindgen(js_name = Mainnet))]
41    pub fn mainnet() -> ChainParams {
42        ChainParams::default()
43    }
44
45    #[cfg_attr(all(target_arch = "wasm32", feature = "wasm-bindgen-address"), wasm_bindgen(js_name = Testnet))]
46    pub fn testnet() -> ChainParams {
47        ChainParams {
48            p2pkh: 0x6f,
49            p2sh: 0xc4,
50            privkey: 0xef,
51            xpub: 0x043587cf,
52            xpriv: 0x04358394,
53            magic: 0xf4e5f3f4,
54        }
55    }
56
57    #[cfg_attr(all(target_arch = "wasm32", feature = "wasm-bindgen-address"), wasm_bindgen(js_name = Regtest))]
58    pub fn regtest() -> ChainParams {
59        let ChainParams {
60            p2pkh, p2sh, privkey, xpub, xpriv, ..
61        } = ChainParams::testnet();
62        ChainParams {
63            p2pkh,
64            p2sh,
65            privkey,
66            xpub,
67            xpriv,
68            magic: 0xdab5bffa,
69        }
70    }
71
72    #[cfg_attr(all(target_arch = "wasm32", feature = "wasm-bindgen-address"), wasm_bindgen(js_name = STN))]
73    pub fn stn() -> ChainParams {
74        let ChainParams {
75            p2pkh, p2sh, privkey, xpub, xpriv, ..
76        } = ChainParams::testnet();
77        ChainParams {
78            p2pkh,
79            p2sh,
80            privkey,
81            xpub,
82            xpriv,
83            magic: 0xfbcec4f9,
84        }
85    }
86}