Skip to content

Commit 517fb53

Browse files
committed
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.
1 parent 647d285 commit 517fb53

File tree

1 file changed

+12
-4
lines changed
  • crates/wallet/src/wallet

1 file changed

+12
-4
lines changed

crates/wallet/src/wallet/mod.rs

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -551,7 +551,9 @@ impl Wallet {
551551
}
552552
let signers = Arc::new(SignersContainer::build(external_keymap, &descriptor, &secp));
553553

554-
let (mut change_descriptor, mut change_signers) = (None, Arc::new(SignersContainer::new()));
554+
let mut change_descriptor = None;
555+
let mut internal_keymap = params.change_descriptor_keymap;
556+
555557
match (changeset.change_descriptor, params.check_change_descriptor) {
556558
// empty signer
557559
(None, None) => {}
@@ -592,17 +594,23 @@ impl Wallet {
592594
expected: Some(exp_desc),
593595
}));
594596
}
595-
let mut internal_keymap = params.change_descriptor_keymap;
596597
if params.extract_keys {
597598
internal_keymap.extend(keymap);
598599
}
599-
change_signers =
600-
Arc::new(SignersContainer::build(internal_keymap, &desc, &secp));
601600
change_descriptor = Some(desc);
602601
}
603602
},
604603
}
605604

605+
let change_signers = match change_descriptor {
606+
Some(ref change_descriptor) => Arc::new(SignersContainer::build(
607+
internal_keymap,
608+
change_descriptor,
609+
&secp,
610+
)),
611+
None => Arc::new(SignersContainer::new()),
612+
};
613+
606614
let index = create_indexer(descriptor, change_descriptor, params.lookahead)
607615
.map_err(LoadError::Descriptor)?;
608616

0 commit comments

Comments
 (0)