. #29905

pull BorjaPractica wants to merge 5272 commits into bitcoin:24.x from BorjaPractica:master changing 1825 files +310756 โˆ’126885
  1. BorjaPractica commented at 2:08 pm on April 18, 2024: none
  2. Merge bitcoin/bitcoin#29497: test: simplify test_runner.py
    0831b54dfca1b9e728295fff500215da14589fc0 test: simplify test_runner.py (tdb3)
    
    Pull request description:
    
      Implements the simplifications to test_runner.py proposed by sipa in PR #23995.
    
      Remove the num_running variable as it can be implied by the length of the jobs list.
    
      Remove the i variable as it can be implied by the length of the test_results list.
    
      Instead of counting results to determine if finished, make the queue object itself
      responsible (by looking at running jobs and jobs left).
    
    ACKs for top commit:
      mzumsande:
        re-ACK 0831b54
      davidgumberg:
        reACK https://github.com/bitcoin/bitcoin/commit/0831b54dfca1b9e728295fff500215da14589fc0
      marcofleon:
        re-ACK 0831b54dfca1b9e728295fff500215da14589fc0
    
    Tree-SHA512: e5473e68d49cd779b29d97635329283ae7195412cb1e92461675715ca7eedb6519a1a93ba28d40ca6f015d270f7bcd3e77cef279d9cd655155ab7805b49638f1
    6850d72174
  3. Merge bitcoin/bitcoin#27897: guix: use GCC 12.3.0 to build releases
    10d56530e097cbf70f7ecbc464550d89b4d91b87 guix: temporarily disable powerpcle taget (fanquake)
    001412a4d2da685cd881fc37bbe87af427edc21a guix: use GCC 12.3.0 (fanquake)
    ce54330cf6c5ce37e1369e5e8cb58923233d67ca ci: use Debian Bookworm (GCC 12) for ARM ci job (fanquake)
    0da6451c58c253ee60095aaafdf542247b2ff60b ci: use Debian Bookworm (GCC 12) for win64 job (fanquake)
    
    Pull request description:
    
      Switch to using [GCC `12.3.0`](https://gcc.gnu.org/gcc-12/) to build release binaries.
    
      Temporarily disables the `powerpc64le-linux-gnu` target due to non-determinism issues when building across `aarch64` and `x86_64`. Trying to fix the non-determinism was going to require trying to selectively disable optimization flags, which is already not ideal (and didn't fix all issues), and the migration to GCC 12 as our release compiler is now the blocker for multiple other (c++20 and similar) changes, so leaving this blocked on the `powerpc64le` binaries does not seem like a good tradeoff.
    
    ACKs for top commit:
      TheCharlatan:
        ACK 10d56530e097cbf70f7ecbc464550d89b4d91b87
    
    Tree-SHA512: 401bbaaf2b72c795a06a24875ffd666151b41bae8f45bda10526ff4f6b59782704246afc6585f6b849021cbff8a7b861961d139bffe45536aaaeb3952b72ae57
    e1ce5b8ae9
  4. depends: drop 1 qt determinism patch
    No-longer required now that we are building with GCC 12.
    76d6537698
  5. build: Bump g++ minimum supported version to 11 fa8409e760
  6. Merge bitcoin/bitcoin#29459: test: check_mempool_result negative feerate
    bf264e05981e3809715f34f548138d53991db6f2 test: check_mempool_result negative feerate (kevkevin)
    
    Pull request description:
    
      Adds test coverage in `mempool_accept.py` to check if a negative `maxfeerate` is input into `check_mempool_result`
      Asserts "Amount out of range" error message and `-3` error code
    
      Motivated by this [comment](https://github.com/bitcoin/bitcoin/pull/29434/files#r1491112250)
    
    ACKs for top commit:
      maflcko:
        lgtm ACK bf264e05981e3809715f34f548138d53991db6f2
      brunoerg:
        nice, utACK bf264e05981e3809715f34f548138d53991db6f2
      davidgumberg:
        Looks great, ACK https://github.com/bitcoin/bitcoin/pull/29459/commits/bf264e05981e3809715f34f548138d53991db6f2
    
    Tree-SHA512: 58931b774cc887c616f2fd91af3ee65cc5db55acd8e2875c76de448c80bd4e020b057c5f4f85556431377f0d0e7553771fb285d1ec20cf64f64ec92a47776b78
    3d255dfb67
  7. guix: bump time-machine to dc4842797bfdc5f9f3f5f725bf189c2b68bd6b5a
    This includes a commit to fix building LLVM 17 on riscv64, see
    https://git.savannah.gnu.org/cgit/guix.git/commit/?id=4e26331a5ee87928a16888c36d51e270f0f10f90.
    
    Followup to discussion in
    https://github.com/bitcoin/bitcoin/pull/28880#issuecomment-1843313196.
    
    If you don't have riscv64 hardware, this can be tested with the
    following:
    ```bash
    guix time-machine --commit=d5ca4d4fd713a9f7e17e074a1e37dda99bbb09fc -- build --target=riscv64-linux-gnu  llvm
    ....
    riscv64-linux-gnu-ld: CMakeFiles/dsymutil.dir/dsymutil.cpp.o: undefined reference to symbol '__atomic_fetch_and_1@@LIBATOMIC_1.0'
    riscv64-linux-gnu-ld: /gnu/store/i4ga0pnr1b74bir2bjyp8mcrrbsvk7d3-gcc-cross-riscv64-linux-gnu-11.3.0-lib/riscv64-linux-gnu/lib/libatomic.so.1:
      error adding symbols: DSO missing from command line
    collect2: error: ld returned 1 exit status
    
    guix time-machine --commit=dc4842797bfdc5f9f3f5f725bf189c2b68bd6b5a -- build --target=riscv64-linux-gnu  llvm
    ....
    grafting '/gnu/store/7y0j0y8jaz4mjx2nz0y42wdnxxjp6id6-llvm-17.0.6-opt-viewer' -> '/gnu/store/8xvahrrjscbprh6cjj0qp5bm9mm78wwa-llvm-17.0.6-opt-viewer'...
    grafting '/gnu/store/bjhw648bz7ijd2p9hgzzdbw1q8hpagk8-llvm-17.0.6' -> '/gnu/store/x50qi8i2ywgpx6azv4k55ms0w5xjxxg5-llvm-17.0.6'...
    successfully built /gnu/store/q9xvk8gzzvb4dxfzf6yi5164zd0d1vj2-llvm-17.0.6.drv
    ```
    cf5faf73c9
  8. Remove unused g++-10 workaround
    This reverts d4999d40b9bd04dc20111aaaa6ed2d3db1a5caf9
    fa5844f06d
  9. depends: always configure with --with-pic
    We currently do this sporadically. Not only amongst packages, but across
    OS's, i.e sometimes it's done for BSDs/Android, and sometimes not.
    
    Configure with `--with-pic` globally instead. I think this generally
    makes more sense, and should not have any downsides.
    
    See related discussion in
    https://github.com/bitcoin/bitcoin/pull/28846#discussion_r1399123100.
    e037c4fe09
  10. test: Add tests for wallet mempool conflicts 180973a941
  11. scripted-diff: wallet: s/TxStateConflicted/TxStateBlockConflicted
    -BEGIN VERIFY SCRIPT-
    sed -i 's/TxStateConflicted/TxStateBlockConflicted/g' src/wallet/wallet.cpp src/wallet/interfaces.cpp src/wallet/transaction.h src/wallet/transaction.cpp
    sed -i 's/isConflicted/isBlockConflicted/g' src/wallet/transaction.h src/wallet/wallet.cpp
    -END VERIFY SCRIPT-
    ffe5ff1fb6
  12. Merge bitcoin/bitcoin#29650: depends: drop 1 Qt determinism patch
    76d6537698e46f52d6c45a76f7d99ba427d57dca depends: drop 1 qt determinism patch (fanquake)
    
    Pull request description:
    
      No-longer required now that we are building with GCC 12.
    
      Guix Build (x86_64 && aarch64):
      ```bash
      e1c5b2c1c1a184e9d6985f26d26c61ca049e4541c699c6c9ce334beb832ed8da  guix-build-76d6537698e4/output/aarch64-linux-gnu/SHA256SUMS.part
      22f5d39fd9eac2d1fdbf2794fd6272ce05a1dfda2aeb2280a5dbafe76d0eec3d  guix-build-76d6537698e4/output/aarch64-linux-gnu/bitcoin-76d6537698e4-aarch64-linux-gnu-debug.tar.gz
      1cc798fb30b9e85e3b94049a671e2881b6b8694e52ae5e6468805c8ea6ea637f  guix-build-76d6537698e4/output/aarch64-linux-gnu/bitcoin-76d6537698e4-aarch64-linux-gnu.tar.gz
      a8c4ecc550aba01292885343ae9d53e31dfc0ef26f885fcf00493c754c5f9deb  guix-build-76d6537698e4/output/arm-linux-gnueabihf/SHA256SUMS.part
      d037b87949640d441b1ea000fd3fb27a508a699c5a6d69b6647611325cb9b7f5  guix-build-76d6537698e4/output/arm-linux-gnueabihf/bitcoin-76d6537698e4-arm-linux-gnueabihf-debug.tar.gz
      a858a0bce444a9eaf2b36d188198e54cdc14d85e344863d9e176dca94e458537  guix-build-76d6537698e4/output/arm-linux-gnueabihf/bitcoin-76d6537698e4-arm-linux-gnueabihf.tar.gz
      a802412eb9f2bbe2c573052581c21c44281e78c65d6ebc243105d5004768f0f9  guix-build-76d6537698e4/output/arm64-apple-darwin/SHA256SUMS.part
      20eeb2a28f096f53eeae61c64082c7eef0fb4d4e8dd7fb173a6cc19bf1960165  guix-build-76d6537698e4/output/arm64-apple-darwin/bitcoin-76d6537698e4-arm64-apple-darwin-unsigned.tar.gz
      54fae4652f21772d4d861b1a9dd3dcb913f088e6b7049a566c748ccdf2acede3  guix-build-76d6537698e4/output/arm64-apple-darwin/bitcoin-76d6537698e4-arm64-apple-darwin-unsigned.zip
      e986f3d8311df3ab26860c8747e9634687617609a317fdf242365d408235f417  guix-build-76d6537698e4/output/arm64-apple-darwin/bitcoin-76d6537698e4-arm64-apple-darwin.tar.gz
      3efced764d3b62362c906f1fbbdecf347be1aab877afb2d6ce8f39d24b3d7437  guix-build-76d6537698e4/output/dist-archive/bitcoin-76d6537698e4.tar.gz
      6bd047bd080ae0d0a08a15e83a79dfd17bf29227599517d0bccae17a0224a741  guix-build-76d6537698e4/output/powerpc64-linux-gnu/SHA256SUMS.part
      102909ef544962e08577464b3293c0013237391b7577d7abc26f1244d3d0157d  guix-build-76d6537698e4/output/powerpc64-linux-gnu/bitcoin-76d6537698e4-powerpc64-linux-gnu-debug.tar.gz
      01cf35c37093f768c953697c8d0102316e1e719befd2853a74266bcc2105c52c  guix-build-76d6537698e4/output/powerpc64-linux-gnu/bitcoin-76d6537698e4-powerpc64-linux-gnu.tar.gz
      467f858d1aba32ee290e6ba00feee632fcb56907f77e5b48f4de969d8ce78457  guix-build-76d6537698e4/output/riscv64-linux-gnu/SHA256SUMS.part
      893cb65a79709c58ebafb003ce43b1cd51434d9c0a9175b7dfede6aa99fec3d2  guix-build-76d6537698e4/output/riscv64-linux-gnu/bitcoin-76d6537698e4-riscv64-linux-gnu-debug.tar.gz
      be3bd03cdef59928eb8a18bd59f48ad27ae38a6382bf94651774845adbd28308  guix-build-76d6537698e4/output/riscv64-linux-gnu/bitcoin-76d6537698e4-riscv64-linux-gnu.tar.gz
      1ff2b04cccd44c4c6526387307fb381f52fbc36b31a51730435d6b99e0fa4610  guix-build-76d6537698e4/output/x86_64-apple-darwin/SHA256SUMS.part
      9c84639c4b7e1e39c06da4c9430efe94993ce97fbc279b38502c1d4fc25ac801  guix-build-76d6537698e4/output/x86_64-apple-darwin/bitcoin-76d6537698e4-x86_64-apple-darwin-unsigned.tar.gz
      e65c009c728aa42f24b6970018336058adc78fba09b85aa76310de98fdabb8ad  guix-build-76d6537698e4/output/x86_64-apple-darwin/bitcoin-76d6537698e4-x86_64-apple-darwin-unsigned.zip
      1a85307eec81cc13e5d599db1bb7cddd3d4f6847f2bad7685e096c439b44489a  guix-build-76d6537698e4/output/x86_64-apple-darwin/bitcoin-76d6537698e4-x86_64-apple-darwin.tar.gz
      10189926b6ccef3ab1feee3edce34a80a30e60ee67c00519e344fefd6c9880d0  guix-build-76d6537698e4/output/x86_64-linux-gnu/SHA256SUMS.part
      0094570197c0a91b7a903c1250bf899ea50d7452608da03f5dd825febd5e216b  guix-build-76d6537698e4/output/x86_64-linux-gnu/bitcoin-76d6537698e4-x86_64-linux-gnu-debug.tar.gz
      8375afd9ea4376b354548270323fa0f5f3244579b59dcdf9c26330337b5719ab  guix-build-76d6537698e4/output/x86_64-linux-gnu/bitcoin-76d6537698e4-x86_64-linux-gnu.tar.gz
      5a30053ee8db9eb2d083e8569a1a69b24acc84de1028f3f40d5e902a1174e49e  guix-build-76d6537698e4/output/x86_64-w64-mingw32/SHA256SUMS.part
      1d624077e027dd6f213c85d75fdbac12d61c45235946817c406132fbd222c939  guix-build-76d6537698e4/output/x86_64-w64-mingw32/bitcoin-76d6537698e4-win64-debug.zip
      e75107ce5608d83708b4e9b5a64d50e0282560ee2d8d915a20993fd383d2d456  guix-build-76d6537698e4/output/x86_64-w64-mingw32/bitcoin-76d6537698e4-win64-setup-unsigned.exe
      7fb1f412fd71e0e8302add6bcc5679ad6990d87c16688a396769844f72ae7c82  guix-build-76d6537698e4/output/x86_64-w64-mingw32/bitcoin-76d6537698e4-win64-unsigned.tar.gz
      be24df85e0834823f0ad9611667100330972d3a18460099d7df5b4386fbd6403  guix-build-76d6537698e4/output/x86_64-w64-mingw32/bitcoin-76d6537698e4-win64.zip
      ```
    
    ACKs for top commit:
      TheCharlatan:
        ACK 76d6537698e46f52d6c45a76f7d99ba427d57dca
    
    Tree-SHA512: 69e698e9b0036ecb1f89db82427c25d0368d2178c3dc2bc751181c19a1139929bf0da160af6f3e021ca3da59ea66f7b7330aa6295f5e65c6ef0bbcf369fcbc94
    178b4d47cc
  13. Merge bitcoin/bitcoin#29487: lint: Fix lint-whitespace issues
    5555395c15e896230a55c131fc3cbfd9d116adf8 lint: Use git --no-pager to print any output in one go (MarcoFalke)
    fa5729436ca12b20cfa2cd1f0c6f54af7192f0a6 lint: Fix lint-whitespace issues (MarcoFalke)
    
    Pull request description:
    
      The lint check has many issues:
    
      * It uses `COMMIT_RANGE`, which is brittle code, apparently making it harder to run the CI locally, or self-hosted. See https://github.com/bitcoin/bitcoin/pull/29274#discussion_r1457739319
      * The result depends on `COMMIT_RANGE`, or the number of commits passed to the script, which can cause false negatives or false positives.
      * It is based on the diff output, parsing it, and printing it again, which is brittle as well.
      * The output does not include line number, making it harder to act on a lint error.
    
      Fix all issues by removing the script and replacing it with a simple call to `git grep -I --line-number ...`.
    
    ACKs for top commit:
      TheCharlatan:
        Re-ACK 5555395c15e896230a55c131fc3cbfd9d116adf8
    
    Tree-SHA512: 71ea8b6382af064beb72fb17f21a0ae9e9238c97e7fa43c2ec353fd1dd73a7bbd696ba0f0a9f65d1eff7c86cbf6cc104a992cb5450a3d50f122955e835270065
    015ac13dcc
  14. ci: Bump `TIDY_LLVM_V`
    This change switches to the latest IWYU 0.22, which is compatible with
    Clang 18.
    636c9862cf
  15. wallet refactor: use CWalletTx member functions to determine tx state d64922b590
  16. fuzz: actually test garbage >64b in p2p transport test 626f8e398e
  17. ci: Drop `--enable-c++20` option
    This option has ceased to exist since https://github.com/bitcoin/bitcoin/pull/28349.
    64722e4359
  18. lint: Clarify lint runner rust dependency fad7f42324
  19. lint: Add lint runner build dir to gitignore cfa057b86d
  20. lint: Add lint runner build dir and lint pycache to clean task 742d2b9347
  21. Merge bitcoin/bitcoin#29537: lint: Misc improvements for lint runner
    742d2b93473a856786e32c5e35e3b6ce2a95000f lint: Add lint runner build dir and lint pycache to clean task (Fabian Jahr)
    cfa057b86d735942adbeb7347a51b6f0c32901f7 lint: Add lint runner build dir to gitignore (Fabian Jahr)
    fad7f423249c161cad20a754653f9477e2b98339 lint: Clarify lint runner rust dependency (Fabian Jahr)
    
    Pull request description:
    
      1. Document the dependency to rust being installed locally
      2. Add the build output directory to gitignore
      3. Clean up the build output directory when running `make clean`
    
    ACKs for top commit:
      maflcko:
        ACK 742d2b93473a856786e32c5e35e3b6ce2a95000f
      TheCharlatan:
        ACK 742d2b93473a856786e32c5e35e3b6ce2a95000f
    
    Tree-SHA512: 36751d852e579830a9e6915b846886a6edaf4e42d508a4773ab502afda10b47c30c7c6bbd3e3158539ea5cf51592c2fe49c4221d271511006653a2d79119ed8c
    f1a19d79ff
  22. Add FeeFrac utils
    Co-authored-by: Suhas Daftuar <sdaftuar@chaincode.com>
    Co-authored-by: Pieter Wuille <pieter.wuille@gmail.com>
    ce8e22542e
  23. Add FeeFrac unit tests
    Co-authored-by: Suhas Daftuar <sdaftuar@chaincode.com>
    66d966dcfa
  24. Implement ImprovesFeerateDiagram
    This new function takes the populated sets of
    direct and all conflicts computed in the current
    mempool, assuming the replacements are a single
    chunk, and computes a diagram check.
    
    The diagram check only works against cluster
    sizes of 2 or less, and fails if it encounters
    a different topology.
    
    Co-authored-by: Suhas Daftuar <sdaftuar@chaincode.com>
    2079b80854
  25. fuzz: Add fuzz target for ImprovesFeerateDiagram
    Co-authored-by: Suhas Daftuar <sdaftuar@chaincode.com>
    588a98dccc
  26. test: Add tests for CompareFeerateDiagram and CheckConflictTopology e9c5aeb11d
  27. fuzz: fuzz diagram creation and comparison
    Co-authored-by: Suhas Daftuar <sdaftuar@chaincode.com>
    Co-authored-by: Pieter Wuille <pieter.wuille@gmail.com>
    4d6528a3d6
  28. Add fuzz test for FeeFrac 7e89b659e1
  29. test: unit test for ImprovesFeerateDiagram b767e6bd47
  30. Unit tests for CalculateFeerateDiagramsForRBF 7295986778
  31. Merge bitcoin/bitcoin#29091: build: Bump g++ minimum supported version to 11
    fa5844f06d74b35cd27c1927e2250ebb494578e9 Remove unused g++-10 workaround (MarcoFalke)
    fa8409e760b8f8734406dcbf98f00ba21d160f87 build: Bump g++ minimum supported version to 11 (MarcoFalke)
    
    Pull request description:
    
      This drops support for vanilla Ubuntu Focal 20.04 and Debian (Oldstable) Bullseye, compiling from source. Users on those operating systems would have to stick with a pre-compiled release, a previous release branch of Bitcoin Core, upgrade their system, compile their own compiler, or use a non-vanilla PPA or package manager.
    
      Otherwise, g++-11 is offered by common distributions:
    
      * https://packages.ubuntu.com/jammy/g++ (`g++-11`)
      * https://packages.debian.org/bookworm/g++ (`g++-12`)
      * FreeBSD 12/13 ships with g++ 12
      * CentOS-like 9 ships with g++ 11
      * OpenSuse Tumbleweed ships with g++ 13 https://software.opensuse.org/package/gcc13-c++ (No idea about OpenSuse Leap)
    
    ACKs for top commit:
      TheCharlatan:
        ACK fa5844f06d74b35cd27c1927e2250ebb494578e9
      fanquake:
        ACK fa5844f06d74b35cd27c1927e2250ebb494578e9
    
    Tree-SHA512: fc72d3a53956a0a4a6475ebf56b5fce76c3c4c793ed8e774327cad2b0f307d2d1c8aeafe2a414a7eb51f8de6d4bb78d30b8f60bf6e383234079851e72015c6e3
    7af95afa8b
  32. Revert "time: add runtime sanity check"
    This reverts commit 3c2e16be22ae04bf56663ee5ec1554d0d569741b.
    fa2c486afc
  33. refactor: FormatISO8601* without gmtime* fa72dcbfa5
  34. build: Remove HAVE_GMTIME_R fa9f36baba
  35. Merge bitcoin/bitcoin#29659: ci: Bump `TIDY_LLVM_V`
    636c9862cfc8b3facc84eb62b51e18877f2022a9 ci: Bump `TIDY_LLVM_V` (Hennadii Stepanov)
    
    Pull request description:
    
      This PR switches to the latest [IWYU 0.22](https://github.com/include-what-you-use/include-what-you-use/releases/tag/0.22), which is compatible with Clang 18.
    
    ACKs for top commit:
      fanquake:
        ACK 636c9862cfc8b3facc84eb62b51e18877f2022a9
    
    Tree-SHA512: 78ce89244c5e487dd1be8b4bd2ca6f06d19b04b78289ebc21985110574053545dcce5eb622edf2bede2cf7bb58360170e976d30a4484a127d34dd17b1c604e9c
    aba9024c0c
  36. desc spkm: Add functions to retrieve specific private keys fa6a259985
  37. wallet: Add IsActiveScriptPubKeyMan
    Given a ScriptPubKeyMan, it's useful to ask the wallet whether it is
    currently active.
    66632e5c24
  38. assumeutxo test: Add RPC test for fake nTx and nChainTx values
    The fake values will be removed in an upcoming commit, so it is useful to have
    test coverage confirming the change in behavior.
    f252e687ec
  39. ci: add getchaintxstats ubsan suppressions
    Add ubsan suppressions for integer overflows in the getchaintxstats RPC.
    
    getchainstatstx line "int nTxDiff = pindex->nChainTx - past_block.nChainTx" can
    trigger ubsan integer overflows when assumeutxo snapshots are loaded, from
    subtracting unsigned values and assigning the result to a signed int.
    
    The overflow behavior probably exists in current code but is hard to trigger
    because it would require calling getchainstatstx at the right time with
    specific parameters as background blocks are being downloaded. But the overflow
    behavior becomes easier to trigger in the upcoming commit removing fake
    nChainTx values, so a suppression needs to be added before then for CI to pass.
    
    getchainstatstx should probably be improved separately in another PR to not
    need this suppression, and handle edge cases and missing nChainTx values more
    carefully.
    63e8fc912c
  40. validation: Check GuessVerificationProgress is not called with disconnected block
    Use Assume macro as suggested https://github.com/bitcoin/bitcoin/pull/29370#discussion_r1479427801
    0fd915ee6b
  41. doc: Improve comments describing setBlockIndexCandidates checks
    The checks are changing slightly in the next commit, so try to explains the
    ones that exist to avoid confusion
    (https://github.com/bitcoin/bitcoin/pull/29370#discussion_r1499519079)
    9b97d5bbf9
  42. assumeutxo: Get rid of faked nTx and nChainTx values
    The `PopulateAndValidateSnapshot` function introduced in
    f6e2da5fb7c6406c37612c838c998078ea8d2252 from #19806 has been setting fake
    `nTx` and `nChainTx` values that can show up in RPC results (see #29328) and
    make `CBlockIndex` state hard to reason about, because it is difficult to know
    whether the values are real or fake.
    
    Revert to previous behavior of setting `nTx` and `nChainTx` to 0 when the
    values are unknown, instead of faking them.
    
    This commit fixes at least two assert failures in the (pindex->nChainTx ==
    pindex->nTx + prev_chain_tx) check that would happen previously. Tests for
    these failures are added separately in the next two commits.
    
    Compatibility note: This change could result in -checkblockindex failures if a
    snapshot was loaded by a previous version of Bitcoin Core and not fully
    validated, because fake nTx values will have been saved to the block index. It
    would be pretty easy to avoid these failures by adding some compatibility code
    to `LoadBlockIndex` and changing `nTx` values from 1 to 0 when they are fake
    (when `(pindex->nStatus & BLOCK_VALID_MASK) < BLOCK_VALID_TRANSACTIONS`), but a
    little simpler not to worry about being compatible in this case.
    ef29c8b662
  43. test: assumeutxo stale block CheckBlockIndex crash test
    Add a test for a CheckBlockIndex crash that would happen before previous
    "assumeutxo: Get rid of faked nTx and nChainTx values" commit.
    
    The crash was an assert failure in the (pindex->nChainTx == pindex->nTx +
    prev_chain_tx) check that would previously happen if a snapshot was loaded, and
    a block was submitted which forked from the chain before the snapshot block and
    after the last downloaded background chain block. This block would not be
    marked assumed-valid because it would not be an ancestor of the snapshot, and
    it would have nTx set, nChainTx unset, and prev->nChainTx set with a fake
    value, so the assert would fail. After the fix, prev->nChainTx is unset instead
    of being set to a fake value, so the assert succeeds. This test was originally
    posted by maflcko in
    https://github.com/bitcoin/bitcoin/issues/29261#issuecomment-1918947945
    
    Co-authored-by: MarcoFalke <*~=`'#}+{/-|&$^_@721217.xyz>
    0391458d76
  44. test: assumeutxo snapshot block CheckBlockIndex crash test
    Add a test for a CheckBlockIndex crash that would happen before previous
    "assumeutxo: Get rid of faked nTx and nChainTx values" commit.
    
    The crash was an assert failure in the (pindex->nChainTx == pindex->nTx +
    prev_chain_tx) check that would previously happen if the snapshot block was
    submitted after loading the snapshot and downloading a few blocks after the
    snapshot. In that case ReceivedBlockTransactions() previously would overwrite
    the nChainTx value of the submitted snapshot block with a fake value based on
    the previous block, so the (pindex->nChainTx == pindex->nTx + prev_chain_tx)
    check would later fail on the first block after the snapshot. This test was
    originally posted by Martin Zumsande <mzumsande@gmail.com> in
    https://github.com/bitcoin/bitcoin/pull/29370#issuecomment-1974096225
    
    Co-authored-by: Martin Zumsande <mzumsande@gmail.com>
    ef174e9ed2
  45. Merge bitcoin/bitcoin#29669: ci: Drop `--enable-c++20` option
    64722e4359bc101682d73e5a1a04ef2c68716d4c ci: Drop `--enable-c++20` option (Hennadii Stepanov)
    
    Pull request description:
    
      This option has ceased to exist since https://github.com/bitcoin/bitcoin/pull/28349.
    
    ACKs for top commit:
      maflcko:
        ACK 64722e4359bc101682d73e5a1a04ef2c68716d4c
    
    Tree-SHA512: bd392c331f775605615e1b236682269b83a1e6363a4d3f09c4d8d54495cf3d22973a921ebf6b8a9f813ba6c024d3324761f3291aaf7f473995f5eaa4c195bc43
    9a459e3ab9
  46. assumeutxo: Remove BLOCK_ASSUMED_VALID flag
    Flag adds complexity and is not currently used for anything.
    9d9a7458a2
  47. remove libbitcoinconsensus
    This was deprecated in v27.0, for removal in v28.0.
    See discussion in PR #29189.
    80f8b92f4f
  48. Merge bitcoin/bitcoin#28950: RPC: Add maxfeerate and maxburnamount args to submitpackage
    38f70ba6ac86fb96c60571d2e1f316315c1c73cc RPC: Add maxfeerate and maxburnamount args to submitpackage (Greg Sanders)
    
    Pull request description:
    
      Resolves https://github.com/bitcoin/bitcoin/issues/28949
    
      I couldn't manage to do it very cleanly outside of (sub)package evaluation itself, since it would change the current interface very heavily. Instead I threaded through the max fee argument and used that directly via ATMPArgs. From that perspective, this is somewhat a reversion from https://github.com/bitcoin/bitcoin/pull/19339. In a post-cluster mempool world, these checks could be consolidated to right after the given (ancestor) package is linearized/chunked, by just checking the feerate of the top chunk and rejecting the submission entirely if the top chunk is too high.
    
      The implication here is that subpackages can be submitted to the mempool prior to hitting this new fee-based error condition.
    
    ACKs for top commit:
      ismaelsadeeq:
        Re-ACK https://github.com/bitcoin/bitcoin/commit/38f70ba6ac86fb96c60571d2e1f316315c1c73cc ๐Ÿ‘๐Ÿพ
      glozow:
        ACK 38f70ba6ac with some non-blocking nits
      murchandamus:
        LGTM, code review ACK 38f70ba6ac86fb96c60571d2e1f316315c1c73cc
    
    Tree-SHA512: 38212aa9de25730944cee58b0806a3d37097e42719af8dd7de91ce86bb5d9770b6f7c37354bf418bd8ba571c52947da1dcdbb968bf429dd1dbdf8715315af18f
    5d045c31a5
  49. Merge bitcoin/bitcoin#29667: fuzz: actually test garbage >64b in p2p transport test
    626f8e398e219b84907ccaad036f69177d39284c fuzz: actually test garbage >64b in p2p transport test (Pieter Wuille)
    
    Pull request description:
    
      This fixes an oversight from #28196: in the `p2p_transport_bidirectional_v2` fuzz test, when the desired garbage length is over 64 bytes, the code would actually use garbage length 0. Fix this.
    
    ACKs for top commit:
      instagibbs:
        ACK https://github.com/bitcoin/bitcoin/pull/29667/commits/626f8e398e219b84907ccaad036f69177d39284c
      brunoerg:
        crACK 626f8e398e219b84907ccaad036f69177d39284c
    
    Tree-SHA512: f6346367adb10464b6c9d20aef43625531d2a4d8110887ad03214b8c1907b83560f2dd5b5415e2180a40b4cd276d51881b32b60c740471b5c6bb218aa19848d8
    0f89e86516
  50. Merge bitcoin/bitcoin#29639: test: fix intermittent failures with test=addrman
    432a542e271f5b6ecb1c6ea4fa9108ad4b3a5a43 test: fix intermittent failures with test=addrman (Martin Zumsande)
    
    Pull request description:
    
      The `nKey` of the addrman is generated the first time the node is started with an empty `peers.dat`. Therefore, restarting a node or turning it off and on again won't make a previously non-deterministic addrman deterministic.
      This could lead to intermittent failures in `feature_asmap.py` and `rpc_net.py`
    
      Fixes #29634
    
    ACKs for top commit:
      kevkevinpal:
        ACK [432a542](https://github.com/bitcoin/bitcoin/pull/29639/commits/432a542e271f5b6ecb1c6ea4fa9108ad4b3a5a43)
      stratospher:
        Tested ACK 432a542e271f5b6ecb1c6ea4fa9108ad4b3a5a43.
      brunoerg:
        crACK 432a542e271f5b6ecb1c6ea4fa9108ad4b3a5a43
      0xB10C:
        ACK 432a542e271f5b6ecb1c6ea4fa9108ad4b3a5a43
    
    Tree-SHA512: a8e284baeb0be2df7284b8a2792cb9edc9e2d5b877a3b29ab7277ffdb75b17efa58a4d42576441eb493cd518e7c5ffdb05597b27e42b5001cf1a80e78bb04c83
    9f2609de09
  51. Merge bitcoin/bitcoin#29094: ci: Better tidy errors
    fae70ba00da27ca5734c88e9964c872c7faa0f78 ci: Better tidy errors (MarcoFalke)
    
    Pull request description:
    
      Currently tidy errors are not nice, because the user may have to scroll up to see them in a large block of text. See for example (before) https://github.com/bitcoin/bitcoin/runs/19670551485
    
      Fix that by `tee`ing the output to a file and summarizing the errors in the end again. See for example (after): https://github.com/bitcoin/bitcoin/runs/22647850662
    
    ACKs for top commit:
      hebasto:
        ACK fae70ba00da27ca5734c88e9964c872c7faa0f78, logs with errors look cleaner.
      TheCharlatan:
        ACK fae70ba00da27ca5734c88e9964c872c7faa0f78
    
    Tree-SHA512: dcaea557fed40089409d16ce2cbaa8a9cfbf047f601d5daadfee0823b0eed7badc12d803addc0b7b6bb3f1eaf5c787fccb2488475d32c4efd80835f386f761dd
    8e95a9cd7a
  52. rpc: "addpeeraddress tried" return error on failure
    When trying to add an address to the IP address manager tried table,
    it's first added to the new table and then moved to the tried table.
    Previously, adding a conflicting address to the address manager's
    tried table with test-only `addpeeraddress tried=true` RPC would
    return `{ "success": true }`. However, the address would not be added
    to the tried table, but would remain in the new table. This caused,
    e.g., issue 28964.
    
    This is fixed by returning `{ "success": false, "error":
    "failed-adding-to-tried" }` for failed tried table additions. Since
    the address remaining in the new table can't be removed (the address
    manager interface does not support removing addresses at the moment
    and adding this seems to be a bigger effort), an error message is
    returned. This indicates to a user why the RPC failed and allows
    accounting for the extra address in the new table.
    
    Also:
    To check the number of addresses in each addrman table,
    the addrman checks were re-run and the log output of this check
    was asserted. Ideally, logs shouldn't be used as an interface
    in automated tests. To avoid asserting the logs, use the getaddrmaninfo
    and getrawaddrman RPCs (which weren't implemented when the test was added).
    Removing the "getnodeaddress" calls would also remove the addrman checks
    from the test, which could reduce the test coverage. To avoid this,
    these are kept.
    6205466512
  53. test: remove unused mocktime in test_addpeeraddress
    Drops the mocktime added in fa4c6836c9366c3cc575cb386a397840d5f1aa57.
    Setting the mocktime in test_addpeeraddress() isn't needed
    anymore as it doesn't leak into test_getrawaddrman() anymore
    (since 2cc8ca19f4185490f30a49516c890b2289fbab71).
    
    test_getrawaddrman() clear's the addrman and sets it's own
    mocktime.
    0d01f6f0c6
  54. test: fix test to ensure hidden RPC is present in detailed help
    current check to make sure that detailed help for hidden RPC
    is displayed won't work because the assertion isn't sufficient.
    Even if unknown RPCs are passed, RPC names would still be present
    in node.help().
    99954f914f
  55. ci: Bump msan to llvm-18 faecf3a7e6
  56. Merge bitcoin/bitcoin#29192: Weaken serfloat tests
    6e873df3478f3ab8f67d1b9339c7e990ae90e95b serfloat: improve/simplify tests (Pieter Wuille)
    b45f1f56582fb3a0d17db5014ac57f1fb40a3611 serfloat: do not test encode(bits)=bits anymore (Pieter Wuille)
    
    Pull request description:
    
      Closes #28941.
    
      Our current tests for serfloat verify two distinct properties:
      1. Whether they roundtrip `double`->`uint64_t`->`double` (excluding NaN values) on all systems.
      2. Whether on systems with a typical floating point unit that encoding matches the hardware representation, as before v22.0, we would dump the hardware representation directly to disk and we wanted to retain compatibility with that.
    
      #28941 seems to show that the second property doesn't always hold, but just for "subnormal" numbers (below $2^{-1021}$). Since we don't care about encoding these numbers, we could exclude such subnormal numbers from the hardware-identical representation test, but this PR goes further and just drops the second property entirely, as I don't think we care about edge-case compatibility with pre-v22.0 code for fee_estimates.dat (the only place it is used).
    
    ACKs for top commit:
      glozow:
        ACK 6e873df3478f3ab8f67d1b9339c7e990ae90e95b
      fanquake:
        ACK 6e873df3478f3ab8f67d1b9339c7e990ae90e95b - It's not as much of a priority, but I think we could still backport this.
    
    Tree-SHA512: e18ceee0753a7ee7e999fdfa10b014dc5bb67b6ef79522a0f8c76b889adcfa785772fc26ed7559bcb5a09a9938e243bb54eedd9549bc59080a2c8090155e2267
    479ecc0515
  57. index: Move last_locator_write_time and logging to end of threadsync loop
    This avoids having commit print a needless error message during init.
    
    Co-authored-by: furszy <mfurszy@protonmail.com>
    f65b0f6401
  58. Merge bitcoin/bitcoin#29279: test: p2p: check disconnect due to lack of desirable service flags
    2f23987849758537f76df7374d85a7e87b578b61 test: p2p: check limited peers desirability (depending on best block depth) (Sebastian Falbesoner)
    c4a67d396d0aa99f658cafe381e39622859eb0be test: p2p: check disconnect due to lack of desirable service flags (Sebastian Falbesoner)
    405ac819af1eb0f6cf6d1805cb668f4e8ab4a6f3 test: p2p: support disconnect waiting for `add_outbound_p2p_connection` (Sebastian Falbesoner)
    
    Pull request description:
    
      This PR adds missing test coverage for disconnecting peers which don't offer the desirable service flags in their VERSION message:
      https://github.com/bitcoin/bitcoin/blob/5f3a0574c45477288bc678b15f24940486084576/src/net_processing.cpp#L3384-L3389
      This check is relevant for the connection types "outbound-full-relay", "block-relay-only" and "addr-fetch" (see `CNode::ExpectServicesFromConn(...)`). Feeler connections always disconnect, which is also tested here.
    
      In lack of finding a proper file where this test would fit in, I created a new one. Happy to take suggestions there.
    
    ACKs for top commit:
      davidgumberg:
        reACK https://github.com/bitcoin/bitcoin/commit/2f23987849758537f76df7374d85a7e87b578b61
      itornaza:
        tested ACK 2f23987849758537f76df7374d85a7e87b578b61
      fjahr:
        re-utACK 2f23987849758537f76df7374d85a7e87b578b61
      cbergqvist:
        re ACK 2f23987849758537f76df7374d85a7e87b578b61
      stratospher:
        tested ACK 2f23987. ๐Ÿš€
    
    Tree-SHA512: cf75d9d4379d0f34fa1e13152e6a8d93cd51b9573466ab3a2fec32dc3e1ac49b174bd1063cae558bc736b111c8a6e7058b1b57a496df56255221bf367d29eb5d
    3d216baf91
  59. Merge bitcoin/bitcoin#29676: ci: Bump msan to llvm-18
    faecf3a7e6779c2cacadd91a6eba446431778849 ci: Bump msan to llvm-18 (MarcoFalke)
    
    Pull request description:
    
      Last one: https://github.com/bitcoin/bitcoin/pull/28476
    
    ACKs for top commit:
      fanquake:
        ACK faecf3a7e6779c2cacadd91a6eba446431778849 - There is now a 18.1.2, but given it doesn't fix the instrumenting in libunwind, we don't need that here. I've tested that both jobs are now working on both arches.
    
    Tree-SHA512: 489c0b343bdc732687131317a570f3efbb18a3f548736d739da90d1a1e784df1dbb208c2da8a2a7740f27f961a841c477487a14c4d59910368f651225f0779b2
    5b9831a0a5
  60. test: add coverage for bech32m in `wallet_keypool_topup` a8bfc3dea1
  61. Merge bitcoin/bitcoin#28955: index: block filters sync, reduce disk read operations by caching last header
    99afb9d15a08d2f46739f4d2b66c63dbabd7a44e refactor: init, simplify index shutdown code (furszy)
    0faafb57f8298547949cbc0044ee9e925ed887ba index: decrease ThreadSync cs_main contention (furszy)
    f1469eb45469672046c5793b44863f606736c853 index: cache last block filter header (furszy)
    a6756ecdb2f1ac960433412807aa377d1ee80d05 index: blockfilter, decouple header lookup into its own function (furszy)
    331f044e3b49223cedd16803d123c0da9d91d6a2 index: blockfilter, decouple Write into its own function (furszy)
    bcbd7eb8d40fbbd0e58c61acef087d65f2047036 bench: basic block filter index initial sync (furszy)
    
    Pull request description:
    
      Work decoupled from #26966 per request.
    
      The aim is to remove an unnecessary disk read operation that currently takes place with every new arriving block (or scanned block during background sync). Instead of reading the last filter header from disk merely to access its hash for constructing the next filter, this work caches it, occupying just 32 more bytes in memory.
    
      Also, reduces `cs_main` lock contention during the index initial sync process. And, simplifies the indexes initialization and shutdown procedure.
    
      Testing Note:
      To compare the changes, added a pretty basic benchmark in the second commit. Alternatively, could also test the changes by timing the block filter sync from scratch on any network; start the node with `-blockfilterindex` and monitor the logs until the syncing process finish.
    
      Local Benchmark Results:
    
      *Master (c252a0fc0f4dc7d262b971a5e7ff01508159193b):
      |               ns/op |                op/s |    err% |     total | benchmark
      |--------------------:|--------------------:|--------:|----------:|:----------
      |      132,042,516.60 |                7.57 |    0.3% |      7.79 | `BlockFilterIndexSync`
    
      *PR (43a212cfdac6c64e82b601c664443d022f191520):
      |               ns/op |                op/s |    err% |     total | benchmark
      |--------------------:|--------------------:|--------:|----------:|:----------
      |      126,915,841.60 |                7.88 |    0.6% |      7.51 | `BlockFilterIndexSync`
    
    ACKs for top commit:
      Sjors:
        re-ACK 99afb9d15a08d2f46739f4d2b66c63dbabd7a44e
      achow101:
        ACK 99afb9d15a08d2f46739f4d2b66c63dbabd7a44e
      TheCharlatan:
        Re-ACK 99afb9d15a08d2f46739f4d2b66c63dbabd7a44e
      andrewtoth:
        ACK 99afb9d15a08d2f46739f4d2b66c63dbabd7a44e
    
    Tree-SHA512: 927daadd68f4ee1ca781a89519539b895f5185a76ebaf525fbc246ea8dcf40d44a82def00ac34b188640802844b312270067f1b33e65a2479e06be9169c616de
    0b96a1925e
  62. Merge bitcoin/bitcoin#27039: blockstorage: do not flush block to disk if it is already there
    dfcef536d0e6c40e98dce35ae7af6e3e4a2595cd blockstorage: do not flush block to disk if it is already there (Matthew Zipkin)
    
    Pull request description:
    
      Closes https://github.com/bitcoin/bitcoin/issues/2039
    
      When reindexing from flat-file block storage there is no need to write anything back to disk, since the block data is already there. This PR skips flushing to disk those blocks that already have a known position in the datastore. Skipping this means that users can write-protect the `blk` files on disk which may be useful for security or even safely sharing that data between multiple bitcoind instances.
    
      `FindBlockPos()` may also flush the undo data file, but again this is skipped if the corresponding block position is known, like during the initial stage of a reindex when block data is being indexed. Once the block index is complete the validation mechanism will call `ConnectBlock()` which will save undo data at that time.
    
      The call stack looks like this:
    
      ```
      init()
      ThreadImport() <-- process fReindex flag
      LoadExternalBlockFile()
      AcceptBlock()
      SaveBlockToDisk()
      FindBlockPos()
      FlushBlockFile() <-- unnecessary if block is already on disk
      ```
    
      A larger refactor of this part of the code was started by mzumsande here:  https://github.com/mzumsande/bitcoin/tree/202207_refactor_findblockpos including this fix, reviewers can let me know if the changes should be combined.
    
    ACKs for top commit:
      sipa:
        utACK dfcef536d0e6c40e98dce35ae7af6e3e4a2595cd
      mzumsande:
        re-ACK dfcef536d0e6c40e98dce35ae7af6e3e4a2595cd
      achow101:
        ACK dfcef536d0e6c40e98dce35ae7af6e3e4a2595cd
      furszy:
        Rebase diff ACK dfcef53.
    
    Tree-SHA512: 385c5ac1288b325135398d0ddd3ab788fa98cc0ca19bd2474c74039f2ce70d5088c1d1c9d4dd10aefcbd4c757767ec5805d07ba8cee9289a66f96e6f9eaa5279
    69ddee6f39
  63. Merge bitcoin/bitcoin#29370: assumeutxo: Get rid of faked nTx and nChainTx values
    9d9a7458a2570f7db56ab626b22010591089c312 assumeutxo: Remove BLOCK_ASSUMED_VALID flag (Ryan Ofsky)
    ef174e9ed21c08f38e5d4b537b6decfd1f646db9 test: assumeutxo snapshot block CheckBlockIndex crash test (Ryan Ofsky)
    0391458d767b842a7925785a7053400c0e1cb55a test: assumeutxo stale block CheckBlockIndex crash test (Ryan Ofsky)
    ef29c8b662309a438121a83f27fd7bdd1779700c assumeutxo: Get rid of faked nTx and nChainTx values (Ryan Ofsky)
    9b97d5bbf980d657a277c85d113c2ae3e870e0ec doc: Improve comments describing setBlockIndexCandidates checks (Ryan Ofsky)
    0fd915ee6bef63bb360ccc5c039a3c11676c38e3 validation: Check GuessVerificationProgress is not called with disconnected block (Ryan Ofsky)
    63e8fc912c21a2f5b47e8eab10fb13c604afed85 ci: add getchaintxstats ubsan suppressions (Ryan Ofsky)
    f252e687ec94b6ccafb5bc44b7df3daeb473fdea assumeutxo test: Add RPC test for fake nTx and nChainTx values (Ryan Ofsky)
    
    Pull request description:
    
      The `PopulateAndValidateSnapshot` function introduced in f6e2da5fb7c6406c37612c838c998078ea8d2252 from #19806 has been setting fake `nTx` and `nChainTx` values that can show up in RPC results (https://github.com/bitcoin/bitcoin/issues/29328) and make `CBlockIndex` state hard to reason about, because it is difficult to know whether the values are real or fake.
    
      Revert to previous behavior of setting `nTx` and `nChainTx` to 0 when the values are unknown, instead of faking them. Also drop no-longer needed `BLOCK_ASSUMED_VALID` flag.
    
      Dropping the faked values also fixes assert failures in the `CheckBlockIndex` `(pindex->nChainTx == pindex->nTx + prev_chain_tx)` check that could happen previously if forked or out-of-order blocks before the snapshot got submitted while the snapshot was being validated. The PR includes two commits adding tests for these failures and describing them in detail.
    
      Compatibility note: This change could cause new `-checkblockindex` failures if a snapshot was loaded by a previous version of Bitcoin Core and not fully validated, because fake `nTx` values will have been saved to the block index. It would be pretty easy to avoid these failures by adding some compatibility code to `LoadBlockIndex` and changing `nTx` values from 1 to 0 when they are fake (when `(pindex->nStatus & BLOCK_VALID_MASK) < BLOCK_VALID_TRANSACTIONS`), but a little simpler not to worry about being compatible in this case.
    
    ACKs for top commit:
      Sjors:
        re-ACK 9d9a7458a2570f7db56ab626b22010591089c312
      achow101:
        ACK 9d9a7458a2570f7db56ab626b22010591089c312
      mzumsande:
        Tested ACK 9d9a7458a2570f7db56ab626b22010591089c312
      maflcko:
        ACK 9d9a7458a2570f7db56ab626b22010591089c312 ๐ŸŽฏ
    
    Tree-SHA512: b1e1e2731ec36be30d5f5914042517219378fc31486674030c29d9c7488ed83fb60ba7095600f469dc32f0d8ba79c49ff7706303006507654e1762f26ee416e0
    b50554babd
  64. wallet: track mempool conflicts
    Behavior changes are:
    - if a tx has a mempool conflict, the wallet will not attempt to
      rebroadcast it
    - if a txo is spent by a mempool-conflicted tx, that txo is no
      longer considered spent
    54e07ee22f
  65. wallet, rpc: show mempool conflicts in `gettransaction` result 5952292133
  66. wallet, rpc: Add gethdkeys RPC
    gethdkeys retrieves all HD keys stored in the wallet's descriptors.
    5febe28c9e
  67. tests: Test for gethdkeys 3b09d0eb7f
  68. wallet: Refactor function for single DescSPKM setup
    We will need access to a function that sets up a singular
    DescriptorSPKM, so refactor this out of the multiple DescriptorSPKM
    setup function.
    54e74f46ea
  69. wallet, descspkm: Refactor wallet descriptor generation to standalone func 73926f2d31
  70. wallet: Add GetActiveHDPubKeys to retrieve xpubs from active descriptors 85b1fb19dd
  71. wallet: Be able to retrieve single key from descriptors
    Adds CWallet::GetKey which retrieves a single key from the descriptors
    stored in the wallet.
    8e1a475062
  72. wallet, rpc: Add createwalletdescriptor RPC 460ae1bf67
  73. wallet: Test upgrade of pre-taproot wallet to have tr() descriptors 2402b63062
  74. test: Add test for createwalletdescriptor 746b6d8839
  75. Merge bitcoin/bitcoin#29671: index: avoid "failed to commit" errors on initialization
    f65b0f6401091e4a4ca4c9f4db1cf388f0336bad index: Move last_locator_write_time and logging to end of threadsync loop (Fabian Jahr)
    
    Pull request description:
    
      In the index sync thread, when initializing an index for the first time, stop callng BaseIndex::Commit when m_best_block_index is null, to avoid a spurious "failed to commit" error from that function. This error started happening in commit https://github.com/bitcoin/bitcoin/commit/7878f97bf15b6e7c9b47d1c0d96419b97e1bdcbd from https://github.com/bitcoin/bitcoin/pull/25494 and was reported by pstratem in https://github.com/bitcoin/bitcoin/pull/26903 with an alternate fix.
    
    ACKs for top commit:
      achow101:
        ACK f65b0f6401091e4a4ca4c9f4db1cf388f0336bad
      ryanofsky:
        Code review ACK f65b0f6401091e4a4ca4c9f4db1cf388f0336bad. Just moved log "Syncing" log line since last commit to avoid having to call now() twice.
      furszy:
        ACK f65b0f6401091e4a4ca4c9f4db1cf388f0336bad
      TheCharlatan:
        ACK f65b0f6401091e4a4ca4c9f4db1cf388f0336bad
    
    Tree-SHA512: afa8f05786318d36346d167ff53ea0b3bc8abdb0ad04465d199dc3eb91e9f837369e24fcb7e24b5757b02d698ec504e61da6ac365eaf006c874fc07a424a7e20
    bf1b6383db
  76. cli: improve bitcoin-cli error when not connected
    Adds a string suggestion `bitcoin-cli -help` as an additional source of
    information.
    69d6fd676e
  77. Merge bitcoin/bitcoin#29651: guix: bump time-machine to dc4842797bfdc5f9f3f5f725bf189c2b68bd6b5a
    cf5faf73c99199e7476b8c86358095300544d1bd guix: bump time-machine to dc4842797bfdc5f9f3f5f725bf189c2b68bd6b5a (fanquake)
    
    Pull request description:
    
      This includes a commit to fix building LLVM 17 on riscv64, see https://git.savannah.gnu.org/cgit/guix.git/commit/?id=4e26331a5ee87928a16888c36d51e270f0f10f90.
    
      Followup to discussion in https://github.com/bitcoin/bitcoin/pull/28880#issuecomment-1843313196.
    
      If you don't have riscv64 hardware, this can be tested with the following:
      ```bash
      # observe failure when cross-compiling using our current time-machine
      guix time-machine --commit=d5ca4d4fd713a9f7e17e074a1e37dda99bbb09fc -- build --target=riscv64-linux-gnu  llvm
      ....
      riscv64-linux-gnu-ld: CMakeFiles/dsymutil.dir/dsymutil.cpp.o: undefined reference to symbol '__atomic_fetch_and_1@@LIBATOMIC_1.0'
      riscv64-linux-gnu-ld: /gnu/store/i4ga0pnr1b74bir2bjyp8mcrrbsvk7d3-gcc-cross-riscv64-linux-gnu-11.3.0-lib/riscv64-linux-gnu/lib/libatomic.so.1:
        error adding symbols: DSO missing from command line
      collect2: error: ld returned 1 exit status
    
      # build success when using the new time-machine
      guix time-machine --commit=dc4842797bfdc5f9f3f5f725bf189c2b68bd6b5a -- build --target=riscv64-linux-gnu  llvm
      ....
      grafting '/gnu/store/7y0j0y8jaz4mjx2nz0y42wdnxxjp6id6-llvm-17.0.6-opt-viewer' -> '/gnu/store/8xvahrrjscbprh6cjj0qp5bm9mm78wwa-llvm-17.0.6-opt-viewer'...
      grafting '/gnu/store/bjhw648bz7ijd2p9hgzzdbw1q8hpagk8-llvm-17.0.6' -> '/gnu/store/x50qi8i2ywgpx6azv4k55ms0w5xjxxg5-llvm-17.0.6'...
      successfully built /gnu/store/q9xvk8gzzvb4dxfzf6yi5164zd0d1vj2-llvm-17.0.6.drv
      ```
    
      Also includes at least:
      Linux Headers 6.1.67 -> 6.1.80
    
    ACKs for top commit:
      TheCharlatan:
        ACK cf5faf73c99199e7476b8c86358095300544d1bd
      hebasto:
        ACK cf5faf73c99199e7476b8c86358095300544d1bd, tested on x86_64 hardware as described in the PR description.
    
    Tree-SHA512: b49d4f90effeec666b12b5447a24c90315b82675cfc166bc1230ac173134bab6b277fc7e064bbb75e990275165b2b27d88e4ec1cdeea4750541ec6443cb50f41
    71b63195b3
  78. guix: use GCC 11 for macOS builds
    Note that this is just the native compiler, that is used to build the
    toolchain we use to build the actual binaries.
    
    Partially motivated by 29091.
    73d92309d7
  79. Change Luke Dashjr seed to dashjr-list-of-p2p-nodes.us
    To avoid issues with DNS blacklisting, I've setup a separate domain for my DNS seed.
    4f273ab436
  80. node: Make translations of fatal errors consistent
    The extra `bilingual_str` argument of the fatal error notifications and
    `node::AbortNode()` is often unused and when used usually contains the
    same string as the message argument. It also seems to be confusing,
    since it is not consistently used for errors requiring user action. For
    example some assumeutxo fatal errors require the user to do something,
    but are not translated.
    
    So simplify the fatal error and abort node interfaces by only passing a
    translated string. This slightly changes the fatal errors displayed to
    the user.
    
    Also de-duplicate the abort error log since it is repeated in noui.cpp.
    ddc7872c08
  81. node: Use log levels in noui_ThreadSafeMessageBox 824f47294a
  82. guix: build GCC with --enable-standard-branch-protection
    To enable Branch Target Identification Mechanism and Return
    Address Signing by default at configure time use the
    `--enable-standard-branch-protection` option.
    
    This is equivalent to having `-mbranch-protection=standard` during
    compilation. This can be explicitly disabled during compilation
    by passing the `-mbranch-protection=none` option which turns off
    all types of branch protections.
    
    See:
    https://gcc.gnu.org/install/specific.html#aarch64-x-x
    7850c5fe20
  83. lint: Fix COMMIT_RANGE issues fa1146d01b
  84. doc: Rename `contrib/devtools/bitcoin-tidy/README` to `README.md`
    This change fixes the file formatting on the GitHub website.
    669ea0aa4a
  85. Merge bitcoin/bitcoin#29703: doc: Rename `contrib/devtools/bitcoin-tidy/README` to `README.md`
    669ea0aa4adb2875a26cd35463d48b857b366a60 doc: Rename `contrib/devtools/bitcoin-tidy/README` to `README.md` (Hennadii Stepanov)
    
    Pull request description:
    
      This PR fixes the file formatting on the GitHub website.
    
      Before:
      ![image](https://github.com/bitcoin/bitcoin/assets/32963518/e81a61f0-f18c-4917-ae79-d35807e91fa9)
    
      After:
      ![image](https://github.com/bitcoin/bitcoin/assets/32963518/d2a96317-06d6-4185-b0e8-5e62c75f66b5)
    
    ACKs for top commit:
      maflcko:
        lgtm ACK 669ea0aa4adb2875a26cd35463d48b857b366a60
    
    Tree-SHA512: 3dfa07a482b5447b6f423946cc463648abbedf1012f2da246b8ce16e6ae3895cdbf956fb2db78735f3e0d88473b9b32f226f2557e0004a0adb69b00f2426a8ca
    2ffaa92702
  86. tidy: set minimum CMake to 3.22
    Matches https://github.com/hebasto/bitcoin/pull/123.
    This also also dev/ci only code.
    24410e560a
  87. tidy: remove terminfo TODO
    At the same time, also disable searching for CURL, LibEdit, LibXml2,
    ZLIB and zstd none of which we use.
    5b690aeb15
  88. tidy: set CMAKE_CXX_STANDARD to 20 c3a4ea1971
  89. tidy: remove C compiler check
    Also requires disabling FFI.
    11ee058ef5
  90. test: make p2p_handshake robust against timeoffset warnings
    The test requires that limited nodes are not peered with  when
    the node's system time exceeds ~ 24h of the node's chaintip
    timestamp, as per PeerManagerImpl::GetDesirableServiceFlags.
    
    By patching this test to modify the timestamp of the chaintip as
    opposed to mocking the node's system time, we make it resilient
    to future commits where the node raises a warning if it detects
    its system time is too much out of sync with its outbound peers.
    
    See https://github.com/bitcoin/bitcoin/pull/29623
    032a597482
  91. Merge bitcoin/bitcoin#29647: Avoid divide-by-zero in header sync logs when NodeClock is behind
    fa4d98b3c8e63f20c6f366fc9382039ba52614a4 Avoid divide-by-zero in header sync logs when NodeClock is behind (MarcoFalke)
    fa58550317c633c411009c1cc8fb692e3baf97e8 refactor: Modernize header sync logs (MarcoFalke)
    
    Pull request description:
    
      The log may be confusing, when the NodeClock is behind the current header tip.
    
      Fix it, by assuming the NodeClock is never behind the current header tip.
    
    ACKs for top commit:
      sipa:
        utACK fa4d98b3c8e63f20c6f366fc9382039ba52614a4
      sr-gi:
        tACK [fa4d98b](https://github.com/bitcoin/bitcoin/pull/29647/commits/fa4d98b3c8e63f20c6f366fc9382039ba52614a4)
      achow101:
        ACK fa4d98b3c8e63f20c6f366fc9382039ba52614a4
      tdb3:
        ACK fa4d98b3c8e63f20c6f366fc9382039ba52614a4
    
    Tree-SHA512: 3c5aee4030af387695918c5238012c972ebf850b52e956b5f74590cd7fd4eff0b3e593d411e3eb2a0bb12294af8dc6fbe320f90e4c261399b65a404ff3c3cbd9
    85c8a5ec48
  92. Merge bitcoin/bitcoin#29704: test: make p2p_handshake robust against timeoffset warnings
    032a59748295859845b2a9181ceb1c4ae70bae5c test: make p2p_handshake robust against timeoffset warnings (stickies-v)
    
    Pull request description:
    
      The new `p2p_handshake` test requires that limited nodes are not peered with when the node's system time exceeds ~ 24h of the node's chaintip timestamp, as per [`PeerManagerImpl::GetDesirableServiceFlags`](https://github.com/bitcoin/bitcoin/blob/2ffaa927023f5dc2a7b8d6cfeb4f4810e573b18c/src/net_processing.cpp#L1717).
    
      By patching this test to modify the timestamp of the chaintip as opposed to mocking the node's system time, we make it resilient to future commits where the node raises a warning if it detects its system time is too much out of sync with its outbound peers.
    
      Resolves a silent merge conflict in https://github.com/bitcoin/bitcoin/pull/29623, that is changing the warning behaviour when significant time differences with outbound peers are detected, [failing the test as it's currently in master](https://cirrus-ci.com/task/6553996884705280?logs=ci#L4666).
    
      Considerations/alternatives I've thought of:
      - could add `self.setup_clean_chain = True` to `self.set_test_params()`, to avoid creating a new tip with a (much) older date, but it doesn't seem to matter?
      - could avoid using `setmocktime` altogether and instead use [`create_block`](https://github.com/bitcoin/bitcoin/blob/2ffaa927023f5dc2a7b8d6cfeb4f4810e573b18c/test/functional/test_framework/blocktools.py#L68) instead, but that seems like it'll be a lot more verbose and I don't think it's worth it?
    
      Big thanks to theStack for his time in discussing this with me offline.
    
    ACKs for top commit:
      maflcko:
        lgtm ACK 032a59748295859845b2a9181ceb1c4ae70bae5c
      theStack:
        ACK 032a59748295859845b2a9181ceb1c4ae70bae5c
      brunoerg:
        crACK 032a59748295859845b2a9181ceb1c4ae70bae5c
      BrandonOdiwuor:
        Code Review ACK 032a59748295859845b2a9181ceb1c4ae70bae5c
    
    Tree-SHA512: 407564754a100bc9252f5737182de2e111993944ec9a0463a4a43195ce98cd1119de982c8fe5f7531ddb56603043812bf7bf2163a780d30b6df03a072c3308c3
    a175efe768
  93. Merge bitcoin/bitcoin#28998: rpc: "addpeeraddress tried" return error on failure
    99954f914f031c80aa53daa367fc049c4c55bdf3 test: fix test to ensure hidden RPC is present in detailed help (stratospher)
    0d01f6f0c6e53c9765f84e0616ab46b83923a6ad test: remove unused mocktime in test_addpeeraddress (0xb10c)
    6205466512d4b94d1e507a77ab2151425790d29f rpc: "addpeeraddress tried" return error on failure (0xb10c)
    
    Pull request description:
    
      When trying to add an address to the IP address manager tried table, it's first added to the new table and then moved to the tried table. Previously, adding a conflicting address to the address manager's tried table with test-only `addpeeraddress tried=true` RPC would return `{ "success": true }`. However, the address would not be added to the tried table, but would remain in the new table. This caused, e.g., issue #28964.
    
      This is fixed by new returning `{ "success":  false, "error": "..." }` for failed tried table additions. Since the address remaining in the new table can't be removed (the address manager interface does not support removing addresses at the moment and adding this seems to be a bigger effort), an error message is returned. This indicates to a user why the RPC failed and allows accounting for the extra address in the new table. This is done in the functional test for the `getrawaddrman` RPC.
    
      Fixes #28964
    
    ACKs for top commit:
      achow101:
        ACK 99954f914f031c80aa53daa367fc049c4c55bdf3
      stratospher:
        reACK 99954f9. ๐Ÿš€
      brunoerg:
        utACK 99954f914f031c80aa53daa367fc049c4c55bdf3
    
    Tree-SHA512: 2f1299410c0582ebc2071271ba789a8abed905f9a510821f77afbcf2a555ec31397578ea55cbcd162fb828be27afedd3246c7b13ad8883f2f745bb8e04364a76
    2795e89cc5
  94. Merge bitcoin/bitcoin#29672: validation: Make translations of fatal errors consistent
    824f47294a309ba8e58ba8d1da0af15d8d828f43 node: Use log levels in noui_ThreadSafeMessageBox (TheCharlatan)
    ddc7872c08b7ddf9b1e83abdb97c21303f4a9172 node: Make translations of fatal errors consistent (TheCharlatan)
    
    Pull request description:
    
      The extra `bilingual_str` argument of the fatal error notifications and `node::AbortNode()` is often unused and when used usually contains the same string as the message argument. It also seems to be confusing, since it is not consistently used for errors requiring user action. For example some assumeutxo fatal errors require the user to do something, but are not translated.
    
      So simplify the fatal error and abort node interfaces by only passing a translated string. This slightly changes the fatal errors displayed to the user.
    
    ACKs for top commit:
      stickies-v:
        re-ACK 824f47294a309ba8e58ba8d1da0af15d8d828f43
      maflcko:
        ACK 824f47294a309ba8e58ba8d1da0af15d8d828f43 ๐Ÿ”Ž
      achow101:
        ACK 824f47294a309ba8e58ba8d1da0af15d8d828f43
      hebasto:
        re-ACK 824f47294a309ba8e58ba8d1da0af15d8d828f43.
    
    Tree-SHA512: 2868ee7b045fe7f3ac582ce5039141b398480b7627734976201dafaaef7544b8461635a7292fee4a7f32ff1bfc26f9bd4d0c292dca424ba42fb7fc4483d7ce8d
    c1223188e0
  95. test: check that addrman seeding is successful
    The addpeeraddress calls can fail due to collisions. As we are using a
    deteministic addrman, they won't fail with the current bucket/position
    calculation. However, if the calculation is changed, they might collide
    and fail silently causing tests using `seed_addrman()` to fail.
    
    Assert that the addpeeraddress calls are successful.
    89b84ea91a
  96. addrman: drop /*deterministic=*/ comment
    Just having deterministic is enough. See https://github.com/bitcoin/bitcoin/pull/29007#discussion_r1488241966
    3047c3e3a9
  97. init: clarify -test error
    See https://github.com/bitcoin/bitcoin/pull/29007#discussion_r1469388717
    9a44a20fb7
  98. correct '-dbcache' to '-prune' 416b9d9427
  99. Merge bitcoin/bitcoin#29636: test: #29007 follow ups
    9a44a20fb790f3be5d5d5d8f5d0f48aac633b2a4 init: clarify -test error (0xb10c)
    3047c3e3a99112c38f118034daa672db70fa4a60 addrman: drop /*deterministic=*/ comment (0xb10c)
    89b84ea91ae40876a52879c509c63d0bacbfaade test: check that addrman seeding is successful (0xb10c)
    
    Pull request description:
    
      A few, small follow-ups to #29007. See commit messages for details.
    
    ACKs for top commit:
      maflcko:
        lgtm ACK 9a44a20fb790f3be5d5d5d8f5d0f48aac633b2a4
      stratospher:
        tested ACK 9a44a20.
      mzumsande:
        Code Review ACK 9a44a20fb790f3be5d5d5d8f5d0f48aac633b2a4
    
    Tree-SHA512: 987245e035da08fa7fe541a1dc3b7c2d90f703a6f9813875048d286335c63ffa5201db702a3f368087c00fa02c3fdafb06cf54dc7a92922749a94588b1500e98
    f22bca6473
  100. Merge bitcoin/bitcoin#29488: depends: always configure with `--with-pic`
    e037c4fe0914d8fa9149ce7532c0d70f738e79e9 depends: always configure with --with-pic (fanquake)
    
    Pull request description:
    
      We currently do this sporadically. Not only amongst packages, but across OS's, i.e sometimes it's done for BSDs/Android, and sometimes not.
    
      Configure with `--with-pic` globally instead. I think this generally makes more sense, and should not have any downsides.
    
      See related discussion in https://github.com/bitcoin/bitcoin/pull/28846#discussion_r1399123100.
    
    ACKs for top commit:
      hebasto:
        ACK e037c4fe0914d8fa9149ce7532c0d70f738e79e9.
    
    Tree-SHA512: efc743ff92f9f99f3ac16514e98363ad395c6f956cd4be7e785b5c573685baf7fcd68c51d6a705ee8761fc676eb045b7e61676595be0eb0f70f34e99174cddc0
    556074143f
  101. depends: always set CMAKE_INSTALL_LIBDIR=lib/
    Rather than setting this per package, set it globally, as this is always
    what we want. Without doing this, later commit will have to add the same
    doc + change to more packages.
    d04623678c
  102. depends: always set CMAKE_POSITION_INDEPENDENT_CODE=ON
    Rather than potentially having to set this per-package, set it globally,
    as this should always be what we want. Without doing this, changes in
    later commits will have to add this per-package.
    
    Similar to https://github.com/bitcoin/bitcoin/pull/29488, which is the
    Autotools equivalent.
    76045bb9d6
  103. Merge bitcoin/bitcoin#29696: tidy: remove todo, set minimum CMake to 3.22
    11ee058ef5794de5f1b8e89d62bfa69c64693fff tidy: remove C compiler check (fanquake)
    c3a4ea19715de292517b932d0a3b24ace72e9919 tidy: set CMAKE_CXX_STANDARD to 20 (fanquake)
    5b690aeb1583e207b083e83b8d882f7d1c2d2683 tidy: remove terminfo TODO (fanquake)
    24410e560ac9add5dbae424964bc96554e6fd1a9 tidy: set minimum CMake to 3.22 (fanquake)
    
    Pull request description:
    
      See https://github.com/hebasto/bitcoin/pull/123 for the minimum version bump.
    
    ACKs for top commit:
      hebasto:
        re-ACK 11ee058ef5794de5f1b8e89d62bfa69c64693fff.
    
    Tree-SHA512: 94a508ea24bf17919961bbdbc2e9d17658858e179c3b2017d5932557af32530d9d6aab197453aa5444f5478c417129c5a8e39522ff82bafac0d5a6966c7246d3
    53f4607cc8
  104. Merge bitcoin/bitcoin#29660: lint: Fix COMMIT_RANGE issues
    fa1146d01b148dd60fcada36a3b37ed37532ce2b lint: Fix COMMIT_RANGE issues (MarcoFalke)
    
    Pull request description:
    
      `COMMIT_RANGE` has problems on forks or local branches:
    
      * When `LOCAL_BRANCH` is set, it assumes the presence of a `master` branch, and that the `master` branch is up-to-date. Both of which may be false. (See also discussion in https://github.com/bitcoin/bitcoin/pull/29274#discussion_r1504226422)
      * When `COMMIT_RANGE` isn't set in `lint-git-commit-check.py`, and `--prev-commits` isn't set either, it has the same (broken) assumptions.
    
      Fix all issues by simply assuming a merge commit exists. This allows to drop `LOCAL_BRANCH`. It also allows to drop `SKIP_EMPTY_NOT_A_PR`, because scripts will already skip an empty range. Finally, it allows to drop `--prev-commits n`, because one can simply say `COMMIT_RANGE='HEAD~n..HEAD'` to achieve the same.
    
    ACKs for top commit:
      Sjors:
        tACK fa1146d01b148dd60fcada36a3b37ed37532ce2b
    
    Tree-SHA512: f1477a38267fd4fdb8d396211a5d6bed5f418798c7edaba43487957aaf726cd45244ccf15187b3dd896d398fa1df3fe0a37323e49cf44d60a2018786ed41e5ba
    2e1c84b333
  105. scripted-diff: Rename max_sane_feerate to client_maxfeerate
    -BEGIN VERIFY SCRIPT-
    git grep -l 'max_sane_feerate' | xargs sed -i 's/max_sane_feerate/client_maxfeerate/g'
    -END VERIFY SCRIPT-
    f10fd07320
  106. use const ref for client_maxfeerate 7b29119d79
  107. Merge bitcoin/bitcoin#29718: Correct '-dbcache' to '-prune'
    416b9d9427c017fe7eb2975ca76f6a89ba24ab58 correct '-dbcache' to '-prune' (Ben Westgate)
    
    Pull request description:
    
      This looks like a typo, '-prune' is doubled not the '-dbcache' by my understanding.
    
    ACKs for top commit:
      Sjors:
        ACK 416b9d9427c017fe7eb2975ca76f6a89ba24ab58
      fjahr:
        ACK 416b9d9427c017fe7eb2975ca76f6a89ba24ab58
    
    Tree-SHA512: d954a8976f6e43e0af9bc2ba89fec1a1ccc90483cc005af3d2810379bd6bea7dbd87766af71c2a45b3d751a3f682f0f67a4525ec350bf6163bc4bb88fab6e4cb
    220487bafd
  108. Merge bitcoin/bitcoin#29706: depends: set two CMake options globally
    76045bb9d6808931cd0f2933203b5b611e032ec8 depends: always set CMAKE_POSITION_INDEPENDENT_CODE=ON (fanquake)
    d04623678c70ff58a20fb5c35d33cb8f483f1efb depends: always set CMAKE_INSTALL_LIBDIR=lib/ (fanquake)
    
    Pull request description:
    
      Set `CMAKE_INSTALL_LIBDIR=lib/` and `CMAKE_POSITION_INDEPENDENT_CODE=ON` globally in depends, rather than per-package. `CMAKE_INSTALL_LIBDIR=lib/` is needed to override the annoying [`GNUInstallDirs`](https://cmake.org/cmake/help/latest/module/GNUInstallDirs.html) `lib` vs `lib64` behaviour, and we always want PIC code. The PIC commit is the counterpart to the same Autotools change in #29488. I'm PRing these commits as I have a CMake branch building on top, and want to avoid adding the same workarounds to every package we are going to touch, but these can go in separately as the build should be tested for existing packages (i.e multiprocess).
    
    ACKs for top commit:
      hebasto:
        re-ACK 76045bb9d6808931cd0f2933203b5b611e032ec8.
      theuni:
        utACK 76045bb9d6808931cd0f2933203b5b611e032ec8. Both changes make sense to me, and both can be overridden if needed, though I can't imagine we'd need to.
    
    Tree-SHA512: 655a0b6b7ee5a5820f52e8e919ef03fc216d29f13f3904f72b64ce57436510e073c903039488d5740535c56e1f6221267229238c5231de5f8467d238fd562578
    2102c978b5
  109. Merge bitcoin/bitcoin#28928: test: add coverage for bech32m in `wallet_keypool_topup`
    a8bfc3dea1d986b458202bf5e49cf1944392d676 test: add coverage for bech32m in `wallet_keypool_topup` (brunoerg)
    
    Pull request description:
    
      0dcac51049cdd924a50d62629757effc8d542046 added coverage for all keypool addresses types in `wallet_keypool_topup` (4y ago). Now we have bech23m, so this PR adds it.
    
    ACKs for top commit:
      achow101:
        ACK a8bfc3dea1d986b458202bf5e49cf1944392d676
      marcofleon:
        ACK a8bfc3dea1d986b458202bf5e49cf1944392d676. Definitely a more straightfoward addition to the test. Reviewed the code, built the PR branch and ran all functional tests without issues.
      furszy:
        utACK a8bfc3dea
    
    Tree-SHA512: aa830b723a7a54b23744f9fb3cf5214452c4ffc8e3bbe0e8bd980bdf902e61c3dd2fd57361b82c5c0c5224aa0774158daf34b6b2188edda0a971f82111976051
    b44f9e4645
  110. Merge bitcoin/bitcoin#29242: Mempool util: Add RBF diagram checks for single chunks against clusters of size 2
    72959867784098137a50c34f86deca8235eef4f8 Unit tests for CalculateFeerateDiagramsForRBF (Greg Sanders)
    b767e6bd47cb0fb8f7aea3fb10c597e59a35bf74 test: unit test for ImprovesFeerateDiagram (Greg Sanders)
    7e89b659e1ddd0c04fa2bddba9706b5d1a1daec3 Add fuzz test for FeeFrac (Greg Sanders)
    4d6528a3d6bf3821c216c68f99170e2faab5d63c fuzz: fuzz diagram creation and comparison (Greg Sanders)
    e9c5aeb11d641b8cae373452339760809625021d test: Add tests for CompareFeerateDiagram and CheckConflictTopology (Greg Sanders)
    588a98dccc5dbb6e331f28d83a4a10a13d70eb31 fuzz: Add fuzz target for ImprovesFeerateDiagram (Greg Sanders)
    2079b80854e2595f6f696e7c13a56c7f2a7da9f4 Implement ImprovesFeerateDiagram (Greg Sanders)
    66d966dcfaad3638f84654e710f403cb0a0a2ac7 Add FeeFrac unit tests (Greg Sanders)
    ce8e22542ed0b4fa5794d3203207146418d59473 Add FeeFrac utils (Greg Sanders)
    
    Pull request description:
    
      This is a smaller piece of https://github.com/bitcoin/bitcoin/pull/28984 broken off for easier review.
    
      Up to date explanation of diagram checks are here: https://delvingbitcoin.org/t/mempool-incentive-compatibility/553
    
      This infrastructure has two near term applications prior to cluster mempool:
      1) Limited Package RBF(https://github.com/bitcoin/bitcoin/pull/28984): We want to allow package RBF only when we know it improves the mempool. This narrowly scoped functionality allows use with v3-like topologies, and will be expanded at some point post-cluster mempool when diagram checks can be done efficiently against bounded cluster sizes.
      2) Replacement for single tx RBF(in a cluster size of up to two) against conflicts of up to cluster size two. `ImprovesFeerateDiagram` interface will have to change for this use-case, which is a future direction to solve certain pins and improve mempool incentive compatibility: https://delvingbitcoin.org/t/ephemeral-anchors-and-mev/383#diagram-checks-fix-this-3
    
      And longer-term, this would be the proposed way we would compute incentive compatibility for all conflicts, post-cluster mempool.
    
    ACKs for top commit:
      sipa:
        utACK 72959867784098137a50c34f86deca8235eef4f8
      glozow:
        code review ACK 72959867784098137a50c34f86deca8235eef4f8
      murchandamus:
        utACK 72959867784098137a50c34f86deca8235eef4f8
      ismaelsadeeq:
        Re-ACK https://github.com/bitcoin/bitcoin/commit/72959867784098137a50c34f86deca8235eef4f8
      willcl-ark:
        crACK 72959867784098137a50c34f86deca8235eef4f8
      sdaftuar:
        ACK 72959867784098137a50c34f86deca8235eef4f8
    
    Tree-SHA512: 79593e5a087801c06f06cc8b73aa3e7b96ab938d3b90f5d229c4e4bfca887a77b447605c49aa5eb7ddcead85706c534ac5eb6146ae2396af678f4beaaa5bea8e
    c2dbbc35b9
  111. Merge bitcoin/bitcoin#29722: 28950 followups
    7b29119d79efbc8c4148f350cc86531fde8b7251 use const ref for client_maxfeerate (Greg Sanders)
    f10fd07320da302e8d038213c85e2b16e77d5dc2 scripted-diff: Rename max_sane_feerate to client_maxfeerate (Greg Sanders)
    
    Pull request description:
    
      Follow-ups to https://github.com/bitcoin/bitcoin/pull/28950
    
    ACKs for top commit:
      glozow:
        utACK 7b29119d79efbc8c4148f350cc86531fde8b7251
      stickies-v:
        ACK 7b29119d79efbc8c4148f350cc86531fde8b7251
    
    Tree-SHA512: b9e13509c6e9d7c08aa9d4e759f9707004c1c7b8f3e521fe2ec0037160b87c7fb02528966b9f26eaca6291621df9300e84b5aec66dbc2e97d13bf2f3cd7f979c
    19b968f743
  112. guix: make cmake-minimal a global requirement
    Needed for switching to building miniupnpc with CMake.
    884330c0a5
  113. depends: switch to building libqrencode with CMake 007ea322a6
  114. test: Refactor subtree exclusion in lint tests 80fa7da21c
  115. doc: fix comment about non-existing CompareFeeFrac bb42402945
  116. ImprovesFeerateDiagram: Spelling fix and removal of unused diagram vectors b62e2c0fa5
  117. unit test: have CompareFeerateDiagram tested with diagrams both ways c0c37f07eb
  118. unit test: check tx4 conflict error message 69bd18ca80
  119. build, macos: Drop unused `osx_volname` target eff19fa1c8
  120. unit test: add CheckConflictTopology case for not the only child a80d80936a
  121. unit test: add coverage showing priority affects diagram check results 216d5ff162
  122. fuzz: add PrioritiseTransaction coverage in diagram checks defe023f6e
  123. unit test: make calc_feerate_diagram_rbf less brittle d2bf923eb1
  124. unit test: improve ImprovesFeerateDiagram coverage with one less vb case c377ae9ba0
  125. fuzz: finer grained ImprovesFeerateDiagram check on error result 2a3ada8b21
  126. fuzz: Add more invariant checks for package_rbf b684d82d7e
  127. CalculateFeerateDiagramsForRBF: remove size tie-breaking from chunking conflicts d9391ec095
  128. s/effected/affected/ 890cb015f3
  129. unit test: clarify unstated assumption for calc_feerate_diagram_rbf chunking a0376e1061
  130. remove erroneous CompareFeerateDiagram comment about slope cebcced65e
  131. CompareFeerateDiagram: short-circuit comparison when detected as incomparable a9d42b9aa5
  132. Merge bitcoin/bitcoin#29695: guix: build GCC with --enable-standard-branch-protection
    7850c5fe20a034438e00f6c12ce51efc6af3a1aa guix: build GCC with --enable-standard-branch-protection (fanquake)
    
    Pull request description:
    
      This is one change extracted from #24123 (which now produces fully BTI & PAC enabled bins), which will mean that everything in depends, for Guix builds, is compiled using `-mbranch-protection=standard`.
    
      Turning this on by default, is similar to what we already do with `--enable-default-ssp`, `--enable-default-pie` etc.
    
      See: https://gcc.gnu.org/install/specific.html#aarch64-x-x
    
      > To enable Branch Target Identification Mechanism and Return Address Signing by default at configure time use the `--enable-standard-branch-protection` option.
    
      > This is equivalent to having `-mbranch-protection=standard` during compilation. This can be explicitly disabled during compilation by passing the `-mbranch-protection=none` option which turns off all types of branch protections.
    
    ACKs for top commit:
      TheCharlatan:
        ACK 7850c5fe20a034438e00f6c12ce51efc6af3a1aa
    
    Tree-SHA512: 18f898da27021bab502e708ea5fa9b325352f8f6e23d9488a2a0feda87e0af2ac0e4f87b3af9ad6a9a37bbfc99ab0285de4f0bdc174dcd38163d92c122e958e2
    d04324a705
  133. CalculateFeerateDiagramsForRBF: update misleading description of old diagram contents ee1b9b231a
  134. doc: Fix typos
    Fix three typos.
    b5ed13a240
  135. doc: fix some typos
    Signed-off-by: crazeteam <lilujing@outlook.com>
    52fa0d285f
  136. ci: use codespell 2.2.6 601edd8ee8
  137. ci: Print tsan errors to stderr fa22a438fa
  138. depends: fix mingw-w64 Qt DEBUG=1 build
    The issue is that compilation is done with `x86_64-w64-mingw32-g++-posix`,
    but then linking is done with `x86_64-w64-mingw32-g++`.
    
    I'm guessing this has been broken since #24131
    (01d1845a80ae48d741deea695ddce95d940ab0d8), but have not checked.
    
    Fixes #29734.
    Unblocks #29527 (now DEBUG=1 builds can be tested).
    b7e7e727ab
  139. Merge bitcoin/bitcoin#29740: ci: Print tsan errors to stderr
    fa22a438fa8f1c9cd4b4c44ff45cefd178bf5999 ci: Print tsan errors to stderr (MarcoFalke)
    
    Pull request description:
    
      This fixes a bug introduced in https://github.com/bitcoin/bitcoin/pull/27667
    
      All sanitizers print their errors to stderr, except for tsan, which prints to a file and expects the file to be read.
    
      Fix this by not using a log file in any sanitizer.
    
    ACKs for top commit:
      dergoegge:
        utACK fa22a438fa8f1c9cd4b4c44ff45cefd178bf5999
    
    Tree-SHA512: 15dca57932a21bda145335fab6367bbf2ae67b25e0b7b61044d2c06ab7a8db3a452f057f6656b81a031726375b7bb238f5ced18ab8894f005e7ab254c7d1ef06
    b8b0d64765
  140. Merge bitcoin/bitcoin#29479: test: Refactor subtree exclusion in lint tests
    80fa7da21c470302165c47cc4a6a62fb44f997ef test: Refactor subtree exclusion in lint tests (Brandon Odiwuor)
    
    Pull request description:
    
      Fixes https://github.com/bitcoin/bitcoin/issues/17413
    
      Refactor subtree exclusion in lint tests to one place
    
      Second attempt after PR: https://github.com/bitcoin/bitcoin/pull/24435
    
    ACKs for top commit:
      fjahr:
        re-ACK 80fa7da21c470302165c47cc4a6a62fb44f997ef
      maflcko:
        lgtm ACK 80fa7da21c470302165c47cc4a6a62fb44f997ef
      davidgumberg:
        ACK https://github.com/bitcoin/bitcoin/commit/80fa7da21c470302165c47cc4a6a62fb44f997ef
    
    Tree-SHA512: deff7457dd19ca5ea440d3d53feae047e8863b9ddeb6494a3c94605a5d16edc91db8f99a435b4fab2ef89aedee42439562be006da647fb85bbf3def903a3ce50
    28f2ca675f
  141. mempool: Log added for dumping mempool transactions to disk b9f04be870
  142. log: renamed disk to file so wording was more accurate 4d5b55735b
  143. Add `cpp-subprocess` header-only library
    Upstream repo: https://github.com/arun11299/cpp-subprocess
    Commit: 4025693decacaceb9420efedbf4967a04cb028e7
    
    The "Convenience Functions" section is unused in our codebase, so it has
    been removed.
    cc8b9875b1
  144. external_signer: replace boost::process with cpp-subprocess
    This primarily affects the `RunCommandParseJSON` utility function.
    70434b1c44
  145. build: remove boost::process dependency for building external signer support d5a715536e
  146. test: makes timeout a forced named argument in tests methods that use it
    This makes calls to such methods more explicit and less error prone
    61560d5e93
  147. Merge bitcoin/bitcoin#29747: depends: fix mingw-w64 Qt DEBUG=1 build
    b7e7e727abd86104ee58beb648a94e2f453d1f6d depends: fix mingw-w64 Qt DEBUG=1 build (fanquake)
    
    Pull request description:
    
      The issue is that compilation is done with `x86_64-w64-mingw32-g++-posix`, but then linking is done with `x86_64-w64-mingw32-g++`.
    
      I'm guessing this has been broken since #24131 (01d1845a80ae48d741deea695ddce95d940ab0d8), but have not checked.
    
      Fixes #29734.
      Unblocks #29527 (`DEBUG=1` builds can be tested).
    
    ACKs for top commit:
      hebasto:
        ACK b7e7e727abd86104ee58beb648a94e2f453d1f6d, tested on Ubuntu 22.04 with the [installed](https://github.com/bitcoin/bitcoin/issues/29734#issuecomment-2022852344) `g++-mingw-w64-x86-64` package.
      TheCharlatan:
        ACK b7e7e727abd86104ee58beb648a94e2f453d1f6d
    
    Tree-SHA512: 9e24e84046c0489c20971bb9c68d1a643c233837193c184f61bff79dfc8d7397a5c5526ac1a205ad423920f2589559cd01cb104ceb7f89515bb6421510d82ca9
    7a12cbed99
  148. Merge bitcoin/bitcoin#27307: wallet: track mempool conflicts with wallet transactions
    5952292133d6cc889f51ae771f2e0557311e1efe wallet, rpc: show mempool conflicts in `gettransaction` result (ishaanam)
    54e07ee22ff16fc68583ade0d2b8ffffc81d444a wallet: track mempool conflicts (ishaanam)
    d64922b5903e5ffc8d2ce0e6761f99f173b60800 wallet refactor: use CWalletTx member functions to determine tx state (ishaanam)
    ffe5ff1fb622a8da11b66289e1b778e45e449811 scripted-diff: wallet: s/TxStateConflicted/TxStateBlockConflicted (ishaanam)
    180973a94180f9849bf7cb0dab7c9177a942efb8 test: Add tests for wallet mempool conflicts (ishaanam)
    
    Pull request description:
    
      The `mempool_conflicts` variable is added to `CWalletTx`, it is a set of txids of txs in the mempool conflicting with the wallet tx or a wallet tx's parent. This PR only changes how mempool-conflicted txs are dealt with in memory.
    
      `IsSpent` now returns false for an output being spent by a mempool conflicted transaction where it previously returned true.
    
      A txid is added to `mempool_conflicts` during  `transactionAddedToMempool`. A txid is removed from `mempool_conflicts` during  `transactionRemovedFromMempool`.
    
      This PR also adds a `mempoolconflicts` field to the `gettransaction` wallet RPC result.
    
      Builds on #27145
      Second attempt at #18600
    
    ACKs for top commit:
      achow101:
        ACK 5952292133d6cc889f51ae771f2e0557311e1efe
      ryanofsky:
        Code review ACK 5952292133d6cc889f51ae771f2e0557311e1efe. Just small suggested changes since last review
      furszy:
        ACK 59522921
    
    Tree-SHA512: 615779606723dbb6c2e302681d8e58ae2052ffee52d721ee0389746ddbbcf4b4c4afacf01ddf42b6405bc6f883520524186a955bf6b628fe9b3ae54cffc56a29
    c8e3978114
  149. depends: qt 5.15.13
    I need to try and patch around Qts buildsystem to keep #21778 moving
    along (the issue being that even when you tell Qt to build using
    Clang on Linux, it still calls out to GCC, breaking our ability to have
    a macOS release build env that doesn't have a GCC toolchain installed,
    and thus no ld binary).
    
    Before trying to patch Qt any further, update to the latest LTS
    release, and update the current patch set.
    430f319f73
  150. test: fix StopIteration exception in p2p_node_network_limited.py
    The `next()` call throws an exception if the default parameter is omitted and the iterator is exhausted.
    Fix it by providing a default value.
    
    The failure can be tested by commenting out lines 90 and 91 in the test (the `self.connect_nodes(2, 0)``).
    Since there is no connection, the node in question retrieves a single element in the 'getchaintips()' call.
    This scenario without the fix, aborts the test right away, throwing an StopIteration exception, and with
    the fix, the test properly waits until the timeout (wait_until() call).
    2eb5175de8
  151. test: check disconnection when sending sendaddrv2 after verack b4c9ace6ff
  152. Merge bitcoin/bitcoin#29402: mempool: Log added for dumping mempool transactions to disk
    4d5b55735bcf82847d748d24da5dbdbd1de8ef41 log: renamed disk to file so wording was more accurate (kevkevin)
    b9f04be870c948f071216fba8402a2c5395a336b mempool: Log added for dumping mempool transactions to disk (kevkevin)
    
    Pull request description:
    
      Sometimes when shutting off bitcoind it can take a while to dump the mempool transaction onto the disk so
      this change adds additional logging to the `DumpMempool` method in `kernel/mempool_persist.cpp`
    
      Motivated by https://github.com/bitcoin/bitcoin/pull/29227 this change
       - adds a single new line for the amount of transactions being dumped and the amount of memory being dumped to file
    
      This is in response to https://github.com/bitcoin/bitcoin/pull/29227#issuecomment-1893375082
    
      The logs will now look like this
      ```
      2024-02-09T23:41:52Z DumpAnchors: Flush 2 outbound block-relay-only peer addresses to anchors.dat completed (0.02s)
      2024-02-09T23:41:52Z scheduler thread exit
      2024-02-09T23:41:52Z Writing 29 mempool transactions to file...
      2024-02-09T23:41:52Z Writing 0 unbroadcast transactions to file.
      2024-02-09T23:41:52Z Dumped mempool: 0.000s to copy, 0.022s to dump, 0.015 MB dumped to file
      2024-02-09T23:41:52Z Flushed fee estimates to fee_estimates.dat.
      2024-02-09T23:41:53Z Shutdown: done
      ```
    
    ACKs for top commit:
      maflcko:
        cr-ACK 4d5b55735bcf82847d748d24da5dbdbd1de8ef41
      glozow:
        reACK 4d5b557
    
    Tree-SHA512: 049191e140d00c1ea57debe0138f1c9eb0f9bb0ef8138e2568e6d89e64f45a5d5853ce3b9cc0b28566aab97555b47ddfb0f9199fc8cea6b81e53f50592d5ae6a
    d1e9a02126
  153. doc: Override `-g` properly to skip debugging information f8f5cece4d
  154. refactor: Use typesafe Wtxid in compact block encoding message, instead of ambiguous uint256.
    Wtxid/Txid types introduced in #28107
    c3c18433ae
  155. doc: Suggest installing dev packages for debian/ubuntu qt5 build
    Pretty much all library packages were renamed in the 64-bit time_t
    migration to add `t64` (even on 64-bit platforms).
    
    Instead of complicating the doc with conditional package names, suggest
    installing the `-dev` packages which still have the same name, and
    besides that, are the right way to go about it as they contain the
    "user facing" C++ headers needed to build against Qt5.
    
    For Fedora, devel packages are already suggested.
    
    This affects Ubuntu 24.04 and Debian Testing.
    a3c6a13cb2
  156. ci: Pull in qtbase5-dev instead of seperate low-level libraries
    Fix CI build for t64 migration.
    6c2990416e
  157. Merge bitcoin/bitcoin#29130: wallet: Add `createwalletdescriptor` and `gethdkeys` RPCs for adding new automatically generated descriptors
    746b6d88395607abbd3c13bbdcdd4ca83e9bc9e4 test: Add test for createwalletdescriptor (Ava Chow)
    2402b6306215a9ee8d5f4068ea81f4e7f324adeb wallet: Test upgrade of pre-taproot wallet to have tr() descriptors (Ava Chow)
    460ae1bf67c0051033c1802d44787d173abb9248 wallet, rpc: Add createwalletdescriptor RPC (Ava Chow)
    8e1a475062e62321e58a0624385cc3fa0885aa12 wallet: Be able to retrieve single key from descriptors (Ava Chow)
    85b1fb19dd3a3f3c68da1c5e60a6eb911e1119a6 wallet: Add GetActiveHDPubKeys to retrieve xpubs from active descriptors (Ava Chow)
    73926f2d31b61ff78d5f0c8f9b5e3130fb1f9620 wallet, descspkm: Refactor wallet descriptor generation to standalone func (Andrew Chow)
    54e74f46ea10e479be682750c1279165f29bb2f4 wallet: Refactor function for single DescSPKM setup (Andrew Chow)
    3b09d0eb7f2c1d6ebdab73d18db28e5bf7d74f18 tests: Test for gethdkeys (Ava Chow)
    5febe28c9e131fb93fac9c35f80c42759654f150 wallet, rpc: Add gethdkeys RPC (Ava Chow)
    66632e5c24c1b59afef1e89b562fbd0117ab6ef5 wallet: Add IsActiveScriptPubKeyMan (Ava Chow)
    fa6a259985b61235ebc21eae2a76014cc9437d5f desc spkm: Add functions to retrieve specific private keys (Ava Chow)
    fe67841464cc0f970a1c233caba92cb78e9c78dc descriptor: Be able to get the pubkeys involved in a descriptor (Ava Chow)
    ef6745879d87cdb6f1061337867a689167e965a1 key: Add constructor for CExtKey that takes CExtPubKey and CKey (Ava Chow)
    
    Pull request description:
    
      This PR adds a `createwalletdescriptor` RPC which allows users to add new automatically generated descriptors to their wallet, e.g. to upgrade a 0.21.x wallet to contain a taproot descriptor. This RPC takes 3 arguments: the output type to create a descriptor for, whether the descriptor will be internal or external, and the HD key to use if the user wishes to use a specific key. The HD key is an optional parameter. If it is not specified, the wallet will use the key shared by the active descriptors, if they are all single key. For most users in the expected upgrade scenario, this should be sufficient. In more advanced cases, the user must specify the HD key to use.
    
      Currently, specified HD keys must already exist in the wallet. To make it easier for the user to know, `gethdkeys` is also added to list out the HD keys in use by all of the descriptors in the wallet. This will include all HD keys, whether we have the private key, for it, which descriptors use it and their activeness, and optionally the extended private key. In this way, users with more complex wallets will be still be able to get HD keys from their wallet for use in other scenarios, and if they want to use `createwalletdescriptor`, they can easily get the keys that they can specify to it.
    
      See also https://github.com/bitcoin/bitcoin/pull/26728#issuecomment-1866961865
    
    ACKs for top commit:
      Sjors:
        re-utACK 746b6d88395607abbd3c13bbdcdd4ca83e9bc9e4
      furszy:
        ACK 746b6d8
      ryanofsky:
        Code review ACK 746b6d88395607abbd3c13bbdcdd4ca83e9bc9e4, and this looks ready to merge. There were various suggested changes since last review where main change seems to be switching `gethdkeys` output to use normalized descriptors (removing hardened path components).
    
    Tree-SHA512: f2849101e6fbf1f59cb031eaaaee97af5b1ae92aaab54c5716940d210f08ab4fc952df2725b636596cd5747b8f5beb1a7a533425bc10d09da02659473516fbda
    4373414d26
  158. ci: Bump clang+llvm in i686_multiprocess task fad23a0646
  159. ci: Use clang-18 in asan/fuzz/tsan task fa75220ac5
  160. Merge bitcoin/bitcoin#29724: 29242 Diagram check followups
    ee1b9b231a0a7e89b77cbf8ea54e0534f0970dd0 CalculateFeerateDiagramsForRBF: update misleading description of old diagram contents (Greg Sanders)
    a9d42b9aa579f54922ffd17fdeb61e704539b92c CompareFeerateDiagram: short-circuit comparison when detected as incomparable (Greg Sanders)
    cebcced65e8fdbd54893d4852d5ed6b85a8b0c45 remove erroneous CompareFeerateDiagram comment about slope (Greg Sanders)
    a0376e106182075634e50c14da00e84b4069b985 unit test: clarify unstated assumption for calc_feerate_diagram_rbf chunking (Greg Sanders)
    890cb015f3b99c4f2f57a1bbc69e5cf2045c2739 s/effected/affected/ (Greg Sanders)
    d9391ec0952920bdbb10d3f6e9e706e85f717ec0 CalculateFeerateDiagramsForRBF: remove size tie-breaking from chunking conflicts (Greg Sanders)
    b684d82d7e093889a8dc7678c6d6605ca4cd9fa4 fuzz: Add more invariant checks for package_rbf (Greg Sanders)
    2a3ada8b2181b45165608947c7c42b341d0a54dd fuzz: finer grained ImprovesFeerateDiagram check on error result (Greg Sanders)
    c377ae9ba08150c467e8b6cfaac7865f4d31457c unit test: improve ImprovesFeerateDiagram coverage with one less vb case (Greg Sanders)
    d2bf923eb19f6330bad673b71faadec582780aa1 unit test: make calc_feerate_diagram_rbf less brittle (Greg Sanders)
    defe023f6ec49dd64c6e03880cee0e9299b45762 fuzz: add PrioritiseTransaction coverage in diagram checks (Greg Sanders)
    216d5ff1627be6562312b5afb477078ed8495999 unit test: add coverage showing priority affects diagram check results (Greg Sanders)
    a80d80936a8de487569d00755d0fbcd058a94823 unit test: add CheckConflictTopology case for not the only child (Greg Sanders)
    69bd18ca80007584be4089b3f42650d351854bb3 unit test: check tx4 conflict error message (Greg Sanders)
    c0c37f07eb0fb4027faa04e5457f8421264e8ad5 unit test: have CompareFeerateDiagram tested with diagrams both ways (Greg Sanders)
    b62e2c0fa5f6010ff1fc60c59418d0796b83c5de ImprovesFeerateDiagram: Spelling fix and removal of unused diagram vectors (Greg Sanders)
    bb424029459af691c4d07988f3d76afeaee21644 doc: fix comment about non-existing CompareFeeFrac (Greg Sanders)
    
    Pull request description:
    
      Follow-ups to https://github.com/bitcoin/bitcoin/pull/29242
    
    ACKs for top commit:
      glozow:
        ACK ee1b9b231a0a7e89b77cbf8ea54e0534f0970dd0, reviewed the changes and package_rbf fuzzer seems to run fine
      murchandamus:
        crACK ee1b9b231a0a7e89b77cbf8ea54e0534f0970dd0
      ismaelsadeeq:
        Code review ACK ee1b9b231a0a7e89b77cbf8ea54e0534f0970dd0
      willcl-ark:
        ACK ee1b9b231a0a7e89b77cbf8ea54e0534f0970dd0
    
    Tree-SHA512: 8399fe12064fb49b0e4c73258968b57be1d9c2e35701b2d3b0bb67e2e4052e44216358238f92508e4697d0fb6176518d5b885474054d3deda242f669e99262a7
    61de64df67
  161. Fix #29767, set m_synced = true after Commit() bbe82c116e
  162. Merge bitcoin/bitcoin#29738: doc: fix typos
    601edd8ee8810b5c6b2184ce8d7f7b45e70913cf ci: use codespell 2.2.6 (fanquake)
    52fa0d285f4e8109ebdd8b1e43c897f6bfaa8e65 doc: fix some typos (crazeteam)
    b5ed13a2408a141d737341137b26b2f0249c8167 doc: Fix typos (RoboSchmied)
    
    Pull request description:
    
      Combines the recent PRs to fix typos so they can be merged.
    
    ACKs for top commit:
      brunoerg:
        crACK 601edd8ee8810b5c6b2184ce8d7f7b45e70913cf
      tdb3:
        crACK 601edd8ee8810b5c6b2184ce8d7f7b45e70913cf
      kristapsk:
        cr utACK 601edd8ee8810b5c6b2184ce8d7f7b45e70913cf
    
    Tree-SHA512: d054b1dad1336d6b9291cc5d5252d4debf6424a993d4edd6a97d7c15055a7fc48a333d30967f72e7dc9c6c1d9a9038ca8bb5e219c529f4c2365ea48404a508d0
    8d19d688f4
  163. Merge bitcoin/bitcoin#29764: doc: Suggest installing dev packages for debian/ubuntu qt5 build
    6c2990416e2dabd845f5ec50ec6ff138136c9b08 ci: Pull in qtbase5-dev instead of seperate low-level libraries (laanwj)
    a3c6a13cb23999fa70c428f1229acbf1b3883f11 doc: Suggest installing dev packages for debian/ubuntu qt5 build (laanwj)
    
    Pull request description:
    
      Pretty much all library packages were renamed in the 64-bit time_t migration to add `t64` (even on 64-bit platforms).
    
      Instead of complicating the doc with conditional package names, suggest installing the `-dev` packages which still have the same name, and besides that, are the right way to go about it as they contain the "user facing" C++ headers needed to build against Qt5. They pull in the necessary library packages through dependencies.
    
      For Fedora, devel packages are already suggested.
    
      This affects Ubuntu 24.04 and Debian Testing.
    
    ACKs for top commit:
      maflcko:
        lgtm ACK 6c2990416e2dabd845f5ec50ec6ff138136c9b08
      hebasto:
        ACK 6c2990416e2dabd845f5ec50ec6ff138136c9b08.
    
    Tree-SHA512: dae21b7d08fdb221b7b72c323fdaaa6d1a8b014f90e24d2beae64b1ae229fdbeb93d726a61e826447813e52a3cb9775426aefc6c44a4c5ccc541afabb89cb135
    b8420e4603
  164. Merge bitcoin/bitcoin#29732: depends: qt 5.15.13
    430f319f73894499c56021b70f2827475c3f0433 depends: qt 5.15.13 (fanquake)
    
    Pull request description:
    
      I need to try and patch around Qts buildsystem to keep #21778 moving along (the issue being that even when you tell Qt to build using Clang on Linux, it still calls out to GCC, breaking our ability to have a macOS release build env that doesn't have a GCC toolchain installed, and thus no `ld` binary).
    
      Before trying to patch Qt any further, update to the latest LTS release, and update the current patch set.
    
    ACKs for top commit:
      TheCharlatan:
        Re-ACK 430f319f73894499c56021b70f2827475c3f0433
      hebasto:
        re-ACK 430f319f73894499c56021b70f2827475c3f0433.
    
    Tree-SHA512: 11122c04d63f4ec79e5d7945e1686eaf308cb1f98c3ff8bc52e265d7353cd4f1a532f4d78d55b43183245aeebf93cc1092087d9fe83e42eefa8a69ad9017d2da
    3d37ed490a
  165. Merge bitcoin/bitcoin#29765: ci: Use clang-18
    fa75220ac5e0ea401a26dd2f16a88627e51c240a ci: Use clang-18 in asan/fuzz/tsan task (MarcoFalke)
    fad23a06469607689c4f637bb407c96af4902a27 ci: Bump clang+llvm in i686_multiprocess task (MarcoFalke)
    
    Pull request description:
    
      Use clang-18, which comes with bugfixes and sanitizer upgrades.
    
    ACKs for top commit:
      fanquake:
        ACK fa75220ac5e0ea401a26dd2f16a88627e51c240a
    
    Tree-SHA512: da251eb55d3a7e537110b03fb0fc10fc6e2f4406d55bdb33bdc91459daabfd3b8d1d20859a66718bb1b09126e11495f6584c52504a85eb09bde9eafafdaf0b0b
    c7247bd9e8
  166. Merge bitcoin/bitcoin#29756: doc: Override `-g` properly to skip debugging information
    f8f5cece4dfda5c614e087be75af074181a36c39 doc: Override `-g` properly to skip debugging information (Hennadii Stepanov)
    
    Pull request description:
    
      Fix https://github.com/bitcoin/bitcoin/issues/29755.
    
    ACKs for top commit:
      TheCharlatan:
        ACK f8f5cece4dfda5c614e087be75af074181a36c39
    
    Tree-SHA512: 02bff5fc41859deb914531ef01ea1ac88ab2e138219fe175472962192b11feefe772128da03f466ec765c1b35b21eead31a42cc76e62ecb7ea5dc947cf568d61
    90224fbf61
  167. Merge bitcoin/bitcoin#29648: Remove libbitcoinconsensus
    80f8b92f4f2311b9e9a25361c9dd973244e6f95c remove libbitcoinconsensus (fanquake)
    
    Pull request description:
    
      This was deprecated in `v27.0`, for removal in `v28.0`. See discussion in PR #29189.
    
    ACKs for top commit:
      theuni:
        Concept ACK and light review ACK 80f8b92f4f2311b9e9a25361c9dd973244e6f95c. My only hesitation here is that (afaics?) there's now nothing keeping undesired features like threading or globals from working their way into the interpreter in future commits.
      m3dwards:
        Concept ACK https://github.com/bitcoin/bitcoin/pull/29648/commits/80f8b92f4f2311b9e9a25361c9dd973244e6f95c
      TheCharlatan:
        ACK 80f8b92f4f2311b9e9a25361c9dd973244e6f95c
      hebasto:
        ACK 80f8b92f4f2311b9e9a25361c9dd973244e6f95c, I have reviewed the code and it looks OK.
    
    Tree-SHA512: 17a62118aeb088f2695c892bb32794dfea3061e3cb7d9e8e9f1c06c3ff6f63a7587fa532e37edbb91fbc5a19b12c9a0f8e05fa9e8864aa07f92665375d847e80
    948ecf181e
  168. Merge bitcoin/bitcoin#29753: test: fix StopIteration exception in p2p_node_network_limited.py
    2eb5175de87c798af328de3f2147aac7879eaa10 test: fix StopIteration exception in p2p_node_network_limited.py (furszy)
    
    Pull request description:
    
      Fixes #29731
    
      The `next()` call throws an exception if the default parameter is omitted and the iterator is exhausted.
      Fix it by providing a default value.
    
      The failure can be tested by commenting out lines 90 and 91 in the test (the `self.connect_nodes(2, 0)`). Since there is no connection, the node in question retrieves a single element in the 'getchaintips()' call. This scenario without the fix, aborts the test right away, throwing an `StopIteration` exception, and with the fix, the test properly waits until the timeout (`wait_until()` call).
    
    ACKs for top commit:
      maflcko:
        review ACK 2eb5175de87c798af328de3f2147aac7879eaa10
      brunoerg:
        crACK 2eb5175de87c798af328de3f2147aac7879eaa10
      BrandonOdiwuor:
        crACK 2eb5175de87c798af328de3f2147aac7879eaa10
      tdb3:
        Tested ACK for 2eb5175de87c798af328de3f2147aac7879eaa10.
    
    Tree-SHA512: b0873eb4d3334146fd250cd2cd23add3e744877033c8bfa4eb8dff36633100604adf49dd7846856ddfa88c9768663f095db705c00eef3641618df8fc13f8c2c5
    23ba39470c
  169. [doc] add historical release notes for 26.1 d32346c39e
  170. ci: Temporarily disable bpfcc-tools fac012c726
  171. Merge bitcoin/bitcoin#29750: test: makes timeout a forced named argument in tests methods that use it
    61560d5e939034e1a94d95cdc5c498095ab4fddb test: makes timeout a forced named argument in tests methods that use it (Sergi Delgado Segura)
    
    Pull request description:
    
      This makes calls to such methods more explicit and less error-prone.
    
      Motivated by https://github.com/bitcoin/bitcoin/pull/29736#discussion_r1540654057
    
    ACKs for top commit:
      maflcko:
        lgtm ACK 61560d5e939034e1a94d95cdc5c498095ab4fddb
      brunoerg:
        ACK 61560d5e939034e1a94d95cdc5c498095ab4fddb
      BrandonOdiwuor:
        crACK 61560d5e939034e1a94d95cdc5c498095ab4fddb
      AngusP:
        ACK 61560d5e939034e1a94d95cdc5c498095ab4fddb
      stratospher:
        tested ACK 61560d5.
    
    Tree-SHA512: 8d6ec3fe1076c868ddbd3050f3c242dbd83cc123f560db3d3b0ed74968e6050dc9ebf4e7c716af9cc1b290c97d736c2fc2ac936b0b69ebdbceed934dae7d55d9
    1d8a5f0d9b
  172. Merge bitcoin/bitcoin#29687: cli: improve bitcoin-cli error when not connected
    69d6fd676e9c15ef41a03722d51ed0b13c3e4320 cli: improve bitcoin-cli error when not connected (willcl-ark)
    
    Pull request description:
    
      Closes: #29555
    
      Simply adds an additional suggestion to check `bitcoin-cli -help`.
    
    ACKs for top commit:
      maflcko:
        lgtm ACK 69d6fd676e9c15ef41a03722d51ed0b13c3e4320
      itornaza:
        tested ACK 69d6fd676e9c15ef41a03722d51ed0b13c3e4320
      tdb3:
        ACK for 69d6fd676e9c15ef41a03722d51ed0b13c3e4320
    
    Tree-SHA512: af0c712bcc9b1267f81a8316d015bef99ab788ef43e3b450cdc4a9cb74004727d757d48f50d3af2b28b01be2931578623311677a79f1b148a53f364bd4279a0c
    c407caa297
  173. guix: remove errant leftover from #29648
    We no longer build a lib, so a non-existent dir is causing builds to
    fail.
    fd8527a20e
  174. Drop Windows Socket dependency for `randomenv.cpp`
    This change drops a dependency on the ws2_32 library for our
    libbitcoinkernel, which may not be desirable.
    03b87a3e64
  175. Merge bitcoin/bitcoin#29733: build, macos: Drop unused `osx_volname` target
    eff19fa1c8d736d30dea937ebce0b372c19b7559 build, macos: Drop unused `osx_volname` target (Hennadii Stepanov)
    
    Pull request description:
    
      The `osx_volname` makefile target was introduced in https://github.com/bitcoin/bitcoin/pull/7192 and was used to pass the package name to Gitian scripts as a content of the `osx_volname` file.
    
      With the current Guix scripts, the `osx_volname` file is never read. Therefore, its creation might be omitted.
    
      My Guix builds:
      ```
      x86_64
      5e2d254e207d53784621c8df331c9bf4a969da667d185992402f48a5ac49f563  guix-build-eff19fa1c8d7/output/arm64-apple-darwin/SHA256SUMS.part
      089dba70685893aca5e7c8ce1d53a07380e87ca50eda8b3a2a75aeaeb1d28e48  guix-build-eff19fa1c8d7/output/arm64-apple-darwin/bitcoin-eff19fa1c8d7-arm64-apple-darwin-unsigned.tar.gz
      390c57197c6ab4aefdde1c665d5e4ebdfb4ae5e553f8f93b017f2fad1093d110  guix-build-eff19fa1c8d7/output/arm64-apple-darwin/bitcoin-eff19fa1c8d7-arm64-apple-darwin-unsigned.zip
      e1edde7ca28bf26aea8d956b1d3c1725a475f2a9c148f5c36b651db4b814091c  guix-build-eff19fa1c8d7/output/arm64-apple-darwin/bitcoin-eff19fa1c8d7-arm64-apple-darwin.tar.gz
      d0096ea73a5f75cc4d3cef4ef1761ae3e48c8a63aff918f07371c5c88896e4e6  guix-build-eff19fa1c8d7/output/dist-archive/bitcoin-eff19fa1c8d7.tar.gz
      51b4affb9fd6f8aea05b7d25d29f017d0a0a145395f457caa14b9af9646b035b  guix-build-eff19fa1c8d7/output/x86_64-apple-darwin/SHA256SUMS.part
      b1df081ecf636a92754e673e5388d1d988653d4646f0b0446a4c9f14d865a265  guix-build-eff19fa1c8d7/output/x86_64-apple-darwin/bitcoin-eff19fa1c8d7-x86_64-apple-darwin-unsigned.tar.gz
      62e09926029d176da950d3e3db7ff8ae6cbe4c0b2ea17b084fc1d28565f91475  guix-build-eff19fa1c8d7/output/x86_64-apple-darwin/bitcoin-eff19fa1c8d7-x86_64-apple-darwin-unsigned.zip
      477dcb2382cbd447bd88a3b644b4bd736f5b67d66d42cb73fe31ffc153d3e181  guix-build-eff19fa1c8d7/output/x86_64-apple-darwin/bitcoin-eff19fa1c8d7-x86_64-apple-darwin.tar.gz
      ```
    
    ACKs for top commit:
      Empact:
        ACK https://github.com/bitcoin/bitcoin/pull/29733/commits/eff19fa1c8d736d30dea937ebce0b372c19b7559
      Sjors:
        tACK eff19fa1c8d736d30dea937ebce0b372c19b7559
      TheCharlatan:
        ACK eff19fa1c8d736d30dea937ebce0b372c19b7559
    
    Tree-SHA512: 29714be5c58caa07b3eb99846d71bb83366dade769af022059bb3c499878adcd34cdf03b006c5da561291f373ccc59abdb83c925057ec0049465eaa8dd6ef4e1
    82b47cb52b
  176. Merge bitcoin/bitcoin#29784: [doc] add historical release notes for 26.1
    d32346c39e9ddb2a58a4bb77061044ac3008ca7e [doc] add historical release notes for 26.1 (glozow)
    
    Pull request description:
    
      Need for github release
    
    ACKs for top commit:
      fanquake:
        ACK d32346c39e9ddb2a58a4bb77061044ac3008ca7e - looks like just a newline difference.
    
    Tree-SHA512: 567647bdab8b5a8405b43682e3a0f86282eb0b866c83423a7866fef872307a7ca88d564604f1cfe53d6ce48407aa6cf88bdf18b35c16c959e2a36062bff39a50
    6dabb315c4
  177. Merge bitcoin/bitcoin#29419: log: deduplicate category names and improve logging.cpp
    b0344c219a641b759fb0cc4f53afebe675b8ca27 logging: remove unused BCLog::UTIL (Vasil Dimov)
    d3b3af90343b7671231afd7dff87e87ff86d31d7 log: deduplicate category names and improve logging.cpp (Vasil Dimov)
    
    Pull request description:
    
      The code in `logging.cpp` needs to:
      * Get the category name given the flag (e.g. `BCLog::PRUNE` -> `"prune"`)
      * Get the flag given the category name (e.g. `"prune"` -> `BCLog::PRUNE`)
      * Get the list of category names sorted in alphabetical order
    
      Achieve this by using the proper std containers. The result is
      * less code (the diff of the first commit is +62 / -129)
      * faster code (to linear search and no copy+sort)
      * more maintainable code (the categories are no longer duplicated in `LogCategories[]` and `LogCategoryToStr()`)
    
      This behavior is preserved:
      `BCLog::NONE` -> `""` (lookup by `LogCategoryToStr()`)
      `""` -> `BCLog::ALL` (lookup by `GetLogCategory("")`)
    
      ---
    
      Also remove unused `BCLog::UTIL`.
    
      ---
    
      These changes (modulo the `BCLog::UTIL` removal) are part of https://github.com/bitcoin/bitcoin/pull/29415 but they make sense on their own and would be good to have them, regardless of the fate of https://github.com/bitcoin/bitcoin/pull/29415. Also, if this is merged, that would reduce the size of https://github.com/bitcoin/bitcoin/pull/29415, thus the current standalone PR.
    
    ACKs for top commit:
      davidgumberg:
        crACK https://github.com/bitcoin/bitcoin/pull/29419/commits/b0344c219a641b759fb0cc4f53afebe675b8ca27
      pinheadmz:
        ACK b0344c219a641b759fb0cc4f53afebe675b8ca27
      ryanofsky:
        Code review ACK b0344c219a641b759fb0cc4f53afebe675b8ca27. Nice cleanup! Having to maintain multiple copies of the same mapping seemed messy and a like a possible footgun. I checked old and new mappings in both directions and confirmed no behavior should be changing.
    
    Tree-SHA512: 57f87a090932f9b33dc8e075d1855dba9b71a3243a0758511745483dec2d9c46d3b532eadab297e78164c9b7caba370986ee380696a45f0778a841082f8e21a7
    3b987d03a4
  178. test: Bump timeouts in feature_index_prune and wallet_importdescriptors
    Timeout issues where encountered when running functional tests with `--jobs=16 --extended`.
    
    Line in `feature_index_prune.py` took 101.6s, 96.6s, 103.0s across 3 runs on my machine, default limit is 60.
    
    Line in the `wallet_importdescriptors.py --descriptors` took 5.4s, 5.7s, 6.0s across 3 runs.
    49c0b8b228
  179. Merge bitcoin/bitcoin#29787: guix: remove errant leftover from #29648
    fd8527a20ebc490df030b3a91c1161f00c8a29b6 guix: remove errant leftover from #29648 (fanquake)
    
    Pull request description:
    
      We no longer build a lib, so a non-existent dir is causing builds to fail.
    
    ACKs for top commit:
      josibake:
        ACK https://github.com/bitcoin/bitcoin/pull/29787/commits/fd8527a20ebc490df030b3a91c1161f00c8a29b6
      hebasto:
        ACK fd8527a20ebc490df030b3a91c1161f00c8a29b6.
      TheCharlatan:
        ACK fd8527a20ebc490df030b3a91c1161f00c8a29b6
    
    Tree-SHA512: 9175a0de3f95f56939b3eaa3e89dca2cfae4996bcd84ef6b8e2872672bef39cb0550c9f4a79475d887eb8fac92c15dfa8c352648ff167d54a0b736978412226c
    3b12fc7bcd
  180. depends: add -g to DEBUG=1 flags eef51afc6a
  181. depends: remove -g from sqlite debug flags 84fbf9b284
  182. Update the developer mailing list address.
    The developer mailing list was migrated to Google Groups in February 2024
    as announced in https://groups.google.com/g/bitcoindev/c/aewBuV6k-LI.
    
    The archives maintained by the Linux Foundation stopped updating in December
    2024. Thus, we point to the new archive maintained by gnusha.org.
    
    The codebase refers to old discussions linked to the Linux Foundation archives.
    Since all links are still active to this date, we keep them as they are.
    
    See #29782.
    0ead466a0c
  183. build, depends: Fix `libmultiprocess` cross-compilation
    This change prevents building all default targets that include `mpgen`,
    which expectedly fails to link when cross-compiling.
    2de2ea2ff6
  184. Merge bitcoin/bitcoin#29782: doc: Update the developer mailing list address.
    0ead466a0c72bef0a8622749b84e9c7c5c37144f Update the developer mailing list address. (Edil Medeiros)
    
    Pull request description:
    
      The developer mailing list was migrated to Google Groups in February 2024 as announced in https://groups.google.com/g/bitcoindev/c/aewBuV6k-LI.
    
      In this patch, I decided to add a link to the [archives maintained by the Linux Foundation](https://lists.linuxfoundation.org/pipermail/bitcoin-dev/) as linked in the [old mailing list page](https://lists.linuxfoundation.org/mailman/listinfo/bitcoin-dev).
    
      A reasonable alternative would be link to the [new archives](https://gnusha.org/pi/bitcoindev/) linked in the [migration announcement message](https://groups.google.com/g/bitcoindev/c/aewBuV6k-LI). I'm not sure about the status of the archive migration, probably the old archives are more comprehensive to this date.
    
    ACKs for top commit:
      josibake:
        reACK https://github.com/bitcoin/bitcoin/commit/0ead466a0c72bef0a8622749b84e9c7c5c37144f
      Sjors:
        ACK 0ead466a0c72bef0a8622749b84e9c7c5c37144f
      Zero-1729:
        crACK 0ead466a0c72bef0a8622749b84e9c7c5c37144f
    
    Tree-SHA512: c29296a45a65f342df03faffa49e7dc1469d78e96074a7dbc82d89fc3f45179e4828015cbb6400b44830d6bb7fc23869abf2b8a7070196b03f99fbb0158bb343
    43735252c5
  185. Merge bitcoin/bitcoin#29665: build, depends: Fix `libmultiprocess` cross-compilation
    2de2ea2ff63b97eacb23234932c6e1f1f65e4494 build, depends: Fix `libmultiprocess` cross-compilation (Hennadii Stepanov)
    
    Pull request description:
    
      On the master branch @ 3b12fc7bcd94cf214984911f68612feb468d5404, the following command fails:
      ```
      $ make -C depends libmultiprocess HOST=arm64-apple-darwin MULTIPROCESS=1
      ...
      [100%] Linking CXX executable mpgen
      ...
      clang++: error: linker command failed with exit code 1 (use -v to see invocation)
      ...
      ```
    
      This PR prevents building all default targets that include `mpgen`, which expectedly fails to link when cross-compiling.
    
    ACKs for top commit:
      ryanofsky:
        Code review ACK 2de2ea2ff63b97eacb23234932c6e1f1f65e4494
      fanquake:
        ACK 2de2ea2ff63b97eacb23234932c6e1f1f65e4494 - I checked that this fixes the macOS cross-compilation issue. I'm assuming these packages are also likely to change further in the (near) future, given the changes going in upstream: https://github.com/chaincodelabs/libmultiprocess/pulls?q=is%3Apr+is%3Aclosed.
    
    Tree-SHA512: 563551afbe483c923b52c6171f9d73bcc30bc4febd821b5abfe8aadb2ac601b94c2d10a73746ace3710d9f0afa4798eb090e77ccb1ae66a819495912802d91c9
    5aff45a90a
  186. Merge bitcoin/bitcoin#29527: depends: add -g to DEBUG=1 flags
    84fbf9b2841a9ba1ebd1421b9ff9fe444bb1abd9 depends: remove -g from sqlite debug flags (fanquake)
    eef51afc6a29c693a68400930ef8011be41b7401 depends: add -g to DEBUG=1 flags (fanquake)
    
    Pull request description:
    
      Add `-g` to the base DEBUG=1 flags in depends.
      Avoids the need to specify it per-package.
      More alignment with `--enable-debug` behaviour in configure.
    
      We also want to align the optimization flags, currently -O1 vs -O0, however that can be it's own PR.
    
    ACKs for top commit:
      theuni:
        ACK 84fbf9b2841a9ba1ebd1421b9ff9fe444bb1abd9
    
    Tree-SHA512: 1ee98ba0c13e4b80bb87632658b4f53ce49c73e0e7712990c30da60deca4a349a744232f2d78f243dee9a07f5b9b70f9c2c4ae34082c34ae51b37b054fac61fd
    0d509bab45
  187. guix: Remove another leftover from #29648 3cb80febb8
  188. Merge bitcoin/bitcoin#29797: guix: Remove another leftover from #29648
    3cb80febb87696f3b1073469c0cc68a57ba81de9 guix: Remove another leftover from #29648 (Hennadii Stepanov)
    
    Pull request description:
    
      It was overlooked in bitcoin/bitcoin#29787.
    
    ACKs for top commit:
      TheCharlatan:
        ACK 3cb80febb87696f3b1073469c0cc68a57ba81de9
    
    Tree-SHA512: c4eae65ffa0a79f4d57ba07730effee6aeff9d9625bc00a4534ffe46d3a16ae56bc8753e3fec93d7ff81ea7be39662282c631861a21ea8a9dc5d31b79acb231d
    3900854ba3
  189. Merge bitcoin/bitcoin#29788: ci: Temporarily disable bpfcc-tools
    fac012c7262f036e9b6f5800e57dcd63870a871c ci: Temporarily disable bpfcc-tools (MarcoFalke)
    
    Pull request description:
    
      This works around package install errors, such as https://github.com/bitcoin/bitcoin/runs/23354020361. Should be possible to reproduce locally via `apt update && apt install bpfcc-tools` on noble:
    
      ```
       python3-bpfcc : Depends: libbpfcc (>= 0.29.1+ds-1ubuntu4) but it is not going to be installed
    
    ACKs for top commit:
      hebasto:
        ACK fac012c7262f036e9b6f5800e57dcd63870a871c, I have reviewed the code, it looks OK. And CI is green.
      TheCharlatan:
        ACK fac012c7262f036e9b6f5800e57dcd63870a871c
    
    Tree-SHA512: 369e89bc0fbf4d75455c7c047ae904849267f82e647eeadd7ee6045393bd9812a5e682a58eb8d2ccd8c89a030e6665f054596fdcd0708f591ed4c693398125d1
    5de68e45c2
  190. Merge bitcoin/bitcoin#29673: guix: use GCC 11 in macOS build env
    73d92309d7c3584de28d0dd97d45773571383eb7 guix: use GCC 11 for macOS builds (fanquake)
    
    Pull request description:
    
      Note that this is just the native compiler, which is used to build the toolchain we use to build the actual binaries.
    
      Partially motivated by #29091, where it could now be a bit confusing if we are explicitly using GCC 10 in our release toolchain, when our minimum required is 11 (this can't be bumped to 12 due to build issues with native tools).
    
      At the same time, remove `gcc-toolchain "static"` from the macOS build env.
    
    ACKs for top commit:
      hebasto:
        ACK 73d92309d7c3584de28d0dd97d45773571383eb7.
    
    Tree-SHA512: 31392290b327cc0e19498cf053b7c9eb19e70295933d650b29b29589356ad455d35b6addcdaae702a9635513c07070fb17d61bcb48445d3cb1a9d4a93aa6ddf3
    71c51c161d
  191. Squashed 'src/secp256k1/' changes from efe85c70a2..d8311688bd
    d8311688bd Merge bitcoin-core/secp256k1#1515: ci: Note affected clangs in comment on ASLR quirk
    a85e2233e7 ci: Note affected clangs in comment on ASLR quirk
    4b77fec67a Merge bitcoin-core/secp256k1#1512: msan: notate more variable assignments from assembly code
    f7f0184ba1 msan: notate more variable assignments from assembly code
    a61339149f change inconsistent array param to pointer
    05bfab69ae Merge bitcoin-core/secp256k1#1507: ci: Add workaround for ASLR bug in sanitizers
    a5e8ab2484 ci: Add sanitizer env variables to debug output
    84a93de4d2 ci: Add workaround for ASLR bug in sanitizers
    427e86b9ed Merge bitcoin-core/secp256k1#1490: tests: improve fe_sqr test (issue #1472)
    2028069df2 doc: clarify input requirements for secp256k1_fe_mul
    11420a7a28 tests: improve fe_sqr test
    cdc9a6258e Merge bitcoin-core/secp256k1#1489: tests: add missing fe comparison checks for inverse field test cases
    d926510cf7 Merge bitcoin-core/secp256k1#1496: msan: notate variable assignments from assembly code
    31ba404944 msan: notate variable assignments from assembly code
    e7ea32e30a msan: Add SECP256K1_CHECKMEM_MSAN_DEFINE which applies to memory sanitizer and not valgrind
    e7bdddd9c9 refactor: rename `check_fe_equal` -> `fe_equal`
    00111c9c56 tests: add missing fe comparison checks for inverse field test cases
    0653a25d50 Merge bitcoin-core/secp256k1#1486: ci: Update cache action
    94a14d5290 ci: Update cache action
    2483627299 Merge bitcoin-core/secp256k1#1483: cmake: Recommend native CMake commands in README
    5ad3aa3dcd Merge bitcoin-core/secp256k1#1484: tests: Drop redundant _scalar_check_overflow calls
    51df2d9ab3 tests: Drop redundant _scalar_check_overflow calls
    3777e3f36a cmake: Recommend native CMake commands in README
    e4af41c61b Merge bitcoin-core/secp256k1#1249: cmake: Add `SECP256K1_LATE_CFLAGS` configure option
    3bf4d68fc0 Merge bitcoin-core/secp256k1#1482: build: Clean up handling of module dependencies
    e6822678ea build: Error if required module explicitly off
    89ec583ccf build: Clean up handling of module dependencies
    44378867a0 Merge bitcoin-core/secp256k1#1468: v0.4.1 release aftermath
    a9db9f2d75 Merge bitcoin-core/secp256k1#1480: Get rid of untested sizeof(secp256k1_ge_storage) == 64 code path
    74b7c3b53e Merge bitcoin-core/secp256k1#1476: include: make docs more consistent
    b37fdb28ce check-abi: Minor UI improvements
    ad5f589a94 check-abi: Default to HEAD for new version
    9fb7e2f156 release process: Style and formatting nits
    ba5d72d626 assumptions: Use new STATIC_ASSERT macro
    e53c2d9ffc Require that sizeof(secp256k1_ge_storage) == 64
    d0ba2abbff util: Add STATIC_ASSERT macro
    da7bc1b803 include: in doc, remove article in front of "pointer"
    aa3dd5280b include: make doc about ctx more consistent
    e3f690015a include: remove obvious "cannot be NULL" doc
    d373bf6d08 Merge bitcoin-core/secp256k1#1474: tests: restore scalar_mul test
    79e094517c Merge bitcoin-core/secp256k1#1473: Fix typos
    3dbfb48946 tests: restore scalar_mul test
    d77170a88d Fix typos
    e7053d065b release process: Add email step
    429d21dc79 release process: Run sanity checks on release PR
    42f8c51402 cmake: Add `SECP256K1_LATE_CFLAGS` configure option
    
    git-subtree-dir: src/secp256k1
    git-subtree-split: d8311688bd383d3a923a1b11789cded3cc8e5e03
    53eec53dca
  192. Update secp256k1 subtree to latest master 4654cc3224
  193. test: Fix debug recommendation in argsman_tests 561a650e0f
  194. Merge bitcoin/bitcoin#29776: ThreadSanitizer: Fix #29767
    bbe82c116e72ca0638751e063bf564cd1fe5c4d5 Fix #29767, set m_synced = true after Commit() (nanlour)
    
    Pull request description:
    
      I think this problem https://github.com/bitcoin/bitcoin/issues/29767#issue-2216373048 is because of
      in BaseIndex::Sync
      https://github.com/bitcoin/bitcoin/blob/61de64df6790077857faba84796bb874b59c5d15/src/index/base.cpp#L163-L168
      Setup m_synced = true; before Commit();
      So this may cause a race condition window to BaseIndex::BlockConnected
      https://github.com/bitcoin/bitcoin/blob/61de64df6790077857faba84796bb874b59c5d15/src/index/base.cpp#L271-L274
      So i try to fix it with move m_synced = true after Commit().
      Also see comment of Sync():
      https://github.com/bitcoin/bitcoin/blob/61de64df6790077857faba84796bb874b59c5d15/src/index/base.h#L151-L156
      I am a newcomer interested in Bitcoin, trying to become a member of the Bitcoin Core development team. Please give me some feedback if you could, as I may be doing something wrong. Thank you!
    
    ACKs for top commit:
      fjahr:
        Code review ACK bbe82c116e72ca0638751e063bf564cd1fe5c4d5
      ryanofsky:
        Code review ACK bbe82c116e72ca0638751e063bf564cd1fe5c4d5
    
    Tree-SHA512: 89a09498a232c87ef1e083d4cc4ed9bb15f045ad0624d5d150a87187b2b8a48a41137974dbc7ea5c37f73da90742c43259f5aa7f84b4179eb8d62033e44fa479
    5a5ab1d544
  195. Merge bitcoin/bitcoin#29725: depends: build libqrencode with CMake
    007ea322a6492d46f1565ef58a0c49f5b468ff20 depends: switch to building libqrencode with CMake (fanquake)
    884330c0a57ce839d48606dc2de3928869b31b7d guix: make cmake-minimal a global requirement (fanquake)
    
    Pull request description:
    
      Switch to building libqrencode with CMake. Note that upstream (https://github.com/fukuchi/libqrencode) hasn't seen any activity for ~4 years, so the odds of getting anything upstream seems low, but I've made two minor changes to the source here, which I will PR in any case.
    
      From an initial look I couldn't find any significant difference between the Autotools and CMake produced libs. As part of this change we move cmake-minimal in Guix into the global package set.
    
    ACKs for top commit:
      TheCharlatan:
        ACK 007ea322a6492d46f1565ef58a0c49f5b468ff20
    
    Tree-SHA512: c784f790ddea958082c8ae96d3744bdf99331a8799765f9d44f00861b8e2cfcab1a88a3d64af5b10e51a8d5938d55eb6a3d271790b565e50492a39d00dc0e30f
    eb78ebc064
  196. ci: Drop duplicated compiler flags a3485af67d
  197. crypto: chacha20: always use our fallback timingsafe_bcmp rather than libc's
    Looking at apple/freebsd/openbsd sources, their implementations match our naive
    fallback. It's not worth the hassle of using a platform-specific function for
    no gain.
    2d1819455c
  198. Merge bitcoin/bitcoin#29081: refactor: Remove gmtime*
    fa9f36babaceba6ab2f88e64bc4bc2956f58871f build: Remove HAVE_GMTIME_R (MarcoFalke)
    fa72dcbfa56177ca878375bae7c7bca6ca6a1f40 refactor: FormatISO8601* without gmtime* (MarcoFalke)
    fa2c486afc8501f2678cc19c9e9518a23c4ebcbd Revert "time: add runtime sanity check" (MarcoFalke)
    
    Pull request description:
    
      Now that the `ChronoSanityCheck` has passed for everyone with C++17 and is guaranteed by C++20 to always pass, remove it.
    
      Also, remove `gmtime_r` and `gmtime_s` and replace them with `year_month_day`+`hh_mm_ss` from C++20.
    
    ACKs for top commit:
      sipa:
        utACK fa9f36babaceba6ab2f88e64bc4bc2956f58871f
      fanquake:
        ACK fa9f36babaceba6ab2f88e64bc4bc2956f58871f - more std lib & even less stuff to port.
    
    Tree-SHA512: a9e7e805b757b7dade0bcc3f95273a7dc4f68622630d74838339789dd203ad7542d36b2e090a93b2bc5a7ecc383207dd7ec82c68147108bdac7ce44f088c8c9a
    c3530254c9
  199. Merge bitcoin/bitcoin#29800: ci: Drop duplicated compiler flags
    a3485af67da4949c72c45acc608f8746ed0e0848 ci: Drop duplicated compiler flags (Hennadii Stepanov)
    
    Pull request description:
    
      On the master branch @ 0d509bab45d292caeaf34600e57b5928757c6005, it is easy to check the _"Options used to compile and link"_ section in the `configure` script output and observe duplicated compiler flags.
    
      This PR cleans such cases up.
    
    ACKs for top commit:
      maflcko:
        re-ACK a3485af67da4949c72c45acc608f8746ed0e0848
      fanquake:
        ACK a3485af67da4949c72c45acc608f8746ed0e0848 - no-longer a change in behaviour.
    
    Tree-SHA512: 7e644fcfad7be48af3b18edd2994c0c78a21ac3f9fff497724be80f74c9e859d156de15ca4024c5c50d1080435576ce63402b48aba5c2fd556e2ed7e318e0e34
    3a8dc562f2
  200. Merge bitcoin/bitcoin#29805: test: Fix debug recommendation in argsman_tests
    561a650e0f669159699224ddd4eb5b1c91cf9ac3 test: Fix debug recommendation in argsman_tests (Fabian Jahr)
    
    Pull request description:
    
      There are recommendations in the `argsman_tests` comments on how to re-run and debug a test failure to see if it reflects an expected or unexpected change. The command tries to run a test in `util_tests` but this is in `argsman_tests` so the command doesn't work with just copy+paste. I didn't investigate further but I suspect that these tests were moved between files.
    
    ACKs for top commit:
      fanquake:
        ACK 561a650e0f669159699224ddd4eb5b1c91cf9ac3
    
    Tree-SHA512: b3bb94ba1635c9455149b455f2b30ee37a8067a6242339531ab54d428177a288da29a4a10702652305eb34aa7638f51dad35fa6b0e7b74617e445327b8c4c053
    8f1185feec
  201. Merge bitcoin/bitcoin#29803: Update libsecp256k1 subtree to latest master
    53eec53dca1cb677d11564b055d3b8581ddd6747 Squashed 'src/secp256k1/' changes from efe85c70a2..d8311688bd (fanquake)
    
    Pull request description:
    
      Updates the libsecp256k1 subtree to https://github.com/bitcoin-core/secp256k1/commit/d8311688bd383d3a923a1b11789cded3cc8e5e03.
    
      Part of #29742. See that PR for more details, the particularly relevant changes are:
      * https://github.com/bitcoin-core/secp256k1/pull/1496
      * https://github.com/bitcoin-core/secp256k1/pull/1512
    
    ACKs for top commit:
      theuni:
        ACK 4654cc32248d788ac1160ca320ea68d31357d0c9
      jonasnick:
        utACK 4654cc32248d788ac1160ca320ea68d31357d0c9
    
    Tree-SHA512: 84e711e9245ced6cc679e082f597d096361d8824c6ff7de2d4d7f59adb3316464b3643ffa588a899345cb88532672a66968b6c66c51b1924adf4441f54427277
    b5d21182e5
  202. ci: use LLVM 18.1.3 in MSAN jobs c7efee591a
  203. ci: remove --with-asm usage (secp256k1) 61641e2466
  204. refactor, bench, fuzz: Drop unneeded `UCharCast` calls
    The `CKey::Set()` template function handles `std::byte` just fine.
    56e1e5dd10
  205. fuzz, refactor: Deduplicate fuzz binary path creation 1573e9a11e
  206. fuzz: Introduce `BITCOINFUZZ` environment variable
    The `BITCOINFUZZ` environment variable allows to override the default
    path to the fuzz binary.
    
    It complements the already existing set of variables used by tests:
     - BITCOIND
     - BITCOINCLI
     - BITCOINUTIL
     - BITCOINWALLET
    47cedee776
  207. test: remove immediate tx relay workaround in wallet_groups.py
    Reverts commit ab4efad51b9ba276ffeb6871931e13772493f7cc (PR #26970).
    This workaround is not needed anymore, as since #27114 the test sets
    the noban permission for both in- and outbound connections via the
    `noban_tx_relay` setting, and we don't have to rely on these topology
    hacks anymore. See commit c985eb854cc86deb747caea5283c17cf51b6a983.
    93fae5ae7c
  208. refactor: Simplify `extra_txn` to be a vec of CTransactionRef instead of a vec of pair<Wtxid, CTransactionRef>
    All `CTransactionRef` have `.GetWitnessHash()` that returns a cached `const Wtxid` (since fac1223a568fa1ad6dd602350598eed278d115e8),
    so we don't need to pass transaction refs around with their IDs as they're easy to get from a ref.
    a8203e9412
  209. Merge bitcoin/bitcoin#29815: crypto: chacha20: always use our fallback timingsafe_bcmp rather than libc's
    2d1819455cb4c516f6cdf81c11e869a23dee3e6b crypto: chacha20: always use our fallback timingsafe_bcmp rather than libc's (Cory Fields)
    
    Pull request description:
    
      Looking at libc sources, apple and openbsd implementations match our naive fallback. Only FreeBSD (and only x86_64) seems to [implement an optimized version](https://github.com/freebsd/freebsd-src/blob/main/lib/libc/amd64/string/timingsafe_bcmp.S).
    
      It's not worth the hassle of using a platform-specific function for such little gain.
    
      Additionally, as mentioned below, this is the only case outside of sha2 that requires an autoconf check, and I have upcoming PRs to remove the sha2 ones.
    
      Apple's [impl is unoptimized](https://opensource.apple.com/source/Libc/Libc-1244.1.7/string/FreeBSD/timingsafe_bcmp.c.auto.html).
    
      As-is [OpenBSD's impl](https://github.com/openbsd/src/blob/master/lib/libc/string/timingsafe_bcmp.c).
    
      Relevant IRC conversation with sipa:
    
      > \<cfields\> sipa: chacha20poly1305.cpp uses libc's timingsafe_bcmp when possible. But looking around at apple/freebsd/openbsd, I don't see any impl that doesn't use the naive implementation that matches our fallback...
      > \<cfields\> is there any reason to belive there's an optimized impl somewhere that we're actually hitting?
      > \<cfields\> asking because after cleaning up sha2, timingsafe_bcmp is the last autoconf check that remains in all of crypto. It'd make life easy if we could just always use our internal one.
      > \<cfields\> *all of crypto/
      > \<sipa\> cfields: let's get rid of the dependency then
      > \<sipa\> it's a trivial function
      > \<sipa\> and if we need it for some platforms, no real reason not to use it on all
    
      After the above discusstion, I did end up finding the x86_64-optimized FreeBSD impl, but I don't think that's all that significant.
    
    ACKs for top commit:
      sipa:
        utACK 2d1819455cb4c516f6cdf81c11e869a23dee3e6b
      fanquake:
        ACK 2d1819455cb4c516f6cdf81c11e869a23dee3e6b
      TheCharlatan:
        ACK 2d1819455cb4c516f6cdf81c11e869a23dee3e6b
      theStack:
        ACK 2d1819455cb4c516f6cdf81c11e869a23dee3e6b
    
    Tree-SHA512: b9583e19ac2f77c5d572aa5b95bc4b53669d5717e5708babef930644980de7c5d06a9c7decd5c2b559d70b8597328ecfe513375e3d8c3ef523db80012dfe9266
    0f0e36de5f
  210. Merge bitcoin/bitcoin#29791: test: Bump timeouts in feature_index_prune and wallet_importdescriptors
    49c0b8b2288e60ae22fcac5d03811cf36ecec058 test: Bump timeouts in feature_index_prune and wallet_importdescriptors (Christopher Bergqvist)
    
    Pull request description:
    
      Timeout issues where encountered when running functional tests with `--jobs=16 --extended`.
    
      Note that running `--extended` without `--jobs=16` does not trigger the issues.
    
      Tested under NixOS on a Xeon CPU with 16 logical cores.
    
      (A few tests are skipped locally as I haven't enabled BPF and a few other things).
    
      ## Measurements
    
      Line in `feature_index_prune.py` took 101.6s, 96.6s, 103.0s across 3 runs on my machine.
      Default limit is 60, suggested to increase limit to 150 seconds.
    
      Line in the `wallet_importdescriptors.py --descriptors` took 5.4s, 5.7s, 6.0s across 3 runs.
      Suggested to increase from 5 to 10 seconds.
    
      ## Logs
    
      Output slightly modified by separate change that lets code run past given timeouts and the provides more information - "Took 101.6 seconds to complete, 69.4% over the given limit.".
    
      <details>
      <summary>
      Click to expand.
      </summary>
    
      ### feature_index_prune.py
      ```
      52/305 - feature_index_prune.py failed, Duration: 250 s
    
      stdout:
      2024-04-01T22:25:24.010000Z TestFramework (INFO): PRNG seed is: 990421162716295219
      2024-04-01T22:25:24.014000Z TestFramework (INFO): Initializing test directory /mnt/tmp/test_runner_โ‚ฟ_๐Ÿƒ_20240402_002516/feature_index_prune_302
      2024-04-01T22:25:24.913000Z TestFramework (INFO): check if we can access blockfilters and coinstats when pruning is enabled but no blocks are actually pruned
      2024-04-01T22:26:48.417000Z TestFramework (INFO): prune some blocks
      2024-04-01T22:26:48.460000Z TestFramework (INFO): check if we can access the tips blockfilter and coinstats when we have pruned some blocks
      2024-04-01T22:26:48.483000Z TestFramework (INFO): check if we can access the blockfilter and coinstats of a pruned block
      2024-04-01T22:26:59.175000Z TestFramework (INFO): make sure trying to access the indices throws errors
      2024-04-01T22:27:50.422000Z TestFramework (INFO): prune exactly up to the indices best blocks while the indices are disabled
      2024-04-01T22:27:52.596000Z TestFramework (INFO): make sure that we can continue with the partially synced indices after having pruned up to the index height
      2024-04-01T22:29:34.242000Z TestFramework.utils (ERROR): wait_until() failed. Predicate: '''
              self.wait_until(lambda: self.nodes[1].getindexinfo() == expected_stats)#, timeout=150)
      '''
      2024-04-01T22:29:34.244000Z TestFramework (ERROR): Assertion failed
      Traceback (most recent call last):
        File "/home/chris/Documents/Code/bitcoin-core/test/functional/test_framework/test_framework.py", line 132, in main
          self.run_test()
        File "/home/chris/Documents/Code/bitcoin-core/test/functional/feature_index_prune.py", line 117, in run_test
          self.sync_index(height=1500)
        File "/home/chris/Documents/Code/bitcoin-core/test/functional/feature_index_prune.py", line 34, in sync_index
          self.wait_until(lambda: self.nodes[1].getindexinfo() == expected_stats)#, timeout=150)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/home/chris/Documents/Code/bitcoin-core/test/functional/test_framework/test_framework.py", line 780, in wait_until
          return wait_until_helper_internal(test_function, timeout=timeout, timeout_factor=self.options.timeout_factor)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
        File "/home/chris/Documents/Code/bitcoin-core/test/functional/test_framework/util.py", line 305, in wait_until_helper_internal
          raise AssertionError(m)
      AssertionError: Predicate '''
              self.wait_until(lambda: self.nodes[1].getindexinfo() == expected_stats)#, timeout=150)
      ''' not true after 60 seconds. Took 101.6 seconds to complete, 69.4% over the given limit.
      2024-04-01T22:29:34.298000Z TestFramework (INFO): Stopping nodes
      2024-04-01T22:29:34.511000Z TestFramework (WARNING): Not cleaning up dir /mnt/tmp/test_runner_โ‚ฟ_๐Ÿƒ_20240402_002516/feature_index_prune_302
      2024-04-01T22:29:34.511000Z TestFramework (ERROR): Test failed. Test logging available at /mnt/tmp/test_runner_โ‚ฟ_๐Ÿƒ_20240402_002516/feature_index_prune_302/test_framework.log
      2024-04-01T22:29:34.511000Z TestFramework (ERROR):
      2024-04-01T22:29:34.512000Z TestFramework (ERROR): Hint: Call /home/chris/Documents/Code/bitcoin-core/test/functional/combine_logs.py '/mnt/tmp/test_runner_โ‚ฟ_๐Ÿƒ_20240402_002516/feature_index_prune_302' to consolidate all logs
      2024-04-01T22:29:34.512000Z TestFramework (ERROR):
      2024-04-01T22:29:34.512000Z TestFramework (ERROR): If this failure happened unexpectedly or intermittently, please file a bug and provide a link or upload of the combined log.
      2024-04-01T22:29:34.512000Z TestFramework (ERROR): https://github.com/bitcoin/bitcoin/issues
      2024-04-01T22:29:34.512000Z TestFramework (ERROR):
    
      stderr:
    
      53/305 - p2p_blockfilters.py passed, Duration: 130 s
      ```
    
      ### wallet_importdescriptors.py --descriptors
    
      ```
      297/305 - wallet_importdescriptors.py --descriptors failed, Duration: 76 s
    
      stdout:
      2024-04-01T22:48:27.663000Z TestFramework (INFO): PRNG seed is: 8528678505617325332
      2024-04-01T22:48:27.664000Z TestFramework (INFO): Initializing test directory /mnt/tmp/test_runner_โ‚ฟ_๐Ÿƒ_20240402_004231/wallet_importdescriptors_98
      2024-04-01T22:48:28.021000Z TestFramework (INFO): Setting up wallets
      2024-04-01T22:48:28.100000Z TestFramework (INFO): Mining coins
      2024-04-01T22:48:29.714000Z TestFramework (INFO): Import should fail if a descriptor is not provided
      2024-04-01T22:48:29.725000Z TestFramework (INFO): Should import a p2pkh descriptor
      2024-04-01T22:48:29.740000Z TestFramework (INFO): Test can import same descriptor with public key twice
      2024-04-01T22:48:29.760000Z TestFramework (INFO): Test can update descriptor label
      2024-04-01T22:48:29.785000Z TestFramework (INFO): Internal addresses cannot have labels
      2024-04-01T22:48:29.788000Z TestFramework (INFO): Internal addresses should be detected as such
      2024-04-01T22:48:29.854000Z TestFramework (INFO): Should not import a p2sh-p2wpkh descriptor without checksum
      2024-04-01T22:48:29.855000Z TestFramework (INFO): Should not import a p2sh-p2wpkh descriptor that has range specified
      2024-04-01T22:48:29.858000Z TestFramework (INFO): Should not import a p2sh-p2wpkh descriptor and have it set to active
      2024-04-01T22:48:29.860000Z TestFramework (INFO): Should import a (non-active) p2sh-p2wpkh descriptor
      2024-04-01T22:48:29.984000Z TestFramework (INFO): Should import a 1-of-2 bare multisig from descriptor
      2024-04-01T22:48:30.002000Z TestFramework (INFO): Should not treat individual keys from the imported bare multisig as watchonly
      2024-04-01T22:48:30.005000Z TestFramework (INFO): Ranged descriptors cannot have labels
      2024-04-01T22:48:30.014000Z TestFramework (INFO): Private keys required for private keys enabled wallet
      2024-04-01T22:48:30.027000Z TestFramework (INFO): Ranged descriptor import should warn without a specified range
      2024-04-01T22:48:30.065000Z TestFramework (INFO): Should not import a ranged descriptor that includes xpriv into a watch-only wallet
      2024-04-01T22:48:30.070000Z TestFramework (INFO): Should not import a descriptor with hardened derivations when private keys are disabled
      2024-04-01T22:48:30.108000Z TestFramework (INFO): Verify we can only extend descriptor's range
      2024-04-01T22:48:30.364000Z TestFramework (INFO): Check we can change descriptor internal flag
      2024-04-01T22:48:30.536000Z TestFramework (INFO): Key ranges should be imported in order
      2024-04-01T22:48:30.708000Z TestFramework (INFO): Check we can change next_index
      2024-04-01T22:48:30.838000Z TestFramework (INFO): Check imported descriptors are not active by default
      2024-04-01T22:48:30.870000Z TestFramework (INFO): Check can activate inactive descriptor
      2024-04-01T22:48:30.903000Z TestFramework (INFO): Check can deactivate active descriptor
      2024-04-01T22:48:30.924000Z TestFramework (INFO): Verify activation state is persistent
      2024-04-01T22:48:30.973000Z TestFramework (INFO): Should import a descriptor with a WIF private key as spendable
      2024-04-01T22:48:30.987000Z TestFramework (INFO): Test can import same descriptor with private key twice
      2024-04-01T22:48:32.173000Z TestFramework (INFO): Test that multisigs can be imported, signed for, and getnewaddress'd
      2024-04-01T22:48:43.803000Z TestFramework (INFO): Multisig with distributed keys
      2024-04-01T22:48:48.895000Z TestFramework (INFO): We can create and use a huge multisig under P2WSH
      2024-04-01T22:49:05.628000Z TestFramework (INFO): Under P2SH, multisig are standard with up to 15 compressed keys
      2024-04-01T22:49:20.258000Z TestFramework (INFO): Amending multisig with new private keys
      2024-04-01T22:49:23.306000Z TestFramework (INFO): Combo descriptors cannot be active
      2024-04-01T22:49:23.313000Z TestFramework (INFO): Descriptors with no type cannot be active
      2024-04-01T22:49:23.348000Z TestFramework (INFO): Test importing a descriptor to an encrypted wallet
      2024-04-01T22:49:43.957000Z TestFramework (ERROR): Assertion failed
      Traceback (most recent call last):
        File "/home/chris/Documents/Code/bitcoin-core/test/functional/test_framework/test_framework.py", line 132, in main
          self.run_test()
        File "/home/chris/Documents/Code/bitcoin-core/test/functional/wallet_importdescriptors.py", line 691, in run_test
          with self.nodes[0].assert_debug_log(expected_msgs=["Rescan started from block 0f9188f13cb7b2c71f2a335e3a4fc328bf5beb436012afca590b1a11466e2206... (slow variant inspecting all blocks)"], timeout=5):#10):
        File "/nix/store/rac8pxbi1vapwrlqzbrkycbyg521djzw-python3-3.11.6/lib/python3.11/contextlib.py", line 144, in __exit__
          next(self.gen)
        File "/home/chris/Documents/Code/bitcoin-core/test/functional/test_framework/test_node.py", line 493, in assert_debug_log
          self._raise_assertion_error(f'Expected messages "{expected_msgs}" found too late, took {now - start:.1f} seconds, {((now - start) / (time_end - start)) - 1:.1%} over the given limit. Log:\n\n{print_log}\n\n')
        File "/home/chris/Documents/Code/bitcoin-core/test/functional/test_framework/test_node.py", line 188, in _raise_assertion_error
          raise AssertionError(self._node_msg(msg))
      AssertionError: [node 0] Expected messages "['Rescan started from block 0f9188f13cb7b2c71f2a335e3a4fc328bf5beb436012afca590b1a11466e2206... (slow variant inspecting all blocks)']" found too late, took 5.4 seconds, 8.9% over the given limit. Log:
    
       - 2024-04-01T22:49:33.066512Z [http] [httpserver.cpp:306] [http_request_cb] [http] Received a POST request for /wallet/encrypted_wallet from 127.0.0.1:47658
       - 2024-04-01T22:49:33.066668Z [httpworker.0] [rpc/request.cpp:187] [parse] [rpc] ThreadRPCServer method=importdescriptors user=__cookie__
       - 2024-04-01T22:49:33.070999Z [httpworker.0] [wallet/sqlite.cpp:57] [TraceSqlCallback] [/mnt/tmp/test_runner_โ‚ฟ_๐Ÿƒ_20240402_004231/wallet_importdescriptors_98/node0/regtest/wallets/encrypted_wallet/wallet.dat] SQLite Statement: INSERT INTO main VALUES(?, ?)
       - 2024-04-01T22:49:33.071061Z [httpworker.0] [wallet/sqlite.cpp:57] [TraceSqlCallback] [/mnt/tmp/test_runner_โ‚ฟ_๐Ÿƒ_20240402_004231/wallet_importdescriptors_98/node0/regtest/wallets/encrypted_wallet/wallet.dat] SQLite Statement: DELETE FROM main WHERE key = ?
       - 2024-04-01T22:49:33.071137Z [httpworker.0] [wallet/sqlite.cpp:57] [TraceSqlCallback] [/mnt/tmp/test_runner_โ‚ฟ_๐Ÿƒ_20240402_004231/wallet_importdescriptors_98/node0/regtest/wallets/encrypted_wallet/wallet.dat] SQLite Statement: BEGIN TRANSACTION
       - 2024-04-01T22:49:33.074190Z [httpworker.0] [wallet/sqlite.cpp:57] [TraceSqlCallback] [/mnt/tmp/test_runner_โ‚ฟ_๐Ÿƒ_20240402_004231/wallet_importdescriptors_98/node0/regtest/wallets/encrypted_wallet/wallet.dat] SQLite Statement: INSERT or REPLACE into main values(?, ?)
       - 2024-04-01T22:49:33.075564Z [httpworker.0] [wallet/sqlite.cpp:57] [TraceSqlCallback] [/mnt/tmp/test_runner_โ‚ฟ_๐Ÿƒ_20240402_004231/wallet_importdescriptors_98/node0/regtest/wallets/encrypted_wallet/wallet.dat] SQLite Statement: INSERT or REPLACE into main values(?, ?)
      ...<thousands of almost identical lines>...
       - 2024-04-01T22:49:38.416139Z [httpworker.0] [wallet/sqlite.cpp:57] [TraceSqlCallback] [/mnt/tmp/test_runner_โ‚ฟ_๐Ÿƒ_20240402_004231/wallet_importdescriptors_98/node0/regtest/wallets/encrypted_wallet/wallet.dat] SQLite Statement: INSERT or REPLACE into main values(?, ?)
       - 2024-04-01T22:49:38.416528Z [httpworker.0] [wallet/sqlite.cpp:57] [TraceSqlCallback] [/mnt/tmp/test_runner_โ‚ฟ_๐Ÿƒ_20240402_004231/wallet_importdescriptors_98/node0/regtest/wallets/encrypted_wallet/wallet.dat] SQLite Statement: INSERT or REPLACE into main values(?, ?)
       - 2024-04-01T22:49:38.427946Z [httpworker.0] [wallet/sqlite.cpp:57] [TraceSqlCallback] [/mnt/tmp/test_runner_โ‚ฟ_๐Ÿƒ_20240402_004231/wallet_importdescriptors_98/node0/regtest/wallets/encrypted_wallet/wallet.dat] SQLite Statement: COMMIT TRANSACTION
       - 2024-04-01T22:49:38.429778Z [httpworker.0] [wallet/sqlite.cpp:57] [TraceSqlCallback] [/mnt/tmp/test_runner_โ‚ฟ_๐Ÿƒ_20240402_004231/wallet_importdescriptors_98/node0/regtest/wallets/encrypted_wallet/wallet.dat] SQLite Statement: INSERT or REPLACE into main values(?, ?)
       - 2024-04-01T22:49:38.429916Z [httpworker.0] [wallet/sqlite.cpp:57] [TraceSqlCallback] [/mnt/tmp/test_runner_โ‚ฟ_๐Ÿƒ_20240402_004231/wallet_importdescriptors_98/node0/regtest/wallets/encrypted_wallet/wallet.dat] SQLite Statement: INSERT or REPLACE into main values(?, ?)
       - 2024-04-01T22:49:38.430001Z [httpworker.0] [wallet/wallet.h:933] [WalletLogPrintf] [encrypted_wallet] Setting spkMan to active: id = c6149b35399517457b0b1d8ccdd7efda25a2f20fc7f8167adda8e79b10e260b7, type = legacy, internal = false
       - 2024-04-01T22:49:38.430134Z [httpworker.0] [wallet/wallet.h:933] [WalletLogPrintf] [encrypted_wallet] RescanFromTime: Rescanning last 329 blocks
       - 2024-04-01T22:49:38.430170Z [httpworker.0] [wallet/wallet.h:933] [WalletLogPrintf] [encrypted_wallet] Rescan started from block 0f9188f13cb7b2c71f2a335e3a4fc328bf5beb436012afca590b1a11466e2206... (slow variant inspecting all blocks)
       - 2024-04-01T22:49:38.441914Z [httpworker.0] [wallet/scriptpubkeyman.h:258] [WalletLogPrintf] [encrypted_wallet] MarkUnusedAddresses: Detected a used keypool item at index 4000, mark all keypool items up to this item as used
    
      2024-04-01T22:49:44.029000Z TestFramework (INFO): Stopping nodes
      2024-04-01T22:49:44.132000Z TestFramework (WARNING): Not cleaning up dir /mnt/tmp/test_runner_โ‚ฟ_๐Ÿƒ_20240402_004231/wallet_importdescriptors_98
      2024-04-01T22:49:44.132000Z TestFramework (ERROR): Test failed. Test logging available at /mnt/tmp/test_runner_โ‚ฟ_๐Ÿƒ_20240402_004231/wallet_importdescriptors_98/test_framework.log
      2024-04-01T22:49:44.132000Z TestFramework (ERROR):
      2024-04-01T22:49:44.133000Z TestFramework (ERROR): Hint: Call /home/chris/Documents/Code/bitcoin-core/test/functional/combine_logs.py '/mnt/tmp/test_runner_โ‚ฟ_๐Ÿƒ_20240402_004231/wallet_importdescriptors_98' to consolidate all logs
      2024-04-01T22:49:44.133000Z TestFramework (ERROR):
      2024-04-01T22:49:44.133000Z TestFramework (ERROR): If this failure happened unexpectedly or intermittently, please file a bug and provide a link or upload of the combined log.
      2024-04-01T22:49:44.133000Z TestFramework (ERROR): https://github.com/bitcoin/bitcoin/issues
      2024-04-01T22:49:44.133000Z TestFramework (ERROR):
    
      stderr:
    
      Remaining jobs: [feature_pruning.py, feature_dbcrash.py, feature_assumeutxo.py, rpc_scantxoutset.py, feature_coinstatsindex.py, p2p_node_network_limited.py --v1transport, p2p_node_network_limited.py --v2transport, feature_config_args.py]
      298/305 - p2p_node_network_limited.py --v1transport passed, Duration: 24 s
      ```
    
      </details>
    
      ## Related
    
      Almost identical timeout in `feature_index_prune.py` in #27091 on MacOS, and for `wallet_importdescriptors.py --descriptors` in #27282 on Alpine & CI.
    
    ACKs for top commit:
      maflcko:
        lgtm ACK 49c0b8b2288e60ae22fcac5d03811cf36ecec058
      tdb3:
        ACK for 49c0b8b2288e60ae22fcac5d03811cf36ecec058
      itornaza:
        approach ACK 49c0b8b2288e60ae22fcac5d03811cf36ecec058
      BrandonOdiwuor:
        crACK 49c0b8b2288e60ae22fcac5d03811cf36ecec058
    
    Tree-SHA512: f62ade74701588d76bfe838b7e7bbda1db38fd98688fd5d13c2c008064027add2ee9d053dee602d84919fab4c9bf53183c31819d94a6174066f237d0f6a62086
    03e94f8b90
  211. Merge bitcoin/bitcoin#29742: ci: remove --with-asm=no (secp256k1) from MSAN jobs
    61641e2466768e128fef995e9fcb24cad90e527d ci: remove --with-asm usage (secp256k1) (fanquake)
    c7efee591a27720757504f3ebf7dbeaef0185931 ci: use LLVM 18.1.3 in MSAN jobs (fanquake)
    
    Pull request description:
    
      Bumps LLVM to `18.1.3`:
      * Includes https://github.com/llvm/llvm-project/pull/86201, which is useful as it removes the need to (possibly) apply a work around when running the CI locally.
    
      Drops `--with-asm=no` (only being passed to secp256k1) from the MSAN CI. New MSAN annotations were pulled in as part of #29803.
    
    ACKs for top commit:
      maflcko:
        lgtm ACK 61641e2466768e128fef995e9fcb24cad90e527d
      hebasto:
        ACK 61641e2466768e128fef995e9fcb24cad90e527d.
    
    Tree-SHA512: da51c9f08a9aacb9dd936c47ef47777a8c84234e4df5b9776647ac94ebe88084b5e7b8182af90cfa01ae183072f6ce5915b73825f66b2567214ab270b2ff7837
    bb1383eb52
  212. depends: add the new LLVM debug macro
    `LIBCPP_HARDENING_MODE` is the new macro, the previous one was removed in
    LLVM 18.
    
    See https://libcxx.llvm.org/Hardening.html.
    5efebc0edb
  213. Merge bitcoin/bitcoin#29822: test: remove immediate tx relay workaround in wallet_groups.py
    93fae5ae7c31fa1b1095770f00adeac1cfeda4b9 test: remove immediate tx relay workaround in wallet_groups.py (Sebastian Falbesoner)
    
    Pull request description:
    
      Reverts commit ab4efad51b9ba276ffeb6871931e13772493f7cc (PR #26970). This workaround is not needed anymore, as since #27114 the test sets the noban permission for both in- and outbound connections via the `noban_tx_relay` setting, and we don't have to rely on this topology hack anymore. See commit c985eb854cc86deb747caea5283c17cf51b6a983 (kudos to brunoerg!).
    
      Can be tested by executing `$ time ./test/functional/wallet_groups.py` both on master and PR and verifying that the execution time is roughly equal.
    
    ACKs for top commit:
      maflcko:
        lgtm ACK 93fae5ae7c31fa1b1095770f00adeac1cfeda4b9
      brunoerg:
        utACK 93fae5ae7c31fa1b1095770f00adeac1cfeda4b9
    
    Tree-SHA512: b949fd05b4308815ba02d0ee4d1318f642b930288dd03223f46db7db745177af1c070bc7058743ac27963c5ad90564089867cc12f31fee94812a16919c353bab
    f0794cbd40
  214. [clang-tidy] Enable the misc-no-recursion check
    Co-authored-by: stickies-v <stickies-v@protonmail.com>
    Co-authored-by: Gloria Zhao <gloriajzhao@gmail.com>
    78407b99ed
  215. doc: 25.2 historical release notes 93bd2e2f6c
  216. fill_mempool: remove subtest-specific comment 73b68bd8b4
  217. Merge bitcoin/bitcoin#29830: doc: 25.2 historical release notes
    93bd2e2f6c9672fbf1120d1e25349f6edd29cfef doc: 25.2 historical release notes (Ava Chow)
    
    Pull request description:
    
    ACKs for top commit:
      laanwj:
        ACK 93bd2e2f6c9672fbf1120d1e25349f6edd29cfef
      ismaelsadeeq:
        ACK 93bd2e2f6c9672fbf1120d1e25349f6edd29cfef
    
    Tree-SHA512: da4b6950b812cbc9b379de1d04ef4111e0b1336d943e41efed53ebe754cb3a2a54fa4dda39629535cc1521c56a87d1169d34db8041066cda00dcb5e6fa71638b
    3206e45412
  218. Merge bitcoin/bitcoin#29690: clang-tidy: Enable misc-no-recursion
    78407b99ed6dd17f687fcbfb0486ecc433302287 [clang-tidy] Enable the misc-no-recursion check (dergoegge)
    
    Pull request description:
    
      Recursion is a frequent source of stack overflow bugs. Secondly, introduction of recursion can be non-obvious.
    
      This PR proposes to use the clang-tidy `misc-no-recursion` check to make introduction of new recursion obvious. We don't make use of recursion a lot in our code base but there are a few places that need suppressions anyway (mostly the descriptor and univalue/rpc code).
    
    ACKs for top commit:
      stickies-v:
        ACK 78407b99ed6dd17f687fcbfb0486ecc433302287
      TheCharlatan:
        Re-ACK 78407b99ed6dd17f687fcbfb0486ecc433302287
      fanquake:
        ACK 78407b99ed6dd17f687fcbfb0486ecc433302287
    
    Tree-SHA512: 34126d704c46086fe7371906ca852c25ced1dbd5fcfd85bf623810cd171a797569a92a33c7e26b8dc01c30c7bbf81aa326718926e8354585091411989a4edb14
    eaf186d1ee
  219. Merge bitcoin/bitcoin#29691: Change Luke Dashjr seed to dashjr-list-of-p2p-nodes.us
    4f273ab4360c9aa72c2feb78787e1811ab58dc16 Change Luke Dashjr seed to dashjr-list-of-p2p-nodes.us (Luke Dashjr)
    
    Pull request description:
    
      To avoid issues with DNS blacklisting, I've setup a separate domain for my DNS seed.
    
      (This time, without a potentially alarming name)
    
    ACKs for top commit:
      kevkevinpal:
        Concept ACK [4f273ab](https://github.com/bitcoin/bitcoin/pull/29691/commits/4f273ab4360c9aa72c2feb78787e1811ab58dc16), name looks good to me
      petertodd:
        ACK https://github.com/bitcoin/bitcoin/pull/29691/commits/4f273ab4360c9aa72c2feb78787e1811ab58dc16
      mzumsande:
        ACK 4f273ab4360c9aa72c2feb78787e1811ab58dc16
      fanquake:
        ACK 4f273ab4360c9aa72c2feb78787e1811ab58dc16
    
    Tree-SHA512: 689698e3c735df3ed0c2756a9d4adb5644bb9d8a6954e23d66bfa9d94ee10954f77fb241d9593f750054d731aa1532368a0fc8277884f6c2a98ac47cd0bdeeb7
    34a299f9ee
  220. Revert "ci: Temporarily disable bpfcc-tools"
    This reverts commit fac012c7262f036e9b6f5800e57dcd63870a871c.
    c15170c27d
  221. Merge bitcoin/bitcoin#29781: depends: add new LLVM debug macro
    5efebc0edbb479d2041b3fb2d43be3a77e817b3e depends: add the new LLVM debug macro (fanquake)
    
    Pull request description:
    
      `LIBCXX_HARDENING_MODE` is the new macro, the previous one was removed in LLVM 18.
    
      See https://libcxx.llvm.org/Hardening.html.
    
      Required before https://github.com/google/oss-fuzz/pull/11725 will do anything (with the bump to 18.x).
    
      Seems reasonable to do now that almost all our test infra is using LLVM 18.
    
    ACKs for top commit:
      theuni:
        ACK 5efebc0edbb479d2041b3fb2d43be3a77e817b3e
    
    Tree-SHA512: 43078eeb5940c55ef4f95c72682f8a372dcd3eb97956b3114149c16d9f59b067a999b2aab7f34ffb57eab191524514408e2bba154ff4a6ea0cd6ec4d119c5d18
    9dfe43572e
  222. Merge bitcoin/bitcoin#29498: test: Update --tmpdir doc string to say directory must not exist
    d4e36ae80d4b3f03647fd9057461edf7ecd794a3 test: Update --tmpdir doc string to say directory must not exist (kevkevin)
    
    Pull request description:
    
      The error message given if passing an existing dir to --tmpdir is confusing so this makes it clear that the directory must not already exist
    
      This change is motivated by this comment https://github.com/bitcoin/bitcoin/pull/29335#issuecomment-1960913020
    
    ACKs for top commit:
      maflcko:
        lgtm ACK d4e36ae80d4b3f03647fd9057461edf7ecd794a3
      davidgumberg:
        ACK https://github.com/bitcoin/bitcoin/pull/29498/commits/d4e36ae80d4b3f03647fd9057461edf7ecd794a3
    
    Tree-SHA512: fb31fd079767abbf94076615817943f35f5c9262fc97e65c631a18d33b3a343fe6a2d151613256e632d2b372ab2de0435f4712309b4a77ed3c663fd93a7dcdd1
    a160a6a081
  223. Merge bitcoin/bitcoin#29786: Drop Windows Socket dependency for `randomenv.cpp`
    03b87a3e64305ba651e22a730e35271dea8fea64 Drop Windows Socket dependency for `randomenv.cpp` (Hennadii Stepanov)
    
    Pull request description:
    
      This change drops a dependency on the ws2_32 library for our libbitcoinkernel by switching to [`GetComputerName`](https://learn.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-getcomputernamew) function.
    
    ACKs for top commit:
      sipsorcery:
        utACK 03b87a3e64305ba651e22a730e35271dea8fea64.
      laanwj:
        Code review ACK 03b87a3e64305ba651e22a730e35271dea8fea64.
      fanquake:
        ACK 03b87a3e64305ba651e22a730e35271dea8fea64
    
    Tree-SHA512: a4abd5499176634d5f3fbf4e794a7504c40232fb73bd7f41955fbfb2cc7c44bc7ea4518c5203836e52f552c30414c6c3e1b24f0922641dbf1c8377981c0ffaf0
    71f96c274f
  224. Merge bitcoin/bitcoin#29832: Revert "ci: Temporarily disable bpfcc-tools"
    c15170c27d96a66422cb86c6653c931aa204bbb0 Revert "ci: Temporarily disable bpfcc-tools" (fanquake)
    
    Pull request description:
    
      This reverts commit fac012c7262f036e9b6f5800e57dcd63870a871c.
    
      Closes #29804.
    
    ACKs for top commit:
      maflcko:
        lgtm ACK c15170c27d96a66422cb86c6653c931aa204bbb0
      hebasto:
        ACK c15170c27d96a66422cb86c6653c931aa204bbb0.
    
    Tree-SHA512: df7fc92175d8509481ef3afe26c7ac993af1bd0a5489d985e59a591d1ad4e580930691fda1768c2caa5a35d538d7cfa38ceba0f581c2ed95c1f7477012de9f26
    383457333a
  225. Merge bitcoin/bitcoin#29821: fuzz: Some `test/fuzz/test_runner.py` improvements
    47cedee776c6253232beb6039ea708c578211327 fuzz: Introduce `BITCOINFUZZ` environment variable (Hennadii Stepanov)
    1573e9a11e7a204a51f815a4c48c4b7054303ca9 fuzz, refactor: Deduplicate fuzz binary path creation (Hennadii Stepanov)
    
    Pull request description:
    
      These changes are split from https://github.com/bitcoin/bitcoin/pull/29774 and can be beneficial on their own.
    
      The new `BITCOINFUZZ` environment variable complements the already existing set of variables used by tests: https://github.com/bitcoin/bitcoin/blob/b5d21182e5a66110ce2796c2c99da39c8ebf0d72/test/functional/test_framework/test_framework.py#L238-L243
    
    ACKs for top commit:
      maflcko:
        lgtm ACK 47cedee776c6253232beb6039ea708c578211327
      davidgumberg:
        utACK https://github.com/bitcoin/bitcoin/pull/29821/commits/47cedee776c6253232beb6039ea708c578211327
    
    Tree-SHA512: 45809cfd13dc4a45c44cc433184352e84726cb95bea80fd8f581c59a0b8b0a5495260ff66922f9c57c38adbdbdd102439238f370fd49d6ea27a241a5e6249895
    f348ec7c2a
  226. Change MAC_OSX macro to __APPLE__ in crypto package a71eadf66b
  227. Merge bitcoin/bitcoin#29752: refactor: Use typesafe Wtxid in compact block encodings
    a8203e94123b6ea6e4f4a6320e3ad20457f44a28 refactor: Simplify `extra_txn` to be a vec of CTransactionRef instead of a vec of pair<Wtxid, CTransactionRef> (AngusP)
    c3c18433ae1d5b024d4cb92c762f5ca0ec7849c8 refactor: Use typesafe Wtxid in compact block encoding message, instead of ambiguous uint256. (AngusP)
    
    Pull request description:
    
      The first commit replaces `uint256` with typesafe `Wtxid` (or `Txid`) types introduced in #28107.
    
      The second commit then simplifies the extra tx `vector` to just be of `CTransactionRef`s instead of a `std::pair<Wtxid, CTransactionRef>`, as it's easy to get a `Wtxid` from a transaction ref.
    
    ACKs for top commit:
      glozow:
        ACK a8203e94123b6ea6e4f4a6320e3ad20457f44a28
      dergoegge:
        ACK a8203e94123b6ea6e4f4a6320e3ad20457f44a28
    
    Tree-SHA512: b4ba1423a8059f9fc118782bd8a668213d229c822f22b01267de74d6ea97fe4f2aad46b5da7c0178ecc9905293e9a0eafba1d75330297c055e27fd53c8c8ebfd
    bf031a517c
  228. Move fill_mempool to util function a3da63e8fe
  229. fill_mempool: assertions and docsctring update f3aa5bd5eb
  230. AcceptMultipleTransactions: Fix workspace client_maxfeerate
    If we do not set the Failure for the workspace when
    there is a client_maxfeerate related error, we hit
    an Assume() to the contrary. Properly set it.
    91d7d8f22a
  231. fuzz: Add coverage for client_maxfeerate 4ba1d0b553
  232. Merge bitcoin/bitcoin#29834: build: Change MAC_OSX macro to __APPLE__ in crypto
    a71eadf66bed8d3ea4282c8499f533a8eeed9900 Change MAC_OSX macro to __APPLE__ in crypto package (Lล‘rinc)
    
    Pull request description:
    
      Split out from https://github.com/bitcoin/bitcoin/pull/29450#issuecomment-2044405345 to avoid the uncertainties and simplify review.
    
    ACKs for top commit:
      theuni:
        ACK a71eadf66bed8d3ea4282c8499f533a8eeed9900
      fanquake:
        ACK a71eadf66bed8d3ea4282c8499f533a8eeed9900
    
    Tree-SHA512: b6a7bd7ca95585dd9110cefe7c1213f4a1a72bdfc88670abf4a0d9a8bbc12e093544524adce46aa9ca714c472d417f74ca4a678af682ed2488053059434eaa02
    0b4218e43c
  233. Merge bitcoin/bitcoin#29820: refactor, bench, fuzz: Drop unneeded `UCharCast` calls
    56e1e5dd10cbe51d3abc3fbf532b6b41bf62a889 refactor, bench, fuzz: Drop unneeded `UCharCast` calls (Hennadii Stepanov)
    
    Pull request description:
    
      The `CKey::Set()` template function handles `std::byte` just fine: https://github.com/bitcoin/bitcoin/blob/b5d21182e5a66110ce2796c2c99da39c8ebf0d72/src/key.h#L105
    
      Noticed in https://github.com/bitcoin/bitcoin/pull/29774#discussion_r1546288181.
    
    ACKs for top commit:
      maflcko:
        lgtm ACK 56e1e5dd10cbe51d3abc3fbf532b6b41bf62a889
      laanwj:
        Seems fine, code review ACK 56e1e5dd10cbe51d3abc3fbf532b6b41bf62a889
      hernanmarino:
        ACK 56e1e5dd10cbe51d3abc3fbf532b6b41bf62a889
    
    Tree-SHA512: 0f6b6e66692e70e083c7768aa4859c7db11aa034f555d19df0e5d33b18c0367ba1c886bcb6be3fdea78248a3cf8285576120812da55b995ef5e6c94a9dbd9f7c
    e31956980e
  234. Merge bitcoin/bitcoin#28981: Replace Boost.Process with cpp-subprocess
    d5a715536e497c160a2520f81334aab6c7490213 build: remove boost::process dependency for building external signer support (Sebastian Falbesoner)
    70434b1c443d9251a880d0193af771f574c40617 external_signer: replace boost::process with cpp-subprocess (Sebastian Falbesoner)
    cc8b9875b104c31f0a5b5e4195a8278ec55f35f7 Add `cpp-subprocess` header-only library (Hennadii Stepanov)
    
    Pull request description:
    
      Closes https://github.com/bitcoin/bitcoin/issues/24907.
    
      This PR is based on **theStack**'s [work](https://github.com/bitcoin/bitcoin/issues/24907#issuecomment-1466087049).
    
      The `subprocess.hpp` header has been sourced from the [upstream repo](https://github.com/arun11299/cpp-subprocess) with the only modification being the removal of convenience functions, which are not utilized in our codebase.
    
      Windows-related changes will be addressed in subsequent follow-ups.
    
    ACKs for top commit:
      achow101:
        reACK d5a715536e497c160a2520f81334aab6c7490213
      Sjors:
        re-tACK d5a715536e497c160a2520f81334aab6c7490213
      theStack:
        Light re-ACK d5a715536e497c160a2520f81334aab6c7490213
      fanquake:
        ACK d5a715536e497c160a2520f81334aab6c7490213 - with the expectation that this code is going to be maintained as our own. Next PRs should:
    
    Tree-SHA512: d7fb6fecc3f5792496204190afb7d85b3e207b858fb1a75efe483c05260843b81b27d14b299323bb667c990e87a07197059afea3796cf218ed8b614086bd3611
    0a9cfd1752
  235. depends: remove no longer needed patch for Boost::Process
    As Boost::Process has been replaced by cpp-subprocess (PR #28981), this
    patch touches an unused code part and is hence not needed anymore.
    95c594f4e9
  236. Merge bitcoin/bitcoin#29844: depends: remove no longer needed patch for Boost::Process
    95c594f4e9ea3cb57aa03b75d4d70fe0e1742065 depends: remove no longer needed patch for Boost::Process (Sebastian Falbesoner)
    
    Pull request description:
    
      As Boost::Process has been replaced by cpp-subprocess (PR #28981), this patch touches an unused code part and is hence not needed anymore.
    
    ACKs for top commit:
      hebasto:
        ACK 95c594f4e9ea3cb57aa03b75d4d70fe0e1742065, I have reviewed the code and it looks OK.
      fanquake:
        ACK 95c594f4e9ea3cb57aa03b75d4d70fe0e1742065
    
    Tree-SHA512: 0309b826f8c260e4180624f17302e51329fc4bd7a5431997d6d27d468dd5f7dbcd9db6a742efaba33ba30dbe361830eb1446fdbec927505ccf42412f9211934e
    3f6a6da3b0
  237. Fix typos in `subprocess.hpp` 13f5391bbb
  238. Merge bitcoin/bitcoin#29735: AcceptMultipleTransactions: Fix workspace not being set as client_maxfeerate failure
    4ba1d0b55339c3ea90e2bcd64662a06f0f90dd46 fuzz: Add coverage for client_maxfeerate (Greg Sanders)
    91d7d8f22a1c528db14fa743c66cd861ea00e84b AcceptMultipleTransactions: Fix workspace client_maxfeerate (Greg Sanders)
    f3aa5bd5eb6d1088f98a4dc7daaab0e17a7d5529 fill_mempool: assertions and docsctring update (Greg Sanders)
    a3da63e8febe475f2250f6432bca237d31fa9107 Move fill_mempool to util function (Greg Sanders)
    73b68bd8b4f9447e30091c7f8c3dc91a086bd93b fill_mempool: remove subtest-specific comment (Greg Sanders)
    
    Pull request description:
    
      Bug causes an `Assume()` failure due to the expectation that the individual result should be invalid when done over `submitpackage` via rpc.
    
      Bug introduced by https://github.com/bitcoin/bitcoin/pull/28950 , and I discovered it rebasing https://github.com/bitcoin/bitcoin/pull/28984 since it's easier to hit in that test scenario.
    
      Tests in place were only checking `AcceptSingleTransaction`-level checks due to package evaluation only triggering when minfee is too high for the parent transaction.
    
      Added test along with fix, moving the fill_mempool utility into a common area for re-use.
    
    ACKs for top commit:
      glozow:
        reACK 4ba1d0b55339c3ea90e2bcd64662a06f0f90dd46
      theStack:
        ACK 4ba1d0b55339c3ea90e2bcd64662a06f0f90dd46
      ismaelsadeeq:
        re-ACK https://github.com/bitcoin/bitcoin/commit/4ba1d0b55339c3ea90e2bcd64662a06f0f90dd46  via [diff](https://github.com/bitcoin/bitcoin/compare/4fe7d150eb3c85a6597d8fc910fe1490358197ad..4ba1d0b55339c3ea90e2bcd64662a06f0f90dd46)
    
    Tree-SHA512: 3729bdf7f25d04e232f173ccee04ddbb2afdaafa3d04292a01cecf58fb11b3b2bc133e8490277f1a67622b62d17929c242dc980f9bb647896beea4332ee35306
    bdb33ec519
  239. Merge bitcoin/bitcoin#29849: Fix typos in `subprocess.hpp`
    13f5391bbb45cd8aebc6ae70cad08aff632ebd55 Fix typos in `subprocess.hpp` (Hennadii Stepanov)
    
    Pull request description:
    
      Resolves one item in the https://github.com/bitcoin/bitcoin/pull/28981#pullrequestreview-1991272752:
      >    - Remove linter exclusions and fix all issues.
    
      Based on upstream https://github.com/arun11299/cpp-subprocess/pull/101.
    
    ACKs for top commit:
      fanquake:
        ACK 13f5391bbb45cd8aebc6ae70cad08aff632ebd55
    
    Tree-SHA512: 2ee27a5b7d1ba6f47a5148add155c918eadaaffb94a4b5dd3edea00e63440b87291c559361bf25a8db1567debff78cf7e9466dc34f14331ca1d426994837df93
    0de63b8b46
  240. Squashed 'src/minisketch/' changes from a571ba20f9..3472e2f5ec
    3472e2f5ec Merge sipa/minisketch#81: Avoid overflowing shift by special casing inverse of 1
    653d8b2e26 Avoid overflowing shift by special casing inverse of 1
    33b7c200b9 Merge sipa/minisketch#80: Add c++20 version of CountBits
    4a48f31a37 Merge sipa/minisketch#83: ci: Fix "s390x (big-endian)" task
    82b6488acb Add c++20 version of CountBits
    0498084d31 ci: Fix "s390x (big-endian)" task
    71709dca9e Merge sipa/minisketch#82: ci: Fix `x86_64-w64-mingw32` task
    9e6127fa98 Merge sipa/minisketch#74: Avoid >> above type width in BitWriter
    ed420bc170 ci: Fix `x86_64-w64-mingw32` task
    fe1040f227 Drop -Wno-shift-count-overflow compile flag
    154bcd43bd Avoid >> above type width in BitWriter
    67b87acdb6 Merge sipa/minisketch#78: ci: Update macOS image for CI
    7de7250416 ci: Update macOS image for CI
    83d812ea9f Merge sipa/minisketch#73: ci: Use correct variable to designate C++ compiler
    e051a7d690 ci: Install wine32 package for Windows tests
    2d2c695d78 build: Drop unused `CC` variable
    1810fcbd11 ci: Use correct variable to designate C++ compiler
    022b959049 Merge sipa/minisketch#77: Add missing include
    08443c4892 Add missing include
    
    git-subtree-dir: src/minisketch
    git-subtree-split: 3472e2f5ec75ace39ce9243af6b3fee233a67492
    1eea10a6d2
  241. Update minisketch subtree to latest master e58e1323a8
  242. build: remove minisketch clz check 4722b7c715
  243. ci: Bump s390x to ubuntu:24.04
    Re-enable feature_init
    fadf7e90dc
  244. ci: use clang-16 for Valgrind
    Switch to Ubuntu Noble.
    ad21f22948
  245. [rpc, bugfix] Enforce maximum value for setmocktime c2e0489b71
  246. Merge bitcoin/bitcoin#29823: minisketch: update subtree to 3472e2f5ec75ace39ce9243af6b3fee233a67492
    4722b7c7154e6130d4de66f7aed0fffe3c7c19a4 build: remove minisketch clz check (fanquake)
    1eea10a6d25fd8225560347cda2b1cfdc267910d Squashed 'src/minisketch/' changes from a571ba20f9..3472e2f5ec (fanquake)
    
    Pull request description:
    
      https://github.com/sipa/minisketch/pull/81 will fix #29799.
      Minor build cleanups after https://github.com/sipa/minisketch/pull/80.
    
    ACKs for top commit:
      dergoegge:
        utACK 4722b7c7154e6130d4de66f7aed0fffe3c7c19a4
      hebasto:
        ACK 4722b7c7154e6130d4de66f7aed0fffe3c7c19a4, I have verified the subtree update and reviewed the build system changes. Both look OK.
    
    Tree-SHA512: eabd82e5a13cc4f32155319df97368f2e8c93320a4265b6c372efcb1ea4e756f6693df7c02498c8ea989ccd376a20277fa110c66d0754cb9bca5e54d18e0a965
    d29fc3a245
  247. Merge bitcoin/bitcoin#29856: ci: Bump s390x to ubuntu:24.04
    fadf7e90dc10e212e59bb294209bab2e73c47800 ci: Bump s390x to ubuntu:24.04 (MarcoFalke)
    
    Pull request description:
    
      Now that most other CI tasks are rolled to 24.04, roll this one as well.
      Also, re-enable feature_init.
    
    ACKs for top commit:
      fanquake:
        ACK fadf7e90dc10e212e59bb294209bab2e73c47800 - finished running after ~5 hours.
    
    Tree-SHA512: d69f40227ba982eaaccc1e144ba05d3c8c4a096ac401077df3db5cf3276d1e146a438e4e0237dda876b3644fc7f0accd724a19e3c1cdb94c30c679899137280e
    3abee5eceb
  248. Merge bitcoin/bitcoin#28874: doc: fixup help output for -upnp and -natpmp
    92f88a962908c49dde99c03a4608e63e4a6eec71 doc: fixup NAT-PMP help doc (fanquake)
    02395edca9e99454388ae9b91ee174fbccc38021 init: remove redundant upnp #ifdef (fanquake)
    
    Pull request description:
    
      This is a very belated followup to #26896 (which removed the configure options for setting the upnp and natpmp runtime default) and corrects the `-help` docs for `-upnp` and `-natpmp`.
    
    ACKs for top commit:
      davidgumberg:
        ACK https://github.com/bitcoin/bitcoin/commit/92f88a962908c49dde99c03a4608e63e4a6eec71
      hernanmarino:
        ACK 92f88a962908c49dde99c03a4608e63e4a6eec71
    
    Tree-SHA512: 795dc8a8703bf322b5831d845de85f2428ee0dd45d3064b48ff47d147147381af26c0a9d00c596db12009b254763844b209989daf4e7470d20e8a1753b640966
    58446e1d92
  249. Merge bitcoin/bitcoin#29848: ci: use Clang 16 for Valgrind
    ad21f2294821d7c436e58a8f199fb555b11a56ad ci: use clang-16 for Valgrind (fanquake)
    
    Pull request description:
    
      Switch to Ubuntu Noble.
      Valgrind 3.19 -> 3.22
      Clang 14 -> Clang 16
    
    ACKs for top commit:
      maflcko:
        lgtm ACK ad21f2294821d7c436e58a8f199fb555b11a56ad
    
    Tree-SHA512: ec79ef9faaec97e34529ae36fff7798f859daca6a1e3563bc50e5d56a56ee4525c736976158a6e950c5b9f810c498d54ab128df984f42441e706033906c2ea3e
    22c86140f8
  250. Merge bitcoin/bitcoin#29699: test: check disconnection when sending sendaddrv2 after verack
    b4c9ace6ff36c54755e4b12f204212c1b938f509 test: check disconnection when sending sendaddrv2 after verack (brunoerg)
    
    Pull request description:
    
      This PR adds test coverage for:
      https://github.com/bitcoin/bitcoin/blob/71b63195b30b2fa0dff20ebb262ce7566dd5d673/src/net_processing.cpp#L3796-L3807
    
    ACKs for top commit:
      maflcko:
        lgtm ACK b4c9ace6ff36c54755e4b12f204212c1b938f509
      byaye:
        Tested ACK b4c9ace6ff36c54755e4b12f204212c1b938f509
    
    Tree-SHA512: 2ad49a269cb64794b8d626941cf532acafdbe6e97f3da5ccb52f3201a6773d2f5e3d7d62ce4289334b85d578790d4dd5833f6b8ba54bd49a8418a20aee0c3e5f
    df609a344e
  251. Merge bitcoin/bitcoin#29869: rpc, bugfix: Enforce maximum value for setmocktime
    c2e0489b7125cceaeef355fc274dd8988822fff4 [rpc, bugfix] Enforce maximum value for setmocktime (dergoegge)
    
    Pull request description:
    
      The maximum value for our mocktime must be representable in nanoseconds, otherwise we end up with negative values returned from `NodeClock::now()`.
    
      Found through fuzzing:
    
      ```
      $ echo "c2V0bW9ja3RpbWVcZTptYf9w/3NldG3///////////////9p////ZP///ymL//////89////Nv9L////////LXkBAABpAA==" | base64 --decode > rpc-8cab9148ab4418ebd1923c213e9d3fe9c9b49b39.crash
      $ FUZZ=rpc ./src/test/fuzz/fuzz rpc-8cab9148ab4418ebd1923c213e9d3fe9c9b49b39.crash
      fuzz_libfuzzer: util/time.cpp:28: static NodeClock::time_point NodeClock::now(): Assertion `ret > 0s' failed.
      ```
    
    ACKs for top commit:
      maflcko:
        re-ACK c2e0489b7125cceaeef355fc274dd8988822fff4
      brunoerg:
        crACK c2e0489b7125cceaeef355fc274dd8988822fff4
      glozow:
        ACK c2e0489b7125cceaeef355fc274dd8988822fff4
    
    Tree-SHA512: d7e237ca37bedd74a6b085fb6e726a142705371044c77488f593f35afe70aeca756fdba86920294b1d322c7a9b2cde9ce4e1b7d410a6ccc1fd7c6f3a6e77200a
    07720b1cdd
  252. DrahtBot commented at 2:08 pm on April 18, 2024: contributor

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

    Code Coverage

    For detailed information about the code coverage, see the test coverage report.

    Reviews

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

  253. DrahtBot added the label Backport on Apr 18, 2024
  254. fanquake closed this on Apr 18, 2024

  255. bitcoin locked this on Apr 18, 2024
  256. fanquake renamed this:
    modificaciรณn
    .
    on Apr 18, 2024

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