|
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