BC
← All projectsBitcoin Core

Bitcoin Core

The Bitcoin network's reference node and wallet implementation.

BitcoinSupply chainNormal
Repository coverage

2900 commits in the local evidence base

Every captured commit receives deterministic security triage and a separate communication-quality score. Security candidates and broader second-pass signals receive full-patch Ollama analysis.

254security candidates607second-pass queue2881AI analyses
206commits · 30 days
502commits · 60 days
1535commits · 180 days
2884commits · 365 days
Backfill bands
Aug 5 → Feb 61351 seen45 candidatesComplete
Feb 6 → Jun 61033 seen63 candidatesComplete
Jun 6 → Jul 6281 seen11 candidatesComplete
Jul 6 → Aug 5207 seen5 candidatesComplete
Commit communication

Does the history explain itself?

Message quality measures whether a commit identifies its scope, purpose, rationale, testing, and supporting references. It does not change the security-severity score.

70/100 average clarity
937Strong · 80–100
1188Adequate · 60–79
687Thin · 40–59
88Opaque · 0–39
6security candidates with opaque commit messaging
Read the scoring rubric →
Developer activity

Who is changing the project?

Public Git author strings; identities are not independently verified.

DeveloperCommitsCandidatesAnalyzedHigh riskMessage avg.
Antoine Poinsot22422170
Ava Chow15750157064
MarcoFalke41021406074
Lőrinc17721177081
fanquake22719226057
Hennadii Stepanov20914208063
rkrux57957074
Sjors Provoost89889074
Sebastian Falbesoner33733073
David Gumberg55655072
Pieter Wuille95595066
Hodlinator66566076
Analysis record

Published AI watches

Last scanned 36 minutes ago

Informational 15 AI analysisMessage 91 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#35928: doc: mention -DWITH_ZMQ=ON in macOS build guide

This is a one-line documentation update to the macOS build guide. It adds a note telling users to pass a specific CMake option if they want ZeroMQ notification support. There is no code change and no security impact.

8397e09eby merge-script+1−11 file
No security note in commit
Informational 15 AI analysisMessage 100 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#35482: fuzz: exercise the transaction-handling path in process_message(s)

This commit only changes Bitcoin Core's internal fuzz testing code. It makes the fuzz tests exercise more of the transaction-handling code path by toggling Initial Block Download mode and resetting the mempool between test runs. There is n…

No production code modifiedNo consensus, validation, net_processing, or wallet logic changedOnly fuzz test harnesses and test utilities affected
f11dc617by merge-script+105−798 files
No security note in commit
Informational 15 AI analysisMessage 91 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#35914: test, fuzz: Remove unused variables

This commit removes unused variables from Bitcoin Core's test and fuzzing code. It is a cleanup/refactoring change with no effect on the live network software or user funds. It does not fix or introduce any security vulnerability.

d36bf709by merge-script+1−138 files
No security note in commit
Informational 15 AI analysisMessage 93 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#35896: refactor: Default uint256::operator==, add operator<=>

This commit is a routine code cleanup in Bitcoin Core. It switches the uint256 equality and comparison operators to use standard C++20 defaults, removes an old custom Compare() helper, and marks an internal assertion-failure function as ne…

ed2c59abby merge-script+99−245 files
No security note in commit
Moderate 62 AI analysisMessage 96 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#35872: rpc: avoid descriptor range counter overflow

This update fixes a counting bug in several Bitcoin Core RPC commands that scan descriptors. When a user requested a descriptor range ending at the maximum allowed value (2,147,483,647), the internal counter used a smaller integer type and…

Signed integer overflow in descriptor expansion loopCrash/undefined behavior on maximum-range descriptor scansAuthenticated RPC surface affected (scantxoutset, scanblocks, getdescriptoractivity, utxoupdatepsbt, descriptorprocesspsbt)
b388674aby Ava Chow+3−12 files
Vendor flagged security relevance
Informational 19 AI analysisMessage 91 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#35842: rpc: Properly make RPCResult::Type::ANY non-test-only

This is a small cleanup and documentation fix for Bitcoin Core's RPC help system. It removes a comment that incorrectly said a certain output type was 'for testing only' and makes the help text properly display those outputs. There is no d…

No memory safety, cryptography, consensus, or authorization changes observedChange is confined to RPC help/schema metadata generationComment-only/type-label change from 'for testing only' to general use
c36ffd87by merge-script+42−364 files
No security note in commit
Informational 15 AI analysisMessage 93 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#35895: refactor: Enable clang-tidy rule to reject anon namespace in header

