BC
← All projectsBitcoin Core

Bitcoin Core

The Bitcoin network's reference node and wallet implementation.

BitcoinSupply chainNormal
Repository coverage

2912 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.

257security candidates611second-pass queue2888AI analyses
187commits · 30 days
471commits · 60 days
1488commits · 180 days
2877commits · 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
948Strong · 80–100
1188Adequate · 60–79
688Thin · 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 Chow15850158064
MarcoFalke41021406074
Lőrinc17721177081
fanquake22819226057
Hennadii Stepanov21014208063
rkrux57957074
Sjors Provoost89889074
Sebastian Falbesoner33733073
merge-script32718088
David Gumberg55655072
Pieter Wuille95595066
Analysis record

Published AI watches

Last scanned 39 minutes ago

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

Merge bitcoin/bitcoin#35729: refactor: test: Unroll `&&` conditions in macros

This commit only changes Bitcoin Core's internal test code. It splits combined conditions inside test-check macros (like BOOST_CHECK(a && b)) into separate checks so that when a test fails, the test output points to the exact failing condi…

aa0e0f79by merge-script+196−9519 files
No security note in commit
Low 26 AI analysisMessage 100 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#35493: wallet, descriptor: Fix MuSig private key completeness checks on `importdescriptors`

This commit fixes a bug in Bitcoin Core's wallet import logic for a new type of multi-signature setup called MuSig. Previously, when a user imported a MuSig descriptor that already contained all needed private keys, the wallet incorrectly …

False-positive warning in wallet import for fully-private MuSig descriptorsIncorrect private-key completeness check on synthetic aggregate public keyDescriptor logic now delegates completeness to `Descriptor::HavePrivateKeys()`
2c01832fby merge-script+76−374 files
No security note in commit
Informational 15 AI analysisMessage 81 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#35943: doc: fix dead link in txrequest.h

This commit only fixes a broken web link in a code comment. It replaces an outdated URL to a research paper with a working URL to the same paper. There is no change to program logic, no security fix, and no vulnerability.

5d051c05by 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#33186: wallet, test: Ancient Wallet Migration from v0.14.3 (no-HD and Single Chain)

This commit only adds new automated tests for migrating very old Bitcoin Core wallets (version 0.14.3 from 2017) to the modern descriptor wallet format. It does not change any wallet production code, consensus rules, or network behavior. T…

757aa573by merge-script+246−124 files
No security note in commit
Low 28 AI analysisMessage 91 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#35925: wallet, rpc: Exclude non-owned addresses from listreceivedby*

