From a5919f4ab07af2edeb78d8ec7c0682631140af5c Mon Sep 17 00:00:00 2001 From: Steve Myers Date: Thu, 15 Jul 2021 12:04:03 -0700 Subject: [PATCH] Remove stop_gap param from Blockchain trait setup and sync functions --- CHANGELOG.md | 4 ++++ src/blockchain/any.rs | 20 +++----------------- src/blockchain/compact_filters/mod.rs | 1 - src/blockchain/electrum.rs | 3 +-- src/blockchain/esplora.rs | 7 +++---- src/blockchain/mod.rs | 10 +++------- src/blockchain/rpc.rs | 4 +--- src/blockchain/utils.rs | 3 +-- src/wallet/mod.rs | 16 ++++++---------- src/wallet/verify.rs | 1 - 10 files changed, 22 insertions(+), 47 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 02f66d0b..fbe0c697 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,10 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Removed and replaced `set_single_recipient` with more general `drain_to` and replaced `maintain_single_recipient` with `allow_shrinking`. +### Blockchain + +- Removed `stop_gap` from `Blockchain` trait and added it to only `ElectrumBlockchain` and `EsploraBlockchain` structs + ## [v0.9.0] - [v0.8.0] ### Wallet diff --git a/src/blockchain/any.rs b/src/blockchain/any.rs index 9ab53861..d88c3b8c 100644 --- a/src/blockchain/any.rs +++ b/src/blockchain/any.rs @@ -39,7 +39,7 @@ //! //! # #[cfg(feature = "esplora")] //! # { -//! let esplora_blockchain = EsploraBlockchain::new("...", None); +//! let esplora_blockchain = EsploraBlockchain::new("...", None, 20); //! let wallet_esplora: Wallet = Wallet::new( //! "...", //! None, @@ -126,31 +126,17 @@ impl Blockchain for AnyBlockchain { fn setup( &self, - stop_gap: Option, database: &mut D, progress_update: P, ) -> Result<(), Error> { - maybe_await!(impl_inner_method!( - self, - setup, - stop_gap, - database, - progress_update - )) + maybe_await!(impl_inner_method!(self, setup, database, progress_update)) } fn sync( &self, - stop_gap: Option, database: &mut D, progress_update: P, ) -> Result<(), Error> { - maybe_await!(impl_inner_method!( - self, - sync, - stop_gap, - database, - progress_update - )) + maybe_await!(impl_inner_method!(self, sync, database, progress_update)) } fn get_tx(&self, txid: &Txid) -> Result, Error> { diff --git a/src/blockchain/compact_filters/mod.rs b/src/blockchain/compact_filters/mod.rs index d3819d08..e057d162 100644 --- a/src/blockchain/compact_filters/mod.rs +++ b/src/blockchain/compact_filters/mod.rs @@ -229,7 +229,6 @@ impl Blockchain for CompactFiltersBlockchain { #[allow(clippy::mutex_atomic)] // Mutex is easier to understand than a CAS loop. fn setup( &self, - _stop_gap: Option, // TODO: move to electrum and esplora only database: &mut D, progress_update: P, ) -> Result<(), Error> { diff --git a/src/blockchain/electrum.rs b/src/blockchain/electrum.rs index df9e72b1..53d4dabb 100644 --- a/src/blockchain/electrum.rs +++ b/src/blockchain/electrum.rs @@ -70,12 +70,11 @@ impl Blockchain for ElectrumBlockchain { fn setup( &self, - _stop_gap: Option, database: &mut D, progress_update: P, ) -> Result<(), Error> { self.client - .electrum_like_setup(Some(self.stop_gap), database, progress_update) + .electrum_like_setup(self.stop_gap, database, progress_update) } fn get_tx(&self, txid: &Txid) -> Result, Error> { diff --git a/src/blockchain/esplora.rs b/src/blockchain/esplora.rs index 7de7ad8c..c0a5fc56 100644 --- a/src/blockchain/esplora.rs +++ b/src/blockchain/esplora.rs @@ -18,7 +18,7 @@ //! //! ```no_run //! # use bdk::blockchain::esplora::EsploraBlockchain; -//! let blockchain = EsploraBlockchain::new("https://blockstream.info/testnet/api", None); +//! let blockchain = EsploraBlockchain::new("https://blockstream.info/testnet/api", None, 20); //! # Ok::<(), bdk::Error>(()) //! ``` @@ -102,13 +102,12 @@ impl Blockchain for EsploraBlockchain { fn setup( &self, - stop_gap: Option, database: &mut D, progress_update: P, ) -> Result<(), Error> { maybe_await!(self .url_client - .electrum_like_setup(stop_gap, database, progress_update)) + .electrum_like_setup(self.stop_gap, database, progress_update)) } fn get_tx(&self, txid: &Txid) -> Result, Error> { @@ -429,6 +428,6 @@ impl_error!(bitcoin::hashes::hex::Error, Hex, EsploraError); #[cfg(feature = "test-esplora")] crate::bdk_blockchain_tests! { fn test_instance(test_client: &TestClient) -> EsploraBlockchain { - EsploraBlockchain::new(&format!("http://{}",test_client.electrsd.esplora_url.as_ref().unwrap()), None) + EsploraBlockchain::new(&format!("http://{}",test_client.electrsd.esplora_url.as_ref().unwrap()), None, 20) } } diff --git a/src/blockchain/mod.rs b/src/blockchain/mod.rs index ecd9e6cd..6a382b9a 100644 --- a/src/blockchain/mod.rs +++ b/src/blockchain/mod.rs @@ -93,7 +93,6 @@ pub trait Blockchain { /// [`Blockchain::sync`] defaults to calling this internally if not overridden. fn setup( &self, - stop_gap: Option, database: &mut D, progress_update: P, ) -> Result<(), Error>; @@ -118,11 +117,10 @@ pub trait Blockchain { /// [`BatchOperations::del_utxo`]: crate::database::BatchOperations::del_utxo fn sync( &self, - stop_gap: Option, database: &mut D, progress_update: P, ) -> Result<(), Error> { - maybe_await!(self.setup(stop_gap, database, progress_update)) + maybe_await!(self.setup(database, progress_update)) } /// Fetch a transaction from the blockchain given its txid @@ -218,20 +216,18 @@ impl Blockchain for Arc { fn setup( &self, - stop_gap: Option, database: &mut D, progress_update: P, ) -> Result<(), Error> { - maybe_await!(self.deref().setup(stop_gap, database, progress_update)) + maybe_await!(self.deref().setup(database, progress_update)) } fn sync( &self, - stop_gap: Option, database: &mut D, progress_update: P, ) -> Result<(), Error> { - maybe_await!(self.deref().sync(stop_gap, database, progress_update)) + maybe_await!(self.deref().sync(database, progress_update)) } fn get_tx(&self, txid: &Txid) -> Result, Error> { diff --git a/src/blockchain/rpc.rs b/src/blockchain/rpc.rs index 673d14e7..30f8cf34 100644 --- a/src/blockchain/rpc.rs +++ b/src/blockchain/rpc.rs @@ -106,7 +106,6 @@ impl Blockchain for RpcBlockchain { fn setup( &self, - stop_gap: Option, database: &mut D, progress_update: P, ) -> Result<(), Error> { @@ -150,12 +149,11 @@ impl Blockchain for RpcBlockchain { self.set_node_synced_height(current_height)?; - self.sync(stop_gap, database, progress_update) + self.sync(database, progress_update) } fn sync( &self, - _stop_gap: Option, db: &mut D, _progress_update: P, ) -> Result<(), Error> { diff --git a/src/blockchain/utils.rs b/src/blockchain/utils.rs index 6258a9d3..25778cac 100644 --- a/src/blockchain/utils.rs +++ b/src/blockchain/utils.rs @@ -53,7 +53,7 @@ pub trait ElectrumLikeSync { fn electrum_like_setup( &self, - stop_gap: Option, + stop_gap: usize, db: &mut D, _progress_update: P, ) -> Result<(), Error> { @@ -61,7 +61,6 @@ pub trait ElectrumLikeSync { let start = Instant::new(); debug!("start setup"); - let stop_gap = stop_gap.unwrap_or(20); let chunk_size = stop_gap; let mut history_txs_id = HashSet::new(); diff --git a/src/wallet/mod.rs b/src/wallet/mod.rs index ba0ab8e0..1f29239f 100644 --- a/src/wallet/mod.rs +++ b/src/wallet/mod.rs @@ -1500,17 +1500,13 @@ where // TODO: what if i generate an address first and cache some addresses? // TODO: we should sync if generating an address triggers a new batch to be stored if run_setup { - maybe_await!(self.client.setup( - None, - self.database.borrow_mut().deref_mut(), - progress_update, - ))?; + maybe_await!(self + .client + .setup(self.database.borrow_mut().deref_mut(), progress_update,))?; } else { - maybe_await!(self.client.sync( - None, - self.database.borrow_mut().deref_mut(), - progress_update, - ))?; + maybe_await!(self + .client + .sync(self.database.borrow_mut().deref_mut(), progress_update,))?; } #[cfg(feature = "verify")] diff --git a/src/wallet/verify.rs b/src/wallet/verify.rs index ef92eae7..9b563339 100644 --- a/src/wallet/verify.rs +++ b/src/wallet/verify.rs @@ -124,7 +124,6 @@ mod test { } fn setup( &self, - _stop_gap: Option, _database: &mut D, _progress_update: P, ) -> Result<(), Error> {