BC
← All projectsBitcoin Core

Bitcoin Core

The Bitcoin network's reference node and wallet implementation.

BitcoinSupply chainNormal
Repository coverage

2913 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
188commits · 30 days
472commits · 60 days
1489commits · 180 days
2878commits · 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
949Strong · 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 Stepanov21114208063
rkrux57957074
Sjors Provoost89889074
Sebastian Falbesoner33733073
merge-script32718088
David Gumberg55655072
Pieter Wuille95595066
Analysis record

Published AI watches

Last scanned 58 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.

Security candidaterandomenv: Fix MinGW dllimport warning for `environ`by Lőrinc · 9610b0d1 · Oct 14, 2025 · 1 fileMessage 83 · StrongInformational 15Details
Commit message · Lőrinc

randomenv: Fix MinGW dllimport warning for `environ`

Extends 7703884 to guard environ declaration on all Windows builds, not just MSVC.
In the mingw-w64 headers (used by llvm-mingw), environ is defined as a macro which expands through _environ to (* __p__environ()), a call to a dllimport function, causing the same inconsistent linkage warning as MSVC.

Use WIN32 instead of _MSC_VER to match the platform-specific guards already used throughout the file.

The warning occurs with llvm-mingw (both UCRT and MSVCRT variants as tested by Hebasto), but not with the mingw-w64 toolchain currently used in CI (as mentioned by fanquake).

Co-authored-by: Hennadii Stepanov <32963518+hebasto@users.noreply.github.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
seed or entropy path
AI analysis · Informational 15/100

This is a one-line build-system warning fix for the Windows MinGW compiler. It changes a preprocessor guard so that the `environ` variable is not re-declared on any Windows build, preventing a harmless compiler warning about inconsistent linkage. There is no functional change to program behavior and no security impact.

Lower-priorityminer: fix empty mempool case for waitNext()by Sjors Provoost · 8f767325 · Oct 13, 2025 · 3 filesMessage 78 · AdequateInformational 23Details
Commit message · Sjors Provoost

miner: fix empty mempool case for waitNext()

Block template fees are calculated by looping over new_tmpl->vTxFees
and return (early) once the fee_threshold is exceeded.

This left an edge case when the mempool is empty, which this commit
fixes and adds a test for. It does so by using std::accumulate instead
of manual loops.

Also update interface_ipc.py to account for the new behavior.

Co-authored-by: Raimo33 <claudio.raimondi@protonmail.com>

78/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
AI analysis · Informational 23/100

This commit fixes a small logic bug in Bitcoin Core's block-template waiting code. When the mempool is empty, the code that decides whether a newly created block template is 'better' than the old one would never finish its comparison loop, so it could fail to return a result or behave unexpectedly. The fix replaces the manual loop with a simple sum of all fees, and adds tests for the empty-mempool case. It is a correctness fix rather than a critical security vulnerability.

Lower-prioritydoc: archive release notes for v29.2by fanquake · c11a3dcc · Oct 13, 2025 · 1 fileMessage 45 · ThinInformational 15Details
Commit message · fanquake

doc: archive release notes for v29.2

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.2. It adds a documentation file listing bug fixes, performance improvements, and contributor credits. There are no code changes and no security-relevant action in the commit itself.

AI review queuedSquashed 'src/minisketch/' changes from ea8f66b1ea..d1bd01e189by Hennadii Stepanov · 4543a3bd · Oct 13, 2025 · 61 filesMessage 81 · StrongInformational 15Details
Commit message · Hennadii Stepanov

Squashed 'src/minisketch/' changes from ea8f66b1ea..d1bd01e189

d1bd01e189 Merge bitcoin-core/minisketch#98: misc: drop trailing whitespace
fe2c88a4fd misc: drop trailing whitespace
f74b7e2bc2 Merge sipa/minisketch#75: build: Introduce CMake-based build system
850cc868d5 ci: Add GHA workflow with native Windows job
40d56708c8 doc: Add "Building with CMake" section to `README.md`
a0c86c79a7 build: Add CMake-based build system

git-subtree-dir: src/minisketch
git-subtree-split: d1bd01e189e745cd1828707e0a7004b6a6909650

