[[package]]
name = "bdk_wallet"
-version = "2.1.0"
+version = "2.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "d30b5dba770184863b5d966ccbc6a11d12c145450be3b6a4435308297e6a12dc"
+checksum = "b03f1e31ccc562f600981f747d2262b84428cbff52c9c9cdf14d15fb15bd2286"
dependencies = [
"bdk_chain",
"bip39",
license = "MIT"
[dependencies]
-bdk_wallet = { version = "2.1.0", features = ["rusqlite", "keys-bip39", "compiler", "std"] }
+bdk_wallet = { version = "2.3.0", features = ["rusqlite", "keys-bip39", "compiler", "std"] }
clap = { version = "4.6", features = ["derive","env"] }
clap_complete = "4.6"
dirs = { version = "6.0.0" }
client
.populate_tx_cache(wallet.tx_graph().full_txs().map(|tx_node| tx_node.tx));
- let update = client.full_scan(request, _stop_gap, *batch_size, false)?;
- wallet.apply_update(update)?;
+ let update = client.full_scan(request, _stop_gap, batch_size, false)?;
+ let wallet_events = wallet.apply_update_events(update)?;
+ print_wallet_events(&wallet_events);
}
#[cfg(feature = "esplora")]
Esplora {
.full_scan(request, _stop_gap, *parallel_requests)
.await
.map_err(|e| *e)?;
- wallet.apply_update(update)?;
+ let wallet_events = wallet.apply_update_events(update)?;
+ print_wallet_events(&wallet_events);
}
#[cfg(feature = "rpc")]
// already have.
client.populate_tx_cache(wallet.tx_graph().full_txs().map(|tx_node| tx_node.tx));
- let update = client.sync(request, *batch_size, false)?;
- wallet
- .apply_update(update)
- .map_err(|e| Error::Generic(e.to_string()))
+ let update = client.sync(request, batch_size, false)?;
+ let wallet_events = wallet
+ .apply_update_events(update)
+ .map_err(|e| Error::Generic(e.to_string()))?;
+ print_wallet_events(&wallet_events);
+ Ok(())
}
#[cfg(feature = "esplora")]
Esplora {
.sync(request, *parallel_requests)
.await
.map_err(|e| *e)?;
- wallet
- .apply_update(update)
- .map_err(|e| Error::Generic(e.to_string()))
+ let wallet_events = wallet
+ .apply_update_events(update)
+ .map_err(|e| Error::Generic(e.to_string()))?;
+ print_wallet_events(&wallet_events);
+ Ok(())
}
#[cfg(feature = "rpc")]
RpcClient { client } => {
feature = "cbf"
))]
use crate::commands::ClientType;
+#[cfg(any(feature = "electrum", feature = "esplora",))]
+use bdk_wallet::event::WalletEvent;
use bdk_wallet::Wallet;
#[cfg(any(feature = "sqlite", feature = "redb"))]
Ok((wallet_opts, network))
}
+#[cfg(any(feature = "electrum", feature = "esplora",))]
+pub fn print_wallet_events(events: &Vec<WalletEvent>) {
+ for event in events {
+ match event {
+ WalletEvent::TxConfirmed {
+ txid,
+ tx: _,
+ block_time,
+ old_block_time: _,
+ } => {
+ eprintln!(
+ "Transaction {} confirmed in block {:?}",
+ txid, block_time.block_id
+ );
+ }
+ WalletEvent::TxUnconfirmed {
+ txid,
+ tx: _,
+ old_block_time: _,
+ } => {
+ eprintln!("Transaction {txid} became unconfirmed");
+ }
+ WalletEvent::TxReplaced {
+ txid,
+ tx: _,
+ conflicts: _,
+ } => {
+ eprintln!("Received new transaction: {txid}");
+ }
+ WalletEvent::TxDropped { txid, tx: _ } => {
+ eprintln!("Transaction {txid} has been dropped");
+ }
+ WalletEvent::ChainTipChanged { old_tip, new_tip } => {
+ eprintln!(
+ "Wallet has synced to {:?} chain tip from {:?}",
+ new_tip.height, old_tip.height
+ );
+ }
+ _ => eprintln!(),
+ }
+ }
+}