]> Untitled Git - bdk/commitdiff
Bump hwi to 0.4.0
authorDaniela Brozzoni <danielabrozzoni@protonmail.com>
Mon, 19 Dec 2022 09:50:59 +0000 (10:50 +0100)
committerDaniela Brozzoni <danielabrozzoni@protonmail.com>
Mon, 19 Dec 2022 10:18:44 +0000 (11:18 +0100)
Cargo.toml
examples/hardware_signer.rs
src/wallet/hardwaresigner.rs
src/wallet/mod.rs

index 681da7f07f4443f30dfc29505a8a8b240680be99..8892415d3de7fbe46fff37689871d8138f9a1d06 100644 (file)
@@ -31,7 +31,7 @@ async-trait = { version = "0.1", optional = true }
 rocksdb = { version = "0.14", default-features = false, features = ["snappy"], optional = true }
 cc = { version = ">=1.0.64", optional = true }
 socks = { version = "0.3", optional = true }
-hwi = { version = "0.3.0", optional = true }
+hwi = { version = "0.4.0", optional = true, features = [ "use-miniscript"] }
 
 bip39 = { version = "1.0.1", optional = true }
 bitcoinconsensus = { version = "0.19.0-3", optional = true }
index 81343bcf2448d3efd937b073a759099de53dca41..d1c25f1ab89d8a69aa805adb3c2d04a76edde846 100644 (file)
@@ -2,6 +2,7 @@ use bdk::bitcoin::{Address, Network};
 use bdk::blockchain::{Blockchain, ElectrumBlockchain};
 use bdk::database::MemoryDatabase;
 use bdk::hwi::{types::HWIChain, HWIClient};
+use bdk::miniscript::{Descriptor, DescriptorPublicKey};
 use bdk::signer::SignerOrdering;
 use bdk::wallet::{hardwaresigner::HWISigner, AddressIndex};
 use bdk::{FeeRate, KeychainKind, SignOptions, SyncOptions, Wallet};
@@ -23,26 +24,27 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
     println!("Hold tight, I'm connecting to your hardware wallet...");
 
     // Listing all the available hardware wallet devices...
-    let devices = HWIClient::enumerate()?;
-    let first_device = devices
-        .first()
-        .expect("No devices found. Either plug in a hardware wallet, or start a simulator.");
+    let mut devices = HWIClient::enumerate()?;
+    if devices.is_empty() {
+        panic!("No devices found. Either plug in a hardware wallet, or start a simulator.");
+    }
+    let first_device = devices.remove(0)?;
     // ...and creating a client out of the first one
-    let client = HWIClient::get_client(first_device, true, HWIChain::Test)?;
+    let client = HWIClient::get_client(&first_device, true, HWIChain::Test)?;
     println!("Look what I found, a {}!", first_device.model);
 
     // Getting the HW's public descriptors
-    let descriptors = client.get_descriptors(None)?;
+    let descriptors = client.get_descriptors::<Descriptor<DescriptorPublicKey>>(None)?;
     println!(
         "The hardware wallet's descriptor is: {}",
         descriptors.receive[0]
     );
 
     // Creating a custom signer from the device
-    let custom_signer = HWISigner::from_device(first_device, HWIChain::Test)?;
+    let custom_signer = HWISigner::from_device(&first_device, HWIChain::Test)?;
     let mut wallet = Wallet::new(
-        &descriptors.receive[0],
-        Some(&descriptors.internal[0]),
+        descriptors.receive[0].clone(),
+        Some(descriptors.internal[0].clone()),
         Network::Testnet,
         MemoryDatabase::default(),
     )?;
index 58246392b22d4fe17184222208a4e40978300e2a..230cd4cf0380c9def6d591aa55c2354c7bf0749a 100644 (file)
 //! # use std::sync::Arc;
 //! #
 //! # fn main() -> Result<(), Box<dyn std::error::Error>> {
-//! let devices = HWIClient::enumerate()?;
-//! let first_device = devices.first().expect("No devices found!");
-//! let custom_signer = HWISigner::from_device(first_device, HWIChain::Test)?;
+//! let mut devices = HWIClient::enumerate()?;
+//! if devices.is_empty() {
+//!     panic!("No devices found!");
+//! }
+//! let first_device = devices.remove(0)?;
+//! let custom_signer = HWISigner::from_device(&first_device, HWIChain::Test)?;
 //!
 //! # let mut wallet = Wallet::new(
 //! #     "",
index c400c5a4daff781951a3958553f9cc4c6bcb3efa..1a2a4f6a485e38c51c71dc3e5056c7fdf0319138 100644 (file)
@@ -5546,11 +5546,14 @@ pub(crate) mod test {
         use hwi::types::HWIChain;
         use hwi::HWIClient;
 
-        let devices = HWIClient::enumerate().unwrap();
-        let device = devices.first().expect("No devices found");
-        let client = HWIClient::get_client(device, true, HWIChain::Regtest).unwrap();
-        let descriptors = client.get_descriptors(None).unwrap();
-        let custom_signer = HWISigner::from_device(device, HWIChain::Regtest).unwrap();
+        let mut devices = HWIClient::enumerate().unwrap();
+        if devices.is_empty() {
+            panic!("No devices found!");
+        }
+        let device = devices.remove(0).unwrap();
+        let client = HWIClient::get_client(&device, true, HWIChain::Regtest).unwrap();
+        let descriptors = client.get_descriptors::<String>(None).unwrap();
+        let custom_signer = HWISigner::from_device(&device, HWIChain::Regtest).unwrap();
 
         let (mut wallet, _, _) = get_funded_wallet(&descriptors.internal[0]);
         wallet.add_signer(