0
0
Fork 0
mirror of https://github.com/bitcoin/bitcoin.git synced 2025-02-05 10:17:30 -05:00
bitcoin-bitcoin-core/src/wallet
fanquake 260ede1d99
Merge bitcoin/bitcoin#24644: wallet: add tracepoints and algorithm information to coin selection
ab5af9ca72 test: Add test for coinselection tracepoints (Andrew Chow)
ca02b68e8a doc: document coin selection tracepoints (Andrew Chow)
8e3f39e4fa wallet: Add some tracepoints for coin selection (Andrew Chow)
15b58383d0 wallet: compute waste for SelectionResults of preset inputs (Andrew Chow)
912f1ed181 wallet: track which coin selection algorithm produced a SelectionResult (Andrew Chow)

Pull request description:

  Tracepoints can be useful for coin selection as they would allow us to observe what is being selected, selection parameters, and calculation results. So this PR adds 4 new tracepoints:

  1. After `SelectCoins` returns in order to observe the `SelectionResult`
  2. After the first `CreateTransactionInternal` to observe the created transaction
  3. Prior to the second `CreateTransactionInternal` to notify that the optimistic avoid partial spends selection is occurring
  4. After the second `CreateTransactionInternal` to observe the created transaction and inform which solution is being used.

  This PR also adds an algorithm enum to `SelectionResult` so that the first tracepoint will be able to report which algorithm was used to produce that result.

  The primary use case for these tracepoints is in running coin selection simulations. The script I use to run these simulations use these tracepoints in order to gather data on the algorithm used and the calculated waste.

ACKs for top commit:
  jb55:
    crACK ab5af9ca72
  josibake:
    crACK ab5af9ca72
  0xB10C:
    ACK ab5af9ca72. Code reviewed, ran the `interface_usdt_coinselection.py` test, and tested with the above bpftrace script (updated `%d` -> `%ld` where necessary, ty achow101).

Tree-SHA512: a4bf7a910cdf464622f2f3b5d44c15b891f24852df6e7f8c5b177fe3d8aaa4a1164593a24c3960eb22b16544fa7140e5c745345367b9e291b78395084c0ac8ff
2022-04-26 19:16:27 +01:00
..
rpc Merge bitcoin/bitcoin#24977: rpc: Explain active and internal in listdescriptors 2022-04-26 15:09:39 +01:00
test Merge bitcoin/bitcoin#24644: wallet: add tracepoints and algorithm information to coin selection 2022-04-26 19:16:27 +01:00
bdb.cpp scripted-diff: rename BytePtr to AsBytePtr 2022-04-26 09:41:45 +01:00
bdb.h Replace use of ArgsManager with DatabaseOptions 2022-03-16 08:26:28 +01:00
coincontrol.cpp Add src/wallet/* code to wallet:: namespace 2022-01-06 22:14:16 -05:00
coincontrol.h wallet: add input weights to CCoinControl 2022-01-24 11:23:31 -05:00
coinselection.cpp wallet: track which coin selection algorithm produced a SelectionResult 2022-04-14 12:40:36 -04:00
coinselection.h wallet: Add some tracepoints for coin selection 2022-04-14 13:41:36 -04:00
context.cpp Add src/wallet/* code to wallet:: namespace 2022-01-06 22:14:16 -05: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 Add src/wallet/* code to wallet:: namespace 2022-01-06 22:14:16 -05:00
db.cpp Replace use of ArgsManager with DatabaseOptions 2022-03-16 08:26:28 +01:00
db.h Replace use of ArgsManager with DatabaseOptions 2022-03-16 08:26:28 +01:00
dump.cpp Replace use of ArgsManager with DatabaseOptions 2022-03-16 08:26:28 +01:00
dump.h Replace use of ArgsManager with DatabaseOptions 2022-03-16 08:26:28 +01:00
external_signer_scriptpubkeyman.cpp Add src/wallet/* code to wallet:: namespace 2022-01-06 22:14:16 -05:00
external_signer_scriptpubkeyman.h Add src/wallet/* code to wallet:: namespace 2022-01-06 22:14:16 -05:00
feebumper.cpp refactor: fix clang-tidy named args usage 2022-04-04 09:01:19 +01:00
feebumper.h Add src/wallet/* code to wallet:: namespace 2022-01-06 22:14:16 -05:00
fees.cpp Add src/wallet/* code to wallet:: namespace 2022-01-06 22:14:16 -05:00
fees.h Add src/wallet/* code to wallet:: namespace 2022-01-06 22:14:16 -05:00
init.cpp Replace use of ArgsManager with DatabaseOptions 2022-03-16 08:26:28 +01:00
interfaces.cpp Merge bitcoin/bitcoin#24091: wallet: Consolidate CInputCoin and COutput 2022-03-24 20:46:43 +00:00
ismine.h Add src/wallet/* code to wallet:: namespace 2022-01-06 22:14:16 -05:00
load.cpp wallet: Postpone NotifyWalletLoaded() for encrypted wallets 2022-03-30 21:28:53 +02:00
load.h Add src/wallet/* code to wallet:: namespace 2022-01-06 22:14:16 -05:00
receive.cpp refactor: fix clang-tidy named args usage 2022-04-04 09:01:19 +01:00
receive.h Add src/wallet/* code to wallet:: namespace 2022-01-06 22:14:16 -05:00
salvage.cpp Replace use of ArgsManager with DatabaseOptions 2022-03-16 08:26:28 +01:00
salvage.h Replace use of ArgsManager with DatabaseOptions 2022-03-16 08:26:28 +01:00
scriptpubkeyman.cpp Merge bitcoin/bitcoin#23304: wallet: Derive inactive HD chains in additional places 2022-03-02 09:35:07 +01:00
scriptpubkeyman.h Merge bitcoin/bitcoin#23304: wallet: Derive inactive HD chains in additional places 2022-03-02 09:35:07 +01:00
spend.cpp wallet: Add some tracepoints for coin selection 2022-04-14 13:41:36 -04:00
spend.h moveonly: move COutput to coinselection.h 2022-03-23 14:32:07 -04:00
sqlite.cpp scripted-diff: rename BytePtr to AsBytePtr 2022-04-26 09:41:45 +01:00
sqlite.h Replace use of ArgsManager with DatabaseOptions 2022-03-16 08:26:28 +01:00
transaction.cpp Add src/wallet/* code to wallet:: namespace 2022-01-06 22:14:16 -05:00
transaction.h wallet: add GetWitnessHash() 2022-02-01 08:44:51 -03:00
wallet.cpp Don't use zero as null pointer constant (-Wzero-as-null-pointer-constant) 2022-04-26 10:41:45 +01:00
wallet.h wallet, refactor: Add wallet::NotifyWalletLoaded() function 2022-03-29 22:33:58 +02:00
walletdb.cpp refactor: fix clang-tidy named args usage 2022-04-04 09:01:19 +01:00
walletdb.h Merge bitcoin/bitcoin#23304: wallet: Derive inactive HD chains in additional places 2022-03-02 09:35:07 +01:00
wallettool.cpp Replace use of ArgsManager with DatabaseOptions 2022-03-16 08:26:28 +01:00
wallettool.h Add src/wallet/* code to wallet:: namespace 2022-01-06 22:14:16 -05:00
walletutil.cpp Use ArgsManager::GetPathArg() for "-walletdir" option 2022-02-09 19:31:23 +02:00
walletutil.h Add src/wallet/* code to wallet:: namespace 2022-01-06 22:14:16 -05:00