47702 Commits

Author SHA1 Message Date
Hao Xu
ef253a9d3d test: add block builder tests for txgraph
Add block builder tests to make sure chunks for a cluster are all right.
2026-02-07 13:06:26 +00:00
Hao Xu
4a1ac31e97 test: add a chunk test for txgraph
Add a test for GetWorstMainChunk(), which picks the worst chunk from
txgraph.

Co-developed-by: rkrux <rkrux.connect@gmail.com>
2026-02-07 13:06:19 +00:00
merge-script
54bd49c7e3
Merge bitcoin/bitcoin#34452: test: split interface_ipc.py
633d1831199a2ca6ca31b97312130419328d5479 test: misc interface_ipc_mining.py improvements (Sjors Provoost)
52ccd9215e6700ce3090c63f3a3017a1ae21f98c test: split interface_ipc_mining.py into subtests (Sjors Provoost)
4e49fa2a68846f04cec0beb64c80ba53d3163528 test: add interface_ipc_mining.py (Sjors Provoost)
01a1ae889e5aa71d9ae4a76000265572ffcae99f test: move IPC helpers to ipc_util.py (Sjors Provoost)

Pull request description:

  This test has been growing too large, making it difficult to maintain. Especially when multiple pull requests change it.

  - move helper functions to `ipc_util.py`
  - move mining test to `interface_ipc_mining.py`, keeping only an interface sanity check in `interface_ipc.py`
  - split the tests in `interface_ipc_mining.py`
  - misc tweaks (to reduce churn in the above commits)

  Review hint:

  ```sh
  git show --color-moved=dimmed-zebra --color-moved-ws=ignore-space-change
  ```

ACKs for top commit:
  janb84:
    re ACK 633d1831199a2ca6ca31b97312130419328d5479
  fjahr:
    reACK 633d1831199a2ca6ca31b97312130419328d5479
  l0rinc:
    code review ACK 633d1831199a2ca6ca31b97312130419328d5479
  sedited:
    Re-ACK 633d1831199a2ca6ca31b97312130419328d5479

Tree-SHA512: 81bbbec1f03a6ff63068dbefc1bc4768fcd24313d84ba454bb2494fe4a65838dbaeb93ad7f02ed4c9932394f3d24638453bb51ce0e05f561dc613414beda37e4
2026-02-07 10:07:08 +01:00
Ava Chow
3b39a8aeb4
Merge bitcoin/bitcoin#34483: refactor: Use SpanReader over DataStream
fa0677d131191d7db9868c4c1b3d780cb6991226 refactor: Use SpanReader over DataStream (MarcoFalke)
fad3eb39564569e7b09982bec68ae41e45a04f87 refactor: Use SpanReader over DataStream (MarcoFalke)
fa06e26764bbd00fc225df5f4601dd4f687273e0 refactor: [qt] Use SpanReader to avoid two vector copies (MarcoFalke)
fabd4d2e2e3ce734730c56660a958f9cf9dc7d38 refactor: Avoid UB in SpanReader::ignore (MarcoFalke)
fa20bc2ec27522959cdf1ad35d54f080aafbfc47 refactor: Use empty() over eof() in the streams interface (MarcoFalke)
fa879db735281d2cce123dbd59d20c7339b2b4ee test: Read debug log for self-checking comment (MarcoFalke)

Pull request description:

  This changes all places, where possible, to use SpanReader over DataStream. This makes the code easier to read and reason about, because `SpanReader` can never write data. Also, the code should be minimally faster, because it avoids a full redundant copy of the whole vector of bytes.

ACKs for top commit:
  stickies-v:
    re-ACK fa0677d131191d7db9868c4c1b3d780cb6991226
  achow101:
    ACK fa0677d131191d7db9868c4c1b3d780cb6991226
  janb84:
    re ACK fa0677d131191d7db9868c4c1b3d780cb6991226
  sipa:
    crACK fa0677d131191d7db9868c4c1b3d780cb6991226

Tree-SHA512: 1d9f43fc6e71d481cf7b8f8457f479745ee331734649e9e2c2ab00ce5d317112796c77afc328612ed004e65ac5c16fc92279d760cfb012cfddce9098c4af810f
2026-02-06 18:00:18 -08:00
Ava Chow
6f68e0c8b7
Merge bitcoin/bitcoin#34181: refactor: [p2p] Make ProcessMessage private again, Use references when non-null
fa43897c1d14549e7af0d9f912e765875b634c39 doc: Fix LLM nits in net_processing.cpp (MarcoFalke)
bbbba0fd4b87a5441c90d513d2022f4c4d9678cb scripted-diff: Use references when nullptr is not possible (MarcoFalke)
fac54154660438db6a601584fa91f87bc09395b2 refactor: Separate peer/maybe_peer in ProcessMessages and SendMessages (MarcoFalke)
fac529188e0db44875f8728c9e0b6a05d2145e75 refactor: Pass Peer& to ProcessMessage (MarcoFalke)
fa376095a01c421523ec5d012c6aafb006011788 refactor: Pass CNode& to ProcessMessages and SendMessages (MarcoFalke)
fada8380148c1266f2cc1ddb0f65f42651c82a62 refactor: Make ProcessMessage private again (MarcoFalke)
fa80cd3ceed4eb58732c2f6f748277772a8a1c36 test: [refactor] Avoid calling private ProcessMessage() function (MarcoFalke)

Pull request description:

  There is a single unit test, which calls the internal `ProcessMessage` function. This is problematic, because it makes future changes harder, since they will need to carry over this public internal interface each time.

  Also, there is a mixed use of pointers and references in p2p code, where just based on context, a pointer may sometimes assumed to be null, or non-null. This is confusing when reading the code, or making or reading future changes.

  Fix both issues in a series of commits, to:

  * refactor the single unit test to call higher-level functions
  * Make `ProcessMessage` private again
  * Use references instead of implicit non-null pointers, mostly in a scripted-diff

ACKs for top commit:
  optout21:
    reACK fa43897c1d14549e7af0d9f912e765875b634c39
  ajtowns:
    ACK fa43897c1d14549e7af0d9f912e765875b634c39
  Crypt-iQ:
    crACK fa43897c1d14549e7af0d9f912e765875b634c39
  achow101:
    ACK fa43897c1d14549e7af0d9f912e765875b634c39

