0
0
Fork 0
mirror of https://github.com/bitcoin/bitcoin.git synced 2025-02-20 12:12:41 -05:00
bitcoin-bitcoin-core/src/wallet
fanquake 90bfa9d2d7
Merge bitcoin/bitcoin#27308: bumpfee: avoid making bumped transactions with too low fee when replacing outputs
d52fa1b0a5 tests: Make sure that bumpfee feerate checks work when replacing outputs (Andrew Chow)
be177c15a4 bumpfee: Check the correct feerate when replacing outputs (Andrew Chow)

Pull request description:

  When replacing the outputs of a transaction during `bumpfee`, it is possible to accidentally create a transaction that will not be accepted into the mempool as it does not meet the incremental relay fee requirements. This occurs because the size estimation used for checking the provided feerate does not account for the replaced outputs; it instead uses the original outputs. When the replaced outputs is significantly different from the original, there can be a large difference in estimated transaction sizes that can make a transaction miss the absolute fee requirements for the incremental relay fee. Unfortunately we do not currently inform the user when the bumped transaction fails to relay, so they could use `bumpfee` and think the transaction has been bumped when it actually has not.

  This issue is resolved by replacing the outputs before doing the size estimation, and also updating the feerate checker to use the actual fee values when calculating the required minimum fee.

  Also added a test for this scenario.

ACKs for top commit:
  ishaanam:
    reACK d52fa1b0a5
  Xekyo:
    reACK d52fa1b0a5

Tree-SHA512: d18301b587465322dd3fb1bb86496c3675265a56072047576e2baa5cf907dd3b54778f30721f662f0c235709a5568427c18542eb7efbfb6fdd9f481fe676c66b
2023-04-15 12:55:10 +01:00
..
rpc Merge bitcoin/bitcoin#27279: Add "warnings", deprecate "warning" in {create,load,unload,restore}wallet 2023-04-12 13:09:23 -04:00
test wallet: Add wallet/types.h for simple public enum and struct types 2023-04-11 15:52:25 -04:00
bdb.cpp refactor: don't avoid sys/types.h on when building for Windows 2023-04-03 14:44:48 +01:00
bdb.h refactor: Move fs.* to util/fs.* 2023-03-23 12:55:18 +01:00
coincontrol.cpp Add src/wallet/* code to wallet:: namespace 2022-01-06 22:14:16 -05:00
coincontrol.h scripted-diff: Bump copyright headers 2022-12-24 23:49:50 +00:00
coinselection.cpp wallet: remove unused methods 2023-03-08 10:32:30 -03:00
coinselection.h wallet: remove coin control arg from AutomaticCoinSelection 2023-03-08 19:03:40 -03:00
context.cpp scripted-diff: Bump copyright headers 2022-12-24 23:49:50 +00:00
context.h Add src/wallet/* code to wallet:: namespace 2022-01-06 22:14:16 -05:00
crypter.cpp Add src/wallet/* code to wallet:: namespace 2022-01-06 22:14:16 -05:00
crypter.h scripted-diff: Bump copyright headers 2022-12-24 23:49:50 +00:00
db.cpp refactor: Move fs.* to util/fs.* 2023-03-23 12:55:18 +01:00
db.h refactor: Move fs.* to util/fs.* 2023-03-23 12:55:18 +01:00
dump.cpp refactor: Move fs.* to util/fs.* 2023-03-23 12:55:18 +01:00
dump.h refactor: Move fs.* to util/fs.* 2023-03-23 12:55:18 +01:00
external_signer_scriptpubkeyman.cpp scripted-diff: Bump copyright headers 2022-12-24 23:49:50 +00:00
external_signer_scriptpubkeyman.h wallet: set keypool_size instead of access global args manager 2023-02-15 15:49:44 -03:00
feebumper.cpp bumpfee: Check the correct feerate when replacing outputs 2023-04-10 09:56:25 -04:00
feebumper.h wallet: add outputs arguments to bumpfee and psbtbumpfee 2023-01-17 13:28:53 +02:00
fees.cpp scripted-diff: Bump copyright headers 2022-12-24 23:49:50 +00:00
fees.h Add src/wallet/* code to wallet:: namespace 2022-01-06 22:14:16 -05:00
init.cpp Remove -sysperms option 2023-02-05 08:09:16 +00:00
interfaces.cpp wallet: Replace use of purpose strings with an enum 2023-04-11 15:55:31 -04:00
load.cpp refactor: Move fs.* to util/fs.* 2023-03-23 12:55:18 +01:00
load.h scripted-diff: Bump copyright headers 2022-12-24 23:49:50 +00:00
receive.cpp scripted-diff: Bump copyright headers 2022-12-24 23:49:50 +00:00
receive.h wallet: Add wallet/types.h for simple public enum and struct types 2023-04-11 15:52:25 -04:00
salvage.cpp refactor: Move fs.* to util/fs.* 2023-03-23 12:55:18 +01:00
salvage.h refactor: Move fs.* to util/fs.* 2023-03-23 12:55:18 +01:00
scriptpubkeyman.cpp Merge bitcoin/bitcoin#27274: refactor: remove unused param from legacy pubkey interface 2023-03-31 17:03:32 +01:00
scriptpubkeyman.h wallet: Add wallet/types.h for simple public enum and struct types 2023-04-11 15:52:25 -04:00
spend.cpp gui: bugfix, getAvailableBalance skips selected coins 2023-04-03 17:23:42 -03:00
spend.h gui: bugfix, getAvailableBalance skips selected coins 2023-04-03 17:23:42 -03:00
sqlite.cpp refactor: Extract util/fs_helpers from util/system 2023-03-23 12:52:00 +01:00
sqlite.h Merge bitcoin/bitcoin#25491: wallet: use Mutex for g_sqlite_mutex instead of GlobalMutex 2023-03-06 10:50:10 -05:00
transaction.cpp Add src/wallet/* code to wallet:: namespace 2022-01-06 22:14:16 -05:00
transaction.h wallet: Add wallet/types.h for simple public enum and struct types 2023-04-11 15:52:25 -04:00
types.h wallet: add AddressPurpose enum to replace string values 2023-04-11 15:52:25 -04:00
wallet.cpp Merge bitcoin/bitcoin#27279: Add "warnings", deprecate "warning" in {create,load,unload,restore}wallet 2023-04-12 13:09:23 -04:00
wallet.h Merge bitcoin/bitcoin#27279: Add "warnings", deprecate "warning" in {create,load,unload,restore}wallet 2023-04-12 13:09:23 -04:00
walletdb.cpp wallet: Replace use of purpose strings with an enum 2023-04-11 15:55:31 -04:00
walletdb.h Use DataStream where possible 2023-01-26 10:44:05 +01:00
wallettool.cpp refactor: Move fs.* to util/fs.* 2023-03-23 12:55:18 +01:00
wallettool.h Add src/wallet/* code to wallet:: namespace 2022-01-06 22:14:16 -05:00
walletutil.cpp scripted-diff: Bump copyright headers 2022-12-24 23:49:50 +00:00
walletutil.h refactor: Move fs.* to util/fs.* 2023-03-23 12:55:18 +01:00