mirror of
https://github.com/Qortal/piratewallet-light-cli.git
synced 2025-02-01 03:12:15 +00:00
Create 5 addresses when restoring wallet
This commit is contained in:
parent
d74a1cc73e
commit
fdd65fbeb5
@ -1209,21 +1209,47 @@ pub mod tests {
|
||||
pub fn test_addresses() {
|
||||
let lc = super::LightClient::unconnected(TEST_SEED.to_string(), None).unwrap();
|
||||
|
||||
// Add new z and t addresses
|
||||
{
|
||||
let addresses = lc.do_address();
|
||||
// When restoring from seed, there should be 5+1 addresses
|
||||
assert_eq!(addresses["z_addresses"].len(), 6);
|
||||
assert_eq!(addresses["t_addresses"].len(), 6);
|
||||
}
|
||||
|
||||
// Add new z and t addresses
|
||||
let taddr1 = lc.do_new_address("t").unwrap()[0].as_str().unwrap().to_string();
|
||||
let taddr2 = lc.do_new_address("t").unwrap()[0].as_str().unwrap().to_string();
|
||||
let zaddr1 = lc.do_new_address("z").unwrap()[0].as_str().unwrap().to_string();
|
||||
let zaddr2 = lc.do_new_address("z").unwrap()[0].as_str().unwrap().to_string();
|
||||
|
||||
let addresses = lc.do_address();
|
||||
assert_eq!(addresses["z_addresses"].len(), 3);
|
||||
assert_eq!(addresses["z_addresses"][1], zaddr1);
|
||||
assert_eq!(addresses["z_addresses"][2], zaddr2);
|
||||
assert_eq!(addresses["z_addresses"].len(), 8);
|
||||
assert_eq!(addresses["z_addresses"][6], zaddr1);
|
||||
assert_eq!(addresses["z_addresses"][7], zaddr2);
|
||||
|
||||
assert_eq!(addresses["t_addresses"].len(), 3);
|
||||
assert_eq!(addresses["t_addresses"][1], taddr1);
|
||||
assert_eq!(addresses["t_addresses"][2], taddr2);
|
||||
assert_eq!(addresses["t_addresses"].len(), 8);
|
||||
assert_eq!(addresses["t_addresses"][6], taddr1);
|
||||
assert_eq!(addresses["t_addresses"][7], taddr2);
|
||||
|
||||
use std::sync::{Arc, RwLock, Mutex};
|
||||
use crate::lightclient::{WalletStatus, LightWallet};
|
||||
|
||||
// When creating a new wallet, there is only 1 address
|
||||
let config = LightClientConfig::create_unconnected("test".to_string(), None);
|
||||
let lc = LightClient {
|
||||
wallet : Arc::new(RwLock::new(LightWallet::new(None, &config, 0).unwrap())),
|
||||
config : config,
|
||||
sapling_output : vec![],
|
||||
sapling_spend : vec![],
|
||||
sync_lock : Mutex::new(()),
|
||||
sync_status : Arc::new(RwLock::new(WalletStatus::new())),
|
||||
};
|
||||
{
|
||||
let addresses = lc.do_address();
|
||||
// New wallets have only 1 address
|
||||
assert_eq!(addresses["z_addresses"].len(), 1);
|
||||
assert_eq!(addresses["t_addresses"].len(), 1);
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
|
@ -187,7 +187,7 @@ impl LightWallet {
|
||||
let mut system_rng = OsRng;
|
||||
system_rng.fill(&mut seed_bytes);
|
||||
} else {
|
||||
let phrase = match Mnemonic::from_phrase(seed_phrase.unwrap(), Language::English) {
|
||||
let phrase = match Mnemonic::from_phrase(seed_phrase.clone().unwrap(), Language::English) {
|
||||
Ok(p) => p,
|
||||
Err(e) => {
|
||||
let e = format!("Error parsing phrase: {}", e);
|
||||
@ -212,7 +212,7 @@ impl LightWallet {
|
||||
let (extsk, extfvk, address)
|
||||
= LightWallet::get_zaddr_from_bip39seed(&config, &bip39_seed.as_bytes(), 0);
|
||||
|
||||
Ok(LightWallet {
|
||||
let lw = LightWallet {
|
||||
encrypted: false,
|
||||
unlocked: true,
|
||||
enc_seed: [0u8; 48],
|
||||
@ -228,7 +228,17 @@ impl LightWallet {
|
||||
mempool_txs: Arc::new(RwLock::new(HashMap::new())),
|
||||
config: config.clone(),
|
||||
birthday: latest_block,
|
||||
})
|
||||
};
|
||||
|
||||
// If restoring from seed, make sure we are creating 5 addresses for users
|
||||
if seed_phrase.is_some() {
|
||||
for _i in 0..5 {
|
||||
lw.add_taddr();
|
||||
lw.add_zaddr();
|
||||
}
|
||||
}
|
||||
|
||||
Ok(lw)
|
||||
}
|
||||
|
||||
pub fn read<R: Read>(mut inp: R, config: &LightClientConfig) -> io::Result<Self> {
|
||||
|
Loading…
Reference in New Issue
Block a user