mirror of
https://github.com/Qortal/piratewallet-light-cli.git
synced 2025-07-30 20:01:26 +00:00
Need birthday while restoring seed
This commit is contained in:
@@ -61,6 +61,11 @@ pub fn main() {
|
||||
.value_name("seed_phrase")
|
||||
.help("Create a new wallet with the given 24-word seed phrase. Will fail if wallet already exists")
|
||||
.takes_value(true))
|
||||
.arg(Arg::with_name("birthday")
|
||||
.long("birthday")
|
||||
.value_name("birthday")
|
||||
.help("Specify wallet birthday when restoring from seed. This is the earlist block height where the wallet has a transaction.")
|
||||
.takes_value(true))
|
||||
.arg(Arg::with_name("server")
|
||||
.long("server")
|
||||
.value_name("server")
|
||||
@@ -112,8 +117,25 @@ pub fn main() {
|
||||
let command = matches.value_of("COMMAND");
|
||||
let params = matches.values_of("PARAMS").map(|v| v.collect()).or(Some(vec![])).unwrap();
|
||||
|
||||
let maybe_server = matches.value_of("server").map(|s| s.to_string());
|
||||
let seed = matches.value_of("seed").map(|s| s.to_string());
|
||||
let maybe_server = matches.value_of("server").map(|s| s.to_string());
|
||||
|
||||
let seed = matches.value_of("seed").map(|s| s.to_string());
|
||||
let maybe_birthday = matches.value_of("birthday");
|
||||
|
||||
if seed.is_some() && maybe_birthday.is_none() {
|
||||
eprintln!("ERROR!");
|
||||
eprintln!("Please specify the wallet birthday (eg. '--birthday 600000') to restore from seed.");
|
||||
eprintln!("This should be the block height where the wallet was created. If you don't remember the block height, you can pass '--birthday 0' to scan from the start of the blockchain.");
|
||||
return;
|
||||
}
|
||||
|
||||
let birthday = match maybe_birthday.unwrap_or("0").parse::<u64>() {
|
||||
Ok(b) => b,
|
||||
Err(e) => {
|
||||
eprintln!("Couldn't parse birthday. This should be a block number. Error={}", e);
|
||||
return;
|
||||
}
|
||||
};
|
||||
|
||||
let server = LightClientConfig::get_server_or_default(maybe_server);
|
||||
|
||||
@@ -125,7 +147,7 @@ pub fn main() {
|
||||
|
||||
let dangerous = matches.is_present("dangerous");
|
||||
let nosync = matches.is_present("nosync");
|
||||
let (command_tx, resp_rx) = match startup(server, dangerous, seed, !nosync, command.is_none()) {
|
||||
let (command_tx, resp_rx) = match startup(server, dangerous, seed, birthday, !nosync, command.is_none()) {
|
||||
Ok(c) => c,
|
||||
Err(e) => {
|
||||
eprintln!("Error during startup: {}", e);
|
||||
@@ -163,7 +185,7 @@ pub fn main() {
|
||||
}
|
||||
}
|
||||
|
||||
fn startup(server: http::Uri, dangerous: bool, seed: Option<String>, first_sync: bool, print_updates: bool)
|
||||
fn startup(server: http::Uri, dangerous: bool, seed: Option<String>, birthday: u64, first_sync: bool, print_updates: bool)
|
||||
-> io::Result<(Sender<(String, Vec<String>)>, Receiver<String>)> {
|
||||
// Try to get the configuration
|
||||
let (config, latest_block_height) = LightClientConfig::create(server.clone(), dangerous)?;
|
||||
@@ -175,7 +197,7 @@ fn startup(server: http::Uri, dangerous: bool, seed: Option<String>, first_sync:
|
||||
})?;
|
||||
|
||||
let lightclient = match seed {
|
||||
Some(phrase) => Arc::new(LightClient::new_from_phrase(phrase, &config, latest_block_height)?),
|
||||
Some(phrase) => Arc::new(LightClient::new_from_phrase(phrase, &config, birthday)?),
|
||||
None => {
|
||||
if config.wallet_exists() {
|
||||
Arc::new(LightClient::read_from_disk(&config)?)
|
||||
@@ -195,9 +217,6 @@ fn startup(server: http::Uri, dangerous: bool, seed: Option<String>, first_sync:
|
||||
println!("Lightclient connecting to {}", config.server);
|
||||
}
|
||||
|
||||
// Start the command loop
|
||||
let (command_tx, resp_rx) = command_loop(lightclient.clone());
|
||||
|
||||
// At startup, run a sync.
|
||||
if first_sync {
|
||||
let update = lightclient.do_sync(true);
|
||||
@@ -206,6 +225,9 @@ fn startup(server: http::Uri, dangerous: bool, seed: Option<String>, first_sync:
|
||||
}
|
||||
}
|
||||
|
||||
// Start the command loop
|
||||
let (command_tx, resp_rx) = command_loop(lightclient.clone());
|
||||
|
||||
Ok((command_tx, resp_rx))
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user