Improve stdout output for wallet esplora/electrum examples
This commit is contained in:
parent
eddd748870
commit
9d26121dbc
@ -1,4 +1,4 @@
|
|||||||
use std::str::FromStr;
|
use std::{io::Write, str::FromStr};
|
||||||
|
|
||||||
use bdk::{
|
use bdk::{
|
||||||
bitcoin::{Address, Network},
|
bitcoin::{Address, Network},
|
||||||
@ -35,12 +35,29 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|||||||
let balance = wallet.get_balance();
|
let balance = wallet.get_balance();
|
||||||
println!("Wallet balance before syncing: {} sats", balance.total());
|
println!("Wallet balance before syncing: {} sats", balance.total());
|
||||||
|
|
||||||
println!("Syncing...");
|
print!("Syncing...");
|
||||||
// Scanning the chain...
|
// Scanning the chain...
|
||||||
let electrum_url = "ssl://electrum.blockstream.info:60002";
|
let electrum_url = "ssl://electrum.blockstream.info:60002";
|
||||||
let client = electrum_client::Client::new(electrum_url)?;
|
let client = electrum_client::Client::new(electrum_url)?;
|
||||||
let local_chain = wallet.checkpoints();
|
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
|
let electrum_update = client
|
||||||
.scan(
|
.scan(
|
||||||
local_chain,
|
local_chain,
|
||||||
@ -51,6 +68,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|||||||
BATCH_SIZE,
|
BATCH_SIZE,
|
||||||
)?
|
)?
|
||||||
.into_confirmation_time_update(&client)?;
|
.into_confirmation_time_update(&client)?;
|
||||||
|
println!();
|
||||||
let new_txs = client.batch_transaction_get(electrum_update.missing_full_txs(&wallet))?;
|
let new_txs = client.batch_transaction_get(electrum_update.missing_full_txs(&wallet))?;
|
||||||
let update = electrum_update.into_keychain_scan(new_txs, &wallet)?;
|
let update = electrum_update.into_keychain_scan(new_txs, &wallet)?;
|
||||||
wallet.apply_update(update)?;
|
wallet.apply_update(update)?;
|
||||||
|
@ -6,7 +6,7 @@ use bdk::{
|
|||||||
use bdk_esplora::esplora_client;
|
use bdk_esplora::esplora_client;
|
||||||
use bdk_esplora::EsploraExt;
|
use bdk_esplora::EsploraExt;
|
||||||
use bdk_file_store::KeychainStore;
|
use bdk_file_store::KeychainStore;
|
||||||
use std::str::FromStr;
|
use std::{io::Write, str::FromStr};
|
||||||
|
|
||||||
const SEND_AMOUNT: u64 = 5000;
|
const SEND_AMOUNT: u64 = 5000;
|
||||||
const STOP_GAP: usize = 50;
|
const STOP_GAP: usize = 50;
|
||||||
@ -31,12 +31,29 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|||||||
let balance = wallet.get_balance();
|
let balance = wallet.get_balance();
|
||||||
println!("Wallet balance before syncing: {} sats", balance.total());
|
println!("Wallet balance before syncing: {} sats", balance.total());
|
||||||
|
|
||||||
println!("Syncing...");
|
print!("Syncing...");
|
||||||
// Scanning the chain...
|
// Scanning the chain...
|
||||||
let esplora_url = "https://mempool.space/testnet/api";
|
let esplora_url = "https://mempool.space/testnet/api";
|
||||||
let client = esplora_client::Builder::new(esplora_url).build_blocking()?;
|
let client = esplora_client::Builder::new(esplora_url).build_blocking()?;
|
||||||
let spks = wallet.spks_of_all_keychains();
|
|
||||||
let checkpoints = wallet.checkpoints();
|
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(
|
let update = client.scan(
|
||||||
checkpoints,
|
checkpoints,
|
||||||
spks,
|
spks,
|
||||||
@ -45,6 +62,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
|
|||||||
STOP_GAP,
|
STOP_GAP,
|
||||||
PARALLEL_REQUESTS,
|
PARALLEL_REQUESTS,
|
||||||
)?;
|
)?;
|
||||||
|
println!();
|
||||||
wallet.apply_update(update)?;
|
wallet.apply_update(update)?;
|
||||||
wallet.commit()?;
|
wallet.commit()?;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user