From 8fca9d0ea5888daa8f009a96e2008e07e09d2c36 Mon Sep 17 00:00:00 2001 From: Armando Dutra Date: Fri, 6 Jan 2023 18:39:43 -0300 Subject: [PATCH] use address compat to display address --- descriptors/src/derive.rs | 14 ++++++++++---- src/bin/btc-cold.rs | 5 ++++- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/descriptors/src/derive.rs b/descriptors/src/derive.rs index 0e7514a..95ab745 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,14 @@ mod ms { secp: &Secp256k1, pat: impl AsRef<[UnhardenedIndex]>, regtest: bool, - ) -> Result { + ) -> Result { let network = self.network(regtest)?; + let network = AddressNetwork::from(network); let spk = Descriptor::script_pubkey_pretr(self, secp, pat)?; - Address::from_script(&spk, network).map_err(|_| DeriveError::NoAddressForDescriptor) + match AddressCompat::from_script(&spk.into(), network) { + Some(address) => Ok(address), + _ => Err(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(),