Skip to content

Commit 8e1a6ef

Browse files
committed
docs(wallet): add sync to bdk_wallet examples
1 parent 4d3116a commit 8e1a6ef

File tree

2 files changed

+61
-4
lines changed
  • examples
    • example_wallet_electrum/src
    • example_wallet_esplora_async/src

2 files changed

+61
-4
lines changed

examples/example_wallet_electrum/src/main.rs

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ fn main() -> Result<(), anyhow::Error> {
4444
let balance = wallet.balance();
4545
println!("Wallet balance before syncing: {}", balance.total());
4646

47-
print!("Syncing...");
47+
println!("=== Performing Full Sync ===");
4848
let client = BdkElectrumClient::new(electrum_client::Client::new(ELECTRUM_URL)?);
4949

5050
// Populate the electrum client's transaction cache so it doesn't redownload transaction we
@@ -71,7 +71,12 @@ fn main() -> Result<(), anyhow::Error> {
7171
wallet.persist(&mut db)?;
7272

7373
let balance = wallet.balance();
74-
println!("Wallet balance after syncing: {}", balance.total());
74+
println!("Wallet balance after full sync: {}", balance.total());
75+
println!(
76+
"Wallet has {} transactions and {} utxos after full sync",
77+
wallet.transactions().count(),
78+
wallet.list_unspent().count()
79+
);
7580

7681
if balance.total() < SEND_AMOUNT {
7782
println!(
@@ -92,5 +97,29 @@ fn main() -> Result<(), anyhow::Error> {
9297
client.transaction_broadcast(&tx)?;
9398
println!("Tx broadcasted! Txid: {}", tx.compute_txid());
9499

100+
println!("=== Performing Partial Sync ===");
101+
std::io::stdout().flush().expect("must flush");
102+
let sync_request =
103+
wallet
104+
.start_sync_with_revealed_spks()
105+
.inspect(|sync_item, sync_progress| {
106+
let progress_percent =
107+
(100 * sync_progress.consumed()) as f32 / sync_progress.total() as f32;
108+
eprintln!("[ SCANNING {:03.0}%] {}", progress_percent, sync_item)
109+
});
110+
111+
client.populate_tx_cache(wallet.tx_graph().full_txs().map(|tx_node| tx_node.tx));
112+
113+
let sync_update = client.sync(sync_request, BATCH_SIZE, false)?;
114+
wallet.apply_update(sync_update)?;
115+
116+
let balance_after_sync = wallet.balance();
117+
println!("Wallet balance after sync: {}", balance_after_sync.total());
118+
println!(
119+
"Wallet has {} transactions and {} utxos after partial sync",
120+
wallet.transactions().count(),
121+
wallet.list_unspent().count()
122+
);
123+
95124
Ok(())
96125
}

examples/example_wallet_esplora_async/src/main.rs

Lines changed: 30 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ async fn main() -> Result<(), anyhow::Error> {
4242
let balance = wallet.balance();
4343
println!("Wallet balance before syncing: {}", balance.total());
4444

45-
print!("Syncing...");
45+
println!("=== Performing Full Sync ===");
4646
let client = esplora_client::Builder::new(ESPLORA_URL).build_async()?;
4747

4848
let request = wallet.start_full_scan().inspect({
@@ -66,7 +66,12 @@ async fn main() -> Result<(), anyhow::Error> {
6666
println!();
6767

6868
let balance = wallet.balance();
69-
println!("Wallet balance after syncing: {}", balance.total());
69+
println!("Wallet balance after full sync: {}", balance.total());
70+
println!(
71+
"Wallet has {} transactions and {} utxos after full sync",
72+
wallet.transactions().count(),
73+
wallet.list_unspent().count()
74+
);
7075

7176
if balance.total() < SEND_AMOUNT {
7277
println!(
@@ -87,5 +92,28 @@ async fn main() -> Result<(), anyhow::Error> {
8792
client.broadcast(&tx).await?;
8893
println!("Tx broadcasted! Txid: {}", tx.compute_txid());
8994

95+
println!("=== Performing Partial Sync ===");
96+
std::io::stdout().flush().expect("must flush");
97+
let sync_request = wallet
98+
.start_sync_with_revealed_spks()
99+
.inspect(|item, progress| {
100+
let progress_percent = (100 * progress.consumed()) as f32 / progress.total() as f32;
101+
println!("[ SCANNING {:03.0}% ] {}", progress_percent, item);
102+
});
103+
104+
let sync_update = client
105+
.sync(sync_request, PARALLEL_REQUESTS)
106+
.await
107+
.map_err(|e| *e)?;
108+
wallet.apply_update(sync_update)?;
109+
110+
let balance_after_sync = wallet.balance();
111+
println!("Wallet balance after sync: {}", balance_after_sync.total());
112+
println!(
113+
"Wallet has {} transactions and {} utxos after partial sync",
114+
wallet.transactions().count(),
115+
wallet.list_unspent().count()
116+
);
117+
90118
Ok(())
91119
}

0 commit comments

Comments
 (0)