From 5c03a77e56fbb67238f4dd9431cb48de60272388 Mon Sep 17 00:00:00 2001 From: Dave Hrycyszyn Date: Mon, 24 Jun 2024 16:43:17 +0100 Subject: [PATCH] Bit of cleanup after all the excitement --- ...tc_other_rpc.rs => btc_electrum_client.rs} | 36 +++++-------------- .../{btc_rpc.rs => btc_esplora_client.rs} | 1 + side-node/src/clients/mod.rs | 5 ++- side-node/src/clients/test.rs | 19 ---------- side-node/src/lib.rs | 2 +- 5 files changed, 12 insertions(+), 51 deletions(-) rename side-node/src/clients/{btc_other_rpc.rs => btc_electrum_client.rs} (64%) rename side-node/src/clients/{btc_rpc.rs => btc_esplora_client.rs} (98%) delete mode 100644 side-node/src/clients/test.rs diff --git a/side-node/src/clients/btc_other_rpc.rs b/side-node/src/clients/btc_electrum_client.rs similarity index 64% rename from side-node/src/clients/btc_other_rpc.rs rename to side-node/src/clients/btc_electrum_client.rs index 4e3efd2..faa14f8 100644 --- a/side-node/src/clients/btc_other_rpc.rs +++ b/side-node/src/clients/btc_electrum_client.rs @@ -1,25 +1,12 @@ use crate::{keys, utils}; -use bdk::bitcoin::base64; -use bdk::bitcoin::psbt::{PartiallySignedTransaction, Psbt}; -use bdk::blockchain::{Blockchain, Progress}; +use bdk::bitcoin::psbt::PartiallySignedTransaction; +use bdk::blockchain::Blockchain; use bdk::database::MemoryDatabase; use bdk::wallet::AddressIndex::{self, New}; use bdk::wallet::AddressInfo; use bdk::{blockchain::ElectrumBlockchain, electrum_client, SyncOptions}; use bdk::{FeeRate, SignOptions, TransactionDetails, Wallet}; -use toml::to_string; -use tracing::field::display; - -#[derive(Debug)] -pub struct CustomProgress; - -impl Progress for CustomProgress { - fn update(&self, progress: f32, message: Option) -> Result<(), bdk::Error> { - println!("Progress: {} - {:?}", progress, message); - Ok(()) - } -} pub async fn run() -> Result<(), anyhow::Error> { let dave = utils::home(&"dave".to_string()); @@ -27,11 +14,6 @@ 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(); - // Verify explicitly that the address is derived as expected - let dave_expected_address = "tb1q88e45m4akrg2y00n4077vn90q8qw0svz7dss6k"; - let derived_address = dave_wallet.get_address(AddressIndex::Peek(0))?.to_string(); - assert_eq!(dave_expected_address, derived_address); - let dave_address = dave_wallet.get_address(AddressIndex::Peek(0))?.to_string(); let sammy_address = sammy_wallet.get_address(AddressIndex::Peek(0))?.to_string(); @@ -51,16 +33,14 @@ pub async fn run() -> Result<(), anyhow::Error> { let (mut psbt, details) = build_sending_tx(&dave_wallet, sammy_wallet.get_address(New)?).expect("psbt build error"); - println!("Transaction details: {:#?}", details); - println!("Unsigned PSBT: {}", base64::encode(psbt.serialize())); + println!("About to sign the transaction: {:?}", details); - let finalized = dave_wallet.sign(&mut psbt, SignOptions::default())?; - println!("Finalized: {}", finalized); + dave_wallet.sign(&mut psbt, SignOptions::default())?; + let signed_tx = psbt.extract_tx(); - let tx_id = blockchain - .broadcast(&psbt.extract_tx()) - .expect("broadcast error"); - println!("Transaction ID: {:?}", tx_id); + println!("Broadcasting..."); + blockchain.broadcast(&signed_tx).expect("broadcast error"); + println!("Transaction ID: {:?}", signed_tx.txid()); Ok(()) } diff --git a/side-node/src/clients/btc_rpc.rs b/side-node/src/clients/btc_esplora_client.rs similarity index 98% rename from side-node/src/clients/btc_rpc.rs rename to side-node/src/clients/btc_esplora_client.rs index 10bc80d..880231b 100644 --- a/side-node/src/clients/btc_rpc.rs +++ b/side-node/src/clients/btc_esplora_client.rs @@ -12,6 +12,7 @@ const SEND_AMOUNT: Amount = Amount::from_sat(5000); const STOP_GAP: usize = 50; const PARALLEL_REQUESTS: usize = 5; +/// Demonstrates the use of bdk with the Esplora client. pub async fn run() -> Result<(), anyhow::Error> { let db_path = "/tmp/bdk-esplora-async-example.sqlite"; let conn = Connection::open(db_path)?; diff --git a/side-node/src/clients/mod.rs b/side-node/src/clients/mod.rs index e5cc7ba..2c213cd 100644 --- a/side-node/src/clients/mod.rs +++ b/side-node/src/clients/mod.rs @@ -1,4 +1,3 @@ -pub mod btc_other_rpc; -pub mod btc_rpc; -pub mod test; +pub mod btc_electrum_client; +pub mod btc_esplora_client; pub mod websocket; diff --git a/side-node/src/clients/test.rs b/side-node/src/clients/test.rs deleted file mode 100644 index 3f46762..0000000 --- a/side-node/src/clients/test.rs +++ /dev/null @@ -1,19 +0,0 @@ -use anyhow::Result; -use reqwest::blocking::Client; - -pub async fn run() -> Result<(), Box> { - // Set up the Esplora client - let esplora_url = "https://blockstream.info/signet/api"; - let client = Client::new(); - - // Address to check - let address = "tb1q88e45m4akrg2y00n4077vn90q8qw0svz7dss6k"; - - // Query balance - let url = format!("{}/address/{}/utxo", esplora_url, address); - let response = client.get(&url).send()?.text()?; - - println!("UTXO for address: {}", response); - - Ok(()) -} diff --git a/side-node/src/lib.rs b/side-node/src/lib.rs index 0426b25..dea02c9 100644 --- a/side-node/src/lib.rs +++ b/side-node/src/lib.rs @@ -31,7 +31,7 @@ pub async fn run() { node.start().await; } Some(Commands::Btc {}) => { - let _ = clients::btc_other_rpc::run().await; + let _ = clients::btc_electrum_client::run().await; } None => println!("No command provided. Exiting. See --help for more information."), }