|
1 | 1 | use bdk_electrum::electrum_client;
|
2 | 2 | use bdk_electrum::BdkElectrumClient;
|
| 3 | +use bdk_wallet::bitcoin::key::Secp256k1; |
3 | 4 | use bdk_wallet::bitcoin::Amount;
|
4 | 5 | use bdk_wallet::bitcoin::FeeRate;
|
5 | 6 | use bdk_wallet::bitcoin::Network;
|
6 | 7 | use bdk_wallet::chain::collections::HashSet;
|
| 8 | +use bdk_wallet::miniscript::Descriptor; |
7 | 9 | use bdk_wallet::psbt::PsbtUtils;
|
8 | 10 | use bdk_wallet::rusqlite::Connection;
|
9 | 11 | use bdk_wallet::Wallet;
|
@@ -91,7 +93,19 @@ fn main() -> Result<(), anyhow::Error> {
|
91 | 93 | tx_builder.fee_rate(target_fee_rate);
|
92 | 94 |
|
93 | 95 | let mut psbt = tx_builder.finish()?;
|
94 |
| - 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 | + // It's using the signer implementation from `test_utils`, you should implement your own signing |
| 104 | + // implementation for `KeyMap`. |
| 105 | + let signer = bdk_wallet::test_utils::SignerWrapper::new(key_map); |
| 106 | + let _ = psbt.sign(&signer, &secp); |
| 107 | + |
| 108 | + let finalized = wallet.finalize_psbt(&mut psbt, SignOptions::default())?; |
95 | 109 | assert!(finalized);
|
96 | 110 | let original_fee = psbt.fee_amount().unwrap();
|
97 | 111 | let tx_feerate = psbt.fee_rate().unwrap();
|
@@ -126,7 +140,8 @@ fn main() -> Result<(), anyhow::Error> {
|
126 | 140 | let mut builder = wallet.build_fee_bump(txid).expect("failed to bump tx");
|
127 | 141 | builder.fee_rate(feerate);
|
128 | 142 | let mut bumped_psbt = builder.finish().unwrap();
|
129 |
| - 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())?; |
130 | 145 | assert!(finalize_btx);
|
131 | 146 | let new_fee = bumped_psbt.fee_amount().unwrap();
|
132 | 147 | let bumped_tx = bumped_psbt.extract_tx()?;
|
|
0 commit comments