BC
← All projectsBitcoin Core

Bitcoin Core

The Bitcoin network's reference node and wallet implementation.

BitcoinSupply chainNormal
Repository coverage

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

258security candidates613second-pass queue2891AI analyses
195commits · 30 days
469commits · 60 days
1488commits · 180 days
2864commits · 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
959Strong · 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 Chow16351161065
MarcoFalke41021406074
Lőrinc17721177081
fanquake22819226057
Hennadii Stepanov21214208063
rkrux57957074
Sjors Provoost89889074
merge-script36718088
Sebastian Falbesoner33733073
David Gumberg55655072
Pieter Wuille95595066
Analysis record

Published AI watches

Last scanned 39 minutes ago

Low 28 AI analysisMessage 81 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#35959: Update secp256k1 subtree to latest master

This commit updates Bitcoin Core's embedded copy of the secp256k1 cryptographic library to a newer version. The update adds a new Silent Payments module, lets advanced users swap in a custom SHA256 compression function, removes some old de…

Dependency update of a core cryptographic library (libsecp256k1)New runtime SHA256 compression callback with self-test/smoke test to catch mis-implementations earlyBehavior change in ellswift_xdh to reject secret keys >= curve order (vendor states not a security issue)
625f951bby Ava Chow+297−11626 files
No security note in commit
Informational 23 AI analysisMessage 91 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#35605: wallet: rpc: Deprecate `removeprunedfunds` RPC

This commit deprecates a Bitcoin Core wallet RPC command called removeprunedfunds. The command lets users delete transactions from their own wallet, which can alter displayed balances. The change does not fix a software bug; it is a cleanu…

RPC allows deletion of arbitrary wallet transactions, affecting balancesDeprecation framed by authors as removing a dangerous and maintenance-burden featureNo authentication bypass, memory corruption, or consensus change present in diff
e9ed5e83by Ava Chow+64−695 files
No security note in commit
Informational 18 AI analysisMessage 91 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#35930: wallet: post-#35501 cleanups in CWalletTx

This is a follow-up cleanup and hardening patch for the Bitcoin Core wallet's handling of transactions that have multiple possible witness versions (same transaction ID but different witness data). It renames a variable, simplifies a helpe…

Added input-validation during wallet transaction deserializationNew unit test specifically exercises rejection of mismatched variant txidFollow-up to PR #35501 which introduced witness-variant tracking in the wallet
512dc9afby Ava Chow+68−315 files
No security note in commit
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
Repository ledger

Explore captured commits

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

Lower-priorityrpc: have getdeploymentinfo report script verify flagsby Anthony Towns · 4577fb2b · Aug 14, 2025 · 2 filesMessage 60 · AdequateInformational 19Details
Commit message · Anthony Towns

rpc: have getdeploymentinfo report script verify flags

60/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
AI analysis · Informational 19/100

This commit adds a new read-only field called 'script_flags' to the getdeploymentinfo RPC response. It simply reports which Bitcoin script verification rules are active for a given block. There is no code change that modifies how transactions or blocks are validated, accepted, or relayed. It is an informational API enhancement with no apparent security impact.

Lower-priorityscript/verify_flags: extend script_verify_flags to 64 bitsby Anthony Towns · 417437eb · Aug 14, 2025 · 2 filesMessage 50 · ThinInformational 15Details
Commit message · Anthony Towns

script/verify_flags: extend script_verify_flags to 64 bits

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

This commit widens an internal Bitcoin Core data type used for script verification flags from 32 bits to 64 bits. It is a forward-looking capacity increase so more verification options can be added in the future. There is no indication it fixes an active security bug.

Lower-priorityscript/interpreter: make script_verify_flag_name an ordinary enumby Anthony Towns · 3cbbcb66 · Aug 14, 2025 · 2 filesMessage 73 · AdequateInformational 15Details
Commit message · Anthony Towns

script/interpreter: make script_verify_flag_name an ordinary enum

Instead of having `SCRIPT_VERIFY_FOO = (1U << n)` just have it
be `n` directly, and do the bit shifting when converting it to
`script_verify_flags`.

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 straightforward internal code cleanup in Bitcoin Core. It changes how script verification flags are defined from being bit-shifted numbers directly in the enum to plain sequential numbers, with the bit shifting done later when converting to the actual flags type. There is no security vulnerability or behavior change intended here.