This is a code cleanup change that turns on a static-analysis rule to prevent a specific C++ coding pattern (anonymous namespaces in header files) and updates two headers to comply. It does not change how Bitcoin Core behaves at runtime an…

No security-relevant code changeNo memory safety, cryptography, consensus, or network changesTooling-only refactor (clang-tidy configuration)
c4fbd3c7by merge-script+9−123 files
No security note in commit
Informational 15 AI analysisMessage 100 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#35630: test: Add importdescriptors rpc error test coverage

This commit only adds new test cases to Bitcoin Core's functional test suite. It does not change any production wallet, node, or RPC code. The tests verify that the importdescriptors RPC reports errors in the right order, rejects bad times…

465196d0by merge-script+77−11 file
No security note in commit
Informational 15 AI analysisMessage 81 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#35180: coins: group private cache helpers

This change is purely a code cleanup: it moves two internal helper functions of a Bitcoin Core cache class into the private section of the class and removes a duplicate 'private:' label. There is no change to what the code does, no bug fix…

c940fd75by merge-script+13−141 file
No security note in commit
Low 29 AI analysisMessage 81 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#35582: rpc: reject null for optional parameters

This Bitcoin Core change tightens how three RPC commands (scantxoutset, scanblocks, deriveaddresses) handle the value null when it is passed for optional parameters. Previously, explicitly passing null could be treated differently from sim…

RPC parameter validation changeNull value handling changeAddition of explicit error checks for missing required contextual parameters
3db96eb5by merge-script+18−75 files
No security note in commit
Informational 15 AI analysisMessage 57 · Thin
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

refactor: Enable misc-definitions-in-headers

This commit is a code cleanup: it turns on a clang-tidy style check called 'misc-definitions-in-headers' and suppresses that check around a large inline implementation block in a benchmark header. There is no change to Bitcoin's runtime be…

fa93132dby MarcoFalke+3−02 files
No security note in commit
Informational 15 AI analysisMessage 85 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

refactor: Enable clang-tidy rule to reject anon namespace in header

This commit only changes a linting configuration file for the project's code style checker. It enables a rule that prevents anonymous namespaces from being used in header files, which is a code-quality and build-hygiene practice. There is …

No security-relevant signals in the diff or commit message.Change is purely a static-analysis/linting configuration update.
fa5ca877by MarcoFalke+2−11 file
No security note in commit
Informational 15 AI analysisMessage 62 · Adequate
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

refactor: Use C++20 std::identity over IntIdentity

This commit is a straightforward code cleanup: it replaces a small custom helper named IntIdentity with the standard C++20 std::identity from the <functional> header. The behavior of the ConvertBits function is unchanged; only the implemen…

fafe5042by MarcoFalke+4−111 file
No security note in commit
Informational 15 AI analysisMessage 87 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

test: test the result order of a multiple import request is correct

This commit only adds a new automated test to Bitcoin Core. It checks that when a user asks the wallet to import multiple descriptors at once, the list of results comes back in the same order as the original request, including any error me…

3ac8b806by Pol Espinasa+40−01 file
No security note in commit
Informational 15 AI analysisMessage 87 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

test: test invalid or missing timestamp throws importdescriptors

This commit only adds new automated tests for the Bitcoin Core wallet's importdescriptors RPC. It checks that the command correctly rejects requests with a missing or invalid timestamp. No production wallet code is changed, so this cannot …

No changes to consensus, networking, wallet logic, or cryptographyOnly functional test code is modifiedAdded assertions are for expected error handling paths
e4732bf0by Pol Espinasa+28−11 file
No security note in commit
Informational 15 AI analysisMessage 80 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

refactor: Remove unused #include in common/system

This is a minor code cleanup that removes one unused header file include and swaps another for a more specific one. It does not change any program behavior or fix any security issue.

fa7304f3by MarcoFalke+1−22 files
No security note in commit
Informational 15 AI analysisMessage 50 · Thin
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

iwyu: Fix warnings in `src/consensus` and treat them as errors

This commit is a routine code cleanup: it adjusts which C++ header files are included in several consensus-related source files and turns on a stricter compiler hygiene check (Include What You Use, or IWYU) for the src/consensus directory.…

13b53f8bby Hennadii Stepanov+42−79 files
No security note in commit
Informational 15 AI analysisMessage 55 · Thin
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

fuzz: don't connman.ReceiveMsgFrom oversized msg