81/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
parser or protocol pathsecond-pass: unusually broad changesecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit is a routine subtree update that pulls in the latest minisketch library changes. The visible changes are almost entirely build-system and documentation additions: a new CMake build system, CI configuration files, README updates, and generated field-parameter documentation. There is no indication in the commit message or diff of any bug fix, behavior change, or security patch to the actual sketching code.

Lower-prioritycoins: only adjust `cachedCoinsUsage` on `EmplaceCoinInternalDANGER` insertby Lőrinc · 24d861da · Oct 12, 2025 · 3 filesMessage 83 · StrongLow 33Details
Commit message · Lőrinc

coins: only adjust `cachedCoinsUsage` on `EmplaceCoinInternalDANGER` insert

`EmplaceCoinInternalDANGER()` incremented `cachedCoinsUsage` even when `try_emplace` did not insert (duplicate key), inflating the counter.
This is mostly reachable in tests today since `AssumeUTXO` does not overwrite.

Increment only on successful insert, and capture `coin.DynamicMemoryUsage()` before the move so accounting uses the correct value.

Fuzz: add an `EmplaceCoinInternalDANGER` path to exercise insert-only accounting.
Unit test: emplace two different coins at the same outpoint (with different `DynamicMemoryUsage()`), verify `SelfTest()` passes and `AccessCoin(outpoint)` returns the first coin.

Co-authored-by: Andrew Toth <andrewstoth@gmail.com>
Co-authored-by: w0xlt <woltx@protonmail.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 · Low 33/100

This commit fixes an accounting bug in Bitcoin Core's in-memory coin cache. A function called EmplaceCoinInternalDANGER was adding the memory size of a coin to a running total even when the coin was not actually inserted because the same key already existed. That could slowly inflate the cache-size counter. The patch makes the counter increase only on a successful insert and also records the size before the coin is moved. The commit adds tests and fuzzing coverage to prevent the bug from returning. It is a correctness and resource-accounting fix rather than a direct theft or remote-code-execution vulnerability.

Lower-prioritycoins: fix `cachedCoinsUsage` accounting to prevent underflowby Lőrinc · d7c9d6c2 · Oct 12, 2025 · 4 filesMessage 95 · StrongModerate 60Details
Commit message · Lőrinc

coins: fix `cachedCoinsUsage` accounting to prevent underflow

Move the `cachedCoinsUsage` subtract in `AddCoin()` to after the `possible_overwrite` check.
Previously a throw before assignment decremented the counter without changing the entry, which corrupted accounting and later underflowed.

In `Flush()`, reset `cachedCoinsUsage` to `0` only when `BatchWrite()` succeeds and `cacheCoins` is actually cleared. In production `BatchWrite()` returns `true`, so this mostly affects tests. On failure, leave the counter unchanged to keep it in sync with the cache.

The existing `Flush()` workaround in fuzzing was also removed now that the source of the problem was fixed, so the fuzzer no longer needs `coins_view_cache.Flush()` to realign `cachedCoinsUsage` after an exception.
Replace the prior `expected_code_path` tracking with direct assertions. The role of the variable was to verify that code execution follows only expected paths, either successful addition, or if it's an exception, the message is verified and checked that overwrite was disallowed.

With these changes the counter stays consistent across success and exception paths, so we can finally remove the `UBSan` suppressions for `CCoinsViewCache` that were masking the issue.

Included a unit test as well, attempting to add a different coin to the same outpoint without allowing overwrites and make sure it throws.
We use `SelfTest()` to validates accounting, and check that the cache remains usable.

Co-authored-by: Ryan Ofsky <ryan@ofsky.org>
Co-authored-by: w0xlt <woltx@protonmail.com>

95/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Mentions testing or verification
Why it was queued
defensive validationfuzzing or regression evidence
AI analysis · Moderate 60/100

This commit fixes an internal accounting bug in Bitcoin Core's coin cache. When adding a coin to a cache slot that was already occupied, the program could subtract memory usage before checking whether the operation was allowed. If the operation then threw an exception, the subtraction had already happened but the coin was not actually replaced, causing the internal memory counter to drift and eventually underflow (wrap around to a huge number). The fix moves the subtraction to after the safety check, and only resets the counter when the cache is successfully flushed. It also removes UBSan suppressions that were hiding the underflow and adds a unit test.