Tree-SHA512: d03d8ea35490a995f121be3d2f3e4a22d1aadfeab30bc42c4f8383dab0e6e27046260e792d9e5a94faa6777490ba036e39c71c50611a38f70b90e3a01f002c9e
2026-02-06 17:10:25 -08:00
Ava Chow
d88997b809
Merge bitcoin/bitcoin#34299: wallet: remove PreSelectedInputs and re-activate "AmountWithFeeExceedsBalance" error
48161f6a0503d7dde693ef544f0d3285c8b93adc wallet: introduce "tx amount exceeds balance when fees are included" error (stratospher)
b7fa609ed1759472b004ce03c217cf4a5e32262c wallet: remove PreSelectedInputs (stratospher)
7819da2c1643e9ca892f0fc97ffc2003ac265dac walllet: use CoinsResult instead of PreSelectedInputs (stratospher)
e5474079f179c5637b6c5f2077a1c5223ea357e1 wallet: introduce GetAppropriateTotal() in CoinsResult (stratospher)
d8ea921d01404cc0b63b277878d0f2f988a1daba wallet: correctly reserve in CoinsResult::All() (stratospher)
7072d825e39d200c5e49c736a281d3db180c716a wallet: ensure COutput added in set are unique (stratospher)
fefa3be782eaf3e2fbff3ed8772fb91f2134ac0d wallet: fix, make 'total_effective_amount' optional actually optional (stratospher)

Pull request description:

  picks up https://github.com/bitcoin/bitcoin/pull/25269.

  This PR re-implements the code path so that an error message is thrown when a transaction's total amount (including fees) exceeds the available balance. It also refactors the wallet's coin selection code.

  1. the first 3 commits are unrelated to the code but few small bug fixes which are nice to fix. but also kind of impacts the remaining logic. (could PR separately if reviewers wish)
  1. c467325aaf187d7f056bb1ea1cec6b7c4250af2e: make `total_effective_amount` optional actually optional
  2. 2202ab597596c84fc49f8784e823372b7a9efcbe: ensure `set<shared_ptr<COutput>>` has unique COutput
  3. a5ffbbf122d66fc4ad9b2e7c6d7d1dfa1816388e: Correctly reserve size when flattening `CoinsResult.coins` map to vector

  3. the next 3 commits from 4745d5480ca5c3809edd51140e4d2c0433582844 replace the `PreSelectedInputs` struct with `CoinsResult` and removes `PreSelectedInputs`.

  4. the last commit (e664484a6d34c1795ebb0925ab31faea5d64ab00) deals with the error message - `AmountWithFeeExceedsBalance` error inside `WalletModel::prepareTransaction` is never thrown and remains an unused code path. This is because `createTransaction` does not retrieve the fee when the process fails. The fee return arg is set only at the end of the process, when the transaction is successfully created. Therefore, if the transaction creation fails, the fee is not available inside `WalletModel::prepareTransaction` to trigger the `AmountWithFeeExceedsBalance` error.

  This PR re-implements the feature inside `CreateTransactionInternal` and adds test coverage for it.

  | on master | on PR |
  |-----------|-------|
  | <img src="https://github.com/user-attachments/assets/a903e687-2466-42c7-b898-5dec24bfe515" width="750" alt="Insufficient funds" /> | <img src="https://github.com/user-attachments/assets/74bb3c83-6132-4c09-91f0-0a446618b3c8" width="750" alt="AmountWithFeeExceedsBalance" /> |

  the unreachable code path is removed in https://github.com/bitcoin-core/gui/pull/807 which requires this PR.

ACKs for top commit:
  achow101:
    ACK 48161f6a0503d7dde693ef544f0d3285c8b93adc
  furszy:
    utACK 48161f6

Tree-SHA512: a963fac8d6714f76571df8cf9aff70601536dc6faa4326fbb5892c3f080dc393f0d7c6e2d21879c7a2c898bf0092adb154376d9b0a8929b31575ce9d1d47dec2
2026-02-06 14:30:20 -08:00
Sjors Provoost
633d183119
test: misc interface_ipc_mining.py improvements
- share miniwallet and block create options between tests
- documentation fixes
- use assert_equal instead of assert ==
2026-02-06 15:46:31 +01:00
Sjors Provoost
52ccd9215e
test: split interface_ipc_mining.py into subtests
Split the Mining interface test into focused subtests.

Keep the initial tip-change pre-mine check in run_mining_interface_test.
As a result run_block_template_test no longer has newblockref.
2026-02-06 15:46:31 +01:00
Sjors Provoost
4e49fa2a68
test: add interface_ipc_mining.py
Split Mining interface tests into interface_ipc_mining.py and keep
interface_ipc.py for echo + simple inspectors.

Register the new test in test_runner.py.

The setup code around "Create Mining proxy object" is duplicated
in the new test file, but the simple insector checks below it
are not moved.
2026-02-06 15:46:31 +01:00
Sjors Provoost
01a1ae889e
test: move IPC helpers to ipc_util.py
Move IPC helpers into ipc_util.py and update interface_ipc.py
to use them.

Rename some helpers for clarity:
- parse_and_deserialize_block -> mining_get_block
- parse_and_deserialize_coinbase_tx -> mining_get_coinbase_tx
- get_coinbase_raw_tx -> mining_get_coinbase_raw_tx
- wait_next_template -> mining_wait_next_template
2026-02-06 15:44:06 +01:00
Hennadii Stepanov
28160c1e3d
Merge bitcoin/bitcoin#34421: ci: add Chimera Linux LTO config
d79249d2799e7f450d5708ca3366461f5f2069bc ci: add chimera Linux LTO CI job (fanquake)

