Bump hwi to 0.4.0

This commit is contained in:
Daniela Brozzoni 2022-12-19 10:50:59 +01:00
parent 634a0575cb
commit 4cad18bbca
No known key found for this signature in database
GPG Key ID: 7DE4F1FDCED0AB87
4 changed files with 26 additions and 18 deletions

View File

@ -31,7 +31,7 @@ async-trait = { version = "0.1", optional = true }
rocksdb = { version = "0.14", default-features = false, features = ["snappy"], optional = true } rocksdb = { version = "0.14", default-features = false, features = ["snappy"], optional = true }
cc = { version = ">=1.0.64", optional = true } cc = { version = ">=1.0.64", optional = true }
socks = { version = "0.3", 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 } bip39 = { version = "1.0.1", optional = true }
bitcoinconsensus = { version = "0.19.0-3", optional = true } bitcoinconsensus = { version = "0.19.0-3", optional = true }

View File

@ -2,6 +2,7 @@ use bdk::bitcoin::{Address, Network};
use bdk::blockchain::{Blockchain, ElectrumBlockchain}; use bdk::blockchain::{Blockchain, ElectrumBlockchain};
use bdk::database::MemoryDatabase; use bdk::database::MemoryDatabase;
use bdk::hwi::{types::HWIChain, HWIClient}; use bdk::hwi::{types::HWIChain, HWIClient};
use bdk::miniscript::{Descriptor, DescriptorPublicKey};
use bdk::signer::SignerOrdering; use bdk::signer::SignerOrdering;
use bdk::wallet::{hardwaresigner::HWISigner, AddressIndex}; use bdk::wallet::{hardwaresigner::HWISigner, AddressIndex};
use bdk::{FeeRate, KeychainKind, SignOptions, SyncOptions, Wallet}; 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..."); println!("Hold tight, I'm connecting to your hardware wallet...");
// Listing all the available hardware wallet devices... // Listing all the available hardware wallet devices...
let devices = HWIClient::enumerate()?; let mut devices = HWIClient::enumerate()?;
let first_device = devices if devices.is_empty() {
.first() panic!("No devices found. Either plug in a hardware wallet, or start a simulator.");
.expect("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 // ...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); println!("Look what I found, a {}!", first_device.model);
// Getting the HW's public descriptors // Getting the HW's public descriptors
let descriptors = client.get_descriptors(None)?; let descriptors = client.get_descriptors::<Descriptor<DescriptorPublicKey>>(None)?;
println!( println!(
"The hardware wallet's descriptor is: {}", "The hardware wallet's descriptor is: {}",
descriptors.receive[0] descriptors.receive[0]
); );
// Creating a custom signer from the device // 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( let mut wallet = Wallet::new(
&descriptors.receive[0], descriptors.receive[0].clone(),
Some(&descriptors.internal[0]), Some(descriptors.internal[0].clone()),
Network::Testnet, Network::Testnet,
MemoryDatabase::default(), MemoryDatabase::default(),
)?; )?;

View File

@ -24,9 +24,12 @@
//! # use std::sync::Arc; //! # use std::sync::Arc;
//! # //! #
//! # fn main() -> Result<(), Box<dyn std::error::Error>> { //! # fn main() -> Result<(), Box<dyn std::error::Error>> {
//! let devices = HWIClient::enumerate()?; //! let mut devices = HWIClient::enumerate()?;
//! let first_device = devices.first().expect("No devices found!"); //! if devices.is_empty() {
//! let custom_signer = HWISigner::from_device(first_device, HWIChain::Test)?; //! 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( //! # let mut wallet = Wallet::new(
//! # "", //! # "",

View File

@ -5546,11 +5546,14 @@ pub(crate) mod test {
use hwi::types::HWIChain; use hwi::types::HWIChain;
use hwi::HWIClient; use hwi::HWIClient;
let devices = HWIClient::enumerate().unwrap(); let mut devices = HWIClient::enumerate().unwrap();
let device = devices.first().expect("No devices found"); if devices.is_empty() {
let client = HWIClient::get_client(device, true, HWIChain::Regtest).unwrap(); panic!("No devices found!");
let descriptors = client.get_descriptors(None).unwrap(); }
let custom_signer = HWISigner::from_device(device, HWIChain::Regtest).unwrap(); 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]); let (mut wallet, _, _) = get_funded_wallet(&descriptors.internal[0]);
wallet.add_signer( wallet.add_signer(