diba-io / bitmask-core

Core functionality for the BitMask wallet
https://bitmask.app
Other
95 stars 21 forks source link

Fix Bump Fee #445

Closed crisdut closed 11 months ago

crisdut commented 11 months ago

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 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.

cryptoquick commented 11 months ago

Interesting... Good to know.

cryptoquick commented 11 months ago

Thank you for looking into this!