This is a small fix to a Bitcoin Core fuzz test (an automated internal testing harness), not to the live network code. The fuzzer was sometimes creating fake P2P messages larger than the real protocol allows and passing them into a test he…

Test-only fuzz harness hardeningOversized message guard added before ReceiveMsgFrom() in fuzz targetNo change to production P2P message acceptance logic
bb19f1daby Greg Sanders+5−01 file
No security note in commit
Informational 15 AI analysisMessage 97 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

ci: Temporarily remove riscv32 config from GHA matrix

This commit simply removes one failing test configuration (RISC-V 32-bit bare metal) from the project's GitHub Actions CI matrix because it was failing. It is a routine CI maintenance change with no security implications.

fa06ea42by MarcoFalke+0−61 file
No security note in commit
Low 47 AI analysisMessage 90 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

ci: verify cross-build SDK archives

This change adds checksum verification to the build system's downloads of Apple, FreeBSD, NetBSD, and OpenBSD software development kits (SDKs). Before this patch, those SDK archives were downloaded at build time and extracted without confi…

Adds cryptographic digest verification for downloaded SDK archivesRemoves unchecked extraction of remote SDK archives in CIHardens CI supply chain for macOS/BSD cross-builds
873550beby Lőrinc+25−126 files
Vendor flagged security relevance
Repository ledger

Explore captured commits

Expand any commit for its author, full message, clarity score, changed files, triage signals, analysis, and source link.

Lower-priorityfuzz: pass coins_view_cache to TestCoinsView in coins_viewby Andrew Toth · 89824fb2 · Feb 13, 2026 · 1 fileMessage 83 · StrongInformational 15Details
Commit message · Andrew Toth

fuzz: pass coins_view_cache to TestCoinsView in coins_view

Refactor TestCoinsView() to accept the cache as a parameter instead of
creating it internally. This prepares for adding a CoinsViewOverlay
fuzz target that needs to pass in a different cache type.

This is a non-functional change.

Co-authored-by: l0rinc <pap.lorinc@gmail.com>

83/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
fuzzing or regression evidence
AI analysis · Informational 15/100

This commit is a minor code cleanup in Bitcoin Core's internal fuzz testing code. It changes how a test helper function receives a temporary data cache, moving the cache creation from inside the helper to the callers. The commit message explicitly calls this a non-functional change, and the diff shows only a straightforward parameter refactor with no logic changes to how Bitcoin handles transactions, networking, or wallets.

Lower-prioritydoc: Release notes for mining IPC interface bumpby Ryan Ofsky · f700609e · Feb 12, 2026 · 2 filesMessage 45 · ThinInformational 15Details
Commit message · Ryan Ofsky

doc: Release notes for mining IPC interface bump

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This commit only updates release note documentation for an upcoming Bitcoin Core release. It deletes one release-notes file and adds another describing changes to the mining IPC (inter-process communication) interface. There are no code changes, no bug fixes, and no security-sensitive behavior altered in the commit itself.

Lower-prioritycmake: Fix NetBSD-specific workaround for Boostby Hennadii Stepanov · 79c934b5 · Feb 12, 2026 · 1 fileMessage 45 · ThinInformational 15Details
Commit message · Hennadii Stepanov

cmake: Fix NetBSD-specific workaround for Boost

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Informational 15/100

This is a small build-system fix for Bitcoin Core on NetBSD. It narrows an existing workaround so it only applies when Boost is installed under /usr/pkg (the standard NetBSD pkgsrc location). Previously, the workaround could set incorrect include paths on NetBSD systems where Boost was installed elsewhere, potentially breaking compilation. There is no indication this affects runtime security or allows attacks.

Lower-prioritytest: Fix intermittent issues in feature_assumevalid.pyby MarcoFalke · fa90d44a · Feb 12, 2026 · 1 fileMessage 72 · AdequateInformational 15Details
Commit message · MarcoFalke

test: Fix intermittent issues in feature_assumevalid.py

72/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Mentions testing or verification! No meaningful explanatory body
AI analysis · Informational 15/100

This commit fixes timing-related flakiness in a single Bitcoin Core functional test file. It does not change any production node code, network rules, or wallet behavior. There is no security issue in the software itself—only a more reliable way of running an existing test.

Lower-priorityipc mining: break compatibility with existing clients (version bump)by Sjors Provoost · 9453c153 · Feb 12, 2026 · 3 filesMessage 73 · AdequateInformational 19Details
Commit message · Sjors Provoost

ipc mining: break compatibility with existing clients (version bump)

