elements/src/wallet
Andrew Chow e66630cc87
Merge bitcoin/bitcoin#13226: Optimize SelectCoinsBnB by tracking the selection by index rather than by position
9d2005285c doc: Revise comments and whitespace to clarify (Ben Woosley)
def43a4d88 refactor: Rename i to curr_try in SelectCoinsBnB (Ben Woosley)
1dd0923677 refactor: Track BnB selection by index (Ben Woosley)

Pull request description:

  This is prompted by #13167 and presented as a friendly alternative to it.

  IMO you can improve code readability and performance by about 20% by tracking the selected utxos by index, rather than by position. This reduces the storage access complexity from roughly O(utxo_size) to O(selection_size).

  On my machine (median of 5 trials):
  ```
  BnBExhaustion, 5, 650, 2.2564, 0.000672999, 0.000711565, 0.000693112 - master
  BnBExhaustion, 5, 650, 1.76232, 0.000528563, 0.000568806, 0.000539147 - this PR
  ```

ACKs for top commit:
  achow101:
    reACK 9d2005285c
  glozow:
    code review ACK 9d2005285c
  Xekyo:
    reACK 9d2005285c

Tree-SHA512: 453ea11ad58c48928dc76956e3e98916f6924e95510eb02fe89a899ff102fe9cc08a04d557f381ad0218a210275e5383101d971c1ffad38b06b1c57d81144315
2022-03-21 17:44:54 -04:00
..
rpc Merge bitcoin/bitcoin#24505: wallet: Add a deprecation warning for newly created legacy wallets 2022-03-14 08:37:46 +01:00
test doc: Delete old line of code that was commented out 2022-03-16 19:33:52 +00:00
bdb.cpp refactor: replace boost::filesystem with std::filesystem 2022-02-03 18:35:52 +08:00
bdb.h Add src/wallet/* code to wallet:: namespace 2022-01-06 22:14:16 -05: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 Merge bitcoin/bitcoin#13226: Optimize SelectCoinsBnB by tracking the selection by index rather than by position 2022-03-21 17:44:54 -04:00
coinselection.h Add src/wallet/* code to wallet:: namespace 2022-01-06 22:14:16 -05: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 refactor: replace boost::filesystem with std::filesystem 2022-02-03 18:35:52 +08:00
db.h Add src/wallet/* code to wallet:: namespace 2022-01-06 22:14:16 -05:00
dump.cpp refactor: replace boost::filesystem with std::filesystem 2022-02-03 18:35:52 +08:00
dump.h refactor: replace boost::filesystem with std::filesystem 2022-02-03 18:35:52 +08: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 Add src/wallet/* code to wallet:: namespace 2022-01-06 22:14:16 -05: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 Add src/wallet/* code to wallet:: namespace 2022-01-06 22:14:16 -05:00
interfaces.cpp interfaces: Remove unused is_final 2022-01-14 11:28:45 +01:00
ismine.h Add src/wallet/* code to wallet:: namespace 2022-01-06 22:14:16 -05:00
load.cpp Use ArgsManager::GetPathArg() for "-walletdir" option 2022-02-09 19:31:23 +02:00
load.h Add src/wallet/* code to wallet:: namespace 2022-01-06 22:14:16 -05:00
receive.cpp wallet: Avoid dropping confirmed coins 2022-01-25 10:15:12 +01:00
receive.h Add src/wallet/* code to wallet:: namespace 2022-01-06 22:14:16 -05:00
salvage.cpp Add src/wallet/* code to wallet:: namespace 2022-01-06 22:14:16 -05:00
salvage.h Add src/wallet/* code to wallet:: namespace 2022-01-06 22:14:16 -05: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 Merge bitcoin/bitcoin#24225: wallet: Add sanity checks to DiscourageFeeSniping 2022-03-14 10:31:25 +00:00
spend.h Add src/wallet/* code to wallet:: namespace 2022-01-06 22:14:16 -05:00
sqlite.cpp wallet: refactor: dedup sqlite blob binding 2022-03-06 20:43:16 +01:00
sqlite.h Add src/wallet/* code to wallet:: namespace 2022-01-06 22:14:16 -05: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 wallet: Add a deprecation warning for newly created legacy wallets 2022-03-10 07:32:02 -05:00
wallet.h wallet: Allow user specified input size to override 2022-01-24 11:23:31 -05:00
walletdb.cpp Merge bitcoin/bitcoin#23304: wallet: Derive inactive HD chains in additional places 2022-03-02 09:35:07 +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 Add src/wallet/* code to wallet:: namespace 2022-01-06 22:14:16 -05: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