From c134543b94613a699e04b846c217eaaf48637da8 Mon Sep 17 00:00:00 2001 From: Armando Dutra Date: Tue, 17 Jan 2023 16:36:26 -0300 Subject: [PATCH] use address compat to display address --- descriptors/src/derive.rs | 13 ++++++++----- src/bin/btc-cold.rs | 5 ++++- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/descriptors/src/derive.rs b/descriptors/src/derive.rs index 0e7514a..164d769 100644 --- a/descriptors/src/derive.rs +++ b/descriptors/src/derive.rs @@ -10,10 +10,11 @@ // If not, see . use bitcoin::secp256k1::{Secp256k1, Verification}; -use bitcoin::{Address, Network, Script}; +use bitcoin::{Network, Script}; #[cfg(feature = "miniscript")] use bitcoin_hd::{DerivationAccount, DerivePatternError}; use bitcoin_hd::{DeriveError, UnhardenedIndex}; +use bitcoin_scripts::address::AddressCompat; #[cfg(not(feature = "miniscript"))] pub mod miniscript { @@ -59,7 +60,7 @@ pub trait Descriptor { secp: &Secp256k1, pat: impl AsRef<[UnhardenedIndex]>, regtest: bool, - ) -> Result; + ) -> Result; /// Creates scriptPubkey for specific derive pattern in pre-taproot /// descriptors @@ -84,6 +85,7 @@ mod ms { use bitcoin::XOnlyPublicKey; use bitcoin_hd::account::DerivePublicKey; use bitcoin_hd::{DeriveError, SegmentIndexes}; + use bitcoin_scripts::address::{AddressCompat, AddressNetwork}; use miniscript::{translate_hash_fail, ForEachKey, TranslatePk, Translator}; use super::*; @@ -215,10 +217,11 @@ mod ms { secp: &Secp256k1, pat: impl AsRef<[UnhardenedIndex]>, regtest: bool, - ) -> Result { - let network = self.network(regtest)?; + ) -> Result { + let network = AddressNetwork::from(self.network(regtest)?); let spk = Descriptor::script_pubkey_pretr(self, secp, pat)?; - Address::from_script(&spk, network).map_err(|_| DeriveError::NoAddressForDescriptor) + AddressCompat::from_script(&spk.into(), network) + .ok_or(DeriveError::NoAddressForDescriptor) } #[inline] diff --git a/src/bin/btc-cold.rs b/src/bin/btc-cold.rs index 4cbe3f3..4019dda 100644 --- a/src/bin/btc-cold.rs +++ b/src/bin/btc-cold.rs @@ -40,6 +40,7 @@ use bitcoin::{consensus, Address, Network}; use bitcoin_blockchain::locks::LockTime; use bitcoin_hd::DeriveError; use bitcoin_onchain::UtxoResolverError; +use bitcoin_scripts::address::AddressCompat; use bitcoin_scripts::taproot::DfsPath; use bitcoin_scripts::PubkeyScript; use clap::Parser; @@ -526,7 +527,9 @@ impl Args { count += utxo_set.len(); let derive_term = format!("{}/{}", case, index); - if let Ok(address) = Address::from_script(&script, network) { + if let Some(address) = + AddressCompat::from_script(&script.clone().into(), network.into()) + { println!( "\n {} address {}:", derive_term.bright_white(),