From: valued mammal Date: Thu, 6 Feb 2025 23:07:38 +0000 (-0500) Subject: example_cli: fix collect assets with `for_each_key` X-Git-Tag: wallet-1.2.0~2^2~3 X-Git-Url: http://internal-gitweb-vhost/?a=commitdiff_plain;h=1ab269e54881189b5f149d1941f804d780fd29d7;p=bdk example_cli: fix collect assets with `for_each_key` which allows creating txs for more descriptor types. --- diff --git a/example-crates/example_cli/src/lib.rs b/example-crates/example_cli/src/lib.rs index e965495e..2e567090 100644 --- a/example-crates/example_cli/src/lib.rs +++ b/example-crates/example_cli/src/lib.rs @@ -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( 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)? };