AI review queuedscript/interpreter: introduce script_verify_flags typenameby Anthony Towns · a5ead122 · Aug 14, 2025 · 24 filesMessage 73 · AdequateInformational 15Details
Commit message · Anthony Towns

script/interpreter: introduce script_verify_flags typename

Previously the SCRIPT_VERIFY_* flags were specified as either uint32_t,
unsigned int, or unsigned. This converts them to a common type alias in
preparation for changing the underlying type.

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

This commit is a pure code cleanup: it creates a single type name, script_verify_flags, and uses it everywhere script verification flags were previously written as uint32_t, unsigned int, or unsigned. The actual data type is still uint32_t, so behavior is unchanged. There is no security fix or vulnerability here.

AI review queuedscript/verify_flags: make script_verify_flags type safeby Anthony Towns · bddcadee · Aug 14, 2025 · 12 filesMessage 73 · AdequateInformational 19Details
Commit message · Anthony Towns

script/verify_flags: make script_verify_flags type safe

`using script_verify_flags = uint32_t` allows implicit conversion to
and from int, so replace it with a class to have the compiler ensure we
use the correct type. Provide from_int and as_int to allow for explicit
conversions when desired.

Introduces the type `script_verify_flag_name` for the individual flag
name enumeration.

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

This commit is a code-quality refactor, not a security fix. It replaces a plain 32-bit integer type used for Bitcoin script verification flags with a dedicated C++ class that prevents accidental mixing with regular integers. The change makes the code safer to maintain but does not alter what the flags mean or how transactions are validated.

AI review queuedvalidation: export GetBlockScriptFlags()by Anthony Towns · a3986935 · Aug 14, 2025 · 2 filesMessage 35 · OpaqueInformational 15Details
Commit message · Anthony Towns

validation: export GetBlockScriptFlags()

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 simply makes an internal helper function visible to other parts of the codebase. It does not change what the function does, what data it can access, or how Bitcoin validates blocks. There is no security issue here.

AI review queuedMove mapFlagNames and FormatScriptFlags logic to script/interpreter.hby Anthony Towns · 5db8cd2d · Aug 14, 2025 · 5 filesMessage 73 · AdequateInformational 15Details
Commit message · Anthony Towns

Move mapFlagNames and FormatScriptFlags logic to script/interpreter.h

Moves FormatScriptFlags logic into GetScriptFlagNames which returns a
vector of strings. For completeness, also has GetScriptFlagNames report
on any bits that do not match a known script flag.

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

This commit is a straightforward code cleanup: it moves a helper that converts script verification flags into human-readable names from test files into a shared library location, and adds a small test for it. There is no change to how Bitcoin validates transactions or scripts, and no security fix.

Lower-priorityrefactor: inline constant return value of `CDBWrapper::Erase` and `BlockTreeDB::WriteReindexing`by Lőrinc · e030240e · Aug 13, 2025 · 3 filesMessage 97 · StrongInformational 15Details
Commit message · Lőrinc

refactor: inline constant return value of `CDBWrapper::Erase` and `BlockTreeDB::WriteReindexing`

Did both in this commit, since the return value of `WriteReindexing` was ignored anyway - which existed only because of the constant `Erase` being called

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 small code cleanup (refactor) that removes always-true return values from two database helper functions. The return values were never checked by callers, so the change has no effect on behavior and no security relevance.

Lower-priorityrefactor: inline constant return value of `BlockTreeDB::WriteBatchSync` and `BlockManager::WriteBlockIndexDB` and `BlockTreeDB::WriteFlag`by Lőrinc · 743abbcb · Aug 13, 2025 · 4 filesMessage 62 · AdequateInformational 15Details
Commit message · Lőrinc

refactor: inline constant return value of `BlockTreeDB::WriteBatchSync` and `BlockManager::WriteBlockIndexDB` and `BlockTreeDB::WriteFlag`

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

