bsv_wasm/chainparams/
mod.rs1#[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}