Pull request description:

  Adds a CI config based on using [Chimera Linux](https://chimera-linux.org/). This might be interesting for any of the following:
  * Chimera is based on LLVM & musl libc - we test both of these in isolation, but not together.
  * No GNU components. I don't think we have an existing Linux CI job that doesn't have a gcc/stdlibc++ install. This exercises the depends logic for a fully LLVM/Clang/lld only build, including building the native tools (related to #33902).
  * We don't currently have a job with LTO enabled (here using CMakes `CMAKE_INTERPROCEDURAL_OPTIMIZATION`, which is `-flto=thin` for LLVM/Clang). I think this is worth having generally (we do use LTO in some other places, like oss-fuzz). If runtime is too much of an issue, then it could also be dropped. (Chimera itself is also compiled with LTO).

  QT in depends doesn't build (#32744), so is excluded for now.

  Chimera has pointed out at least a few quirks, i.e #34390, #34408 and https://github.com/bitcoin/bitcoin/pull/29963#discussion_r2707922298.

ACKs for top commit:
  maflcko:
    lgtm ACK d79249d2799e7f450d5708ca3366461f5f2069bc
  hebasto:
    ACK d79249d2799e7f450d5708ca3366461f5f2069bc.

Tree-SHA512: 1174a7462bf2e7433a2c27a6cf398e94b05db42bb414629c71cf9f9a297ca269e173ae1b7517b30510b494b4397f918eef706d3c75c4286767c5557aeb6db4c7
2026-02-06 14:11:04 +00:00
merge-script
46e1288df2
Merge bitcoin/bitcoin#34498: iwyu: Fix patch to prefer <cstdint>
b65a3d80093b992a2574d5762a8cd03ce2eb4412 iwyu: Fix patch to prefer `<cstdint>` (Hennadii Stepanov)

Pull request description:

  The goal of the [patch](https://github.com/bitcoin/bitcoin/blob/master/ci/test/01_iwyu.patch) is to suggest C++ headers rather than their C counterparts. However, for fixed width integer types, the patched IWYU currently suggests `<cinttypes>` where `<cstdint>` is sufficient.

  This PR fixes this behavior.

ACKs for top commit:
  maflcko:
    lgtm ACK b65a3d80093b992a2574d5762a8cd03ce2eb4412
  furszy:
    utACK b65a3d80093b992a2574d5762a8cd03ce2eb4412
  willcl-ark:
    utACK b65a3d80093b992a2574d5762a8cd03ce2eb4412

Tree-SHA512: 695efdd44b92a642401738572e49c8b6591aa4463d387107fdf3d2f7c9c4b39f4097cb82413752caf9e8890dcca7246a894e562a1dd17023b05a7e455705beac
2026-02-06 13:37:14 +00:00
fanquake
d79249d279
ci: add chimera Linux LTO CI job 2026-02-06 12:03:18 +00:00
stratospher
48161f6a05 wallet: introduce "tx amount exceeds balance when fees are included" error
This was previously implemented at the GUI level but we never hit that
code path.

Co-authored-by: furszy <matiasfurszyfer@protonmail.com>
2026-02-06 16:27:22 +05:30
stratospher
b7fa609ed1 wallet: remove PreSelectedInputs 2026-02-06 16:27:22 +05:30
stratospher
7819da2c16 walllet: use CoinsResult instead of PreSelectedInputs
PreSelectedInputs is confusing to use. it's `total_amount`
might store total amount or effective amount based on SFFO.
ex: we might accidentally sum preselected inputs effective
amount (named `total_amount`) with automatically selected
inputs actual total amount.

CoinsResult has a cleaner interface with separate fields
for both these amounts.

2 behavioural changes:

1. no more default assert error if effective value is unset
    - previously PreSelectedInputs::Insert() called
      COutput::GetEffectiveValue() which assert failed
      if the optional was unset.
    - now we don't default assert anymore.
      * in GUI/getAvailableBalance better not to assert.
      * SelectCoins's preselected inputs always contain a
        feerate, so effective amount should be set.
        explicitly added an assertion to ensure this.

2. FetchSelectedInputs uses OutputType::UNKNOWN as key to
   populate CoinsResult's coins map. it's discarded later.
2026-02-06 16:27:21 +05:30
merge-script
0cd309c75e
Merge bitcoin/bitcoin#34492: ci: Drop valgrind fuzz from GHA matrix
faa4ab113cc9e300b3b8dce0c774d0a33a555883 ci: Drop valgrind fuzz from GHA matrix (MarcoFalke)

Pull request description:

  The valgrind fuzz task is problematic, because:

  * It is redundant with the msan fuzz task, which has std lib hardening enabled, so often UB is diagnosed before it even happens in the valgrind task.
  * All issues so far found by the valgrind fuzz task were also found by the hardened msan fuzz task.
  * All other issues were false-positives, which are hard to debug, and confusing and tedious to work around.

  I don't think there is any value in asking pull request authors to debug valgrind false-positives that they triggered by accident. So remove the task for now.

  I know that there are some devs, who like to keep the task, but if the task is kept, it should come with clear instructions on how to deal with false-postives in pull requests.

  I am not proposing to remove the config itself, and I am happy to continue maintaining it, like it was done before. However, as of now, running it in the GHA matrix is of negative or questionable benefit.

ACKs for top commit:
  l0rinc:
    ACK faa4ab113cc9e300b3b8dce0c774d0a33a555883
  fanquake:
    ACK faa4ab113cc9e300b3b8dce0c774d0a33a555883 - hopefully we can revisit re-adding soon. To be clear, I don't agree with the rationale from #34304, or the initial changes there. The case here, and the fact that it is causing disruption in this repo, is more pressing.

Tree-SHA512: 59272f4b5b01c3b8ee6078ea635441f17776d4d8923f1adacdabdbb00bd2eb0234b30dc5b27938e29f8e79b3c3bebed5f339ae36c2c8fb17ea9d3a2884bee986
2026-02-06 10:28:04 +00:00
MarcoFalke
fa0677d131
refactor: Use SpanReader over DataStream
This refactor does not change behavior. However, it avoids a vector
copy, which can lead to a minimal speed-up of 1%-5%, depending on the
call-site. This is mostly relevant for the fuzz tests and utils that
read large blobs of data (like a full block).
2026-02-06 07:56:57 +01:00
stratospher
e5474079f1 wallet: introduce GetAppropriateTotal() in CoinsResult
returns the total amount (if SFFO), otherwise the effective amount.
previously, this was the logic in calculating
PreSelectedInputs::total_amount when PreSelectedInputs::Insert()
was called.

return optional to force callers to explicitly handle the case
when effective amount optional is not set.
2026-02-06 09:36:22 +05:30
stratospher
d8ea921d01 wallet: correctly reserve in CoinsResult::All()
coins.size() would be the number of the OutputType keys in the map.
whereas Size() would return total number of COutput objects when
flattening the map.
2026-02-06 09:36:22 +05:30
stratospher
7072d825e3 wallet: ensure COutput added in set are unique
before #25806, set<COutput> was used and would not
contain same COutputs in the set.

now we use set<shared_ptr<COutput>> and it might be
possible for 2 distinct shared_ptr (different pointer
address but same COutputs) to be added into the set.

so preserve previous behaviour by making sure values
in the set are also distinct
2026-02-06 09:36:22 +05:30
stratospher
fefa3be782 wallet: fix, make 'total_effective_amount' optional actually optional
this is not needed for the remaining commits but good to fix
and came up in #25269 review.

Co-authored-by: furszy <matiasfurszyfer@protonmail.com>
2026-02-06 09:36:19 +05:30
Ava Chow
9ec1ae0e98
Merge bitcoin/bitcoin#34437: rpc: uptime should begin on application start
e67a676df9af5ece5307438ae1b4ddb0730e3482 fix: uptime RPC returns 0 on first call (Lőrinc)

Pull request description:

  ### Problem
  #34328 switched uptime to use monotonic time, but `g_startup_time` was a function-local static in `GetUptime()`, meaning it was initialized on first call rather than at program start.
  This caused the first uptime RPC to always return 0.

  ### Fix
  Move `g_startup_time` to namespace scope so it initializes at program start, ensuring the first `uptime()` call returns actual elapsed time.

  ### Reproducer

  Revert the fix and run the test or alternatively:

  ```bash
  cmake -B build && cmake --build build --target bitcoind bitcoin-cli -j$(nproc)
  ./build/bin/bitcoind -regtest -daemon
  sleep 10
  ./build/bin/bitcoin-cli -regtest uptime
  ./build/bin/bitcoin-cli -regtest stop
  ```

  <details>
  <summary>Before (uptime is initialized on first call)</summary>

  ```bash
  Bitcoin Core starting
  0
  Bitcoin Core stopping
  ```

  </details>

  <details>
  <summary>After (first uptime call is in-line with sleep)</summary>

  ```bash
  Bitcoin Core starting
  10
  Bitcoin Core stopping
  ```
  </details>

  ----

  Fixes #34423, added reporter as coauthor.

ACKs for top commit:
  maflcko:
    lgtm ACK e67a676df9af5ece5307438ae1b4ddb0730e3482
  optout21:
    crACK e67a676df9af5ece5307438ae1b4ddb0730e3482
  carloantinarella:
    Tested ACK e67a676df9af5ece5307438ae1b4ddb0730e3482
  achow101:
    ACK e67a676df9af5ece5307438ae1b4ddb0730e3482
  musaHaruna:
    Tested ACK [e67a676](e67a676df9)

Tree-SHA512: b156f7ed15c3fbb50e8a15f6c9a0d4e2ffb956d0c6ef949e0f8a661a564a20c0d3ed2149fae75ce7e2baa9326788d5037e726e7a7ac2c6ef4e70e4862cd5763f
2026-02-05 17:02:37 -08:00
Ava Chow
d692e07228
Merge bitcoin/bitcoin#32894: FUZZ: Test that BnB finds best solution
54d039305823f67688ec9116757d8244f84badc6 FUZZ: Test that BnB finds best solution (Murch)

Pull request description:

  BnB’s solution is the input set with the lowest waste score, excluding any supersets of other solution candidates.
  This fuzz test compares a brute force search with the BnB result to ensure that BnB succeeds.

ACKs for top commit:
  achow101:
    ACK 54d039305823f67688ec9116757d8244f84badc6
  brunoerg:
    ACK 54d039305823f67688ec9116757d8244f84badc6

Tree-SHA512: 96b6a822f53311d9a76abe8c217794e0a2dd5bd713db0a15dc70e065099b8245c430e1174e24133e0a802218ff0f2943dfcc3d638c3716485d5607c452854e7d
2026-02-05 13:32:24 -08:00
Hennadii Stepanov
28d8607882
Merge bitcoin/bitcoin#34504: build: replace WERROR with CMAKE_COMPILE_WARNING_AS_ERROR
322c4ec4422a2e03fc81e61b1315b1245ba47d2f build: replace WERROR with CMAKE_COMPILE_WARNING_AS_ERROR (fanquake)

Pull request description:

  `CMAKE_COMPILE_WARNING_AS_ERROR` was added to CMake in 3.24.

  `--compile-no-warning-as-error` can be used, if needed, in future, to
  suppress the `CMAKE_COMPILE_WARNING_AS_ERROR` behaviour from a CI
  config.

  Potential alternative to #33297. Closes #33284.

  See https://cmake.org/cmake/help/latest/prop_tgt/COMPILE_WARNING_AS_ERROR.html.

ACKs for top commit:
  purpleKarrot:
    re-ACK 322c4ec4422a2e03fc81e61b1315b1245ba47d2f
  maflcko:
    review ACK 322c4ec4422a2e03fc81e61b1315b1245ba47d2f 📩
  hebasto:
    re-ACK 322c4ec4422a2e03fc81e61b1315b1245ba47d2f.

Tree-SHA512: 1e9b41e87568c1021aecf9414cfc70a3215d1663a13adb1f32493f2dba18978b53888520775d1aa2945224b0404ef83bda0837dddf5f8a089cafb940b856598c
2026-02-05 18:58:58 +00:00
Ava Chow
ad1940a006
Merge bitcoin/bitcoin#34517: drop my key from trusted-keys
f2b8acc0edb6f1acf58cd3d7423d6ad60e8d90c8 remove glozow from trusted keys (glozow)

Pull request description:

  As planned!

  Also bump trusted-git-root to 88a7294356e75bbaa136c9427c64e239f7c6fd40, which is the last merge signed with this key.

ACKs for top commit:
  achow101:
    ACK f2b8acc0edb6f1acf58cd3d7423d6ad60e8d90c8
  stickies-v:
    ACK f2b8acc0edb6f1acf58cd3d7423d6ad60e8d90c8

Tree-SHA512: e68025c519ab003ad464783325502c1a6a3f560c0708a9383332cb0971be2039f462fc95f85373bb075191c165ca8e3904312a66e41b52d1b99dd2a8a837be9a
2026-02-05 10:06:17 -08:00
fanquake
322c4ec442
build: replace WERROR with CMAKE_COMPILE_WARNING_AS_ERROR
-Werror is added to the previous releases job, given it runs on Ubuntu
22.04, which uses an older CMake.

`--compile-no-warning-as-error` can be used, if needed, in future, to
suppress the `CMAKE_COMPILE_WARNING_AS_ERROR` behaviour from a CI
config.

CMAKE_COMPILE_WARNING_AS_ERROR was added to CMake in 3.24.
See https://cmake.org/cmake/help/latest/prop_tgt/COMPILE_WARNING_AS_ERROR.html.

Co-authored-by: willcl-ark <will8clark@gmail.com>
2026-02-05 16:39:14 +00:00
Hennadii Stepanov
eb97250421
Merge bitcoin/bitcoin#34496: build: don't pass on boost dependency to kernel consumers
a50d0b6720f300987d2b3d82f4fb3a2336259887 build: don't pass on boost dependency to kernel consumers (Cory Fields)

Pull request description:

  This is unnecessary now that the kernel now exports a (boost-less) API.

  Noticed while slimming down boost dependencies in #34495.

ACKs for top commit:
  stickies-v:
    ACK a50d0b6720f300987d2b3d82f4fb3a2336259887
  hebasto:
    ACK a50d0b6720f300987d2b3d82f4fb3a2336259887, I have reviewed the code and it looks OK. I tested it by applying the Boost-specifc commits from https://github.com/bitcoin/bitcoin/pull/34143 and building with depends.

Tree-SHA512: e2d12356f41dd51dd729362121a33bd4f395821d53dd9a0bb0d5d6a53aba2ca2064e0709d9799dc6751b3d61ea576d2efc0e28296fdba26f2809dbcb0feabe44
2026-02-05 12:18:51 +00:00
merge-script
9d76947294
Merge bitcoin/bitcoin#34464: Change BlockRequestAllowed() to take ref (minor refactor)
1f8f7d477ae0d33bd96f7936889c17bd40805fb9 Change BlockRequestAllowed() to take ref (optout)

Pull request description:

  As [suggested here](https://github.com/bitcoin/bitcoin/pull/34416#discussion_r2745302958), a minor refactor of `PeerManagerImpl::BlockRequestAllowed()` to take reference parameter (instead of pointer). The motivation is to make the code safer, by minimizing the risk of null-dereference, and to be more consistent.
  The change is local to the `PeerManagerImpl::BlockRequestAllowed()` class.
  Related to #34440.

ACKs for top commit:
  maflcko:
    review ACK 1f8f7d477ae0d33bd96f7936889c17bd40805fb9 🎐
  l0rinc:
    tested ACK 1f8f7d477ae0d33bd96f7936889c17bd40805fb9
  stickies-v:
    ACK 1f8f7d477ae0d33bd96f7936889c17bd40805fb9

Tree-SHA512: 9c2de2d3e7d067e018db7ec54c79f512ccc1da54574d4fb362f6697ee6e235783779d7094cf20856cd34e08a1dbc74609d8351fe7b2287cd8ec0c836ef07be19
2026-02-05 10:56:37 +00:00
merge-script
41b9b76cce
Merge bitcoin/bitcoin#34510: doc: fix broken bpftrace installation link
42ee31e80c99bdb4d6affdc9dc22a0f3d5da7b59 doc: fix broken bpftrace installation link (jayvaliya)

Pull request description:

  The bpftrace project has moved from the `iovisor` organization to its own
  `bpftrace` organization on GitHub. The old installation documentation link
  (`https://github.com/iovisor/bpftrace/blob/master/INSTALL.md`) is now broken (404).

  The project also restructured their documentation - installation instructions
  are now in the README.md under the "Quick Start" section rather than a
  separate INSTALL.md file.

ACKs for top commit:
  maflcko:
    lgtm ACK 42ee31e80c99bdb4d6affdc9dc22a0f3d5da7b59

Tree-SHA512: 5320e747b77fe9bb347a98396364f3942214b6d3ee69707f62452df0aaaa2f6cfd58fc3b6155f64c4acb00f1a4dba8a751618805e75b823454c73ac93877ad4f
2026-02-05 09:36:47 +00:00
jayvaliya
42ee31e80c doc: fix broken bpftrace installation link
The bpftrace project moved from iovisor/bpftrace to bpftrace/bpftraceand
removed the separate INSTALL.md file. Installation instructionsare now
in the README.md Quick Start section.
2026-02-05 14:07:25 +05:30
Murch
54d0393058
FUZZ: Test that BnB finds best solution
BnB’s solution is the input set with the lowest waste score, excluding
any supersets of other solution candidates.
This fuzz test compares a brute force search with the BnB result to
ensure that BnB succeeds.
2026-02-04 13:59:35 -08:00
Ava Chow
4ae00e9a71
Merge bitcoin/bitcoin#32636: Split CWallet::Create() into CreateNew and LoadExisting
db2effaca4cf82bf806596d16f9797d3692e2da7 scripted-diff: refactor: CWallet::Create() -> CreateNew() (David Gumberg)
27e021ebc0dd3517a71f3ddb38ed265a19693d4c wallet: Correctly log stats for encrypted messages. (David Gumberg)
d8bec61be233b9cb6d5db886e8f1c1f058288fb5 wallet: remove loading logic from CWallet::Create (David Gumberg)
f35acc893fb3378b2ad39608fe254d33af6cce9f refactor: wallet: Factor out `WriteVersion()` from `PopulateWalletFromDB()` (David Gumberg)
e12ff8aca049ec7b054cb3047a167c7ce8dbd421 test: wallet: Split create and load (David Gumberg)
70dbc79b09acf7b1515532ee20c7533c938ffb70 wallet: Use CWallet::LoadExisting() for loading existing wallets. (David Gumberg)
ae66e011646266abb67b31027bc29e0ce1d08ad4 wallet: Create separate function for wallet load (David Gumberg)
bc69070416c62a88d8f4029280ec10d6f9ec8d20 refactor: Wallet stats logging in its own function (David Gumberg)
a9d64cd49c69dafd6496ccb5aef4cd6d8898966b wallet: Remove redundant birth time update (David Gumberg)
b4a49cc7275efc16d4a4179ed34b50de5bb7367e wallet: Move argument parsing to before DB load (David Gumberg)
b15a94a618c53041e97ccfface3045a0642777e1 refactor: Split out wallet argument loading (David Gumberg)
a02c4a82d88a3e9a24ec2aa0b828b8cc533dde58 refactor: Move -walletbroadcast setting init (David Gumberg)
411caf72815bdf2e176e790a4c63f745517c4bb4 wallet: refactor: PopulateWalletFromDB use switch statement. (David Gumberg)
a48e23f566ccaf9b81fe0684885972d9ee34afd3 refactor: wallet: move error handling to PopulateWalletFromDB() (David Gumberg)
0972785fd723b9b3c84844bf999d6e08e163ef9d wallet: Delete unnecessary PopulateWalletFromDB() calls (David Gumberg)
f0a046094e4c4b5f3af0e453492077f4911e0132 scripted-diff: refactor: CWallet::LoadWallet->PopulateWalletFromDB (David Gumberg)

Pull request description:

  This PR is mostly a refactor which splits out logic used for creating wallets and for loading wallets, both of which are presently contained in `CWallet::Create()` into `CWallet::CreateNew()` and `CWallet::LoadExisting()`

  The real win of this PR is that `CWallet::Create()` uses a very bad heuristic for trying to guess whether or not it is supposed to be creating a new wallet or loading an existing wallet:

  370c592612/src/wallet/wallet.cpp (L2882-L2885)

  This heuristic assumes that wallets with no `ScriptPubKeyMans` are being created, which sounds reasonable, but as demonstrated in #32112 and #32111, this can happen when the user tries to load a wallet file that is corrupted, both issues are fixed by this PR and any other misbehavior for wallet files which succeeded the broken heuristic's sniff test for new wallets.

  It was already the case that every caller of `CWallet::Create()` knows whether it is creating a wallet or loading one, so we can avoid replacing this bad heuristic with another one, and just shift the burden to the caller.

ACKs for top commit:
  achow101:
    ACK db2effaca4cf82bf806596d16f9797d3692e2da7
  polespinasa:
    approach ACK db2effaca4cf82bf806596d16f9797d3692e2da7
  w0xlt:
    reACK db2effaca4cf82bf806596d16f9797d3692e2da7
  murchandamus:
    ACK db2effaca4cf82bf806596d16f9797d3692e2da7
  rkrux:
    ACK db2effaca4cf82bf806596d16f9797d3692e2da7

Tree-SHA512: c28d60e0a3001058da3fd2bdbe0726c7ebe742a4b900a1dee2e5132eccc22e49619cb747a99b4032b000eafd4aa2fdd4ec244c32be2012aba809fdc94b5f6ecd
2026-02-04 11:06:36 -08:00
merge-script
d4bc620ad8
Merge bitcoin/bitcoin#34488: refactor: Small style and test fixups for bitcoinkernel
fad9dd1a8891770846f3f98c60bebf2c2bf72e05 test: kernel test fixups (MarcoFalke)
fabb58d42dc203b91f6ec6261f4bac94ee8df0a2 test: Use clang-tidy named args for create_chainman (MarcoFalke)
fa51594c5c0fe27e55d580dfab046e1226c6d83b refactor: Small style fixups in src/kernel/bitcoinkernel.cpp (MarcoFalke)

Pull request description:

  Just some small style and test fixups after https://github.com/bitcoin/bitcoin/pull/30595#pullrequestreview-3420542946

ACKs for top commit:
  stickies-v:
    re-ACK fad9dd1a8891770846f3f98c60bebf2c2bf72e05
  frankomosh:
    Code Review ACK fad9dd1a8891770846f3f98c60bebf2c2bf72e05. All changes are sound refactoring with no functional issues. Nice improvements to readability (named args in create_chainman, span.data(), range checks now properly require non-empty).

Tree-SHA512: 0a92e871b4db75a590acad39672594625e402895bc0d36635d36ec2fe8dce7cc2c5cb6ebf2a92bc14617d94648b84bffb95ff783cea71bd91ac4a9871ef5dbef
2026-02-04 13:48:21 +00:00
merge-script
eb3dbbaf30
Merge bitcoin/bitcoin#34493: contrib: Remove valgrind suppression for bug 472219
fa33acec89f08b747449dbcd5248ee6d448a6648 Revert "valgrind: add suppression for bug 472219" (MarcoFalke)

Pull request description:

  Now that several Alpine releases are out, it seems fine to remove this suppression.

  This should work since Alpine 3.19: https://pkgs.alpinelinux.org/packages?name=valgrind&branch=v3.19&repo=&arch=aarch64, which just dropped out of `main` support (https://alpinelinux.org/releases/)

ACKs for top commit:
  fanquake:
    ACK fa33acec89f08b747449dbcd5248ee6d448a6648

Tree-SHA512: 2a58475d20f8214c012b77efb7fe145e810a1506736341f8debea74dabd31499899a968bc2d4a88008b2a3878b4fe5e48fa14c83a2e943a91943bf0e1e159b6f
2026-02-04 10:50:05 +00:00
merge-script
1e64aeaaec
Merge bitcoin/bitcoin#34295: test: Improve STRICTENC/DERSIG unit tests
4dfb6eef70d719a79904cabc4519d7a725de130a test: Add DERSIG tests to script_tests (billymcbip)
884978f3894ac7d96f113a00bbcce45c9785d44a test: Fix a STRICTENC test in script_tests (billymcbip)
527e8ca7b54515e129484824e4df66b5dafdb45f test: Remove outdated comment in script_tests (billymcbip)

Pull request description:

  1. Remove a comment referencing a file that no longer exists in the codebase: `script_invalid.json`.

  2. Fix a test that isn't implemented as intended. The idea is to test execution order by providing a signature that would cause script failure when parsed. An empty signature does not cause script failure in `CHECKMULTISIG`. Use `OP_1` for the second signature instead of `OP_0`.

  3. Copy existing `STRICTENC` tests and change the flag to `DERSIG`. `DERSIG` is a consensus flag (unlike `STRICTENC`), so it'd be good to have dedicated test cases.

  `script_tests` pass on my end.

ACKs for top commit:
  darosior:
    reACK 4dfb6eef70d719a79904cabc4519d7a725de130a
  sipa:
    ACK 4dfb6eef70d719a79904cabc4519d7a725de130a

Tree-SHA512: aea4aa5199530804561e9f597f69d6cffd7a40d4830919f9371fe97e4d04d8f10e8ed29b91e65e007a3f6e3a38e2881f88dff25831e741ad7592a12ed02b801a
2026-02-04 09:37:56 +00:00
Hennadii Stepanov
b65a3d8009
iwyu: Fix patch to prefer <cstdint>
The goal of the patch is to suggest C++ headers rather than their C
counterparts. However, for fixed width integer types, the patched IWYU
currently suggests `<cinttypes>` where `<cstdint>` is sufficient.

This change fixes this behavior.
2026-02-04 08:28:10 +00:00
Cory Fields
a50d0b6720 build: don't pass on boost dependency to kernel consumers
This is unnecessary now that the kernel now exports a (boost-less) API.
2026-02-03 21:36:49 +00:00
Ava Chow
3532e24213
Merge bitcoin/bitcoin#32748: fees: fix noisy flushing log
02b5f6078d65c3a2f9ba8b30474d8201516c5c4b fees: make flushes log debug only (ismaelsadeeq)

Pull request description:

  This is a simple PR that updates the flushing log to use debug-level logging under the estimatefee category. It also ensures the log consistently includes only the full file path.
  The motivation behind this is that the "Flushed fee estimates to fee_estimates.dat." logs can become noisy; it's done after one hour, so hiding it in the debug estimatefee category seems reasonable.

  ---
  I left the logs when the file is not found as info because that should only occur when you start a fresh node, change datadir, or explicitly delete the file

ACKs for top commit:
  achow101:
    ACK 02b5f6078d65c3a2f9ba8b30474d8201516c5c4b
  furszy:
    utACK 02b5f6078d65c3a2f9ba8b30474d8201516c5c4b
  l0rinc:
    Lightly tested ACK 02b5f6078d65c3a2f9ba8b30474d8201516c5c4b
  sipa:
    utACK 02b5f6078d65c3a2f9ba8b30474d8201516c5c4b

Tree-SHA512: 3e4b822caa23db9b30f1bb8990b36f35dcfcd82dbfb27c319463447da1df988eded84c47d5319ad637c822bdd04f0a727a176da3632c40d786332b6a5aaa6d89
2026-02-03 12:08:54 -08:00
MarcoFalke
fad9dd1a88
test: kernel test fixups
* Allow byte arrays; Adjust size check, which would otherwise fail,
  because two byte arrays of a type are always of the same size:
  https://github.com/bitcoin/bitcoin/pull/30595#discussion_r2642930435

* Require empty range:
  https://github.com/bitcoin/bitcoin/pull/30595#discussion_r2653846374
2026-02-03 20:27:19 +01:00
MarcoFalke
fabb58d42d
test: Use clang-tidy named args for create_chainman
https://github.com/bitcoin/bitcoin/pull/30595#discussion_r2653846863
2026-02-03 20:09:27 +01:00
MarcoFalke
fa51594c5c
refactor: Small style fixups in src/kernel/bitcoinkernel.cpp
* Use type alias TranslateFn:
  https://github.com/bitcoin/bitcoin/pull/30595#discussion_r2653828562
* Use std::span::data:
  https://github.com/bitcoin/bitcoin/pull/30595#discussion_r2653829743
* Use the ref helper:
  https://github.com/bitcoin/bitcoin/pull/30595#discussion_r2653829991
* Reword error handling section:
  https://github.com/bitcoin/bitcoin/pull/30595#discussion_r2653843805
2026-02-03 20:07:17 +01:00
MarcoFalke
fa33acec89
Revert "valgrind: add suppression for bug 472219"
This reverts commit 50f7214e0915a88dd81c1ac1d292e049a398cda2.
2026-02-03 18:15:12 +01:00
MarcoFalke
faa4ab113c
ci: Drop valgrind fuzz from GHA matrix 2026-02-03 16:41:29 +01:00
ismaelsadeeq
02b5f6078d
fees: make flushes log debug only
- Also log the full file path of fee_estimates.dat consistently.
2026-02-03 13:53:41 +00:00
merge-script
b58eebf152
Merge bitcoin/bitcoin#34470: Bump leveldb subtree and remove UB workaround in CI
fad7d86d8d17d89238ed9a2b2305cb3ed6a32cf4 ci: Remove unused workaround after leveldb subtree bump (MarcoFalke)
2f2952c5f2e367ccac34025a159c9fbaffd7f172 Squashed 'src/leveldb/' changes from cad64b151d..ab6c84e6f3 (MarcoFalke)

Pull request description:

  Bump leveldb subtree and remove UB workaround in CI. This also fixes a GCC-16 warning.

ACKs for top commit:
  l0rinc:
    code review ACK fad7d86d8d17d89238ed9a2b2305cb3ed6a32cf4
  fanquake:
    ACK fad7d86d8d17d89238ed9a2b2305cb3ed6a32cf4

Tree-SHA512: dccd53ca638f1acbd72187032d858453e1cc58b156a52e24356c075ac85be0db47d7b73965131b5fbc7b188cbc34cbfd72a8286e860c3b28258daaf5437546f2
2026-02-03 11:26:40 +00:00
merge-script
8bb277c123
Merge bitcoin/bitcoin#34481: Update secp256k1 subtree to latest master
d405713197f857d3a630ab52117e08ee7ae00789 ci: use Alpine 3.23 (fanquake)
1cee0e4cd3afd7043b517227828d44a4316f2872 ci: detect apk usage generally (fanquake)
9d4c9b00356e02de223033adb7680b47b743caab Squashed 'src/secp256k1/' changes from 14e56970cb..57315a6985 (fanquake)

Pull request description:

  Updates the secp256k1 subtree to latest master (57315a6985), which includes https://github.com/bitcoin-core/secp256k1/pull/1813.

ACKs for top commit:
  maflcko:
    lgtm ACK d405713197f857d3a630ab52117e08ee7ae00789
  hebasto:
    ACK d405713197f857d3a630ab52117e08ee7ae00789.

Tree-SHA512: 6f01f85c309d7b823f41f215a9c856871dcd3d4113ac38cf2cf8e2f2c8a4c9d5f3c9f0e12b95cd9140045c66523eeb49aa536c0e91f9d17d5bf81fc95a2ad689
2026-02-03 11:11:18 +00:00
merge-script
a4941132d3
Merge bitcoin/bitcoin#34461: ci: Print verbose build error message in test-each-commit
bbbb78a4f28fd2378342398ccae60995ae0e08d2 ci: Print verbose build error message in test-each-commit (MarcoFalke)
2222dadabbbd03be9b4b917583fd51b34857f40c ci: [refactor] Allow overwriting check option in run helper (MarcoFalke)

Pull request description:

  Currently, the build error in the test-each-commit task is not too nice. E.g. https://github.com/bitcoin/bitcoin/actions/runs/21509735101/job/61973587699#step:8:10464:

  ```
  ...
  [ 75%] Building CXX object src/test/CMakeFiles/test_bitcoin.dir/txvalidation_tests.cpp.o
  [ 75%] Building CXX object src/test/CMakeFiles/test_bitcoin.dir/txvalidationcache_tests.cpp.o
  [ 75%] Building CXX object src/test/CMakeFiles/test_bitcoin.dir/validation_block_tests.cpp.o
  [ 75%] Building CXX object src/test/CMakeFiles/test_bitcoin.dir/validation_chainstate_tests.cpp.o
  [ 75%] Building CXX object src/test/CMakeFiles/test_bitcoin.dir/validation_chainstatemanager_tests.cpp.o
  [ 76%] Building CXX object src/test/CMakeFiles/test_bitcoin.dir/validation_flush_tests.cpp.o
  [ 76%] Building CXX object src/test/CMakeFiles/test_bitcoin.dir/validation_tests.cpp.o
  [ 76%] Building CXX object src/test/CMakeFiles/test_bitcoin.dir/__/wallet/test/wallet_test_fixture.cpp.o
  [ 76%] Building CXX object src/test/CMakeFiles/test_bitcoin.dir/__/wallet/test/db_tests.cpp.o
  [ 76%] Building CXX object src/test/CMakeFiles/test_bitcoin.dir/__/wallet/test/coinselector_tests.cpp.o
  [ 76%] Building CXX object src/test/CMakeFiles/test_bitcoin.dir/__/wallet/test/coinselection_tests.cpp.o
  [ 76%] Building CXX object src/test/CMakeFiles/test_bitcoin.dir/__/wallet/test/feebumper_tests.cpp.o
  [ 76%] Building CXX object src/test/CMakeFiles/test_bitcoin.dir/__/wallet/test/group_outputs_tests.cpp.o
  [ 76%] Building CXX object src/test/CMakeFiles/test_bitcoin.dir/__/wallet/test/ismine_tests.cpp.o
  [ 76%] Building CXX object src/test/CMakeFiles/test_bitcoin.dir/__/wallet/test/psbt_wallet_tests.cpp.o
  [ 76%] Building CXX object src/test/CMakeFiles/test_bitcoin.dir/__/wallet/test/scriptpubkeyman_tests.cpp.o
  [ 76%] Building CXX object src/test/CMakeFiles/test_bitcoin.dir/__/wallet/test/spend_tests.cpp.o
  [ 76%] Building CXX object src/test/CMakeFiles/test_bitcoin.dir/__/wallet/test/wallet_rpc_tests.cpp.o
  [ 76%] Building CXX object src/test/CMakeFiles/test_bitcoin.dir/__/wallet/test/wallet_tests.cpp.o
  [ 76%] Building CXX object src/test/CMakeFiles/test_bitcoin.dir/__/wallet/test/wallet_transaction_tests.cpp.o
  [ 76%] Building CXX object src/test/CMakeFiles/test_bitcoin.dir/__/wallet/test/walletdb_tests.cpp.o
  [ 76%] Building CXX object src/test/CMakeFiles/test_bitcoin.dir/__/wallet/test/walletload_tests.cpp.o
  [ 76%] Building CXX object src/test/CMakeFiles/test_bitcoin.dir/__/ipc/test/ipc_tests.cpp.o
  [ 77%] Linking CXX executable ../../bin/test_bitcoin
  [ 87%] Built target test_bitcoin
  gmake: *** [Makefile:146: all] Error 2
  Command '['cmake', '--build', 'ci_build', '-j', '4']' returned non-zero exit status 2.
  error: cannot rebase: Your index contains uncommitted changes.
  warning: execution failed: git merge --no-commit origin/master && python3 ./.github/ci-test-each-commit-exec.py && git reset --hard
  and made changes to the index and/or the working tree.
  You can fix the problem, and then run

    git rebase --continue

  Error: Process completed with exit code 1.
  ```

  Fix it by just using the same approach that the other CI tasks are using:

  01651324f4/ci/test/03_test_script.sh (L143-L146)

ACKs for top commit:
  willcl-ark:
    ACK bbbb78a4f28fd2378342398ccae60995ae0e08d2

Tree-SHA512: ae54ee62f53e060ed42f76ca59daf7a017bd12495e171efed03d1f5dda969db4f7e2e2c9ed7a178ff5fa9a5baa55ab6a7b30b3ab6b81d5279fe937006ac8228f
2026-02-03 10:49:26 +00:00
MarcoFalke
fad7d86d8d
ci: Remove unused workaround after leveldb subtree bump 2026-02-03 11:19:34 +01:00
MarcoFalke
fabced56f6
Bump leveldb subtree
Command that was run:

git subtree pull --prefix src/leveldb https://github.com/bitcoin-core/leveldb-subtree bitcoin-fork --squash
2026-02-03 11:19:01 +01:00