|
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;
|
@@ -89,7 +91,19 @@ fn main() -> Result<(), anyhow::Error> {
|
89 | 91 | tx_builder.fee_rate(target_fee_rate);
|
90 | 92 |
|
91 | 93 | let mut psbt = tx_builder.finish()?;
|
92 |
| - let finalized = wallet.sign(&mut psbt, SignOptions::default())?; |
| 94 | + |
| 95 | + let secp = Secp256k1::new(); |
| 96 | + |
| 97 | + let (_, external_keymap) = Descriptor::parse_descriptor(&secp, EXTERNAL_DESC)?; |
| 98 | + let (_, internal_keymap) = Descriptor::parse_descriptor(&secp, INTERNAL_DESC)?; |
| 99 | + let key_map = external_keymap.into_iter().chain(internal_keymap).collect(); |
| 100 | + |
| 101 | + // It's using the signer implementation from `test_utils`, you should implement your own signing |
| 102 | + // implementation for `KeyMap`. |
| 103 | + let signer = bdk_wallet::test_utils::SignerWrapper::new(key_map); |
| 104 | + let _ = psbt.sign(&signer, &secp); |
| 105 | + |
| 106 | + let finalized = wallet.finalize_psbt(&mut psbt, SignOptions::default())?; |
93 | 107 | assert!(finalized);
|
94 | 108 | let original_fee = psbt.fee_amount().unwrap();
|
95 | 109 | let tx_feerate = psbt.fee_rate().unwrap();
|
@@ -124,7 +138,8 @@ fn main() -> Result<(), anyhow::Error> {
|
124 | 138 | let mut builder = wallet.build_fee_bump(txid).expect("failed to bump tx");
|
125 | 139 | builder.fee_rate(feerate);
|
126 | 140 | let mut bumped_psbt = builder.finish().unwrap();
|
127 |
| - let finalize_btx = wallet.sign(&mut bumped_psbt, SignOptions::default())?; |
| 141 | + let _ = bumped_psbt.sign(&signer, &secp); |
| 142 | + let finalize_btx = wallet.finalize_psbt(&mut bumped_psbt, SignOptions::default())?; |
128 | 143 | assert!(finalize_btx);
|
129 | 144 | let new_fee = bumped_psbt.fee_amount().unwrap();
|
130 | 145 | let bumped_tx = bumped_psbt.extract_tx()?;
|
|
0 commit comments