From: valued mammal Date: Tue, 22 Oct 2024 13:12:32 +0000 (-0400) Subject: fix(wallet): fix building change signers in `load_with_params` X-Git-Tag: v1.0.0-beta.6~31^2~1 X-Git-Url: http://internal-gitweb-vhost/script/%22https:/struct.EncoderStringWriter.html?a=commitdiff_plain;h=517fb53760626ada00551716fd35dbd84ed6d48e;p=bdk fix(wallet): fix building change signers in `load_with_params` This fixes an issue that prevented change signers from being built when using the `keymap` method on `LoadParams`. Now we always build a `SignersContainer` with the internal keymap whenever a change descriptor is loaded, although the signer may still be empty if neither `keymap` nor `extract_keys` is used. --- diff --git a/crates/wallet/src/wallet/mod.rs b/crates/wallet/src/wallet/mod.rs index 562e684c..58b504dc 100644 --- a/crates/wallet/src/wallet/mod.rs +++ b/crates/wallet/src/wallet/mod.rs @@ -551,7 +551,9 @@ impl Wallet { } let signers = Arc::new(SignersContainer::build(external_keymap, &descriptor, &secp)); - let (mut change_descriptor, mut change_signers) = (None, Arc::new(SignersContainer::new())); + let mut change_descriptor = None; + let mut internal_keymap = params.change_descriptor_keymap; + match (changeset.change_descriptor, params.check_change_descriptor) { // empty signer (None, None) => {} @@ -592,17 +594,23 @@ impl Wallet { expected: Some(exp_desc), })); } - let mut internal_keymap = params.change_descriptor_keymap; if params.extract_keys { internal_keymap.extend(keymap); } - change_signers = - Arc::new(SignersContainer::build(internal_keymap, &desc, &secp)); change_descriptor = Some(desc); } }, } + let change_signers = match change_descriptor { + Some(ref change_descriptor) => Arc::new(SignersContainer::build( + internal_keymap, + change_descriptor, + &secp, + )), + None => Arc::new(SignersContainer::new()), + }; + let index = create_indexer(descriptor, change_descriptor, params.lookahead) .map_err(LoadError::Descriptor)?;