This increments the field number of the `Init.makeMining` method and makes the
old `makeMining` method return an error, so existing IPC mining clients not
using the latest schema file will get an error and not be able to access the
Mining interface.

Normally, there shouldn't be a need to break compatibility this way, but the
mining interface has evolved a lot since it was first introduced, with old
clients using the original methods less stable and performant than newer
clients. So now is a good time to introduce a cutoff, drop deprecated methods,
and stop supporting old clients which can't function as well.

Bumping the field number is also an opportunity to make other improvements that
would be awkward to implement compatibly, so a few of these were implemented in
commits immediately preceding this one.

Co-authored-by: Ryan Ofsky <ryan@ofsky.org>

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Informational 19/100

This is a planned compatibility break for an experimental inter-process communication (IPC) mining feature in Bitcoin Core. The developers moved the current mining method to a new slot and made the old slot return a clear error message, so outdated clients can no longer connect. It is not a security vulnerability; it is an intentional API cleanup with a test that verifies the old interface now fails gracefully.

Lower-priorityipc mining: declare constants for default field valuesby Ryan Ofsky · a4603ac7 · Feb 12, 2026 · 4 filesMessage 73 · AdequateInformational 15Details
Commit message · Ryan Ofsky

ipc mining: declare constants for default field values

This commit only declares constants without using them. They will be applied in
seperate commit since changing struct default field values in cap'n proto is
not backwards compatible.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Informational 15/100

This commit is a small, non-functional refactor. It declares new named constants for default values used in Bitcoin's mining inter-process communication (IPC) protocol and block template creation, and adds compile-time checks that those constants match existing values. No behavior changes; no security issue.

Lower-priorityipc test: add workaround to block_reserved_weight exception testby Ryan Ofsky · ff995b50 · Feb 12, 2026 · 1 fileMessage 91 · StrongInformational 16Details
Commit message · Ryan Ofsky

ipc test: add workaround to block_reserved_weight exception test

libmultiprocess currently handles uncaught exceptions from IPC methods badly
when an `mp.Context` parameter is passed and the IPC call executes on an a
worker thread, with the uncaught exception leading to a std::terminate call.

https://github.com/bitcoin-core/libmultiprocess/pull/218 was created to fix
this, but before that change is available, update an IPC test which can trigger
this behavior to handle it and recover when mp.Context parameters are added in
the an upcoming commit.

Having this workaround makes the test a little more complicated and less strict
but reduces dependencies between pending PRs so they don't need to be reviewed
or merged in a particular order.

91/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
AI analysis · Informational 16/100

This is a test-only change in Bitcoin Core. It adds a temporary workaround in an automated test so the test can keep running even when a known bug in a supporting library (libmultiprocess) causes the tested program to crash. The change does not alter normal Bitcoin node behavior, wallet handling, consensus rules, or network protocol handling, so it is not a security vulnerability in Bitcoin Core itself.

Lower-priorityipc mining: pass missing context to BlockTemplate methods (incompatible schema change)by Sjors Provoost · 70de5cc2 · Feb 12, 2026 · 3 filesMessage 93 · StrongLow 25Details
Commit message · Sjors Provoost

ipc mining: pass missing context to BlockTemplate methods (incompatible schema change)

Adding a context parameter ensures that these methods are run in
their own thread and don't block other calls. They were missing
for:

- createNewBlock()
- checkBlock()