Lower-priorityrefactor: assert newly-created parent cache entry has zero memory usageby Lőrinc · 67cff8be · Oct 12, 2025 · 1 fileMessage 97 · StrongInformational 13Details
Commit message · Lőrinc

refactor: assert newly-created parent cache entry has zero memory usage

During `BatchWrite`, the parent entry is created under a guard that guarantees insertion, so the new `Coin` is default-constructed and empty.
Assert this invariant to document why there is no `cachedCoinsUsage` decrement before the assignment at this site.

Co-authored-by: Andrew Toth <andrewstoth@gmail.com>

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 13/100

This commit adds a single runtime assertion inside Bitcoin Core's coin cache code. It checks that a newly-created cache entry starts out empty, so the code does not need to adjust its memory-usage bookkeeping before assigning a coin to it. It is a documentation-style safety check, not a fix for a known bug or vulnerability.

Lower-priorityrefactor: remove redundant usage tracking from `CoinsViewCacheCursor`by Lőrinc · 39cf8bb3 · Oct 12, 2025 · 4 filesMessage 85 · StrongInformational 14Details
Commit message · Lőrinc

refactor: remove redundant usage tracking from `CoinsViewCacheCursor`

When a coin is spent via `SpendCoin()`, `cachedCoinsUsage` is already decremented and the coin's `scriptPubKey` is cleared, so `DynamicMemoryUsage()` is `0`.

`CoinsViewCacheCursor::NextAndMaybeErase()` was subtracting usage again when erasing spent entries.
Replace it with an assert that documents spent coins have zero dynamic memory usage by the time the cursor encounters them.

Remove the now-unnecessary `usage` reference from the cursor's constructor and member variables.

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 14/100

This is a code cleanup (refactor) in Bitcoin Core's coin cache bookkeeping. It removes a duplicate subtraction of memory usage that could never actually change the total, because spent coins already report zero memory usage. The change replaces the redundant subtraction with an assertion that documents this invariant. There is no security vulnerability here.

Lower-prioritytxgraph: add SingletonClusterImpl (mem optimization)by Pieter Wuille · 023cd5a5 · Oct 11, 2025 · 1 fileMessage 73 · AdequateInformational 15Details
Commit message · Pieter Wuille

txgraph: add SingletonClusterImpl (mem optimization)

This adds a specialized Cluster implementation for singleton clusters, saving
a significant amount of memory by avoiding the need for m_depgraph, m_mapping,
and m_linearization, and their overheads.

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 memory optimization for Bitcoin Core's transaction graph code. It adds a special lightweight implementation for clusters that contain exactly one transaction, avoiding the overhead of full dependency-graph data structures. There is no security-relevant change here—only a performance and memory-usage improvement.

Lower-prioritytxgraph: give Clusters a range of intended tx counts (preparation)by Pieter Wuille · e3462507 · Oct 11, 2025 · 1 fileMessage 50 · ThinInformational 15Details
Commit message · Pieter Wuille

txgraph: give Clusters a range of intended tx counts (preparation)

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

This is an internal code cleanup and preparation change in Bitcoin Core's transaction graph handling. It adds virtual methods to report how many transactions a Cluster object is designed for, and updates merge/split logic to choose the right internal data structure size. There is no user-facing bug fix or security patch here; it is groundwork for a later change.

Lower-prioritytxgraph: abstract out creation of empty Clusters (refactor)by Pieter Wuille · e93b0f09 · Oct 11, 2025 · 1 fileMessage 50 · ThinInformational 15Details
Commit message · Pieter Wuille

txgraph: abstract out creation of empty Clusters (refactor)

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 small internal code cleanup in Bitcoin Core's transaction graph module. It introduces helper functions to create empty cluster objects and replaces three direct object-creation calls with those helpers. There is no change to network behavior, consensus rules, or user-visible functionality.

Lower-prioritytxgraph: comment fixes (doc fix)by Pieter Wuille · 6baf1262 · Oct 11, 2025 · 1 fileMessage 45 · ThinInformational 15Details
Commit message · Pieter Wuille

