mirror of
https://github.com/Qortal/piratewallet-light-cli.git
synced 2025-02-11 17:55:47 +00:00
multichain updates
This commit is contained in:
parent
41d855a784
commit
fc7459dc03
@ -5,7 +5,7 @@ use std::sync::mpsc::{channel, Sender, Receiver};
|
||||
use log::{info, error};
|
||||
|
||||
use zecwalletlitelib::{commands,
|
||||
lightclient::{LightClient, LightClientConfig},
|
||||
lightclient::{LightClient, LightClientConfig, AddressParameters},
|
||||
};
|
||||
|
||||
pub mod version;
|
||||
@ -243,6 +243,7 @@ pub fn attempt_recover_seed(password: Option<String>) {
|
||||
consensus_branch_id: "000000".to_string(),
|
||||
anchor_offset: 0,
|
||||
data_dir: None,
|
||||
address_params: AddressParameters::new()
|
||||
};
|
||||
|
||||
match LightClient::attempt_recover_seed(&config, password) {
|
||||
|
@ -57,6 +57,31 @@ impl WalletStatus {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
pub struct AddressParameters {
|
||||
pub coin_type: Option<u32>,
|
||||
pub hrp_sapling_extended_spending_key: Option<String>,
|
||||
pub hrp_sapling_extended_full_viewing_key: Option<String>,
|
||||
pub hrp_sapling_payment_address: Option<String>,
|
||||
pub b58_pubkey_address_prefix: Option<[u8; 2]>,
|
||||
pub b58_script_address_prefix: Option<[u8; 2]>,
|
||||
}
|
||||
|
||||
impl AddressParameters {
|
||||
pub fn new() -> Self {
|
||||
AddressParameters {
|
||||
coin_type: Some(323), //Zero Default COIN_TYPE
|
||||
hrp_sapling_extended_spending_key: None,
|
||||
hrp_sapling_extended_full_viewing_key: None,
|
||||
hrp_sapling_payment_address: None,
|
||||
b58_pubkey_address_prefix: None,
|
||||
b58_script_address_prefix: None
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
#[derive(Clone, Debug)]
|
||||
pub struct LightClientConfig {
|
||||
pub server : http::Uri,
|
||||
@ -64,7 +89,8 @@ pub struct LightClientConfig {
|
||||
pub sapling_activation_height : u64,
|
||||
pub consensus_branch_id : String,
|
||||
pub anchor_offset : u32,
|
||||
pub data_dir : Option<String>
|
||||
pub data_dir : Option<String>,
|
||||
pub address_params : AddressParameters
|
||||
}
|
||||
|
||||
impl LightClientConfig {
|
||||
@ -78,6 +104,7 @@ impl LightClientConfig {
|
||||
consensus_branch_id : "".to_string(),
|
||||
anchor_offset : ANCHOR_OFFSET,
|
||||
data_dir : dir,
|
||||
address_params : AddressParameters::new()
|
||||
}
|
||||
}
|
||||
|
||||
@ -101,6 +128,7 @@ impl LightClientConfig {
|
||||
consensus_branch_id : info.consensus_branch_id,
|
||||
anchor_offset : ANCHOR_OFFSET,
|
||||
data_dir : None,
|
||||
address_params : AddressParameters::new()
|
||||
};
|
||||
|
||||
Ok((config, info.block_height))
|
||||
@ -249,58 +277,106 @@ impl LightClientConfig {
|
||||
}.parse().unwrap()
|
||||
}
|
||||
|
||||
pub fn set_coin_type(&mut self, param: u32) {
|
||||
self.address_params.coin_type = Some(param);
|
||||
}
|
||||
|
||||
pub fn set_hrp_sapling_extended_spending_key(&mut self, param: String) {
|
||||
self.address_params.hrp_sapling_extended_spending_key = Some(param);
|
||||
}
|
||||
|
||||
pub fn set_hrp_sapling_extended_full_viewing_key(&mut self, param: String) {
|
||||
self.address_params.hrp_sapling_extended_full_viewing_key = Some(param);
|
||||
}
|
||||
|
||||
pub fn set_hrp_sapling_payment_address(&mut self, param: String) {
|
||||
self.address_params.hrp_sapling_payment_address = Some(param);
|
||||
}
|
||||
|
||||
pub fn set_b58_pubkey_address_prefix(&mut self, param: [u8; 2]) {
|
||||
self.address_params.b58_pubkey_address_prefix = Some(param);
|
||||
}
|
||||
|
||||
pub fn set_b58_script_address_prefix(&mut self, param: [u8; 2]) {
|
||||
self.address_params.b58_script_address_prefix = Some(param);
|
||||
}
|
||||
|
||||
pub fn get_coin_type(&self) -> u32 {
|
||||
match &self.chain_name[..] {
|
||||
"main" => mainnet::COIN_TYPE,
|
||||
"test" => testnet::COIN_TYPE,
|
||||
"regtest" => regtest::COIN_TYPE,
|
||||
c => panic!("Unknown chain {}", c)
|
||||
match &self.address_params.coin_type {
|
||||
Some(s) => *s,
|
||||
None =>
|
||||
match &self.chain_name[..] {
|
||||
"main" => mainnet::COIN_TYPE,
|
||||
"test" => testnet::COIN_TYPE,
|
||||
"regtest" => regtest::COIN_TYPE,
|
||||
c => panic!("Unknown chain {}", c)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn hrp_sapling_address(&self) -> &str {
|
||||
match &self.chain_name[..] {
|
||||
"main" => mainnet::HRP_SAPLING_PAYMENT_ADDRESS,
|
||||
"test" => testnet::HRP_SAPLING_PAYMENT_ADDRESS,
|
||||
"regtest" => regtest::HRP_SAPLING_PAYMENT_ADDRESS,
|
||||
c => panic!("Unknown chain {}", c)
|
||||
match &self.address_params.hrp_sapling_payment_address {
|
||||
Some(s) => s,
|
||||
None =>
|
||||
match &self.chain_name[..] {
|
||||
"main" => mainnet::HRP_SAPLING_PAYMENT_ADDRESS,
|
||||
"test" => testnet::HRP_SAPLING_PAYMENT_ADDRESS,
|
||||
"regtest" => regtest::HRP_SAPLING_PAYMENT_ADDRESS,
|
||||
c => panic!("Unknown chain {}", c)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn hrp_sapling_private_key(&self) -> &str {
|
||||
match &self.chain_name[..] {
|
||||
"main" => mainnet::HRP_SAPLING_EXTENDED_SPENDING_KEY,
|
||||
"test" => testnet::HRP_SAPLING_EXTENDED_SPENDING_KEY,
|
||||
"regtest" => regtest::HRP_SAPLING_EXTENDED_SPENDING_KEY,
|
||||
c => panic!("Unknown chain {}", c)
|
||||
match &self.address_params.hrp_sapling_extended_full_viewing_key {
|
||||
Some(s) => s,
|
||||
None =>
|
||||
match &self.chain_name[..] {
|
||||
"main" => mainnet::HRP_SAPLING_EXTENDED_SPENDING_KEY,
|
||||
"test" => testnet::HRP_SAPLING_EXTENDED_SPENDING_KEY,
|
||||
"regtest" => regtest::HRP_SAPLING_EXTENDED_SPENDING_KEY,
|
||||
c => panic!("Unknown chain {}", c)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn hrp_sapling_viewing_key(&self) -> &str {
|
||||
match &self.chain_name[..] {
|
||||
"main" => mainnet::HRP_SAPLING_EXTENDED_FULL_VIEWING_KEY,
|
||||
"test" => testnet::HRP_SAPLING_EXTENDED_FULL_VIEWING_KEY,
|
||||
"regtest" => regtest::HRP_SAPLING_EXTENDED_FULL_VIEWING_KEY,
|
||||
c => panic!("Unknown chain {}", c)
|
||||
match &self.address_params.hrp_sapling_extended_spending_key {
|
||||
Some(s) => s,
|
||||
None =>
|
||||
match &self.chain_name[..] {
|
||||
"main" => mainnet::HRP_SAPLING_EXTENDED_FULL_VIEWING_KEY,
|
||||
"test" => testnet::HRP_SAPLING_EXTENDED_FULL_VIEWING_KEY,
|
||||
"regtest" => regtest::HRP_SAPLING_EXTENDED_FULL_VIEWING_KEY,
|
||||
c => panic!("Unknown chain {}", c)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub fn base58_pubkey_address(&self) -> [u8; 2] {
|
||||
match &self.chain_name[..] {
|
||||
"main" => mainnet::B58_PUBKEY_ADDRESS_PREFIX,
|
||||
"test" => testnet::B58_PUBKEY_ADDRESS_PREFIX,
|
||||
"regtest" => regtest::B58_PUBKEY_ADDRESS_PREFIX,
|
||||
c => panic!("Unknown chain {}", c)
|
||||
match &self.address_params.b58_pubkey_address_prefix {
|
||||
Some(s) => *s,
|
||||
None =>
|
||||
match &self.chain_name[..] {
|
||||
"main" => mainnet::B58_PUBKEY_ADDRESS_PREFIX,
|
||||
"test" => testnet::B58_PUBKEY_ADDRESS_PREFIX,
|
||||
"regtest" => regtest::B58_PUBKEY_ADDRESS_PREFIX,
|
||||
c => panic!("Unknown chain {}", c)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
pub fn base58_script_address(&self) -> [u8; 2] {
|
||||
match &self.chain_name[..] {
|
||||
"main" => mainnet::B58_SCRIPT_ADDRESS_PREFIX,
|
||||
"test" => testnet::B58_SCRIPT_ADDRESS_PREFIX,
|
||||
"regtest" => regtest::B58_SCRIPT_ADDRESS_PREFIX,
|
||||
c => panic!("Unknown chain {}", c)
|
||||
match &self.address_params.b58_script_address_prefix {
|
||||
Some(s) => *s,
|
||||
None =>
|
||||
match &self.chain_name[..] {
|
||||
"main" => mainnet::B58_SCRIPT_ADDRESS_PREFIX,
|
||||
"test" => testnet::B58_SCRIPT_ADDRESS_PREFIX,
|
||||
"regtest" => regtest::B58_SCRIPT_ADDRESS_PREFIX,
|
||||
c => panic!("Unknown chain {}", c)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -659,6 +659,7 @@ fn get_test_config() -> LightClientConfig {
|
||||
consensus_branch_id: "000000".to_string(),
|
||||
anchor_offset: 0,
|
||||
data_dir: None,
|
||||
address_params: AddressParameters::new()
|
||||
}
|
||||
}
|
||||
|
||||
@ -671,6 +672,7 @@ fn get_main_config() -> LightClientConfig {
|
||||
consensus_branch_id: "000000".to_string(),
|
||||
anchor_offset: 0,
|
||||
data_dir: None,
|
||||
address_params: AddressParameters::new()
|
||||
}
|
||||
}
|
||||
|
||||
@ -717,6 +719,7 @@ fn test_unconfirmed_txns() {
|
||||
consensus_branch_id: "000000".to_string(),
|
||||
anchor_offset: 5, // offset = 5
|
||||
data_dir: None,
|
||||
address_params: AddressParameters::new()
|
||||
};
|
||||
|
||||
let branch_id = u32::from_str_radix("2bb40e60", 16).unwrap();
|
||||
@ -2169,6 +2172,7 @@ fn test_t_z_derivation() {
|
||||
consensus_branch_id: "000000".to_string(),
|
||||
anchor_offset: 1,
|
||||
data_dir: None,
|
||||
address_params: AddressParameters::new()
|
||||
};
|
||||
|
||||
let seed_phrase = Some("chimney better bulb horror rebuild whisper improve intact letter giraffe brave rib appear bulk aim burst snap salt hill sad merge tennis phrase raise".to_string());
|
||||
@ -2325,6 +2329,7 @@ fn test_import_birthday_adjust() {
|
||||
consensus_branch_id: "000000".to_string(),
|
||||
anchor_offset: 0,
|
||||
data_dir: None,
|
||||
address_params: AddressParameters::new()
|
||||
};
|
||||
|
||||
let privkey = "secret-extended-key-main1q0p44m9zqqqqpqyxfvy5w2vq6ahvxyrwsk2w4h2zleun4cft4llmnsjlv77lhuuknv6x9jgu5g2clf3xq0wz9axxxq8klvv462r5pa32gjuj5uhxnvps6wsrdg6xll05unwks8qpgp4psmvy5e428uxaggn4l29duk82k3sv3njktaaj453fdmfmj2fup8rls4egqxqtj2p5a3yt4070khn99vzxj5ag5qjngc4v2kq0ctl9q2rpc2phu4p3e26egu9w88mchjf83sqgh3cev";
|
||||
|
@ -295,6 +295,7 @@ pub mod tests {
|
||||
consensus_branch_id: "000000".to_string(),
|
||||
anchor_offset: 0,
|
||||
data_dir: None,
|
||||
address_params: AddressParameters::new()
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user