diff --git a/CHANGELOG.md b/CHANGELOG.md index f52f89c..ce05098 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +- Fix Wallet.broadcast function, now returns a tx id as a hex string + ## [v0.4.0] - Add dual license MIT and Apache 2.0 diff --git a/src/bdk.udl b/src/bdk.udl index aa59942..7ee8e80 100644 --- a/src/bdk.udl +++ b/src/bdk.udl @@ -131,7 +131,7 @@ interface Wallet { [Throws=BdkError] void sync(BdkProgress progress_update, u32? max_address_param); [Throws=BdkError] - Transaction broadcast([ByRef] PartiallySignedBitcoinTransaction psbt); + string broadcast([ByRef] PartiallySignedBitcoinTransaction psbt); }; interface PartiallySignedBitcoinTransaction { diff --git a/src/lib.rs b/src/lib.rs index a1aacba..9a133cc 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,3 +1,4 @@ +use bdk::bitcoin::hashes::hex::ToHex; use bdk::bitcoin::secp256k1::Secp256k1; use bdk::bitcoin::util::psbt::PartiallySignedTransaction; use bdk::bitcoin::{Address, Network}; @@ -201,7 +202,7 @@ impl PartiallySignedBitcoinTransaction { impl WalletHolder for Wallet { fn get_wallet(&self) -> MutexGuard> { - self.wallet_mutex.lock().unwrap() + self.wallet_mutex.lock().expect("wallet") } } @@ -265,11 +266,10 @@ impl Wallet { .sync(BdkProgressHolder { progress_update }, max_address_param) } - fn broadcast(&self, psbt: &PartiallySignedBitcoinTransaction) -> Result { + fn broadcast(&self, psbt: &PartiallySignedBitcoinTransaction) -> Result { let tx = psbt.internal.lock().unwrap().clone().extract_tx(); - self.get_wallet().broadcast(&tx)?; - let tx_details = self.get_wallet().get_tx(&tx.txid(), true)?; - Ok(Transaction::from(&tx_details.unwrap())) + let txid = self.get_wallet().broadcast(&tx)?; + Ok(txid.to_hex()) } }