txgraph: comment fixes (doc fix)

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

This is a pure documentation/comment fix. It updates outdated class names in code comments to match the actual implementation class name (TxGraphImpl instead of Graph). No executable code was changed, so there is no security risk.

Lower-prioritytxgraph: make Cluster an abstract class (refactor)by Pieter Wuille · 726b9957 · Oct 11, 2025 · 1 fileMessage 50 · ThinInformational 15Details
Commit message · Pieter Wuille

txgraph: make Cluster an abstract class (refactor)

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

This commit is a pure internal code cleanup (refactor) in Bitcoin Core's transaction graph module. It turns the existing Cluster class into an abstract interface and moves the actual implementation into a new GenericClusterImpl subclass. No behavior changes, no bug fixes, and no security-relevant modifications are visible in the diff.

Lower-prioritytxgraph: avoid accessing other Cluster internals (refactor)by Pieter Wuille · 2602d89e · Oct 11, 2025 · 1 fileMessage 73 · AdequateInformational 15Details
Commit message · Pieter Wuille

txgraph: avoid accessing other Cluster internals (refactor)

This adds 4 functions to Cluster to help implement Merge() and Split() without
needing access to the internals of the other Cluster. This is a preparation for
a follow-up that will make Clusters a virtual class whose internals are abstracted
away.

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

This is a clean internal code refactor in Bitcoin Core's transaction graph module. It adds four helper functions to the Cluster class so that Merge() and Split() no longer peek directly into another Cluster's private data structures. The behavior is unchanged; the change only prepares the code for a future abstraction where Cluster may become a virtual base class. There is no security fix here.

Lower-prioritytxgraph: keep data structures compact (mem optimization)by Pieter Wuille · 4ba562e5 · Oct 11, 2025 · 1 fileMessage 50 · ThinInformational 15Details
Commit message · Pieter Wuille

txgraph: keep data structures compact (mem optimization)

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

This commit is a straightforward memory optimization for Bitcoin Core's internal transaction graph data structure. It adds a new Compact() method that trims excess capacity from vectors after clusters of transactions are modified, split, or merged. There is no security-relevant change here—only a reduction in memory usage.

Lower-prioritydepgraph: add memory usage control (feature)by Pieter Wuille · bb5cb222 · Oct 11, 2025 · 2 filesMessage 60 · AdequateInformational 18Details
Commit message · Pieter Wuille

depgraph: add memory usage control (feature)

Co-Authored-By: Lőrinc <pap.lorinc@gmail.com>

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

This commit adds a memory-shrinking helper called Compact() to an internal Bitcoin Core data structure (DepGraph) used when ordering groups of transactions. It also adds a way to report how much memory the structure uses, and updates a fuzz test to exercise both. There is no direct security fix here; it is a memory-usage control feature that may help limit resource consumption during fuzzing or normal operation.

Lower-prioritytxgraph: keep track of Cluster memory usage (preparation)by Pieter Wuille · 7680bb8f · Oct 11, 2025 · 1 fileMessage 50 · ThinInformational 18Details
Commit message · Pieter Wuille

txgraph: keep track of Cluster memory usage (preparation)

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

This commit adds internal bookkeeping so Bitcoin Core's new transaction-graph code can track how much memory its clusters of related transactions are using. It does not change user-visible behavior, fix a crash, or close a security hole. It is a preparation step for future memory-limit enforcement.

Lower-prioritytxgraph: expose memory usage estimate function (feature)by Pieter Wuille · 04c808ac · Oct 11, 2025 · 3 filesMessage 50 · ThinInformational 15Details
Commit message · Pieter Wuille

txgraph: expose memory usage estimate function (feature)

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

This commit adds a new public function that estimates how much memory a transaction graph object is using. It is purely an informational/observability feature and does not change how data is processed, stored, or exposed to the network. There is no security issue visible in the change.

Lower-prioritytxgraph: avoid holes in DepGraph positions (mem optimization)by Pieter Wuille · b1637a90 · Oct 11, 2025 · 1 fileMessage 50 · ThinInformational 15Details
Commit message · Pieter Wuille

