BC
← All projectsBitcoin Core

Bitcoin Core

The Bitcoin network's reference node and wallet implementation.

BitcoinSupply chainNormal
Repository coverage

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

253security candidates606second-pass queue2879AI analyses
209commits · 30 days
506commits · 60 days
1529commits · 180 days
2880commits · 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
930Strong · 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 14 minutes ago

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
Informational 15 AI analysisMessage 80 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

ci: update NetBSD cross-build SDK

This is a routine maintenance update to Bitcoin Core's continuous integration (CI) system. It changes the version number of the NetBSD operating system used for cross-compilation testing from a release candidate (11.0_RC6) to the final rel…

2c87337eby Lőrinc+1−11 file
No security note in commit
Informational 15 AI analysisMessage 72 · Adequate
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

test: require `TryGetTotalRam()` detection

This commit only changes a test file and build configuration. It removes the option to skip a test when the system cannot detect total RAM, and instead requires the RAM detection to succeed. It does not change any production wallet, networ…

6a2de55aby Lőrinc+3−112 files
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 queuedqa: Improve error messageby Hodlinator · 257769a7 · Mar 31, 2026 · 1 fileMessage 35 · OpaqueInformational 15Details
Commit message · Hodlinator

qa: Improve error message

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 is a tiny quality-of-life change to a test helper. It only makes an error message clearer when a test fails, so developers can see exactly what text was produced. It does not touch Bitcoin's network code, wallet, consensus rules, or any code that runs in production.

Security candidatecli: Clearer error messages on authentication failureby Hodlinator · 20a94c15 · Mar 31, 2026 · 5 filesMessage 70 · AdequateInformational 18Details
Commit message · Hodlinator

cli: Clearer error messages on authentication failure

