diff --git a/example-crates/wallet_electrum/src/main.rs b/example-crates/wallet_electrum/src/main.rs index dabd66da..20ae9d0f 100644 --- a/example-crates/wallet_electrum/src/main.rs +++ b/example-crates/wallet_electrum/src/main.rs @@ -1,4 +1,4 @@ -use std::str::FromStr; +use std::{io::Write, str::FromStr}; use bdk::{ bitcoin::{Address, Network}, @@ -35,12 +35,29 @@ fn main() -> Result<(), Box> { let balance = wallet.get_balance(); println!("Wallet balance before syncing: {} sats", balance.total()); - println!("Syncing..."); + print!("Syncing..."); // Scanning the chain... let electrum_url = "ssl://electrum.blockstream.info:60002"; let client = electrum_client::Client::new(electrum_url)?; let local_chain = wallet.checkpoints(); - let spks = wallet.spks_of_all_keychains(); + let spks = wallet + .spks_of_all_keychains() + .into_iter() + .map(|(k, spks)| { + let mut first = true; + ( + k, + spks.inspect(move |(spk_i, _)| { + if first { + first = false; + print!("\nScanning keychain [{:?}]:", k); + } + print!(" {}", spk_i); + let _ = std::io::stdout().flush(); + }), + ) + }) + .collect(); let electrum_update = client .scan( local_chain, @@ -51,6 +68,7 @@ fn main() -> Result<(), Box> { BATCH_SIZE, )? .into_confirmation_time_update(&client)?; + println!(); let new_txs = client.batch_transaction_get(electrum_update.missing_full_txs(&wallet))?; let update = electrum_update.into_keychain_scan(new_txs, &wallet)?; wallet.apply_update(update)?; diff --git a/example-crates/wallet_esplora/src/main.rs b/example-crates/wallet_esplora/src/main.rs index ee6a84f4..804139f8 100644 --- a/example-crates/wallet_esplora/src/main.rs +++ b/example-crates/wallet_esplora/src/main.rs @@ -6,7 +6,7 @@ use bdk::{ use bdk_esplora::esplora_client; use bdk_esplora::EsploraExt; use bdk_file_store::KeychainStore; -use std::str::FromStr; +use std::{io::Write, str::FromStr}; const SEND_AMOUNT: u64 = 5000; const STOP_GAP: usize = 50; @@ -31,12 +31,29 @@ fn main() -> Result<(), Box> { let balance = wallet.get_balance(); println!("Wallet balance before syncing: {} sats", balance.total()); - println!("Syncing..."); + print!("Syncing..."); // Scanning the chain... let esplora_url = "https://mempool.space/testnet/api"; let client = esplora_client::Builder::new(esplora_url).build_blocking()?; - let spks = wallet.spks_of_all_keychains(); let checkpoints = wallet.checkpoints(); + let spks = wallet + .spks_of_all_keychains() + .into_iter() + .map(|(k, spks)| { + let mut first = true; + ( + k, + spks.inspect(move |(spk_i, _)| { + if first { + first = false; + print!("\nScanning keychain [{:?}]:", k); + } + print!(" {}", spk_i); + let _ = std::io::stdout().flush(); + }), + ) + }) + .collect(); let update = client.scan( checkpoints, spks, @@ -45,6 +62,7 @@ fn main() -> Result<(), Box> { STOP_GAP, PARALLEL_REQUESTS, )?; + println!(); wallet.apply_update(update)?; wallet.commit()?;