Update crates/electrum to bitcoin 0.30.0
This commit is contained in:
		
							parent
							
								
									f4e3ba3265
								
							
						
					
					
						commit
						91b0f0ba29
					
				| @ -13,4 +13,5 @@ readme = "README.md" | |||||||
| 
 | 
 | ||||||
| [dependencies] | [dependencies] | ||||||
| bdk_chain = { path = "../chain", version = "0.5.0", features = ["serde", "miniscript"] } | 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"] } | ||||||
|  | |||||||
| @ -1,5 +1,5 @@ | |||||||
| use bdk_chain::{ | use bdk_chain::{ | ||||||
|     bitcoin::{hashes::hex::FromHex, OutPoint, Script, Transaction, Txid}, |     bitcoin::{OutPoint, ScriptBuf, Transaction, Txid}, | ||||||
|     keychain::LocalUpdate, |     keychain::LocalUpdate, | ||||||
|     local_chain::{self, CheckPoint}, |     local_chain::{self, CheckPoint}, | ||||||
|     tx_graph::{self, TxGraph}, |     tx_graph::{self, TxGraph}, | ||||||
| @ -9,6 +9,7 @@ use electrum_client::{Client, ElectrumApi, Error, HeaderNotification}; | |||||||
| use std::{ | use std::{ | ||||||
|     collections::{BTreeMap, BTreeSet, HashMap, HashSet}, |     collections::{BTreeMap, BTreeSet, HashMap, HashSet}, | ||||||
|     fmt::Debug, |     fmt::Debug, | ||||||
|  |     str::FromStr, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| /// We assume that a block of this depth and deeper cannot be reorged.
 | /// 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>( |     fn scan<K: Ord + Clone>( | ||||||
|         &self, |         &self, | ||||||
|         prev_tip: Option<CheckPoint>, |         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>, |         txids: impl IntoIterator<Item = Txid>, | ||||||
|         outpoints: impl IntoIterator<Item = OutPoint>, |         outpoints: impl IntoIterator<Item = OutPoint>, | ||||||
|         stop_gap: usize, |         stop_gap: usize, | ||||||
| @ -180,7 +181,7 @@ pub trait ElectrumExt<A> { | |||||||
|     fn scan_without_keychain( |     fn scan_without_keychain( | ||||||
|         &self, |         &self, | ||||||
|         prev_tip: Option<CheckPoint>, |         prev_tip: Option<CheckPoint>, | ||||||
|         misc_spks: impl IntoIterator<Item = Script>, |         misc_spks: impl IntoIterator<Item = ScriptBuf>, | ||||||
|         txids: impl IntoIterator<Item = Txid>, |         txids: impl IntoIterator<Item = Txid>, | ||||||
|         outpoints: impl IntoIterator<Item = OutPoint>, |         outpoints: impl IntoIterator<Item = OutPoint>, | ||||||
|         batch_size: usize, |         batch_size: usize, | ||||||
| @ -205,7 +206,7 @@ impl ElectrumExt<ConfirmationHeightAnchor> for Client { | |||||||
|     fn scan<K: Ord + Clone>( |     fn scan<K: Ord + Clone>( | ||||||
|         &self, |         &self, | ||||||
|         prev_tip: Option<CheckPoint>, |         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>, |         txids: impl IntoIterator<Item = Txid>, | ||||||
|         outpoints: impl IntoIterator<Item = OutPoint>, |         outpoints: impl IntoIterator<Item = OutPoint>, | ||||||
|         stop_gap: usize, |         stop_gap: usize, | ||||||
| @ -215,7 +216,7 @@ impl ElectrumExt<ConfirmationHeightAnchor> for Client { | |||||||
|             .into_iter() |             .into_iter() | ||||||
|             .map(|(k, s)| (k, s.into_iter())) |             .map(|(k, s)| (k, s.into_iter())) | ||||||
|             .collect::<BTreeMap<K, _>>(); |             .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 txids = txids.into_iter().collect::<Vec<_>>(); | ||||||
|         let outpoints = outpoints.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
 |     // transactions residing in the genesis block to have height 0, then interpret a height of 0 as
 | ||||||
|     // unconfirmed for all other transactions.
 |     // unconfirmed for all other transactions.
 | ||||||
|     if txid |     if txid | ||||||
|         == Txid::from_hex("4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b") |         == Txid::from_str("4a5e1e4baab89f3a32518a88c31bc87f618f76673e2cc77ab2127b7afdeda33b") | ||||||
|             .expect("must deserialize genesis coinbase txid") |             .expect("must deserialize genesis coinbase txid") | ||||||
|     { |     { | ||||||
|         let anchor_block = cps.values().next()?.block_id(); |         let anchor_block = cps.values().next()?.block_id(); | ||||||
| @ -506,10 +507,10 @@ fn populate_with_spks<K, I: Ord + Clone>( | |||||||
|     client: &Client, |     client: &Client, | ||||||
|     cps: &BTreeMap<u32, CheckPoint>, |     cps: &BTreeMap<u32, CheckPoint>, | ||||||
|     update: &mut ElectrumUpdate<K, ConfirmationHeightAnchor>, |     update: &mut ElectrumUpdate<K, ConfirmationHeightAnchor>, | ||||||
|     spks: &mut impl Iterator<Item = (I, Script)>, |     spks: &mut impl Iterator<Item = (I, ScriptBuf)>, | ||||||
|     stop_gap: usize, |     stop_gap: usize, | ||||||
|     batch_size: 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 unused_spk_count = 0_usize; | ||||||
|     let mut scanned_spks = BTreeMap::new(); |     let mut scanned_spks = BTreeMap::new(); | ||||||
| 
 | 
 | ||||||
| @ -521,7 +522,8 @@ fn populate_with_spks<K, I: Ord + Clone>( | |||||||
|             return Ok(scanned_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) { |         for ((spk_index, spk), spk_history) in spks.into_iter().zip(spk_histories) { | ||||||
|             if spk_history.is_empty() { |             if spk_history.is_empty() { | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user