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