. #27643

pull GO-Institute wants to merge 2078 commits into bitcoin:24.x from bitcoin:master changing 1417 files +92461 −31225
  1. GO-Institute commented at 3:16 pm on May 12, 2023: none
  2. coin selection: knapsack, select closest UTXO above target if result exceeds max tx size
    The simplest scenario where this is useful is on the 'check_max_weight' unit test
    already:
    
    We create 1515 UTXOs with 0.033 BTC each, and 1 UTXO with 50 BTC. Then perform
    Coin Selection.
    
    As the selection of the 1515 small UTXOs exceeds the max allowed tx size, the
    expectation here is to receive a selection result that only contain the big
    UTXO (which is not happening for the reasons stated below).
    
    As knapsack returns a result that exceeds the max allowed transaction size, we
    fallback to SRD, which selects coins randomly up until the target is met. So
    we end up with a selection result with lot more coins than what is needed.
    6107ec2229
  3. coin selection: heap-ify SRD, don't return selection if exceeds max tx weight
    Uses a min-effective-value heap, so we can remove the least valuable input/s
    while the selected weight exceeds the maximum allowed weight.
    
    Co-authored-by: Murch <murch@murch.one>
    9d9689e5a6
  4. test: coin selection, add coverage for SRD d3a1c098e4
  5. coin selection: BnB, don't return selection if exceeds max allowed tx weight 2d112584e3
  6. wallet: clean post coin selection max weight filter
    Now the coin selection algorithms contemplate the
    maximum allowed weight internally and return
    std::nullopt if their result exceeds it.
    5a2bc45ee0
  7. test: coverage for bnb max weight
    Basic positive and negative scenarios
    ba9431c505
  8. refactor: coinselector_tests, unify wallet creation code
    same lines of code repeated across the entire file over and over.
    25ab14712b
  9. Merge bitcoin/bitcoin#27404: ci: use clang-16 in tidy task
    a56c96507a9e943bbcd7e126bc827de9495f0ebd ci: use clang-16 in tidy task (fanquake)
    
    Pull request description:
    
      Follow up to https://github.com/bitcoin/bitcoin/pull/27311#issuecomment-1481020371, as IWYU now has a [clang_16 branch](https://github.com/include-what-you-use/include-what-you-use/tree/clang_16).
    
      This also removes some workarounds for (now fixed) clang-tidy issues, and simplifies the IWYU install steps.
    
    ACKs for top commit:
      MarcoFalke:
        lgtm ACK a56c96507a9e943bbcd7e126bc827de9495f0ebd
      josibake:
        ACK https://github.com/bitcoin/bitcoin/pull/27404/commits/a56c96507a9e943bbcd7e126bc827de9495f0ebd
      hebasto:
        ACK a56c96507a9e943bbcd7e126bc827de9495f0ebd
    
    Tree-SHA512: 5bbec6cc196c3305302895c77986f3695fc6f4024363ee57503654d54e0ebf108719a7a1d7908817f84115dcaa13377493eb764b00bdf574f1290c73251426fa
    04595484d9
  10. Fixes compile errors in MSVC build #27332
    + Pins the compatible version of libevent in vcpkg
    6a9a4d13b2
  11. Merge bitcoin/bitcoin#27335: Fixes compile errors in MSVC build #27332
    6a9a4d13b2b22632e0acd4f86f7bac238294ba42 Fixes compile errors in MSVC build #27332 (Ethan Heilman)
    
    Pull request description:
    
      This PR is designed to address the issue https://github.com/bitcoin/bitcoin/issues/27332. The MSVC build is failing because of two bugs in how the build is configured.
    
      The issue
      ====
    
      When running `msbuild build_msvc\bitcoin.sln -property:Configuration=Release -maxCpuCount -verbosity:minima`l the build fails with following two errors.
    
      * `C:\Users\e0\Documents\GitHub\bitcoin\src\httpserver.cpp(637,9): error C2664: 'void evhttp_connection_get_peer(evhttp_connection *,const char **,uint16_t *)': cannot convert argument 2 from 'char **' to 'const char **' [C:\Users\e0\Documents\GitHub\bitcoin\build_msvc\libbitcoin_node\libbitcoin_node .vcxproj]`
    
      This error is occurs because bitcoin is using the wrong function signature for `evhttp_connection_get_peer` in libevent. In automake builds, configure.ac inspects the version of libevent it is building against and then defines `HAVE_EVHTTP_CONNECTION_GET_PEER_CONST_CHAR` to flag the source code to use the correct signature. In MSVC build there does not appear to be a mechanism to do this. So it uses the wrong signature and fails. See the PR https://github.com/bitcoin/bitcoin/pull/23607 for when this logic was added to automake builds.
    
      * `event.lib(evutil_rand.c.obj) : error LNK2019: unresolved external symbol BCryptGenRandom referenced in function arc4_seed [C:\Users\e0\Documents\GitHub\bitcoin\build_msvc\bitcoin-cli\bitcoin-cli.vcxproj]
      C:\Users\e0\Documents\GitHub\bitcoin\build_msvc\x64\Release\bitcoin-cli.exe : fatal error LNK1120: 1 unresolved externals [C:\Users\e0\Documents\GitHub\bitcoin\build_msvc\bitcoin-cli\bitcoin-cli.vcxproj]`
    
      This error is caused by msbuild not being able to find the library bcrypt.lib because it has not been configured to use bcrypt.lib.
    
      Fixes
      ====
    
      While for automake builds a macro is being define to configure the current function signature for `evhttp_connection_get_peer` in libevent, this macro is not being defined for MSVC builds.
    
      1.  This PR addresses this issue by assuming more recent version of libevent is installed and always defining `HAVE_EVHTTP_CONNECTION_GET_PEER_CONST_CHAR`. This logic is more brittle the automake logic, but someone following the MSVC build instructions should only get the more recent version of libevent.
    
      2. This PR fixes the bcrypt.lib errors this by setting this library as a dependency in build_msvc/common.init.vcxproj.in.
    
    ACKs for top commit:
      hebasto:
        re-ACK 6a9a4d13b2b22632e0acd4f86f7bac238294ba42
    
    Tree-SHA512: 69d2cb6a62ecca976540a39e5f83a4e5386d920a564761cedc5127d82e5fa66ced7fcde3e5e5eb3bd6cde1cc78f843e94aa2789f02bd3e3414118030017d0387
    06fb95b51b
  12. Merge bitcoin/bitcoin#27423: ci: fix git dubious permissions error
    ed4a8339b8fe796b4668e206d7fb9c2b120f8eb2 ci: fix git dubious permissions error (josibake)
    
    Pull request description:
    
      fixes https://github.com/bitcoin/bitcoin/pull/27376#issuecomment-1496449588
    
      this appears to be caused by a more recent version of git being sensitive to mismatched permissions on directories. we didn't notice this before because we were using two separate user accounts to fix up dir permissions in the container , but the second account was removed in #27376
    
      there might be a more elegant way to do this, but this does the trick and seems to be the way others are fixing this issue around the internets.
    
    ACKs for top commit:
      RandyMcMillan:
        ACK ed4a833
      hebasto:
        re-ACK ed4a8339b8fe796b4668e206d7fb9c2b120f8eb2
    
    Tree-SHA512: dad467deca101a24f3ed34b3e26a1db5099a5bd5c3e9c9a22771c59848f7d7e7843c7386348e6fdf86d5a556e4706e5e20005d7a6637193e1c8aef7a5ff7fb19
    5a8bd45056
  13. ci: Run base install at most once
    This should avoid errors when running it twice. For example, network
    errors on the second invocation of 'apt update'; or unguarded
    modifications such as APPEND_APT_SOURCES_LIST, which will append the
    same string repeatedly.
    
    The base install may be run twice in Cirrus CI with dockerfiles, or
    locally when running twice with DANGER_RUN_CI_ON_HOST specified.
    fa5af94de6
  14. p2p: skip netgroup diversity of new connections for tor/i2p/cjdns networks
    Co-authored-by: Suhas Daftuar <sdaftuar@gmail.com>
    b5585ba5f9
  15. verifybinaries: move all current examples to the pub subcommand c44323a717
  16. verifybinaries: remove awkward bitcoin-core prefix handling 6d11830265
  17. verifybinaries: README cleanups
    - Use correct name for verify.py
    - Add usage examples for verifybinaries bin
    - Document proper use of new cleanup option
    - Fixup broken example
    46c73b57c6
  18. verifybinaries: Don't delete shasums file
    It may be useful for local validation.
    5668c6473a
  19. verifybinaries: remove unreachable code 4e0396835d
  20. verifybinaries: use recommended keyserver by default 8cdadd1729
  21. verifybinaries: fix OS download filter
    Co-authored-by: Reproducibility Matters <seb.kung@gmail.com>
    4b23b488d2
  22. verifybinaries: catch the correct exception 8a65e5145c
  23. verifybinaries: fix argument type error pointed out by mypy 754fb6bb81
  24. Merge bitcoin/bitcoin#27429: ci: Run base install at most once
    fa5af94de6aa4643b30ab526b6249340bff34d43 ci: Run base install at most once (MarcoFalke)
    
    Pull request description:
    
      This should avoid errors when running it twice. For example, network errors on the second invocation of 'apt update'; or unguarded modifications such as APPEND_APT_SOURCES_LIST, which will append the same string repeatedly.
    
      The base install may be run twice in Cirrus CI with dockerfiles, or locally when running twice with DANGER_RUN_CI_ON_HOST specified.
    
    ACKs for top commit:
      josibake:
        utACK https://github.com/bitcoin/bitcoin/pull/27429/commits/fa5af94de6aa4643b30ab526b6249340bff34d43
    
    Tree-SHA512: 020ba747e282076ddf10547025bb576ce626378d9f8313e09b1a5f99af1cf8237e44957aa4a0b8d64015bc730a090c83af0b3908a8eda15d3fb1ca7dae69dd7c
    d6c2a46a4b
  25. Merge bitcoin/bitcoin#27358: contrib: allow multi-sig binary verification v2
    754fb6bb8125317575edec7c20b5617ad27a9bdd verifybinaries: fix argument type error pointed out by mypy (Cory Fields)
    8a65e5145c4d128bb6c30c94e68434dd482db489 verifybinaries: catch the correct exception (Cory Fields)
    4b23b488d2c5662215d78e4963ef5a2b86b4e25b verifybinaries: fix OS download filter (Cory Fields)
    8cdadd17297e5f4487692eae88b1e60a42c8c4b2 verifybinaries: use recommended keyserver by default (Cory Fields)
    4e0396835dd933a28446844da294040345f2e6ad verifybinaries: remove unreachable code (Cory Fields)
    5668c6473a01528ac7d66b325b18b1cd2bd93063 verifybinaries: Don't delete shasums file (Cory Fields)
    46c73b57c69933d7eb52e28595609e793e8eef6e verifybinaries: README cleanups (Cory Fields)
    6d118302654481927e864a428950960e26eb7f4a verifybinaries: remove awkward bitcoin-core prefix handling (Cory Fields)
    c44323a71705b6df9aafe90df24072e735a5c2ff verifybinaries: move all current examples to the pub subcommand (Cory Fields)
    7a6e7ffd066a42c5fbb7d69effbe074fb982936b contrib: Use machine parseable GPG output in verifybinaries (Andrew Chow)
    6b2cebfa2f1526f7eae31eb645c71712f0a69e97 contrib: Add verifybinaries command for specifying files to verify (Andrew Chow)
    e4d577822835d4866e2ad046f23ab411b2910d59 contrib: Specify to GPG the SHA256SUMS file that is detached signed (Andrew Chow)
    17575c0efa960ffb765392e3565b3861846f398e contrib: Refactor verifbinaries to support subcommands (Andrew Chow)
    37c9fb7a59a3179b90ed1deaebaabb539976504b contrib: verifybinaries: allow multisig verification (James O'Beirne)
    
    Pull request description:
    
      Following up on #23020 from jamesob with achow101's additional features on top.
    
      Both mentioned that they will be away for the next few weeks, so this is intended to keep review going.
    
      All credit to the jamesob and achow101. See #23020 for the original description and [here](https://github.com/bitcoin/bitcoin/pull/23020#issuecomment-1480603300) for the added features.
    
      I squashed the last commit from https://github.com/achow101/bitcoin/tree/pr23020-direct-bins-gpg-parse into the first commit here.
    
      Fetching and local verification seem to work as intended for me.
    
    ACKs for top commit:
      josibake:
        ACK https://github.com/bitcoin/bitcoin/pull/27358/commits/754fb6bb8125317575edec7c20b5617ad27a9bdd
    
    Tree-SHA512: b310c57518daa690a00126308a3e7e94b978ded56d13da15d5189e9e90b71c93888d854f64179150586b0a915db8dadd43c92b716613913c198128db8867257b
    db720b5a70
  26. doc: update DataDirectoryGroupReadable 1 in tor.md
    Move DataDirectoryGroupReadable 1 up a few lines to more clearly
    communicate that it is required for the filesystem group to read the
    DataDirectory.
    
    Per the Tor documentation
    https://2019.www.torproject.org/docs/tor-manual.html.en#DataDirectoryGroupReadable
    "If this option is set to 0, don’t allow the filesystem group to read
    the DataDirectory. If the option is set to 1, make the DataDirectory
    readable by the default GID. (Default: 0)"
    499c464394
  27. contrib: move verify scripts to verify-binaries 663a89cfed
  28. doc: correct sqlite & qrencode versions used in depenendencies.md a12d9cfa46
  29. contrib: fixup verifybinaries example docs
    Followup to #27358, fixing up the example command docs.
    e2e5683afe
  30. contrib: minor doc improvements in verify-binaries ad841608d4
  31. Merge bitcoin/bitcoin#26741: doc: FreeBSD DataDirectoryGroupReadable Setting
    499c46439418237a77c2a764cde47ad8dc893b0f doc: update DataDirectoryGroupReadable 1 in tor.md (Jesse Barton)
    
    Pull request description:
    
      Updating tor.md doc to include mention of FreeBSD requiring the DataDirectoryGroupReadable be set to 1.
      Default per the FreeBSD man page is 0.
    
             DataDirectoryGroupReadable 0|1
         If this option is set to 0, don't allow the filesystem groupto
         readthe DataDirectory. If the option is setto 1, make the
         DataDirectory readable by the default GID. (Default:0)
    
    ACKs for top commit:
      vasild:
        ACK 499c46439418237a77c2a764cde47ad8dc893b0f
    
    Tree-SHA512: 8750b49cd04e900435c7991d1a24641fd1171227c1f14ed59afb157f24c1ca60380d30aecfb174ca46fd5b4b99dcdb3a1cfd019aafc343362e8103abf7c17e6a
    d544d03ba6
  32. test: LLVM/Clang 16 for MSAN jobs
    Sync up with other CI infra.
    676671527f
  33. bumpfee: Check the correct feerate when replacing outputs
    When doing the feerate check for bumped transactions that replace the
    outputs, we need to consider that the size of the new outputs may be
    different from the old outputs and calculate the minimum feerate accordingly.
    be177c15a4
  34. tests: Make sure that bumpfee feerate checks work when replacing outputs
    When replacing the outputs of a transaction, we can end up with
    fees that are drastically different from the original. This tests that
    the feerate checks we perform will properly detect when the bumping tx
    will have an insufficient feerate.
    d52fa1b0a5
  35. doc: fix/improve warning helps in {create,load,unload,restore}wallet
    - clarify that there can be multiple warning messages
    - specify the correct wallet action
    - describe the use of newlines as delimiters
    f73782a903
  36. rpc: extract wallet "warnings" fields to a util helper 079d8cdda8
  37. rpc: add "warnings" field to RPCs {create,load,unload,restore}wallet
    This new "warnings" field is a JSON array of strings intended to replace the
    "warning" string field in these four RPCs, to better handle returning multiple
    warning messages and for consistency with other wallet RPCs.
    4a1e479ca6
  38. test: add test coverage for "warnings" field in createwallet
    and clarify the "warning" field behavior.
    2f4a926e95
  39. rpc: deprecate "warning" field in {create,load,unload,restore}wallet
    This string field has been replaced in these four RPCs by a "warnings" field
    returning a JSON array of strings.
    645d7f75ac
  40. test: createwallet "warning" field deprecation test 9ea8b3739a
  41. doc: release note for wallet RPCs "warning" field deprecation 01df011ca2
  42. rpc: move WALLET_FLAG_CAVEATS to the compilation unit of its caller
    and add the walletutil.h include header for WALLET_FLAG_AVOID_REUSE that was
    already missing before this change.
    
    WALLET_FLAG_CAVEATS is only used in one RPC, so no need to encumber wallet.h and
    wallet.cpp with it, along with all of the files that include wallet.h during
    their compilation. Also apply clang-format per:
    
    git diff -U0 HEAD~1.. | ./contrib/devtools/clang-format-diff.py -p1 -i -v
    19d888ce40
  43. test: fix importmulti/importdescriptors assertion
    as these RPCs have a "warnings" field, not a "warning" one.
    7ccdd741fe
  44. Merge bitcoin/bitcoin#27440: contrib: followups to #27358 (verify-binaries)
    ad841608d4edf6151b60e483793f60ba9f03cdbf contrib: minor doc improvements in verify-binaries (fanquake)
    e2e5683afe1bd286e247288abec033ca467932bd contrib: fixup verifybinaries example docs (fanquake)
    663a89cfed5e924e79a7a4cb7f64d4c3181cc11d contrib: move verify scripts to verify-binaries (fanquake)
    
    Pull request description:
    
      Followup to #27358, fixing up the example command docs and other requests. See https://github.com/bitcoin/bitcoin/pull/27358#issuecomment-1500389847.
    
    ACKs for top commit:
      josibake:
        ACK https://github.com/bitcoin/bitcoin/pull/27440/commits/ad841608d4edf6151b60e483793f60ba9f03cdbf
      achow101:
        ACK ad841608d4edf6151b60e483793f60ba9f03cdbf
      theuni:
        ACK ad841608d4edf6151b60e483793f60ba9f03cdbf. Thanks for doing these.
    
    Tree-SHA512: 14c47b5a1b231d5116a1e5ddc78cb3a32ca1d4e86f7e18a0c63d5caac95a5272b3eddcc531052e130970a694dd1bc721bfcb29092755e306c37abc0b9f6c9dfd
    9270a56662
  45. Merge bitcoin/bitcoin#27441: doc: correct sqlite & qrencode versions used in depenendencies.md
    a12d9cfa46ad5f5a5144daabbc146d0175642c69 doc: correct sqlite & qrencode versions used in depenendencies.md (fanquake)
    
    Pull request description:
    
      Followup to https://github.com/bitcoin/bitcoin/pull/27312 & https://github.com/bitcoin/bitcoin/pull/25378.
    
    ACKs for top commit:
      achow101:
        ACK a12d9cfa46ad5f5a5144daabbc146d0175642c69
      hebasto:
        ACK a12d9cfa46ad5f5a5144daabbc146d0175642c69, I have reviewed the code and it looks OK, I agree it can be merged.
      jarolrod:
        ACK a12d9cfa46ad5f5a5144daabbc146d0175642c69
    
    Tree-SHA512: 29e1fe4c31089fce6acbadb14aa7619fdd55738a882b490f1a0835d7648798a68b4f0d62e213c60d92f8e021ea856a4d1759578da07413265fef2338840da506
    a3eea2a27d
  46. Merge bitcoin/bitcoin#27436: test: LLVM/Clang 16 for MSAN jobs
    676671527f08ef8113af3661de73db583f6ea9e2 test: LLVM/Clang 16 for MSAN jobs (fanquake)
    
    Pull request description:
    
      Similar to other CI infra changes we've made recently. Move to LLVM/Clang 16 for the MSAN jobs (which is currently using LLVM 12).
    
      See also: https://releases.llvm.org/16.0.0/tools/clang/docs/ReleaseNotes.html#sanitizers:
      > `-fsanitize-memory-param-retval` is turned on by default. With `-fsanitize=memory`, passing uninitialized variables to functions and returning uninitialized variables from functions is more aggressively reported. `-fno-sanitize-memory-param-retval` restores the previous behavior.
    
    ACKs for top commit:
      dergoegge:
        utACK 676671527f08ef8113af3661de73db583f6ea9e2
    
    Tree-SHA512: a105bd1bf7f4e3ede50bb119fd8ab7f308919dc46e093eb3e94351484d65a13220e2449c40d80b8103b9ac0f4b1c8ca29576ab83e2083c26b9d8060c5802b64d
    b24553c04c
  47. Merge bitcoin/bitcoin#27270: refactor, net processing: Avoid CNode::m_relays_txs usage
    55c4795c5794c5c2f8a69b394b847413c9cfbe36 [net processing] Use TxRelay::m_relay_txs over CNode::m_relays_txs (dergoegge)
    
    Pull request description:
    
      `CNode::m_relays_txs` is meant to only be used for the eviction logic in `net`. `TxRelay::m_relay_txs` will hold the same value and is meant to be used on the application layer to determine if we will/should relay transactions to a peer.
    
      (Shameless plug: we should really better specify the interface for updating eviction data to avoid refactors like this in the future -> #25572)
    
    ACKs for top commit:
      MarcoFalke:
        lgtm ACK 55c4795c5794c5c2f8a69b394b847413c9cfbe36
    
    Tree-SHA512: 59cfd23e32568fd96cda5570790e518242a6c76d4edf5b7d1a2a7f9724d590d2a38395504e05be0af4e98dd5c0056fc0be6568eab2818934692483a186e5181d
    53eb4b7a21
  48. ci: Use Cirrus CI dockerfile env facae3b149
  49. ci: Use credits in more tasks
    This should give faster feedback about the CI result, while still
    keeping expenses reasonable.
    fabc7d90a9
  50. ci: Bump nowallet_libbitcoinkernel task to ubuntu:focal
    This is needed to work around
    https://github.com/bitcoin/bitcoin/pull/27340#issuecomment-1484988445
    
    The only change should be that python3.7 is bumped to 3.8, but this is
    fine because ci/test/00_setup_env_native_qt5.sh still checks for
    python3.7 compatibility.
    fa4a46de0b
  51. Merge bitcoin/bitcoin#26662: fuzz: Add HeadersSyncState target
    3153e7d779ac284f86e433af033d63f13f361b6f [fuzz] Add HeadersSyncState target (dergoegge)
    53552affca381cdb5103ecdbcc7f3fb562e66ac4 [headerssync] Make m_commit_offset protected (dergoegge)
    
    Pull request description:
    
      This adds a fuzz target for the `HeadersSyncState` class.
    
      I am unsure how well this is able to cover the logic since it is just processing unserialized CBlockHeaders straight from the fuzz input (headers are sometimes made continuous). However, it does manage to get to the redownload phase so i thought it is better then not having fuzzing at all.
    
      It would also be nice to fuzz the p2p logic that is using `HeadersSyncState` (e.g. `TryLowWorkHeadersSync`, `IsContinuationOfLowWorkHeadersSync`) but that likely requires some more work (refactoring👻).
    
    ACKs for top commit:
      mzumsande:
        ACK 3153e7d779ac284f86e433af033d63f13f361b6f
    
    Tree-SHA512: 8a4630ceeeb30e4eeabaa8eb5491d98f0bf900efe7cda07384eaac9f2afaccfbcaa979cc1cc7f0b6ca297a8f5c17a7759f94809dd87eb87d35348d847c83e8ab
    c17d4d3b6b
  52. Merge bitcoin/bitcoin#26699: wallet, gui: bugfix, getAvailableBalance skips selected coins
    68eed5df8656bed1be6526b014e58d3123102b03 test,gui: add coverage for PSBT creation on legacy watch-only wallets (furszy)
    306aab5bb471904faed325d9f3b38b7e891c7bbb test,gui: decouple widgets and model into a MiniGui struct (furszy)
    2f76ac0383904123676f1b4eeba0f772a4c5cb5d test,gui: decouple chain and wallet initialization from test case (furszy)
    cd98b717398f7b13ace91ea9efac9ce1e60b4d62 gui: 'getAvailableBalance', include watch only balance (furszy)
    74eac3a82fc948467d5a15a5af420b36ce8eb04a test: add coverage for 'useAvailableBalance' functionality (furszy)
    dc1cc1c35995dc09085b3d9270c445b7923fdb51 gui: bugfix, getAvailableBalance skips selected coins (furszy)
    
    Pull request description:
    
      Fixes https://github.com/bitcoin-core/gui/issues/688 and https://github.com/bitcoin/bitcoin/issues/26687.
    
      First Issue Description (https://github.com/bitcoin-core/gui/issues/688):
    
      The previous behavior for `getAvailableBalance`, when the coin control had selected coins, was to return the sum of them. Instead, we are currently returning the wallet's available total balance minus the selected coins total amount.
    
      Reason:
      Missed to update the `GetAvailableBalance` function to include the coin control selected coins on #25685.
    
      Context:
      Since #25685 we skip the selected coins inside `AvailableCoins`, the reason is that there is no need to waste resources walking through the entire wallet's txes map just to get coins that could have gotten by just doing a simple `mapWallet.find`).
    
      Places Where This Generates Issues (only when the user manually select coins via coin control):
      1) The GUI balance check prior the transaction creation process.
      2) The GUI "useAvailableBalance" functionality.
    
      Note 1:
      As the GUI uses a balance cache since https://github.com/bitcoin-core/gui/pull/598, this issue does not affect the regular spending process. Only arises when the user manually select coins.
    
      Note 2:
      Added test coverage for the `useAvailableBalance` functionality.
    
      ----------------------------------
    
      Second Issue Description (https://github.com/bitcoin/bitcoin/issues/26687):
    
      As we are using a cached balance on `WalletModel::getAvailableBalance`,
      the function needs to include the watch-only available balance for wallets
      with private keys disabled.
    
    ACKs for top commit:
      Sjors:
        tACK 68eed5df8656bed1be6526b014e58d3123102b03
      achow101:
        ACK 68eed5df8656bed1be6526b014e58d3123102b03
      theStack:
        ACK 68eed5df8656bed1be6526b014e58d3123102b03
    
    Tree-SHA512: 674f3e050024dabda2ff4a04b9ed3750cf54a040527204c920e1e38bd3d7f5fd4d096e4fd08a0fea84ee6abb5070f022b5c0d450c58fd30202ef05ebfd7af6d3
    27dcc07c08
  53. wallet: Add wallet/types.h for simple public enum and struct types
    Move isminetype and isminefilter there this commit, add WalletPurpose type next
    commit.
    8741522e6c
  54. wallet: add AddressPurpose enum to replace string values 2f80005136
  55. wallet: Replace use of purpose strings with an enum
    Instead of storing and passing around fixed strings for the purpose of
    an address, use an enum.
    
    This also rationalizes the CAddressBookData struct, documenting all fields and
    making them public, and simplifying the representation to avoid bugs like
    https://github.com/bitcoin/bitcoin/pull/26761#discussion_r1134615114 and make
    it not possible to invalid address data like change addresses with labels.
    
    Co-authored-by: Ryan Ofsky <ryan@ofsky.org>
    e83babe3b8
  56. doc: Release note for purpose string restriction 18fc71a3ad
  57. doc: update OpenBSD build docs for 7.3 (external signer support available)
    With OpenBSD 7.3, the waitid(2) system call is implemented (see
    https://github.com/openbsd/src/commit/8112871f19bbd25e86c93d0f901071ca2335a352).
    
    This means Boost.Process finally doesn't fail to compile anymore and we
    can remove the build hint about missing external signer support. Tested
    on my amd64 machine by reconfiguring / rebuilding master branch and
    successfully running the functional test wallet_signer.py.
    6b17994ede
  58. wallet: Add DatabaseBatch::ErasePrefix method
    This new function is not used yet this commit, but next commit adds usages and
    test coverage for both BDB and sqlite.
    5938ad0bdb
  59. Merge bitcoin/bitcoin#27217: wallet: Replace use of purpose strings with an enum
    18fc71a3adee5de0f74ba6ff18f5ed31ba79a646 doc: Release note for purpose string restriction (Andrew Chow)
    e83babe3b85b22e2360a99f9827b2b0d107ad0fa wallet: Replace use of purpose strings with an enum (Andrew Chow)
    2f8000513675467e62bee9d0f836d2fefcc479af wallet: add AddressPurpose enum to replace string values (Ryan Ofsky)
    8741522e6c75a0ad0c96f44e5668befc1624fb0b wallet: Add wallet/types.h for simple public enum and struct types (Ryan Ofsky)
    
    Pull request description:
    
      Instead of storing and passing around fixed strings for the purpose of an address, use an enum.
    
    ACKs for top commit:
      josibake:
        reACK https://github.com/bitcoin/bitcoin/commit/18fc71a3adee5de0f74ba6ff18f5ed31ba79a646
    
    Tree-SHA512: 82034f020e96b99b29da34dfdd7cfe58f8b7d2afed1409ea4a290c2cac69fc43e449e8b7b2afd874a9facf8f4cd6ebb80d17462317e60a6f011ed8f9eab5d4c5
    cae0608ad4
  60. refactor: Remove CAddressBookData::destdata
    This is cleanup that doesn't change external behavior.
    
    - Removes awkward `StringMap` intermediate representation
    - Simplifies CWallet code, deals with used address and received request
      serialization in walletdb.cpp
    - Adds test coverage and documentation
    - Reduces memory usage
    
    This PR doesn't change externally observable behavior. Internally, only change
    in behavior is that EraseDestData deletes directly from database because the
    `StringMap` is gone. This is more direct and efficient because it uses a single
    btree lookup and scan instead of multiple lookups
    
    Motivation for this cleanup is making changes like #18550, #18192, #13756
    easier to reason about and less likely to result in unintended behavior and
    bugs
    
    Co-authored-by: furszy <matiasfurszyfer@protonmail.com>
    a5986e82dd
  61. Merge bitcoin/bitcoin#27449: doc: update OpenBSD build docs for 7.3 (external signer support available)
    6b17994ede6fe1961667d2e96127291b2a8b4f9d doc: update OpenBSD build docs for 7.3 (external signer support available) (Sebastian Falbesoner)
    
    Pull request description:
    
      With OpenBSD 7.3, the waitid(2) system call is implemented (see https://github.com/openbsd/src/commit/8112871f19bbd25e86c93d0f901071ca2335a352, first mentioned kernel improvement at https://www.openbsd.org/73.html).
    
      This means Boost.Process finally doesn't fail to compile anymore and we can remove the build hint about missing external signer support. Tested on my amd64 machine by reconfiguring / rebuilding master branch and successfully running the functional test wallet_signer.py. :heavy_check_mark:
    
    ACKs for top commit:
      fanquake:
        ACK 6b17994ede6fe1961667d2e96127291b2a8b4f9d - haven't tested, but looks good to me.
    
    Tree-SHA512: 5bbcecce4ced38d8221f2c906a54667e50317e9ded182554cf73bb7f2fce55a38e53730eca25f813cff1d2d65c94141eb158d40f83228d12dcf859c16a1798b9
    7f4ab67e7b
  62. ci: use Debian Bookworm and Valgrind 3.19 in Valgrind jobs
    https://packages.debian.org/bookworm/valgrind
    ba29143d98
  63. valgrind: update supps for Debian Bookworm.
    Remove no-longer-required libstdc++ suppression.
    Remove unused (and versioned) GUI suppression.
    e047ae84d2
  64. Merge bitcoin/bitcoin#27279: Add "warnings", deprecate "warning" in {create,load,unload,restore}wallet
    7ccdd741fe1544c13b2a9b7baa5c5727e84d6e55 test: fix importmulti/importdescriptors assertion (Jon Atack)
    19d888ce407f44d90785c456a1a3e2a6870e9245 rpc: move WALLET_FLAG_CAVEATS to the compilation unit of its caller (Jon Atack)
    01df011ca2bf46ee4c988b03a130eea6df692325 doc: release note for wallet RPCs "warning" field deprecation (Jon Atack)
    9ea8b3739a863b0ad87593639476b3cd712ff0dc test: createwallet "warning" field deprecation test (Jon Atack)
    645d7f75ac1b40e4ea88119b3711f89943d35d6c rpc: deprecate "warning" field in {create,load,unload,restore}wallet (Jon Atack)
    2f4a926e95e0379397859c3ba1b5711be5f09925 test: add test coverage for "warnings" field in createwallet (Jon Atack)
    4a1e479ca612056761e6247dd5b715dcd6824413 rpc: add "warnings" field to RPCs {create,load,unload,restore}wallet (Jon Atack)
    079d8cdda8eeebe199fb6592fca2630c37662731 rpc: extract wallet "warnings" fields to a util helper (Jon Atack)
    f73782a9032a462a71569e9424db9bf9eeababf3 doc: fix/improve warning helps in {create,load,unload,restore}wallet (Jon Atack)
    
    Pull request description:
    
      Based on discussion and concept ACKed in #27138, add a `warnings` field to RPCs createwallet, loadwallet, unloadwallet, and restorewallet as a JSON array of strings to replace the `warning` string field in these 4 RPCs. The idea is to more gracefully handle multiple warning messages and for consistency with other wallet RPCs.  Then, deprecate the latter fields, which represent all the remaining RPC `warning` fields.
    
      The first commit https://github.com/bitcoin/bitcoin/pull/27279/commits/f73782a9032a462a71569e9424db9bf9eeababf3 implements https://github.com/bitcoin/bitcoin/pull/27138#issuecomment-1474789198 as an alternative to #27138. One of those two could potentially be backported to our currently supported releases.
    
    ACKs for top commit:
      achow101:
        ACK 7ccdd741fe1544c13b2a9b7baa5c5727e84d6e55
      1440000bytes:
        utACK https://github.com/bitcoin/bitcoin/pull/27279/commits/7ccdd741fe1544c13b2a9b7baa5c5727e84d6e55
      vasild:
        ACK 7ccdd741fe1544c13b2a9b7baa5c5727e84d6e55
      pinheadmz:
        re-ACK 7ccdd741fe1544c13b2a9b7baa5c5727e84d6e55
    
    Tree-SHA512: 314e0a4c41fa383d95e2817bfacf359d449e460529d235c3eb902851e2f4eacbabe646d9a5a4beabc4964cdfabf6397ed8301366a58d344a2f787f83b75e9d64
    6a167325f0
  65. Merge bitcoin/bitcoin#27444: ci: use Debian Bookworm and Valgrind 3.19 in Valgrind jobs
    e047ae84d264b4955eda15c545f964e6671c69cc valgrind: update supps for Debian Bookworm. (fanquake)
    ba29143d983adf49535cbdf55a78b603cc3acb93 ci: use Debian Bookworm and Valgrind 3.19 in Valgrind jobs (fanquake)
    
    Pull request description:
    
      Switch to using Debian Bookworm and [valgrind 3.19](https://packages.debian.org/bookworm/valgrind) in the Valgrind jobs. Also update the suppressions file.
    
      This originally contained a changed to build valgrind 3.20 from source (for improved aarch64 support), but I'll split that into it's own change.
    
    Top commit has no ACKs.
    
    Tree-SHA512: 73ec162d6e07f8a6767d15c0fc298ec6e1a2ba8ec8f9ea902dbfd0a1e3c491411781beec2f6de66fd15006475dbc024bc512f09aa94e2615b713ba873fac14de
    cd603edeef
  66. ci: explicitly install libclang-rt-dev in valgrind jobs
    This fixes some cases, i.e under --no-install-recommends, where
    libclang-rt-dev wouldn't be installed, and configuring would then fail.
    
    Followup to #27444.
    2c60826b50
  67. qt: Register `wallet::AddressPurpose` type a45b54406d
  68. Merge bitcoin/bitcoin#27459: ci: explicitly install libclang-rt-dev in valgrind jobs
    2c60826b50126148194c3176e1c3521190ae352c ci: explicitly install libclang-rt-dev in valgrind jobs (fanquake)
    
    Pull request description:
    
      This fixes some cases, i.e under --no-install-recommends, where libclang-rt-dev wouldn't be installed, and configuring would then fail.
    
      Followup to #27444.
    
    Top commit has no ACKs.
    
    Tree-SHA512: d1ab0050731df47c21f6ac4f575a728b045b4617beaa1fa8b878050e07e5ddda18fb7d066c7b32bee5ed0ac0e878958a812d4c6b5bd704612755ccb3c172d7e2
    cd59bb2f52
  69. Merge bitcoin-core/gui#726: Register `wallet::AddressPurpose` type
    a45b54406dbce4fbf8a316a0e91615eb480da653 qt: Register `wallet::AddressPurpose` type (Hennadii Stepanov)
    
    Pull request description:
    
      This PR is a follow up of bitcoin/bitcoin#27217.
    
      Fixes #725.
    
    ACKs for top commit:
      achow101:
        ACK a45b54406dbce4fbf8a316a0e91615eb480da653
      furszy:
        Tested ACK a45b54406dbce4fbf8a316a0e91615eb480da653
    
    Tree-SHA512: c670f4bf56442613d3fe038b0ba21acfcd4c69aa5340072e9a77d83f5fab1bf2facd87a9e1f42d88f496d277b27b79e7090444d59a9b9e71f3b486e171daa669
    19764dc143
  70. verify-commits: error and exit cleanly when git is too old. 1fefcf27ed
  71. Merge bitcoin/bitcoin#27374: p2p: skip netgroup diversity of new connections for tor/i2p/cjdns
    b5585ba5f97a19d1b435d9ab69b5a55cfd45dd70 p2p: skip netgroup diversity of new connections for tor/i2p/cjdns networks (stratospher)
    
    Pull request description:
    
      Follow up for #27264.
    
      In order to make sure that our persistent outbound slots belong to different netgroups, distinct net groups of our peers are added to `setConnected`. We’d only open a persistent outbound connection to peers which have a different netgroup compared to those netgroups present in `setConnected`.
    
      Current `GetGroup()` logic assumes route-based diversification behaviour for tor/i2p/cjdns addresses (addresses are public key based and not route-based). Distinct netgroups possible (according to the current `GetGroup()` logic) for:
      1. tor => 030f, 031f, .. 03ff (16 possibilities)
      2. i2p => 040f, 041f, .. 04ff (16 possibilities)
      3. cjdns => 05fc0f, 05fc1f, ... 05fcff (16 possibilities)
    
      `setConnected` is used in `ThreadOpenConnections()` before making [outbound](https://github.com/bitcoin/bitcoin/blob/84f4ac39fda7ffa5dc84e92d92dd1eeeb5e20f8c/src/net.cpp#L1846) and [anchor](https://github.com/bitcoin/bitcoin/blob/84f4ac39fda7ffa5dc84e92d92dd1eeeb5e20f8c/src/net.cpp#L1805) connections to new peers so that they belong to distinct netgroups.
    
      **behaviour on master**
    
      - if we run a node only on tor/i2p/cjdns
      - we wouldn't be able to open more than 16 outbound connections(manual, block-relay-only anchor, outbound full relay, block-relay-only connections) because we run out of possible netgroups.
      - see https://github.com/bitcoin/bitcoin/pull/27264#issuecomment-1481322628
      - tested by changing `MAX_OUTBOUND_FULL_RELAY_CONNECTIONS` to 17 with `onlynet=onion` and observed how node wouldn't make more than 16 outbound connections.
    
      **behaviour on PR**
    
      - netgroup diversity checks are skipped for tor/i2p/cjdns addresses.
      - we don't insert tor/i2p/cjdns address in `setConnected` and `GetGroup` doesn't get called on tor/i2p/cjdns(see #27369)
    
    ACKs for top commit:
      achow101:
        ACK b5585ba5f97a19d1b435d9ab69b5a55cfd45dd70
      mzumsande:
        ACK b5585ba5f97a19d1b435d9ab69b5a55cfd45dd70
      vasild:
        ACK b5585ba5f97a19d1b435d9ab69b5a55cfd45dd70
    
    Tree-SHA512: c120b3f9ca7f0be3f29ea665cd2f7dfb40cd1d7ec7058984252fb6e0295e414f736c5b4fba03c31188188a5ae4f543fb2654f6ee9776bad745c7ca72d23d5b9b
    2bfe43db16
  72. Merge bitcoin/bitcoin#27461: verify-commits: error and exit cleanly when git is too old.
    1fefcf27edcac7ebb87c1d3c68bcd9870e3ae78a verify-commits: error and exit cleanly when git is too old. (Cory Fields)
    
    Pull request description:
    
      Requested by fanquake. Rather than failing with a cryptic error with older git, fail gracefully and mention why.
    
      The new option semantics [are explained here](https://github.com/git/git/commit/1f0c3a29da3515d88537902cd267cc726020eea5).
    
      Note: my local git versions are currently too old to test the new functionality, so I've only verified the failure case.
    
    ACKs for top commit:
      josibake:
        ACK https://github.com/bitcoin/bitcoin/pull/27461/commits/1fefcf27edcac7ebb87c1d3c68bcd9870e3ae78a
      achow101:
        ACK 1fefcf27edcac7ebb87c1d3c68bcd9870e3ae78a
    
    Tree-SHA512: f3dc583edf6ff6ff9bf06f33de967e10b8423ce62e7370912ffdca8a4ca4bfe4c2e783e9ad76281ce9e6748a4643d187aa5cb4a6b9ec4c1582910f02b94b6e3c
    69460bd8bc
  73. Squashed 'src/secp256k1/' changes from bdf39000b9..4258c54f4e
    4258c54f4e Merge bitcoin-core/secp256k1#1276: autotools: Don't regenerate Wycheproof header automatically
    06c67dea9f autotools: Don't regenerate Wycheproof header automatically
    3bab71cf05 Merge bitcoin-core/secp256k1#1268: release cleanup: bump version after 0.3.1
    656c6ea8d8 release cleanup: bump version after 0.3.1
    346a053d4c Merge bitcoin-core/secp256k1#1269: changelog: Fix link
    6a37b2a5ea changelog: Fix link
    ec98fcedd5 Merge bitcoin-core/secp256k1#1266: release: Prepare for 0.3.1
    898e1c676e release: Prepare for 0.3.1
    1d9a13fc26 changelog: Remove inconsistent newlines
    0e091669a1 changelog: Catch up in preparation of 0.3.1
    7b7503dac5 Merge bitcoin-core/secp256k1#1245: tests: Add Wycheproof ECDSA vectors
    145078c418 Merge bitcoin-core/secp256k1#1118: Add x-only ecmult_const version with x specified as n/d
    e5de454609 tests: Add Wycheproof ECDSA vectors
    0f8642079b Add exhaustive tests for ecmult_const_xonly
    4485926ace Add x-only ecmult_const version for x=n/d
    a0f4644f7e Merge bitcoin-core/secp256k1#1252: Make position of * in pointer declarations in include/ consistent
    4e682626a3 Merge bitcoin-core/secp256k1#1226: Add CMake instructions to release process
    2d51a454fc Merge bitcoin-core/secp256k1#1257: ct: Use volatile "trick" in all fe/scalar cmov implementations
    4a496a36fb ct: Use volatile "trick" in all fe/scalar cmov implementations
    3d1f430f9f Make position of * in pointer declarations in include/ consistent
    2bca0a5cbf Merge bitcoin-core/secp256k1#1241: build: Improve `SECP_TRY_APPEND_DEFAULT_CFLAGS` macro
    afd8b23b27 Merge bitcoin-core/secp256k1#1244: Suppress `-Wunused-parameter` when building for coverage analysis
    1d8f367515 Merge bitcoin-core/secp256k1#1250: No need to subtract 1 before doing a right shift
    3e43041be6 No need to subtract 1 before doing a right shift
    3addb4c1e8 build: Improve `SECP_TRY_APPEND_DEFAULT_CFLAGS` macro
    0c07c82834 Add CMake instructions to release process
    464a9115b4 Merge bitcoin-core/secp256k1#1242: Set ARM ASM symbol visibility to `hidden`
    f16a709fd6 Merge bitcoin-core/secp256k1#1247: Apply Checks only in VERIFY mode.
    70be3cade5 Merge bitcoin-core/secp256k1#1246: Typo
    4ebd82852d Apply Checks only in VERIFY mode.
    d1e7ca192d Typo
    5bb03c2911 Replace `SECP256K1_ECMULT_TABLE_VERIFY` macro by a function
    9c8c4f443c Merge bitcoin-core/secp256k1#1238: build: bump CMake minimum requirement to 3.13
    0cf2fb91ef Merge bitcoin-core/secp256k1#1243: build: Ensure no optimization when building for coverage analysis
    fd2a408647 Set ARM ASM symbol visibility to `hidden`
    4429a8c218 Suppress `-Wunused-parameter` when building for coverage analysis
    8e79c7ed11 build: Ensure no optimization when building for coverage analysis
    96dd062511 build: bump CMake minimum requirement to 3.13
    427bc3cdcf Merge bitcoin-core/secp256k1#1236: Update comment for secp256k1_modinv32_inv256
    647f0a5cb1 Update comment for secp256k1_modinv32_inv256
    5658209459 Merge bitcoin-core/secp256k1#1228: release cleanup: bump version after 0.3.0
    28e63f7ea7 release cleanup: bump version after 0.3.0
    
    git-subtree-dir: src/secp256k1
    git-subtree-split: 4258c54f4ebfc09390168e8a43306c46b315134b
    c981671e9b
  74. Update src/secp256k1 to latest upstream master (v0.3.1 + CI fix) f5fdd4e279
  75. Disable Python lint in src/secp256k1 719a74989b
  76. Respect and update FILES_ARGS in test/lint/lint-python.py 621c17869d
  77. fuzz: re-enable prioritisetransaction & analyzepsbt RPC faa7144d3c
  78. Update developer-notes.md f24f4fa3f1
  79. Merge bitcoin/bitcoin#27445: Update src/secp256k1 subtree to release v0.3.1
    621c17869d3754559c03e4f2bee73885659e0c68 Respect and update FILES_ARGS in test/lint/lint-python.py (Pieter Wuille)
    719a74989be3cfbc4422ec07cac199c295d28d05 Disable Python lint in src/secp256k1 (Pieter Wuille)
    c981671e9b206de4681a2e0d06996b800fcc985b Squashed 'src/secp256k1/' changes from bdf39000b9..4258c54f4e (Pieter Wuille)
    
    Pull request description:
    
      There is no strict need for any of the changes in v0.3.1 (compared to the v0.3.0 that's currently subtreed) for Bitcoin Core release builds, but if anyone may compile Bitcoin Core from source using Clang v14+, this will prevent known timing leaks in the signing/keygen logic.
    
      This also includes a CI fix from libsecp256k1 master (on top of 0.3.1) which fixes Wycheproof test vector generation.
    
      I also had to amend some of the linters to avoid enforcing their rules on the .py files in the secp256k1 subtree.
    
    ACKs for top commit:
      real-or-random:
        utACK 621c17869d3754559c03e4f2bee73885659e0c68 subtree matches. diff to linter script looks good
      fanquake:
        ACK 621c17869d3754559c03e4f2bee73885659e0c68
    
    Tree-SHA512: 059722540a4fd387d9e231036e59685db373c085a346c7a9d2b87eac3ffe538099356b5f06fc2112a1df80e3818d80fe380f27a47901496e8092c836ea3ee14d
    3650e74808
  80. Merge bitcoin/bitcoin#27308: bumpfee: avoid making bumped transactions with too low fee when replacing outputs
    d52fa1b0a5a8eecbe1e296a44b72965717e9235b tests: Make sure that bumpfee feerate checks work when replacing outputs (Andrew Chow)
    be177c15a40199fac79d8ab96bb4b4d5a9b4fe22 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 d52fa1b0a5a8eecbe1e296a44b72965717e9235b
      Xekyo:
        reACK https://github.com/bitcoin/bitcoin/commit/d52fa1b0a5a8eecbe1e296a44b72965717e9235b
    
    Tree-SHA512: d18301b587465322dd3fb1bb86496c3675265a56072047576e2baa5cf907dd3b54778f30721f662f0c235709a5568427c18542eb7efbfb6fdd9f481fe676c66b
    90bfa9d2d7
  81. Merge bitcoin/bitcoin#27465: doc: fix typo in developer-notes.md
    f24f4fa3f114b1bd5b7e7ff9ebb0ef73bfc81eda Update developer-notes.md (Riahiamirreza)
    
    Pull request description:
    
    ACKs for top commit:
      fanquake:
        ACK f24f4fa3f114b1bd5b7e7ff9ebb0ef73bfc81eda
    
    Tree-SHA512: 10301170dff6f2f7b47a229ba99f4a4f4953c361be24996b6dc70343ad118879cd90ebb54d78cd31c852f577fb17f9726582fdd02ed5b6fd7b71566942e8b408
    b22c275582
  82. bumpfee: enable send coins back to yourself
    Simple example:
    
    1) User_1 sends 0.1 btc to user_2 on a low fee transaction.
    2) After few hours, the tx is still in the mempool, user_2
       is not interested anymore, so user_1 decides to cancel
       it by sending coins back to himself.
    3) User_1 has the bright idea of opening the explorer and
       copy the change output address of the transaction. Then
       call bumpfee providing such output (in the "outputs" arg).
    
    Currently, this is not possible. The wallet fails with
    "Unable to create transaction. Transaction must have at least
    one recipient" error.
    The error reason is that we discard the provided output from
    the recipients list and set it inside the coin control
    so the process adds it later (when the change is calculated).
    But.. there is no later if the tx has no outputs.
    7bffec6715
  83. test: bumpfee, add coverage for "send coins back to yourself" be72663a15
  84. test: fix bumpfee 'spend_one_input' occasional failure
    Most of the subtests in wallet_bumpfee.py expect to
    find spendable UTXOs of 0.001 btc in the rbf wallet
    (they use the 'spend_one_input()' method that tries
    to spend one of them and if it doesn't find any, it
    throws an exception).
    
    The sporadic failure comes from the recently added
    'test_feerate_checks_replaced_outputs' subtest that
    can spend all them. Leaving the next subtests with
    no 0.001 UTXOs to spend.
    
    To solve it, this PR moves the recently added case
    into a "context independent subtests" section.
    Which is placed at the end to not affect other cases.
    e07dd5fff9
  85. Don't return OutputType::UNKNOWN in ParseOutputType
    Fixes https://github.com/bitcoin/bitcoin/issues/27472
    
    Signed-off-by: Pttn <28868425+Pttn@users.noreply.github.com>
    0d6383fda0
  86. [test util] mock mempool minimum feerate ac463e87df
  87. [test] package cpfp bumps parents <mempoolminfee but >=minrelaytxfee c4554fe894
  88. [policy] disallow transactions under min relay fee, even in packages
    Avoid adding transactions below min relay feerate because, even if they
    were bumped through CPFP when entering the mempool, we do not have a
    DoS-resistant way of ensuring they always remain bumped.  In the future,
    this rule can be relaxed (e.g. to allow packages to bump 0-fee
    transactions) if we find a way to do so.
    563a2ee4f5
  89. depends: fix compiling bdb with clang-16 on aarch64
    Compiling bdb with clang-16 on aarch64 (hardware) currently fails:
    ```bash
    make -C depends/ bdb CC=clang CXX=clang++
    ...
    checking for mutexes... UNIX/fcntl
    configure: WARNING: NO SHARED LATCH IMPLEMENTATION FOUND FOR THIS PLATFORM.
    configure: error: Unable to find a mutex implementation
    ```
    
    Looking at config.log we've got:
    ```bash
    configure:18704: checking for mutexes
    configure:18815: clang -o conftest -pipe -std=c11 -O2 -Wno-error=implicit-function-declaration -Wno-error=format-security    -I/bitcoin/depends/aarch64-unknown-linux-gnu/include -D_GNU_SOURCE -D_REENTRANT   -L/bitcoin/depends/aarch64-unknown-linux-gnu/lib conftest.c  -lpthread >&5
    conftest.c:45:1: error: type specifier missing, defaults to 'int'; ISO C99 and later do not support implicit int [-Wimplicit-int]
    main() {
    ^
    int
    conftest.c:50:2: warning: call to undeclared library function 'exit' with type 'void (int) __attribute__((noreturn))'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
            exit (
            ^
    conftest.c:50:2: note: include the header <stdlib.h> or explicitly provide a declaration for 'exit'
    1 warning and 1 error generated.
    ```
    
    Clang-16 changed `-Wimplicit-function-declaration` and `-Wimplicit-int`
    warnings into errors, see:
    https://releases.llvm.org/16.0.0/tools/clang/docs/ReleaseNotes.html#potentially-breaking-changes.
    
    > The -Wimplicit-function-declaration and -Wimplicit-int warnings now
    > default to an error in C99, C11, and C17. As of C2x, support for implicit
    > function declarations and implicit int has been removed, and the
    > warning options will have no effect. Specifying -Wimplicit-int in
    > C89 mode will now issue warnings instead of being a noop.
    f8b8458276
  90. [validation] set PackageValidationState when mempool full b51ebccc28
  91. [test] mempool full in package accept bf77fc9cb4
  92. bugfix: rest: avoid segfault for invalid URI
    `evhttp_uri_parse` can return a nullptr, for example when the URI
    contains invalid characters (e.g. "%").
    `GetQueryParameterFromUri` passes the output of `evhttp_uri_parse`
    straight into `evhttp_uri_get_query`, which means that anyone calling
    a REST endpoint in which query parameters are used (e.g. `rest_headers`)
    can cause a segfault.
    
    This bugfix is designed to be minimal and without additional behaviour change.
    Follow-up work should be done to resolve this in a more general and robust way,
    so not every endpoint has to handle it individually.
    11422cc572
  93. Merge bitcoin/bitcoin#27468: bugfix: rest: avoid segfault for invalid URI
    11422cc5720c8d73a87600de8fe8abb156db80dc bugfix: rest: avoid segfault for invalid URI (pablomartin4btc)
    
    Pull request description:
    
      Minimal fix to get it promptly into 25.0 release (suggested by  [stickies-v](https://github.com/bitcoin/bitcoin/pull/27253#pullrequestreview-1385130381) and supported by [vasild](https://github.com/bitcoin/bitcoin/pull/27253#pullrequestreview-1385842606)  )
    
      Please check #27253 for reviewers comments and acks regarding this PR and read the commit comment message body for more details about the fix.
    
    ACKs for top commit:
      achow101:
        ACK 11422cc5720c8d73a87600de8fe8abb156db80dc
      stickies-v:
        re-ACK 11422cc
    
    Tree-SHA512: 5af6b53fb266a12b463f960910556d5e97bc88b3c2a4f437ffa343886b38749e1eb058cf7bc64d62e82e1acf6232a186bddacd8f3b4500c87bf9e550a0153386
    e054b7390c
  94. Merge bitcoin/bitcoin#27473: bugfix: Properly handle "unknown" Address Type
    0d6383fda04a99726654945a737bbb1369e0e44a Don't return OutputType::UNKNOWN in ParseOutputType (Pttn)
    
    Pull request description:
    
      Fixes https://github.com/bitcoin/bitcoin/issues/27472 by also handling at the relevant places the case where ParseOutputType returns `OutputType::UNKNOWN`, and not just when it returns `std::nullopt`.
    
    ACKs for top commit:
      achow101:
        ACK 0d6383fda04a99726654945a737bbb1369e0e44a
      MarcoFalke:
        lgtm ACK 0d6383fda04a99726654945a737bbb1369e0e44a
      furszy:
        ACK https://github.com/bitcoin/bitcoin/commit/0d6383fda04a99726654945a737bbb1369e0e44a
    
    Tree-SHA512: 776793027b926283d3162e69fb9c8883c814b19bcce4574ccdf8e3140a1ec4ebc4aa8ccd1abae7ef3571f942d2e6c35305fd1244259540d90605106e01afc34c
    4ad20a2258
  95. Merge bitcoin/bitcoin#27462: depends: fix compiling bdb with clang-16 on aarch64
    f8b8458276983f8fc1e2a47c4d00c1e30633067d depends: fix compiling bdb with clang-16 on aarch64 (fanquake)
    
    Pull request description:
    
      Compiling bdb with clang-16 on aarch64 (hardware) currently fails:
      ```bash
      make -C depends/ bdb CC=clang CXX=clang++
      ...
      checking for mutexes... UNIX/fcntl
      configure: WARNING: NO SHARED LATCH IMPLEMENTATION FOUND FOR THIS PLATFORM.
      configure: error: Unable to find a mutex implementation
      ```
    
      Looking at config.log we've got:
      ```bash
      configure:18704: checking for mutexes
      configure:18815: clang -o conftest -pipe -std=c11 -O2 -Wno-error=implicit-function-declaration -Wno-error=format-security    -I/bitcoin/depends/aarch64-unknown-linux-gnu/include -D_GNU_SOURCE -D_REENTRANT   -L/bitcoin/depends/aarch64-unknown-linux-gnu/lib conftest.c  -lpthread >&5
      conftest.c:45:1: error: type specifier missing, defaults to 'int'; ISO C99 and later do not support implicit int [-Wimplicit-int]
      main() {
      ^
      int
      conftest.c:50:2: warning: call to undeclared library function 'exit' with type 'void (int) __attribute__((noreturn))'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
              exit (
              ^
      conftest.c:50:2: note: include the header <stdlib.h> or explicitly provide a declaration for 'exit'
      1 warning and 1 error generated.
      ```
    
      Clang-16 changed `-Wimplicit-function-declaration` and `-Wimplicit-int`
      warnings into errors, see:
      https://releases.llvm.org/16.0.0/tools/clang/docs/ReleaseNotes.html#potentially-breaking-changes.
    
      > The -Wimplicit-function-declaration and -Wimplicit-int warnings now
      > default to an error in C99, C11, and C17. As of C2x, support for implicit
      > function declarations and implicit int has been removed, and the
      > warning options will have no effect. Specifying -Wimplicit-int in
      > C89 mode will now issue warnings instead of being a noop.
    
    ACKs for top commit:
      hebasto:
        ACK f8b8458276983f8fc1e2a47c4d00c1e30633067d, tested on Ubuntu Lunar (`aarch64`) with:
    
    Tree-SHA512: 5ca078b1c00915446e9f0f2ecaa4342295a2097996554345753315d1c81c23000c57be14e1ac5506a87820f5114aba748456f2c2b6426b0810504d62d761a787
    5d9d6f7fbc
  96. Merge bitcoin/bitcoin#27471: test: fix bumpfee 'spend_one_input' occasional failure
    e07dd5fff9eb64d7615ab515b351e296c00b1861 test: fix bumpfee 'spend_one_input' occasional failure (furszy)
    
    Pull request description:
    
      CI test failure, in master: https://cirrus-ci.com/task/5975232842825728.
      In #27469 https://cirrus-ci.com/task/6452468402356224
    
      Most of the subtests in `wallet_bumpfee.py` expect to find spendable UTXOs of 0.001 btc in the rbf wallet. They use the `spend_one_input()` method which fails if none of them exist.
    
      The sporadic failure comes from the recently added `test_feerate_checks_replaced_outputs` subtest that can spend all them. Leaving the next subtests with no 0.001 UTXOs to spend.
    
      To solve it, this PR moves the recently added case into a "context independent subtests" section.
      Which is placed at the end to not affect other cases.
    
    ACKs for top commit:
      achow101:
        ACK e07dd5fff9eb64d7615ab515b351e296c00b1861
      pablomartin4btc:
        ACK https://github.com/bitcoin/bitcoin/commit/e07dd5fff9eb64d7615ab515b351e296c00b1861.
    
    Tree-SHA512: c150ed6fcfbb6f1502eaf6370a57aae0da991c0fc48e8bb3d446805f4336abba5d80ff0de26094914da95432dd0255030fe527001af4510dfdcefbc7230f14d6
    54e07a05b2
  97. test: add regression tests for #27468 (invalid URI segfaults)
    Prior to PR #27468 (commit 11422cc5720c8d73a87600de8fe8abb156db80dc) all
    call-sites of `GetQueryParameter(...)` in the REST module could trigger
    a crash. Add missing test cases for all possible code-paths as a
    regression test, as a foundation for possible follow-up fixes (which aim
    to resolve this issue in a more general and robust way).
    6a77d290da
  98. Merge bitcoin/bitcoin#27477: test: add regression tests for #27468 (invalid URI segfaults)
    6a77d290da589bd5620585def5bfc019e242e189 test: add regression tests for #27468 (invalid URI segfaults) (Sebastian Falbesoner)
    
    Pull request description:
    
      Prior to PR #27468 (commit 11422cc5720c8d73a87600de8fe8abb156db80dc) all call-sites of `GetQueryParameter(...)` in the REST module could trigger a crash. Add missing test cases for all possible code-paths as a regression test, as a foundation for possible follow-up fixes (which aim to resolve this issue in a more general and robust way).
    
    ACKs for top commit:
      stickies-v:
        ACK 6a77d290da589bd5620585def5bfc019e242e189
      vasild:
        ACK 6a77d290da589bd5620585def5bfc019e242e189
    
    Tree-SHA512: b5dd22d7d448f92236575ea950287259795a957a3f8e364682510c7c1ede5f9d67e7daccc5146c8d0817bcb71742d49273801574bd2bb96e44a9ae5a006ac2a7
    467fa89438
  99. Merge bitcoin/bitcoin#27340: ci: Use Cirrus CI dockerfile env
    fa4a46de0b3c1a5895e95dba7e95278932fbfc2c ci: Bump nowallet_libbitcoinkernel task to ubuntu:focal (MarcoFalke)
    fabc7d90a90d46af181bc08def43d861062f6dfa ci: Use credits in more tasks (MarcoFalke)
    facae3b149d7dfe84ef46c69c1d6fb586c08848d ci: Use Cirrus CI dockerfile env (MarcoFalke)
    
    Pull request description:
    
      Currently the CI env has many intermittent issues:
    
      * The Ubuntu package servers are frequently down
      * Occasionally other stuff is down, such as dnf, pip, or the android sdk
      * Installing packages is slower than downloading them, at least on Cirrus, which has a fast download speed
    
      Fix all issues by using the Cirrus CI dockerfile env.
    
    ACKs for top commit:
      josibake:
        code review ACK https://github.com/bitcoin/bitcoin/pull/27340/commits/fa4a46de0b3c1a5895e95dba7e95278932fbfc2c
    
    Tree-SHA512: fea5663f7b6dc1c4ea9f87188026ec542b9269bac8ee3398cd58d4df6c86a0af9d275f1876e03f92fb1f6166ec49b817d9e588e6fe1ed54b77592502c2eccd9d
    5165984afc
  100. depends: Remove _LIBCPP_DEBUG from depends DEBUG mode
    It was deprecated in LLVM 15, turned into a compile-time error in LLVM 16:
    ```bash
    In file included from /usr/lib/llvm-16/bin/../include/c++/v1/cassert:19:
    /usr/lib/llvm-16/bin/../include/c++/v1/__assert:22:5: error: "Defining _LIBCPP_DEBUG is not supported anymore.
    Please use _LIBCPP_ENABLE_DEBUG_MODE instead."
        ^
    1 error generated.
    ```
    
    and has been removed entirely in LLVM 17 (main),
    https://github.com/llvm/llvm-project/commit/ff573a42cd1f1d05508f165dc3e645a0ec17edb5.
    
    Building libc++ in debug mode, will also automatically set
    `_LIBCPP_ENABLE_DEBUG_MODE` (the new define), so adding it to depends
    doesn't seem useful, and would just result in redefinition errors.
    
    I'm wondering if as a followup, we could enable a DEBUG build of libc++
    in our MSAN CI job?
    
    Somewhat related to https://github.com/google/oss-fuzz/pull/9828, where
    it looks like we'll have to sort out getting a DEBUG build of LLVM.
    cf266b2270
  101. depends: add _LIBCPP_ENABLE_ASSERTIONS to DEBUG mode
    See
    https://releases.llvm.org/16.0.0/projects/libcxx/docs/UsingLibcxx.html#assertions-mode
    for more info.
    bc4fd49d09
  102. doc: update references to kernel/chainparams.cpp 07fcc0a82c
  103. kernel: update nMinimumChainWork & defaultAssumeValid for 25.x
    Co-authored-by: johnny9 <985648+johnny9@users.noreply.github.com>
    00b2b114b4
  104. kernel: update chainTxData for 25.x
    Co-authored-by: johnny9 <985648+johnny9@users.noreply.github.com>
    4128e01dba
  105. kernel: update m_assumed_* chain params for 25.x
    Co-authored-by: johnny9 <985648+johnny9@users.noreply.github.com>
    a2bef805c1
  106. doc: remove outdated version number usage from release-process
    We no-longer use the leading 0. version number, and having a mixture is
    both in the release-process examples is needlessly confusing.
    fde224a661
  107. Merge bitcoin/bitcoin#27484: doc: remove outdated version number usage from release-process
    fde224a6610699a6a28cc27e299ac14cbf7e16ca doc: remove outdated version number usage from release-process (fanquake)
    
    Pull request description:
    
      We no-longer use the leading `0.` version number, and having a mixture is both in the release-process examples is needlessly confusing.
    
    ACKs for top commit:
      achow101:
        ACK fde224a6610699a6a28cc27e299ac14cbf7e16ca
      stickies-v:
        ACK fde224a6610699a6a28cc27e299ac14cbf7e16ca
    
    Tree-SHA512: c6693b01741921f6870244243640fe857e024bb8581ce57b2d870abf20d257309b97af61fe464427e31a60cda78cf23c1012c6b6a2246250f3670c4b813417d9
    2fa7344aa9
  108. move-only: Extract common/args and common/config.cpp from util/system
    This is an extraction of ArgsManager related functions from util/system
    into their own common file.
    
    Config file related functions are moved to common/config.cpp.
    
    The background of this commit is an ongoing effort to decouple the
    libbitcoinkernel library from the ArgsManager. The ArgsManager belongs
    into the common library, since the kernel library should not depend on
    it. See doc/design/libraries.md for more information on this rationale.
    be55f545d5
  109. Merge bitcoin/bitcoin#27447: depends: Remove `_LIBCPP_DEBUG` from depends DEBUG mode
    bc4fd49d09dec3791b0acd4ada285b2287361d14 depends: add _LIBCPP_ENABLE_ASSERTIONS to DEBUG mode (fanquake)
    cf266b2270081f05a277ba683f00de90a741112f depends: Remove _LIBCPP_DEBUG from depends DEBUG mode (fanquake)
    
    Pull request description:
    
      It was deprecated in LLVM 15, turned into compile-time error in LLVM 16:
      ```bash
      In file included from /usr/lib/llvm-16/bin/../include/c++/v1/cassert:19:
      /usr/lib/llvm-16/bin/../include/c++/v1/__assert:22:5: error: "Defining _LIBCPP_DEBUG is not supported anymore.
      Please use _LIBCPP_ENABLE_DEBUG_MODE instead."
          ^
      1 error generated.
      ```
    
      and has been removed entirely in LLVM 17 (main): https://github.com/llvm/llvm-project/commit/ff573a42cd1f1d05508f165dc3e645a0ec17edb5.
    
      [Building libc++ in debug mode](https://releases.llvm.org/16.0.0/projects/libcxx/docs/DesignDocs/DebugMode.html), will also automatically set
      `_LIBCPP_ENABLE_DEBUG_MODE` (the new define), so adding it to depends
      doesn't seem useful, and would just result in redefinition errors.
    
      I'm wondering if as a followup, we could enable a DEBUG build of libc++
      in our MSAN CI job? i.e https://github.com/fanquake/bitcoin/tree/msan_with_enable_debug_mode.
    
      Somewhat related to https://github.com/google/oss-fuzz/pull/9828, where
      it looks like we'll have to sort out getting a DEBUG build of LLVM, and can drop the commentary about re-enabling DEBUG=1.
    
    ACKs for top commit:
      MarcoFalke:
        lgtm Approach ACK bc4fd49d09dec3791b0acd4ada285b2287361d14
    
    Tree-SHA512: 9c0f48fc428278fbf34fbb8f81e761e232506d7ab28e971cb9a9b9a81d549b4d8bbe51e2f7608d56e489428679231da5b7431443849b238a8a993ad241740282
    d908877c47
  110. ci: build libc++ in DEBUG mode in MSAN jobs 23b8b2026a
  111. ci: build libc++ with assertions in MSAN jobs 4de9c2a65f
  112. blockstorage: Adjust fastprune limit if block exceeds blockfile size
    If the added block exceeds the blockfile size in test-only
    -fastprune mode, the node would get stuck in an infinite loop and
    run out of memory.
    
    Avoid this by raising the blockfile size to the size of the added block
    in this situation.
    
    Co-authored-by: TheCharlatan <seb.kung@gmail.com>
    271c23e87f
  113. test: cover fastprune with excessive block size 8f14fc8622
  114. Merge bitcoin/bitcoin#27448: ci: build libc++ in DEBUG mode in MSAN jobs
    4de9c2a65f6770405f167c7392cd8371111bc4e8 ci: build libc++ with assertions in MSAN jobs (fanquake)
    23b8b2026a8078f41b1afd84214c06b5e2cc95e8 ci: build libc++ in DEBUG mode in MSAN jobs (fanquake)
    
    Pull request description:
    
      Followup to #27447.
    
      See https://releases.llvm.org/16.0.0/projects/libcxx/docs/DesignDocs/DebugMode.html:
      > Libc++ provides a debug mode that enables special debugging checks meant to detect incorrect usage of the standard library. These checks are disabled by default, but they can be enabled by vendors when building the library by using LIBCXX_ENABLE_DEBUG_MODE.
    
    ACKs for top commit:
      MarcoFalke:
        lgtm ACK 4de9c2a65f6770405f167c7392cd8371111bc4e8
    
    Tree-SHA512: 788c7f031ccf7a6ac96a87758e57f604cf4d9db0144f0ecc4931823111d2396e64ab260825d74f06b2770d0ac3e4e2c21c46f4def046cf3e1a44d705921ab6d2
    d26a71a94a
  115. depends: reuse _config_opts for CMake options
    This will allow us to use the existing machinery for filtering by
    arch, os, debug/release, etc.
    
    For example, the following becomes possible for libevent:
    
    $(package)_config_opts_release=-DEVENT__DISABLE_DEBUG_MODE
    
    Now the define is only set when not building depends with DEBUG=1
    63c0c4ff10
  116. Merge bitcoin/bitcoin#26681: contrib: Bugfix for checking bad dns seeds without casting in `makeseeds.py`
    3cc989da5c750e740705131bed05bbf93bfdf169 Fix checking bad dns seeds without casting (Yusuf Sahin HAMZA)
    
    Pull request description:
    
      - Since seed lines comes with `str` type, comparing `good` column directly with **0** (`int` type) in the if statement was not working at all. This is fixed by casting `int` type to the values in the `good` column of seeds text file.
      - Lines that starts with comment in the seeds text file are now ignored.
      - If statement for checking bad seeds are moved to the top of the `parseline` function as if a seed is bad; there is no point of going forward from there.
    
      Since this bug-fix eliminates bad seeds over **550k** in the first place, in my case; particular job for parsing all seeds speed is up by **600%** and whole script's speed is up by **%30**.
    
      Note that **stats** in the terminal are not going to include bad seeds after this fix, which would be the same if this bug were never there before.
    
    ACKs for top commit:
      achow101:
        ACK 3cc989da5c750e740705131bed05bbf93bfdf169
      jonatack:
        ACK 3cc989da5c750e740705131bed05bbf93bfdf169
    
    Tree-SHA512: 13c82681de4d72de07293f0b7f09721ad8514a2ad99b0584d1c94fa5f2818821df2000944f9514d6a222a5dccc82856d16c8c05aa36d905cfa7d4610c629fd38
    b627924300
  117. Merge bitcoin/bitcoin#27482: kernel: chainparams updates for 25.x
    a2bef805c11a4ab391f4ea635bfde7dd2ec9ce81 kernel: update m_assumed_* chain params for 25.x (fanquake)
    4128e01dbaa630396b0e7576ee8a1987267f77b9 kernel: update chainTxData for 25.x (fanquake)
    00b2b114b442835c863e7772348cb1d1881ba0f2 kernel: update nMinimumChainWork & defaultAssumeValid for 25.x (fanquake)
    07fcc0a82cfd08c991f61c2340630f0c4659a3a0 doc: update references to kernel/chainparams.cpp (fanquake)
    
    Pull request description:
    
      Update chainparams pre `25.x` branch off.
      Co-Author in the commits as a PR (#27223) had previously been opened too-early to do the same.
    
      Note: Remember that some variance is expected in the `m_assumed_*` sizes.
    
    ACKs for top commit:
      achow101:
        ACK a2bef805c11a4ab391f4ea635bfde7dd2ec9ce81
      josibake:
        ACK https://github.com/bitcoin/bitcoin/pull/27482/commits/a2bef805c11a4ab391f4ea635bfde7dd2ec9ce81
      gruve-p:
        ACK https://github.com/bitcoin/bitcoin/pull/27482/commits/a2bef805c11a4ab391f4ea635bfde7dd2ec9ce81
      dergoegge:
        ACK a2bef805c11a4ab391f4ea635bfde7dd2ec9ce81 on the new mainnet params
    
    Tree-SHA512: 0b19c2ef15c6b15863d6a560a1053ee223057c7bfb617ffd3400b1734cee8f75bc6fd7f04d8f8e3f5af6220659a1987951a1b36945d6fe17d06972004fd62610
    3133d935ce
  118. p2p: update manual tor/i2p/cjdns mainnet seeds for 25.x
    selected for reachability, uptime, and service bit 1
    f5c8788628
  119. contrib: make-seeds updates for 25.x
    and make the steps in /contrib/seeds/README.md easier to copy-paste
    04dd1d3926
  120. p2p: update hardcoded mainnet seeds for 25.x 31b1798d2c
  121. Merge bitcoin/bitcoin#27488: p2p: update hardcoded mainnet seeds for 25.x
    31b1798d2c3fa3c479eb2d1896240e0b7fad600b p2p: update hardcoded mainnet seeds for 25.x (Jon Atack)
    04dd1d3926cdc6bb9d836686cc9060320911d27a contrib: make-seeds updates for 25.x (Jon Atack)
    f5c87886286473177a67a576d8eac0b32e7f5b97 p2p: update manual tor/i2p/cjdns mainnet seeds for 25.x (Jon Atack)
    
    Pull request description:
    
      Update the hardcoded P2P network seeds for 25.x after updating the manual seeds and the generation script as necessary. Previous update was #25911.
    
      The manual seeds are selected for reachability, uptime and service bit 1 and/or curated trusted peers. We need more Tor and CJDNS seeds and some of the current Tor and I2P seeds are no longer reachable.
    
      Can be tested by following the steps in `contrib/seeds/README.md` and verifying the manual seeds by checking their presence and services in getnodeaddresses and/or connecting to them and checking their services with getpeerinfo and behavior with -netinfo.
    
      Tool output:
    
      ```
      $ python3 makeseeds.py -a asmap-filled.dat -s seeds_main.txt > nodes_main.txt
    
      Loading asmap database "asmap-filled.dat"…Done.
      Loading and parsing DNS seeds…Done.
        IPv4   IPv6  Onion Pass
        3972   1118      0 Initial
        3972   1118      0 Skip entries with invalid address
        3972   1118      0 After removing duplicates
        3946   1112      0 Enforce minimal number of blocks
        3946   1112      0 Require service bit 1
        2791    798      0 Require minimum uptime
        2757    788      0 Require a known and recent user agent
        2757    788      0 Filter out hosts with multiple bitcoin ports
         512    289      0 Look up ASNs and limit results per ASN and per net```
    
    ACKs for top commit:
      achow101:
        ACK 31b1798d2c3fa3c479eb2d1896240e0b7fad600b
      mzumsande:
        reACK 31b1798d2c3fa3c479eb2d1896240e0b7fad600b
    
    Tree-SHA512: 40cdd0ac74e3d26975ab688ee4af09bedcf15f6e02311757b27c91aafdc4da16cca2be90fee767207bb4ccd542ad19197e4d5e00011185018239de35da19c174
    6db0a3002b
  122. build: Bump to 25.99 088a93dce8
  123. doc: Remove 25.0 release note fragments 9c24826e7b
  124. Merge bitcoin/bitcoin#27503: Bump to 25.99 and remove release note fragments
    9c24826e7b58722d7b0ddb8f18f985ba6f17b106 doc: Remove 25.0 release note fragments (Andrew Chow)
    088a93dce8e0f406e2c09d1df181fb8aa31532a4 build: Bump to 25.99 (Andrew Chow)
    
    Pull request description:
    
      Pre-25.x branch off version bump and release note fragments removal.
    
      The 25.0 draft release notes are in the dev wiki: https://github.com/bitcoin-core/bitcoin-devwiki/wiki/25.0-Release-Notes-Draft
    
    ACKs for top commit:
      fanquake:
        ACK 9c24826e7b58722d7b0ddb8f18f985ba6f17b106
    
    Tree-SHA512: f7c7b04aa904e946bc672b5b07082a819b9d76ebccda0838bc27d0e6179cfb88b8f110500d5ea815f711580916bcfa0275774ec50a7298a4c66e645647111125
    bbbf89a9de
  125. Merge bitcoin/bitcoin#27214: addrman: Enable selecting addresses by network
    17e705428ddf80c7a7f31fe5430d966cf08a37d6 doc: clarify new_only param for Select function (Amiti Uttarwar)
    b0010c83a1b4a3d21719cb68e37faf9b1172522a bench: test select for a new table with only one address (Amiti Uttarwar)
    9b91aae08579c77d2fd5506804c8e2e0cda0d274 bench: add coverage for addrman select with network parameter (Amiti Uttarwar)
    22a4d1489c0678a90c00318203cfce61672f20b7 test: increase coverage of addrman select (without network) (Amiti Uttarwar)
    a98e542e0c18f7cb2340179631806f14b07430c3 test: add addrman test for special case (Amiti Uttarwar)
    5c8b4baff27e0ccd27fda6e915b956d1e8dd7ce2 tests: add addrman_select_by_network test (Amiti Uttarwar)
    6b229284fd2209938ee8fdffed4d080395b3aa05 addrman: add functionality to select by network (Amiti Uttarwar)
    26c3bf11e2487ed0ac578fb92619c148336003cb scripted-diff: rename local variables to match modern conventions (Amiti Uttarwar)
    48806412e2bcd023b78fc05f6c9ce092360d1db1 refactor: consolidate select logic for new and tried tables (Amiti Uttarwar)
    ca2a9c5f8f14b792a14e81f73b1910a4c8799b93 refactor: generalize select logic (Amiti Uttarwar)
    052fbcd5a791855406141e85d32e42e297220fe9 addrman: Introduce helper to generalize looking up an addrman entry (Amiti Uttarwar)
    9bf078f66c8f286e1ab5e34b8eeed7d80290a897 refactor: update Select_ function (Amiti Uttarwar)
    
    Pull request description:
    
      For the full context & motivation of this patch, see #27213
    
      This is joint work with mzumsande.
    
      This PR adds functionality to `AddrMan::Select` to enable callers to specify a network they are interested in.
    
      Along the way, it refactors the function to deduplicate the logic, updates the local variables to match modern conventions, adds test coverage for both the new and existing `Select` logic, and adds bench tests for the worst case performance of both the new and existing `Select` logic.
    
      This functionality is used in the parent PR.
    
    ACKs for top commit:
      vasild:
        ACK 17e705428ddf80c7a7f31fe5430d966cf08a37d6
      brunoerg:
        re-ACK 17e705428ddf80c7a7f31fe5430d966cf08a37d6
      ajtowns:
        ACK 17e705428ddf80c7a7f31fe5430d966cf08a37d6
      mzumsande:
        Code Review ACK 17e705428ddf80c7a7f31fe5430d966cf08a37d6
    
    Tree-SHA512: e99d1ce0c44a15601a3daa37deeadfc9d26208a92969ecffbea358d57ca951102d759734ccf77eacd38db368da0bf5b6fede3cd900d8a77b3061f4adc54e52d8
    3a93957a5d
  126. Merge bitcoin/bitcoin#25325: Add pool based memory resource
    9f947fc3d4b779f017332135323b34e8f216f613 Use PoolAllocator for CCoinsMap (Martin Leitner-Ankerl)
    5e4ac5abf54f8e6d6330df0c73119aa0cca4c103 Call ReallocateCache() on each Flush() (Martin Leitner-Ankerl)
    1afca6b663bb54022afff193fd9d83856606b189 Add PoolResource fuzzer (Martin Leitner-Ankerl)
    e19943f049ed8aa4f32a1d8440a9fbf160367f0f Calculate memory usage correctly for unordered_maps that use PoolAllocator (Martin Leitner-Ankerl)
    b8401c3281978beed6198b2f9782b6a8dd35cbd7 Add pool based memory resource & allocator (Martin Leitner-Ankerl)
    
    Pull request description:
    
      A memory resource similar to `std::pmr::unsynchronized_pool_resource`, but optimized for node-based containers. The goal is to be able to cache more coins with the same memory usage, and allocate/deallocate faster.
    
      This is a reimplementation of #22702. The goal was to implement it in a way that is simpler to review & test
    
      * There is now a generic `PoolResource` for allocating/deallocating memory. This has practically the same API as `std::pmr::memory_resource`. (Unfortunately I cannot use std::pmr because libc++ simply doesn't implement that API).
      * Thanks to sipa there is now a fuzzer for PoolResource! On a fast machine I ran it for ~770 million executions without finding any issue.
    
      * The estimation of the correct node size is now gone, PoolResource now has multiple pools and just needs to be created large enough to have space for the unordered_map nodes.
    
      I ran benchmarks with #22702, mergebase, and this PR. Frequency locked Intel i7-8700, clang++ 13.0.1 to reindex up to block 690000.
    
      ```sh
      bitcoind -dbcache=5000 -assumevalid=00000000000000000002a23d6df20eecec15b21d32c75833cce28f113de888b7 -reindex-chainstate -printtoconsole=0 -stopatheight=690000
      ```
    
      The performance is practically identical with #22702, just 0.4% slower. It's ~21% faster than master:
    
      ![Progress in Million Transactions over Time(2)](https://user-images.githubusercontent.com/14386/173288685-91952ade-f304-4825-8bfb-0725a71ca17b.png)
    
      ![Size of Cache in MiB over Time](https://user-images.githubusercontent.com/14386/173291421-e6b410be-ac77-479b-ad24-5fafcebf81eb.png)
      Note that on cache drops mergebase's memory doesnt go so far down because it does not free the `CCoinsMap` bucket array.
    
      ![Size of Cache in Million tx over Time(1)](https://user-images.githubusercontent.com/14386/173288703-a80c9c9e-93c8-4a16-9df8-610c89c61cc4.png)
    
    ACKs for top commit:
      LarryRuane:
        ACK 9f947fc3d4b779f017332135323b34e8f216f613
      achow101:
        re-ACK 9f947fc3d4b779f017332135323b34e8f216f613
      john-moffett:
        ACK 9f947fc3d4b779f017332135323b34e8f216f613
      jonatack:
        re-ACK 9f947fc3d4b779f017332135323b34e8f216f613
    
    Tree-SHA512: 48caf57d1775875a612b54388ef64c53952cd48741cacfe20d89049f2fb35301b5c28e69264b7d659a3ca33d4c714d47bafad6fd547c4075f08b45acc87c0f45
    5aa0c82ccd
  127. Merge bitcoin/bitcoin#26720: wallet: coin selection, don't return results that exceed the max allowed weight
    25ab14712b9d80276016f9fc9bff7fb9c1d09635 refactor: coinselector_tests, unify wallet creation code (furszy)
    ba9431c505e1590db6103b9632134985cd4704dc test: coverage for bnb max weight (furszy)
    5a2bc45ee0b123e461c5191322ed0b43524c3d82 wallet: clean post coin selection max weight filter (furszy)
    2d112584e384de10021c64e4700455d71326824e coin selection: BnB, don't return selection if exceeds max allowed tx weight (furszy)
    d3a1c098e4b5df2ebbae20c6e390c3d783950e93 test: coin selection, add coverage for SRD (furszy)
    9d9689e5a657956db8a30829c994600ec7d3098b coin selection: heap-ify SRD, don't return selection if exceeds max tx weight (furszy)
    6107ec2229c5f5b4e944a6b10d38010c850094ac coin selection: knapsack, select closest UTXO above target if result exceeds max tx size (furszy)
    1284223691127e76135a46d251c52416104f0ff1 wallet: refactor coin selection algos to return util::Result (furszy)
    
    Pull request description:
    
      Coming from the following comment https://github.com/bitcoin/bitcoin/pull/25729#discussion_r1029324367.
    
      The reason why we are adding hundreds of UTXO from different sources when the target
      amount is covered only by one of them is because only SRD returns a usable result.
    
      Context:
      In the test, we create 1515 UTXOs with 0.033 BTC each, and 1 UTXO with 50 BTC. Then
      perform Coin Selection to fund 49.5 BTC.
    
      As the selection of the 1515 small UTXOs exceeds the max allowed tx size, the
      expectation here is to receive a selection result that only contain the big UTXO.
      Which is not happening for the following reason:
    
      Knapsack returns a result that exceeds the max allowed transaction size, when
      it should return the closest utxo above the target, so we fallback to SRD who
      selects coins randomly up until the target is met. So we end up with a selection
      result with lot more coins than what is needed.
    
    ACKs for top commit:
      S3RK:
        ACK 25ab14712b9d80276016f9fc9bff7fb9c1d09635
      achow101:
        ACK 25ab14712b9d80276016f9fc9bff7fb9c1d09635
      Xekyo:
        reACK 25ab14712b9d80276016f9fc9bff7fb9c1d09635
      theStack:
        Code-review ACK 25ab14712b9d80276016f9fc9bff7fb9c1d09635
    
    Tree-SHA512: 2425de4cc479b4db999b3b2e02eb522a2130a06379cca0418672a51c4076971a1d427191173820db76a0f85a8edfff100114e1c38fb3b5dc51598d07cabe1a60
    395b932807
  128. Merge bitcoin/bitcoin#27412: logging, net: add ASN from peers on logs
    0076bed45eb2b42111fa3f4c95181393c685a42e logging: log ASN when using `-asmap` (brunoerg)
    9836c76ae048698e4f7dab21e3be37313e8392ae net: add `GetMappedAS` in `CConnman` (brunoerg)
    
    Pull request description:
    
      When using `-asmap`, you can check the ASN assigned to the peers only with the RPC command `getpeerinfo` (check `mapped_as` field), however, it's not possible to check it in logs (e.g. see in logs the ASN of the peers when a new outbound peer has been connected). This PR includes the peers' ASN in debug output when using `-asmap`.
    
      Obs: Open this primarily to chase some Concept ACK, I've been using this on my node to facilitate to track the peers' ASN especially when reading the logs.
    
    ACKs for top commit:
      Sjors:
        tACK 0076bed45eb2b42111fa3f4c95181393c685a42e
      jamesob:
        ACK 0076bed45eb2b42111fa3f4c95181393c685a42e ([`jamesob/ackr/27412.1.brunoerg.logging_net_add_asn_from`](https://github.com/jamesob/bitcoin/tree/ackr/27412.1.brunoerg.logging_net_add_asn_from))
      achow101:
        ACK 0076bed45eb2b42111fa3f4c95181393c685a42e
    
    Tree-SHA512: c19cd11e8ab49962021f390459aadf6d33d221ae9a2c3df331a25d6865a8df470e2c8828f6e5219b8a887d6ab5b3450d34be9e26c00cca4d223b4ca64d51111b
    4c40837a45
  129. test: prevent intermittent failures
    Add to the tried table before the new table to make sure a new table collision
    is not possible
    
    Co-authored-by: Martin Zumsande <mzumsande@gmail.com>
    10a354f174
  130. test: Remove unused sanitizer suppressions
    * The GCC suppression was fixed in gcc-11, which is available on all LTS
      releases of Linux distros.
    * The feerate suppression was likely fixed and does not trigger anymore.
      If it was to trigger again, the underlying bug should be fixed instead
      of suppressing it.
    * The bench suppression does not trigger anymore.
    
    Also, add comments to tsan suppressions on how to reproduce.
    fa15a9934e
  131. Bump python minimum version to 3.8
    Also, switch ci_native_qt5 to g++-9 (from g++-8) to work around bugs.
    This should be fine, because the i686_centos task still checks for g++-8
    compatibility.
    
    See
    https://github.com/bitcoin/bitcoin/pull/27483#issuecomment-1513477050
    for the list of bugs.
    88881cf7ac
  132. test: Use python3.8 pow() fa6eb65167
  133. Merge bitcoin/bitcoin#27419: move-only: Extract common/args from util/system
    be55f545d53d44fdcf2d8ae802e9eae551d120c6 move-only: Extract common/args and common/config.cpp from util/system (TheCharlatan)
    
    Pull request description:
    
      This pull request is part of the `libbitcoinkernel` project https://github.com/bitcoin/bitcoin/issues/24303 https://github.com/bitcoin/bitcoin/projects/18 and more specifically its "Step 2: Decouple most non-consensus code from libbitcoinkernel". It is part of a series of patches splitting up the `util/system` files. Its preceding pull request is https://github.com/bitcoin/bitcoin/pull/27254.
    
      The pull request contains an extraction of ArgsManager related functions from util/system into their own common/ file.
    
      The background of this commit is an ongoing effort to decouple the libbitcoinkernel library from the ArgsManager. The ArgsManager belongs into the common library, since the kernel library should not depend on it. See [doc/design/libraries.md](https://github.com/bitcoin/bitcoin/blob/master/doc/design/libraries.md) for more information on this rationale.
    
    ACKs for top commit:
      MarcoFalke:
        re-ACK be55f545d53d44fdcf2d8ae802e9eae551d120c6  🚲
      ryanofsky:
        Code review ACK be55f545d53d44fdcf2d8ae802e9eae551d120c6. Just small cleanups since the last review.
      hebasto:
        ACK be55f545d53d44fdcf2d8ae802e9eae551d120c6, I have reviewed the code and it looks OK, I agree it can be merged.
    
    Tree-SHA512: 90eb03334af0155b823030b4f2ecf286d35058d700ee2ddbbaa445be19e31eb0fe982656f35bd14ecee3ad2c3d0db3746855cb8f3777eff7253713e42873e111
    669af32632
  134. Merge bitcoin/bitcoin#27498: test: Remove unused sanitizer suppressions
    fa15a9934ee1d331737c631e6ffc2ddfafaddb7f test: Remove unused sanitizer suppressions (MarcoFalke)
    
    Pull request description:
    
    ACKs for top commit:
      hebasto:
        ACK fa15a9934ee1d331737c631e6ffc2ddfafaddb7f
      fanquake:
        ACK fa15a9934ee1d331737c631e6ffc2ddfafaddb7f
    
    Tree-SHA512: 414dcddb1b2b515b19ec81926876512868bbb05f8ee7d7432c3dacb61dd0b0221c005a687651aa6dd8b8a856cf8391621ce2db0418ba56e81f6af08056f2af1a
    cfcea12b1f
  135. depends: latest config.guess ac462c58f9
  136. depends: latest config.sub 4a3f1db4ea
  137. Merge bitcoin/bitcoin#27464: fuzz: re-enable prioritisetransaction & analyzepsbt RPC
    faa7144d3cf41e6410d942a3c485982ee65b3c6e fuzz: re-enable prioritisetransaction & analyzepsbt RPC (MarcoFalke)
    
    Pull request description:
    
      The linked issue seems fixed, so it should be fine to re-enable
    
    ACKs for top commit:
      dergoegge:
        utACK faa7144d3cf41e6410d942a3c485982ee65b3c6e
    
    Tree-SHA512: a681c726fceacc27ab5a03d455c7808d33f3cb11fe7d253d455526568af840b29f0c3c1d97c54785ef9277e7891a3aa742ac73ccd3cf115b7606eba50864aaa9
    c63c8a1590
  138. ci: Bump ci/lint/Dockerfile
    This bump should not be needed, see discussion starting at
    https://github.com/bitcoin/bitcoin/pull/27483#issuecomment-1517739626
    fac395e5eb
  139. Merge bitcoin/bitcoin#27496: depends: reuse _config_opts for CMake options
    63c0c4ff10b2f6ed8510ef372a5b1f6a6494b179 depends: reuse _config_opts for CMake options (Cory Fields)
    
    Pull request description:
    
      Context: I'm [currently experimenting with building our depends with CMake when possible](https://github.com/theuni/bitcoin/commits/depends-cmake) as part of our future transition to CMake. Specifically zmq, libevent, libnatpmp, and miniupnpc all have existing CMake buildsystems. Building them with CMake will allow us to drop several deps that we currently have (autoconf, automake, pkg-config, etc) which would be unfortunate to carry over after the switch-over.
    
      But that's not relevant for this PR. This is just a very simple change that makes the above work easier to experiment with as it [adds a needed feature for CMake packages](https://github.com/theuni/bitcoin/commit/5733dc200004004dcce70eaa105d36ba2e75ce7b#diff-e6ed342a25092e0a6d0308e0bfd826044578847132cc6726ac4afa2ca767b61aR20). It's a no-op for the current builds.
    
      ---
    
      From commit description:
    
      This will allow us to use the existing machinery for filtering by arch, os, debug/release, etc.
    
      For example, the following becomes possible for libevent when building with CMake:
    
      `$(package)_config_opts_release=-DEVENT__DISABLE_DEBUG_MODE`
    
      Now the define is only set when not building depends with DEBUG=1
    
    ACKs for top commit:
      hebasto:
        ACK 63c0c4ff10b2f6ed8510ef372a5b1f6a6494b179
    
    Tree-SHA512: 17d123219d2f98c017880196966ffebd5d09d3e2db8e443e227eb7e49da46e9d971fbe7fd2b99a324fc367e1bbe0ac3cd15b399bce98dd87fbb144d767e15fe7
    f3f5c97126
  140. Merge bitcoin/bitcoin#25939: rpc: In `utxoupdatepsbt` also look for the tx in the txindex
    6e9f8bb050785dbc754b6bb493aad9139908ef98 rpc, tests: in `utxoupdatepsbt` also look for the transaction in the txindex (ishaanam)
    a5b4883fb43d01bfef1244df62c64bf8691ca63a rpc: extract psbt updating logic into ProcessPSBT (ishaanam)
    
    Pull request description:
    
      Previously the `utxoupdatepsbt` RPC, added in #13932, only updated the inputs spending segwit outputs with the `witness_utxo`, because the full transaction is needed for legacy inputs. Before this RPC looked for just the utxos in the utxo set and the mempool. This PR makes it so that if the user has txindex enabled, then the full transaction is looked for there for all inputs. If it is not found in the txindex or  txindex isn't enabled, then the mempool is checked for the full transaction. If the transaction an input is spending from is still not found at that point, then the utxo set is searched and the inputs spending segwit outputs are updated with just the utxo.
    
    ACKs for top commit:
      achow101:
        ACK 6e9f8bb050785dbc754b6bb493aad9139908ef98
      Xekyo:
        ACK 6e9f8bb050785dbc754b6bb493aad9139908ef98
    
    Tree-SHA512: 078db3c37a1ecd5816d80a42e8bd1341e416d661f508fa5fce0f4e1249fefd7b92a0d45f44957781cb69d0953145ef096ecdd4545ada39062be27742402dac6f
    2755aa5121
  141. Merge bitcoin/bitcoin#27506: test: prevent intermittent failures
    10a354f1740a5c1b913d0b6951e80fb5401ab43a test: prevent intermittent failures (Amiti Uttarwar)
    
    Pull request description:
    
      Follow up to #27214 - add an address to the tried table before the new table to make sure a new table collision is not possible.
    
    ACKs for top commit:
      mzumsande:
        Code review ACK 10a354f1740a5c1b913d0b6951e80fb5401ab43a - the fix is what I suggested [here](https://github.com/bitcoin/bitcoin/pull/27214#discussion_r1169169601) and should make these intermittent failures impossible.
    
    Tree-SHA512: 24099f02e1915395130065af0ef6a2a1893955d222517d156d928765541d9c427da00172a9b5a540163f4d6aae93ca3882e8267eeb35ecc595d42178abc6191c
    49d07ea9a1
  142. test: simplify uint256 (de)serialization routines
    These routines look fancy, but do nothing more than converting between
    byte objects of length 32 to/from integers in little endian byte order
    and can be replaced by simple one-liners, using the int.{from,to}_bytes
    methods (available since Python 3.2).
    96bf0bca4a
  143. Merge bitcoin/bitcoin#27508: build: use latest config.{guess,sub} in depends
    4a3f1db4ea5f90277cf7f57c051a2285e8b42468 depends: latest config.sub (fanquake)
    ac462c58f999ef1b9cd7d22c699dd189d3bb1e63 depends: latest config.guess (fanquake)
    
    Pull request description:
    
      Been a few years since we last updated these.
      Also related to https://github.com/bitcoin/bitcoin/pull/26422#issuecomment-1421178967.
    
    ACKs for top commit:
      TheCharlatan:
        ACK 4a3f1db4ea5f90277cf7f57c051a2285e8b42468
      hebasto:
        ACK 4a3f1db4ea5f90277cf7f57c051a2285e8b42468, I've got zero diff with files from the [upstream](https://git.savannah.gnu.org/gitweb/?p=config.git;a=tree).
    
    Tree-SHA512: 8f1af0813c56289c796a6e74965632dd6fa6dd135409250b2d5ebf7c1c2bfb4001195d35e5d7ecc0cad2a049468193b9fefc2b26beb7669afe6bba4d9c3ffa33
    397ed22162
  144. Merge bitcoin/bitcoin#27516: test: simplify uint256 (de)serialization routines
    96bf0bca4a0e3aa0b7c07d8c225861e72f970fa9 test: simplify uint256 (de)serialization routines (Sebastian Falbesoner)
    
    Pull request description:
    
      These routines look fancy, but do nothing more than converting between byte objects of length 32 to/from integers in little endian byte order and can be replaced by simple one-liners, using the `int.{from,to}_bytes` methods (available since Python 3.2).
    
    ACKs for top commit:
      MarcoFalke:
        lgtm ACK 96bf0bca4a0e3aa0b7c07d8c225861e72f970fa9
      brunoerg:
        crACK 96bf0bca4a0e3aa0b7c07d8c225861e72f970fa9
    
    Tree-SHA512: f3031502d61a936147867ad8a0efa841a9bbdd2acf8781653036889a38524f4f1a5c86b1e07157bf2d9663097e7b84be6846678d0883d2a334beafd87e9510f0
    2cc43de69b
  145. scripted-diff: Rename setSelected->m_selected_inputs
    -BEGIN VERIFY SCRIPT-
    sed -i 's/setSelected/m_selected_inputs/g' src/wallet/coincontrol.h src/wallet/coincontrol.cpp
    -END VERIFY SCRIPT-
    becc45b589
  146. wallet: Use std::optional for GetExternalOutput and fixups 1db23da6e1
  147. wallet: Move CoinCointrol definitions to .cpp
    Move definitions to coincontrol.cpp and add documentation.
    94776621ba
  148. refactor: Make ListSelected return vector daba95700b
  149. Merge bitcoin/bitcoin#26933: mempool: disallow txns under min relay fee, even in packages
    bf77fc9cb45209b9c560208c65abc94209cd7919 [test] mempool full in package accept (glozow)
    b51ebccc28e66c1822ab22d2d178be55c6618196 [validation] set PackageValidationState when mempool full (glozow)
    563a2ee4f564c8ea5f8313d711b196e260568c04 [policy] disallow transactions under min relay fee, even in packages (glozow)
    c4554fe894d7af8e666f5d424deccddf516713ef [test] package cpfp bumps parents <mempoolminfee but >=minrelaytxfee (glozow)
    ac463e87df728689701810c3961155c49fdc5b31 [test util] mock mempool minimum feerate (glozow)
    
    Pull request description:
    
      Part of package relay, see #27463.
    
      Note that this still allows packages to bump transactions that are below the dynamic mempool minimum feerate, which means this still solves the "mempool is congested and my presigned 1sat/vB tx is screwed" problem for all transactions.
    
      On master, the package policy (only accessible through regtest-only RPC submitpackage) allows 0-fee (or otherwise below min relay feerate) transactions if they are bumped by a child. However, with default package limits, we don't yet have a DoS-resistant way of ensuring these transactions remain bumped throughout their time in the mempool. Primarily, the fee-bumping child may later be replaced by another transaction that doesn't bump the parent(s). The parent(s) could potentially stay bumped by other transactions, but not enough to ever be selected by the `BlockAssembler` (due to `blockmintxfee`).
    
      For example, (tested [here](https://github.com/glozow/bitcoin/commits/26933-motivation)):
      - The mempool accepts 24 below-minrelayfeerate transactions ("0-fee parents"), all bumped by a single high-fee transaction ("the fee-bumping child"). The fee-bumping child also spends a confirmed UTXO.
      - Two additional children are added to each 0-fee parent. These children each pay a feerate slightly above the minimum relay feerate (e.g. 1.9sat/vB) such that, for each 0-fee parent, the total fees of its two children divided by the total size of the children and parent is above the minimum relay feerate.
      - If a block template is built now, all transactions would be selected.
      - A transaction replaces the the fee-bumping child, spending only the confirmed UTXO and not any of the outputs from the 0-fee parents.
       - The 0-fee parents now each have 2 children. Their descendant feerates are above minrelayfeerate, which means that they remain in the mempool, even if the mempool evicts all below-minrelayfeerate packages.
       - If a block template is built now, none of the 0-fee parents or their children would be selected.
       - Even more low-feerate descendants can be added to these below-minrelayfeerate packages and they will not be evicted until they expire or the mempool reaches capacity.
    
      Unless we have a DoS-resistant way of ensuring package CPFP-bumped transactions are always bumped, allowing package CPFP to bump below-minrelayfeerate transactions can result in these problematic situations. See #27018 which proposes a partial solution with some limitations, and contains discussion about potential improvements to eviction strategy. While no adequate solution exists, for now, avoid these situations by requiring all transactions to meet min relay feerate.
    
    ACKs for top commit:
      ajtowns:
        reACK bf77fc9cb45209b9c560208c65abc94209cd7919
      instagibbs:
        re-ACK https://github.com/bitcoin/bitcoin/pull/26933/commits/bf77fc9cb45209b9c560208c65abc94209cd7919
    
    Tree-SHA512: 28940f41493a9e280b010284316fb8caf1ed7b2090ba9a4ef8a3b2eafc5933601074b142f4f7d4e3c6c4cce99d3146f5c8e1393d9406c6f2070dd41c817985c9
    bdfe27c9d2
  150. Merge bitcoin/bitcoin#25158: rpc, wallet: add abandoned field for all categories of transaction in ListTransaction
    0c520679ab5f0ba99584cb356ec28ef089f14735 doc: add release notes for `abandoned` field in `gettransaction` and `listtransactions` (brunoerg)
    a1aaa7f51f4205ae4d27fbceb2c3a97bc114e828 rpc, wallet: add `abandoned` field for all categories of transactions in ListTransactions (brunoerg)
    
    Pull request description:
    
      Fixes #25130
    
    ACKs for top commit:
      achow101:
        re-ACK 0c520679ab5f0ba99584cb356ec28ef089f14735
    
    Tree-SHA512: 1864460d76decab7898737c96517d722055eb8f81ca52248fe1035723258c6cd4a93251e06a86ecbbb0b0a80af1466b2c86fb142ace4ccb74cc40d5dc3967d7f
    91ccb62faa
  151. rpc: return block hash & height in getbalances, gettransaction & getwalletinfo JSONs
    Co-authored-by: Aurèle Oulès <aurele@oules.com>
    710b83938a
  152. Merge bitcoin/bitcoin#25937: test: add coverage for rpc error when trying to rescan beyond pruned data
    cca4f82b828669ae23f6ac64fb83e068b81ae189 test: add coverage for rpc error when trying to rescan beyond pruned data (brunoerg)
    
    Pull request description:
    
      This PR adds test coverage for the following rpc error:
      https://github.com/bitcoin/bitcoin/blob/15692e2641592394bdd4da0a7c2d371de8e576dd/src/wallet/rpc/transactions.cpp#L896-L899
    
    ACKs for top commit:
      MarcoFalke:
        lgtm ACK cca4f82b828669ae23f6ac64fb83e068b81ae189
      aureleoules:
        ACK cca4f82b828669ae23f6ac64fb83e068b81ae189
    
    Tree-SHA512: 724a055e9f6cddf1935699e8769015115f24f6485a0bd87e8660072ee44a15c1bddfdda848acc101ea7184b7e65a33b5b0d80b563d2ba3ecdab7a631378d6476
    ba4076d26f
  153. Merge bitcoin/bitcoin#26794: test: test banlist database recreation
    4bdcf571584cbe44ad5533a3c991d3b0b4b2c84f test: test banlist database recreation (brunoerg)
    
    Pull request description:
    
      This PR adds test coverage for 'banlist database recreation'. If it wasn't able to read ban db (in `LoadBanlist`), so it should create a new (an empty, ofc) one.
      https://github.com/bitcoin/bitcoin/blob/d8bdee0fc889def7c5f5076da13db4fce0a3728a/src/banman.cpp#L28-L45
    
    ACKs for top commit:
      MarcoFalke:
        lgtm ACK 4bdcf571584cbe44ad5533a3c991d3b0b4b2c84f
    
    Tree-SHA512: d9d0cd0c4b3797189dff00d3a634878188e7cf51e78346601fc97e2bf78c495561705214062bb42ab8e491e0d111f8bfcf74dbc801768bc02cf2b45f162aad85
    03cb2fce4a
  154. Merge bitcoin/bitcoin#26314: test: perturb anchors.dat to test error during initialization
    33fdfc7986455191df8ce339261bc0561115cf7f test: perturb anchors.dat to test it doesn't throw an error during initialization (brunoerg)
    
    Pull request description:
    
      Got some inspiration from `feature_init`. This PR tests whether perturbing `anchors.dat` doesn't throw any error during initialization.
    
      https://github.com/bitcoin/bitcoin/blob/3f1f5f6f1ec49d0fb2acfddec4021b3582ba0553/src/addrdb.cpp#L223-L235
    
    ACKs for top commit:
      MarcoFalke:
        lgtm ACK 33fdfc7986455191df8ce339261bc0561115cf7f
    
    Tree-SHA512: e6584debb37647677581fda08366b45b42803022cc4c4f1d5a7bd5e9e04d64da77656dad2b804855337487bdcfc891f300a2e03668d6122de769dd14f39af9ed
    904a98702e
  155. Merge bitcoin/bitcoin#27483: Bump python minimum version to 3.8
    fac395e5eb2cd3210ba6345f777a586a9bec84e3 ci: Bump ci/lint/Dockerfile (MarcoFalke)
    fa6eb6516727a8675dc6e46634d8343e282528ab test: Use python3.8 pow() (MarcoFalke)
    88881cf7ac029aea660c2413ca8e2a5136fcd41b Bump python minimum version to 3.8 (MarcoFalke)
    
    Pull request description:
    
      There is no pressing reason to drop support for 3.7, however there are several maintenance issues:
    
      * There is no supported operating system that ships 3.7 by default. (debian:buster is EOL and unmaintained to the extent that it doesn't run in the CI environment. See https://github.com/bitcoin/bitcoin/pull/27340#issuecomment-1484988445)
      * Compiling python 3.7 from source is also unsupported on at least macos, according to https://github.com/bitcoin/bitcoin/pull/24017#issuecomment-1107820790
      * Recent versions of lief require 3.8, see https://github.com/bitcoin/bitcoin/pull/27507#issuecomment-1517561645
    
      Fix all maintenance issues by bumping the minimum.
    
    ACKs for top commit:
      RandyMcMillan:
        ACK fac395e
      fjahr:
        ACK fac395e5eb2cd3210ba6345f777a586a9bec84e3
      fanquake:
        ACK fac395e5eb2cd3210ba6345f777a586a9bec84e3
    
    Tree-SHA512: c198decdbbe29d186d73ea3f6549d8a38479383495d14a965a2f9211ce39637b43f13a4c2a5d3bf56e2d468be4bbe49b4ee8e8e19ec69936ff43ddf2b714c712
    d89aca1bdb
  156. test: remove modinv python util helper function dc14ba08e6
  157. rpc: scanblocks, do not traverse the whole chain block by block
    The current flow walks-through every block in the active chain until
    hits the chain tip or processes 10k blocks, then calls
    `lookupFilterRange()` to obtain all the filters from that
    particular range.
    
    This is only done to obtain the heights range to look up the block
    filters. Which is unneeded.
    
    As `scanblocks` only lookup block filters in the active chain, we can
    directly calculate the lookup range heights, by using the chain tip,
    without requiring to traverse the chain block by block.
    ce50acc54f
  158. rpc: scanblocks, add "completed" flag to the result obj
    To tell the user whether the process was aborted or not.
    
    Plus, as the process can be aborted prior to the end range,
    have also changed the "to_height" result value to return the
    last scanned block instead of the end range block.
    b922f6b526
  159. Merge bitcoin/bitcoin#27224: refactor: Remove CAddressBookData::destdata
    a5986e82dd2b8f923d60f9e31760ef62b9010105 refactor: Remove CAddressBookData::destdata (Ryan Ofsky)
    5938ad0bdb013953861c7cd15a95f00998a06f44 wallet: Add DatabaseBatch::ErasePrefix method (Ryan Ofsky)
    
    Pull request description:
    
      This is cleanup that doesn't change external behavior. Benefits of the cleanup are:
    
      - Removes awkward `StringMap` intermediate representation for wallet address metadata.
      - Simplifies `CWallet`, deals with used address and received request serialization in `walletdb.cpp` instead of higher level wallet code
      - Adds test coverage and documentation
    
      This PR doesn't change externally observable behavior. Internally, the only change in behavior is that `EraseDestData` deletes rows directly from the database because they are no longer stored in memory. This is more direct and efficient because it uses a single lookup and scan instead of multiple lookups.
    
      Motivation for this cleanup is making changes like #18550, #18192, #13756 easier to reason about and less likely to result in unintended behavior and bugs
    
      ---
    
      This PR is a rebased copy of #18608. For some reason that PR is locked and couldn't be reopened or commented on.
    
      This PR is an alternative to #27215 with differences described in https://github.com/bitcoin/bitcoin/pull/27215#pullrequestreview-1329028143
    
    ACKs for top commit:
      achow101:
        ACK a5986e82dd2b8f923d60f9e31760ef62b9010105
      furszy:
        Code ACK a5986e82
    
    Tree-SHA512: 6bd3e402f1f60263fbd433760bdc29d04175ddaf8307207c4a67d59f6cffa732e176ba57886e02926f7a1615dce0ed9cda36c8cbc6430aa8e5b56934c23f3fe7
    5325a61167
  160. Merge bitcoin/bitcoin#25680: rpc, docs: Add note for commands that supports only legacy wallets
    9141e4395a5f923059ad61ac6ba42a1a89e92cb0 rpc, docs: Add note for commands that supports only legacy wallets (Yusuf Sahin HAMZA)
    
    Pull request description:
    
      Refs #25363, apparently issue is not updated since over a month, so i decided to put the same `importaddress` note in #25368 to other rpc commands that needs this note.
    
      Note is added for following commands:
    
      - `importprivkey`
      - `importpubkey`
      - `importwallet`
      - `dumpprivkey`
      - `dumpwallet`
      - `importmulti`
      - `addmultisigaddress`
      - `sethdseed`
    
    ACKs for top commit:
      achow101:
        ACK 9141e4395a5f923059ad61ac6ba42a1a89e92cb0
    
    Tree-SHA512: f3dc05d26577fd8dbe2bd69cb5c14ffccebacd6010402af44427b3d01be8484895dfcf33d55dfa766eadb7f9f3bae5cc4c2add3ac816a2ac60e8beb5a97527f3
    071308860a
  161. Merge bitcoin/bitcoin#27195: bumpfee: allow send coins back to yourself
    be72663a1521bc6cdf16d43a4feae7c5b57735c0 test: bumpfee, add coverage for "send coins back to yourself" (furszy)
    7bffec6715a75bb2c8631177d39f984aabc656ba bumpfee: enable send coins back to yourself (furszy)
    
    Pull request description:
    
      Simple example:
    
      1) User_1 sends 0.1 btc to user_2 on a low fee transaction.
      2) After few hours, the tx is still in the mempool, user_2
         is not interested anymore, so user_1 decides to cancel
         it by sending coins back to himself.
      3) User_1 has the bright idea of opening the explorer and
         copy the change output address of the transaction. Then
         call bumpfee providing such output (in the "outputs" arg).
    
      Currently, this is not possible. The wallet fails with
      "Unable to create transaction. Transaction must have at least
      one recipient" error.
      The error reason is because we discard the provided output
      from the recipients list and set it inside the coin control
      so the process adds it later (when the change is calculated).
      But.. there is no later if the tx has no outputs.
    
    ACKs for top commit:
      ishaanam:
        reACK be72663a1521bc6cdf16d43a4feae7c5b57735c0
      achow101:
        ACK be72663a1521bc6cdf16d43a4feae7c5b57735c0
    
    Tree-SHA512: c2c38290a998f9b426a830d9624c7feb730158980ac186f8fb0138d5e200935d6538307bc60a2c3d0b7b6ee2b4ffb77a1e98baf8feb1d20a7d825f6055ac377f
    3497df4c75
  162. Merge bitcoin/bitcoin#26780: rpc: simplify scan blocks
    b922f6b5262884f42d7483f1e9af35650bdb53a7 rpc: scanblocks, add "completed" flag to the result obj (furszy)
    ce50acc54fa313a92d48ed03e46ce8aabcf267e5 rpc: scanblocks, do not traverse the whole chain block by block (furszy)
    
    Pull request description:
    
      Coming from https://github.com/bitcoin/bitcoin/pull/23549#pullrequestreview-1105712566
    
      The current `scanblocks` flow walks-through every block in the active chain
      until hits the chain tip or processes 10k blocks, then calls `lookupFilterRange`
      function to obtain all filters from that particular range.
    
      This is only done to obtain the heights range to look up the block
      filters. Which is unneeded.
    
      As `scanblocks` only lookup block filters in the active chain, we can
      directly calculate the lookup range heights, by using the chain tip,
      without requiring to traverse the chain block by block.
    
    ACKs for top commit:
      achow101:
        ACK b922f6b5262884f42d7483f1e9af35650bdb53a7
      TheCharlatan:
        ACK b922f6b5262884f42d7483f1e9af35650bdb53a7
    
    Tree-SHA512: 0587e6d9cf87a59184adb2dbc26a4e2bce3a16233594c6c330f69feb49bf7dc63fdacf44fc20308e93441159ebc604c63eb7de19204d3e745a2ff16004892b45
    0eae93e65f
  163. Merge bitcoin/bitcoin#26604: test: add coverage for `-bantime`
    9c18992bbaf649f8c5461d5e4dc39eb1a07ffc77 test: add coverage for `-bantime` (brunoerg)
    
    Pull request description:
    
      This PR adds test coverage for `-bantime`. This flag sets the time in seconds how long the IP is banned (in the case you don't explicitly set `bantime` when using `setban`).
    
    ACKs for top commit:
      MarcoFalke:
        lgtm ACK 9c18992bbaf649f8c5461d5e4dc39eb1a07ffc77
    
    Tree-SHA512: e95f8608aa5df9b09cc5577daae662ed79ef5d5c69ee5e704d7c69520b9b51cc142e9e6be69d80356eda25a5215c4770b1a208638560c48cd3bc8f6d195a371f
    ab99b95b00
  164. Merge bitcoin/bitcoin#26733: test: Add test for `sendmany` rpc that uses `subtractfeefrom` parameter
    057057a2d7e23c2e29cbfd29a5124b3947a33757 Add test for `sendmany` rpc that uses `subtractfeefrom` parameter (Yusuf Sahin HAMZA)
    
    Pull request description:
    
      This PR adds test that uses `sendmany` rpc to send **BTC** to multiple addresses using `subtractfeefrom` parameter, then checks receiver addresses balances to make sure fees are subtracted correctly.
    
    ACKs for top commit:
      achow101:
        ACK 057057a2d7e23c2e29cbfd29a5124b3947a33757
    
    Tree-SHA512: 51167120d489f0ff7b8b9855424d07cb55a8965984f904643cddf45e7a08c350eaded498c350ec9c660edf72c2f128ec142347c9c79d5043d9f6cd481b15cd7e
    539452242e
  165. Merge bitcoin/bitcoin#27538: test: Remove modinv python util helper function
    dc14ba08e6e502f3e31d935bcd053a287c6610ca test: remove modinv python util helper function (Fabian Jahr)
    
    Pull request description:
    
      Since #27483 was merged the `modinv()` body is just one line calling pythons own implementation of `pow()`. We can just remove the function as it doesn't seem to add any value. Additionally the comment in the function is now outdated and the test is only testing two ways of doing modular inverse but both using python's `pow()` function.
    
    ACKs for top commit:
      theStack:
        ACK dc14ba08e6e502f3e31d935bcd053a287c6610ca
    
    Tree-SHA512: e8b470c72dc3f9fd53699d0684650517b1ea35ad1d4c01cf9472c80d3e4474c0c72e429c0bd201eb99d204c87eee0d68285e6a388e4c506f30e14b2bff9c1c32
    be0325c6a6
  166. Merge bitcoin/bitcoin#27191: blockstorage: Adjust fastprune limit if block exceeds blockfile size
    8f14fc86225d8fe77353f61ebd6b0bdda8d13aa9 test: cover fastprune with excessive block size (Matthew Zipkin)
    271c23e87f61276d7acab74e115b25a35144c8b4 blockstorage: Adjust fastprune limit if block exceeds blockfile size (Martin Zumsande)
    
    Pull request description:
    
      The debug-only `-fastprune` option used in several tests is not always safe to use:
      If a `-fastprune` node receives a block larger than the maximum blockfile size of `64kb` bad things happen: The while loop in `BlockManager::FindBlockPos` never terminates, and the node runs oom because memory for `m_blockfile_info` is allocated in each iteration of the loop.
      The same would happen if a naive user used `-fastprune` on anything other than regtest (so this can be tested by syncing on signet for example, the first block that crashes the node is at height 2232).
    
      Change the approach by raising the blockfile size to the size of the block, if that block otherwise wouldn't fit (idea by TheCharlatan).
    
    ACKs for top commit:
      ryanofsky:
        Code review ACK 8f14fc86225d8fe77353f61ebd6b0bdda8d13aa9. Added new assert, test, and comment since last review
      TheCharlatan:
        ACK 8f14fc86225d8fe77353f61ebd6b0bdda8d13aa9
      pinheadmz:
        ACK 8f14fc86225d8fe77353f61ebd6b0bdda8d13aa9
    
    Tree-SHA512: df2fea30613ef9d40ebbc2416eacb574f6d7d96847db5c33dda22a29a2c61a8db831aa9552734ea4477e097f253dbcb6dcb1395d43d2a090cc0588c9ce66eac3
    8a373a5c7f
  167. ci: use LLVM/clang-16 in native_asan job
    Similar to #27298.
    1232c2f6b9
  168. ci: remove usage of untrusted bpfcc-tools
    We've migrated this job to Ubuntu 23.04, which
    ships with newer versions of the tools:
    https://packages.ubuntu.com/lunar/bpfcc-tools.
    f952e679cd
  169. test: added coverage to rpc_scantxoutset.py
    Included a test that checks if an invalid first argument is entered we
    receive a rpc error. The rpc should fail if "start", "status" or "abort"
    is not the first command.
    24d55fb9cf
  170. test: add ripemd160 to test framework modules list
    Currently test runner doesn't execute the unit tests of the ripemd160
    module, so add it to the list. All other framework modules that contain
    unit tests are included, as can be easily checked via
    `git grep unittest.TestCase ./test/functional/test_framework/`
    
    This is a late follow-up to PR #23716 (commit
    ad3e9e1f214d739e098c6ebbd300da5df1026a44).
    82e6e3cae5
  171. test: Simplify feature_fastprune.py fa17767154
  172. Merge bitcoin/bitcoin#27542: test: add ripemd160 to test framework modules list
    82e6e3cae50d30b28b98f0cb7789c28e68170d5e test: add ripemd160 to test framework modules list (Sebastian Falbesoner)
    
    Pull request description:
    
      Currently test runner doesn't execute the unit tests of the ripemd160 module, so add it to the list. All other framework modules that contain unit tests are included, as can be easily checked via
      `$ git grep unittest.TestCase ./test/functional/test_framework/`
    
      This is a late follow-up to PR #23716 (commit ad3e9e1f214d739e098c6ebbd300da5df1026a44).
    
    ACKs for top commit:
      MarcoFalke:
        lgtm ACK 82e6e3cae50d30b28b98f0cb7789c28e68170d5e
    
    Tree-SHA512: 10940e215f728291c7149931a356bfc42795c098bda76d760dfa68f86443a3755e1cd35cb9a8a7b2f48880beb53f3bee3842de2d74bcadd45c7b05c13ff04203
    cfe5da4c90
  173. Merge bitcoin/bitcoin#27453: test: added coverage to rpc_scantxoutset.py
    24d55fb9cfab88f546df35be5c0069b9b645438c test: added coverage to rpc_scantxoutset.py (kevkevin)
    
    Pull request description:
    
      Included a test that checks if an invalid first argument is entered we receive a rpc error. The rpc should fail if "start", "status" or "abort" is not the first command.
    
      Relavant: mentioned in https://github.com/bitcoin/bitcoin/pull/27422
    
    ACKs for top commit:
      MarcoFalke:
        lgtm ACK 24d55fb9cfab88f546df35be5c0069b9b645438c
      theStack:
        ACK 24d55fb9cfab88f546df35be5c0069b9b645438c
    
    Tree-SHA512: 4b804235d3fa17c7bf492068ab47c1f87cb6cfc1a428c51e273ec059d3c41f581bcc467bb5d6d8bbf2fab14c60cd1c52a30c50009efe1c9b5adee70c88897ad9
    d654c762c8
  174. Merge bitcoin/bitcoin#27360: ci: use LLVM/clang-16 in native_asan job
    f952e679cd9c642e2c1f484ad8d75510ce25324c ci: remove usage of untrusted bpfcc-tools (fanquake)
    1232c2f6b9c8c6c8c2bb249cf8368cebd77fb63d ci: use LLVM/clang-16 in native_asan job (fanquake)
    
    Pull request description:
    
      Similar to #27298. Working for me on `x86_64` and solves the issue I currently see with TSAN on `aarch64` with master (68828288e5d35c17848ab3da8cd231d1b69651c0):
      ```bash
      crc32c/src/crc32c_arm64.cc:101:26: runtime error: load of misaligned address 0xffff84400406 for type 'uint64_t' (aka 'unsigned long'), which requires 8 byte alignment
      0xffff84400406: note: pointer points here
       b9 c5 22 00 01 01  1a 6c 65 76 65 6c 64 62  2e 42 79 74 65 77 69 73  65 43 6f 6d 70 61 72 61  74 6f
                   ^
          #0 0xaaaaaddaf0b4 in crc32c::ExtendArm64(unsigned int, unsigned char const*, unsigned long) src/./src/crc32c/src/crc32c_arm64.cc:101:26
          #1 0xaaaaadd2c838 in leveldb::crc32c::Value(char const*, unsigned long) src/./leveldb/util/crc32c.h:20:60
          #2 0xaaaaadd2c838 in leveldb::log::Reader::ReadPhysicalRecord(leveldb::Slice*) src/./src/leveldb/db/log_reader.cc:246:29
          #3 0xaaaaadd2ba9c in leveldb::log::Reader::ReadRecord(leveldb::Slice*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*) src/./src/leveldb/db/log_reader.cc:72:38
          #4 0xaaaaadd41710 in leveldb::VersionSet::Recover(bool*) src/./src/leveldb/db/version_set.cc:910:19
          #5 0xaaaaadcf9fec in leveldb::DBImpl::Recover(leveldb::VersionEdit*, bool*) src/./src/leveldb/db/db_impl.cc:320:18
          #6 0xaaaaadd12068 in leveldb::DB::Open(leveldb::Options const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, leveldb::DB**) src/./src/leveldb/db/db_impl.cc:1487:20
          #7 0xaaaaad314e80 in CDBWrapper::CDBWrapper(DBParams const&) src/./src/dbwrapper.cpp:156:30
          #8 0xaaaaace94880 in CBlockTreeDB::CBlockTreeDB(DBParams const&) src/./txdb.h:89:23
          #9 0xaaaaace94880 in std::_MakeUniq<CBlockTreeDB>::__single_object std::make_unique<CBlockTreeDB, DBParams>(DBParams&&) /usr/bin/../lib/gcc/aarch64-linux-gnu/11/../../../../include/c++/11/bits/unique_ptr.h:962:34
          #10 0xaaaaace94880 in ChainTestingSetup::ChainTestingSetup(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<char const*, std::allocator<char const*> > const&) src/./src/test/util/setup_common.cpp:188:51
          #11 0xaaaaace95da0 in TestingSetup::TestingSetup(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<char const*, std::allocator<char const*> > const&, bool, bool) src/./src/test/util/setup_common.cpp:243:7
          #12 0xaaaaace96730 in TestChain100Setup::TestChain100Setup(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<char const*, std::allocator<char const*> > const&, bool, bool) src/./src/test/util/setup_common.cpp:274:7
          #13 0xaaaaac1ddbc8 in blockfilter_index_tests::BuildChainTestingSetup::BuildChainTestingSetup() src/./src/test/blockfilter_index_tests.cpp:26:8
          #14 0xaaaaac1ddbc8 in blockfilter_index_tests::blockfilter_index_initial_sync::blockfilter_index_initial_sync() src/./src/test/blockfilter_index_tests.cpp:112:1
          #15 0xaaaaac1ddbc8 in blockfilter_index_tests::blockfilter_index_initial_sync_invoker() src/./src/test/blockfilter_index_tests.cpp:112:1
          #16 0xaaaaabf08f7c in boost::function0<void>::operator()() const /usr/include/boost/function/function_template.hpp:763:14
          #17 0xaaaaabf95468 in boost::detail::forward::operator()() /usr/include/boost/test/impl/execution_monitor.ipp:1388:32
          #18 0xaaaaabf95468 in boost::detail::function::function_obj_invoker0<boost::detail::forward, int>::invoke(boost::detail::function::function_buffer&) /usr/include/boost/function/function_template.hpp:137:18
          #19 0xaaaaabf8e12c in boost::function0<int>::operator()() const /usr/include/boost/function/function_template.hpp:763:14
          #20 0xaaaaabe7be14 in boost::execution_monitor::catch_signals(boost::function<int ()> const&) /usr/include/boost/test/impl/execution_monitor.ipp:903:16
          #21 0xaaaaabe7c1c0 in boost::execution_monitor::execute(boost::function<int ()> const&) /usr/include/boost/test/impl/execution_monitor.ipp:1301:16
          #22 0xaaaaabe6f47c in boost::execution_monitor::vexecute(boost::function<void ()> const&) /usr/include/boost/test/impl/execution_monitor.ipp:1397:5
          #23 0xaaaaabe75124 in boost::unit_test::unit_test_monitor_t::execute_and_translate(boost::function<void ()> const&, unsigned long) /usr/include/boost/test/impl/unit_test_monitor.ipp:49:9
          #24 0xaaaaabed19fc in boost::unit_test::framework::state::execute_test_tree(unsigned long, unsigned long, boost::unit_test::framework::state::random_generator_helper const*) /usr/include/boost/test/impl/framework.ipp:815:44
          #25 0xaaaaabed0f6c in boost::unit_test::framework::state::execute_test_tree(unsigned long, unsigned long, boost::unit_test::framework::state::random_generator_helper const*) /usr/include/boost/test/impl/framework.ipp:784:58
          #26 0xaaaaabed0f6c in boost::unit_test::framework::state::execute_test_tree(unsigned long, unsigned long, boost::unit_test::framework::state::random_generator_helper const*) /usr/include/boost/test/impl/framework.ipp:784:58
          #27 0xaaaaabe73878 in boost::unit_test::framework::run(unsigned long, bool) /usr/include/boost/test/impl/framework.ipp:1721:29
          #28 0xaaaaabe9d244 in boost::unit_test::unit_test_main(boost::unit_test::test_suite* (*)(int, char**), int, char**) /usr/include/boost/test/impl/unit_test_main.ipp:250:9
          #29 0xffff8f0773f8  (/lib/aarch64-linux-gnu/libc.so.6+0x273f8) (BuildId: f37f3aa07c797e333fd106472898d361f71798f5)
          #30 0xffff8f0774c8 in __libc_start_main (/lib/aarch64-linux-gnu/libc.so.6+0x274c8) (BuildId: f37f3aa07c797e333fd106472898d361f71798f5)
          #31 0xaaaaabda55ac in _start (/home/fedora/ci_scratch/ci/scratch/build/bitcoin-aarch64-unknown-linux-gnu/src/test/test_bitcoin+0x10e55ac) (BuildId: b7909adaefd9db6cd6a7c4d3d40207cf6bdaf4b3)
    
      SUMMARY: UndefinedBehaviorSanitizer: misaligned-pointer-use crc32c/src/crc32c_arm64.cc:101:26 in
      ```
    
    ACKs for top commit:
      dergoegge:
        utACK f952e679cd9c642e2c1f484ad8d75510ce25324c
      MarcoFalke:
        lgtm ACK f952e679cd9c642e2c1f484ad8d75510ce25324c
    
    Tree-SHA512: 9dee2abf73d3f23bb9979bfb453b48e39f0b7a5f58d43824ecf053a53e9800ed413b915382b274d1a84baf2999683e3b485463e377e0455b3f0ead65ed1d1916
    7b45d171f5
  175. test: Add util to mine invalid blocks
    With the current utils it is only possible to mine valid blocks. This
    commit adds new util methods to mine invalid blocks.
    fa846ee074
  176. Merge bitcoin/bitcoin#26094: rpc: Return block hash & height in getbalances, gettransaction and getwalletinfo
    710b83938ab5bbc4bd324d8b2e69461a2a1d2eec rpc: return block hash & height in getbalances, gettransaction & getwalletinfo JSONs (Harris)
    
    Pull request description:
    
      Reopens #18570 and closes #18567.
      I have rebased the original PR.
      Not sure why the original got closed as it was about to get merged.
    
    ACKs for top commit:
      achow101:
        ACK 710b83938ab5bbc4bd324d8b2e69461a2a1d2eec
    
    Tree-SHA512: d4478d990be98b1642e9ffb2930987f4a224e8bd64e2e35a5dda927a54c509ec9d712cd0eac35dc2bb89f00a1678e530ce14d7445f1dd93aa3a4cce2bc9b130d
    da9f62f912
  177. contrib: add ELF ABI check to symbol-check.py 65ba8a79a2
  178. Avoid dereferencing interruption_point if it is nullptr fa26e3462a
  179. clarify processing of mempool-msgs when NODE_BLOOM
    Under which circumstances we process received 'mempool' P2P messages
    caused confusion in #27426. Rather than bikeshedding the formulation
    of the IF-statement, this adds a comment clarifing when we process
    the message. Also, correcting the comment of `m_send_mempool`.
    
    Co-authored-by: willcl-ark <will8clark@gmail.com>
    4581a682d2
  180. Merge bitcoin/bitcoin#27553: test: Simplify feature_fastprune.py
    fa17767154e21e9ed00782a9e4cf9a3d1d66f5d1 test: Simplify feature_fastprune.py (MarcoFalke)
    
    Pull request description:
    
      The goal of the test is a single regression check to see if a RPC times out. It shouldn't do more than calling the RPC (and the minimum work needed to get there).
    
      Fix that by removing all blocktools imports and a `for` loop.
    
    ACKs for top commit:
      pinheadmz:
        ACK fa17767154e21e9ed00782a9e4cf9a3d1d66f5d1
      theStack:
        ACK fa17767154e21e9ed00782a9e4cf9a3d1d66f5d1
    
    Tree-SHA512: c9c0154102199b250015ece53005a14d52d857dfa986f3b02a2cb899f16ac8e040d24eb826f35ba15e5ee22ee6a59bf8f74bb8d576b9a12ac6e888beeaaf81cc
    067a835adb
  181. Merge bitcoin/bitcoin#26953: contrib: add ELF OS ABI check to symbol-check.py
    65ba8a79a2919a0bd89f2f2d981e072d4f2f549d contrib: add ELF ABI check to symbol-check.py (fanquake)
    
    Pull request description:
    
      Check that the operating system ABI version embedded into the release binaries, is the version we expect it to be.
    
    ACKs for top commit:
      laanwj:
        Code review ACK 65ba8a79a2919a0bd89f2f2d981e072d4f2f549d
      TheCharlatan:
        ACK 65ba8a79a2919a0bd89f2f2d981e072d4f2f549d
    
    Tree-SHA512: 798d7c3b05183becf113a2ea13d889e18f1cec01d3cc279e64dbddede4d57f87444978f3f52c44bc5fdf0ba93d77c7c0be37aa815f93f348c35da45dc3d30ac2
    49d543dcaf
  182. Merge bitcoin/bitcoin#27559: doc: clarify processing of mempool-msgs when NODE_BLOOM
    4581a682d2d1fdd0e56fb4a56e6228be878a04a3 clarify processing of mempool-msgs when NODE_BLOOM (0xb10c)
    
    Pull request description:
    
      Under which circumstances we process received 'mempool' P2P messages caused confusion in #27426. Rather than bike-shedding the formulation of the IF-statement, this adds a comment clarifying when we process the message. Also, correcting the `m_send_mempool` description.
    
    ACKs for top commit:
      dergoegge:
        ACK 4581a682d2d1fdd0e56fb4a56e6228be878a04a3
      willcl-ark:
        ACK 4581a682d2
      glozow:
        ACK 4581a682d2d1fdd0e56fb4a56e6228be878a04a3
    
    Tree-SHA512: 51ec673c3446b67c26f6c715430d0708b998b256260f5f5d0c034f271be8447d0bb8540dfd3879aa51904512fb26c9411766786c86287acff62d037a1df88855
    8f5da89625
  183. ci: Use arm_container.dockerfile fa6e2bfd05
  184. Merge bitcoin/bitcoin#26066: wallet: Refactor and document CoinControl
    daba95700b0b77a2e898299f218c47a69ed2c7d0 refactor: Make ListSelected return vector (Sebastian Falbesoner)
    94776621ba6a79f3197ec71250bc48e974ad5e4a wallet: Move CoinCointrol definitions to .cpp (Aurèle Oulès)
    1db23da6e163e793458ec702a9601d2837aea9cb wallet: Use std::optional for GetExternalOutput and fixups (Aurèle Oulès)
    becc45b589d07c4523276e4ba2dad8852d0d2632 scripted-diff: Rename setSelected->m_selected_inputs (Aurèle Oulès)
    
    Pull request description:
    
      - Moves CoinControl function definitions from `coincontrol.h` to `coincontrol.cpp`
      - Adds more documentation
      - Renames class member for an improved comprehension
      - Use `std::optional` for `GetExternalOutput`
    
    ACKs for top commit:
      achow101:
        ACK daba95700b0b77a2e898299f218c47a69ed2c7d0
      Xekyo:
        ACK daba95700b0b77a2e898299f218c47a69ed2c7d0
    
    Tree-SHA512: 3bf2dc834a3246c2f53f8c55154258e605fcb169431d3f7b156931f33c7e3b1ae28e03e16b37f9140a827890eb7798be485b2c36bfc23ff29bb01763f289a07c
    0e70a1b625
  185. Merge bitcoin/bitcoin#27562: ci: Use arm_container.dockerfile
    fa6e2bfd0570324c80677d894247936bc151b4f8 ci: Use arm_container.dockerfile (MarcoFalke)
    
    Pull request description:
    
      This allows to cache the image and thus speed up the CI task
    
    ACKs for top commit:
      fanquake:
        nice ACK fa6e2bfd0570324c80677d894247936bc151b4f8
      hebasto:
        ACK fa6e2bfd0570324c80677d894247936bc151b4f8
    
    Tree-SHA512: 3b7f734799bd8a3ca9166e85d2cd8f68c134c32a496757eafb118250c0b158d0d76ead0c461e307d6440a622fe51bc599aa13e67766ce232b750ed0a66d4b450
    1d7f1ada48
  186. Merge bitcoin/bitcoin#24957: prune, import: allow pruning to work during loadblock import
    c4981e7f63a3e0aeec1ef3dec040261e993dd724 prune, import: fixes #23852 (mruddy)
    
    Pull request description:
    
      Fixes #23852
    
      This allows pruning to work during the `-loadblock` import process.
    
      An example use case is where you have a clean set of block files and you want to create a pruned node from them, but you don't want to alter the input set of block files.
    
      #23852 noted that pruning was not working reliably during the loadblock import process. The reason why the loadblock process was not pruning regularly as it progressed is that the pruning process (`BlockManager::FindFilesToPrune`) checks the tip height of the active chainstate, and `CChainState::ActivateBestChain` was not called (which updates that tip height) in `ThreadImport` until after all the import files were processed.
    
      An example bash command line that makes it easy to import a bunch of block files:
      ```
      ./src/qt/bitcoin-qt -debug -logthreadnames -datadir=/tmp/btc -prune=550 -loadblock=/readonly/btc/main/blk{00000..00043}.dat
      ```
    
      One interesting side note is that `CChainState::ActivateBestChain` can be called while the import process is running (in the `loadblk` thread) by concurrent network message processing activity in the `msghand` thread. For example, one way to reproduce this easily is with the `getblockfrompeer` RPC (requesting a block with height greater than 100000) run from a node connected to an importing node. There are other ways too, but this is an easy way. I only mention this to explain how the `max_prune_height=225719` log message in the original issue came to occur.
    
    ACKs for top commit:
      achow101:
        re-ACK c4981e7f63a3e0aeec1ef3dec040261e993dd724
    
    Tree-SHA512: d287c7753952c22f598ba782914c47f45ad44ce60b0fbce9561354e701f1a2a98bafaaaa106c8428690b814e281305ca3622b177ed3cb2eb7559f07c958ab537
    aebcd18c65
  187. Merge bitcoin/bitcoin#27325: test: various `converttopsbt` check cleanups in rpc_psbt.py
    afc2dd54848fa70ed408ae259420ff8648f21efc test: various `converttopsbt` check cleanups in rpc_psbt.py (Sebastian Falbesoner)
    
    Pull request description:
    
      In the functional test rpc_psbt.py, some comments around the `converttopsbt` RPC checks are wrong or outdated and can be removed:
    
      > _Error could be either "TX decode failed" (segwit inputs causes
      > parsing to fail) or "Inputs must not have scriptSigs and
      > scriptWitnesses"_
    
      Decoding a valid TX with at least one input always succeeds with the [heuristic](https://github.com/bitcoin/bitcoin/blob/e352f5ab6b60ec1cc549997275e945238508cdee/src/core_read.cpp#L126), i.e. this comment is not right and we can assert for the error string "Inputs must not have scriptSigs and scriptWitnesses" on the calls below.
    
      > _We must set iswitness=True because the serialized transaction has
      > inputs and is therefore a witness transaction_
    
      This is also unneeded (and confusing, w.r.t. "is therefore a witness transaction"?), for a TX with one input there is no need to set the `iswitness` parameter. For sake of completeness, we still keep one variant where iswitness is explicitly set to true.
    
      Lastly, there is a superflous `converttopsbt` call on the raw tx which is the same as just [about ~10 lines above](https://github.com/bitcoin/bitcoin/blob/master/test/functional/rpc_psbt.py#L393-L397), so it can be removed.
    
    ACKs for top commit:
      ismaelsadeeq:
        tested ACK afc2dd54848fa70ed408ae259420ff8648f21efc
      achow101:
        ACK afc2dd54848fa70ed408ae259420ff8648f21efc
    
    Tree-SHA512: 467efefdb3f61efdb79145044b90fc8dc2f0c425f078117a99112b0074e7d4a32c34e464f665fbf8de70d06caaa5d4ad5908c1d75d2e7607eccb0837480afab3
    30bf70c8b6
  188. Merge bitcoin/bitcoin#27422: test: add coverage to rpc_scantxoutset.py
    7e3d4f8e86e86f32d8911abd458b9e7c939ef3d5 test: add coverage to ensure the first arg of scantxoutset is needed (ismaelsadeeq)
    
    Pull request description:
    
      Include a test that checks whether the first argument of scantxoutset RPC call "start" is required.
      The rpc call should fail if the "start" argument is not provided.
    
    ACKs for top commit:
      MarcoFalke:
        lgtm ACK 7e3d4f8e86e86f32d8911abd458b9e7c939ef3d5
    
    Tree-SHA512: 6a456af9f3ccd5437be2edcd61936eb9f9c21ab926a6056c2c11b6b5121d1caca4e1f2ffd09015f9414af152c635a20e1da041eefdef980afbe8a0e8ccce07bd
    6c7ebcc14b
  189. Add BlockManagerOpts::chainparams reference
    and use it in blockstorage.cpp
    facdb8b331
  190. Replace pindex pointer with block reference
    pindex can not be nullptr, so document that, and clear it up in the next
    commit.
    fa3f74a40e
  191. Remove unused chainparams from BlockManager methods
    Also, replace pointer with reference while touching the signature.
    fa5d7c39eb
  192. [doc] Add post branch-off note about fuzz input pruning 9143b6988b
  193. Introduce platform-agnostic `ALWAYS_INLINE` macro
    `<attributes.h>` has been included in anticipation of the following
    commit.
    e16c22fe02
  194. scripted-diff: Use platform-agnostic `ALWAYS_INLINE` macro
    -BEGIN VERIFY SCRIPT-
    sed -i 's/ inline __attribute__((always_inline)) / ALWAYS_INLINE /g' $(git grep -l "inline __attribute__((always_inline))")
    sed -i 's/ inline  __attribute__((always_inline)) / ALWAYS_INLINE /g' $(git grep -l "inline  __attribute__((always_inline))")
    -END VERIFY SCRIPT-
    3f19875d66
  195. ci: Pass full env to CI pod to avoid missing a var
    Instead of enumerating each passed env var, just pass all. This avoids
    the risk of missing to enumerate one. Also, it is less code.
    
    The risk could be that an env var causes non-deterministic behavior, but
    this can be fixed by explicitly excluding it once the issue is known.
    
    Values with newlines can not be stored in the file and parsed by
    docker/podman, so they are excluded.
    fa7d75540e
  196. ci: Move CI container kill out of 06_script_b.sh
    This cleans up 06_script_b.sh to only contain code to be executed inside
    the CI pod, which avoids confusion and is needed for the next commit.
    fae8de926a
  197. ci: Remove CI_EXEC bloat in test/06_script_b.sh fa1dbd04ca
  198. msvc: Cleanup after upgrading libsecp256k1 up to 0.3.0 d9b54c46cc
  199. Move LoadVerifyActivateChainstate to ChainTestingSetup faae7d5c00
  200. fuzz: BIP 42, BIP 30, CVE-2018-17144 fa2d8b61f9
  201. [bench] add streams findbyte 604df63f6c
  202. util: improve streams.h:FindByte() performance
    Avoid use of the expensive mod operator (%) when calculating the
    buffer offset. No functional difference.
    
    Co-authored-by: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com>
    72efc26439
  203. test, refactor: Add `set_binary_paths` function
    This change factors out the repeated code into a new `set_binary_paths`
    function.
    dda961cec5
  204. test: Treat `bitcoin-wallet` binary in the same way as others
    This change makes the `bitcoin-wallet` binary path customizable in the
    same way how it can be done now with other ones, including `bitcoind`,
    `bitcoin-cli` and `bitcoin-util`.
    f6d7636be4
  205. Merge bitcoin/bitcoin#26653: test, init: perturb file to ensure failure instead of only deleting them
    c371cae07a7ba045130568b6abc470eaa4f95ef4 test, init: perturb file to ensure failure instead of only deleting them (brunoerg)
    
    Pull request description:
    
      In `feature_init.py` there is a TODO about perturbing the files instead of only testing by deleting them.
      ```py
                  # TODO: at some point, we should test perturbing the files instead of removing
                  # them, e.g.
                  #
                  # contents = target_file.read_bytes()
                  # tweaked_contents = bytearray(contents)
                  # tweaked_contents[50:250] = b'1' * 200
                  # target_file.write_bytes(bytes(tweaked_contents))
                  #
                  # At the moment I can't get this to work (bitcoind loads successfully?) so
                  # investigate doing this later.
      ```
    
      This PR adds it by writing into the file random bytes and checking whether it throws an error when starting.
    
    ACKs for top commit:
      MarcoFalke:
        lgtm ACK c371cae07a7ba045130568b6abc470eaa4f95ef4
    
    Tree-SHA512: d691eee60b91dd9d1b200588608f56b0a10dccd9761a75254b69e0ba5e5866cae14d2f90cb2bd7ec0f95b0617c2562cd33f20892ffd16355b6df770d3806a0ff
    b11bd045e4
  206. Merge bitcoin/bitcoin#27554: test: Treat `bitcoin-wallet` binary in the same way as others
    f6d7636be4eb0b19878428906dd5e394df7d07a2 test: Treat `bitcoin-wallet` binary in the same way as others (Hennadii Stepanov)
    dda961cec5fef318c0b043a09367d14daa87f089 test, refactor: Add `set_binary_paths` function (Hennadii Stepanov)
    
    Pull request description:
    
      This PR makes the `bitcoin-wallet` binary path customizable in the same way how it can be done now with other ones, including `bitcoind`, `bitcoin-cli` and `bitcoin-util`.
    
    ACKs for top commit:
      stickies-v:
        re-ACK f6d7636be4eb0b19878428906dd5e394df7d07a2
    
    Tree-SHA512: 480fae14c5440e530ba78a2be19eaaf642260070435e533fc7ab98ddcc2fcac7ad83f2c7e7c6706db3167e8391d7d4abf8784889796c218c2d5bba043144e787
    5566405a95
  207. Merge bitcoin/bitcoin#27574: doc: Add post branch-off note about fuzz input pruning
    9143b6988bf2d8f46a5dafe32f45f79c34355a80 [doc] Add post branch-off note about fuzz input pruning (dergoegge)
    
    Pull request description:
    
    Top commit has no ACKs.
    
    Tree-SHA512: 82658faaa31668591853703604edb45ce24ee703b8f4077ab690865f3674e154f76c55c3b523f543a862aab9707d70a46c8bf4d41b51d0002635806413921017
    5d1014d5a1
  208. ci: fix asan task name
    Pointed out in
    https://github.com/bitcoin/bitcoin/issues/27380#issuecomment-1536434598.
    bf07e3a47e
  209. Merge bitcoin/bitcoin#27570: refactor: Remove need to pass chainparams to BlockManager methods
    fa5d7c39eb992467e43b12db213b27913374fb83 Remove unused chainparams from BlockManager methods (MarcoFalke)
    fa3f74a40efa0db3af31438e9250c41bc7406749 Replace pindex pointer with block reference (MarcoFalke)
    facdb8b331da17c10b122deb28f6d71d5797f063 Add BlockManagerOpts::chainparams reference (MarcoFalke)
    
    Pull request description:
    
      Seems confusing to pass chainparams to each method individually, when the params can't change anyway for the whole lifetime of the block manager, and also must be equal to the ones used by the chainstate manager.
    
      Fix this issue by removing them from the methods and instead storing a reference once in a member field.
    
    ACKs for top commit:
      dergoegge:
        Code review ACK fa5d7c39eb992467e43b12db213b27913374fb83
      TheCharlatan:
        ACK fa5d7c39eb992467e43b12db213b27913374fb83
    
    Tree-SHA512: b44e2466b70a2a39a46625d618ce3173897ef30418db4efb9ff73d0eb2c082633204a5586c34b95f227e6711e64f19f12d5ac0f9f34692d40cb372e98389324b
    ccd4db7d62
  210. Merge bitcoin/bitcoin#27584: ci: fix asan task name
    bf07e3a47e4a8677077e0508558bb11227989ab2 ci: fix asan task name (fanquake)
    
    Pull request description:
    
      Pointed out in https://github.com/bitcoin/bitcoin/issues/27380#issuecomment-1536434598.
    
    Top commit has no ACKs.
    
    Tree-SHA512: 82e83443844b9ddad039fc4d3eda5a6c84ce924ea703cdd9d0ef3af3d44e45c24cdc085fdae9b48ff22dc116b700459043ec179173ddae14bef434342cdadaa9
    4a72af9ca4
  211. Merge bitcoin/bitcoin#27405: util: Use steady clock instead of system clock to measure durations
    fa83fb31619c19a1a30b4181486601a944941b16 wallet: Use steady clock to calculate number of derive iterations (MarcoFalke)
    fa2c099cec1780a498e198750be0cf5bf0ca315a wallet: Use steady clock to measure scanning duration (MarcoFalke)
    fa976218044f3ff244abbd797b183a1408375c74 qt: Use steady clock to throttle GUI notifications (MarcoFalke)
    fa1d8044abc2cd0f149a2d526b3b03441443cdb0 test: Use steady clock in index tests (MarcoFalke)
    fa454dcb20b9e7943cc25e6eeea72912b5f1c7b5 net: Use steady clock in InterruptibleRecv (MarcoFalke)
    
    Pull request description:
    
      `GetTimeMillis` has multiple issues:
    
      * It doesn't denote the underlying clock type
      * It isn't type-safe
      * It is used incorrectly in places that should use a steady clock
    
      Fix all issues here.
    
    ACKs for top commit:
      willcl-ark:
        ACK fa83fb3161
      martinus:
        Code review ACK https://github.com/bitcoin/bitcoin/commit/fa83fb31619c19a1a30b4181486601a944941b16, also ran all tests. All usages of the steady_clock are just for duration measurements, so the change to a different epoch is ok.
    
    Tree-SHA512: 5ec4fede8c7f97e2e08863c011856e8304f16ba30a68fdeb42f96a50a04961092cbe46ccf9ea6ac99ff5203c09f9e0924eb483eb38d7df0759addc85116c8a9f
    e460c0a24a
  212. Merge bitcoin/bitcoin#17860: fuzz: BIP 30, CVE-2018-17144
    fa2d8b61f9343d350b67357a12f39b613c8ee8ad fuzz: BIP 42, BIP 30, CVE-2018-17144 (MarcoFalke)
    faae7d5c00c99b0f3e99a1fbffbf369645716dd1 Move LoadVerifyActivateChainstate to ChainTestingSetup (MarcoFalke)
    fa26e3462a0fb1a9ad116ed58afa6897798f2c24 Avoid dereferencing interruption_point if it is nullptr (MarcoFalke)
    fa846ee074822160077f3f7476b2af62a876dec7 test: Add util to mine invalid blocks (MarcoFalke)
    
    Pull request description:
    
      Add a validation fuzz test for BIP 30 and CVE-2018-17144
    
    ACKs for top commit:
      dergoegge:
        Code review ACK fa2d8b61f9343d350b67357a12f39b613c8ee8ad
      mzumsande:
        Tested ACK fa2d8b61f9343d350b67357a12f39b613c8ee8ad
    
    Tree-SHA512: 1f4620cc078709487abff24b304a6bb4eeab2e7628b392e2bc6de9cc0ce6745c413388ede6e93025d0c56eec905607ba9786633ef183e5779bf5183cc9ff92c0
    322ec63b01
  213. refactor: Remove unused GetTimeMillis
    The function is unused, not type-safe, and does not denote the
    underlying clock type. So remove it.
    fae1d9cded
  214. doc: clarify PR 26076 release note fe49f06c0e
  215. Merge bitcoin/bitcoin#27580: msvc: Cleanup after upgrading libsecp256k1 up to 0.3.0
    d9b54c46ccb28af20eb03e1409d1a34dc2adccdb msvc: Cleanup after upgrading libsecp256k1 up to 0.3.0 (Hennadii Stepanov)
    
    Pull request description:
    
      libsecp256k1 [v0.3.0](https://github.com/bitcoin-core/secp256k1/blob/master/CHANGELOG.md#030---2023-03-08):
      > Removed the configuration header `src/libsecp256k1-config.h`.
    
      This PR removed the code that has been unused since https://github.com/bitcoin/bitcoin/pull/27230.
    
      The `USE_ASM_X86_64` is now undefined explicitly (but actually it seems a bit redundant).
    
      The `ECMULT_GEN_PREC_BITS` and `ECMULT_WINDOW_SIZE` macros are defined by the source code to their defaults.
    
      ---
    
      Considering the upcoming CMake-based build system, these changes have a low-priority.
    
    ACKs for top commit:
      fanquake:
        ACK d9b54c46ccb28af20eb03e1409d1a34dc2adccdb
    
    Tree-SHA512: f279aeee1da57af5fdc4bd4f2000f1fea4180895f0e5b576545092a8318c756d36192f09a0cb0929cef74ed384c46777d5e6b6f92f4542b308e984e4abf473dc
    26cb32c02d
  216. Merge bitcoin/bitcoin#26076: Switch hardened derivation marker to h
    fe49f06c0e91b96feb8d8f1bd478c3173f14782c doc: clarify PR 26076 release note (Sjors Provoost)
    bd13dc2f46ea10302a928fcf0f53b7aed77ad260 Switch hardened derivation marker to h in descriptors (Sjors Provoost)
    
    Pull request description:
    
      This makes it easier to handle descriptor strings manually, especially when importing from another Bitcoin Core wallet.
    
      For example the `importdescriptors` RPC call is easiest to use `h` as the marker: `'["desc": ".../0h/..."]'`, avoiding the need for escape characters. With this change `listdescriptors` will use `h`, so you can copy-paste the result, without having to add escape characters or switch `'` to 'h' manually.
    
      Both markers can still be parsed.
    
      The `hdkeypath` field in `getaddressinfo` is also impacted by this change, except for legacy wallets. The latter is to prevent accidentally breaking ancient software that uses our legacy wallet.
    
      See discussion in #15740
    
    ACKs for top commit:
      achow101:
        ACK fe49f06c0e91b96feb8d8f1bd478c3173f14782c
      darosior:
        re-ACK fe49f06c0e91b96feb8d8f1bd478c3173f14782c
    
    Tree-SHA512: f78bc873b24a6f7a2bf38f5dd58f2b723e35e6b10e4d65c36ec300e2d362d475eeca6e5afa04b3037ab4bee0bf8ebc93ea5fc18102a2111d3d88fc873c08dc89
    fa53611cf1
  217. add ryanofsky to trusted-keys 59ebee3fb4
  218. refactor: Create chaintype files
    This is the first of a number of commits with the goal of moving the
    chain type definitions out of chainparamsbase to their own file and
    implementing them as enums instead of constant strings. The goal is to
    allow the kernel chainparams to no longer include chainparamsbase.
    
    The commit is part of an ongoing effort to decouple the libbitcoinkernel
    library from the ArgsManager and other functionality that should not be
    part of the kernel library.
    bfc21c31b2
  219. refactor: Introduce ChainType getters for ArgsManager
    These are introduced for the next commit where the usage of the
    ChainType is adopted throughout the code.
    
    Co-authored-by: Russell Yanofsky <russ@yanofsky.org>
    Co-authored-by: TheCharlatan <seb.kung@gmail.com>
    401453df41
  220. Merge bitcoin/bitcoin#27575: Introduce platform-agnostic `ALWAYS_INLINE` macro
    3f19875d667522412408d06873e87ff8150e49c4 scripted-diff: Use platform-agnostic `ALWAYS_INLINE` macro (Hennadii Stepanov)
    e16c22fe025f82166c7f3f15a37c96bf4a06e4cf Introduce platform-agnostic `ALWAYS_INLINE` macro (Hennadii Stepanov)
    
    Pull request description:
    
      Split from https://github.com/bitcoin/bitcoin/pull/24773 as requested in https://github.com/bitcoin/bitcoin/pull/24773#issuecomment-1534954977.
    
    ACKs for top commit:
      theuni:
        utACK 3f19875d667522412408d06873e87ff8150e49c4
      fanquake:
        ACK 3f19875d667522412408d06873e87ff8150e49c4
    
    Tree-SHA512: a19b713433bb4d3c5fff1ddb4d1413837823a400c1d46363a8181e7632b059846ba92264be1c867f35f532af90945ed20887103471b09c07623e0f3905b4098b
    b13830eff6
  221. refactor: Replace string chain name constants with ChainTypes
    This commit effectively moves the definition of these constants
    out of the chainparamsbase to their own file.
    
    Using the ChainType enums provides better type safety compared to
    passing around strings.
    
    The commit is part of an ongoing effort to decouple the libbitcoinkernel
    library from the ArgsManager and other functionality that should not be
    part of the kernel library.
    ba8fc7d788
  222. Add missing definitions in prep for scripted diff
    The missing include and ArgsManager were found after applying the
    scripted diff in the following commit.
    e9ee8aaf3a
  223. scripted-diff: Remove unused chainparamsbase includes
    This is a follow-up to previous commits moving the chain constants out
    of chainparamsbase.
    
    The script removes the chainparamsbase header in all files where it is
    included, but not used. This is done by filtering against all defined
    symbols of the header as well as its respective .cpp file.
    
    The kernel chainparams now no longer relies on chainparamsbase.
    
    -BEGIN VERIFY SCRIPT-
    sed -i '/#include <chainparamsbase.h>/d' $( git grep -l 'chainparamsbase.h' | xargs grep -L 'CBaseChainParams\|CreateBaseChainParams\|SetupChainParamsBaseOptions\|BaseParams\|SelectBaseParams\|chainparamsbase.cpp' )
    -END VERIFY SCRIPT-
    d168458d1f
  224. Merge bitcoin/bitcoin#27594: refactor: Remove unused GetTimeMillis
    fae1d9cdede0e88cabbf8130869be31276457c34 refactor: Remove unused GetTimeMillis (MarcoFalke)
    
    Pull request description:
    
      The function is unused, not type-safe, and does not denote the underlying clock type. So remove it.
    
    ACKs for top commit:
      willcl-ark:
        tACK fae1d9cded
    
    Tree-SHA512: 41ea7125d1964192b85a94265be974d02bf1e79b1feb61bff11486dc0ac811745156940ec5cad2ad1f94b653936f8ae563c959c1c4142203a55645fcb83203e8
    d5ff96f920
  225. Merge bitcoin/bitcoin#27491: refactor: Move chain constants to the util library
    d168458d1ff987e0d741c75ac1d4b63ae0cfb7e7 scripted-diff: Remove unused chainparamsbase includes (TheCharlatan)
    e9ee8aaf3acdf6dce2b339916d4c602484570050 Add missing definitions in prep for scripted diff (TheCharlatan)
    ba8fc7d788932b25864fb260ca14983aa2398c23 refactor: Replace string chain name constants with ChainTypes (TheCharlatan)
    401453df419af35957ec711423ac3d93ad512fe8 refactor: Introduce ChainType getters for ArgsManager (TheCharlatan)
    bfc21c31b2186f7d30fc9a9ca7d6887ab61c6fb9 refactor: Create chaintype files (TheCharlatan)
    
    Pull request description:
    
      This pull request is part of the `libbitcoinkernel` project https://github.com/bitcoin/bitcoin/issues/24303 https://github.com/bitcoin/bitcoin/projects/18 and more specifically its "Step 2: Decouple most non-consensus code from libbitcoinkernel". It is also a follow up to #26177.
    
      It replaces pull request https://github.com/bitcoin/bitcoin/pull/27294, which just moved the constants to a new file, but did not re-declare them as enums.
    
      The code move of the chain name constants out of the `chainparamsbase` to their own separate header allows the kernel `chainparams` to no longer include `chainparamsbase`. The `chainparamsbase` contain references to the `ArgsManager` and networking related options that should not belong to the kernel library. Besides this move, the constants are re-declared as enums with helper functions facilitating string conversions.
    
    ACKs for top commit:
      ryanofsky:
        Code review ACK d168458d1ff987e0d741c75ac1d4b63ae0cfb7e7. Just suggested changes since last review.
    
    Tree-SHA512: ac2fbe5cbbab4f52eae1e30af1f16700b6589eb4764c328a151a712adfc37f326cc94a65c385534c57d4bc92cc1a13bf1777d92bc924a20dbb30440e7380b316
    fc06881f13
  226. Add UniValue::find_value method fa548ac872
  227. scripted-diff: Use UniValue::find_value method
    -BEGIN VERIFY SCRIPT-
     sed --regexp-extended -i 's/find_value\(([^ ,]+), /\1.find_value(/g' $(git grep -l find_value)
    -END VERIFY SCRIPT-
    fa422aeec2
  228. Remove unused find_value global function faaa60a30e
  229. Fix clang-tidy performance-unnecessary-copy-initialization warnings fa28850562
  230. p2p: Avoid prematurely clearing download state for other peers 52e52071e0
  231. Temporarily work around gcc-13 warning bug in interfaces_tests
    This can be reverted once gcc excludes lambdas with decltype(auto)
    return type from its -Wdangling-reference analysis.
    fa266c4bbf
  232. txmempool: have CompareDepthAndScore sort missing txs first
    We use CompareDepthAndScore to choose an order of txs to inv. Rather
    than sorting txs that have been evicted from the mempool at the end
    of the list, sort them at the beginning so they are removed from
    the queue immediately.
    228e9201ef
  233. net_processing: Boost inv trickle rate
    If transactions are being added to the mempool at a rate faster than 7tx/s
    (INVENTORY_BROADCAST_PER_SECOND) then peers' inventory_to_send queue can
    become relatively large. If this happens, increase the number of txids
    we include in an INV message (normally capped at 35) by 5 for each 1000
    txids in the queue.
    
    This will tend to clear a temporary excess out reasonably quickly; an
    excess of 4000 invs to send will be cleared down to 1000 in about 30
    minutes, while an excess of 20000 invs would be cleared down to 1000 in
    about 60 minutes.
    5b3406094f
  234. refactor: Use ChainType enum exhaustively
    This is a follow up of https://github.com/bitcoin/bitcoin/pull/27491,
    more concretely
    https://github.com/bitcoin/bitcoin/pull/27491#discussion_r1188847896,
    for not using default cases (as per the style guide), and
    https://github.com/bitcoin/bitcoin/pull/27491#discussion_r1188852707 and
    https://github.com/bitcoin/bitcoin/pull/27491#discussion_r1188851857 for
    avoiding dead code.
    
    Also change chain name to chain type in docstrings
    e23088707b
  235. Merge bitcoin/bitcoin#27608: p2p: Avoid prematurely clearing download state for other peers
    52e52071e01f4e98d87a47e1d5f3c5c3cc6dbaf4 p2p: Avoid prematurely clearing download state for other peers (Suhas Daftuar)
    
    Pull request description:
    
      Avoid letting one peer send us data that clears out the download request (and related timers etc) from another peer.
    
      The exception is if a block is definitely stored to disk, in which case we'll clear the download state (just as we do for compact blocks).
    
    ACKs for top commit:
      jamesob:
        ACK 52e52071e01f4e98d87a47e1d5f3c5c3cc6dbaf4 ([`jamesob/ackr/27608.1.sdaftuar.p2p_avoid_prematurely_cl`](https://github.com/jamesob/bitcoin/tree/ackr/27608.1.sdaftuar.p2p_avoid_prematurely_cl))
      instagibbs:
        ACK 52e52071e01f4e98d87a47e1d5f3c5c3cc6dbaf4
      fjahr:
        Code review ACK 52e52071e01f4e98d87a47e1d5f3c5c3cc6dbaf4
      mzumsande:
        Code Review ACK 52e52071e01f4e98d87a47e1d5f3c5c3cc6dbaf4
    
    Tree-SHA512: 3ee92507edc3303c16c70ca44ba6c28c104afe95196e4b9167032590ed23d4f569f654f8eb8758940bd6536bc9ca810d2a77d2739db386b927e8b3f3cf55cb16
    dbfc748d3d
  236. Merge bitcoin/bitcoin#27604: add ryanofsky to trusted-keys
    59ebee3fb4181baf20fab263cf1b587ece1bd5e2 add ryanofsky to trusted-keys (Ryan Ofsky)
    
    Pull request description:
    
      For maintaining interfaces and other areas of the codebase. Some previous discussion in IRC meeting https://gnusha.org/bitcoin-core-dev/2023-05-04.log
    
    ACKs for top commit:
      darosior:
        ACK 59ebee3fb4181baf20fab263cf1b587ece1bd5e2 for adding ryanofsky as a maintainer.
      hebasto:
        ACK 59ebee3fb4181baf20fab263cf1b587ece1bd5e2
      glozow:
        ACK 59ebee3fb4181baf20fab263cf1b587ece1bd5e2
      pinheadmz:
        ACK 59ebee3fb4181baf20fab263cf1b587ece1bd5e2
      stickies-v:
        utACK https://github.com/bitcoin/bitcoin/commit/59ebee3fb4181baf20fab263cf1b587ece1bd5e2
      brunoerg:
        ACK 59ebee3fb4181baf20fab263cf1b587ece1bd5e2
      theStack:
        ACK 59ebee3fb4181baf20fab263cf1b587ece1bd5e2
      mzumsande:
        ACK 59ebee3fb4181baf20fab263cf1b587ece1bd5e2
      theuni:
        ACK 59ebee3fb4181baf20fab263cf1b587ece1bd5e2.
      jarolrod:
        ACK https://github.com/bitcoin/bitcoin/commit/59ebee3fb4181baf20fab263cf1b587ece1bd5e2
    
    Tree-SHA512: e3d2815d8950e419316ee49ec70f01cb1939de61b3017b8140c0194b519b5b523a618d3ad2ab9fe3fd32543649c1465fdd6baf52ad68da48b680bd4898186ff4
    3777c75d14
  237. Merge bitcoin/bitcoin#27573: ci: Remove CI_EXEC bloat in test/06_script_b.sh
    fa1dbd04cab8039440e721eddabb760a40ba8c61 ci: Remove CI_EXEC bloat in test/06_script_b.sh (MarcoFalke)
    fae8de926abaa9d7e5f0769865ded9491a72f866 ci: Move CI container kill out of 06_script_b.sh (MarcoFalke)
    fa7d75540ed266d76c946d7ab8fdf4aa2d12f40e ci: Pass full env to CI pod to avoid missing a var (MarcoFalke)
    
    Pull request description:
    
      `CI_EXEC` has many issues:
    
      * It is roughly equivalent to `bash -c "$*"`, meaning that the full command will be treated as a single string, ignoring tokens.
      * It must be put in front of (almost) every command, making it easy to forget, hard to debug the resulting failure, and the code verbose.
    
      Fix all issues in one script by removing it.
    
    ACKs for top commit:
      fanquake:
        ACK fa1dbd04cab8039440e721eddabb760a40ba8c61 - this conflicts with #27125, but that is going to be rebased soon, and this could be merged in the interim. cc TheCharlatan
      TheCharlatan:
        ACK fa1dbd04cab8039440e721eddabb760a40ba8c61
    
    Tree-SHA512: e5ab5503a05a787f2bc6ca25e71ad3dc166aade57e25d9677e72b1ca4e5fb6045c058dfd55f47ac93f710538e62d57c12cd7eb9d1260c6f55f3c8091908dc70d
    883766fa45
  238. refactor: Declare g_zmq_notification_interface as unique_ptr
    Ensures better memory safety for this global. This came up during
    discussion of the following commit, but is not strictly required for its
    implementation.
    8ed4ff8e05
  239. Merge bitcoin/bitcoin#27611: refactor: Use ChainType enum exhaustively
    e23088707be2c3bf247f4b777290c8e401db48cb refactor: Use ChainType enum exhaustively (TheCharlatan)
    
    Pull request description:
    
      This is a follow up of https://github.com/bitcoin/bitcoin/pull/27491, more concretely https://github.com/bitcoin/bitcoin/pull/27491#discussion_r1188847896, for not using default cases (as per the style guide), and https://github.com/bitcoin/bitcoin/pull/27491#discussion_r1188852707 and https://github.com/bitcoin/bitcoin/pull/27491#discussion_r1188851857 for avoiding dead code.
    
    ACKs for top commit:
      fanquake:
        ACK e23088707be2c3bf247f4b777290c8e401db48cb - deals with almost all follow up comments out of #27491.
    
    Tree-SHA512: 1794190b03b91d3ca349a4da08e9610dbb3432983eee7cb21ecc758d1d7d710560c97661de14cdf493c28c00ebe8977511b4696055c0940e7f815b622dbacd16
    104eed1166
  240. Merge bitcoin/bitcoin#27605: refactor: Replace global find_value function with UniValue::find_value method
    fa266c4bbf564308ddbc12653527226506902084 Temporarily work around gcc-13 warning bug in interfaces_tests (MarcoFalke)
    fa28850562bda0c2049aaff42103dfa6f05395dc Fix clang-tidy performance-unnecessary-copy-initialization warnings (MarcoFalke)
    faaa60a30e7738a1490c9c2bb8963420f53c7f2d Remove unused find_value global function (MarcoFalke)
    fa422aeec2909df0151177816dc1ff5eb5a1fbab scripted-diff: Use UniValue::find_value method (MarcoFalke)
    fa548ac872c094edc94c2afda5cc9b0d84f73af0 Add UniValue::find_value method (MarcoFalke)
    
    Pull request description:
    
      The global function has issues:
    
      * It causes gcc-13 warnings, see https://github.com/bitcoin/bitcoin/issues/26926
      * There is no rationale for it being a global function, when it acts like a member function
      * `performance-unnecessary-copy-initialization` clang-tidy isn't run on it
    
      Fix all issues by making it a member function.
    
    ACKs for top commit:
      achow101:
        ACK fa266c4bbf564308ddbc12653527226506902084
      hebasto:
        re-ACK fa266c4bbf564308ddbc12653527226506902084
    
    Tree-SHA512: 6c4e25da3122cd3b91c376bef73ea94fb3beb7bf8ef5cb3853c5128d95bfbacbcbfb16cc843eb7b1a7ebd350c2b6311f8085eeacf9aeeab3366987037d209e44
    e0a70c5b4f
  241. zmq: Pass lambda to zmq's ZMQPublishRawBlockNotifier
    The lambda captures a reference to the chainman unique_ptr to retrieve
    block data. An assert is added on the chainman to ensure that the lambda
    is not used while the chainman is uninitialized.
    
    This is done in preparation for the following commits where blockstorage
    functions are made BlockManager methods.
    cfbb212493
  242. refactor: Move functions to BlockManager methods
    This is a commit in preparation for the next few commits. The functions
    are moved to methods to avoid their re-declaration for the purpose of
    passing in BlockManager options.
    
    The functions that were now moved into the BlockManager should no longer
    use the params as an argument, but instead use the member variable.
    
    In the moved ReadBlockFromDisk and UndoReadFromDisk, change
    the function signature to accept a reference to a CBlockIndex instead of
    a raw pointer. The pointer is expected to be non-null, so reflect that
    in the type.
    
    To allow for the move of functions to BlockManager methods all call
    sites require an instantiated BlockManager, or a callback to one.
    f0bb1021f0
  243. refactor/iwyu: Complete includes for blockmanager_args a498d699e3
  244. refactor, BlockManager: Replace fastprune from arg with options
    Remove access to the global gArgs for the fastprune argument and
    replace it by adding a field to the existing BlockManager Options
    struct.
    
    When running `clang-tidy-diff` on this commit, there is a diagnostic
    error: `unknown type name 'uint64_t' [clang-diagnostic-error] uint64_t
    prune_target{0};`, which is fixed by including cstdint.
    
    This should eventually allow users of the BlockManager to not rely on
    the global gArgs and instead pass in their own options.
    02a0899527
  245. refactor, blockstorage: Replace blocksdir arg
    Add a blocks_dir field to the BlockManager options. Move functions
    relying on the global gArgs to get the blocks_dir into the BlockManager
    class.
    
    This should eventually allow users of the BlockManager to not rely on
    the global Args and instead pass in their own options.
    18e5ba7c80
  246. refactor, blockstorage: Replace stopafterblockimport arg
    Add a stop_after_block_import field to the BlockManager options. Use
    this field instead of the global gArgs.
    
    This should allow users of the BlockManager to not rely on the global
    Args.
    5ff63a09a9
  247. Merge bitcoin/bitcoin#19690: util: improve FindByte() performance
    72efc26439da9a1344a19569fb0cab01f82ae7d1 util: improve streams.h:FindByte() performance (Larry Ruane)
    604df63f6c70b9692b067777ddb38d946ac0b2fc [bench] add streams findbyte (gzhao408)
    
    Pull request description:
    
      This PR is strictly a performance improvement; there is no functional change. The `CBufferedFile::FindByte()` method searches for the next occurrence of the given byte in the file. Currently, this is done by explicitly inspecting each byte in turn. This PR takes advantage of `std::find()` to do the same more efficiently, improving its CPU runtime by a factor of about 25 in typical use.
    
    ACKs for top commit:
      achow101:
        re-ACK 72efc26439da9a1344a19569fb0cab01f82ae7d1
      stickies-v:
        re-ACK 72efc26439da9a1344a19569fb0cab01f82ae7d1
    
    Tree-SHA512: ddf0bff335cc8aa34f911aa4e0558fa77ce35d963d602e4ab1c63090b4a386faf074548daf06ee829c7f2c760d06eed0125cf4c34e981c6129cea1804eb3b719
    3ff67f7783
  248. Merge bitcoin/bitcoin#27125: refactor, kernel: Decouple ArgsManager from blockstorage
    5ff63a09a9edd1204b2cc56cf6f48a44adab7bb3 refactor, blockstorage: Replace stopafterblockimport arg (TheCharlatan)
    18e5ba7c8002bcd473ee29ce4b5bfc56df6142a4 refactor, blockstorage: Replace blocksdir arg (TheCharlatan)
    02a0899527ba3d31329e56c791c9dbf36075bb84 refactor, BlockManager: Replace fastprune from arg with options (TheCharlatan)
    a498d699e3fdac5bfdb33020a1fd6c4a79989752 refactor/iwyu: Complete includes for blockmanager_args (TheCharlatan)
    f0bb1021f0d60f5f19176e67a66fcf7c325f88d1 refactor: Move functions to BlockManager methods (TheCharlatan)
    cfbb2124939822e95265a39242ffca3d86bac6e8 zmq: Pass lambda to zmq's ZMQPublishRawBlockNotifier (TheCharlatan)
    8ed4ff8e05d61a8e954d72cebdc2e1d1ab24fb84 refactor: Declare g_zmq_notification_interface as unique_ptr (TheCharlatan)
    
    Pull request description:
    
      The libbitcoin_kernel library should not rely on the `ArgsManager`, but rather use option structs that can be passed to the various classes it uses. This PR removes reliance on the `ArgsManager` from the `blockstorage.*` files. Like similar prior work, it uses the options struct in the `BlockManager` that can be populated with `ArgsManager` values.
    
      Some related prior work: https://github.com/bitcoin/bitcoin/pull/26889 https://github.com/bitcoin/bitcoin/pull/25862 https://github.com/bitcoin/bitcoin/pull/25527 https://github.com/bitcoin/bitcoin/pull/25487
    
      Related PR removing blockstorage globals: https://github.com/bitcoin/bitcoin/pull/25781
    
    ACKs for top commit:
      ryanofsky:
        Code review ACK 5ff63a09a9edd1204b2cc56cf6f48a44adab7bb3. Since last ACK just added std::move and fixed commit title. Sorry for the noise!
      mzumsande:
        Code Review ACK 5ff63a09a9edd1204b2cc56cf6f48a44adab7bb3
    
    Tree-SHA512: 4bde8fd140a40b97eca923e9016d85dcea6fad6fd199731f158376294af59c3e8b163a0725aa47b4be3519b61828044e0a042deea005e0c28de21d8b6c3e1ea7
    c2f2abd0a4
  249. Merge bitcoin/bitcoin#27610: Improve performance of p2p inv to send queues
    5b3406094f2679dfb3763de4414257268565b943 net_processing: Boost inv trickle rate (Anthony Towns)
    228e9201efb5574b1b96bb924de1d2e8dd1317f3 txmempool: have CompareDepthAndScore sort missing txs first (Anthony Towns)
    
    Pull request description:
    
      Couple of performance improvements when draining the inventory-to-send queue:
    
       * drop txs that have already been evicted from the mempool (or included in a block) immediately, rather than at the end of processing
       * marginally increase outgoing trickle rate during spikes in tx volume
    
    ACKs for top commit:
      willcl-ark:
        ACK 5b34060
      instagibbs:
        ACK https://github.com/bitcoin/bitcoin/pull/27610/commits/5b3406094f2679dfb3763de4414257268565b943
      darosior:
        utACK 5b3406094f2679dfb3763de4414257268565b943
      glozow:
        code review ACK 5b3406094f2679dfb3763de4414257268565b943
      dergoegge:
        utACK 5b3406094f2679dfb3763de4414257268565b943
    
    Tree-SHA512: 155cd3b5d150ba3417c1cd126f2be734497742e85358a19c9d365f4f97c555ff9e846405bbeada13c3575b3713c3a7eb2f780879a828cbbf032ad9a6e5416b30
    137a98c5a2
  250. doc: remove version number from bips.md
    This always just needs "bumping", and the version number is already
    whichever version of the code you acquired bips.md with.
    308caf326d
  251. Merge bitcoin/bitcoin#27629: doc: remove version number from bips.md
    308caf326db5619141f0c224fa48410293d59330 doc: remove version number from bips.md (fanquake)
    
    Pull request description:
    
      This always just needs "bumping" (see previous rc type pulls), and the version number is already whichever version of the code you acquired bips.md with.
    
    ACKs for top commit:
      MarcoFalke:
        lgtm ACK 308caf326db5619141f0c224fa48410293d59330
      achow101:
        ACK 308caf326db5619141f0c224fa48410293d59330
      theStack:
        ACK 308caf326db5619141f0c224fa48410293d59330
      hebasto:
        ACK 308caf326db5619141f0c224fa48410293d59330
    
    Tree-SHA512: fcb98e7cdc0c1f8960bfba86be09c2badb36b613060fae394a56e1561c69d28f433434f573c8b1ae1d71ae326277dea2a4841d5c08ad39f8e8848300743146e7
    9d85c03620
  252. DrahtBot commented at 3:16 pm on May 12, 2023: member

    The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.

    Reviews

    See the guideline for information on the review process. A summary of reviews will appear here.

  253. DrahtBot added the label Backport on May 12, 2023
  254. fanquake closed this on May 12, 2023

  255. fanquake locked this on May 12, 2023
  256. fanquake renamed this:
    25.x
    .
    on May 12, 2023
  257. fanquake deleted a comment on May 12, 2023
  258. fanquake removed the label Backport on May 14, 2023
  259. DrahtBot added the label Backport on May 14, 2023

github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin/bitcoin. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2024-12-21 15:12 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me