]> Untitled Git - bdk/commitdiff
Update crates/electrum to bitcoin 0.30.0
authorDaniela Brozzoni <danielabrozzoni@protonmail.com>
Sat, 24 Jun 2023 16:06:23 +0000 (18:06 +0200)
committerDaniela Brozzoni <danielabrozzoni@protonmail.com>
Thu, 3 Aug 2023 08:59:04 +0000 (10:59 +0200)
crates/electrum/Cargo.toml
crates/electrum/src/electrum_ext.rs

index 827a1327420cb6a1495f693f0274940c7a2e840d..3f955393f08c6a93897b95fc169aa6832206482b 100644 (file)
@@ -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"] }
index 666e06776369955305c8ac233b2d40c4afb30b1f..cf7009df57ae383df8ff4918c0d30adc14525508 100644 (file)
@@ -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<A> {
     fn scan<K: Ord + Clone>(
         &self,
         prev_tip: Option<CheckPoint>,
-        keychain_spks: BTreeMap<K, impl IntoIterator<Item = (u32, Script)>>,
+        keychain_spks: BTreeMap<K, impl IntoIterator<Item = (u32, ScriptBuf)>>,
         txids: impl IntoIterator<Item = Txid>,
         outpoints: impl IntoIterator<Item = OutPoint>,
         stop_gap: usize,
@@ -180,7 +181,7 @@ pub trait ElectrumExt<A> {
     fn scan_without_keychain(
         &self,
         prev_tip: Option<CheckPoint>,
-        misc_spks: impl IntoIterator<Item = Script>,
+        misc_spks: impl IntoIterator<Item = ScriptBuf>,
         txids: impl IntoIterator<Item = Txid>,
         outpoints: impl IntoIterator<Item = OutPoint>,
         batch_size: usize,
@@ -205,7 +206,7 @@ impl ElectrumExt<ConfirmationHeightAnchor> for Client {
     fn scan<K: Ord + Clone>(
         &self,
         prev_tip: Option<CheckPoint>,
-        keychain_spks: BTreeMap<K, impl IntoIterator<Item = (u32, Script)>>,
+        keychain_spks: BTreeMap<K, impl IntoIterator<Item = (u32, ScriptBuf)>>,
         txids: impl IntoIterator<Item = Txid>,
         outpoints: impl IntoIterator<Item = OutPoint>,
         stop_gap: usize,
@@ -215,7 +216,7 @@ impl ElectrumExt<ConfirmationHeightAnchor> for Client {
             .into_iter()
             .map(|(k, s)| (k, s.into_iter()))
             .collect::<BTreeMap<K, _>>();
-        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::<Vec<_>>();
         let outpoints = outpoints.into_iter().collect::<Vec<_>>();
@@ -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<K, I: Ord + Clone>(
     client: &Client,
     cps: &BTreeMap<u32, CheckPoint>,
     update: &mut ElectrumUpdate<K, ConfirmationHeightAnchor>,
-    spks: &mut impl Iterator<Item = (I, Script)>,
+    spks: &mut impl Iterator<Item = (I, ScriptBuf)>,
     stop_gap: usize,
     batch_size: usize,
-) -> Result<BTreeMap<I, (Script, bool)>, Error> {
+) -> Result<BTreeMap<I, (ScriptBuf, bool)>, Error> {
     let mut unused_spk_count = 0_usize;
     let mut scanned_spks = BTreeMap::new();
 
@@ -521,7 +522,8 @@ fn populate_with_spks<K, I: Ord + Clone>(
             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() {