]> Untitled Git - bdk/commitdiff
example_cli: fix collect assets with `for_each_key`
authorvalued mammal <valuedmammal@protonmail.com>
Thu, 6 Feb 2025 23:07:38 +0000 (18:07 -0500)
committervalued mammal <valuedmammal@protonmail.com>
Thu, 20 Mar 2025 17:24:31 +0000 (13:24 -0400)
which allows creating txs for more descriptor types.

example-crates/example_cli/src/lib.rs

index e965495e05562a6dd0b57dd9c151e7179abc82cd..2e567090754959787fb966fc06e4c4dcc180054f 100644 (file)
@@ -17,7 +17,7 @@ use bdk_chain::miniscript::{
     descriptor::{DescriptorSecretKey, SinglePubKey},
     plan::{Assets, Plan},
     psbt::PsbtExt,
-    Descriptor, DescriptorPublicKey,
+    Descriptor, DescriptorPublicKey, ForEachKey,
 };
 use bdk_chain::ConfirmationBlockTime;
 use bdk_chain::{
@@ -596,24 +596,20 @@ pub fn handle_commands<CS: clap::Subcommand, S: clap::Args>(
                     let chain = chain.lock().unwrap();
 
                     // collect assets we can sign for
-                    let mut assets = Assets::new();
+                    let mut pks = vec![];
+                    for (_, desc) in graph.index.keychains() {
+                        desc.for_each_key(|k| {
+                            pks.push(k.clone());
+                            true
+                        });
+                    }
+                    let mut assets = Assets::new().add(pks);
                     if let Some(n) = after {
                         assets = assets.after(absolute::LockTime::from_consensus(n));
                     }
                     if let Some(n) = older {
                         assets = assets.older(relative::LockTime::from_consensus(n)?);
                     }
-                    for (_, desc) in graph.index.keychains() {
-                        match desc {
-                            Descriptor::Wpkh(wpkh) => {
-                                assets = assets.add(wpkh.clone().into_inner());
-                            }
-                            Descriptor::Tr(tr) => {
-                                assets = assets.add(tr.internal_key().clone());
-                            }
-                            _ => bail!("unsupported descriptor type"),
-                        }
-                    }
 
                     create_tx(&mut graph, &*chain, &assets, coin_select, address, value)?
                 };