After investigating the error in create_bdk_rbf_transaction, I noticed the strange behavior in the BDK rbf method. When we create a transaction builder from the Wallet::build_fee_bump method with descriptor and change_descriptor, the BDK gets all outputs recipients, including "final change output", and this avoids BDK apply replace by fee policy.
For example,
Suppose you have 100.000 sats and create a new transaction, sending 10.000 sats to the address; the BDK generates the following transaction:
In (1): 100.000
out (1): 10.000
out (2): 98.000
fee: 1.000
When we try to send a new transaction with descriptor and change_descriptor, the BDK retrieves both outs instead of only the first out (10.000 sats). Then, BDK raises an inflation exception.
Description
After investigating the error in
create_bdk_rbf_transaction
, I noticed the strange behavior in the BDK rbf method. When we create a transaction builder from theWallet::build_fee_bump
method with descriptor and change_descriptor, the BDK gets all outputs recipients, including "final change output", and this avoids BDK apply replace by fee policy.For example, Suppose you have 100.000 sats and create a new transaction, sending 10.000 sats to the address; the BDK generates the following transaction:
In (1): 100.000 out (1): 10.000 out (2): 98.000
fee: 1.000
When we try to send a new transaction with descriptor and change_descriptor, the BDK retrieves both outs instead of only the first out (10.000 sats). Then, BDK raises an inflation exception.