This update fixes a wallet reporting bug. When a user asked their Bitcoin wallet to list every address that had received money, including empty ones, the result incorrectly included foreign addresses that the wallet merely knew about (for …

Information disclosure: wallet RPCs leaked existence/labels of foreign addressesIncorrect access-control boundary: non-owned addresses exposed in 'received' reportFix uses IsMine() rather than address purpose metadata, avoiding inconsistent purpose handling
e8cc21c5by Ava Chow+19−32 files
No security note in commit
Informational 15 AI analysisMessage 91 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#35937: test: Append print_suppressions=0 to LSAN_OPTIONS, and suppress bitcoin-qt

This commit only changes test configuration. It tells the LeakSanitizer tool used during automated testing to stop printing long lists of suppressed memory leaks, and it narrows the list of ignored leaks to the bitcoin-qt GUI test binary. …

5973e075by merge-script+3−42 files
No security note in commit
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
Repository ledger

Explore captured commits

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

AI review queuedrefactor: Move -walletbroadcast setting initby David Gumberg · a02c4a82 · Jan 16, 2026 · 1 fileMessage 80 · StrongInformational 15Details
Commit message · David Gumberg

refactor: Move -walletbroadcast setting init

Modifying `fBroadcastTransactions` does not require any locks,
initialization of this wallet parameter can be relocated with all of the
other argument parsing in this function.

80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This is a simple code cleanup change. It moves where a wallet setting called -walletbroadcast is read from the command-line/config into the wallet object. Previously it happened inside a locked section; now it happens earlier with other similar settings. The commit message explicitly says this does not require locks and is just relocating initialization. There is no security issue visible in the change.

AI review queuedrefactor: wallet: move error handling to PopulateWalletFromDB()by David Gumberg · a48e23f5 · Jan 16, 2026 · 5 filesMessage 62 · AdequateInformational 15Details
Commit message · David Gumberg

refactor: wallet: move error handling to PopulateWalletFromDB()

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit is a straightforward internal code cleanup in Bitcoin Core's wallet module. It moves the code that translates database load errors into user-facing error and warning messages from two separate callers into the single function that actually loads the wallet data. There is no change to what errors are detected, what messages are shown, or how the wallet behaves when problems occur.

AI review queuedci, iwyu: Fix warnings in `src/kernel` and treat them as errorsby Hennadii Stepanov · a5a8c413 · Jan 16, 2026 · 8 filesMessage 50 · ThinInformational 15Details
Commit message · Hennadii Stepanov

ci, iwyu: Fix warnings in `src/kernel` and treat them as errors

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit is a routine code-quality cleanup. It adjusts which C++ header files are included in several source files under src/kernel and tells the continuous-integration system to treat missing-header warnings in that directory as errors. There is no change to program logic, no bug fix, and no security-relevant behavior.

Lower-prioritycontrib: [refactor] Use shorter read_text from pathlibby MarcoFalke · fa38ffac · Jan 16, 2026 · 1 fileMessage 50 · ThinInformational 15Details
Commit message · MarcoFalke

contrib: [refactor] Use shorter read_text from pathlib

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
AI analysis · Informational 15/100

This is a minor code cleanup in a helper script that checks Git commit signatures. It replaces several verbose file-reading instructions with shorter, equivalent ones using Python's pathlib module. There is no security-relevant change.

Lower-prioritycontrib: Revert "verify-commits sha1 exceptions"by MarcoFalke · fab8bc03 · Jan 16, 2026 · 2 filesMessage 82 · StrongInformational 18Details
Commit message · MarcoFalke

contrib: Revert "verify-commits sha1 exceptions"

This reverts commit 8ac134be5e57680eb1c6ef596e5de085825e83ee, because it
is no longer needed.

82/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Explains rationale or failure mode✓ Mentions testing or verification
AI analysis · Informational 18/100

This commit removes a special exception list that let one specific old commit be verified using the older, weaker SHA-1 algorithm. The exception is no longer needed, so the code now treats all commits consistently under the stronger SHA-512 verification rules. By itself, this is a cleanup that slightly tightens the project's commit-verification script; it is not a fix for an active security bug in Bitcoin Core's network code or wallet.

Lower-priorityfuzz: Use min option in ConsumeTimeby MarcoFalke · faa5a9eb · Jan 16, 2026 · 1 fileMessage 70 · AdequateInformational 15Details
Commit message · MarcoFalke

fuzz: Use min option in ConsumeTime

This is less code and also required for the next commit.

70/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Mentions testing or verification
Why it was queued
fuzzing or regression evidence
AI analysis · Informational 15/100

This commit is a minor code cleanup inside a fuzz test (automated randomized testing) for Bitcoin's header synchronization logic. It replaces a manual check that skipped invalid mock times with a built-in minimum-time option in the test helper. There is no change to production Bitcoin node code, no user-facing behavior change, and no security fix.

AI review queuedwallet: Delete unnecessary PopulateWalletFromDB() callsby David Gumberg · 0972785f · Jan 16, 2026 · 3 filesMessage 50 · ThinInformational 17Details
Commit message · David Gumberg

wallet: Delete unnecessary PopulateWalletFromDB() calls

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 17/100

This commit removes calls to a database-loading helper in three places where they were unnecessary. In two test files and one wallet dump/import tool, the code was calling PopulateWalletFromDB() on a freshly created, empty wallet database before immediately writing new data into it. The change is a code cleanup: it deletes redundant work and, in the dump tool, removes an error check that could never fail meaningfully because the wallet had just been created. There is no direct evidence this fixes a security vulnerability.

AI review queuedscripted-diff: refactor: CWallet::LoadWallet->PopulateWalletFromDBby David Gumberg · f0a04609 · Jan 16, 2026 · 8 filesMessage 83 · StrongInformational 15Details
Commit message · David Gumberg

scripted-diff: refactor: CWallet::LoadWallet->PopulateWalletFromDB

There are too many functions in CWallet with names like "Load" and
"Create", disambiguate what CWallet::LoadWallet does by renaming it to
PopulateWalletFromDB.

-BEGIN VERIFY SCRIPT-
sed -i 's|\bLoadWallet()|PopulateWalletFromDB()|g' $(git grep -l 'LoadWallet()' -- ':(exclude)src/wallet/walletdb.cpp')
-END VERIFY SCRIPT-

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
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit is a simple rename of one internal wallet function from LoadWallet() to PopulateWalletFromDB(). It does not change what the code does, only its name. There is no security impact.

Lower-priorityiwyu: Add missed line to IWYU patchby Hennadii Stepanov · de509c6d · Jan 15, 2026 · 1 fileMessage 60 · AdequateInformational 15Details
Commit message · Hennadii Stepanov

iwyu: Add missed line to IWYU patch

This makes IWYU suggest `<cassert>` over `<assert.h>`.

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
AI analysis · Informational 15/100

This is a tiny maintenance patch for a code-style checking tool used in Bitcoin Core's continuous integration. It adds one missing line to a patch file that tells the Include What You Use (IWYU) tool to recommend the C++ header <cassert> instead of the C header <assert.h>. It does not change any Bitcoin Core runtime code, consensus rules, networking, wallet logic, or build outputs. There is no security relevance.

AI review queuedutil: Add Expected::swap()by MarcoFalke · faa59b36 · Jan 15, 2026 · 2 filesMessage 35 · OpaqueInformational 15Details
Commit message · MarcoFalke

util: Add Expected::swap()

35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
AI analysis · Informational 15/100

This commit adds a standard swap() method to a small utility helper class (Expected) used to represent either a successful value or an error. It also adds a unit test. There is no security relevance in the change itself.

Lower-priorityutil: Implement Expected::operator*()&&by MarcoFalke · fabb47e4 · Jan 15, 2026 · 2 filesMessage 50 · ThinInformational 15Details
Commit message · MarcoFalke

util: Implement Expected::operator*()&&

It is currently unused, but implementing it is closer to std::expected.

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

This commit adds a new C++ language feature to Bitcoin Core's custom Expected helper class: the ability to safely move a value out of a temporary Expected object when using the * operator. It also adds a unit test. There is no security issue here; it is a routine code-quality and standards-conformance improvement.

Security candidateguix: stop passing depends sources to codesigningby fanquake · d94d7b1a · Jan 15, 2026 · 1 fileMessage 80 · StrongInformational 17Details
Commit message · fanquake

guix: stop passing depends sources to codesigning

I think this is just a copy-pasta from the build container. I don't see
why we'd need the depends sources available when performing codesigning.

80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
Why it was queued
signing boundarysigning or wallet path
AI analysis · Informational 17/100

This commit removes leftover code that unnecessarily shared Bitcoin's dependency source files into the isolated Guix container used for codesigning release binaries. The change is described by the author as a cleanup of copy-pasted build-container options, not a security fix. It slightly reduces the attack surface of the codesigning environment by exposing fewer files, but there is no direct evidence of an exploitable vulnerability.

Lower-priorityutil: Implement Expected::value()&& and Expected::error()&&by MarcoFalke · fab97214 · Jan 15, 2026 · 2 filesMessage 65 · AdequateInformational 15Details
Commit message · MarcoFalke

util: Implement Expected::value()&& and Expected::error()&&

They are currently unused, but implementing them is closer to the
std::expected.

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

This commit adds two new ways to access values and errors from a custom 'Expected' helper type in Bitcoin Core: rvalue (move) overloads for value() and error(). It also tightens error() to use an assertion helper instead of a manual assert. The changes are purely internal utility improvements, currently unused elsewhere in the codebase, and do not fix or introduce any security vulnerability.

Lower-priorityutil: Add Expected<void, E> specializationby MarcoFalke · fac48009 · Jan 15, 2026 · 2 filesMessage 80 · StrongInformational 15Details
Commit message · MarcoFalke

util: Add Expected<void, E> specialization

This is not needed, but a bit closer to the std lib, because
std::monostate is no longer leaked through ValueType from the value()
method.

80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
AI analysis · Informational 15/100

This is a small internal code cleanup in Bitcoin Core's utility library. It adds a dedicated specialization for 'Expected<void, E>' so that when no return value is needed, the code no longer exposes a placeholder type (std::monostate) through the public value() method. It also adds a couple of unit tests. There is no security fix, behavior change, or externally visible vulnerability addressed.

Lower-priorityutil: Make Expected::value() throwby MarcoFalke · fa6575d6 · Jan 15, 2026 · 2 filesMessage 68 · AdequateInformational 18Details
Commit message · MarcoFalke

util: Make Expected::value() throw

This is not expected to be needed in this codebase, but brings the
implementation closer to std::expected::value().

Also, add noexcept, where std::expected has them. This will make
operator-> and operator* terminate, when has_value() is false.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Informational 18/100

This commit changes a Bitcoin Core utility class so that a specific programming mistake now throws a catchable exception instead of crashing the program with an assertion failure. It also marks two operators as 'noexcept', meaning misuse of those operators will terminate the program rather than throw. The change is defensive and aligns the custom class with the C++ standard library's std::expected behavior. There is no direct evidence this fixes an exploitable security bug.

Lower-priorityfuzz: Restore SendMessages coverage in process_message(s) fuzz targetsby MarcoFalke · fabf8d1c · Jan 15, 2026 · 3 filesMessage 60 · AdequateInformational 15Details
Commit message · MarcoFalke

fuzz: Restore SendMessages coverage in process_message(s) fuzz targets

60/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
Why it was queued
fuzzing or regression evidence
AI analysis · Informational 15/100

This commit only changes Bitcoin Core's internal fuzz testing code (test harnesses that randomly feed network messages to the software to find bugs). It does not alter the live Bitcoin network node code that users run. The change restores a previously dropped test step (calling SendMessages during fuzzing) and fixes how test objects are reset between runs so that memory-sanitizing tools can catch dangling pointers. There is no direct security impact on production Bitcoin nodes.

Lower-priorityrefactor: Use std::reference_wrapper<AddrMan> in Connmanby MarcoFalke · fac7fed3 · Jan 15, 2026 · 2 filesMessage 100 · StrongInformational 15Details
Commit message · MarcoFalke

refactor: Use std::reference_wrapper<AddrMan> in Connman

The addrman field is already a reference. However, some tests would
benefit from the reference being re-seatable, so that they do not have
to create a full Connman each time.

100/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Mentions testing or verification
AI analysis · Informational 15/100

This is a straightforward internal code cleanup. It changes how CConnman stores its reference to the address manager from a plain C++ reference to std::reference_wrapper, which behaves the same way at runtime but can be reassigned in tests. No behavior of the live Bitcoin node changes, and there is no security fix or vulnerability here.

Lower-priorityp2p: add validation check for initial self-announcementby frankomosh · 6a8dbf9b · Jan 15, 2026 · 1 fileMessage 73 · AdequateLow 37Details
Commit message · frankomosh

p2p: add validation check for initial self-announcement

The direct send path for the initial self-announcement was bypassing
IsAddrCompatible() check that PushAddress() performs

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

This Bitcoin Core patch fixes a small inconsistency in how a node tells other nodes about its own network address. Normally, before sharing any address, the code checks whether the receiving peer can actually understand that address type. The very first self-announcement was skipping that check, which could cause a peer to receive an address format it does not support. The patch adds the missing compatibility check so the first announcement follows the same rule as all later ones.

Lower-prioritytest: use ephemeral ports in p2p_private_broadcast.pyby w0xlt · 3e340672 · Jan 15, 2026 · 1 fileMessage 100 · StrongInformational 15Details
Commit message · w0xlt

test: use ephemeral ports in p2p_private_broadcast.py

The test `p2p_private_broadcast.py` gets some Python P2P nodes to listen
and instructs the SOCKS5 proxy to redirect connections to them instead
of to the requested addresses. This way the `bitcoind` which uses the
proxy is tricked to think it has connected to real routable internet
IP addresses or `.onion` addresses.

Picking the ports where to Python P2P nodes to listen however is tricky
to be done in a non-conflicting way, given that other tests may run in
parallel. https://github.com/bitcoin/bitcoin/pull/34186 made it possible
to let the OS select a free port, so use that in
`p2p_private_broadcast.py`.

100/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✓ Links an issue, advisory, or supporting reference
AI analysis · Informational 15/100

This is a minor test-only change. It updates one Bitcoin Core functional test to let the operating system pick a free network port automatically, instead of the test guessing a port number. This prevents the test from failing when another test is already using the guessed port. It does not change the Bitcoin Core software that users run, and it has no security impact on the live Bitcoin network or user wallets.

Security candidaterefactor: Enforce readability-avoid-const-params-in-declsby MarcoFalke · fa64d842 · Jan 14, 2026 · 48 filesMessage 62 · AdequateInformational 15Details
Commit message · MarcoFalke

refactor: Enforce readability-avoid-const-params-in-decls

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
cryptography-sensitive pathseed or entropy pathsigning or wallet path
AI analysis · Informational 15/100

This commit is a pure code-style cleanup. It removes unnecessary 'const' keywords from function parameter declarations in header files across the Bitcoin Core codebase and adds a clang-tidy rule to prevent them from being reintroduced. The 'const' on a value parameter in a declaration has no effect on callers and does not change program behavior, security, or runtime semantics. There is no vulnerability here.

AI review queuedrefactor: Avoid copies by using const references or by move-constructionby MarcoFalke · faf0c2d9 · Jan 14, 2026 · 10 filesMessage 62 · AdequateInformational 15Details
Commit message · MarcoFalke

refactor: Avoid copies by using const references or by move-construction

62/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit is a routine code cleanup that avoids unnecessary copying of strings and objects by using references or moving values instead. It does not change program behavior or fix any security bug.

Lower-priorityfuzz: Exclude too expensive inputs in miniscript_string targetby MarcoFalke · fac70ea8 · Jan 14, 2026 · 1 fileMessage 60 · AdequateInformational 16Details
Commit message · MarcoFalke

fuzz: Exclude too expensive inputs in miniscript_string target

60/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
Why it was queued
fuzzing or regression evidence
AI analysis · Informational 16/100

This commit changes a Bitcoin Core fuzz test (an automated testing tool, not production code) to skip inputs that are unusually complex. The goal is to avoid wasting fuzzing time on strings that would be too slow to parse, not to fix a security bug in live Bitcoin software.

Lower-prioritynoui: Remove always empty caption while formattingby MarcoFalke · fad7bd9b · Jan 14, 2026 · 4 filesMessage 73 · AdequateInformational 17Details
Commit message · MarcoFalke

noui: Remove always empty caption while formatting

The only behavior change is in noui_ThreadSafeQuestion, which can not
detect a style and will log a strCaption=": ".

Fix this by removing it.

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

This commit is a minor cleanup in Bitcoin Core's non-graphical user interface code. It removes a leftover ': ' prefix that was accidentally added to some log and error messages. There is no security vulnerability here—only a small cosmetic fix that makes error messages display correctly in tests and logs.

Lower-priorityrefactor: [gui] Document that the title is always empty for node messageby MarcoFalke · fa8ebeb3 · Jan 14, 2026 · 1 fileMessage 77 · AdequateInformational 15Details
Commit message · MarcoFalke

refactor: [gui] Document that the title is always empty for node message

This refactor does not change any behavior.

77/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body
AI analysis · Informational 15/100

This is a minor code cleanup in the Bitcoin Core graphical user interface. It removes an unused function parameter and adds a comment explaining that message titles are empty for messages coming from the network node. The commit message explicitly states it does not change any behavior, and the diff confirms this: the same empty title is still passed, just through a local variable instead of a function argument.

Lower-priorityrefactor: Remove empty caption from ThreadSafeMessageBoxby MarcoFalke · fafe71b7 · Jan 14, 2026 · 9 filesMessage 95 · StrongInformational 15Details
Commit message · MarcoFalke

refactor: Remove empty caption from ThreadSafeMessageBox

The caption was empty for all call-sites, so this refactor does not
change any behavior.

Note that noui_ThreadSafeMessageBoxRedirect is test-only, so no end-user
behavior is changed here.

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
AI analysis · Informational 15/100

This is a simple code cleanup: a function used to show pop-up messages had an unused 'caption' parameter that was always passed as empty. The commit removes that parameter everywhere. The commit message explicitly says it does not change any user-facing behavior, and the code changes match that claim.