From 462590b82fb9d8c1ffd41e9e6d0bffc972761ad3 Mon Sep 17 00:00:00 2001 From: Dave Hrycyszyn Date: Mon, 24 Jun 2024 13:56:57 +0100 Subject: [PATCH] Simplified bdk client --- side-node/src/clients/btc_other_rpc.rs | 77 +++++++------------------- 1 file changed, 19 insertions(+), 58 deletions(-) diff --git a/side-node/src/clients/btc_other_rpc.rs b/side-node/src/clients/btc_other_rpc.rs index fe9ca56..04ae0ab 100644 --- a/side-node/src/clients/btc_other_rpc.rs +++ b/side-node/src/clients/btc_other_rpc.rs @@ -1,9 +1,5 @@ -use std::io::Write; - -use bdk::{bitcoin::Script, KeychainKind}; -use bdk_esplora::esplora_client; - use crate::{keys, utils}; +use bdk::{blockchain::ElectrumBlockchain, electrum_client, SyncOptions}; pub async fn run() -> Result<(), anyhow::Error> { let dave = utils::home(&"dave".to_string()); @@ -13,64 +9,29 @@ pub async fn run() -> Result<(), anyhow::Error> { let dave_wallet = keys::bitcoin::load_from_file(&dave).unwrap(); let sammy_wallet = keys::bitcoin::load_from_file(&sammy).unwrap(); - let dave_address = dave_wallet.get_address(bdk::wallet::AddressIndex::New)?; - println!("Dave address: {:?}", dave_address); + // let dave_address = dave_wallet.get_address(bdk::wallet::AddressIndex::New)?; + // println!("Dave address: {:?}", dave_address); - let sammy_address = sammy_wallet.get_address(bdk::wallet::AddressIndex::New)?; - println!("Sammy address: {:?}", sammy_address); + // let sammy_address = sammy_wallet.get_address(bdk::wallet::AddressIndex::New)?; + // println!("Sammy address: {:?}", sammy_address); - print!("Syncing..."); - let client = esplora_client::Builder::new("http://signet.bitcoindevkit.net").build_async()?; + let blockchain = ElectrumBlockchain::from(electrum_client::Client::new( + "ssl://electrum.blockstream.info:60002", + )?); - fn generate_inspect(kind: KeychainKind) -> impl FnMut(u32, &Script) + Send + Sync + 'static { - let mut once = Some(()); - let mut stdout = std::io::stdout(); - move |spk_i, _| { - match once.take() { - Some(_) => print!("\nScanning keychain [{:?}]", kind), - None => print!(" {:<3}", spk_i), - }; - stdout.flush().expect("must flush"); - } - } + // let dave_balance = dave_wallet.get_balance()?; + // println!("Wallet balance before syncing: {} sats", dave_balance); - // let request = dave_wallet - // .start_full_scan() - // .inspect_spks_for_all_keychains({ - // let mut once = BTreeSet::::new(); - // move |keychain, spk_i, _| { - // match once.insert(keychain) { - // true => print!("\nScanning keychain [{:?}]", keychain), - // false => print!(" {:<3}", spk_i), - // } - // std::io::stdout().flush().expect("must flush") - // } - // }) - // .inspect_spks_for_keychain( - // KeychainKind::External, - // generate_inspect(KeychainKind::External), - // ) - // .inspect_spks_for_keychain( - // KeychainKind::Internal, - // generate_inspect(KeychainKind::Internal), - // ); + // let sammy_balance = sammy_wallet.get_balance()?; + // println!("Wallet balance before syncing: {} sats", sammy_balance); - // let mut update = client - // .full_scan(request, STOP_GAP, PARALLEL_REQUESTS) - // .await?; - // let now = std::time::UNIX_EPOCH.elapsed().unwrap().as_secs(); - // let _ = update.graph_update.update_last_seen_unconfirmed(now); - - // wallet.apply_update(update)?; - // if let Some(changeset) = wallet.take_staged() { - // db.write(&changeset)?; - // } - - let dave_balance = dave_wallet.get_balance()?; - println!("Wallet balance before syncing: {} sats", dave_balance); - - let sammy_balance = sammy_wallet.get_balance()?; - println!("Wallet balance before syncing: {} sats", sammy_balance); + println!("Syncing..."); + dave_wallet.sync(&blockchain, SyncOptions::default())?; + println!( + "Wallet balance for {} after syncing: {:?} sats", + dave_wallet.get_address(bdk::wallet::AddressIndex::LastUnused)?, + dave_wallet.get_balance()? + ); Ok(()) }