diff --git a/crates/electrum/Cargo.toml b/crates/electrum/Cargo.toml index 827a1327..3f955393 100644 --- a/crates/electrum/Cargo.toml +++ b/crates/electrum/Cargo.toml @@ -13,4 +13,5 @@ readme = "README.md" [dependencies] bdk_chain = { path = "../chain", version = "0.5.0", features = ["serde", "miniscript"] } -electrum-client = { version = "0.12" } +electrum-client = { version = "0.17" } +#rustls = { version = "=0.21.1", optional = true, features = ["dangerous_configuration"] } diff --git a/crates/electrum/src/electrum_ext.rs b/crates/electrum/src/electrum_ext.rs index 666e0677..cf7009df 100644 --- a/crates/electrum/src/electrum_ext.rs +++ b/crates/electrum/src/electrum_ext.rs @@ -1,5 +1,5 @@ use bdk_chain::{ - bitcoin::{hashes::hex::FromHex, OutPoint, Script, Transaction, Txid}, + bitcoin::{OutPoint, ScriptBuf, Transaction, Txid}, keychain::LocalUpdate, local_chain::{self, CheckPoint}, tx_graph::{self, TxGraph}, @@ -9,6 +9,7 @@ use electrum_client::{Client, ElectrumApi, Error, HeaderNotification}; use std::{ collections::{BTreeMap, BTreeSet, HashMap, HashSet}, fmt::Debug, + str::FromStr, }; /// We assume that a block of this depth and deeper cannot be reorged. @@ -167,7 +168,7 @@ pub trait ElectrumExt { fn scan( &self, prev_tip: Option, - keychain_spks: BTreeMap>, + keychain_spks: BTreeMap>, txids: impl IntoIterator, outpoints: impl IntoIterator, stop_gap: usize, @@ -180,7 +181,7 @@ pub trait ElectrumExt { fn scan_without_keychain( &self, prev_tip: Option, - misc_spks: impl IntoIterator, + misc_spks: impl IntoIterator, txids: impl IntoIterator, outpoints: impl IntoIterator, batch_size: usize, @@ -205,7 +206,7 @@ impl ElectrumExt for Client { fn scan( &self, prev_tip: Option, - keychain_spks: BTreeMap>, + keychain_spks: BTreeMap>, txids: impl IntoIterator, outpoints: impl IntoIterator, stop_gap: usize, @@ -215,7 +216,7 @@ impl ElectrumExt for Client { .into_iter() .map(|(k, s)| (k, s.into_iter())) .collect::>(); - let mut scanned_spks = BTreeMap::<(K, u32), (Script, bool)>::new(); + let mut scanned_spks = BTreeMap::<(K, u32), (ScriptBuf, bool)>::new(); let txids = txids.into_iter().collect::>(); let outpoints = outpoints.into_iter().collect::>(); @@ -375,7 +376,7 @@ fn determine_tx_anchor( // transactions residing in the genesis block to have height 0, then interpret a height of 0 as // unconfirmed for all other transactions. if txid - == Txid::from_hex("4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b") + == Txid::from_str("4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b") .expect("must deserialize genesis coinbase txid") { let anchor_block = cps.values().next()?.block_id(); @@ -506,10 +507,10 @@ fn populate_with_spks( client: &Client, cps: &BTreeMap, update: &mut ElectrumUpdate, - spks: &mut impl Iterator, + spks: &mut impl Iterator, stop_gap: usize, batch_size: usize, -) -> Result, Error> { +) -> Result, Error> { let mut unused_spk_count = 0_usize; let mut scanned_spks = BTreeMap::new(); @@ -521,7 +522,8 @@ fn populate_with_spks( return Ok(scanned_spks); } - let spk_histories = client.batch_script_get_history(spks.iter().map(|(_, s)| s))?; + let spk_histories = + client.batch_script_get_history(spks.iter().map(|(_, s)| s.as_script()))?; for ((spk_index, spk), spk_history) in spks.into_iter().zip(spk_histories) { if spk_history.is_empty() {