txgraph: avoid holes in DepGraph positions (mem optimization)

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 memory-optimization cleanup inside Bitcoin Core's transaction graph code. It ensures internal data structures don't contain unused gaps ('holes'), which reduces memory usage. There is no indication this fixes a security vulnerability or enables attacks.

Lower-prioritytxgraph: move some sanity checks from Cluster to TxGraphImpl (refactor)by Pieter Wuille · 2b1d3025 · Oct 11, 2025 · 1 fileMessage 50 · ThinInformational 12Details
Commit message · Pieter Wuille

txgraph: move some sanity checks from Cluster to TxGraphImpl (refactor)

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

This is a small internal code cleanup in Bitcoin Core's transaction graph module. It moves several self-consistency checks from one internal helper function to another. The checks themselves remain present and unchanged in effect; only their location in the source code differs. There is no user-facing change and no indication of a security fix.

Lower-prioritytxgraph: Make level of Cluster implicit (optimization)by Pieter Wuille · d40302fb · Oct 11, 2025 · 1 fileMessage 73 · AdequateInformational 12Details
Commit message · Pieter Wuille

txgraph: Make level of Cluster implicit (optimization)

This reduces per-Cluster memory usage by making Clusters not aware of their
own level. Instead, track it either in calling code, or infer it based on
the transactions in them.

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

This commit is a routine internal code cleanup in Bitcoin Core's transaction graph module. It removes a redundant 'level' field stored inside each transaction cluster and instead passes the level as a function argument or looks it up when needed. The stated goal is to reduce memory usage. There is no indication this fixes a security bug or changes externally observable behavior.

Lower-prioritydoc: archive release notes for v30.0by fanquake · 8d6e4915 · Oct 11, 2025 · 1 fileMessage 45 · ThinInformational 15Details
Commit message · fanquake

doc: archive release notes for v30.0

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 30.0. It adds a documentation file summarizing new features, bug fixes, and changes in the release. No code was changed, so it has no direct security impact on the software itself.

Lower-priorityqt: add createwallet, createwalletdescriptor, and migratewallet to history filterby WakeTrainDev · 4e352efa · Oct 11, 2025 · 1 fileMessage 50 · ThinInformational 18Details
Commit message · WakeTrainDev

qt: add createwallet, createwalletdescriptor, and migratewallet to history filter

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

This commit updates the Bitcoin Core graphical wallet's command history filter so that three additional wallet-related commands—createwallet, createwalletdescriptor, and migratewallet—are not saved in the on-screen command history. The goal is to reduce the chance that sensitive wallet commands are accidentally left visible to someone looking over the user's shoulder or accessing the unlocked computer. It is a small privacy/usability hardening change, not a fix for an active exploit.

AI review queuedmultiprocess: update multiprocess EventLoop construction to use optionsby Cory Fields · 9d068225 · Oct 10, 2025 · 1 fileMessage 65 · AdequateInformational 15Details
Commit message · Cory Fields

multiprocess: update multiprocess EventLoop construction to use options

This uses the constructors recently added upstream.

65/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
parser or protocol pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This is a routine code update that changes how an internal logging object is created to match a newer version of an upstream library. There is no security issue visible in the change itself.

AI review queuedmultiprocess: align our logging with libmultiprocess'sby Cory Fields · 0626b90f · Oct 10, 2025 · 1 fileMessage 73 · AdequateInformational 18Details
Commit message · Cory Fields

multiprocess: align our logging with libmultiprocess's

Without this change, logging (even if unused) may account for a
substantial portion of bitcoin-node's and/or client's runtime cpu usage, due
to libmultiprocess's expensive message serialization.

This (along with some recent upstream changes) avoids the overhead by opting
out of log handling for messages that we're not interested in.

Info, Warning, and Error are logged unconditionally to match our behavior
elsewhere. See BCLog::Logger::GetCategoryLogLevel .

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

This commit is a performance improvement, not a security fix. It changes how Bitcoin Core's multiprocess mode handles log messages coming from the libmultiprocess library. Previously, all libmultiprocess log messages were processed through expensive serialization even when they would be discarded. Now, Bitcoin Core tells libmultiprocess which log levels it actually cares about, so unneeded messages are skipped earlier, reducing CPU usage. There is no indication this change fixes a vulnerability or security bug.