This commit is a simple code cleanup (refactor) in Bitcoin Core. Three functions previously returned a boolean value that was always 'true' and was always ignored by callers. The change removes those always-true return values and updates the callers accordingly. There is no security-relevant change: no new behavior, no bug fix, no vulnerability introduced or fixed.

Lower-priorityrefactor: inline constant return value of `CDBWrapper::Write`by Lőrinc · cdab9480 · Aug 13, 2025 · 5 filesMessage 62 · AdequateInformational 15Details
Commit message · Lőrinc

refactor: inline constant return value of `CDBWrapper::Write`

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 code cleanup change. A helper function that always returned 'true' is changed to return nothing, and callers are updated to stop checking a result that could never fail. There is no security-relevant behavior change.

Lower-priorityrefactor: inline constant return value of `TxIndex::DB::WriteTxs`by Lőrinc · d1847cf5 · Aug 13, 2025 · 1 fileMessage 62 · AdequateInformational 15Details
Commit message · Lőrinc

refactor: inline constant return value of `TxIndex::DB::WriteTxs`

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 small internal code cleanup in Bitcoin Core's optional transaction index. The WriteTxs helper always returned true, so the caller now skips checking it and directly returns true. There is no user-facing or security-relevant change.

Lower-priorityrefactor: inline constant return value of `CDBWrapper::WriteBatch`by Lőrinc · 50b63a56 · Aug 13, 2025 · 9 filesMessage 85 · StrongInformational 15Details
Commit message · Lőrinc

refactor: inline constant return value of `CDBWrapper::WriteBatch`

`WriteBatch` can only ever return `true` - its errors are handled by throwing a `throw dbwrapper_error` instead.
The boolean return value is quite confusing, especially since it's symmetric with `CDBWrapper::Read`, which catches the exceptions and returns a boolean instead.
We're removing the constant return value and inlining `true` for its usages.

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 change. A database helper function that always returned true is changed to return nothing, and callers are updated to stop checking a value that could never be false. No security bug is introduced or fixed.

Lower-prioritycontrib: adapt max reject string size in tracing demoby Antoine Poinsot · b3f781a0 · Aug 13, 2025 · 1 fileMessage 73 · AdequateInformational 15Details
Commit message · Antoine Poinsot

contrib: adapt max reject string size in tracing demo

The Script errors were last touched in 2020. This value was calculated after that
in 2022 (commit 4b7aec2951fe4595946cdc804b0dec1921d79d05). The previous commit
made the size of the largest reject reason string 4 characters smaller ("mandatory"
became "block"), so adapt the constant.

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 trivial comment and constant update in a tracing demonstration script. It changes a documented maximum string length from 118 to 114 characters because a previous commit shortened the longest possible rejection reason. There is no security issue.

Lower-priorityscripted-diff: validation: rename mandatory errors into block errorsby Antoine Poinsot · 9a046354 · Aug 13, 2025 · 11 filesMessage 91 · StrongInformational 15Details
Commit message · Antoine Poinsot

scripted-diff: validation: rename mandatory errors into block errors

Using "block" or "mempool" as the prefix in place of "mandatory" or "non-mandatory" is clearer
to a user. "non-mandatory" was renamed into "mempool" as part of #33050. This takes care of the
other half of this renaming as a scripted diff.

-BEGIN VERIFY SCRIPT-
sed -i 's/mandatory-script-verify/block-script-verify/g' $(git grep -l mandatory-script-verify)
-END VERIFY SCRIPT-

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

This commit is a simple automated rename of user-facing error messages and test expectations. It changes the phrase 'mandatory-script-verify-flag-failed' to 'block-script-verify-flag-failed' across source code and tests. No validation logic, security checks, or behavior changes.

Lower-priorityrpc/net: add per-peer inv_to_send sizesby Anthony Towns · adefb51c · Aug 13, 2025 · 4 filesMessage 45 · ThinInformational 15Details
Commit message · Anthony Towns

rpc/net: add per-peer inv_to_send sizes

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

This commit adds a new read-only diagnostic field called 'inv_to_send' to the getpeerinfo RPC output. It simply reports how many transaction announcements are queued for each peer. There is no change to network behavior, transaction relay logic, or access controls.

