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