The missing parameters were first pointed out by plebhash in
https://github.com/bitcoin/bitcoin/issues/33575#issuecomment-3383290115 and
adding them should prevent possible performance problems and lockups,
especially with #34184 which can make the createNewBlock method block for a
long time before returning. It would be straightforward to make this change in
a backward compatible way
(https://github.com/bitcoin/bitcoin/pull/34184#discussion_r2770232149) but nice
to not need to go through the trouble.

Warning: This is an intermediate, review-only commit. Binaries built from it
should not be distributed or used to connect to other clients or servers. It
makes incompatible changes to the `mining.capnp` schema without updating the
`Init.makeMining` version, causing binaries to advertise support for a schema
they do not actually implement. Mixed versions may therefore exchange garbage
requests/responses instead of producing clear errors. The final commit in this
series bumps the mining interface number to ensure mismatches are detected.

git-bisect-skip: yes

Co-authored-by: Ryan Ofsky <ryan@ofsky.org>

93/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Links an issue, advisory, or supporting reference
AI analysis · Low 25/100

This is a Bitcoin Core internal-only commit that changes the inter-process communication (IPC) schema used between the main node and external mining components. It adds a missing 'context' parameter to two mining methods so they run in their own thread and don't block other calls. The commit itself explicitly warns it is an intermediate, review-only change that should not be distributed, because it makes incompatible schema changes without bumping the version number, which could cause mismatched binaries to exchange garbage data instead of clean errors. The actual security risk is low and self-contained: it is a known, temporary incompatibility during development, not a vulnerability in shipped code.

Lower-priorityrpc refactor: stop using deprecated getCoinbaseCommitment methodby Ryan Ofsky · df53a3e5 · Feb 12, 2026 · 1 fileMessage 65 · AdequateInformational 13Details
Commit message · Ryan Ofsky

rpc refactor: stop using deprecated getCoinbaseCommitment method

There should be no change in behavior

Co-authored-by: Sjors Provoost <sjors@sprovoost.nl>

65/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
AI analysis · Informational 13/100

This is a small internal code cleanup in Bitcoin Core's mining RPC. It replaces a deprecated helper method with a direct read of the coinbase transaction data. The commit message explicitly says there should be no change in behavior, and the diff shows equivalent logic: it still returns the same witness commitment value under the same JSON key when present.

Lower-priorityipc mining: provide default option values (incompatible schema change)by Ryan Ofsky · c6638fa7 · Feb 12, 2026 · 2 filesMessage 85 · StrongInformational 19Details
Commit message · Ryan Ofsky

ipc mining: provide default option values (incompatible schema change)

This change copies default option values from the C++ mining interface to the
Cap'n Proto interface. Currently, no capnp default values are set, so they are
implicitly all false or 0, which is inconvenient for the rust and python
clients and inconsistent with the C++ client.

Warning: This is an intermediate, review-only commit. Binaries built from it
should not be distributed or used to connect to other clients or servers. It
makes incompatible changes to the `mining.capnp` schema without updating the
`Init.makeMining` version, causing binaries to advertise support for a schema
they do not actually implement. Mixed versions may therefore exchange garbage
requests/responses instead of producing clear errors. The final commit in this
series bumps the mining interface number to ensure mismatches are detected.

git-bisect-skip: yes

85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
AI analysis · Informational 19/100

This is a Bitcoin Core internal commit that adds default values to an inter-process communication (IPC) schema used by experimental mining interfaces. The commit itself warns it is an intermediate, review-only change that should not be used in production because it makes an incompatible schema change without bumping the version number. If someone ignored that warning and ran mismatched binaries, the two sides could misunderstand each other's messages and exchange garbage data instead of clean errors. There is no direct evidence this is exploitable as a security vulnerability; the risk is primarily operational and self-disclosed by the developers.

Lower-priorityipc mining: remove deprecated methods (incompatible schema change)by Ryan Ofsky · 2278f017 · Feb 12, 2026 · 9 filesMessage 85 · StrongInformational 21Details
Commit message · Ryan Ofsky

ipc mining: remove deprecated methods (incompatible schema change)

This change removes deprecated methods from the ipc mining interface.

Warning: This is an intermediate, review-only commit. Binaries built from it
should not be distributed or used to connect to other clients or servers. It
makes incompatible changes to the `mining.capnp` schema without updating the
`Init.makeMining` version, causing binaries to advertise support for a schema
they do not actually implement. Mixed versions may therefore exchange garbage
requests/responses instead of producing clear errors. The final commit in this
series bumps the mining interface number to ensure mismatches are detected.

git-bisect-skip: yes

85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
AI analysis · Informational 21/100

This is a Bitcoin Core internal cleanup commit that removes old, deprecated methods from the inter-process communication (IPC) mining interface. The commit itself is explicitly marked as an incomplete, review-only change that should not be used in production. The main risk is that, because the interface version number was not bumped in this intermediate commit, two differently-versioned programs could talk to each other using mismatched method numbers and exchange meaningless data instead of getting a clean error. That mismatch is a protocol-handling bug, not a cryptographic or funds-theft vulnerability, and the commit message says the next commit in the series will fix it by bumping the version.

Lower-prioritytest framework: expand expected_stderr, expected_ret_code optionsby Ryan Ofsky · b970cdf2 · Feb 12, 2026 · 1 fileMessage 83 · StrongInformational 15Details
Commit message · Ryan Ofsky

test framework: expand expected_stderr, expected_ret_code options

Allow `expected_stderr` option passed to `wait_until_stopped` and
`is_node_stopped` helper functions to be a regex pattern instead of just a
fixed string.

Allow `expected_ret_code` be list of possible exit codes instead of a single
error code to handle the case where exit codes vary depending on OS and libc.

83/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
AI analysis · Informational 15/100

This commit changes Bitcoin Core's internal testing helper code. It makes two test-only quality-of-life improvements: an expected error message can now be a regular expression pattern instead of only a fixed string, and an expected program exit code can now be a list of acceptable values instead of a single value. These changes only affect how tests validate results; they do not change the behavior of the Bitcoin Core software that users run.

Lower-prioritytest: Cover abortprivatebroadcast in p2p_private_broadcastby Andrew Toth · c3378be1 · Feb 12, 2026 · 1 fileMessage 87 · StrongInformational 15Details
Commit message · Andrew Toth

test: Cover abortprivatebroadcast in p2p_private_broadcast

Co-authored-by: l0rinc <pap.lorinc@gmail.com>

87/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body✓ Mentions testing or verification
AI analysis · Informational 15/100

This commit only adds new test code to Bitcoin Core. It does not change any production wallet, networking, or consensus code. The test verifies that a new RPC command, abortprivatebroadcast, correctly removes a transaction from the private-broadcast queue and returns an error for a non-existent transaction. There is no security-relevant change to end-user behavior.

Lower-prioritydoc: Mention private broadcast RPCs in release notesby Andrew Toth · 2a1d0db7 · Feb 12, 2026 · 1 fileMessage 50 · ThinInformational 15Details
Commit message · Andrew Toth

doc: Mention private broadcast RPCs in release notes

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This commit is a documentation-only update to the release notes. It simply tells users about two new commands (RPCs) that let them check or stop private transaction broadcasts. No code behavior changed, and there is no security issue in the commit itself.

Lower-priorityrpc: Add abortprivatebroadcastby Andrew Toth · 557260ca · Feb 12, 2026 · 4 filesMessage 50 · ThinInformational 23Details
Commit message · Andrew Toth

rpc: Add abortprivatebroadcast

Co-authored-by: l0rinc <pap.lorinc@gmail.com>

50/100 · ThinMessage clarity
✓ Descriptive subject✓ Provides an explanatory body
AI analysis · Informational 23/100

This commit adds a new Bitcoin Core RPC command called abortprivatebroadcast. It lets a node operator stop a transaction that is currently being sent out privately (a privacy feature) and remove it from the outgoing queue. The change is purely additive: it exposes a way to cancel an in-progress private broadcast, but does not by itself create or fix a security vulnerability. It is a user-facing control feature, not a security patch.

Lower-prioritytest: Cover getprivatebroadcastinfo in p2p_private_broadcastby Andrew Toth · 15dff452 · Feb 12, 2026 · 1 fileMessage 87 · StrongInformational 15Details
Commit message · Andrew Toth

test: Cover getprivatebroadcastinfo in p2p_private_broadcast

Co-authored-by: l0rinc <pap.lorinc@gmail.com>

87/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body✓ Mentions testing or verification
AI analysis · Informational 15/100

This commit only adds new test code to Bitcoin Core. It extends an existing functional test to check that an RPC command called getprivatebroadcastinfo correctly reports private transaction broadcasts. There is no change to production code, no bug fix, and no security-relevant behavior change.

Lower-priorityrpc: Add getprivatebroadcastinfoby Andrew Toth · 996f20c1 · Feb 12, 2026 · 4 filesMessage 50 · ThinInformational 18Details
Commit message · Andrew Toth

rpc: Add getprivatebroadcastinfo

Co-authored-by: Vasil Dimov <vd@freebsd.org>

50/100 · ThinMessage clarity
✓ Descriptive subject✓ Provides an explanatory body
AI analysis · Informational 18/100

This commit adds a new read-only RPC command called getprivatebroadcastinfo to Bitcoin Core. It lets users inspect transactions currently being broadcast privately, including their IDs, raw data, and which peers they were sent to and when. There is no code change that modifies how transactions are broadcast or how peers are chosen; it only exposes existing internal state through the RPC interface.

Lower-prioritynet: Add PrivateBroadcast::GetBroadcastInfoby Andrew Toth · 5e649825 · Feb 12, 2026 · 3 filesMessage 50 · ThinInformational 15Details
Commit message · Andrew Toth

net: Add PrivateBroadcast::GetBroadcastInfo

Co-authored-by: Daniela Brozzoni <danielabrozzoni@protonmail.com>
Co-authored-by: l0rinc <pap.lorinc@gmail.com>

50/100 · ThinMessage clarity
✓ Descriptive subject✓ Provides an explanatory body
AI analysis · Informational 15/100

This commit adds a new read-only method, GetBroadcastInfo(), to Bitcoin Core's PrivateBroadcast class. It simply returns statistics about which transactions are being privately broadcast and to which peers. There is no change to network behavior, no new permissions, and no bug fix. It is a routine code addition with no security relevance.

AI review queued[doc] coin selection filters by max cluster count, not descendantby glozow · a067ca34 · Feb 11, 2026 · 7 filesMessage 73 · AdequateInformational 15Details
Commit message · glozow

[doc] coin selection filters by max cluster count, not descendant

Avoid confusion by clarifying the docs and renaming the variables that
now hold cluster count rather than descendant count. No behavior change.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit only renames variables and updates comments in Bitcoin Core's coin selection code. It changes names like 'descendants' to 'cluster_count' to make the code match what it actually does, with no change in behavior. There is no security issue here.

Security candidaterefactor: add overflow-safe `CeilDiv` helperby Lőrinc · 02d047fd · Feb 11, 2026 · 15 filesMessage 95 · StrongLow 29Details
Commit message · Lőrinc

refactor: add overflow-safe `CeilDiv` helper

Introduce `CeilDiv()` for integral ceiling division without the typical `(dividend + divisor - 1) / divisor` overflow, asserting a non-zero divisor.

Replace existing ceiling-division expressions with `CeilDiv()` to centralize the preconditions.

Add unit tests covering return type deduction, max-value behavior, and divisor checks.

95/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Names security-relevant behavior explicitly
Why it was queued
memory safety
AI analysis · Low 29/100

This commit adds a new helper function called CeilDiv that performs ceiling division in a way that avoids integer overflow. It then replaces many existing hand-written ceiling division expressions across the Bitcoin Core codebase with this safer helper. The change is primarily a defensive refactor to prevent a class of subtle overflow bugs, rather than a fix for a known exploitable vulnerability.

Security candidatewallet: rpc: manpage: fix example missing `fee_rate` argumentby SomberNight · 50cf6838 · Feb 11, 2026 · 1 fileMessage 78 · AdequateInformational 17Details
Commit message · SomberNight

wallet: rpc: manpage: fix example missing `fee_rate` argument

The function signature for the `send` RPC is:
```
send [{"address":amount,...},{"data":"hex"},...] ( conf_target "estimate_mode" fee_rate options version )
```

The last example in the manpage is missing the `fee_rate` arg, but is trying to specify the `options` arg, by index.
The parser confuses the intended `options` arg as the missing `fee_rate` arg.

See:
```
$ bitcoin-cli -rpcuser=doggman -rpcpassword=donkey -rpcport=18554 -regtest send '{"bcrt1qusm48zmlzwr32csxdw4ar7atw260h22c9ten9l": 0.1}' 1 economical '{"add_to_wallet": false, "inputs": [{"txid":"0b7e1a471dc948b7a6187936b16e6d7d9833629b2f9dd8a392eb89928f63aaad", "vout":0}]}'
error code: -8
error message:
Cannot specify both conf_target and fee_rate. Please provide either a confirmation target in blocks for automatic fee estimation, or an explicit fee rate.
```
vs
```
$ bitcoin-cli -rpcuser=doggman -rpcpassword=donkey -rpcport=18554 -regtest send '{"bcrt1qusm48zmlzwr32csxdw4ar7atw260h22c9ten9l": 0.1}' 1 economical null '{"add_to_wallet": false, "inputs": [{"txid":"0b7e1a471dc948b7a6187936b16e6d7d9833629b2f9dd8a392eb89928f63aaad", "vout":0}]}'
{
"psbt": "cHNidP8BAHECAAAAAa2qY4+SieuSo9idL5tiM5h9bW6xNnkYprdIyR1HGn4LAAAAAAD9////AkR2DwQAAAAAFgAUpLDwJu+wFRHLQAgKAb0psk7UVd2AlpgAAAAAABYAFOQ3U4t/E4cVYgZrq9H7q3K0+6lYAAAAAAABAIUCAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/////wQC4wMA/////wLIF6gEAAAAABYAFLMY1zihXrefAA0DA5nld4MCPjkrAAAAAAAAAAAmaiSqIant4vYcP3HR3v0/qZnfo2lTdVxpBol5mWK0i+vYNpdOjPkAAAAAAQEfyBeoBAAAAAAWABSzGNc4oV63nwANAwOZ5XeDAj45KwEIawJHMEQCIElTV4pbUrsPR9qHWcioowVv3QVWHizxwevfD0u/I8YyAiBCY3OzF81PSLM00h4ueQkehYuxDFZu7Jk51iejphKnnwEhA0VKdYVSyBpWoxBwTDOupB58Fi3mEBs+u+OOqEYVd2sZACICA98YLWyH7dBCfXVxe7woiLSTgV1mJN8Zc8KgZ77pVSg+GNBMeT5UAACAAQAAgAAAAIABAAAAbAAAAAAA",
"txid": "625b71b314a6ac4f738634e29dc007cd5edc0427c1ae96ab706d06a62910cea2",
"hex": "02000000000101adaa638f9289eb92a3d89d2f9b6233987d6d6eb1367918a6b748c91d471a7e0b0000000000fdffffff0244760f0400000000160014a4b0f026efb01511cb40080a01bd29b24ed455dd8096980000000000160014e437538b7f13871562066babd1fbab72b4fba9580247304402204953578a5b52bb0f47da8759c8a8a3056fdd05561e2cf1c1ebdf0f4bbf23c6320220426373b317cd4f48b334d21e2e79091e858bb10c566eec9939d627a3a612a79f012103454a758552c81a56a310704c33aea41e7c162de6101b3ebbe38ea84615776b1900000000",
"complete": true
}
```

78/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Names security-relevant behavior explicitly
Why it was queued
signing boundarysigning or wallet path
AI analysis · Informational 17/100

This commit fixes a typo in the documentation example for the `send` RPC command. The example was missing a placeholder for the `fee_rate` argument, which caused the example command to be interpreted incorrectly and produce an error if copied exactly. It is a documentation-only change and does not alter any executable code.

AI review queuedrefactor: fees: split fee rate format from fee estimate modeby ismaelsadeeq · c1355493 · Feb 11, 2026 · 10 filesMessage 95 · StrongInformational 14Details
Commit message · ismaelsadeeq

refactor: fees: split fee rate format from fee estimate mode

- Introduce a `FeeRateFormat` enum and change `CFeeRate::ToString()`
to use it for `BTC/kvB` vs `sat/vB` output formatting.
- Handle all enum values, hence remove default case in `CFeeRate::ToString()`
and `assert(False)` when a `FeeRateFormat` value is not handled.
- Keep `FeeEstimateMode` focused on fee estimation behavior by removing fee rate format
values from `FeeEstimateMode`.
- Update all formatting call sites and tests to pass `FeeRateFormat` explicitly, separating fee rate format
from fee-estimation mode selection.

95/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 14/100

This is a code cleanup change that separates how fee rates are displayed (BTC/kvB versus sat/vB) from how fees are estimated. It introduces a new FeeRateFormat enum and removes display-only values from the FeeEstimateMode enum. There is no security fix or behavior change visible in the diff.

Lower-priorityci: Split vcpkg tools cache into restore/saveby willcl-ark · c413cf12 · Feb 11, 2026 · 1 fileMessage 92 · StrongInformational 15Details
Commit message · willcl-ark

ci: Split vcpkg tools cache into restore/save

The vcpkg tools cache was using the combined actions/cache action,
which saves on every run regardless of branch. Split it into the
restore/save pattern used by the other caches, so that saves only
happen on default branch pushes.

92/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Explains rationale or failure mode
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This is a routine GitHub Actions CI maintenance change. It splits a single cache step into separate 'restore' and 'save' steps so that downloaded vcpkg tools are only saved back to the cache when the workflow runs on the project's default branch. There is no security vulnerability or user-facing bug here.

Lower-priorityrefactor: move-only: move `FeeEstimateMode` enum to `util/fees.h`by ismaelsadeeq · 922ebf96 · Feb 11, 2026 · 2 filesMessage 62 · AdequateInformational 15Details
Commit message · ismaelsadeeq

refactor: move-only: move `FeeEstimateMode` enum to `util/fees.h`

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
AI analysis · Informational 15/100

This commit is a simple code reorganization: it moves an existing list of fee-estimation options (the FeeEstimateMode enum) from one header file to another, without changing any values, logic, or behavior. There is no security issue here.

Lower-prioritydoc: archive release notes for v29.3by sedited · d29bc5e6 · Feb 11, 2026 · 1 fileMessage 45 · ThinInformational 15Details
Commit message · sedited

doc: archive release notes for v29.3

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This commit simply archives the release notes for Bitcoin Core version 29.3. It adds a documentation file listing bug fixes, performance improvements, and contributor credits. No code was changed, and there is no security issue in the commit itself.