Commit Graph

50130 Commits

Author SHA1 Message Date
jpk68
d837bb38a4 contrib/init: fix unused variables in openrc script 2026-08-14 19:01:16 -04:00
merge-script
683e05a265 Merge bitcoin/bitcoin#35889: rpc: avoid quadratic gettxspendingprevout work and preserve order
ae36e2ef79 rpc: avoid quadratic prevout resolution (Lőrinc)
da1eaeb350 rpc: preserve `gettxspendingprevout` order (Lőrinc)
f98753e762 refactor: identify prevouts by request index (Lőrinc)
221a3fe5cf test: cover mixed `gettxspendingprevout` order (Lőrinc)

Pull request description:

  **Problem:** `gettxspendingprevout` erases each mempool result from a vector while holding `mempool.cs`, shifting the remaining requests every time and making large calls quadratic in the critical section.
  For 10,000 mempool matches, an [operation-count model](https://godbolt.org/z/nzch7McPG) reaches nearly 50 million moves.
  For mixed requests, the RPC returns mempool results before `txospenderindex` results instead of following request order.
  #34749 introduced both regressions.

  **Fix:** `gettxspendingprevout` stores each result at its request position and collects unresolved requests in a reserved worklist for the `txospenderindex` lookup.
  The mempool pass is linear, the response follows request order, and Clang can verify the lock requirement on `GetConflictTx`.

  **Benchmark:** The [functional benchmark](https://gist.github.com/l0rinc/c3231e287cacfdefd100dbf95cd0c3ad) sends mempool-only requests ranging from 8,000 to 128,000 entries ten times per size.
  Using the same settings for the unfixed and fixed commits:

  ```text
  AMD Ryzen 7 3700X (8 cores)
  unfixed  ██████████████████████████████  90 s
  fixed    ███▒░░░░░░░░░░░░░░░░░░░░░░░░░░  10 s  (-80 s, 9.0x faster)

  Raspberry Pi 5 (4 cores)
  unfixed  ██████████████████████████████  685 s
  fixed    ▓░░░░░░░░░░░░░░░░░░░░░░░░░░░░░  22 s  (-663 s, 31.1x faster)
  ```

  The unfixed run timed out after ~9 minutes on a Raspberry Pi 4 with 1 GB RAM.

  <details><summary>Benchmark command</summary>

  ```bash
  for commit in 963b061358 46e7173550a93cbe9d4e8ea28cfe7216286d8197; do \
    git fetch origin "$commit" && git checkout --detach "$commit" && \
    rm -rfd build && cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=OFF -DENABLE_WALLET=OFF >/dev/null 2>&1 && \
    ninja -C build -j1 bitcoind >/dev/null 2>&1 && \
    build/test/functional/test_runner.py rpc_gettxspendingprevout_quadratic.py --repeats=10 || break; \
  done
  ```
  </details>

ACKs for top commit:
  andrewtoth:
    ACK ae36e2ef79
  sedited:
    Re-ACK ae36e2ef79

Tree-SHA512: c7734cae481f6638228c8fd3cc6d4c3fbc26cec6981dae7902292af08eae37455d37ff196da2cca5c3694271c99154838431ff21c12855f81f5f10edf85a793a
2026-08-14 22:01:12 +02:00
merge-script
230185a5ee Merge bitcoin/bitcoin#35971: net_processing: remove unused code
0cff3cc518 net_processing: Remove redundant porphanTx in ProcessOrphanTx (fanquake)
c7eacbd45b net_processing: remove Peer& from UpdatePeerStateForReceivedHeaders (fanquake)

Pull request description:

  Remove unused `peer` param from `UpdatePeerStateForReceivedHeaders`.
  Remove redundant `porphanTx` declaration from `ProcessOrphanTx`.

ACKs for top commit:
  marcofleon:
    ACK 0cff3cc518
  sedited:
    ACK 0cff3cc518

Tree-SHA512: d71684052f9f6c788b4d551886e7f6022d76300e9288089eea5fd0c87f9466dbcff88c9004899a399c669477988437e935aad06960cec721c650b66508c7a16a
2026-08-14 21:49:44 +02:00
Lőrinc
ae36e2ef79 rpc: avoid quadratic prevout resolution
`gettxspendingprevout` erases each mempool result from its worklist while holding `mempool.cs`, shifting the remaining requests every time and making the pass quadratic when it resolves many requests.
Collect unresolved requests in a reserved worklist so the mempool pass is linear and the compiler can verify the lock requirement on `GetConflictTx`.

Co-authored-by: Andrew Toth <andrewstoth@gmail.com>
2026-08-14 11:29:28 -07:00
Lőrinc
da1eaeb350 rpc: preserve gettxspendingprevout order
Store each `gettxspendingprevout` result at its request position so mixed mempool and `txospenderindex` results preserve request order.
2026-08-14 11:26:32 -07:00
Lőrinc
f98753e762 refactor: identify prevouts by request index
Replace `Entry`'s pointer into `output_params` with the request index, which identifies both the input and its response slot.
2026-08-14 11:26:32 -07:00
Lőrinc
221a3fe5cf test: cover mixed gettxspendingprevout order
Record that `gettxspendingprevout` currently returns mempool results before `txospenderindex` results for mixed requests.
2026-08-14 11:26:28 -07:00
merge-script
dec68f997e Merge bitcoin/bitcoin#35852: scripted-diff: Use inline const(expr) over static constexpr in headers
fab74a0e92 refactor: Use C++14 digit separator for large int literals (MarcoFalke)
fae759be79 scripted-diff: Use inline constexpr over plain constexpr (MarcoFalke)
fa74f58a26 scripted-diff: Use inline const over (static) const (MarcoFalke)
fab1a62c87 refactor: Use inline constexpr for string literals in headers (MarcoFalke)
fa08bbed8d contrib: Adjust generate-seeds.py to write inline constexpr (MarcoFalke)
fad753611b scripted-diff: Use inline constexpr over (static) const (MarcoFalke)
faedb52583 refactor: Make CFeeRate(integral) ctor constexpr (MarcoFalke)
5555d5dcb5 scripted-diff: Use inline constexpr over static constexpr (MarcoFalke)
fa6e1a1e85 refactor: Remove static from constexpr functions in headers (MarcoFalke)

Pull request description:

  Both are fine and this refactor doesn't change any behavior.

  However, `inline constexpr` from C++17 will ensure each symbol has a single address
  across all TU, making the release binary minimally smaller. (For me it is smaller by about 1kB)

ACKs for top commit:
  l0rinc:
    reACK fab74a0e92
  rustaceanrob:
    ACK fab74a0e92
  hebasto:
    ACK fab74a0e92, I have reviewed the code and it looks OK.

Tree-SHA512: 6ec94136c12bcbf696812d0661c9857318a69e367c79fc00b9ca0b4068f269d10e5548d95c9ba2070225308c12d7a54fe8cb8447de7e0979cba99f48892b35f9
2026-08-14 17:29:46 +01:00
merge-script
e95bab98f0 Merge bitcoin/bitcoin#35960: common: remove ::runtime_error from RunCommandParseJSON
8b5da677d7 common: remove ::runtime_error from RunCommandParseJSON (fanquake)

Pull request description:

  I don't think there's a code path that can reach `RunCommandParseJSON` if we compile with `ENABLE_EXTERNAL_SIGNER=OFF`. If there is a reason for having the code this way, it could  be good to document.

  This also requires more workarounds in #35911.

ACKs for top commit:
  stickies-v:
    re-ACK 8b5da677d7
  sedited:
    ACK 8b5da677d7
  willcl-ark:
    ACK 8b5da677d7

Tree-SHA512: b0c50372fed35afe47713310851f0b58cd1803fbe87a3a5a75877772172a3881283394a91663251de22a9972f56b46d84ddc868686dec8b970474cfaf5dc0d32
2026-08-14 16:20:34 +01:00
merge-script
aad830ac4a Merge bitcoin/bitcoin#35847: test: move more tests to baseindex_tests and run them for all indexes
34c03075a5 test: run generic baseindex tests against every index type (Martin Zumsande)
11b3e251c4 test: make baseindex flush test chain-length agnostic (Martin Zumsande)
8b959f4c6a test: move unclean_shutdown test to baseindex_tests (Martin Zumsande)
2232d6afbe test: move index_reorg_crash to baseindex_tests (Martin Zumsande)
a3597e2683 test: move BuildChain helper into test mining util (Martin Zumsande)
954985e6a3 test: simplify blockfilter test's BuildChain helper (Martin Zumsande)

Pull request description:

  In #34897, the `baseindex_tests` unit test was introduced, meant for tests that test basic index functionality (e.g. reorg or unclean shutdown behavior) that should work regardless of the particular index type.
  This PR moves two more of these tests (`index_reorg_crash`, `coinstatsindex_unclean_shutdown`) from test files of specific indexes into that folder.
  In the second part, tests are executed sequentially for all index types instead of just one particular one, where applicable.

  Before moving `index_reorg_crash`  I extracted the `BuildChain` helper to `util/mining` so that it can be used by multiple tests. While doing that, I simplified the helper a bit.

ACKs for top commit:
  jeanpablojp:
    tACK 34c03075a5
  sedited:
    ACK 34c03075a5

Tree-SHA512: 1d7a43160a9b7ec3c75a8c806967f2031da4855fe449c9c8aac8e44b1940e5ee28fde9473406666e74a682cf135b87f8c0eb9ddba50fce156dce9fc54a7763eb
2026-08-14 16:13:57 +01:00
fanquake
0cff3cc518 net_processing: Remove redundant porphanTx in ProcessOrphanTx 2026-08-14 14:05:42 +01:00
fanquake
c7eacbd45b net_processing: remove Peer& from UpdatePeerStateForReceivedHeaders 2026-08-14 11:52:59 +01:00
fanquake
8b5da677d7 common: remove ::runtime_error from RunCommandParseJSON
I don't think there's a code path that can reach RunCommandParseJSON if
we compile with `-DENABLE_EXTERNAL_SIGNER=OFF`. This also requires more
workarounds in #35911.

Co-authored-by: stickies-v <stickies-v@protonmail.com>
2026-08-14 10:39:20 +01:00
merge-script
11090c8bb3 Merge bitcoin/bitcoin#35951: doc: release note about I2P ElGamal sunset
800ad9c3c0 doc: release note I2P ElGamal sunset (Jon Atack)

Pull request description:

  See discussion in https://github.com/bitcoin/bitcoin/pull/35696.

ACKs for top commit:
  janb84:
    re ACK 800ad9c3c0
  sedited:
    ACK 800ad9c3c0

Tree-SHA512: 35ba1f0a25b0921ca81fb531500a15dc6ea34b304637b1a7e675f4bd772e6af85d024a3d672dcaf73a5b438a2d6d45c741f41daf140efc29a068e54affaa9025
2026-08-13 11:02:41 +02:00
Ava Chow
b2c45888fd Merge bitcoin/bitcoin#35866: test: Verify unwelcome RPC clients are rejected before reading their requests
d055a3ab10 test: verify disallowed RPC clients are rejected upon `accept()` (winterrdog)

Pull request description:

  this is a follow-up PR from a suggestion in this [comment](https://github.com/bitcoin/bitcoin/pull/35592#pullrequestreview-4823271031)

  it adds a unit test that confirms that clients not permitted by
  `-rpcallowip` are rejected immediately after `accept()`, before any
  request bytes are read from the socket

  specifically, the test checks that: no request is ever dispatched to the
  server's request handler, the connection is closed without any response
  to the client, no `HTTPRemoteClient` is ever registered for it, and the
  client's request bytes are left completely unread in the socket's
  receive buffer

ACKs for top commit:
  achow101:
    ACK d055a3ab10
  pinheadmz:
    ACK d055a3ab10
  w0xlt:
    reACK d055a3ab10

Tree-SHA512: 5b99eb8a795e302333549f3ea5c76118c380402e2ebac8256db0a06ac0b4c0739b0b94471aa2f278214e65574e84f321b416e2543b361bf4fd8eb6854768377a
2026-08-12 15:16:19 -07:00
Ava Chow
625f951ba2 Merge bitcoin/bitcoin#35959: Update secp256k1 subtree to latest master
09cc345c3e Squashed 'src/secp256k1/' changes from d2d04864ef..687155df6b (fanquake)

Pull request description:

  We recently pulled the secp256k1 subtree (#35781), to get access to the recently-merged silent payments module (used in multiple PRs here). Since then, libsecp256k1 has merged more changes, and had a [`0.8.0` release](https://github.com/bitcoin-core/secp256k1/releases/tag/v0.8.0), so update to latest master again.

  Includes:
  * https://github.com/bitcoin-core/secp256k1/pull/1709
  * https://github.com/bitcoin-core/secp256k1/pull/1776
  * https://github.com/bitcoin-core/secp256k1/pull/1863
  * https://github.com/bitcoin-core/secp256k1/pull/1869
  * https://github.com/bitcoin-core/secp256k1/pull/1886
  * https://github.com/bitcoin-core/secp256k1/pull/1896
  * https://github.com/bitcoin-core/secp256k1/pull/1897
  * https://github.com/bitcoin-core/secp256k1/pull/1899
  * https://github.com/bitcoin-core/secp256k1/pull/1900
  * https://github.com/bitcoin-core/secp256k1/pull/1901
  * https://github.com/bitcoin-core/secp256k1/pull/1902
  * https://github.com/bitcoin-core/secp256k1/pull/1903
  * https://github.com/bitcoin-core/secp256k1/pull/1904
  * https://github.com/bitcoin-core/secp256k1/pull/1906
  * https://github.com/bitcoin-core/secp256k1/pull/1907

ACKs for top commit:
  l0rinc:
    ACK f464f6cd67
  achow101:
    ACK f464f6cd67
  w0xlt:
    ACK f464f6cd67

Tree-SHA512: e7a3d0113c08fccd54f6734154aa6ed3aa06a6e52fb52eacb82c82c7079a23bfee8da9aa3934fc3c173097631394b4ba22d17ca6b73f6bf478dcb0c0a227d8d4
2026-08-12 14:22:40 -07:00
Ava Chow
e9ed5e83a3 Merge bitcoin/bitcoin#35605: wallet: rpc: Deprecate removeprunedfunds RPC
f280f5eb47 wallet: rpc: deprecate removeprunedfunds (David Gumberg)
e5b7785447 test: wallet: resend: avoid internal behavior via removeprunedfunds (David Gumberg)

Pull request description:

  Originally added in https://github.com/bitcoin/bitcoin/pull/7558 as a companion to `importprunedfunds`, this RPC has no known helpful use while being both dangerous and a maintenance burden.

  Despite what the name says, it allows the deletion of arbitrary transactions, and `importprunedfunds` does not allow the importing of transactions not belonging to the user, and `listtransactions` does not list transactions not belonging to the wallet, so this RPC can only be used to delete transactions actually belonging to the wallet, and in the unlikely event that transactions not belonging to the wallet are present, they cause no harm except for occupying a few bytes on the users disk.

ACKs for top commit:
  achow101:
    ACK f280f5eb47
  polespinasa:
    ACK f280f5eb47
  pablomartin4btc:
    reACK f280f5eb47

Tree-SHA512: ed9c30c50be514d637999b4c8f3fa9b9b1446a5553e3974703638b45d8f55f1291f5cfb82dd2ead6d0743e424e9e3b1edbd56fc04dae3dcdee4d175e2a1ce061
2026-08-12 14:15:17 -07:00
Jon Atack
800ad9c3c0 doc: release note I2P ElGamal sunset 2026-08-12 13:02:49 -06:00
merge-script
2f72123f61 Merge bitcoin/bitcoin#35867: test: classify SOCKS5 peers via getpeerinfo addrbind
4e8c4bc794 test: classify SOCKS5 peers via getpeerinfo addrbind (Henry Romp)

Pull request description:

  p2p_private_broadcast.py classifies each SOCKS5 connection by scanning the node's debug log for `trying v. connection (...) to <addr>:<port>`, then attaches a fake peer for that type. The helper returned the first match in the whole log, so when a feeler selected a clearnet address that private broadcast had used earlier in the run (in the CI failure, `[50::1]:8333`, about 10 seconds apart), the feeler was labelled private-broadcast, was given the `NoRelayP2PInterface`, and disconnected as a feeler rather than with the expected "connected in vain" message.

  Instead of relying on the debug log, identify the connection via the SOCKS5 proxy client socket's source address, which equals the node's `addrbind` for that peer, and read `connection_type` from getpeerinfo. The proxy replies to the SOCKS5 request before invoking `destinations_factory`, so the node has already registered the peer by the time classification runs. This also stops treating debug.log contents as a stable test interface. Dropping the log scrape removes a full re-read of debug.log per SOCKS5 connection; `p2p_private_broadcast.py` goes from ~23s to ~14s locally.

  Fixes #35843

  Tested with:
  `build/test/functional/test_runner.py p2p_private_broadcast.py p2p_private_broadcast_retry_v1.py --timeout-factor=2`, and against the forced-feeler repro from the issue, which no longer mislabels the feeler.

ACKs for top commit:
  jeanpablojp:
    tACK 4e8c4bc794
  andrewtoth:
    ACK 4e8c4bc794
  mzumsande:
    Code Review ACK 4e8c4bc794

Tree-SHA512: ce2db418787d7ecf518bd49b37d7d664748fee5991a2924522dfaf42b27d90ca001caa0611011310636b453d3aada1061d086f20bb866eb66605645935f55c74
2026-08-12 17:41:34 +01:00
fanquake
f464f6cd67 Update secp256k1 subtree to lastest master 2026-08-12 15:58:59 +01:00
fanquake
09cc345c3e Squashed 'src/secp256k1/' changes from d2d04864ef..687155df6b
687155df6b Merge bitcoin-core/secp256k1#1897: tests: check results before using outputs
8a700a355e Merge bitcoin-core/secp256k1#1907: release cleanup: bump version after 0.8.0
78657bf28b release cleanup: bump version after 0.8.0
6e2c8bc4ec Merge bitcoin-core/secp256k1#1906: release: prepare for 0.8.0
5840c19b4e release: prepare for 0.8.0
3873647bfb Merge bitcoin-core/secp256k1#1904: sha256: cross-check caller supplied compression function
c84ea46561 sha256: cross-check caller supplied compression function
f8c75f89a5 Merge bitcoin-core/secp256k1#1903: changelog: add entry for #1821
2076b06a42 changelog: add entry for #1821
7fecac74ae Merge bitcoin-core/secp256k1#1709: release-process: Add signing of tarball plus minor improvements
12d9cfd86e release-process: Add attaching output of check-abi.sh to PR
b0a0ae8246 release-process: Add "cleaning up"
4a73b1ae27 release-process: Fix nits
fae22e777e release-process: Add signing of tarball
34f00ca9d9 release-process: Refactor
1c2933bb87 Merge bitcoin-core/secp256k1#1902: changelog: add entry for #1859
51fc633e3e changelog: add entry for #1859
d77f44e9cd Merge bitcoin-core/secp256k1#1863: ellswift: don't declassify or leave sk in sha256 buffer
0ae17e304e ellswift: don't declassify or leave sk in sha256 buffer
0a9e788901 Merge bitcoin-core/secp256k1#1900: Use SHA256 override for pointers to known aux functions
300c9bb26d Merge bitcoin-core/secp256k1#1901: changelog: Add entry for #1869
44ba8cd7df changelog: Add entry for #1869
4147f8bdf6 header: Add note on SHA256 override and aux functions
ed091bc49d ecdsa/ecdh: Use SHA256 override if known noncefp/hashfp is passed
209ed1025b Merge bitcoin-core/secp256k1#1886: Remove deprecated `secp256k1_context_no_precomp` pointer
bf435856bb Remove deprecated `secp256k1_context_no_precomp` pointer
528863e61f Merge bitcoin-core/secp256k1#1869: Remove SECP256K1_GNUC_PREREQ macro
3a73d473f2 Merge bitcoin-core/secp256k1#1776: Remove deprecated `secp256k1_schnorrsig_sign` alias
e14756bd25 Remove deprecated `secp256k1_schnorrsig_sign` alias
7151e3b843 Merge bitcoin-core/secp256k1#1899: changelog: add missing entries for #1777 and #1860
f52eb393c4 changelog: add missing entries for #1777 and #1860
0f6baf319f Merge bitcoin-core/secp256k1#1896: silentpayments: address #1765 follow-ups, add changelog entry
a2ad68cd81 ec: check pubkey sort test results
93280c2291 silentpayments: check test serialization
b8de1bc30f musig: check infinity test setup
0618af8131 extrakeys: check test pubkey loads
1d3f72d3fa recovery: check exhaustive API results
564afb0b06 ellswift: check test operation results
658c7edc24 tests: check exhaustive ecmult success
d9ac2ee5e6 Add changelog entry for silentpayments module
0fa38f3d29 silentpayments: API docs and internal comment followups
ae075d7cbd hash: Include secp256k1.h directly
dba4d937a9 include: Remove SECP256K1_GNUC_PREREQ macro
09870e9c54 Use __GNUC__ instead of SECP256K1_GNUC_PREREQ

git-subtree-dir: src/secp256k1
git-subtree-split: 687155df6b76f1da1639a6f0923b69e6beaa3a09
2026-08-12 15:58:59 +01:00
merge-script
4c045f1a03 Merge bitcoin/bitcoin#35945: depends, qt: Add patch for missing headers
e8500cbd19 depends, qt: Add patch for missing headers (Hennadii Stepanov)

Pull request description:

  This PR fixes the build when using recent Clang releases and libc++.

  From https://github.com/hebasto/bitcoin-core-nightly/actions/runs/31400107892/job/93492660951:
  ```
  [27/1645] Building CXX object qtbase/src/tools/syncqt/CMakeFiles/syncqt.dir/main.cpp.o
  FAILED: [code=1] qtbase/src/tools/syncqt/CMakeFiles/syncqt.dir/main.cpp.o
  /usr/bin/clang++-24  -stdlib=libc++ -DQT_EXPLICIT_QFILE_CONSTRUCTION_FROM_PATH -DQT_LEAN_HEADERS=1 -DQT_NAMESPACE=\"\" -DQT_NO_DEBUG -DQT_NO_FOREACH -DQT_NO_JAVA_STYLE_ITERATORS -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_NO_QASCONST -DQT_NO_QEXCHANGE -DQT_NO_QSNPRINTF -DQT_USE_QSTRINGBUILDER -DQT_VERSION_MAJOR=6 -DQT_VERSION_MINOR=8 -DQT_VERSION_PATCH=4 -DQT_VERSION_STR=\"6.8.4\" -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_FAST -I/home/runner/work/bitcoin-core-nightly/bitcoin-core-nightly/depends/work/build/x86_64-pc-linux-gnu/qt/6.8.4-e34d706caeb/qtbase/src/tools/syncqt -I/home/runner/work/bitcoin-core-nightly/bitcoin-core-nightly/depends/work/build/x86_64-pc-linux-gnu/qt/6.8.4-e34d706caeb/qtbase/mkspecs/linux-clang -I/home/runner/work/bitcoin-core-nightly/bitcoin-core-nightly/depends/work/build/x86_64-pc-linux-gnu/qt/6.8.4-e34d706caeb/qtbase/include -I/home/runner/work/bitcoin-core-nightly/bitcoin-core-nightly/depends/x86_64-pc-linux-gnu/include  -ffile-prefi
  /home/runner/work/bitcoin-core-nightly/bitcoin-core-nightly/depends/work/build/x86_64-pc-linux-gnu/qt/6.8.4-e34d706caeb/qtbase/src/tools/syncqt/main.cpp:82:10: error: no member named 'transform' in namespace 'std'
     82 |     std::transform(s.begin(), s.end(), s.begin(),
        |          ^~~~~~~~~
  /home/runner/work/bitcoin-core-nightly/bitcoin-core-nightly/depends/work/build/x86_64-pc-linux-gnu/qt/6.8.4-e34d706caeb/qtbase/src/tools/syncqt/main.cpp:89:10: error: no member named 'transform' in namespace 'std'
     89 |     std::transform(s.begin(), s.end(), s.begin(),
        |          ^~~~~~~~~
  2 errors generated.
  [28/1645] Building C object qtbase/src/3rdparty/pcre2/CMakeFiles/BundledPcre2.dir/src/pcre2_ucd.c.o
  [29/1645] Building C object qtbase/src/3rdparty/pcre2/CMakeFiles/BundledPcre2.dir/src/pcre2_match.c.o
  [30/1645] Building C object qtbase/src/3rdparty/pcre2/CMakeFiles/BundledPcre2.dir/src/pcre2_jit_compile.c.o
  ninja: build stopped: subcommand failed.
  gmake: *** [funcs.mk:343: /home/runner/work/bitcoin-core-nightly/bitcoin-core-nightly/depends/work/build/x86_64-pc-linux-gnu/qt/6.8.4-e34d706caeb/./.stamp_built] Error 1
  gmake: Leaving directory '/home/runner/work/bitcoin-core-nightly/bitcoin-core-nightly/depends'
  ```

  From https://github.com/hebasto/bitcoin-core-nightly/actions/runs/31403593334/job/93504547098:
  ```
  [892/1645] Building CXX object qtbase/src/plugins/platforms/xcb/CMakeFiles/XcbQpaPrivate.dir/qxcbatom.cpp.o
  FAILED: [code=1] qtbase/src/plugins/platforms/xcb/CMakeFiles/XcbQpaPrivate.dir/qxcbatom.cpp.o
  /usr/bin/clang++-24  -stdlib=libc++ -DQT_ASCII_CAST_WARNINGS -DQT_BUILDING_QT -DQT_BUILD_XCB_PLUGIN -DQT_BUILD_XCB_QPA_LIB_LIB -DQT_CORE_LIB -DQT_DEPRECATED_WARNINGS -DQT_EXPLICIT_QFILE_CONSTRUCTION_FROM_PATH -DQT_GUI_LIB -DQT_LEAN_HEADERS=1 -DQT_MOC_COMPAT -DQT_NO_CAST_TO_ASCII -DQT_NO_DEBUG -DQT_NO_EXCEPTIONS -DQT_NO_FOREACH -DQT_NO_JAVA_STYLE_ITERATORS -DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT -DQT_NO_QASCONST -DQT_NO_QEXCHANGE -DQT_NO_QSNPRINTF -DQT_USE_QSTRINGBUILDER -D_LARGEFILE64_SOURCE -D_LARGEFILE_SOURCE -D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_FAST -I/home/runner/work/bitcoin-core-nightly/bitcoin-core-nightly/depends/work/build/x86_64-pc-linux-gnu/qt/6.8.4-d5ec21e4777/qtbase/src/plugins/platforms/xcb/XcbQpaPrivate_autogen/include -I/home/runner/work/bitcoin-core-nightly/bitcoin-core-nightly/depends/work/build/x86_64-pc-linux-gnu/qt/6.8.4-d5ec21e4777/qtbase/src/plugins/platforms/xcb -I/home/runner/work/bitcoin-core-nightly/bitcoin-core-nightly/depends/work/build/x86_64-pc-linux-gnu/qt/6.8.4-d5ec21e4777/qtbase/src/plugins/platforms/xcb/gl_integrations -I/home/runner/work/bitcoin-core-nightly/bitcoin-core-nightly/depends/work/build/x86_64-pc-linux-gnu/qt/6.8.4-d5ec21e4777/qtbase/src/3rdparty/xcb/include -I/home/runner/work/bitcoin-core-nightly/bitcoin-core-nightly/depends/work/build/x86_64-pc-linux-gnu/qt/6.8.4-d5ec21e4777/qtbase/src/corelib -I/home/runner/work/bitcoin-core-nightly/bitcoin-core-nightly/depends/work/build/x86_64-pc-linux-gnu/qt/6.8.4-d5ec21e4777/qtbase/include/QtCore/6.8.4 -I/home/runner/work/bitcoin-core-nightly/bitcoin-core-nightly/depends/work/build/x86_64-pc-linux-gnu/qt/6.8.4-d5ec21e4777/qtbase/include/QtCore/6.8.4/QtCore -I/home/runner/work/bitcoin-core-nightly/bitcoin-core-nightly/depends/work/build/x86_64-pc-linux-gnu/qt/6.8.4-d5ec21e4777/qtbase/include -I/home/runner/work/bitcoin-core-nightly/bitcoin-core-nightly/depends/work/build/x86_64-pc-linux-gnu/qt/6.8.4-d5ec21e4777/qtbase/include/QtCore -I/home/runner/work/bitcoin-core-nightly/bitcoin-core-nightly/depends/work/build/x86_64-pc-linux-gnu/qt/6.8.4-d5ec21e4777/qtbase/mkspecs/linux-clang -I/home/runner/work/bitcoin-core-nightly/bitcoin-core-nightly/depends/work/build/x86_64-pc-linux-gnu/qt/6.8.4-d5ec21e4777/qtbase/src/gui -I/home/runner/work/bitcoin-core-nightly/bitcoin-core-nightly/depends/work/build/x86_64-pc-linux-gnu/qt/6.8.4-d5ec21e4777/qtbase/include/QtGui/6.8.4 -I/home/runner/work/bitcoin-core-nightly/bitcoin-core-nightly/depends/work/build/x86_64-pc-linux-gnu/qt/6.8.4-d5ec21e4777/qtbase/include/QtGui/6.8.4/QtGui -I/home/runner/work/bitcoin-core-nightly/bitcoin-core-nightly/depends/work/build/x86_64-pc-linux-gnu/qt/6.8.4-d5ec21e4777/qtbase/include/QtGui -I/home/runner/work/bitcoin-core-nightly/bitcoin-core-nightly/depends/x86_64-pc-linux-gnu/include  -ffile-prefix-map=/home/runner/work/bitcoin-core-nightly/bitcoin-core-nightly/depends/work/build/x86_64-pc-linux-gnu/qt/6.8.4-d5ec21e4777=/usr -O2 -std=gnu++20 -fPIC -fvisibility=hidden -fvisibility-inlines-hidden -Wall -Wextra -fno-exceptions -ftemplate-depth=1024 -ffunction-sections -fdata-sections -U_FORTIFY_SOURCE -fcf-protection=full -D_FORTIFY_SOURCE=3 -ftrivial-auto-var-init=pattern -fstack-protector-strong -MD -MT qtbase/src/plugins/platforms/xcb/CMakeFiles/XcbQpaPrivate.dir/qxcbatom.cpp.o -MF qtbase/src/plugins/platforms/xcb/CMakeFiles/XcbQpaPrivate.dir/qxcbatom.cpp.o.d -o qtbase/src/plugins/platforms/xcb/CMakeFiles/XcbQpaPrivate.dir/qxcbatom.cpp.o -c /home/runner/work/bitcoin-core-nightly/bitcoin-core-nightly/depends/work/build/x86_64-pc-linux-gnu/qt/6.8.4-d5ec21e4777/qtbase/src/plugins/platforms/xcb/qxcbatom.cpp
  /home/runner/work/bitcoin-core-nightly/bitcoin-core-nightly/depends/work/build/x86_64-pc-linux-gnu/qt/6.8.4-d5ec21e4777/qtbase/src/plugins/platforms/xcb/qxcbatom.cpp:237:13: error: use of undeclared identifier 'free'
    237 |             free(reply);
        |             ^~~~
  1 error generated.
  ```

ACKs for top commit:
  fanquake:
    ACK e8500cbd19

Tree-SHA512: 694007e5f7a47af8b5284a1ee08a47227d2dffaf4bc8ea71f55270dcbd5b33e59df827eb643753f33403b2ebd2dc924f3f65a60cd5c7920e8d031f81e66c4a1a
2026-08-12 11:46:12 +01:00
merge-script
b061567235 Merge bitcoin/bitcoin#35947: build, msvc: Update vcpkg manifest baseline
e2bf51543a build, msvc: Disable default features of the `sqlite3` package (Hennadii Stepanov)
a31425610a build, msvc: Update vcpkg manifest baseline (Hennadii Stepanov)

Pull request description:

  This change updates the vcpkg manifest baseline from the ["2025.08.27 Release"](https://github.com/microsoft/vcpkg/releases/tag/2025.08.27) to the ["2026-07-29 Release"](https://github.com/microsoft/vcpkg/releases/tag/2026.07.29), with the following package changes:
   - boost: 1.88.0 --> 1.91.0
   - sqlite3: 3.50.4 --> 3.53.4
   - zeromq: 4.3.5#2 --> 4.3.5#3
   - qtbase: 6.9.1 --> 6.11.1#1
   - qttools: 6.9.1 --> 6.11.1
   - libqrencode: 4.1.1#2 --> 4.1.1#3

  The previous update was made in https://github.com/bitcoin/bitcoin/pull/33408.

  ---

  Additionally, the default features of the `sqlite3` package have been disabled. See the commit message for more details.

ACKs for top commit:
  fanquake:
    ACK e2bf51543a

Tree-SHA512: dc486afa3e4900ac44c2e51d4aaf1aa8bb4542cb8ef1e0ebb6444a171ea31171564e35f1fcc28469c2890437f23879d4468695033b1583e40709e0f717731ee7
2026-08-12 11:42:23 +01:00
Hennadii Stepanov
1f5c46f7ce Merge bitcoin/bitcoin#35931: ci: Check DLL imports of cross-built bitcoind.exe
67fee5bf44 ci: Check DLL imports of cross-built `bitcoind.exe` (Hennadii Stepanov)

Pull request description:

  Run `dumpbin.exe /imports` on the cross-built `bitcoind.exe` in the "Windows, test cross-built" jobs to list the imported DLLs and to ensure the executable is linked against the expected C runtime.

  This came up during a discussion in https://github.com/bitcoin/bitcoin/pull/35877 ([here](https://github.com/bitcoin/bitcoin/pull/35877#pullrequestreview-4882577358) and [here](https://github.com/bitcoin/bitcoin/pull/35877#issuecomment-5217049246)). Inspired by the analogous CI steps in https://github.com/hebasto/bitcoin-core-nightly.

ACKs for top commit:
  maflcko:
    lgtm ACK 67fee5bf44
  jeanpablojp:
    ACK 67fee5bf44

Tree-SHA512: 3cf054b5c76d5e536f7419ab87e3bc30afea30760fbb3112789a9930098350c0f40ea2c2de4c5b2d1123f1eb58a02aeca28c87461966cf072c3dc86e1b1f106f
2026-08-12 09:55:57 +01:00
Ava Chow
1bec7fa22c Merge bitcoin/bitcoin#35496: kernel: add btck_set_mock_time for testing time-dependent paths
156f2c6c49 kernel: add `btck_set_mock_time` for testing time-dependent paths (stringintech)

Pull request description:

  Some kernel paths read the current time (e.g. header validation's future-time check, and the `btck_SynchronizationState` carried by `btck_NotifyBlockTip` / `btck_NotifyHeaderTip` callbacks), which makes them awkward to exercise deterministically in tests. This PR exposes `btck_set_mock_time` as a wrapper over the existing `SetMockTime`, mirroring what the node has via the `setmocktime` RPC.

  Prior IRC discussion: https://gnusha.org/bitcoin-kernel/2026-06-04.log

ACKs for top commit:
  josibake:
    ACK 156f2c6c49
  purpleKarrot:
    ACK 156f2c6c49
  achow101:
    ACK 156f2c6c49
  janb84:
    ACK 156f2c6c49
  sedited:
    ACK 156f2c6c49

Tree-SHA512: da61faab0477fdc0de0e16420f228923d57733c42ef91b8947ef576e43abc8a1b78b9c1fa2ae60550ed5fd545f4d1c714dad0191d4442d4063112031ef7d1027
2026-08-11 13:18:13 -07:00
merge-script
c1967c4453 Merge bitcoin/bitcoin#35950: Update leveldb subtree to latest master
9f10ef5e96 Squashed 'src/leveldb/' changes from a7f9bdc611..13da2d6758 (fanquake)

Pull request description:

  Includes:
  * https://github.com/bitcoin-core/leveldb-subtree/pull/62
  * https://github.com/bitcoin-core/leveldb-subtree/pull/64 (used in #35911)

ACKs for top commit:
  l0rinc:
    code review ACK 3e76d22de2
  hebasto:
    ACK 3e76d22de2.
  sedited:
    ACK 3e76d22de2

Tree-SHA512: 88b9a673550ab95f99de5fb06c8313464b1a6b962a55aa911d7b8bb362eae71a283663460b1cab2aa99e37a066c3f52cfc834cf679b4db49d172bf91b32ae3fa
2026-08-11 21:38:40 +02:00
Ava Chow
512dc9af1b Merge bitcoin/bitcoin#35930: wallet: post-#35501 cleanups in CWalletTx
4ca182ca40 doc: clarify alternate_wtxids is empty when only one witness variant (pablomartin4btc)
fa48b5d28e test: assert listsinceblock "removed" reports current canonical wtxid (pablomartin4btc)
9b96ee1288 wallet, test: add unit test for variant txid validation in CWalletTx deserializer (pablomartin4btc)
9de6543cb5 wallet: post-#35501 cleanup in CWalletTx (pablomartin4btc)

Pull request description:

  Follow-up cleanups and clarifications after #35501 was merged.

  Commit breakdown:

  1. _post-[#35501](https://github.com/bitcoin/bitcoin/pull/35501) cleanup in_ `CWalletTx`
     - Rename `arg_state` → `new_state` in `Update()` for consistency
     - Simplify `RecomputeCanonical()` using `std::ranges::min_element` with a projection lambda (14 lines → 3 lines)
     - Add variant txid validation in the `CWalletTx` deserialise constructor: throws `std::runtime_error` if any variant's txid doesn't match the canonical txid deserialized from the stream
     - Move `Init()` to `private` and extend it to clear `m_txs` and reset `m_canonical_wtxid`, so a full re-deserialise via `Unserialize()` starts from a clean state

     All [suggested](https://github.com/bitcoin/bitcoin/pull/35501#pullrequestreview-4854519083) by ajtowns.

  2. _add unit test for variant txid validation in_ `CWalletTx` _deserializer_

  3. _assert_ `listsinceblock` "removed" _reports current canonical wtxid_
     Documents that removed entries reflect the wallet's current `CWalletTx` state, not a snapshot of the detached block. A future followup could improve this (requires per-block tracking of which witness variant was included).
     [Suggested](https://github.com/bitcoin/bitcoin/pull/35501#discussion_r3632044472) by w0xlt.

  4. _clarify_ `alternate_wtxids` _is empty when only one witness variant_
     [Suggested](https://github.com/bitcoin/bitcoin/pull/35501#discussion_r3632113003) by polespinasa.

ACKs for top commit:
  jeanpablojp:
    re-ACK 4ca182ca40
  achow101:
    ACK 4ca182ca40
  polespinasa:
    ACK 4ca182ca40

Tree-SHA512: 64eadeb11372d904c79edbfd264c4d8dc1b4fe4ce5e3acc301bfeba9e556efb5dce2c684f0e58c7b74e2c687cc7dd77389970662b3fd629ed034a97bcfdfb71c
2026-08-11 11:06:33 -07:00
Hennadii Stepanov
b970bb34d0 Merge bitcoin/bitcoin#33585: cmake: Use builtin support for .manifest files
99497b38f6 cmake: Unconditionally add .rc files to sources (Daniel Pfeifer)
654a4cf5e6 cmake: Use builtin support for .manifest files (Daniel Pfeifer)
8f695379f3 cmake: Unconditionally set WIN32_EXECUTABLE target property (Daniel Pfeifer)

Pull request description:

  Remove some redundant logic from the CMake code:

  * The `WIN32_EXECUTABLE` target property only has an effect when building for `WIN32`. Checking `WIN32` is redundant.
  * CMake has builtin support for `.rc` and `.manifest` files. Both may be added to sources unconditionally. They only have an effect when building for `WIN32`.

ACKs for top commit:
  151henry151:
    re-ACK 99497b38f6
  hebasto:
    ACK 99497b38f6.

Tree-SHA512: 3d1a6a86feefff58e06d2e692809349f8e5d50e7ded821da775420a6bbfd54baf7dfdba957a0c7e9fc61b87455addfe67a1cc48dbfe4a8e3055f69bb027109c0
2026-08-11 17:14:56 +01:00
merge-script
aa0e0f793f Merge bitcoin/bitcoin#35729: refactor: test: Unroll && conditions in macros
e8691056c0 test: Unroll `&&` conditions in macros (rustaceanrob)

Pull request description:

  Picked from #35713. Given that I think this is a strict debugging improvement, I opened as a separate pull:

  Using `&&` in `BOOST_CHECK` is problematic as failures will not indicate which condition failed. By unrolling these checks, the user knows exactly which expression is the failing case.

  As an example, here is a line that would be particularly hard to debug if it failed:

  ```
  src/test/net_tests.cpp

  BOOST_CHECK((*ret)[1] && (*ret)[1]->m_type == "headers" && std::ranges::equal((*ret)[1]->m_recv, MakeByteSpan(msg_data_2)));
  ```

  If any one of these conditions fail, the whole expression fails, with no values printed or indication as to which condition failed.

  This is also required when using test macros that support value decomposition, which requires `&&` and `||` are `delete`. Examples include `BOOST_TEST`, doctest, Catch2, etc.

  ref: https://catch2-temp.readthedocs.io/en/latest/assertions.html#other-limitations
  ref: https://fekir.info/post/decomposing-an-expression/

ACKs for top commit:
  maflcko:
    re-ACK e8691056c0 🌽
  ismaelsadeeq:
    reACK e8691056c0
  sedited:
    ACK e8691056c0

Tree-SHA512: 9eb74cecd47ee4fdc3f53beb7d50d5056d543303d023c68b8d47cbe52d37f1156488c8b943faf68dd52c192c43626037bbf08172e7cc24753e0f6070db6e3ab2
2026-08-11 17:17:53 +02:00
fanquake
3e76d22de2 Update leveldb subtree to latest master 2026-08-11 16:00:27 +01:00
fanquake
9f10ef5e96 Squashed 'src/leveldb/' changes from a7f9bdc611..13da2d6758
13da2d6758 Merge bitcoin-core/leveldb-subtree#64: refactor: add [[noreturn]] attribute to BackgroundThread*
8c6628bf14 refactor: add [[noreturn]] attribute to BackgroundThread*
8e89537cef Merge bitcoin-core/leveldb-subtree#62: ci: Add LevelDB test workflow
47abe23ff2 ci: run LevelDB tests in GitHub Actions

git-subtree-dir: src/leveldb
git-subtree-split: 13da2d6758396bd21bf76ca76f514700f82b2a62
2026-08-11 16:00:27 +01:00
merge-script
2c01832f7b Merge bitcoin/bitcoin#35493: wallet, descriptor: Fix MuSig private key completeness checks on importdescriptors
0390338692 test: check MuSig import private key warnings (woltx)
5e62fbf09c wallet: check descriptor private key completeness on import (woltx)
cd8d01bf47 descriptors: require complete MuSig private keys (woltx)

Pull request description:

  `importdescriptors` currently checks whether all private keys are present by expanding the descriptor and verifying that every expanded origin pubkey has a private key.

  This is wrong for MuSig descriptors because expansion includes the synthetic aggregate pubkey. There is no individual private key for that aggregate pubkey, so importing a fully private MuSig descriptor such as `rawtr(musig(A_priv,B_priv))` incorrectly returns:

  ```
  Not all private keys provided. Some wallet functionality may return unexpected errors
  ```

  This PR fixes the issue by making descriptor private-key completeness account for MuSig participant keys, and by having `importdescriptors` use `Descriptor::HavePrivateKeys()` instead of duplicating its own manual completeness check.

  The functional test covers both cases:

  - `rawtr(musig(A_priv,B_priv))` imports without warnings.
  - `rawtr(musig(A_priv,B_pub))` still warns that not all private keys were provided.

ACKs for top commit:
  achow101:
    ACK 0390338692
  theStack:
    Code-review ACK 0390338692

Tree-SHA512: a55fb084c63f725a0991556acdfb822f3a5a669f745a00b9f0bf0996b639986cdf5e2be2e8d3d0a2ee3fe5744355f20b40df576601792ef3db698e606629ad52
2026-08-11 12:27:37 +02:00
merge-script
b80cee0361 Merge bitcoin/bitcoin#35924: Wallet, refactor: Remove orphaned EraseWatchOnly function
6304789a18 Wallet, refactor: Remove orphaned EraseWatchOnly function (vicjuma)

Pull request description:

  **Summary**
  This is a follow-up PR for #28710 by achow101 where `bool LegacyScriptPubKeyMan::RemoveWatchOnly(const CScript &dest)` which was the only remaining caller for the function `EraseWatchOnly` was removed. This PR is just a cleanup to remove the orphaned function.

ACKs for top commit:
  jeanpablojp:
    ACK 6304789a18
  pablomartin4btc:
    ACK 6304789a18

Tree-SHA512: 48546b3fa9155d6f9549ce8e77d9fe34cbfc738e6814ac9cd256b85668d0fa325e51404f962d491c6d4989baefd03815c680578bfcc73741cf9c4e65b141f92e
2026-08-11 10:51:25 +01:00
merge-script
5d051c0562 Merge bitcoin/bitcoin#35943: doc: fix dead link in txrequest.h
a7b0b5084a doc: fix dead link in txrequest.h (cyb3ralbert)

Pull request description:

  The link is dead. Both the file and the whole `blockchainbib/` section return 404. The host certificate expired on 2026-08-07, so the site looks abandoned rather than moved.

  It was a local copy of Miller et al. 2015, *Discovering Bitcoin's Public Topology and Influential Nodes*. The [`blockchainbib` bibliography](https://github.com/kernoelpanic/blockchainbib) that distributed it points to `cs.umd.edu/projects/coinscope/coinscope.pdf`, where the original is still accessible.

  No other occurrences in the tree.

ACKs for top commit:
  l0rinc:
    ACK a7b0b5084a
  sedited:
    ACK a7b0b5084a

Tree-SHA512: 518b3c703417f544c7aa96d94db4cb92a669c0223eaefecd9847378061273258c45939376e47d616651e78eb090110a30ef9dc786506e1ae5d4ac7cd20cd0dcd
2026-08-11 09:11:55 +02:00
pablomartin4btc
4ca182ca40 doc: clarify alternate_wtxids is empty when only one witness variant
When there is only one known witness variant for a transaction,
alternate_wtxids is an empty array, analogous to walletconflicts and
mempoolconflicts.

Suggested-by: polespinasa
2026-08-10 23:03:35 -03:00
pablomartin4btc
fa48b5d28e test: assert listsinceblock "removed" reports current canonical wtxid
When a block is detached, listsinceblock "removed" entries reflect the
wallet's current CWalletTx rather than a snapshot of the variant that
was actually in the detached block. Add assertions to make this
behaviour explicit. A future followup could improve listsinceblock to
track and report the specific witness variant that was in the
disconnected block (requires per-block tracking of which witness variant was included).

Co-authored-by: w0xlt <94266259+w0xlt@users.noreply.github.com>
2026-08-10 23:03:35 -03:00
pablomartin4btc
9b96ee1288 wallet, test: add unit test for variant txid validation in CWalletTx deserializer 2026-08-10 23:03:35 -03:00
pablomartin4btc
9de6543cb5 wallet: post-#35501 cleanup in CWalletTx
- Rename arg_state to new_state in Update() declaration to match implementation
- Replace RecomputeCanonical manual loop with std::ranges::min_element
- Add variant txid validation in the deserialize constructor
- Make Init() private and have it clear all members including m_txs

Co-authored-by: Anthony Towns <aj@erisian.com.au>
2026-08-10 23:03:32 -03:00
Hennadii Stepanov
e2bf51543a build, msvc: Disable default features of the sqlite3 package
At the current builtin baseline, the only default feature is `json1`,
which enables SQLite's JSON functionality. Bitcoin Core does not use
it, and the depends build explicitly omits it with `-DSQLITE_OMIT_JSON`.
2026-08-10 23:26:01 +01:00
Hennadii Stepanov
a31425610a build, msvc: Update vcpkg manifest baseline
This change updates the vcpkg manifest baseline from the "2025.08.27
Release" to the "2026-07-29 Release", with the following package
changes:
 - boost: 1.88.0 --> 1.91.0
 - sqlite3: 3.50.4 --> 3.53.4
 - zeromq: 4.3.5#2 --> 4.3.5#3
 - qtbase: 6.9.1 --> 6.11.1#1
 - qttools: 6.9.1 --> 6.11.1
 - libqrencode: 4.1.1#2 --> 4.1.1#3
2026-08-10 23:00:58 +01:00
merge-script
757aa573c4 Merge bitcoin/bitcoin#33186: wallet, test: Ancient Wallet Migration from v0.14.3 (no-HD and Single Chain)
ea59f17220 test: cover v0.14.3 wallet migration (w0xlt)
18b8afd093 test: support v0.14.x in dumb_sync_blocks (w0xlt)

Pull request description:

  This PR adds test coverage for migrating legacy Bitcoin Core wallets from v0.14.3 (released in 2017) to the descriptor wallet format. The test validates that users can safely upgrade their wallets while preserving all funds, transaction history, and addresses.

  This test was originally developed on top of #32977, as it was requested in reviews.
  However, since it also increases test coverage, it can be merged independently.

  The test covers two wallet migration scenarios:

  * Non-HD Wallet Migration - Tests migration of non-HD wallets (created with `-usehd=0`)
  * Single Chain HD Wallet Migration - Tests migration of HD wallets from v0.14.3 (`VERSION_HD_BASE`)

  The node v0.14.3 cannot be synced using the normal test framework helpers because it does not have the `syncwithvalidationinterfacequeue` RPC, so the test uses `dumb_sync_blocks` to submit blocks from the ancient node to the modern node before migrating the wallet.

  Each scenario uses its own dedicated old/new node pair, which keeps the setup isolated and makes this testing best managed in a separate file rather than in the existing migration test files.

  On the Windows cross-built CI job, this test is excluded from the main functional test runner and re-run sequentially in an ASCII-only tmpdir, because the v0.14.3 binary cannot handle non-ASCII characters in the temporary directory path.

ACKs for top commit:
  furszy:
    utACK ea59f17220
  pablomartin4btc:
    reACK ea59f17220

Tree-SHA512: 35ef7173e10fe52f20db0d6d1f144c5a1343ff406d294ab7d0e346d79546797f3f145f2893d99bb7b57d71aa14580690ab80eae148ec94b91498eb0938b2d15e
2026-08-10 21:51:17 +02:00
Ava Chow
e8cc21c57f Merge bitcoin/bitcoin#35925: wallet, rpc: Exclude non-owned addresses from listreceivedby*
089c883c55 test: Add coverage for listreceivedby* excluding "send" addresses (pablomartin4btc)
873c054805 wallet: Exclude non-owned addresses from listreceivedby* (pablomartin4btc)

Pull request description:

  Fixes #16159.

  `listreceivedbyaddress`/`listreceivedbylabel` with `include_empty=true` walk the entire address book and return every entry that has no matching `mapTally` record — including addresses with a "send" purpose (foreign addresses that got a label via `setlabel`, the GUI, or `addmultisigaddress`) that this wallet never received funds to and doesn't own.

  This excludes those via `IsMine()` rather than the address book's `purpose` field, since `purpose` is set inconsistently across several code paths and `IsMine()` is the same check `mapTally` itself is already built from.

  Picks up prior work by kouloumos in #25973 and BrandonOdiwuor in #30972, both closed for
  inactivity:
  - [#25973](https://github.com/bitcoin/bitcoin/pull/25973) filtered on `purpose == "send"` directly. ryanofsky pointed out purpose "is set pretty haphazardly in code" and [suggested](https://github.com/bitcoin/bitcoin/pull/25973#discussion_r1269477246) `IsMine()` instead.
  - [#30972](https://github.com/bitcoin/bitcoin/pull/30972) implemented that, then furszy pointed out `IsMine()` only needs to run for addresses missing from `mapTally`, not every one. rkrux further suggested dropping the redundant re-lock in favor of `EXCLUSIVE_LOCKS_REQUIRED` directly on the lambda — matching the existing pattern in `wallet/interfaces.cpp` — and simplifying the branching.

  This PR carries that final approach forward on current master. The regression test is a small, standalone addition rather than reviving the test-file "split into subtests" refactor from the earlier PRs, which achow101 [flagged](https://github.com/bitcoin/bitcoin/pull/30972#issuecomment-3688186614) on #30972 as unrelated stylistic churn.

ACKs for top commit:
  polespinasa:
    lgtm re-ACK 089c883c55
  jeanpablojp:
    ACK 089c883c55
  achow101:
    ACK 089c883c55

Tree-SHA512: d45488c93b9294258faaab5d1891ca5e8c4b8d0d4feb298403c7c3f20d6aa08989d548cddd25ccd47a1ed969e4a309ee68ad1541c6121fed39ed534c78c256e7
2026-08-10 12:37:54 -07:00
Hennadii Stepanov
e8500cbd19 depends, qt: Add patch for missing headers
This fixes the build when using recent clang releases and libc++.
2026-08-10 17:43:21 +01:00
Daniel Pfeifer
99497b38f6 cmake: Unconditionally add .rc files to sources
CMake ignores .rc files when compiling for non-Windows platform.
Checking for WIN32 before adding an .rc file to sources is redundant.
2026-08-10 16:16:08 +02:00
Daniel Pfeifer
654a4cf5e6 cmake: Use builtin support for .manifest files
CMake ignores .rc and .manifest files when not building for WIN32.
2026-08-10 16:16:07 +02:00
Daniel Pfeifer
8f695379f3 cmake: Unconditionally set WIN32_EXECUTABLE target property
The property only has an effect when building for WIN32.
Checking for WIN32 before setting the property is redundant.
2026-08-10 16:16:06 +02:00
cyb3ralbert
a7b0b5084a doc: fix dead link in txrequest.h 2026-08-10 16:02:20 +03:00
Hennadii Stepanov
1d386c250f Merge bitcoin/bitcoin#35941: doc: remove mention of ::wsystem
57246934e7 doc: remove mention of wsystem (fanquake)

Pull request description:

  Followup to #35704.

ACKs for top commit:
  hebasto:
    ACK 57246934e7.

Tree-SHA512: a9aa6474d69323375e99c5780bb635b3d92b8dd02fb399329ae14aca4eff6fc160215d1b64deea23642de9aacaefe47970696120f4cdf931605bef9c4b5bcd89
2026-08-10 11:56:44 +01:00
fanquake
57246934e7 doc: remove mention of wsystem
Followup to #35704.
2026-08-10 11:28:14 +01:00
merge-script
5973e07588 Merge bitcoin/bitcoin#35937: test: Append print_suppressions=0 to LSAN_OPTIONS, and suppress bitcoin-qt
fad9ab714b test: Append print_suppressions=0 to LSAN_OPTIONS, and suppress bitcoin-qt (MarcoFalke)

Pull request description:

  (see commit msg for rationale and background).

  To test, one should be able to use the cmake options such as `-DCMAKE_C_COMPILER='clang' -DCMAKE_CXX_COMPILER='clang++' --preset=dev-mode -DBUILD_GUI=ON  -DSANITIZERS=address` on e.g. Fedora. Then see that the current suppressions file is insufficient, and also confirm that `print_suppressions=0` is required.

ACKs for top commit:
  fanquake:
    ACK fad9ab714b

Tree-SHA512: 1830b4aeb072fa18b76522a124a268073675da14255e469a6d86ee5de52cd08d5613d0c3bd8a66465b0c4636345c9e967923cd1fb516906a58b614fe0e700033
2026-08-10 10:22:24 +01:00