AI review queuedinterfaces, chain, refactor: Remove inaccurate getActiveChainLocatorby pablomartin4btc · 2b00030a · Aug 13, 2025 · 3 filesMessage 81 · StrongInformational 15Details
Commit message · pablomartin4btc

interfaces, chain, refactor: Remove inaccurate getActiveChainLocator

The getActiveChainLocator method name was misleading, and its functionality
duplicated `Chain::findBlock`. This commit removes the method and replaces
all its usages with direct `Chain::findBlock` calls.

Additionally, the comment of getActiveChainLocator has been outdated since
commit ed47094 from #25717.

Finally, in CWallet::ScanForWalletTransactions, the findBlock calls are now
unified into a single call at the start of the function.

Co-authored-by: Ryan Ofsky <ryan@ofsky.org>
Co-authored-by: Matias Furszyfer <mfurszy@protonmail.com>

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

This is a routine internal code cleanup in Bitcoin Core. It removes a redundant method called getActiveChainLocator and replaces its uses with an existing equivalent method, findBlock. There is no security fix here and no indication this change addresses any vulnerability.

Lower-priorityinterfaces, chain, refactor: Remove unused getTipLocatorby pablomartin4btc · 110a0f40 · Aug 13, 2025 · 5 filesMessage 73 · AdequateInformational 15Details
Commit message · pablomartin4btc

interfaces, chain, refactor: Remove unused getTipLocator

Also removed CChain::GetLocator() and replaced its call
with GetLocator() which uses LocatorEntries instead.

Co-authored-by: ryanofsky <ryan@ofsky.org>
Co-authored-by: l0rinc <l0rinc@users.noreply.github.com>

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 routine code cleanup. It removes an unused function called getTipLocator and a related internal helper, replacing one remaining use with an equivalent existing function. There is no security-relevant change.

Lower-prioritytest: use local `CBlockIndex` in block read hash mismatch test to avoid data raceby Lőrinc · cb173b8e · Aug 12, 2025 · 1 fileMessage 99 · StrongInformational 17Details
Commit message · Lőrinc

test: use local `CBlockIndex` in block read hash mismatch test to avoid data race

Co-authored-by: stickies-v <stickies-v@protonmail.com>

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

This is a test-only code change that fixes a flaky unit test. The test previously borrowed a real block index object from the main chain and modified it, which could race with other test threads. The patch creates a local copy of the index data instead, so the test no longer touches shared state. It is not a fix for a security vulnerability in Bitcoin Core itself.

Security candidateMerge bitcoin/bitcoin#31296: wallet: Translate [default wallet] string in progress messagesby Ava Chow · 73972d56 · Aug 12, 2025 · 2855 filesMessage 81 · StrongInformational 15Details
Commit message · Ava Chow

Merge bitcoin/bitcoin#31296: wallet: Translate [default wallet] string in progress messages

db225cea56b0531cc42d4b89dc61b02890f432ff wallet, refactor: Replace GetDisplayName() with LogName() (Ryan Ofsky)
01737883b3ff8051253c961b7dde50d055104ef9 wallet: Translate [default wallet] string in progress messages (Ryan Ofsky)

Pull request description:

Noticed while reviewing https://github.com/bitcoin/bitcoin/pull/31287#discussion_r1843809721 that the [default wallet] part of progress messages remains untranslated while the rest of the string is translated.

