diba-io / bitmask-core

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

Fix Bump Fee #445

Closed crisdut closed 6 months ago

crisdut commented 6 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 6 months ago

Interesting... Good to know.

cryptoquick commented 6 months ago

Thank you for looking into this!