feat: add broadcast method on electrum client

This commit is contained in:
thunderbiscuit committed 2024-05-16 10:17:51 -04:00
1 parent 1913c45ef9
commit 4aec4b0434
2 files changed
+14 -1

No files matched your search

+3
View File
@@ -501,6 +501,9 @@ interface ElectrumClient {
[Throws=ElectrumClientError]
Update sync(SyncRequest sync_request, u64 batch_size, boolean fetch_prev_txouts);
[Throws=ElectrumClientError]
string broadcast([ByRef] Transaction transaction);
};
// ------------------------------------------------------------------------
+11 -1
View File
@@ -3,14 +3,16 @@ use crate::types::{FullScanRequest, SyncRequest};
use crate::wallet::Update;
use std::collections::BTreeMap;
use bdk::bitcoin::Transaction as BdkTransaction;
use bdk::chain::spk_client::FullScanRequest as BdkFullScanRequest;
use bdk::chain::spk_client::FullScanResult as BdkFullScanResult;
use bdk::chain::spk_client::SyncRequest as BdkSyncRequest;
use bdk::chain::spk_client::SyncResult as BdkSyncResult;
use bdk::KeychainKind;
use bdk_electrum::electrum_client::Client as BdkBlockingClient;
use bdk_electrum::electrum_client::{Client as BdkBlockingClient, ElectrumApi};
use bdk_electrum::{ElectrumExt, ElectrumFullScanResult, ElectrumSyncResult};
use crate::bitcoin::Transaction;
use std::sync::Arc;
pub struct ElectrumClient(BdkBlockingClient);
@@ -82,4 +84,12 @@ impl ElectrumClient {
Ok(Arc::new(Update(update)))
}
pub fn broadcast(&self, transaction: &Transaction) -> Result<String, ElectrumClientError> {
let bdk_transaction: BdkTransaction = transaction.into();
self.0
.transaction_broadcast(&bdk_transaction)
.map_err(ElectrumClientError::from)
.map(|txid| txid.to_string())
}
}