Fix this in all places where `CWallet::ShowProgress` (which has a cancel button) and `Chain::showProgress` (which doesn't have a cancel button) are called by making "default wallet" into a translated string.

ACKs for top commit:
achow101:
ACK db225cea56b0531cc42d4b89dc61b02890f432ff
pablomartin4btc:
ACK db225cea56b0531cc42d4b89dc61b02890f432ff
furszy:
utACK db225cea56b0531cc42d4b89dc61b02890f432ff

Tree-SHA512: 3e76e22ee692a7403d61c66615f56d0fa5f7883dd47553bcaec2f9ffd942daaa90ceb61830206bece50da53dcd737b6438c36bcb086030b2deb68c44172f3931

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
cryptography-sensitive pathseed or entropy pathsigning or wallet pathboot or update pathauthentication pathparser or protocol pathmerge-commit duplicate discount
AI analysis · Informational 15/100

This commit is a routine localization fix for Bitcoin Core's wallet. It makes the words '[default wallet]' in progress messages translatable, so non-English users see a fully translated message. There is no security impact.

Lower-prioritydoc: update wallet build instructionby Sjors Provoost · 67e186de · Aug 12, 2025 · 5 filesMessage 60 · AdequateInformational 15Details
Commit message · Sjors Provoost

doc: update wallet build instruction

Sqlite is expected to be installed, but can still be opted out of.

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This commit only updates user-facing build instructions in documentation files. It changes wording to say SQLite is required for wallet builds (rather than only for 'descriptor wallets') and tells users how to disable the wallet if they don't want it. There are no code changes, no bug fixes, and no security-relevant behavior changes.

Lower-priorityconfig: add DEBUG_ONLY -logratelimitby Eugene Siegel · 5c74a0b3 · Aug 12, 2025 · 4 filesMessage 68 · AdequateInformational 22Details
Commit message · Eugene Siegel

config: add DEBUG_ONLY -logratelimit

Use -nologratelimit by default in functional tests if the bitcoind
version supports it.

Co-Authored-By: stickies-v <stickies-v@protonmail.com>

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Provides detailed explanatory context✓ Mentions testing or verification
AI analysis · Informational 22/100

This commit adds a hidden debug-only command-line option that lets users turn off a recently-introduced log rate limiter. By default the rate limiter stays on, so normal users are not affected. The change is mainly useful for developers running tests who need full logs. It does not by itself create a new security hole, but it does expose a switch that could theoretically be used to disable a protection against disk-filling attacks.

Lower-prioritytest: add ReadDebugLogLines helper functionby stickies-v · 05d7c224 · Aug 12, 2025 · 1 fileMessage 82 · StrongInformational 15Details
Commit message · stickies-v

test: add ReadDebugLogLines helper function

Deduplicates repeated usage of the same functionality.

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

This commit is a simple code cleanup in Bitcoin Core's test suite. It creates a small helper function that reads log files during testing, replacing four nearly identical blocks of test code. There is no change to the actual Bitcoin node software, no change in behavior, and no security relevance.

Lower-prioritytest: logging_filesize_rate_limit improvementsby stickies-v · 9f3b017b · Aug 12, 2025 · 1 fileMessage 80 · StrongInformational 15Details
Commit message · stickies-v

test: logging_filesize_rate_limit improvements

- Add helper functions and structs to improve readability and
reusability of test code
- Make tests more specific by comparing all produced log lines with
expected log lines instead of relying on approximations or proxies.

80/100 · StrongMessage clarity
✓ Descriptive subject✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Mentions testing or verification
AI analysis · Informational 15/100

This commit only changes test code in Bitcoin Core. It refactors and improves the clarity of existing unit tests for the logging rate limiter. There are no changes to production code, so it cannot directly affect live Bitcoin node behavior or introduce a security vulnerability.

Lower-prioritytest: don't leak log category mask across testsby stickies-v · 350193e5 · Aug 12, 2025 · 1 fileMessage 82 · StrongInformational 15Details
Commit message · stickies-v

test: don't leak log category mask across tests

This ensures log tests behave consistently when other tests modify
the log category mask.

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

This is a test-only cleanup. It makes sure that one logging test does not accidentally leave its settings behind and affect later tests. There is no change to the actual Bitcoin Core software that users run, and no security issue in production code.

AI review queuedlog: make m_limiter a shared_ptrby stickies-v · 3d630c25 · Aug 12, 2025 · 4 filesMessage 68 · AdequateLow 27Details
Commit message · stickies-v

log: make m_limiter a shared_ptr

This allows us to safely and explicitly manage the dual dependency
on the limiter: one for the Logger, and one for the CScheduler.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
second-pass: broader security terminology
AI analysis · Low 27/100

This commit changes how Bitcoin Core's log rate-limiter is managed in memory. Previously, the scheduler held a raw pointer to the limiter, which could become invalid if the limiter was destroyed while a scheduled reset task was still pending. The fix makes the limiter a shared pointer and gives the scheduler only a weak reference, so the scheduled task safely does nothing if the limiter is gone. This is a defensive hardening change, not an active exploit fix.