|
| 1 | +mod common; |
| 2 | + |
1 | 3 | use bdk_electrum::electrum_client;
|
2 | 4 | use bdk_electrum::BdkElectrumClient;
|
| 5 | +use bdk_wallet::bitcoin::key::Secp256k1; |
3 | 6 | use bdk_wallet::bitcoin::Amount;
|
4 | 7 | use bdk_wallet::bitcoin::FeeRate;
|
5 | 8 | use bdk_wallet::bitcoin::Network;
|
6 | 9 | use bdk_wallet::chain::collections::HashSet;
|
| 10 | +use bdk_wallet::miniscript::Descriptor; |
7 | 11 | use bdk_wallet::psbt::PsbtUtils;
|
8 | 12 | use bdk_wallet::rusqlite::Connection;
|
9 | 13 | use bdk_wallet::Wallet;
|
@@ -89,7 +93,19 @@ fn main() -> Result<(), anyhow::Error> {
|
89 | 93 | tx_builder.fee_rate(target_fee_rate);
|
90 | 94 |
|
91 | 95 | let mut psbt = tx_builder.finish()?;
|
92 |
| - let finalized = wallet.sign(&mut psbt, SignOptions::default())?; |
| 96 | + |
| 97 | + let secp = Secp256k1::new(); |
| 98 | + |
| 99 | + let (_, external_keymap) = Descriptor::parse_descriptor(&secp, EXTERNAL_DESC)?; |
| 100 | + let (_, internal_keymap) = Descriptor::parse_descriptor(&secp, INTERNAL_DESC)?; |
| 101 | + let key_map = external_keymap.into_iter().chain(internal_keymap).collect(); |
| 102 | + |
| 103 | + // Using the signer implementation from the common module. |
| 104 | + // Note: This is temporary until miniscript 12.x is released with native KeyMap signing. |
| 105 | + let signer = common::SignerWrapper::new(key_map); |
| 106 | + let _ = psbt.sign(&signer, &secp); |
| 107 | + |
| 108 | + let finalized = wallet.finalize_psbt(&mut psbt, SignOptions::default())?; |
93 | 109 | assert!(finalized);
|
94 | 110 | let original_fee = psbt.fee_amount().unwrap();
|
95 | 111 | let tx_feerate = psbt.fee_rate().unwrap();
|
@@ -124,7 +140,8 @@ fn main() -> Result<(), anyhow::Error> {
|
124 | 140 | let mut builder = wallet.build_fee_bump(txid).expect("failed to bump tx");
|
125 | 141 | builder.fee_rate(feerate);
|
126 | 142 | let mut bumped_psbt = builder.finish().unwrap();
|
127 |
| - let finalize_btx = wallet.sign(&mut bumped_psbt, SignOptions::default())?; |
| 143 | + let _ = bumped_psbt.sign(&signer, &secp); |
| 144 | + let finalize_btx = wallet.finalize_psbt(&mut bumped_psbt, SignOptions::default())?; |
128 | 145 | assert!(finalize_btx);
|
129 | 146 | let new_fee = bumped_psbt.fee_amount().unwrap();
|
130 | 147 | let bumped_tx = bumped_psbt.extract_tx()?;
|
|
0 commit comments