]> Untitled Git - bdk/commitdiff
compact filters balance example
authorRiccardo Casatta <riccardo@casatta.it>
Fri, 27 Nov 2020 16:52:30 +0000 (17:52 +0100)
committerRiccardo Casatta <riccardo@casatta.it>
Wed, 10 Feb 2021 11:38:07 +0000 (12:38 +0100)
Cargo.toml
examples/compact_filters_balance.rs [new file with mode: 0644]

index d7d18b7af7fd57aac1b02effc447a0d7e0df63a3..5abcc0f0b1c1f7e0f6deffd99a0bcd7fab9987bf 100644 (file)
@@ -69,6 +69,9 @@ clap = "2.33"
 
 [[example]]
 name = "address_validator"
+[[example]]
+name = "compact_filters_balance"
+required-features = ["compact_filters"]
 
 [[example]]
 name = "miniscriptc"
diff --git a/examples/compact_filters_balance.rs b/examples/compact_filters_balance.rs
new file mode 100644 (file)
index 0000000..4c8f38e
--- /dev/null
@@ -0,0 +1,32 @@
+use bdk::blockchain::compact_filters::*;
+use bdk::blockchain::noop_progress;
+use bdk::database::MemoryDatabase;
+use bdk::*;
+use bitcoin::*;
+use blockchain::compact_filters::CompactFiltersBlockchain;
+use blockchain::compact_filters::CompactFiltersError;
+use log::info;
+use std::sync::Arc;
+
+/// This will return wallet balance using compact filters
+/// Requires a synced local bitcoin node 0.21 running on testnet with blockfilterindex=1 and peerblockfilters=1
+fn main() -> Result<(), CompactFiltersError> {
+    env_logger::init();
+    info!("start");
+
+    let num_threads = 4;
+    let mempool = Arc::new(Mempool::default());
+    let peers = (0..num_threads)
+        .map(|_| Peer::connect("localhost:18333", Arc::clone(&mempool), Network::Testnet))
+        .collect::<Result<_, _>>()?;
+    let blockchain = CompactFiltersBlockchain::new(peers, "./wallet-filters", Some(500_000))?;
+    info!("done {:?}", blockchain);
+    let descriptor = "wpkh(tpubD6NzVbkrYhZ4X2yy78HWrr1M9NT8dKeWfzNiQqDdMqqa9UmmGztGGz6TaLFGsLfdft5iu32gxq1T4eMNxExNNWzVCpf9Y6JZi5TnqoC9wJq/*)";
+
+    let database = MemoryDatabase::default();
+    let wallet =
+        Arc::new(Wallet::new(descriptor, None, Network::Testnet, database, blockchain).unwrap());
+    wallet.sync(noop_progress(), None).unwrap();
+    info!("balance: {}", wallet.get_balance()?);
+    Ok(())
+}