. #33708

pull mccoyadd wants to merge 243 commits into bitcoin:master from mccoyadd:29.x changing 213 files +8677 −11789
  1. mccoyadd commented at 4:30 am on October 26, 2025: none
  2. [build] bump CLIENT_VERSION_MAJOR to 29
    Github-Pull: #32041
    Rebased-From: a3f0e9a
    153bd443ec
  3. [build] bump version to 29.0rc1 95c21b1fdd
  4. [doc] update man pages for 29.0rc1 86a3ce6209
  5. [examples] generate example bitcoin.conf 21f423939e
  6. [doc] release notes link for 29.0 47e2fa86dc
  7. Merge bitcoin/bitcoin#32046: [29.x] bump to v29.0rc1
    47e2fa86dc5433852fd9e5050a23de2accfdca8d [doc] release notes link for 29.0 (glozow)
    21f423939e521aa61b96689b9f8ee61c59abf5eb [examples] generate example bitcoin.conf (glozow)
    86a3ce62096b2faefd01366a6f300fff6f8b9c0b [doc] update man pages for 29.0rc1 (glozow)
    95c21b1fdd14f89d762b46b0162bd2fcca1e5a93 [build] bump version to 29.0rc1 (glozow)
    153bd443ecf1bfabf3a78eb82fbbc901137c4ba0 [build] bump CLIENT_VERSION_MAJOR to 29 (glozow)
    
    Pull request description:
    
      - "backport" #32041
      - bump version to v29.0rc1
      - generate manpages
      - add example bitcoin.conf
      - add release-notes.md pointing to wiki
    
    ACKs for top commit:
      achow101:
        ACK 47e2fa86dc5433852fd9e5050a23de2accfdca8
      davidgumberg:
        ACK https://github.com/bitcoin/bitcoin/commit/47e2fa86dc5433852fd9e5050a23de2accfdca8d
      hebasto:
        ACK 47e2fa86dc5433852fd9e5050a23de2accfdca8d.
    
    Tree-SHA512: 4e4eec31ab12990d933b6313950e779b7b58fc349f294f59d2504a8db3c28d5dea64b79e588e2c0fe62836db306fb4c3fb3fcd7bd1f51350e880370cec3437d6
    e9e6825b8c
  8. contrib: Fix `gen-bitcoin-conf.sh`.
    In #31118, the format of bitcoind's `--help` output changed slightly in
    a way that breaks `gen-bitcoin-conf.sh`, modify the script to accomodate
    the new format, by starting after the line that says "Options:" and
    strip the `-help` option and its description from the output.
    
    Github-Pull: #32049
    Rebased-From: a24419f8bed5e1145ce171dbbdad957750585471
    80c5d57bd1
  9. fuzz: Always restrict base conversion input lengths
    They seem to cause timeouts:
    > Issue 397734700: bitcoin-core:base58check_encode_decode: Timeout in base58check_encode_decode
    
    The `encoded_string.empty()` check was corrected here to `decoded.empty()` to make sure the `(0, decoded.size() - 1)` range is always valid.
    
    Github-Pull: #31917
    Rebased-From: bad1433ef2b5b02ac4b1c6c1d9482c513e5b2192
    
    Co-authored-by: maflcko <6399679+maflcko@users.noreply.github.com>
    Co-authored-by: marcofleon <marleo23@proton.me>
    Co-authored-by: Martin Zumsande <mzumsande@gmail.com>
    15ecae31a8
  10. fuzz: make sure DecodeBase58(Check) is called with valid values more often
    In Base58 fuzz the two roundtrips are merged now, the new `decode_input` switches between a completely random input and a valid encoded one, to make sure the decoding passes more often.
    The `max_ret_len` can also exceed the original length now and is being validated more thoroughly.
    
    Github-Pull: #31917
    Rebased-From: d5537c18a9034647ba4c9ed4008abd7fee33989e
    
    Co-authored-by: maflcko <6399679+maflcko@users.noreply.github.com>
    Co-authored-by: marcofleon <marleo23@proton.me>
    458655bca8
  11. test: fix intermittent failure in p2p_orphan_handling.py
    If we bump the mocktime before the node has successfully disconnected
    the peer, the requests for both parents could be spread over
    two GETDATAS, which would make the test fail.
    
    Github-Pull: #32063
    Rebased-From: 02942056fd861581503a8a35a06dcf22d4ba1473
    5ebcb59fdb
  12. build: Remove manpages when making MacOS app
    Github-Pull: #32064
    Rebased-From: 80b5e7f2cb7fbfbd724e1f52b00c0e72b79a200b
    7ff0b02161
  13. build: use make < 3.82 syntax for define directive
    From the GNU make 3.82 release announcement:
    
    * The 'define' make directive now allows a variable assignment operator
      after the variable name, to allow for simple, conditional, or appending
      multi-line variable assignment.
    
    macOS ships with 3.81. This caused the multiprocess config options
    to be ignored.
    
    Fixes #32068
    
    Github-Pull: #32070
    Rebased-From: 9157d9e449870851ef455e077249ac46fc2df24c
    
    Co-authored-by: Ryan Ofsky <ryan@ofsky.org>
    4e438d326e
  14. qt: doc: adapt outdated binary paths to CMake changes
    Github-Pull: bitcoin-core/gui#858
    Rebased-From: 7ebc458a8cb994bc3c0c129da61353968d955bc2
    a4c30bd00a
  15. [build] bump to 29.0rc2 472d582bfe
  16. [doc] update man pages for 29.0rc2 8082f88d1a
  17. [doc] update example bitcoin.conf with missing options 74df31cb0b
  18. Merge bitcoin/bitcoin#32062: [29.x] backports and rc2
    74df31cb0bdef9cce31ae62ed71a1e386cba0274 [doc] update example bitcoin.conf with missing options (glozow)
    8082f88d1a434b3ba1018c6592affe759d53df48 [doc] update man pages for 29.0rc2 (glozow)
    472d582bfec4dcdecb5f4d9bbbe41ea7961ca62b [build] bump to 29.0rc2 (glozow)
    a4c30bd00a0ec977a1518416cdf7f0a24868a9f2 qt: doc: adapt outdated binary paths to CMake changes (Sebastian Falbesoner)
    4e438d326ea55ac0f98f89e41e69b56354e801e7 build: use make < 3.82 syntax for define directive (Sjors Provoost)
    7ff0b02161a1687b8bee6af0ff93ec65bbfc6cf2 build: Remove manpages when making MacOS app (Ava Chow)
    5ebcb59fdb1270edac6b878d7bd97dd1f077aa06 test: fix intermittent failure in p2p_orphan_handling.py (Martin Zumsande)
    458655bca8eddd4d913958c579a46a6fca23cbf6 fuzz: make sure DecodeBase58(Check) is called with valid values more often (Lőrinc)
    15ecae31a83ea66985496d2b8f2017cbd7749c26 fuzz: Always restrict base conversion input lengths (Lőrinc)
    80c5d57bd118b1812c21604224dd316214af879c contrib: Fix `gen-bitcoin-conf.sh`. (David Gumberg)
    
    Pull request description:
    
      backports:
      - #32049
      - #32063
      - #32064
      - #32070
      - #31917
    
    ACKs for top commit:
      Sjors:
        ACK 74df31cb0bdef9cce31ae62ed71a1e386cba0274
      hebasto:
        ACK 74df31cb0bdef9cce31ae62ed71a1e386cba0274, I have reviewed the code and it looks OK.
      ismaelsadeeq:
        Code review ACK 74df31cb0bdef9cce31ae62ed71a1e386cba0274
    
    Tree-SHA512: df4ef832a03c9c3f89d30d3f65d81b7c7e4793d2cad8a269f1ff221454a4b0b05e06109f4556926c1c4f7fcbd2537052b4d58b4b3911dfcfc35726c600b587d9
    d6db87165c
  19. test: avoid disk space warning for non-regtest
    feature_config_args.py incorrectly assumed that its testnet4 node
    would not log a disk space warning.
    
    0683b8ebf33386d5c05140df89df10b1853d7c7e increased m_assumed_blockchain_size
    on testnet4 from 1 to 11 GiB which triggers this bug on more
    systems, e.g. a RAM disk.
    
    Prevent the warning by setting -prune for these nodes.
    
    Fix the same issue in feature_signet.py
    
    Github-Pull: #32057
    Rebased-From: 20fe41e9e83d510fd467f5a999d55a614b16ef89
    a3060483fa
  20. fuzz: Fix off-by-one in package_rbf target
    Github-Pull: #32122
    Rebased-From: fa5674c264d91eb3a99fa74ace8a1b6be113c0a8
    288163ea0f
  21. fuzz: extract unsequenced operations with side-effects
    https://github.com/bitcoin/bitcoin/pull/30746#discussion_r1817851827 introduced an unsequenced operations with side-effects - which is undefined behavior, i.e. the right hand side can be evaluated before the left hand side, which happens to mutate it.
    
    Tried:
    ```
    clang++ --analyze -std=c++20 -I./src -I./src/test -I./src/test/fuzz src/test/fuzz/base_encode_decode.cpp src/psbt.cpp
    ```
    but it didn't warn about UB.
    
    Grepped for similar ones, but could find any other one in the codebase:
    > grep -rnE --include='*.cpp' --include='*.h' '\b(\w+)\(([^)]*\b(\w+)\b[^)]*)\)\s*==\s*\3\.' .
    ```
    ./src/test/arith_uint256_tests.cpp:373:    BOOST_CHECK(R1L.GetHex() == R1L.ToString());
    ./src/test/arith_uint256_tests.cpp:374:    BOOST_CHECK(R2L.GetHex() == R2L.ToString());
    ./src/test/arith_uint256_tests.cpp:375:    BOOST_CHECK(OneL.GetHex() == OneL.ToString());
    ./src/test/arith_uint256_tests.cpp:376:    BOOST_CHECK(MaxL.GetHex() == MaxL.ToString());
    ./src/test/fuzz/cluster_linearize.cpp:565:        assert(depgraph.FeeRate(best_anc.transactions) == best_anc.feerate);
    ./src/test/fuzz/cluster_linearize.cpp:646:        assert(depgraph.FeeRate(found.transactions) == found.feerate);
    ./src/test/fuzz/cluster_linearize.cpp:765:            assert(depgraph.FeeRate(chunk_info.transactions) == chunk_info.feerate);
    ./src/test/fuzz/base_encode_decode.cpp:95:    assert(DecodeBase64PSBT(psbt, random_string, error) == error.empty());
    ./src/test/fuzz/key.cpp:102:        assert(pubkey.data() == pubkey.begin());
    ./src/test/skiplist_tests.cpp:42:        BOOST_CHECK(vIndex[from].GetAncestor(0) == vIndex.data());
    ./src/script/signingprovider.cpp:535:                   ComputeTapbranchHash(node.sub[1]->hash, node.sub[1]->hash) == node.hash) {
    ./src/pubkey.h:78:      return vch.size() > 0 && GetLen(vch[0]) == vch.size();
    ./src/cluster_linearize.h:881:            Assume(elem.inc.feerate.IsEmpty() == elem.pot_feerate.IsEmpty());
    ```
    
    Hodlinator deduced the UB on Windows in https://github.com/bitcoin/bitcoin/issues/32135#issuecomment-2751723855
    
    Github-Pull: #32141
    Rebased-From: b1de59e8965354fff5a149bc0fe61ed0704aea7a
    
    Co-authored-by: Hodlinator <172445034+hodlinator@users.noreply.github.com>
    7bc7af9951
  22. cmake: Add `NO_CACHE_IF_FAILED` option for checking linker flags
    Use it for checking `-fsanitize`.
    
    This change improves the user experience when the configuration step
    fails due to a missing library. Now, there is no need to manually clean
    the CMake cache after installing the required library.
    
    Github-Pull: #32027
    Rebased-From: 52ac17757eed5056d03a6861bcc24ee864c17385
    477345207b
  23. depends: set CMAKE_*_COMPILER_TARGET in toolchain
    According to the CMake docs, this is the correct way to setup a
    toolchain file for cross-compilation using Clang. See
    https://cmake.org/cmake/help/latest/manual/cmake-toolchains.7.html#cross-compiling-using-clang
    
    Internally it looks like CMake will only take this variable into account
    if it detects the compiler to be Clang, so this shouldn't effect other
    builds, but in the case of our Apple cross builds, we'd end up with a
    duplicated `--target=arm64-apple-darwin` on the compiler line, given we
    are already setting `--target` for Darwin builds.
    
    Would fix #31748.
    
    Github-Pull: #31849
    Rebased-From: 963355037fe78eb4fbdda8631ac05a7b07fcec8c
    c0756b758f
  24. [build] bump to 29.0rc3 7c05ef5673
  25. [doc] update man pages for 29.0rc3 f80ab9a5d8
  26. Merge bitcoin/bitcoin#32136: [29.x] backports and 29.0rc3
    f80ab9a5d8cd5418655fe1a6f01c77926e2cc2e5 [doc] update man pages for 29.0rc3 (glozow)
    7c05ef567328031641b7197b30508d0989bd15a7 [build] bump to 29.0rc3 (glozow)
    c0756b758fc1a458f18ccfb01127769ed39d744e depends: set CMAKE_*_COMPILER_TARGET in toolchain (fanquake)
    477345207b895038a07d8ecb472d3c95b033dcc1 cmake: Add `NO_CACHE_IF_FAILED` option for checking linker flags (Hennadii Stepanov)
    7bc7af995102c6b360f61a389060e712de79f4ad fuzz: extract unsequenced operations with side-effects (Lőrinc)
    288163ea0fe1a69d8dabbc5b3d2877cc8f9b1c43 fuzz: Fix off-by-one in package_rbf target (MarcoFalke)
    a3060483fa2ecc4696d1214dfe6030195c572df0 test: avoid disk space warning for non-regtest (Sjors Provoost)
    
    Pull request description:
    
      Backports + final changes for 29.0rc3.
    
      Backports:
      - #32057
      - #32122
      - #32141
      - #32027
      - #31849
    
    ACKs for top commit:
      hebasto:
        ACK f80ab9a5d8cd5418655fe1a6f01c77926e2cc2e5, I've verified back-ports locally and reviewed release related changes.
      fanquake:
        ACK f80ab9a5d8cd5418655fe1a6f01c77926e2cc2e5
    
    Tree-SHA512: 15c882eac98825c41859859af1621e63a5b9d98f3b492c451c14f2d2232220dfa8d1ef933adae773918e188c6ade085f254f2853ff078bf1f99b8cd77facb182
    1344d3bd0f
  27. [doc] copy over Release Notes draft from wiki 50108104d7
  28. [build] bump to 29.0 final 190e718e83
  29. [doc] update man pages for 29.0 977db54233
  30. Merge bitcoin/bitcoin#32241: [29.x] 29.0 final changes
    977db54233ef06f70cf9723b46fbcd1936c95be0 [doc] update man pages for 29.0 (glozow)
    190e718e8382dda25891e709588111dc54e18be0 [build] bump to 29.0 final (glozow)
    50108104d7c5800ce5be7c8accda835aa88c92b9 [doc] copy over Release Notes draft from wiki (glozow)
    
    Pull request description:
    
      There weren't any reports from rc2 and rc3 binaries have been up since April 2 (1 week ago).
    
    ACKs for top commit:
      hebasto:
        ACK 977db54233ef06f70cf9723b46fbcd1936c95be0.
      janb84:
        ACK [977db54](https://github.com/bitcoin/bitcoin/commit/977db54233ef06f70cf9723b46fbcd1936c95be0)
      laanwj:
        ACK 977db54233ef06f70cf9723b46fbcd1936c95be0
    
    Tree-SHA512: f0dee957c56a7b24cc361b0450efeaaad5ead6401ba649f8af6cf5cb464fea4357e1eaedaaa80accdeb18d47321a604979c43be57e14aa3ae5603d083e7df250
    56ed476a29
  31. doc: minor rel notes changes
    Remove two unused headers.
    Remove the empty-template, as point releases will modify release-notes.md.
    87e53781f7
  32. Merge bitcoin/bitcoin#32252: [29.x] doc: minor rel notes changes
    87e53781f7d54d0582b9d14bc458ee474a5e5c80 doc: minor rel notes changes (fanquake)
    
    Pull request description:
    
      Remove two unused headers.
      Remove the empty-template, as point releases will modify `release-notes.md`.
    
    ACKs for top commit:
      jonatack:
        LGTM ACK 87e53781f7d54d0582b9d14bc458ee474a5e5c80
      janb84:
        ACK [87e5378](https://github.com/bitcoin/bitcoin/pull/32252/commits/87e53781f7d54d0582b9d14bc458ee474a5e5c80)
    
    Tree-SHA512: 69ff0d7863c1598ab2b4daf2a7f9ca3edae513a7d5ebb85aa1b468150cfd17da2f503ac0a41dc77fe04c3670cb7d58df46b00837d08aad624f024756f575fca1
    f490f5562d
  33. qt: 29.1 translations update fc60337733
  34. Merge bitcoin/bitcoin#32352: [29.x] qt: 29.1 translations update
    fc60337733a9dffaa42e08fcbff0ab24b5f679a4 qt: 29.1 translations update (Hennadii Stepanov)
    
    Pull request description:
    
      This PR fetches the recent translation updates from Transifex.
    
      Closes https://github.com/bitcoin/bitcoin/issues/32295.
    
      **Notes for reviewers:**
    
      1. "fr_CM" and "fr_LU" have been dropped as part of [phasing out of territory-specific translations](https://app.transifex.com/bitcoin/communication/d:402657d1-6254-4ce9-8d26-e7827652c627/?q=project%3Abitcoin).
    
      2. The translations for the following languages, which appear to be the result of a mistake or an act of vandalism, have been discarded (also see https://github.com/bitcoin/bitcoin/pull/32004):
          - Czech (cs)
          - Danish (da)
          - Dutch (nl)
          - Vietnamese (vi)
    
      3. Update for Silesian (szl) has been discarded as malicious.
    
    ACKs for top commit:
      laanwj:
        ACK fc60337733a9dffaa42e08fcbff0ab24b5f679a4
    
    Tree-SHA512: 0003a3ec67553f046ac8f98f61fd799cdcdac731f417e936af6782f8559270cc4f4fa40ffd8de5b40d7988d674dbac7eab73879aec974433bdf61a7790efd2a4
    3fad438b83
  35. Remove support for RNDR/RNDRRS for aarch64 on Linux
    This hardware feature is
    
    - rarely supported on SoCs (and broken on like half of the chips that support it in the first place) (#31817)
    - apparently not compiled into the release binary (https://github.com/bitcoin/bitcoin/issues/31817#issuecomment-2795885962)
    - hard to test in CI, due to unavailable of hardware
    
    Better to remove it.
    
    This reverts commit aee5404e02e203a256c1a97b629b9b107cc8bb07.
    
    Closes #31817.
    
    Github-Pull: #32248
    Rebased-From: 7749d929a0d9dfe71541a22e557ea41e01df28ce
    ca70d5cb25
  36. test: Handle empty string returned by CLI as None in RPC tests
    Github-Pull: #32286
    Rebased-From: a4041c77f0e20d004524868e70ff12508832c9eb
    85f3e1de68
  37. ci: Add workaround for vcpkg's libevent package
    This change is necessary for Windows GHA images, which provide
    CMake >= 4.0.
    
    Github-Pull: #32184
    Rebased-From: ef00a28414daed2dd026b458082ed03fe9508074
    64552c83b2
  38. refactor: Remove spurious virtual from final ~CZMQNotificationInterface
    Github-Pull: #32187
    Rebased-From: fa69c42fdf0aeec0546e951bc6132ab630edb9d4
    3dbd2b3d17
  39. test: Add imports for util bpf_cflags
    This is required for the next commit.
    
    Github-Pull: #32336
    Rebased-From: fa0c1baaf89805182de56d6a2e8eed2265a94b40
    4ed5c34abb
  40. scripted-diff: Use bpf_cflags
    -BEGIN VERIFY SCRIPT-
    
     ren() { sed --regexp-extended -i "s/$1/$2/g" $( git grep --extended-regexp -l "$1" ) ; }
    
     ren 'cflags=\["-Wno-error=implicit-function-declaration"\]' 'cflags=bpf_cflags()'
    
    -END VERIFY SCRIPT-
    
    Github-Pull: #32336
    Rebased-From: facb9b327b9da39ce1e09ed56199be9efb19b5b8
    3665310808
  41. gui: crash fix, disconnect numBlocksChanged() signal during shutdown
    The crash stems from the order of the shutdown procedure:
    We first unset the client model, then destroy the wallet controller—but we leave
    the internal wallet models ('m_wallets') untouched for a brief period. As a result,
    there’s a point in time where views still have connected signals and access to
    wallet models that are not connected to any wallet controller.
    Now.. since the clientModel is only replaced with nullptr locally and not destroyed
    yet, signals like numBlocksChanged can still emit. Thus, when wallet views receive
    them, they see a non-null wallet model ptr, and proceed to call backend functions
    from a model that is being torn down.
    
    As the shutdown procedure begins by unsetting clientModel from all views. It’s safe
    to ignore events when clientModel is nullptr.
    
    Github-Pull: gui#864
    Rebased-From: 71656bdfaa6bfe08ce9651246a3ef606f923351b
    5aa4956cd3
  42. qt: Replace stray tfm::format to cerr with qWarning
    GUI warnings should go to the log, not to the console (which may not be
    connected at all).
    
    Github-Pull: gui#868
    Rebased-From: edd46566bd66cea7d7f4116429fe1c11d2187ba2
    f4d9546425
  43. doc: Fix fuzz test_runner.py path
    This commit fixes the path listed in the documentation for the fuzz
    testing test_runner.py. Previously the --help option worked but running
    fuzz tests from the documented path did not.
    
    Github-Pull: #32353
    Rebased-From: 61f238e84ac6d24d8f420c2eabcbb2980d7fcb1e
    2f6c802b54
  44. doc: Fix test_bitcoin path
    This commit fixes a couple command paths for interacting with the
    test_bitcoin binary within the Unit Test documentation.
    
    Github-Pull: #32389
    Rebased-From: 6cbc28b8dd629062950f195facc009fd8ba86310
    6ed087dede
  45. cmake: Respect user-provided configuration-specific flags
    Github-Pull: #32356
    Rebased-From: edde96376a2961dec3730331b3d171ddf972589f
    f9d2c67a0c
  46. tracing: fix invalid argument in mempool_monitor
    The mempool_monitor tracing tool is incorrectly reading the reason
    as the first argument. Fix this!
    
    Github-Pull: #32454
    Rebased-From: 31c5ebc4007884b655f2f90ca09e36e0b9ada4da
    fabf4ff237
  47. crypto: disable ASan for sha256_sse4 with Clang
    This can alsofail to compile when optimisations are being used, see:
    https://github.com/bitcoin/bitcoin/issues/31913.
    So disable just ASan for this function under any optimisation level.
    
    Github-Pull: #32437
    Rebased-From: 4e8ab5e00fa72016a7ec0e0505ca025d4e59e4d8
    caec3cc41b
  48. cmake: Allow `WITH_DBUS` on all Unix-like systems
    This change makes the `WITH_DBUS` option available on all Unix-like
    systems, not just Linux, thereby fixing a regression that was
    overlooked during the migration from Autotools.
    
    Note: Enabling D-Bus support on macOS still makes no sense, since the
    `Notificator` class uses the User Notification Center regardless.
    
    Github-Pull: #32469
    Rebased-From: 5b7ed460c7c181f1fd34a927a09aed36284083cb
    cc2fcdfc5e
  49. test: Fix nTimes typo in feature_pruning test
    Fix incorrect variable name in comment (nTimes -> nTime) in
    feature_pruning.py. This typo caused the test to always reset
    mine_large_blocks.nTime to 0, rather than only on the first run
    as intended.
    
    Github-Pull: #32312
    Rebased-From: 772ba7f9ce09e836a51636524a8a96a23946d658
    edd4073d70
  50. test: Use uninvolved pruned node in feature_pruning undo test
    After fixing the nTime variable name, the test_pruneheight_undo_presence
    test began failing because node 2, which is involved in reorg testing,
    could be on a different chain than other nodes. This caused failures
    when trying to fetch blocks from other nodes that didn't recognize
    node 2's chain.
    
    Switch to using node 5 instead, which is also a pruned node but isn't
    involved in reorg testing, ensuring it stays on the same chain as the
    other nodes. This allows the block fetching to work as intended in the
    test.
    
    Github-Pull: #32312
    Rebased-From: 2aa63d511affdcc9980b58fc4ff18b8ad10b0f8c
    6c4e3de2ac
  51. test: Fix intermittent failure in wallet_basic.py
    There could be a race with outstanding TxAddedToMempool notifications
    being applied to the soon-to-be created wallet.
    
    Fixes an intermittent timeout reproducable by adding a sleep to
    AddToWallet.
    
    Github-Pull: #32483
    Rebased-From: 07350e204dedfba20da461d9cdcd469dc95e01c3
    c966158426
  52. test: fix another intermittent failure in wallet_basic.py
    During init, the test framework will start using rpc after the
    mempool was loaded. It will not wait for postInitProcess or
    outstanding transactionAddedToMempool notifications, leading to
    a possible race, in which listunspent is being called while the
    tx is still in Inactive status. Prevent this by processing
    outstanding notifications.
    
    Github-Pull: #32483
    Rebased-From: e7ad86e1ca3b0b2f2795e91c2f9959486c67dd90
    cf034172bf
  53. walletdb: Log the wallet version after it has been read from disk
    Logging the wallet version before anything has been read from disk results
    in the wrong version being logged.
    
    Also split the last client version logging as it may not always be
    present to be logged.
    
    Github-Pull: #32553
    Rebased-From: 359ecd3704993422eb53e3da2a7d0bea2f575ab0
    25aa15ee7f
  54. test: Check that the correct versions are logged on wallet load
    Github-Pull: #32553
    Rebased-From: 39a483c8e9dcfe8ec243fa72269e1df9e75059ab
    e685b4eca2
  55. test: check that creating a wallet does not log version info
    Github-Pull: #32553
    Rebased-From: 4b2cd0b41ff4800c8801f2c44883eaec60a035fa
    6c0f26d3bd
  56. doc: update release notes for 29.x a0d1f69b55
  57. Merge bitcoin/bitcoin#32292: [29.x] Backports
    a0d1f69b555fa0c76df1a63a0b127c7816596107 doc: update release notes for 29.x (fanquake)
    6c0f26d3bd8010391761feada93ae902b6b27221 test: check that creating a wallet does not log version info (Ava Chow)
    e685b4eca250a47e933c8447a2efe10cd14d2f2b test: Check that the correct versions are logged on wallet load (Ava Chow)
    25aa15ee7fc6d8f941fff7be5b3abed09a2ce12a walletdb: Log the wallet version after it has been read from disk (Ava Chow)
    cf034172bf1fe7cc789c130f35ad470f0509d6d2 test: fix another intermittent failure in wallet_basic.py (Martin Zumsande)
    c9661584261b89d75d4d0869c69ef84cf51054ff test: Fix intermittent failure in wallet_basic.py (Martin Zumsande)
    6c4e3de2acb7e96ce81ca691a4dac3d5d594c4bc test: Use uninvolved pruned node in feature_pruning undo test (enoch)
    edd4073d70642b42cea9a9e5a2c6d34f413cf7d8 test: Fix nTimes typo in feature_pruning test (enoch)
    cc2fcdfc5e0649c2e7c16c0ec2df7a40e8a3c454 cmake: Allow `WITH_DBUS` on all Unix-like systems (Hennadii Stepanov)
    caec3cc41bf3cb265800624efff14241d297f36b crypto: disable ASan for sha256_sse4 with Clang (fanquake)
    fabf4ff237ff99d5e77163fdfbac6cd425dd7fc7 tracing: fix invalid argument in mempool_monitor (William Casarin)
    f9d2c67a0c78192ce365e6e4065bb5e9198d771c cmake: Respect user-provided configuration-specific flags (Hennadii Stepanov)
    6ed087dede0839cac4e4528a746f573aecd5f5f2 doc: Fix test_bitcoin path (monlovesmango)
    2f6c802b549c72393fdaff44d2fd4cb501f97926 doc: Fix fuzz test_runner.py path (monlovesmango)
    f4d9546425ec38d78ef128a5bc7580d816b707ce qt: Replace stray tfm::format to cerr with qWarning (laanwj)
    5aa4956cd3ad42e6e511625fc548f55bf95a6575 gui: crash fix, disconnect numBlocksChanged() signal during shutdown (furszy)
    3665310808f58073c3cd72a5f99f19b22adccdf0 scripted-diff: Use bpf_cflags (MarcoFalke)
    4ed5c34abb242494dff36409f5eef68272827a03 test: Add imports for util bpf_cflags (MarcoFalke)
    3dbd2b3d178176eb410270afb7d4a7db11ff08ae refactor: Remove spurious virtual from final ~CZMQNotificationInterface (MarcoFalke)
    64552c83b2b1e2d4da561d06900a70144ebfb054 ci: Add workaround for vcpkg's libevent package (Hennadii Stepanov)
    85f3e1de68e845937ebc3568e26c12fc6a027a18 test: Handle empty string returned by CLI as None in RPC tests (Brandon Odiwuor)
    ca70d5cb2592d5227eab8b18288f060ed6305a99 Remove support for RNDR/RNDRRS for aarch64 on Linux (laanwj)
    
    Pull request description:
    
      Backports for `29.x`:
    
      - #32184
      - #32187
      - #32248
      - #32286
      - #32312
      - #32336
      - #32353
      - #32356
      - #32389
      - #32437
      - #32454
      - #32469
      - #32483
      - #32553
      - https://github.com/bitcoin-core/gui/pull/864
      - https://github.com/bitcoin-core/gui/pull/868
    
    ACKs for top commit:
      willcl-ark:
        crACK a0d1f69b555fa0c76df1a63a0b127c7816596107
    
    Tree-SHA512: 72aafd17348aa4b602661efd07d48c6af6637c7349e7b032a65f46364e50094723d1c80dced71f0d5ddec59d6dafb72f0463944413a4d810a35cdca6b8272780
    589b56192f
  58. cmake: Add missed `SSE41_CXXFLAGS`
    Github-Pull: #32551
    Rebased-From: 800b7cc42ca63f2a6b245a4d327c7092289da6e1
    142153ee42
  59. guix: accomodate migration to codeberg
    See https://guix.gnu.org/blog/2025/migrating-to-codeberg/.
    
    When interacting with the old repo you may now also see:
    ```bash
    warning: redirecting to https://codeberg.org/guix/guix/
    ```
    
    Github-Pull: #32439
    Rebased-From: c8d9baae942c94d64ce47ae8f67d3710e6a296bd
    e34b6fbcad
  60. doc: Add missing top-level description to pruneblockchain RPC
    Previously, the `pruneblockchain` RPC help output included only the method signature and arguments, with no top-level description explaining its purpose or constraints.
    
    This PR adds a concise top-level description, improving documentation consistency and alerting users to the potential impacts of using the command.
    
    Github-Pull: #32333
    Rebased-From: 135a0f0aa711b95c50aa4cbe0c38d82d647f1c8b
    17b31fc802
  61. test: fix sync function in rpc_psbt.py
    It currently only syncs between the first two nodes,
    which may do nothing when the block is created on the
    third node.
    
    Github-Pull: #32630
    Rebased-From: 4df4df45d7bc2e8be99325d40cda936aab87c083
    646fa1d028
  62. depends: use "mkdir -p" when installing xproto
    It looks like the mkdir detection in xproto is broken on Alpine. Ensure
    we always use `mkdir -p`.
    
    Fixes #32494.
    
    Github-Pull: #32568
    Rebased-From: df9ebbf659d5d1282289f36d7f9ee7103aa33a17
    4a1143b083
  63. doc: update tor docs to use bitcoind binary from path
    Github-Pull: #32679
    Rebased-From: 4ce53495e5e18370b7935551b3b8700faa720a33
    247ee59f55
  64. rpc: Note in fundrawtransaction doc, fee rate is for package
    Github-Pull: #32607
    Rebased-From: f98e1aaf34e347088caa54403521e3b5cb55dd40
    c899334e36
  65. rpc, doc: update `listdescriptors` RCP help
    This RPC lists all the descriptors present in the wallet, not only
    the ones that were imported, but also the ones generated when a
    new wallet is created.
    
    It can be verified by creating a new wallet and calling the
    `listdescriptors` RPC, which will contain 8 ranged descriptors that
    are created for every new wallet.
    
    Github-Pull: #32708
    Rebased-From: b44514b876333a94ae242da8b1e4cee439c2d37e
    78688c8413
  66. doc: add missing packages for BSDs (cmake, gmake, curl) to depends/README.md
    Github-Pull: #32711
    Rebased-From: 89526deddf87904619b26319e8d149cf97466868
    876a7b2db5
  67. guix: warn and abort when SOURCE_DATE_EPOCH is set
    Current behaviour will by-default use SOURCE_DATE_EPOCH from the
    environment without warning. This breaks the default reproducibility
    from a guix build.
    
    Warn when and exit when this variable is set, and
    FORCE_SOURCE_DATE_EPOCH is unset.
    
    Github-Pull: #32678
    Rebased-From: 5c4a0f8009cef758be9412428515bfed57b0c923
    23e76ef520
  68. doc: make `-DWITH_ZMQ=ON` explicit on `build-unix.md`
    Github-Pull: #32696
    Rebased-From: 32d4e92b9ac81858d754487bfec2fef6bed13a57
    aea8a394b1
  69. depends: fix SHA256SUM command on OpenBSD (use GNU mode output)
    On OpenBSD, the `sha256` command by default outputs hashsums on files in
    "BSD" mode, looking like this:
    
    $ sha256 ~/.vimrc
    SHA256 (/home/thestack/.vimrc) = 6ba69d100e8c5ca0488ded6293d4e5f740a6a5d5ace96cbcf0599c18d27389e4
    
    This is not compatible with our depends commands, which expect the
    hashes to be on the first column (to be extracted via `cut -d" " -f1`).
    Fix this by switching to GNU mode output, looking like this:
    
    $ sha256 -r ~/.vimrc
    6ba69d100e8c5ca0488ded6293d4e5f740a6a5d5ace96cbcf0599c18d27389e4 /home/thestack/.vimrc
    
    Without this change, the multiprocess depends build fails with the following output:
    
    $ gmake -C depends MULTIPROCESS=1 NO_BOOST=1 NO_LIBEVENT=1 NO_QT=1 NO_QR=1 NO_WALLET=1 NO_ZMQ=1 NO_USDT=1
    [ ..... ]
    Extracting native_libmultiprocess...
    sha256: /home/thestack/bitcoin/depends/work/build/x86_64-unknown-openbsd7.7/native_libmultiprocess/-2bc902f4693/.src-ipc-libmultiprocess.tar.hash: no properly formatted checksum lines found
    gmake: *** [funcs.mk:342: /home/thestack/bitcoin/depends/work/build/x86_64-unknown-openbsd7.7/native_libmultiprocess/-2bc902f4693/.stamp_extracted] Error 1
    
    Github-Pull: #32690
    Rebased-From: 8713e8060d504f561fed705b4aa5af7b96c36e75
    1b51d750ad
  70. doc, windows: CompanyName "Bitcoin" => "Bitcoin Core project"
    Matches /share/setup.nsi.in:14
    
    Github-Pull: #32719
    Rebased-From: 239fc4d62e73511b3ef5117706d4c5131a921955
    27c533052c
  71. build: patch cmake min version on freetype
    Patch cmake_minimum_required version for freetype, using the version from
    https://gitlab.freedesktop.org/freetype/freetype/-/merge_requests/352/diffs
    
    This fixes a failure when building with CMake 4, where compatibility
    with CMake versions < 3.5 has been removed (see https://cmake.org/cmake/help/latest/release/4.0.html#deprecated-and-removed-features)
    
    Github-Pull: #32693
    Rebased-From: d7c37906e7b1dc1513439056d0cdb2bd341d00f1
    7264459c0d
  72. wallet: fix crash on double block disconnection
    The wallet crashes if it processes the same block disconnection event twice in a row due
    to an incompatible coinbase transaction state.
    This happens because 'disconnectBlock' provides 'TxStateInactive' without the "abandoned"
    flag for coinbase transactions to 'SyncTransaction', while 'AddToWallet()' internally
    modifies it to retain the abandoned state.
    
    The flow is as follows:
    1) On the first disconnection, the transaction state transitions from "confirmed" to
    "inactive," bypassing the state equality check since the provided state differs. Then,
    'AddToWallet' internally updates the state to "inactive + abandoned"
    
    2) On the second disconnection, as we provide only the "inactive" state
    to 'SyncTransaction()', the state equality assertion fails and crashes the wallet.
    
    Github-Pull: #31757
    Rebased-From: 9ef429b6ae65f6ad3e9ac11c2d9c0a6c52beb865
    a18085a18b
  73. test: wallet, coverage for crash on dup block disconnection during unclean shutdown
    Co-authored-by: furszy <matiasfurszyfer@protonmail.com>
    
    Github-Pull: #31757
    Rebased-From: 11f8ab140fe63857f6a93b81021efda8f90ceeda
    8246c6a65f
  74. depends: capnp 1.2.0
    Github-Pull: #32760
    Rebased-From: c7eaac326ac20a745d1bc6dbc6bc48c1b5eb46f8
    ef6111bd18
  75. doc: taproot became always active in v24.0
    Github-Pull: #32776
    Rebased-From: 8ee8a951c205c5365f7557253b8fffc12e6e670c
    616baf3c27
  76. doc: fix transifex 404s
    Github-Pull: #32777
    Rebased-From: 53a996f122663e271efa52c45b173613b8ac635e
    3e23b47a6f
  77. test: Fix list index out of range error in feature_bip68_sequence.py
    Github-Pull: #32765
    Rebased-From: e285e691b7a311e278f89e9fe423716de1ee268b
    4c7ed36c96
  78. contrib: tracing: Correctly read msg type in p2p_monitor.py
    Github-Pull: #32771
    Rebased-From: 3473986fe10e2689fe36cc93e1e50013649ac14b
    5697605414
  79. doc: update release notes for 29.x 0922f6bbc3
  80. Merge bitcoin/bitcoin#32589: [29.x] More backports
    0922f6bbc33ac2abe3f3d9dc98dade896718864f doc: update release notes for 29.x (fanquake)
    569760541407824687ef86dd1a5be9a492a5b16e contrib: tracing: Correctly read msg type in p2p_monitor.py (David Gumberg)
    4c7ed36c9650065e5638d7ca5c7425c5cd50e3c7 test: Fix list index out of range error in feature_bip68_sequence.py (zaidmstrr)
    3e23b47a6fafd1a46dcb731e4732079baa04ab97 doc: fix transifex 404s (fanquake)
    616baf3c27ec767c530a47edac463ed60ddb8c5c doc: taproot became always active in v24.0 (Sjors Provoost)
    ef6111bd18c28265daaa48a2d1466fb2eff5c200 depends: capnp 1.2.0 (fanquake)
    8246c6a65f5e17aeeb351a2d649799c216bbed63 test: wallet, coverage for crash on dup block disconnection during unclean shutdown (Martin Zumsande)
    a18085a18bb58ef6d688889c6f2d9717d8581766 wallet: fix crash on double block disconnection (furszy)
    7264459c0df2b8dc0fa0d0ccab755b299878c588 build: patch cmake min version on freetype (josibake)
    27c533052c307113bea548b7bcad40dbfd1fbcbe doc, windows: CompanyName "Bitcoin" => "Bitcoin Core project" (Hodlinator)
    1b51d750ad1384a67010d40d7a9f9a6b96a22e43 depends: fix SHA256SUM command on OpenBSD (use GNU mode output) (Sebastian Falbesoner)
    aea8a394b1b9c595d6388b714145700dc63adfe6 doc: make `-DWITH_ZMQ=ON` explicit on `build-unix.md` (Luis Schwab)
    23e76ef520f5647993884e5affb54e33b9b66570 guix: warn and abort when SOURCE_DATE_EPOCH is set (will)
    876a7b2db5273ef8f6864bef9c304d36047409f4 doc: add missing packages for BSDs (cmake, gmake, curl) to depends/README.md (Sebastian Falbesoner)
    78688c84139b3e96148b17a4133e330bf8937c03 rpc, doc: update `listdescriptors` RCP help (rkrux)
    c899334e36b63b530c44fe7273c951469762878c rpc: Note in fundrawtransaction doc, fee rate is for package (benthecarman)
    247ee59f55cee2c6ee19203fa1d274efba054e7f doc: update tor docs to use bitcoind binary from path (ismaelsadeeq)
    4a1143b083db87b6bbe158b97a4912fe73f76d09 depends: use "mkdir -p" when installing xproto (fanquake)
    646fa1d028f091e281b7e9b0c45ca1040f4441d8 test: fix sync function in rpc_psbt.py (Martin Zumsande)
    17b31fc80209ecd8ba0410553ca0458049b26e6a doc: Add missing top-level description to pruneblockchain RPC (nervana21)
    e34b6fbcad6d8a2a58713d86c9ff646a0d2f2890 guix: accomodate migration to codeberg (fanquake)
    142153ee42747677db3c9d8bdb75ec5bd4cecc18 cmake: Add missed `SSE41_CXXFLAGS` (Hennadii Stepanov)
    
    Pull request description:
    
      Backports
      - #31757
      - #32333
      - #32439
      - #32551 (just 800b7cc42ca63f2a6b245a4d327c7092289da6e1)
      - #32568
      - #32607
      - #32630
      - #32678
      - #32679
      - #32690 (just 8713e8060d504f561fed705b4aa5af7b96c36e75)
      - #32693
      - #32696
      - #32708
      - #32711
      - #32719
      - #32760
      - #32765
      - #32771
      - #32776
      - #32777
    
      Closes #32625.
    
    ACKs for top commit:
      instagibbs:
         ACK 0922f6bbc33ac2abe3f3d9dc98dade896718864f
      willcl-ark:
        ACK 0922f6bbc33ac2abe3f3d9dc98dade896718864f
    
    Tree-SHA512: 0389e5d85fa897fdbefd37635f6ec822ca5ab48a57c4d40fdd4d1be2465c676f514b0db4d72c962ee15e0090b27ff17701e167d660eaa25f855d06bbb1fe0e6e
    983b268768
  81. build: add root dir to CMAKE_PREFIX_PATH
    Nix patches cmake to remove the root directory `/` from
    `CMAKE_SYSTEM_PREFIX_PATH`:
    https://github.com/NixOS/nixpkgs/blob/428b49b28ebc8938a6d9f6c540d32d7a06713972/pkgs/by-name/cm/cmake/001-search-path.diff#L10
    
    Without this, and when using the toolchain for depends builds, cmake's
    `find_path()` and `find_package()` do not know where to find
    dependencies, causing issues like:
    https://github.com/bitcoin/bitcoin/issues/32428
    
    Adding this path back via CMAKE_PREFIX_PATH is harmless on other
    systems, and fixes the toolchain for Nix users.
    
    We append the `/` dir a maximum of once, as the toolchain may be called
    repeatedly during builds.
    
    Co-authored-by: Russell Yanofsky <russ@yanofsky.org>
    Co-authored-by: josibake <josibake@protonmail.com>
    
    Github-Pull: #32798
    Rebased-From: e27a94596f2a1f5e04722a16165717cc6e891d36
    e37a70bf71
  82. test: fix catchup loop in outbound eviction functional test
    The catchup loop in the outbound eviction functional test currently has
    a small flaw, as the contained waiting for a `getheaders` message just
    waits for any such message instead of one with the intended block hash.
    The reason is that the `prev_prev_hash` variable is set incorrectly,
    since the `tip_header` instance is not updated and its field `.hash` is
    None. Fix that by updating `tip_header` and use the correct field -- we
    want the tip header's previous hash (`.hashPrevBlock`).
    
    Github-Pull: #32742
    Rebased-From: dd8447f70faf6419b4617da3c1b57098e9cd66a6
    5987c1b6ab
  83. cmake: Use `HINTS` instead of `PATHS` in `find_*` commands
    According to the CMake documentation, `HINTS` "should be paths computed
    by system introspection, such as a hint provided by the location of
    another item already found", which is precisely the case in the
    `FindQRencode` module.
    
    Entries in `HINTS` are searched before those in `PATHS`. On macOS,
    Homebrew’s `libqrencode` will therefore be located at its real path
    rather than via the symlink in the default prefix.
    
    Github-Pull: #32805
    Rebased-From: ead44687483e9c936ba970de890c01d5e7ad3485
    a990c1002b
  84. cmake: Explicitly specify `Boost_ROOT` for Homebrew's package
    On macOS, this change ensures that the Boost package is located at its
    real path rather than via the symlink in the default prefix.
    
    Github-Pull: #32814
    Rebased-From: 8800b5acc1ef7abe6c5260ae0be5386b1d593a19
    a3c1939d6e
  85. init: cap -maxmempool to 500 MB on 32-bit systems
    32-bit architecture is limited to 4GiB, so it doesn't make sense to set a too high value. 500 MB is
    chosen as an arbitrary maximum value that seems reasonable.
    
    Github-Pull: #32530
    Rebased-From: 2c43b6adebbfabb3c8dd82fe821ce0a5d6173b3b
    eafea2393d
  86. node: cap -dbcache to 1GiB on 32-bit architectures
    32-bit architecture is limited to 4GiB, so it doesn't make sense to set a too
    high value. Since this setting is performance critical, pick an arbitrary value
    higher than for -maxmempool but still reasonable.
    
    Github-Pull: #32530
    Rebased-From: 9f8e7b0b3b787b873045a4a8194e77d0b0a2b3b6
    1c0e19b93a
  87. test: Add msgtype to msg_generic slots
    Github-Pull: #32833
    Rebased-From: 7dc43ea503a2c145ffd4fe14b794300bfc2bcdee
    4b656e2023
  88. doc: update release notes for 29.x ef2a013e31
  89. Merge bitcoin/bitcoin#32810: [29.x] More backports
    ef2a013e31cf6fbded5735a998b4c992c176493d doc: update release notes for 29.x (fanquake)
    4b656e2023099f1ae5fe0aab6d46c97fe161d51f test: Add msgtype to msg_generic slots (dergoegge)
    1c0e19b93a876ba5503da15e1ce14315d804194b node: cap -dbcache to 1GiB on 32-bit architectures (Antoine Poinsot)
    eafea2393d972606678f3a825a71754558ac9d5c init: cap -maxmempool to 500 MB on 32-bit systems (Antoine Poinsot)
    a3c1939d6eb45be4a790b9943c81a3b15af1418a cmake: Explicitly specify `Boost_ROOT` for Homebrew's package (Hennadii Stepanov)
    a990c1002b50a79ba051d322a2269670e6827dd9 cmake: Use `HINTS` instead of `PATHS` in `find_*` commands (Hennadii Stepanov)
    5987c1b6abaefad61d8d2cca605349354432398a test: fix catchup loop in outbound eviction functional test (Sebastian Falbesoner)
    e37a70bf71d05d2e355e6d0ac49c58a4b446454f build: add root dir to CMAKE_PREFIX_PATH (will)
    
    Pull request description:
    
      Backports:
      * #32530
      * #32742
      * #32798
      * #32805
      * #32814
      * #32833
    
      Fixes #31009.
    
    ACKs for top commit:
      pinheadmz:
        ACK ef2a013e31cf6fbded5735a998b4c992c176493d
      hebasto:
        re-ACK ef2a013e31cf6fbded5735a998b4c992c176493d.
      willcl-ark:
        ACK ef2a013e31cf6fbded5735a998b4c992c176493d
    
    Tree-SHA512: 936ccf732f9fa49acc90de8af0ebf7134aa54dbaf9533c8dfbe08cd178b87a3a091c837d5bb84d61869a69c3c7d499a565b33237b14330a6c66d9c8456d5a261
    d360a6ef56
  90. test: check P2SH sigop count for coinbase tx
    Github-Pull: #32850
    Rebased-From: d6aaffcb11adcf47480fcc5081af9dcb732decf3
    222fbfcc6a
  91. test: Clarify roles in outbound eviction comments
    Some ambiguous uses of "we" referring to either the node or the peer are replaced with clearer phrasing.
    
    Also rephrase some comments for consistency and readability.
    
    Applies to all relevant outbound eviction tests in p2p_eviction_logic.py.
    
    Github-Pull: #32823
    Rebased-From: 26598ed21ea7228c4ecf85da24527c88f9c1f1c1
    f82015ccfc
  92. test: Use rehash() in outbound eviction block-relay
    Ensure that tip_header.rehash() is used instead of tip_header.hash, which is None when the header is deserialized from hex.
    
    This avoids depending on wait_for_getheaders() falling back to any received message, making the test more explicit and robust.
    
    Github-Pull: #32823
    Rebased-From: ec004cdb86e6471915e1033f390c76ee0428e415
    3a57bfaaf9
  93. depends: Override host compilers for FreeBSD and OpenBSD
    When building depends on FreeBSD/OpenBSD `aarch64`, the host compilers
    default to `default_host_{CC,CXX}`, which resolves to `gcc`/`g++`. This
    is incorrect on these systems, where Clang is the default system
    compiler.
    
    Github-Pull: #32716
    Rebased-From: 4f10a57671c19cacca630b2401e42a213aacff1b
    8a4a938db5
  94. feature_taproot: sample tx version border values more
    Currently if the version 3 is selected for an otherwise
    standard spender, the test will fail. It's unlikely but
    possible, so change the test to update expectations and
    sample more aggressively on border values to instigate
    failures much quicker in the future if another version is
    made standard.
    
    Github-Pull: #32841
    Rebased-From: 4be81e9746e9e18923386d6f4945a33885fd98a7
    9f3690b978
  95. functional test: correctly detect nonstd TRUC tx vsize in feature_taproot
    Github-Pull: #32859
    Rebased-From: f0524cda3995cf65adab3d0ca8da0dee4e31c79b
    59a83fb8d1
  96. doc: Add workaround for vcpkg issue with paths with embedded spaces
    Github-Pull: #32858
    Rebased-From: 0a1af4418ed2a135001cc0e10f0af44cbd64e521
    e5a7575a6d
  97. doc: clarify that the "-j N" goes after the "--build build" part
    Also, capitalized the comments in build-unix.md for uniformity
    with the docs on other targets.
    
    Github-Pull: #32846
    Rebased-From: 0e9f409db3b7b08aef75ce39765b018b69cc8e9d
    83ee49b1dc
  98. test: fix incorrect subtest in `feature_fee_estimation.py`
    - Update `check_smart_estimates` to calculate the fee rate ceiling
       by taking the maximum of fees seen, minrelaytxfee, and mempoolminfee.
    - Improve the subtest name and comments.
    
    Github-Pull: #32463
    Rebased-From: 5c1236f04a24716b2cbd9b9b283863d3a8a6fa87
    84c0c0e64b
  99. test: retain the intended behavior of `feature_fee_estimation.py` nodes
    - Increase block weight by 4000 for all nodes with custom -blockmaxweight.
      Prior to this commit, we generated blocks with 4000 weight units less worth of transactions.
      See https://github.com/bitcoin/bitcoin/issues/32461#issuecomment-2925282272 for details.
      This commit fixes it by increasing the block weight by 4000.
    
    Github-Pull: #32463
    Rebased-From: 9b75cfda4d62a0a3bde402503244dd57e1621a12
    f85d41c224
  100. add more bad p2p ports
    Github-Pull: #32826
    Rebased-From: 6967e8e8abbc35ac98e8e3745a8bbed56e77526f
    58b1a65ab0
  101. depends: Force `CMAKE_EXPORT_NO_PACKAGE_REGISTRY=TRUE`
    When using CMake policies 3.14 and below, the `export(PACKAGE)` command
    by default populates the user package registry, which is stored outside
    the build tree. Setting the `CMAKE_EXPORT_NO_PACKAGE_REGISTRY` variable
    disables this side effect.
    
    In CMake 3.15 and later, this behavior is disabled by default, and the
    variable has no effect.
    
    Github-Pull: #32943
    Rebased-From: 44f3bae300dcafbe53f9b07e6cc22a112833e579
    bc2147c884
  102. cmake: Drop no longer necessary "cmakeMinimumRequired" object
    Github-Pull: #32954
    Rebased-From: 12a6959892cb24b940b3579828f2066651572153
    f798c317a0
  103. depends: fix libevent _WIN32_WINNT usage
    Starting with version 13.x, the mingw headers will define the value of
    NTDDI_VERSION, based on the value of _WIN32_WINNT, if that version is <
    Windows 10. Given that libevent was undefining our _WIN32_WINNT, and
    redefining it to a value < Windows 10 (0x0501), NTDDI_VERSION was also
    being defined to that value, leading to functions not being exposed in
    the mingw-w64 headers; see here:
    https://github.com/mingw-w64/mingw-w64/blob/9c2668ef77e75ea4d8a6c7d100b14643269caec3/mingw-w64-headers/include/iphlpapi.h#L36-L41.
    
    Imports a commit from usptream (a14ff91254f40cf36e0fee199e26fb11260fab49).
    
    Fixes #32707.
    
    Github-Pull: #32837
    Rebased-From: f5647c6c5ae85e9469cfc5df6fcac23752e1695a
    730886b92b
  104. doc: update release notes for 29.x 5300295083
  105. Merge bitcoin/bitcoin#32863: [29.x] Backports
    5300295083f2e199c22a7ad55e62a8dc7549a76e doc: update release notes for 29.x (fanquake)
    730886b92b661ae6fb2731f79f1371262187b1d5 depends: fix libevent _WIN32_WINNT usage (fanquake)
    f798c317a08c1fdbc560fa70af624396ec4cb488 cmake: Drop no longer necessary "cmakeMinimumRequired" object (Hennadii Stepanov)
    bc2147c884d971ec57c782004142b99af6175d9a depends: Force `CMAKE_EXPORT_NO_PACKAGE_REGISTRY=TRUE` (Hennadii Stepanov)
    58b1a65ab0883bb14cb8ffaf76580800a29a92d2 add more bad p2p ports (Jameson Lopp)
    f85d41c2249dfd9a343fdc3cfe139218371bf891 test: retain the intended behavior of `feature_fee_estimation.py` nodes (ismaelsadeeq)
    84c0c0e64b799f8f19791e8c71a7a6e10baa1c3b test: fix incorrect subtest in `feature_fee_estimation.py` (ismaelsadeeq)
    83ee49b1dc9b1a086c1ac910e3bcd2ec38dd6d69 doc: clarify that the "-j N" goes after the "--build build" part (Salvatore Ingala)
    e5a7575a6df8abd5153f29f1df2503146ac81810 doc: Add workaround for vcpkg issue with paths with embedded spaces (Hennadii Stepanov)
    59a83fb8d1f9030111a70e8184091e61cef15c38 functional test: correctly detect nonstd TRUC tx vsize in feature_taproot (Greg Sanders)
    9f3690b9785a5e818d2b889a395b65f42fd78378 feature_taproot: sample tx version border values more (Greg Sanders)
    8a4a938db527636aadaa874d733542613b3d14b6 depends: Override host compilers for FreeBSD and OpenBSD (Hennadii Stepanov)
    3a57bfaaf9b0712ff080bd8a315c01552735b882 test: Use rehash() in outbound eviction block-relay (pablomartin4btc)
    f82015ccfc7c719405e942ef31c4b59865ee576a test: Clarify roles in outbound eviction comments (pablomartin4btc)
    222fbfcc6a02ec5bac367e156392d49fb215c066 test: check P2SH sigop count for coinbase tx (brunoerg)
    
    Pull request description:
    
      Backports
      - #32463
      - #32716
      - #32823
      - #32826
      - #32837
      - #32841
      - #32846
      - #32850
      - #32858
      - #32859
      - #32943
      - #32954
    
    ACKs for top commit:
      hebasto:
        ACK 5300295083f2e199c22a7ad55e62a8dc7549a76e, I've backported all listed PRs locally (had 3 conflicts to resolve), and got zero diff with this PR.
      glozow:
        ACK 5300295083f2e199c22a7ad55e62a8dc7549a76e
    
    Tree-SHA512: c2f764ce3dcd1b6c16bfbe73a548a815f8d7db83653436d17686541a5cb530255a96132865442aa2f569340c95abee31aadda8bf0736582c7a19720029096b1e
    ef380a454c
  106. policy: make pathological transactions packed with legacy sigops non-standard.
    The Consensus Cleanup soft fork proposal includes a limit on the number of legacy signature
    operations potentially executed when validating a transaction. If this change is to be implemented
    here and activated by Bitcoin users in the future, we should prevent the ability for someone to
    broadcast a transaction through the p2p network that is not valid according to the new rules. This
    is because if it was possible it would be a trivial DoS to potentially unupgraded miners after the
    soft fork activates.
    
    We do not know for sure whether users will activate the Consensus Cleanup. However if they do such
    transactions must have been made non-standard long in advance, due to the time it takes for most
    nodes on the network to upgrade. In addition this limit may only be run into by pathological
    transactions which pad the Script with sigops but do not use actual signatures when spending, as
    otherwise they would run into the standard transaction size limit.
    
    Github-Pull: bitcoin/bitcoin#32521
    Rebased-From: 5863315e33ba9b75a1e5189ee3da3d7311bbf193
    204b965915
  107. qa: unit test standardness of inputs packed with legacy sigops
    Check bounds and different output types.
    
    Github-Pull: bitcoin/bitcoin#32521
    Rebased-From: 367147954d16c961bbd28c361abf27b4cb665f10
    0a4671d5eb
  108. qa: functional test a transaction running into the legacy sigop limit
    It's useful to have an end-to-end test in addition to the unit test to sanity check the RPC error as
    well as making sure the transaction is otherwise fully standard.
    
    Github-Pull: bitcoin/bitcoin#32521
    Rebased-From: 96da68a38fa295d2414685739c41b8626e198d27
    313023369b
  109. test: Do not pass tests on unhandled exceptions
    This adds a missing catch for BaseException (e.g. SystemExit), which
    would otherwise be silently ignored.
    
    Also, remove the redundant other catches, which are just calling
    log.exception with a redundant log message.
    
    Github-Pull: #33001
    Rebased-From: fa30b34026f76a5b8af997152fced2d281782e0d
    79e1a3c9c6
  110. test: Log KeyboardInterrupt as exception
    log.exception is more verbose and useful to debug timeouts.
    
    Also, log stderr for CalledProcessError to make debugging easier.
    
    Github-Pull: #33001
    Rebased-From: faa3e684118bffa7a98cf76eeeb59243219df900
    5e327e6703
  111. doc: update release notes for 29.x 411e15194b
  112. doc: update release notes for 29.x f25dc84b28
  113. Merge bitcoin/bitcoin#33046: [29.x] test: Do not pass tests on unhandled exceptions
    411e15194b3a770ff455d413a0fe2495f0362297 doc: update release notes for 29.x (fanquake)
    5e327e6703f10d3de12c56bb9701b07521a9f703 test: Log KeyboardInterrupt as exception (MarcoFalke)
    79e1a3c9c6a4661562d419dc3427b35060ed0451 test: Do not pass tests on unhandled exceptions (MarcoFalke)
    
    Pull request description:
    
      Backports #33001 to `29.x`.
    
    ACKs for top commit:
      pablomartin4btc:
        ACK 411e15194b3a770ff455d413a0fe2495f0362297
      marcofleon:
        lgtm ACK 411e15194b3a770ff455d413a0fe2495f0362297
    
    Tree-SHA512: ea930f8c24a0a5e18f2107e96540db5c39941442059190d6104dfcf88b4a33d06ecaa7dbdf8baa91e564ee7ca3d12df5118c7fa404a38108de4ad0e5f122f72d
    8063d55446
  114. test: fix intermittent failure in wallet_reorgsrestore.py
    Wait until the node's process has fully stopped before starting a new instance.
    
    Since the same code is used in tool_wallet.py, this consolidates the behavior
    into a 'kill_process()' function.
    
    Github-Pull: bitcoin/bitcoin#32069
    Rebased-From: 36b0713edc4655f6e0c291975d6d280fbc89cf2e
    380b5aded2
  115. doc: update release notes for 29.x c6fe6971bf
  116. Merge bitcoin/bitcoin#33052: [29.x] backport #32069
    c6fe6971bfa52d8fe2901a051f18da9f3bcb26a9 doc: update release notes for 29.x (fanquake)
    380b5aded21772f9b7a31418109c20b2e15d090e test: fix intermittent failure in wallet_reorgsrestore.py (furszy)
    
    Pull request description:
    
      Backport https://github.com/bitcoin/bitcoin/pull/32069 to 29. This is a test flakiness fix for https://github.com/bitcoin/bitcoin/pull/31757, which was backported to 29 in https://github.com/bitcoin/bitcoin/pull/32589.
    
    ACKs for top commit:
      marcofleon:
        ACK c6fe6971bfa52d8fe2901a051f18da9f3bcb26a9
    
    Tree-SHA512: 82517eef67c8d0fe57e70cb769d1b040ea8dea41c2d2e5b442477e1c7add7d7bac1c4aabbebc5b7d440db5b7bf00f1d70dc6ffb375b7a2e77d9599c543579122
    951b349af1
  117. Merge bitcoin/bitcoin#33013: [29.x] Backport #32521
    f25dc84b2892e6bdbbd0471add9fcb2757700981 doc: update release notes for 29.x (Antoine Poinsot)
    313023369b8e4ffb268cb642101680fe7f746fea qa: functional test a transaction running into the legacy sigop limit (Antoine Poinsot)
    0a4671d5eba2499a27e530536b48b86166319fe8 qa: unit test standardness of inputs packed with legacy sigops (Antoine Poinsot)
    204b96591542373dc75c6a6401b477f4b6615e69 policy: make pathological transactions packed with legacy sigops non-standard. (Antoine Poinsot)
    
    Pull request description:
    
      This backports PR #32521 to make the change available to miners who can't (or don't want to) upgrade past version 29.
    
    ACKs for top commit:
      marcofleon:
        reACK f25dc84b2892e6bdbbd0471add9fcb2757700981
      glozow:
        ACK f25dc84b2892e6bdbbd0471add9fcb2757700981
    
    Tree-SHA512: d5e06618720ed1a96d8a5fccdd8d1dbcbb5748505aa0df69198326828fe13f220e55bbce813f6f2daae82d23348e1f83a3a20a28639ec3fc2455c5b6e79a56e6
    4bf77955ed
  118. [build] bump version to 29.1rc1 735ffad864
  119. [doc] manpages for 29.1rc1 06eb42d83c
  120. [doc] update release notes for v29.1rc1 4c2d285b70
  121. Merge bitcoin/bitcoin#33056: [29.x] final changes for v29.1rc1
    4c2d285b706058ece7092d03f0e5ad1112c2097f [doc] update release notes for v29.1rc1 (glozow)
    06eb42d83cf7eb76dc89bb6ca04f51eb17847d06 [doc] manpages for 29.1rc1 (glozow)
    735ffad864ce6cc1f9a1c13f0cb15bcf30284dd6 [build] bump version to 29.1rc1 (glozow)
    
    Pull request description:
    
    ACKs for top commit:
      marcofleon:
        nice, ACK 4c2d285b706058ece7092d03f0e5ad1112c2097f
      fanquake:
        ACK 4c2d285b706058ece7092d03f0e5ad1112c2097f
      darosior:
        ACK 4c2d285b706058ece7092d03f0e5ad1112c2097f
    
    Tree-SHA512: ffcc45566e33b8c4b80da1c751a5045863e06a31de81ec6f3f5ba26717eb8e7087139f7d2696ed5c61170efb62b5b9416f350bcb108a03afcdfa38e77067d612
    565af03c37
  122. doc/zmq: fix unix socket path example
    Following https://github.com/bitcoin/bitcoin/blob/75a5c8258ec5309fe506438aa3815608430b53d6/doc/release-notes/release-notes-28.0.md?plain=1#L105
    
    Github-Pull: #33070
    Rebased-From: e83699a626b8a41c8fb9d0450e14e06a29a98bb8
    3cd8612cd7
  123. tracing: fix pointer argument handling in mempool_monitor.py
    The BPF code was incorrectly passing pointer variables by value to
    bpf_usdt_readarg(), causing the function to fail silently and resulting
    in transaction hashes and reason strings displaying as zeros or garbage.
    
    This fix adds the missing reference operator (&) when passing pointer
    variables to bpf_usdt_readarg(), allowing the function to properly
    write the pointer values and enabling correct display of transaction
    hashes and removal/rejection reasons.
    
    Fixes the regression introduced in ec47ba349d where bpf_usdt_readarg_p
    was replaced with bpf_usdt_readarg but the calling convention wasn't
    properly updated for pointer arguments.
    
    Github-Pull: #33086
    Rebased-From: 0ce041ea88dbea2bdfaf21fd0e60a86012498f0a
    9437415024
  124. guix: warn SOURCE_DATE_EPOCH set in guix-codesign
    Currently there is a warning for this in guix-build, but we also need
    one in guix-codesign, otherwise the codesigned hashes are not
    reproducible.
    
    Move common functionality into prelude and call the function in both
    guix actions.
    
    Github-Pull: #33073
    Rebased-From: 1bed0f734b3f2dd876193b5cad303bfab1d250d5
    a18b53f99e
  125. doc: Add rel note for breaking change in dumptxoutset RPC
    This was missed in the v29.0 release notes.
    264418f80c
  126. doc: move `cmake -B build -LH` up in Unix build docs
    Github-Pull: #33088
    Rebased-From: 6757052fc439bedd1fa88ee1d23b4f17cf2c4f7a
    a08886d564
  127. rpc: fix getpeerinfo ping duration unit docs
    The getpeerinfo docs incorrectly specified the ping durations as
    milliseconds. This was incorrectly changed in a3789c700b5a43efd4b366b4241ae840d63f2349
    (released in v25; master since Sept. 2022). The correct duration unit
    is seconds.
    
    Also, remove the documentation of the getpeerinfo RPC response from the
    ping RPC since it's incomplete. Better to just reference the getpeerinfo
    RPC and it's documenation for this.
    
    Github-Pull: #33133
    Rebased-From: 1252eeb997df2eb12c33d92eb1a5c9d6643a67ff
    4e8abca445
  128. test: Fix 'getdescriptoractivity' RPCHelpMan, add test to verify 'spend_vin' is the correct field
    Github-Pull: #33119
    Rebased-From: 3543bfdfec345cf2c952143c31674ef02de2a64b
    2b9738a083
  129. doc: update release notes for 29.x b9e637bd0e
  130. Merge bitcoin/bitcoin#33074: [29.x] Backports
    b9e637bd0ee4d1da5f587ec33cbed9ee28c07daf doc: update release notes for 29.x (fanquake)
    2b9738a0835f50845ed183e124347b07b7bcce10 test: Fix 'getdescriptoractivity' RPCHelpMan, add test to verify 'spend_vin' is the correct field (Chris Stewart)
    4e8abca44506ac39166e4a7372f8ee0f6d1def0a rpc: fix getpeerinfo ping duration unit docs (0xb10c)
    a08886d5640a808e302108575ffbebd7df5f8f11 doc: move `cmake -B build -LH` up in Unix build docs (Bufo)
    264418f80cea7fd5ae818a2a2887fab62de2b0a2 doc: Add rel note for breaking change in dumptxoutset RPC (Chris Stewart)
    a18b53f99e4bf7f038dac635f27bddf17d285010 guix: warn SOURCE_DATE_EPOCH set in guix-codesign (will)
    9437415024da7dd51705e46e4243f7e1694acaf5 tracing: fix pointer argument handling in mempool_monitor.py (deadmanoz)
    3cd8612cd7719c0a4dfa104bae3467b562d567d7 doc/zmq: fix unix socket path example (Roman Zeyde)
    
    Pull request description:
    
      Backports:
      * #33070
      * #33073
      * #33086
      * #33088
      * #33103
      * #33119
      * #33133
    
    ACKs for top commit:
      glozow:
        ACK b9e637bd0ee4d1da5f587ec33cbed9ee28c07daf
    
    Tree-SHA512: bf2a700ec4d730548cf5abf10930b41e26742ea23582149b0eddcaaa48c1db05ab657ef9ffc7dcba2d1af2e265d0ea866d7b484a321a9c9ac662a6dc2263d102
    837c5c7fd8
  131. test: Mark ~DebugLogHelper as noexcept(false)
    We mark ~DebugLogHelper as noexcept(false) to be able to catch the
    exception it throws. This lets us use it in test in combination with
    BOOST_CHECK_THROW and BOOST_CHECK_NO_THROW to check that certain log
    messages are (not) logged.
    
    Co-Authored-By: Niklas Gogge <n.goeggi@gmail.com>
    
    Github-Pull: #32604
    Rebased-From: df7972a6cfd919b972bcbba07de85f7797898529
    4987c03531
  132. log: introduce LogRateLimiter, LogLimitStats, Status
    LogRateLimiter will be used to keep track of source locations and our
    current time-based logging window. It contains an unordered_map and a
    m_suppressions_active bool to track source locations. The map is keyed
    by std::source_location, so a custom Hash function (SourceLocationHasher)
    and custom KeyEqual function (SourceLocationEqual) is provided.
    SourceLocationHasher uses CSipHasher(0,0) under the hood to get a
    uniform distribution.
    
    A public Reset method is provided so that a scheduler (e.g. the
    "b-scheduler" thread) can periodically reset LogRateLimiter's state when
    the time window has elapsed.
    
    The LogRateLimiter::Consume method checks if we have enough available
    bytes in our rate limiting budget to log an additional string. It
    returns a Status enum that denotes the rate limiting status and can
    be used by the caller to emit a warning, skip logging, etc.
    
    The Status enum has three states:
    - UNSUPPRESSED     (logging was successful)
    - NEWLY_SUPPRESSED (logging was succcesful, next log will be suppressed)
    - STILL_SUPPRESSED (logging was unsuccessful)
    
    LogLimitStats counts the available bytes left for logging per source
    location for the current logging window. It does not track actual source
    locations; it is used as a value in m_source_locations.
    
    Also exposes a SuppressionsActive() method so the logger can use
    that in a later commit to prefix [*] to logs whenenever suppressions
    are active.
    
    Co-Authored-By: Niklas Gogge <n.goeggi@gmail.com>
    Co-Authored-By: stickies-v <stickies-v@protonmail.com>
    
    Github-Pull: #32604
    Rebased-From: afb9e39ec5552e598a5febaa81820d5509b7c5d2
    41262cc4d5
  133. log: use std::source_location in place of __func__, __FILE__, __LINE__
    The std::source_location conveniently stores the file name, line number,
    and function name of a source code location. We switch to using it instead
    of the __func__ identifier and the __FILE__ and __LINE__ macros.
    
    BufferedLog is changed to have a std::source_location member, replacing the
    source_file, source_line, and logging_function members. As a result,
    MemUsage no longer explicitly counts source_file or logging_function as the
    std::source_location memory usage is included in the MallocUsage call.
    
    This also changes the behavior of -logsourcelocations as std::source_location
    includes the entire function signature. Because of this, the functional test
    feature_config_args.py must be changed to no longer include the function
    signature as the function signature can differ across platforms.
    
    Co-Authored-By: Niklas Gogge <n.goeggi@gmail.com>
    Co-Authored-By: stickies-v <stickies-v@protonmail.com>
    
    Github-Pull: #32604
    Rebased-From: a6a35cc0c23d0d529bfeb2f40d83d61f15ca7b40
    a0992a842e
  134. log: Add rate limiting to LogPrintf, LogInfo, LogWarning, LogError, LogPrintLevel
    To mitigate disk-filling attacks caused by unsafe usages of LogPrintf and
    friends, we rate-limit them by passing a should_ratelimit bool that
    eventually makes its way to LogPrintStr which may call
    LogRateLimiter::Consume. The rate limiting is accomplished by
    adding a LogRateLimiter member to BCLog::Logger which tracks source
    code locations for the given logging window.
    
    Every hour, a source location can log up to 1MiB of data. Source
    locations that exceed the limit will have their logs suppressed for the
    rest of the window determined by m_limiter.
    
    This change affects the public LogPrintLevel function if called with
    a level >= BCLog::Level::Info.
    
    The UpdateTipLog function has been changed to use the private LogPrintLevel_
    macro with should_ratelimit set to false. This allows UpdateTipLog to log
    during IBD without hitting the rate limit.
    
    Note that on restart, a source location that was rate limited before the
    restart will be able to log until it hits the rate limit again.
    
    Co-Authored-By: Niklas Gogge <n.goeggi@gmail.com>
    Co-Authored-By: stickies-v <stickies-v@protonmail.com>
    
    Github-Pull: #32604
    Rebased-From: d541409a64c60d127ff912dad9dea949d45dbd8c
    0b6b096421
  135. doc: add release notes for new rate limiting logging behavior
    Github-Pull: #32604
    Rebased-From: 4c772cbd83e502a1339e8993d192ea6416ecd45c
    24c793d06c
  136. test: remove noexcept(false) comment in ~DebugLogHelper
    Github-Pull: #33011
    Rebased-From: 616bc22f131132b9239ef362dca8c6bce000a539
    25f975b8df
  137. log: avoid double hashing in SourceLocationHasher
    Co-Authored-By: l0rinc <pap.lorinc@gmail.com>
    
    Github-Pull: #33011
    Rebased-From: b8e92fb3d4137f91fe6a54829867fc54357da648
    9cde68fa98
  138. log: remove const qualifier from arguments in LogPrintFormatInternal
    Co-Authored-By: l0rinc <pap.lorinc@gmail.com>
    
    Github-Pull: #33011
    Rebased-From: 5f70bc80df06ca85d44e8201d47e7086e971fdea
    273ffda2c8
  139. log: clarify RATELIMIT_MAX_BYTES comment, use RATELIMIT_WINDOW
    Co-Authored-By: stickies-v <stickies-v@protonmail.com>
    
    Github-Pull: #33011
    Rebased-From: 8319a134684df2240057a5e8afaa6ae441fb8a58
    dfe4e19f66
  140. log: change LogLimitStats to struct LogRateLimiter::Stats
    Clean up the noisy LogLimitStats and remove references to the time
    window.
    
    Co-Authored-By: stickies-v <stickies-v@protonmail.com>
    
    Github-Pull: #33011
    Rebased-From: 3c7cae49b692bb6bf5cae5ee23479091bed0b8be
    7c3820ff63
  141. log: clean up LogPrintStr_ and Reset, prefix all logs with "[*]" when there are suppressions
    In LogPrintStr_:
    - remove an unnecessary BCLog since we are in the BCLog namespace.
    - remove an unnecessary \n when rate limiting is triggered since
      FormatLogStrInPlace will add it.
    - move the ratelimit bool into an else if block.
    - prefix all log lines with [*] when suppressions exist. Previously this
      was only done if should_ratelimit was true.
    
    In Reset:
    - remove an unnecessary \n since FormatLogStrInPlace will add it.
    - Change Level::Info to Level::Warning.
    
    Github-Pull: #33011
    Rebased-From: e8f9c37a3b4c9c88baddb556c4b33a4cbba1f614
    81751341e9
  142. log: make m_limiter a shared_ptr
    This allows us to safely and explicitly manage the dual dependency
    on the limiter: one for the Logger, and one for the CScheduler.
    
    Github-Pull: #33011
    Rebased-From: 3d630c2544e19480268426cda245796d4ce34ac3
    acfa83d9d0
  143. test: add ReadDebugLogLines helper function
    Deduplicates repeated usage of the same functionality.
    
    Github-Pull: #33011
    Rebased-From: 05d7c22479bf96bab9f8c8b8fa90368429ad2c88
    4ed7a51642
  144. test: don't leak log category mask across tests
    This ensures log tests behave consistently when other tests modify
    the log category mask.
    
    Github-Pull: #33011
    Rebased-From: 350193e5e2efabb3eb66197b91869b946ec5428c
    11538160b3
  145. test: logging_filesize_rate_limit improvements
    - Add helper functions and structs to improve readability and
      reusability of test code
    - Make tests more specific by comparing all produced log lines with
      expected log lines instead of relying on approximations or proxies.
    
    Github-Pull: #33011
    Rebased-From: 9f3b017bcc067bba1d1682a5d4e65b5450dc10c4
    dfdd407c42
  146. config: add DEBUG_ONLY -logratelimit
    Use -nologratelimit by default in functional tests if the bitcoind
    version supports it.
    
    Co-Authored-By: stickies-v <stickies-v@protonmail.com>
    
    Github-Pull: #33011
    Rebased-From: 5c74a0b397cb3db94761bad78801eed4544155b9
    206f5902db
  147. test: modify logging_filesize_rate_limit params
    Change time_window from 20s to 1h so Reset is not accidentally called
    if the test takes a while.
    
    Change num_lines from 1024 to 10 since LogRateLimiter is parameterized
    and does not require logging 1MiB of data.
    
    Co-Authored-By: stickies-v <stickies-v@protonmail.com>
    
    Github-Pull: #33211
    Rebased-From: 5dda364c4b1965da586db7b81de8be90b6919414
    0022e25333
  148. Merge bitcoin/bitcoin#33225: [29.x] Backport logging ratelimiting
    0022e25333a8eabf79c0341f94cf06db36e32f4f test: modify logging_filesize_rate_limit params (Eugene Siegel)
    206f5902db5c5b0a08f0575b5ba6007730011e5f config: add DEBUG_ONLY -logratelimit (Eugene Siegel)
    dfdd407c428030171213496c0cc2f30517bb86a1 test: logging_filesize_rate_limit improvements (stickies-v)
    11538160b3d9a44990ac2c3a766764198a7e9127 test: don't leak log category mask across tests (stickies-v)
    4ed7a51642dfa83159be7207c158dc7544d35f65 test: add ReadDebugLogLines helper function (stickies-v)
    acfa83d9d000abd263d8cb5ac3355cfd8cf49ec0 log: make m_limiter a shared_ptr (stickies-v)
    81751341e9b5582fc5645ff88c5dd67cbd09cf43 log: clean up LogPrintStr_ and Reset, prefix all logs with "[*]" when there are suppressions (Eugene Siegel)
    7c3820ff63d91c9f5173e514d74814a34e647bdb log: change LogLimitStats to struct LogRateLimiter::Stats (Eugene Siegel)
    dfe4e19f66e0acd4f14f726f29aeb6ef7d8506c4 log: clarify RATELIMIT_MAX_BYTES comment, use RATELIMIT_WINDOW (Eugene Siegel)
    273ffda2c878954f30554bb88d286896d1177add log: remove const qualifier from arguments in LogPrintFormatInternal (Eugene Siegel)
    9cde68fa984571d68177152af0a029b43fef7bab log: avoid double hashing in SourceLocationHasher (Eugene Siegel)
    25f975b8df8ac4692cdfe9c423f2903e97f34a2c test: remove noexcept(false) comment in ~DebugLogHelper (Eugene Siegel)
    24c793d06c93768be88e9f8d0bb62936e199f68c doc: add release notes for new rate limiting logging behavior (Eugene Siegel)
    0b6b096421ac9d1c7b0542ea147562269e1c5bec log: Add rate limiting to LogPrintf, LogInfo, LogWarning, LogError, LogPrintLevel (Eugene Siegel)
    a0992a842ed098ebcd5f955b232b9abb154d6f6e log: use std::source_location in place of __func__, __FILE__, __LINE__ (Eugene Siegel)
    41262cc4d53389ddadc59573e4eb246e085268ce log: introduce LogRateLimiter, LogLimitStats, Status (Eugene Siegel)
    4987c035318536a76f3f5dd00beb417d8fb4b24c test: Mark ~DebugLogHelper as noexcept(false) (Eugene Siegel)
    
    Pull request description:
    
      Backports:
      * #32604
        * Note that 24c793d06c93768be88e9f8d0bb62936e199f68c isn't clean, as it's added directly to `release-notes.md`.
      * #33011
      * #33211
    
    ACKs for top commit:
      instagibbs:
        utACK 0022e25333a8eabf79c0341f94cf06db36e32f4f
      dergoegge:
        utACK 0022e25333a8eabf79c0341f94cf06db36e32f4f
      stickies-v:
        ACK 0022e25333a8eabf79c0341f94cf06db36e32f4f - all backports clean except the release notes one, as indicated.
    
    Tree-SHA512: 466aa6884a2c936131cf222b94943148bc385fc9574840cc63933f510c40c2cc74d8c9a9b2560205926a0a70a93de0e191a623fa2352628d8cead45bbee59b1c
    c5196bc9c4
  149. [test] check miner doesn't select 0fee transactions
    Github-Pull: #33106
    Rebased-From: e5f896bb1f052fb8c7811c6024cb49143b427512
    4e3cfa660d
  150. [test] check bypass of minrelay for various minrelaytxfee settings
    Github-Pull: #33106
    Rebased-From: 85f498893f54ea7d84f2bdf12aa35d198edf8a72
    03da7aff99
  151. [test] RBF rule 4 for various incrementalrelayfee settings
    Github-Pull: #33106
    Rebased-From: 72dc18467dbfc16cdbda2dd109b087243b397799
    6b5396c4b1
  152. [test] explicitly check default -minrelaytxfee and -incrementalrelayfee
    Github-Pull: #33106
    Rebased-From:  1fbee5d7b61b83e68e4230c8a97ca308de92c4c3
    567c3ee3cb
  153. [doc] assert that default min relay feerate and incremental are the same
    Github-Pull: #33106
    Rebased-From: d6213d6aa114aeed6804a585491d741386fd2739
    3a7e093f94
  154. [miner] lower default -blockmintxfee to 1sat/kvB
    Back when we implemented coin age priority as a miner policy, miners
    mempools might admit transactions paying very low fees, but then want to
    set a higher fee for block inclusion. However, since coin age priority
    was removed in v0.15, the block assembly policy is solely based on fees,
    so we do not need to apply minimum feerate rules in multiple places. In
    fact, the block assembly policy ignoring transactions that are added to
    the mempool is likely undesirable as we waste resources accepting and
    storing this transaction.
    
    Instead, rely on mempool policy to enforce a minimum entry feerate to
    the mempool (minrelaytxfee). Set the minimum block feerate to the
    minimum non-zero amount (1sat/kvB) so it collects everything it finds in
    mempool into the block.
    
    Github-Pull: #33106
    Rebased-From:  5f2df0ef78be7b24798d0983c9b962740608f1f4
    1c1970fb45
  155. [prep/test] replace magic number 1000 with respective feerate vars
    Github-Pull: #33106
    Rebased-From: 3eab8b724044dc321f70e5eed66b149713158a04
    a0ae3fc8a7
  156. [prep/util] help MockMempoolMinFee handle more precise feerates
    Use a virtual size of 1000 to keep precision when using a feerate
    (which is rounded to the nearest satoshi per kvb) that isn't just an
    integer.
    
    Github-Pull: #33106
    Rebased-From: 457cfb61b5323a13218b3cfb5a6a6d8b3a7c5f7f
    da30ca0efa
  157. [prep/test] make wallet_fundrawtransaction's minrelaytxfee assumption explicit
    Github-Pull: #33106
    Rebased-From: 2e515d2897eaa5a9b012eb78aef105e1cf80d42b
    bbdab3ef7b
  158. [policy] lower default minrelaytxfee and incrementalrelayfee to 100sat/kvB
    Let's say an attacker wants to use/exhaust the network's bandwidth, and
    has the choice between renting resources from a commercial provider and
    getting the network to "spam" itself it by sending unconfirmed
    transactions. We'd like the latter to be more expensive than the former.
    
    The bandwidth for relaying a transaction across the network is roughly
    its serialized size (plus relay overhead) x number of nodes. A 1000vB
    transaction is 1000-4000B serialized. With 100k nodes, that's 0.1-0.4GB
    If the going rate for commercial services is 10c/GB, that's like 1-4c per kvB
    of transaction data, so a 1000vB transaction should pay at least $0.04.
    
    At a price of 120k USD/BTC, 100sat is about $0.12. This price allows us
    to tolerate a large decrease in the conversion rate or increase in the
    number of nodes.
    
    Github-Pull: #33106
    Rebased-From: 6da5de58cabc4133c379baa50845e30e5bc6b3e4
    9dd7efc8c3
  159. [doc] update release notes
    Release notes are from 18720bc5d5b4d3acf91060859180d72cbfdf59b7
    f9f1ca5445
  160. [build] bump version to 29.1rc2 eb1574af0c
  161. [doc] man pages for 29.1rc2 0034dcfba9
  162. Merge bitcoin/bitcoin#33226: [29.x] 33106 backport and final changes for rc2
    0034dcfba9dc599449e7569ed1b30e58d4f4434f [doc] man pages for 29.1rc2 (glozow)
    eb1574af0c6cba4918957d704c5c0f17235a10b5 [build] bump version to 29.1rc2 (glozow)
    f9f1ca5445fc216c770b583c1db999aaf910f96f [doc] update release notes (glozow)
    9dd7efc8c3fc30cd65ae18a8a91e292c71fe7c16 [policy] lower default minrelaytxfee and incrementalrelayfee to 100sat/kvB (glozow)
    bbdab3ef7b7e8f3da4e571f35692bc3264c384db [prep/test] make wallet_fundrawtransaction's minrelaytxfee assumption explicit (glozow)
    da30ca0efadd3861016f6435636d9b399da65162 [prep/util] help MockMempoolMinFee handle more precise feerates (glozow)
    a0ae3fc8a764121b17e11e3a99330e73c0e44c2d [prep/test] replace magic number 1000 with respective feerate vars (glozow)
    1c1970fb45896dc5fa7b16370408c34964ed4c19 [miner] lower default -blockmintxfee to 1sat/kvB (glozow)
    3a7e093f948571e058db31dd971dc628d9729232 [doc] assert that default min relay feerate and incremental are the same (glozow)
    567c3ee3cb937de09d3fe8b7e82e431993fac7c7 [test] explicitly check default -minrelaytxfee and -incrementalrelayfee (glozow)
    6b5396c4b1b3561f79e0c4881dad5eb0ca7b44ae [test] RBF rule 4 for various incrementalrelayfee settings (glozow)
    03da7aff996eaaddce04448f8461d4f3d15d2a4a [test] check bypass of minrelay for various minrelaytxfee settings (glozow)
    4e3cfa660d1ab1552881f2eedb5123ab7d0fe0b0 [test] check miner doesn't select 0fee transactions (glozow)
    
    Pull request description:
    
      Backports #33106 and includes final changes for 29.1rc2. Based on current network conditions (in which nodes rejecting 0.1-1sat/vB are missing many transactions), it is recommended to change these policy settings.
    
      I did not include #32750 because it causes #33177 and I don't foresee any problems; it was just a nice to have.
      For reviewers: the backport is unclean but fairly straightforward. I just had to adapt a test that is no longer in master (#32973) and include `-datacarriersize` in order to pad transaction size (#32406).
    
    ACKs for top commit:
      dergoegge:
        utACK 0034dcfba9dc599449e7569ed1b30e58d4f4434f
      marcofleon:
        ACK  0034dcfba9dc599449e7569ed1b30e58d4f4434f
      murchandamus:
        crACK 0034dcfba9dc599449e7569ed1b30e58d4f4434f
      brunoerg:
        crACK 0034dcfba9dc599449e7569ed1b30e58d4f4434f
    
    Tree-SHA512: 1b7540ac3fec5b15cf36926dbf633054f14549d76aa445a2bf042b5667e8637db4f9c21c869af25a0c3f8c7cca6c585d17896d2f7e95a6264c1ff59817446694
    89fe999cda
  163. doc: update example bitcoin conf for 29.1rc2 65dc198d2c
  164. Merge bitcoin/bitcoin#33234: doc: update example bitcoin conf for 29.1rc2
    65dc198d2cf7160f54a469a0c806232e83dc7599 doc: update example bitcoin conf for 29.1rc2 (fanquake)
    
    Pull request description:
    
      Followup to #33226.
    
    ACKs for top commit:
      dergoegge:
        ACK 65dc198d2cf7160f54a469a0c806232e83dc7599
      willcl-ark:
        ACK 65dc198d2cf7160f54a469a0c806232e83dc7599
    
    Tree-SHA512: b2924783dd98890bd031dbca8c9c126cd3ab45c3cc8d2f14dd5b5f940fcc7061f3d1f73e2d36482afceaae786f3087b59baab98db0f10bc0d19e3f016f52851a
    027a60d218
  165. index: don't commit state in BaseIndex::Rewind
    The committed state of an index should never
    be ahead of the flushed chainstate. Otherwise, in the case
    of an unclean shutdown, the blocks necessary to revert
    from the prematurely committed state would not be
    available, which would corrupt the coinstatsindex in particular.
    Instead, the index state will be committed with the next
    ChainStateFlushed notification.
    
    Github-Pull: #33212
    Rebased-From: 01b95ac6f496e24e525b2fc9d69ee8b543da65ff
    16b1710d97
  166. test: index with an unclean restart after a reorg
    This test fails without the previous commit.
    
    Github-Pull: #33212
    Rebased-From: a602f6fb7bf5f9e57299f4d6e246c82379fad8d2
    fcac8022d8
  167. Merge bitcoin/bitcoin#33251: [29.x] backport #33212
    fcac8022d839572f5d8781096eec14ca7ea2e0dd test: index with an unclean restart after a reorg (Martin Zumsande)
    16b1710d97464f134a526634a412a4b1b6cc8639 index: don't commit state in BaseIndex::Rewind (Martin Zumsande)
    
    Pull request description:
    
      Backports #33212 to 29.x
    
    ACKs for top commit:
      achow101:
        ACK fcac8022d839572f5d8781096eec14ca7ea2e0dd
      stickies-v:
        ACK fcac8022d8
      mzumsande:
        Code Review ACK fcac8022d839572f5d8781096eec14ca7ea2e0dd
    
    Tree-SHA512: eeb9213f03bbb1d48c3ccb12121a6e475f436895d314b5171007e7e4ee457c74b312fa7f0d1808d6221dc22b192700a93ea21c4e9e04689da7dde7e1f79e9569
    162c009c1d
  168. doc: Remove wrong and redundant doxygen tag
    Remove it in feerate.
    
    Fix it in the other places.
    
    Github-Pull: #33236
    Rebased-From: 966666de9a6211b8748f43d682490c924e132e58
    6448ebb5a7
  169. ci: return to using dash in CentOS job
    Github-Pull: #33261
    Rebased-From: 509ffea40abbc706ef8b8fc449b7de8677fc5096
    99ab2e70e7
  170. doc: finalise release notes for 29.1 b0d88bcc50
  171. build: bump version to v29.1 final 37d115c67e
  172. doc: update manual pages for v29.1 084c95a18c
  173. Merge bitcoin/bitcoin#33271: [29.x] finalise v29.1
    084c95a18c9978c0a047ffe219a9eef8ab327ea6 doc: update manual pages for v29.1 (fanquake)
    37d115c67eafec68128649651a7e921c3e2635ce build: bump version to v29.1 final (fanquake)
    b0d88bcc501bf0fc06e64c2f0a295b99a1101073 doc: finalise release notes for 29.1 (fanquake)
    99ab2e70e782bf5ca753ad636f69642da6054283 ci: return to using dash in CentOS job (fanquake)
    6448ebb5a7c942949a70ffc4a1d2a93338fac130 doc: Remove wrong and redundant doxygen tag (MarcoFalke)
    
    Pull request description:
    
      Backports:
      * #33236
      * #33261
    
      Since `rc2`, #33212 was also backported in #33251.
    
    ACKs for top commit:
      glozow:
        ACK 084c95a18c9978c0a047ffe219a9eef8ab327ea6
      willcl-ark:
        ACK 084c95a18c9978c0a047ffe219a9eef8ab327ea6
    
    Tree-SHA512: 0698e5b2d12f7328bf5af8dbbd92b0049de401c0a4af27fda2209f9aab35d827c5ac65eb9268aa1fae241e3adf0d3dd89324bb288655ead8af2b5584aae1f6d2
    fd784f2774
  174. ci: Use APT_LLVM_V in msan task
    Also, use update-alternatives to avoid having to manually specify
    clang-${APT_LLVM_V} or llvm-symbolizer-${APT_LLVM_V} everywhere.
    
    Github-Pull: #32999
    Rebased-From: fad040a5787a8ac0a13aef5c54e5a675de239e92
    10cbf2255d
  175. ci: allow libc++ instrumentation other than msan
    Github-Pull: #33099
    Rebased-From: 6653cafd0b70b0e7a29c6cfe236d3bf9d1bce91e
    0fba5ae021
  176. ci: instrument libc++ in TSAN job
    Qt is disabled, as the build is now taking a very long time.
    
    Github-Pull: #33099
    Rebased-From: b09af2ce508185086bb551bfeb1409355c897e7b
    f9939cdbe0
  177. ci: remove DEBUG_LOCKORDER from TSAN job
    Github-Pull: #33099
    Rebased-From: 7aa5b67132dfb71e915675a3dbcb806284e08197
    5513516241
  178. ci: use LLVM 21
    Github-Pull: #33258
    Rebased-From: 4cf0ae474ba03830c86653f1abae4ab4d38c94e4
    ea40fa95d9
  179. doc: update release notes for 29.x 7c6be9acae
  180. Merge bitcoin/bitcoin#33294: [29.x] *san CI backports
    7c6be9acae5a16956a7f8e53ae3f944a187a6713 doc: update release notes for 29.x (fanquake)
    ea40fa95d9af004d85187bee9d8efe278c888d8f ci: use LLVM 21 (fanquake)
    5513516241463333548600f691a861dba4c1d5c5 ci: remove DEBUG_LOCKORDER from TSAN job (fanquake)
    f9939cdbe01fa090bd2ece90f5cbfb17120c2f24 ci: instrument libc++ in TSAN job (fanquake)
    0fba5ae02101b358aa4938d35471356b75e0e615 ci: allow libc++ instrumentation other than msan (fanquake)
    10cbf2255d9e74166f5f41e82fefa4a7f890e73f ci: Use APT_LLVM_V in msan task (MarcoFalke)
    
    Pull request description:
    
      Backports:
      * #32999
      * #33099 (added `ninja-build`)
      * #33258
    
    ACKs for top commit:
      marcofleon:
        ACK 7c6be9acae5a16956a7f8e53ae3f944a187a6713, looks okay to me
    
    Tree-SHA512: 928882d505ed8101a6d4123947252a84d40bd350383408926b5c37aed56dc3359067d1d14c443c51351a6958a8dd9e141bb7713665295ff1f1ad86c5f8a36df0
    a0e438bd49
  181. Fix benchmark CSV output
    The `SHA256AutoDetect` return output is used, among other use cases, to
    name benchmarks. Using a comma breaks the CSV output.
    
    This change replaces the comma with a semicolon, which fixes the issue.
    
    Github-Pull: #33340
    Rebased-From: 790b440197bde322432a5bab161f1869b667e681
    2717331981
  182. ci: always use tag for LLVM checkout
    Rather than trying to match the apt installed clang version, which is
    prone to intermittent issues. i.e #33345.
    
    Github-Pull: #33364
    Rebased-From: b736052e39f1f466f63f261ace3dd2deba171e8a
    324caa8497
  183. trace: Workaround GCC bug compiling with old systemtap
    Github-Pull: #33310
    Rebased-From: 93a29ff2830162c8129d35c7b9beb43fab984503
    e97588fc3d
  184. p2p: Add witness mutation check inside FillBlock
    Since #29412, we have not allowed mutated blocks to continue
    being processed immediately the block is received, but this
    is only done for the legacy BLOCK message.
    
    Extend these checks as belt-and-suspenders to not allow
    similar mutation strategies to affect relay by honest peers
    by applying the check inside
    PartiallyDownloadedBlock::FillBlock, immediately before
    returning READ_STATUS_OK.
    
    This also removes the extraneous CheckBlock call.
    
    Github-Pull: #32646
    Rebased-From: bac9ee4830664c86c1cb3d38a5b19c722aae2f54
    9b95ab5e9d
  185. p2p: remove vestigial READ_STATUS_CHECKBLOCK_FAILED
    Github-Pull: #32646
    Rebased-From: 28299ce77636d7563ec545d043cf1b61bd2f01c1
    4c940d4789
  186. net: check for empty header before calling FillBlock
    Previously in debug builds, this would cause an Assume crash if
    FillBlock had been called previously. This could happen when multiple
    blocktxn messages were received.
    
    Co-Authored-By: Greg Sanders <gsanders87@gmail.com>
    
    Github-Pull: #33296
    Rebased-From: 5e585a0fc4fd68dd7b4982054b34deae2e7aeb89
    569ceb0df4
  187. test: send duplicate blocktxn message in p2p_compactblocks.py
    Add test_multiple_blocktxn_response that checks that the peer is
    disconnected.
    
    Github-Pull: #33296
    Rebased-From: 8b6264768030db1840041abeeaeefd6c227a2644
    1288d44804
  188. net: Do not apply whitelist permission to onion inbounds
    Tor inbound connections do not reveal the peer's actual network address.
    Therefore do not apply whitelist permissions to them.
    
    Co-authored-by: Vasil Dimov <vd@FreeBSD.org>
    
    Github-Pull: #33395
    Rebased-From: f563ce90818d486d2a199439d2f6ba39cd106352
    61cdc04a83
  189. doc: update release notes for 29.x 9bc4afb62c
  190. build: bump version to v29.2rc1 461dd13faf
  191. doc: update manual pages for v29.2rc1 f2bd79f80c
  192. Merge bitcoin/bitcoin#33344: [29.x] Backports
    f2bd79f80c74a2b77f14954ac65679417697a332 doc: update manual pages for v29.2rc1 (fanquake)
    461dd13fafa6f8175e2be4d96e8728e667ba4d69 build: bump version to v29.2rc1 (fanquake)
    9bc4afb62cf04a41b62fe279f0db3d87e700cb3d doc: update release notes for 29.x (fanquake)
    61cdc04a832cc5dfe98c48f8592c4de513258304 net: Do not apply whitelist permission to onion inbounds (Martin Zumsande)
    1288d44804cd6ecd8601d0aef55e6fbf500d2f31 test: send duplicate blocktxn message in p2p_compactblocks.py (Eugene Siegel)
    569ceb0df46fc619eed33f56b5b36f617c37bae7 net: check for empty header before calling FillBlock (Eugene Siegel)
    4c940d47897bc380d3387dd6663c37c46b4020ec p2p: remove vestigial READ_STATUS_CHECKBLOCK_FAILED (Greg Sanders)
    9b95ab5e9db1691be5f26fc5bc1c186777d2dc5b p2p: Add witness mutation check inside FillBlock (Greg Sanders)
    e97588fc3d1e1a02382312ade7d529c5b4b60016 trace: Workaround GCC bug compiling with old systemtap (Luke Dashjr)
    324caa84977cc74ac19df605503483e59739773e ci: always use tag for LLVM checkout (fanquake)
    2717331981ec94fd616a08f31e643391a2118639 Fix benchmark CSV output (Hennadii Stepanov)
    
    Pull request description:
    
      Backports:
      * #32646
      * #33296
      * #33310
      * #33340
      * #33364
      * #33395
    
      Plus changes for 29.2rc1.
    
    ACKs for top commit:
      darosior:
        utACK f2bd79f80c74a2b77f14954ac65679417697a332
      mzumsande:
        utACK f2bd79f80c74a2b77f14954ac65679417697a332
    
    Tree-SHA512: 346a92032b7a069e2941056c6273ff65e360c5834832b106350a9cd42b634518cc75b807da6e51a6292e3a33342bb7b145777d3538a2792e03c63962d747a025
    7e1eca4882
  193. ci: add configure environment action
    Github-Pull: #32989
    Rebased-From: b8fcc9fcbcd
    f63b8e960d
  194. ci: add caching actions
    Github-Pull: #32989
    Rebased-From: b232b0fa5e9
    
    Add "Restore" and "Save" caching actions.
    
    These actions reduce boilerplate in the main ci.yml configuration file.
    
    These actions are implemented so that caches will be saved on `push`
    only.
    
    When a pull request is opened it will cache hit on the caches from the
    lastest push, or in the case of depends will hit on any matching depends
    hash, falling back to partial matches.
    
    Depends caches are hashed using
    `$(git ls-tree HEAD depends "ci/test/$FILE_ENV" | sha256sum | cut -d' ' -f1)`
    and this hash is passed in as an input to the actions. This means we
    direct cache hit in cases where depends would not be re-built, otherwise
    falling back to a partial match.
    
    Previous releases cache is hashed similarly to depends, but using the
    test/get_previous_releases.py file.
    
    The cirruslabs cache action will fallback transparently to GitHub's
    cache in the case that the job is not being run on a Cirrus Runner,
    making these compatible with running on forks (on free GH hardware).
    301aa5d814
  195. ci: add REPO_USE_CIRRUS_RUNNERS
    Github-Pull: #32989
    Rebased-From: 33ba073df7a
    
    If set, Cirrus runners will be used on pushes to, and pull requests
    against, this repository.
    
    Forks can set this if they have their own cirrus runners.
    954c1a55e4
  196. ci: add configure-docker action
    Github-Pull: #32989
    Rebased-From: fdf64e55324
    
    Another action to reduce boilerplate in the main ci.yml file.
    
    This action will set up a docker builder compatible with caching build
    layers to a container registry using the `gha` build driver.
    
    It will then configure the docker build cache args.
    1faf918a16
  197. ci: use buildx in ci
    Github-Pull: #32989
    Rebased-From: 94a09325475
    
    Using buildx is required to properly load the correct driver, for use
    with registry caching. Neither build, nor BUILDKIT=1 currently do this
    properly.
    
    Use of `docker buildx build` is compatible with podman.
    f3089fb2cf
  198. ci: use docker build cache arg directly
    Github-Pull: #32989
    Rebased-From: 18f6be09d02
    
    Reverts: e87429a2d0f23eb59526d335844fa5ff5b50b21f
    
    This was added in PR #31545 with the intention that self-hosted runners
    might use it to save build cache.
    
    As we are not using hosted runners with a registry build cache, the bulk
    of this commit can be reverted, simply using the value of
    $DOCKER_BUILD_CACHE_ARG in the script.
    
    link: https://github.com/bitcoin/bitcoin/pull/31545
    0a649d07c9
  199. ci: have base install run in right dir
    Github-Pull: #32989
    Rebased-From: 9c2b96e0d03
    
    This sets the build dir at build time so that Apple SDK gets installed
    in the correct/expected location for the runtime to find it.
    
    Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
    af086431e8
  200. ci: add Cirrus cache host
    Github-Pull: #32989
    Rebased-From: 020069e6b71
    
    Whilst the action cirruslabs/actions/cache will automatically set this
    host, the docker `gha` build cache backend will not be aware of it.
    
    Set the value here, which will later be used in the docker build args to
    enable docker build cache on the cirrus cache.
    f9f3e8b686
  201. ci: add job to determine runner type
    Github-Pull: #32989
    Rebased-From: cc1735d7771
    
    To remove multiple occurances of the respository name, against which we
    compare `${{ github.repository }}` to check if we should use Cirrus
    Runners, introduce a helper job which can check a single environment
    variable and output this as an input to subsequent jobs.
    
    Forks can maintain a trivial patch of their repo name against the
    `REPO_USE_CIRRUS_RUNNERS` variable in ci.yml if they have Cirrus Runners
    of their own, which will then enable cache actions and docker build
    cache to use Cirrus Cache.
    
    It's not possible to use `${{ env.USE_CIRRUS_RUNNERS }}` in the
    `runs-on:` directive as the context is not supported by GitHub.
    
    If it was, this job would no longer be necessary.
    849993377d
  202. ci: port arm 32-bit job
    Github-Pull: #32989
    Rebased-From: f253031cb8e
    
    Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
    82c60a3151
  203. ci: update windows-cross job
    Github-Pull: #32989
    Rebased-From: 04e7bfbceb0
    
    Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
    894a3cbe42
  204. ci: update asan-lsan-ubsan
    Github-Pull: #32989
    Rebased-From: 884251441bb
    
    Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
    819ee09af3
  205. ci: force reinstall of kernel headers in asan
    Github-Pull: #32989
    Rebased-From: 2c990d84a3d
    
    When using hosted runners in combination with cached docker images,
    there is the possibility that the host runner image is updated,
    rendering the linux-headers package (stored in the cached docker image)
    incompatible.
    
    Fix this by doing a re-install of the headers package in
    03_test_script.sh.
    
    If the underlying runner kernel has not changed thie has no effect, but
    prevents the job from failing if it has.
    a91567a980
  206. ci: port mac-cross-gui-notests
    Github-Pull: #32989
    Rebased-From: 9c2514de534
    
    Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
    835b5b8bb1
  207. ci: port nowallet-libbitcoinkernel
    Github-Pull: #32989
    Rebased-From: 2a00b12d73b
    
    Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
    e826c3daa5
  208. ci: port i686-multiprocess-DEBUG
    Github-Pull: #32989
    Rebased-From: f2068f26c12
    
    Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
    544f902b2a
  209. ci: port fuzzer-address-undefined-integer-nodepends
    Github-Pull: #32989
    Rebased-From: 341196d75c3
    
    Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
    85ec6c6882
  210. ci: port previous-releases-depends-debug
    Github-Pull: #32989
    Rebased-From: 58e38c3a042
    
    Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
    5057b9a6ff
  211. ci: port centos-depends-gui
    Github-Pull: #32989
    Rebased-From: 549074bc643
    
    Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
    b4286cf354
  212. ci: port tidy
    Github-Pull: #32989
    Rebased-From: bf7d5364527
    
    Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
    3b2dcc8b9a
  213. ci: port tsan-depends
    Github-Pull: #32989
    Rebased-From: 9bbae61e3b4
    
    Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
    643385b22d
  214. ci: port msan-depends
    Github-Pull: #32989
    Rebased-From: d290a8e6eab
    
    Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
    0f0378fe3c
  215. ci: port lint
    Github-Pull: #32989
    Rebased-From: bc41848d00f
    
    Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
    06424fb004
  216. ci: remove .cirrus.yml
    Github-Pull: #32989
    Rebased-From: 4393ffdd837
    
    Removed as unused.
    a08c3cc51c
  217. ci: dynamically match makejobs with cores
    Github-Pull: #32989
    Rebased-From: 3f339e99e00
    
    Previously jobs were running on a large multi-core server where 10 jobs
    as default made sense (or may even have been on the low side).
    
    Using hosted runners with fixed (and lower) numbers of vCPUs we should
    adapt compilation to match the number of cpus we have dynamically.
    
    This is cross-platform compatible with macos and linux only.
    c7f290b826
  218. doc: Detail configuration of hosted CI runners
    Github-Pull: #32989
    Rebased-From: f4272844833dd660c2b9db587856baa408889302
    4339787379
  219. ci: add ccache hit-rate warning when < 75%
    Github-Pull: #32989
    Rebased-From: dd1c5903e8d
    
    Print the ccache hit-rate for the job using a GitHub annotation if it
    was below 75%.
    773e4cda94
  220. ci: fix annoying docker warning
    Github-Pull: #32989
    Rebased-From: 2aa288efdda
    
    Docker currently warns that we are missing a default value.
    
    Set this to scratch which will error if an appropriate image tag is not
    passed in to silence the warning.
    4e8b64b181
  221. ci: remove un-needed lint_run*.sh files
    Github-Pull: #32989
    Rebased-From: 3c5da69a232
    
    ci/lint_run_all.sh: Only used in .cirrus.yml. Refer to test/lint/README.md on how to run locally.
    6ded1fe117
  222. ci: reduce runner sizes on various jobs
    Github-Pull: #33319
    Rebased-From: 5eeb2facbbbbf68a2c30ef9e6747e39c85d7b116
    
    These jobs can use reduced runner size to avoid wasting CPU, as much of
    the long-running part of the job is single-threaded.
    
    Suggested in: https://github.com/bitcoin/bitcoin/pull/32989#discussion_r2321775620
    
    Co-authored-by: MarcoFalke <*~=`'#}+{/-|&$^_@721217.xyz>
    4a034cbeb4
  223. ci: Checkout latest merged pulls
    Github-Pull: #33303
    Rebased-From: fa8f081af31
    78d93effd0
  224. ci: link against -lstdc++ in native fuzz with msan job
    Github-Pull: #33425
    Rebased-From: b77137a5644e09a08442aed7d8a4a9290fb53526
    5750355139
  225. Merge bitcoin/bitcoin#33403: Backport Cirrus runners to 29.x
    5750355139eb7fc2bd11124adf46bf053be6b690 ci: link against -lstdc++ in native fuzz with msan job (fanquake)
    78d93effd03278b46e21ae8ef79f61f4ec32f855 ci: Checkout latest merged pulls (MarcoFalke)
    4a034cbeb42763c6b7a82089973c4a30cb0cd1c4 ci: reduce runner sizes on various jobs (will)
    6ded1fe11752372c52169d2aec7f0658bf9b0455 ci: remove un-needed lint_run*.sh files (willcl-ark)
    4e8b64b181e1bb7d82789699eaac24dc1242afa3 ci: fix annoying docker warning (will)
    773e4cda9446a03c0b23468ef8a9e38496b4566b ci: add ccache hit-rate warning when < 75% (will)
    4339787379d2d246846e60f10ab9582805a6845e doc: Detail configuration of hosted CI runners (will)
    c7f290b826fc4928c6e1e0a9649da85d4752717b ci: dynamically match makejobs with cores (will)
    a08c3cc51c6875ba67f25c85143fdb61a8ba3e03 ci: remove .cirrus.yml (will)
    06424fb004f916b06e4f0ab90fd6f7623049a360 ci: port lint (will)
    0f0378fe3c590e835aa30be092f37109ddd63b86 ci: port msan-depends (will)
    643385b22d9908f7665bf2addc734ba0323967b0 ci: port tsan-depends (will)
    3b2dcc8b9aea8706a25690a0cd08ba60896d3542 ci: port tidy (will)
    b4286cf354a8111ed54fb63547dc1a7be7257b92 ci: port centos-depends-gui (will)
    5057b9a6ffd360dbd96ad8585e10852961392361 ci: port previous-releases-depends-debug (will)
    85ec6c6882b40adb35c9cb88d37d22e3e58eaa68 ci: port fuzzer-address-undefined-integer-nodepends (will)
    544f902b2a9cf14cd0445f27802cd11c5c945b00 ci: port i686-multiprocess-DEBUG (will)
    e826c3daa55d3b4cbd0e2c13765f9158eb225bfd ci: port nowallet-libbitcoinkernel (will)
    835b5b8bb18a318026ada74d3c63b89d6aab742b ci: port mac-cross-gui-notests (will)
    a91567a980adb93a05f12ec63b628ee3faaa4681 ci: force reinstall of kernel headers in asan (will)
    819ee09af31687dedd38de68aef98b0ecc19608f ci: update asan-lsan-ubsan (will)
    894a3cbe42bf900788b858faf59b3d97412e7d47 ci: update windows-cross job (will)
    82c60a31515a2004976faaa26f8caad9e2bb022d ci: port arm 32-bit job (will)
    849993377d76c64cc5ea14336e6523434608deb3 ci: add job to determine runner type (will)
    f9f3e8b68616dfb9e18082d191b87a457c4100da ci: add Cirrus cache host (will)
    af086431e86c82a5e40b05270f39c70cfe413c7b ci: have base install run in right dir (will)
    0a649d07c994b1a6957131c8bb3a1d2e8d53e559 ci: use docker build cache arg directly (will)
    f3089fb2cfdba533fba1298e909628e5fe7dabb9 ci: use buildx in ci (will)
    1faf918a169b76e69a486eb7fc8d88429b77b4b6 ci: add configure-docker action (will)
    954c1a55e4a6322267071f5bffeb3188a6ac7d59 ci: add REPO_USE_CIRRUS_RUNNERS (will)
    301aa5d814b620287b65d93399a20a794659cc79 ci: add caching actions (will)
    f63b8e960d5d06cdbbc360aaf781c13fd5aca172 ci: add configure environment action (will)
    
    Pull request description:
    
      Backports #32989 to the 29.x branch
    
    ACKs for top commit:
      m3dwards:
        ACK 5750355139eb7fc2bd11124adf46bf053be6b690
    
    Tree-SHA512: c0509903043acd1c1e62f6382d9373a5c7a51377a76cbe6ea0cacf83cb03b10e658b8fd0dc2080acb9d6361f0a7883feb0134acd9bc53d164561364d42e111e7
    f6d49d0a09
  226. test: add block 2016 to mock mainnet
    The next commit requires an additional mainnet block which changes the difficulty.
    
    Also fix a few minor mistakes in the test (suite):
    - rename the create_coinbase retarger_period argument to halving_period. Before bitcoin#31583 this was hardcoded for regtest where these values are the same.
    - drop unused fees argument from mine helper
    
    Finally the CPU miner instructions for generating the alternative mainnet chain are expanded.
    
    Github-Pull: #33446
    Rebased-From: 4c3c1f42cf705e039751395799240da33ca969bd
    118abf4c30
  227. rpc: fix getblock(header) returns target for tip
    A target field was added to the getblock and getblockheader RPC calls in bitcoin#31583, but it mistakingly always used the tip value.
    
    Because regtest does not have difficulty adjustment, a test is added for mainnet instead.
    
    Github-Pull: #33446
    Rebased-From: bf7996cbc3becf329d8b1cd2f1007fec9b3a3188
    22ab141243
  228. doc: rpc: fix case typo in `finalizepsbt` help (final_scriptwitness)
    Github-Pull: #33484
    Rebased-From: ff05bebcc4262966b117082a67dc4c63a3f67d2d
    9d9baafc6f
  229. fuzz: don't bypass_limits for most mempool harnesses
    Using bypass_limits=true is essentially fuzzing part of a
    reorg only, and results in TRUC invariants unable to be
    checked. Remove most instances of bypassing limits, leaving
    one harness able to do so.
    
    Github-Pull: #33504
    Rebased-From: bbe8e9063c15dc230553e0cbf16d603f5ad0e4cf
    6f23ead4a2
  230. Mempool: Do not enforce TRUC checks on reorg
    Not enforcing TRUC topology on reorg was the intended
    behavior, but the appropriate bypass argument was not
    checked.
    
    This mistake means we could potentially invalidate a long
    chain of perfectly incentive-compatible transactions that
    were made historically, including subsequent non-TRUC
    transactions, all of which may have been very high feerate.
    
    Lastly, it wastes CPU cycles doing topology checks since
    this behavior cannot actually enforce the topology in
    general for the reorg setting.
    
    Github-Pull: #33504
    Rebased-From: 26e71c237d9d2197824b547f55ee3a0a60149f92
    666aec7d49
  231. test: add more TRUC reorg coverge
    Github-Pull: #33504
    Rebased-From: 06df14ba75be5f48cf9c417424900ace17d1cf4d
    a8bb76b61f
  232. doc: update release notes for 29.x 2d7ebd2d91
  233. Merge bitcoin/bitcoin#33474: [29.x] Backports
    2d7ebd2d913ea63c1a23fefa0a09ee06fb069161 doc: update release notes for 29.x (fanquake)
    a8bb76b61f49e1abd681f21a754f970eef206ced test: add more TRUC reorg coverge (Greg Sanders)
    666aec7d49506c587ecbbcd71f6e8f1e7bb4e4cd Mempool: Do not enforce TRUC checks on reorg (Greg Sanders)
    6f23ead4a2d97e245f4fc1824b1dd956dc06cc42 fuzz: don't bypass_limits for most mempool harnesses (Greg Sanders)
    9d9baafc6f9357179e57fdcc6cf2ce36d65dd16d doc: rpc: fix case typo in `finalizepsbt` help (final_scriptwitness) (Sebastian Falbesoner)
    22ab141243eeb4a929e589ef70a6f54a5aaed3ba rpc: fix getblock(header) returns target for tip (Sjors Provoost)
    118abf4c305c01e6359a8588327a0b011ca52944 test: add block 2016 to mock mainnet (Sjors Provoost)
    
    Pull request description:
    
      Backports:
      * #33446
      * #33484
      * #33504
    
    ACKs for top commit:
      luke-jr:
        ACK 2d7ebd2d913ea63c1a23fefa0a09ee06fb069161
      dergoegge:
        ACK 2d7ebd2d913ea63c1a23fefa0a09ee06fb069161
      marcofleon:
        ACK 2d7ebd2d913ea63c1a23fefa0a09ee06fb069161
    
    Tree-SHA512: 27b852177d8502d6c703cb0eeb1e4df9d651c9c8add5fbf6ae4eeb4b8aefc145471f38f9794c0ed276bf7ebba1844ecbaf5a84cb5913ca7d0a546f5216ea3b2d
    d1b5d4e9ca
  234. contrib: fix using macdploy script without translations.
    QT translations are optional, but the script would error when
    'translations_dir' falls back to its default value NULL.
    
    This PR fixes it by moving the set-up of QT translations under
    the check for 'translations_dir' presence.
    
    Github-Pull: #33482
    Rebased-From: 7b5261f7ef3d88361204c40eb10c0d9dc44f5ed7
    6b3c1dbc5c
  235. build: bump version to v29.2rc2 eea16f7de7
  236. doc: update manual pages for v29.2rc2 513cef75ee
  237. doc: update release notes for 29.2rc2 d82fc69829
  238. Merge bitcoin/bitcoin#33534: [29.x] Finalise 29.2rc2
    d82fc69829cd8cabbaf2c3a969597b40c32edc86 doc: update release notes for 29.2rc2 (fanquake)
    513cef75ee06bc5d310a22d366a5f3c815aa1499 doc: update manual pages for v29.2rc2 (fanquake)
    eea16f7de7c4382e4491f3b018ecd0c36678affb build: bump version to v29.2rc2 (fanquake)
    6b3c1dbc5c0df4357ee7f57ac238bcdff55526af contrib: fix using macdploy script without translations. (amisha)
    
    Pull request description:
    
      It's been 2 weeks since rc1: https://github.com/bitcoin/bitcoin/releases/tag/v29.2rc1.
      We've backported more changes:
      * #33403
      * #33474
      * #33482
    
      Lets do `rc2`.
    
    ACKs for top commit:
      davidgumberg:
        reACK d82fc69
      glozow:
        ACK d82fc69829cd8cabbaf2c3a969597b40c32edc86
      darosior:
        utACK d82fc69829cd8cabbaf2c3a969597b40c32edc86. Changes look good to me, but i have not been through the process of regenerating the doc myself.
    
    Tree-SHA512: c829efe89f86c9c76767ffe60a3779ece902ee9e3c8f6b4203562aaf257019484bfa49916ddfabdcabbd1478368d9b80a3f0a15057778aa1984852ea245283a6
    398c176ea8
  239. build: fix depends Qt download link abf4a6eeae
  240. Merge bitcoin/bitcoin#33563: [29.x] build: fix depends Qt download link
    abf4a6eeaee116917dafd56eb9caee03e13048d2 build: fix depends Qt download link (fanquake)
    
    Pull request description:
    
      Fix Qt download path, so we wont always hit the fallback.
    
    ACKs for top commit:
      hebasto:
        ACK abf4a6eeaee116917dafd56eb9caee03e13048d2.
    
    Tree-SHA512: 1157528983ede46c60810eae5c73f4bd81640afcae9afd9aad14c30104e90c52f8e97755f22314a5514bc1de3a92d864398087fe826f1980acc772fd32535a9f
    8bcb90d7e3
  241. doc: update release notes for 29.2 3226616493
  242. build: bump version to v29.2 b2026fa290
  243. doc: update manual pages for v29.2 46d9b9091b
  244. Merge bitcoin/bitcoin#33551: [29.x] Finalise 29.2
    46d9b9091baa096da30da5e14329a32f1264229a doc: update manual pages for v29.2 (fanquake)
    b2026fa290f0aef9a0dcfe45750121f113e2ce7d build: bump version to v29.2 (fanquake)
    3226616493289b111997bb107e569fef54386743 doc: update release notes for 29.2 (fanquake)
    
    Pull request description:
    
      I'm optimistic that 29.2 wont need an `rc3`.
    
    ACKs for top commit:
      instagibbs:
        ACK 46d9b9091baa096da30da5e14329a32f1264229a
      stickies-v:
        ACK 46d9b9091baa096da30da5e14329a32f1264229a
      glozow:
        ACK 46d9b9091baa096da30da5e14329a32f1264229a
    
    Tree-SHA512: f515d2dfbbe60dc145f79425cb2e8ef7a443e69dab208b9acdf357dae7cca3f566f7d013a85c6d4330d8931da060320159a3a9d8dae0ea3ff18bba5aeb282722
    2d6426c296
  245. DrahtBot commented at 4:30 am on October 26, 2025: contributor
    ♻️ Automatically closing for now based on heuristics. Please leave a comment, if this was erroneous. Generally, please focus on creating high-quality, original content that demonstrates a clear understanding of the project’s requirements and goals.
  246. DrahtBot closed this on Oct 26, 2025

  247. DrahtBot commented at 4:30 am on October 26, 2025: contributor

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

    Code Coverage & Benchmarks

    For details see: https://corecheck.dev/bitcoin/bitcoin/pulls/33708.

    Reviews

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

    LLM Linter (✨ experimental)

    Possible typos and grammar issues:

    • C_VISBILITY_PRESET -> C_VISIBILITY_PRESET [spelling error in identifier makes the term unclear]
    • defintions -> definitions [spelling error]
    • intrumentation -> instrumentation [spelling error]

    drahtbot_id_5_m

  248. achow101 renamed this:
    29.x
    .
    on Oct 26, 2025
  249. bitcoin locked this on Oct 26, 2025

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: 2025-11-02 18:12 UTC

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