Co-authored-by: MarcoFalke <*~=`'#}+{/-|&$^_@721217.xyz>

70/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Names security-relevant behavior explicitly
Why it was queued
access control
AI analysis · Informational 18/100

This commit only changes the wording of error messages shown when bitcoin-cli fails to log in to the RPC server. It does not fix or introduce any security vulnerability; it is a user-experience improvement that tells users more precisely why authentication failed (missing cookie file, cookie disabled, bad cookie contents, or wrong password).

Lower-priorityrefactor(rpc): GenerateAuthCookieResult -> AuthCookieResultby Hodlinator · 84c3f8d3 · Mar 31, 2026 · 3 filesMessage 95 · StrongInformational 15Details
Commit message · Hodlinator

refactor(rpc): GenerateAuthCookieResult -> AuthCookieResult

Type will be used for reading the cookie in next commit.

Also corrects ERR/ERROR mismatch in docstring in request.h, and changes to CamelCase to avoid potential collision with Windows headers (https://github.com/bitcoin/bitcoin/pull/34965#issuecomment-4161331392).

95/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Links an issue, advisory, or supporting reference
AI analysis · Informational 15/100

This commit is a simple code cleanup: it renames an internal status type from GenerateAuthCookieResult to AuthCookieResult and changes its value names to CamelCase. It also fixes a typo in a code comment where 'ERROR' was written as 'ERR'. No behavior of the Bitcoin RPC authentication cookie is changed.

Lower-priorityrefactor: Use NodeClock::time_point for m_last_send/recv and m_ping_startby MarcoFalke · fa244b98 · Mar 31, 2026 · 6 filesMessage 97 · StrongInformational 14Details
Commit message · MarcoFalke

refactor: Use NodeClock::time_point for m_last_send/recv and m_ping_start

The two fields represent a time point, not a duration. Also, it is
unclear why they use second precision.

Fix both issues by using NodeClock::time_point.

This refactor should not change any behavior.

This resolves the two temporary calls to time_since_epoch() added in the
previous commit. However, it adds one new call to time_since_epoch(),
which is resolved in the next commit.

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

This is a code cleanup change in Bitcoin Core. It changes how the program stores timestamps for the last time data was sent or received with a network peer, switching from raw second counts to proper clock time points. The commit message explicitly says this should not change behavior, and the diff shows equivalent conversions where the values are used. There is no indication of a security fix or vulnerability.

Lower-priorityrefactor: Use NodeClock::time_point for CNetMessage::m_timeby MarcoFalke · fa2605b2 · Mar 31, 2026 · 4 filesMessage 85 · StrongInformational 15Details
Commit message · MarcoFalke

refactor: Use NodeClock::time_point for CNetMessage::m_time

The field is not a duration, but a time point.

This will add two temporary calls to time_since_epoch(), which are fixed
in the next commit.

85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
AI analysis · Informational 15/100

This is a straightforward code cleanup (refactor) that changes how message timestamps are represented internally. It does not fix a bug, add a feature, or change network behavior. There is no security relevance.

Lower-prioritytest: mining: add coverage for GBT's "coinbasevalue" result fieldby Sebastian Falbesoner · 12c3c3f8 · Mar 30, 2026 · 1 fileMessage 95 · StrongInformational 15Details
Commit message · Sebastian Falbesoner

test: mining: add coverage for GBT's "coinbasevalue" result field

Add missing test coverage for the `getblocktemplate` RPC call
"coinbasevalue" field, specifically that it is set to claim the
full block reward.

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 commit only adds a new test to Bitcoin Core's functional test suite. It checks that the getblocktemplate RPC returns a 'coinbasevalue' field equal to the full block reward (subsidy plus fees). There is no change to production code, no bug fix, and no security-relevant behavior change.

Security candidateci, iwyu: Fix warnings in `src/util` and treat them as errorsby Hennadii Stepanov · 8b49e2dd · Mar 30, 2026 · 42 filesMessage 50 · ThinInformational 15Details
Commit message · Hennadii Stepanov

ci, iwyu: Fix warnings in `src/util` 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
cryptography-sensitive pathsigning or wallet path
AI analysis · Informational 15/100

This commit is a routine code-quality cleanup. It adjusts which C++ header files are included in various source files under src/util and turns on a stricter automated check (IWYU) in the project's continuous integration. There is no functional change to Bitcoin Core's behavior, no bug fix, and no security-relevant change.

AI review queuedrefactor: Move license info into new moduleby Hennadii Stepanov · 6953363b · Mar 30, 2026 · 15 filesMessage 57 · ThinInformational 15Details
Commit message · Hennadii Stepanov

refactor: Move license info into new module

57/100 · ThinMessage clarity
✓ 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 code cleanup: it moves the functions that generate copyright and license text from one source file to a new dedicated module, then updates the various Bitcoin programs to include that new module. There is no change to what the software does, no bug fix, and no security-relevant behavior change.

Lower-priorityiwyu: Remove workaround for issue that has been fixed upstreamby Hennadii Stepanov · eb750d27 · Mar 30, 2026 · 1 fileMessage 73 · AdequateInformational 15Details
Commit message · Hennadii Stepanov

iwyu: Remove workaround for issue that has been fixed upstream

This was overlooked in bitcoin/bitcoin#34896.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Links an issue, advisory, or supporting reference
AI analysis · Informational 15/100

This commit removes a code comment and a special compiler/tooling directive that were only there to work around a bug in a third-party developer tool (include-what-you-use). The actual C++ source code still includes the same header file as before, so program behavior is unchanged. There is no security relevance.

Lower-prioritypolicy: remove incorrect MANDATORY_SCRIPT_VERIFY_FLAGS commentby ismaelsadeeq · 5fa68988 · Mar 30, 2026 · 1 fileMessage 73 · AdequateInformational 15Details
Commit message · ismaelsadeeq

policy: remove incorrect MANDATORY_SCRIPT_VERIFY_FLAGS comment

The claim that failing mandatory script checks may trigger a DoS ban
is incorrect; Bitcoin Core does not automatically ban peers for
violating any of these flag checks.

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

This commit only removes a misleading comment in the source code. It does not change any actual code behavior. The old comment incorrectly stated that failing certain script checks could cause a peer to be banned from the network. The commit corrects that documentation-only mistake. There is no security vulnerability being fixed here.

Lower-prioritydepends, qt: Fix build on aarch64 macOS 26.4by Hennadii Stepanov · 3aeccb7d · Mar 30, 2026 · 3 filesMessage 45 · ThinInformational 15Details
Commit message · Hennadii Stepanov

depends, qt: Fix build on aarch64 macOS 26.4

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

This commit fixes a build problem when compiling Bitcoin Core's bundled Qt library on Apple Silicon Macs using a future macOS 26.4 software development kit. It changes the order in which the compiler checks for a low-level CPU 'yield' instruction so that the correct built-in function is chosen, avoiding an 'implicit function declaration' compiler error. There is no runtime security issue here; it is purely a compilation fix.

Lower-priorityguix: Clean up module list in manifestby Hennadii Stepanov · 325f743e · Mar 30, 2026 · 1 fileMessage 76 · AdequateInformational 15Details
Commit message · Hennadii Stepanov

guix: Clean up module list in manifest

These modules are no longer in use:
1. `cmake-build-system` since bitcoin/bitcoin#34550.
2. `gnu-build-system` since bitcoin/bitcoin#34627.
3. `download` since bitcoin/bitcoin#34550.
4. `cc-for-target` from `utils` since bitcoin/bitcoin#34627.

76/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
AI analysis · Informational 15/100

This commit removes unused software-building helper imports from a Guix packaging manifest. It is a routine cleanup with no security relevance.

Lower-priorityrefactor: Return std::optional from ParseDoubleby MarcoFalke · fabab69e · Mar 30, 2026 · 1 fileMessage 57 · ThinInformational 15Details
Commit message · MarcoFalke

refactor: Return std::optional from ParseDouble

57/100 · ThinMessage clarity
✓ 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 straightforward internal code cleanup: it changes the ParseDouble helper function to return a C++ std::optional<double> instead of writing a result through a pointer and returning a boolean success flag. The behavior of parsing JSON numbers remains the same, and no security issue is present.

AI review queuedrefactor: Return std::optional from GetWalletNameFromJSONRPCRequestby MarcoFalke · fa0a0944 · Mar 30, 2026 · 2 filesMessage 62 · AdequateInformational 15Details
Commit message · MarcoFalke

refactor: Return std::optional from GetWalletNameFromJSONRPCRequest

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. It changes one helper function so that it returns a wallet name directly (using std::optional) instead of writing it into a caller-provided variable and returning true/false. There is no change to user-visible behavior, no bug fix, and no security relevance.

Lower-priorityrefactor: Return std::optional from GetLogCategoryby MarcoFalke · fafb0c4c · Mar 30, 2026 · 3 filesMessage 62 · AdequateInformational 15Details
Commit message · MarcoFalke

refactor: Return std::optional from GetLogCategory

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 is a clean internal code refactor: a helper function that looks up a log category by name now returns an optional value instead of writing to an output parameter. No behavior changes, no security implications.

Security candidatefuzz: Use CAmount for storing best_wasteby Ava Chow · 890a09b1 · Mar 28, 2026 · 1 fileMessage 75 · AdequateInformational 17Details
Commit message · Ava Chow

fuzz: Use CAmount for storing best_waste

Waste is a CAmount, which is an int64_t. This will overflow an int, so
`best_waste` should also be a `CAmount`.

75/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Mentions testing or verification✓ Names security-relevant behavior explicitly
Why it was queued
memory safetyfuzzing or regression evidencesigning or wallet path
AI analysis · Informational 17/100

This is a one-line fix in a fuzz test (automated randomized test) for Bitcoin Core's coin selection logic. It changes a variable that tracks the 'best waste' amount from a 32-bit signed integer to a 64-bit signed integer type, matching the actual CAmount type. The change prevents a possible integer overflow inside the fuzz test itself, not in the production wallet code that handles real Bitcoin transactions. It does not appear to be a security vulnerability in live Bitcoin Core software.

Lower-prioritytest: Remove unused, confusing and brittle connect_nodes.wait_for_connectby MarcoFalke · fae807ed · Mar 27, 2026 · 1 fileMessage 100 · StrongInformational 15Details
Commit message · MarcoFalke

test: Remove unused, confusing and brittle connect_nodes.wait_for_connect

The option is unused since the last removals in:
* 4c40a923f003420193aa574745f70788bcf35265, and
* 81bf3ebff7e7108bbfbf6fe4e122f4e52f278701

It was brittle and lead to intermittent test issues. Generally, it is
also confusing, because if a test wanted to connect nodes without
checking their connection, it can use `addnode`, like the rpc_setban.py
test.

So fix all issues by removing it.

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 commit removes an unused optional flag from a test helper function in Bitcoin Core's internal testing framework. It only affects test code, not the live Bitcoin network or wallet software, and has no security relevance.

Lower-prioritytest: Fix all races after a socket is closed gracefullyby MarcoFalke · fab27726 · Mar 27, 2026 · 1 fileMessage 95 · StrongInformational 15Details
Commit message · MarcoFalke

test: Fix all races after a socket is closed gracefully

This waits for any disconnect (e.g. from a restart of one of the nodes)
to fully happen before the next connect.

Can be reviewed with the git option:

--color-moved=dimmed-zebra

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 change only touches Bitcoin Core's internal Python test framework. It makes a test helper wait for an old peer connection to fully disappear before creating a new one, reducing flaky test failures. It does not change the actual Bitcoin node software that users run, so it has no direct security impact on the network or on users.

Lower-prioritytest: Stricter checks in rpc_setban.pyby MarcoFalke · fa21eddd · Mar 27, 2026 · 1 fileMessage 100 · StrongInformational 14Details
Commit message · MarcoFalke

test: Stricter checks in rpc_setban.py

Make the checks stricter and easier to follow:
* Fix a typo.
* After the first ban from node 1 wait until node 0 "sees" the ban.
* Move the restart_node out of the debug log context, to avoid bloat.
* Removed the timeout from the outer/lower exit stack to check "dropped
(banned)\n" on node 1, because the inner/top exit stack waits longer.
* The inner/top exit stack checks for the both disconnections peer=2 and
possibly peer=3 (for v2->v1 retry).
* And finally, add a redundant assert to confirm once more that node 0
is has "seen" the ban.

100/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✓ Mentions testing or verification
AI analysis · Informational 14/100

This commit only changes a test file that exercises the setban RPC. It makes the existing test stricter and easier to read by fixing a typo, adding waits for disconnections, moving a node restart outside a debug-log context, and adding an extra assertion. There is no change to production code, so it does not introduce or fix a security vulnerability in Bitcoin Core itself.

Lower-prioritytest: Add is_connected_to helperby MarcoFalke · faa404e1 · Mar 27, 2026 · 1 fileMessage 72 · AdequateInformational 15Details
Commit message · MarcoFalke

test: Add is_connected_to helper

Needed in the next commit.

Co-Authored-By: David Gumberg <davidzgumberg@gmail.com>

72/100 · AdequateMessage clarity
✓ Descriptive subject✓ Uses a recognizable type or scope✓ Provides an explanatory body✓ Mentions testing or verification
AI analysis · Informational 15/100

This commit adds a small helper function to Bitcoin Core's internal test framework. It lets one test node check whether it is connected to another test node by comparing their network version strings. There is no change to the actual Bitcoin Core software that users run, and no security issue is visible in the code.

Security candidateSquashed 'src/ipc/libmultiprocess/' changes from 1868a84451f..70f632bda8fby Ryan Ofsky · 2478a15e · Mar 27, 2026 · 28 filesMessage 91 · StrongModerate 59Details
Commit message · Ryan Ofsky

Squashed 'src/ipc/libmultiprocess/' changes from 1868a84451f..70f632bda8f

70f632bda8f Merge bitcoin-core/libmultiprocess#265: ci: set LC_ALL in shell scripts
8e8e564259a Merge bitcoin-core/libmultiprocess#249: fixes for race conditions on disconnects
05d34cc2ec3 ci: set LC_ALL in shell scripts
e606fd84a8c Merge bitcoin-core/libmultiprocess#264: ci: reduce nproc multipliers
ff0eed1bf18 refactor: Use loop variable in type-context.h
ff1d8ba172a refactor: Move type-context.h getParams() call closer to use
1dbc59a4aa3 race fix: m_on_cancel called after request finishes
1643d05ba07 test: m_on_cancel called after request finishes
f5509a31fcc race fix: getParams() called after request cancel
4a60c39f24a test: getParams() called after request cancel
f11ec29ed20 race fix: worker thread destroyed before it is initialized
a1d643348f4 test: worker thread destroyed before it is initialized
336023382c4 ci: reduce nproc multipliers
b090beb9651 Merge bitcoin-core/libmultiprocess#256: ci: cache gnu32 nix store
be8622816da ci: cache gnu32 nix store
975270b619c Merge bitcoin-core/libmultiprocess#263: ci: bump timeout factor to 40
09f10e5a598 ci: bump timeout factor to 40
db8f76ad290 Merge bitcoin-core/libmultiprocess#253: ci: run some Bitcoin Core CI jobs
55a9b557b19 ci: set Bitcoin Core CI test repetition
fb0fc84d556 ci: add TSan job with instrumented libc++
0f29c38725b ci: add Bitcoin Core IPC tests (ASan + macOS)
3f64320315d Merge bitcoin-core/libmultiprocess#262: ci: enable clang-tidy in macOS job, use nullptr
cd9f8bdc9f0 Merge bitcoin-core/libmultiprocess#258: log: add socket connected info message and demote destroy logs to debug
b5d6258a42f Merge bitcoin-core/libmultiprocess#255: fix: use unsigned char cast and sizeof in LogEscape escape sequence
d94688e2c32 Merge bitcoin-core/libmultiprocess#251: Improved CustomBuildField for std::optional in IPC/libmultiprocess
a9499fad755 mp: use nullptr with pthread_threadid_np
f499e37850f ci: enable clang-tidy in macOS job
98f1352159d log: add socket connected info message and demote destroy logs to debug
554a481ea73 fix: use unsigned char cast and sizeof in LogEscape escape sequence
1977b9f3f65 Use std::forward in CustomBuildField for std::optional to allow move semantics, resolves FIXME
22bec918c97 Merge bitcoin-core/libmultiprocess#247: type-map: Work around LLVM 22 "out of bounds index" error
8a5e3ae6ed2 Merge bitcoin-core/libmultiprocess#242: proxy-types: add CustomHasField hook to map Cap'n Proto values to null C++ values
e8d35246918 Merge bitcoin-core/libmultiprocess#246: doc: Bump version 8 > 9
97d877053b6 proxy-types: add CustomHasField hook for nullable decode paths
8c2f10252c9 refactor: add missing includes to mp/type-data.h
b1638aceb40 doc: Bump version 8 > 9
f61af487217 type-map: Work around LLVM 22 "out of bounds index" error

git-subtree-dir: src/ipc/libmultiprocess
git-subtree-split: 70f632bda8f80449b6240f98da768206a535a04e

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
Why it was queued
memory safety
AI analysis · Moderate 59/100

This commit updates the libmultiprocess library inside Bitcoin Core. The most important changes are fixes for three race-condition bugs that could crash or destabilize the inter-process communication (IPC) layer when a connection is disconnected while worker threads are starting, running, or finishing. The commit also adds a new way to represent null data values in IPC messages, improves build/CI scripts, and bumps the library version. The race fixes are defensive hardening rather than obviously exploitable vulnerabilities, but they remove real crash paths that could be triggered by an attacker able to disconnect an IPC session at the right moment.

Lower-priorityrefactor: Use NodeClock::duration for m_last_ping_time/m_min_ping_time/m_ping_waitby MarcoFalke · fa644e62 · Mar 27, 2026 · 6 filesMessage 97 · StrongInformational 15Details
Commit message · MarcoFalke

refactor: Use NodeClock::duration for m_last_ping_time/m_min_ping_time/m_ping_wait

This refactor does not change any behavior and is needed for a future
commit, to avoid having to add duration casts.

It also improves the docs to better document that this is not a time
point, but a duration.

Also, it uses decltype to explain where the _::max() is coming from.

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

This is a pure code cleanup (refactor) that renames the type used for ping timing variables from std::chrono::microseconds to NodeClock::duration. The commit message explicitly states it does not change behavior, and the diff shows only type aliases and documentation updates. There is no security issue here.

Lower-prioritydoc: Fix typo "eviction criterium" -> "eviction criterion"by MarcoFalke · 333316f6 · Mar 27, 2026 · 1 fileMessage 65 · AdequateInformational 15Details
Commit message · MarcoFalke

doc: Fix typo "eviction criterium" -> "eviction criterion"

Also, clarify round-trip time to mean round-trip duration.

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

This commit only fixes spelling and wording in code comments. It changes 'criterium' to 'criterion' and rephrases 'round-trip time' to 'round-trip duration' in documentation-style comments. No program logic, behavior, or security properties are changed.

Lower-priorityrefactor: gui: Accept up to nanoseconds in formatDurationStr, but clarify they are ignoredby MarcoFalke · fa54fb01 · Mar 27, 2026 · 2 filesMessage 97 · StrongInformational 15Details
Commit message · MarcoFalke

refactor: gui: Accept up to nanoseconds in formatDurationStr, but clarify they are ignored

This refactor does not change any behavior. However, it helps future
commits to avoid having to place manual
std::chrono::duration_cast<std::chrono::seconds> when calling this
function.

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

This is a minor code cleanup in Bitcoin Core's graphical user interface. A helper function that turns a time duration into human-readable text now accepts a more precise input type (nanoseconds) but still behaves exactly the same way it did before—any fractional seconds are still ignored. There is no security issue here.

Lower-priorityrefactor: Avoid manual chrono casts with * or /by MarcoFalke · fab88884 · Mar 27, 2026 · 2 filesMessage 80 · StrongInformational 15Details
Commit message · MarcoFalke

refactor: Avoid manual chrono casts with * or /

Manual chrono casts, using multiplication or division is confusing and
brittle.

Also, when calling ShouldRunInactivityChecks remove a confusing and
useless std::chrono::duration_cast<std::chrono::seconds>.

80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
AI analysis · Informational 15/100

This is a small code cleanup that replaces hand-written time-unit conversions with safer, purpose-built helper functions. It does not change program behavior or fix any security issue.