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
2867commits · 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 34 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-priorityrest: print also HTTP response reason in case of an errorby Roman Zeyde · 59b93f11 · Dec 16, 2025 · 1 fileMessage 50 · ThinInformational 15Details
Commit message · Roman Zeyde

rest: print also HTTP response reason in case of an error

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

This commit only changes an error message in a test file so that when a test fails, it prints the HTTP reason phrase (like 'Not Found') alongside the status code. It does not change any production code, user-facing behavior, or security logic.

Lower-priorityrest: add a test for unsuported `/blockpart/` request typeby Roman Zeyde · 7fe94a04 · Dec 16, 2025 · 1 fileMessage 60 · AdequateInformational 14Details
Commit message · Roman Zeyde

rest: add a test for unsuported `/blockpart/` request type

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

This commit only adds a new automated test to Bitcoin Core's REST interface test suite. It checks that the /blockpart/ endpoint correctly rejects unsupported request types with proper error messages. There is no code change to the actual REST server behavior, and no security vulnerability is being fixed.

Security candidatescripted-diff: [doc] Unify stale copyright headersby MarcoFalke · fa5f2977 · Dec 16, 2025 · 988 filesMessage 83 · StrongInformational 15Details
Commit message · MarcoFalke

scripted-diff: [doc] Unify stale copyright headers

-BEGIN VERIFY SCRIPT-

sed --in-place --regexp-extended \
's;( 20[0-2][0-9])(-20[0-2][0-9])? The Bitcoin Core developers;\1-present The Bitcoin Core developers;g' \
$( git grep -l 'The Bitcoin Core developers' -- ':(exclude)COPYING' ':(exclude)src/ipc/libmultiprocess' ':(exclude)src/minisketch' )

-END VERIFY SCRIPT-

83/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
cryptography-sensitive pathseed or entropy pathsigning or wallet pathauthentication pathparser or protocol path
AI analysis · Informational 15/100

This commit is a bulk update of copyright notice years in source-code comments. It changes phrases like '2012-2022 The Bitcoin Core developers' to '2012-present The Bitcoin Core developers' across 988 files. There are no changes to program logic, no bug fixes, and no security-related code changes.

Security candidateci: Pin native tests on cross-builds to same commitby MarcoFalke · faa8ee62 · Dec 16, 2025 · 1 fileMessage 72 · AdequateInformational 15Details
Commit message · MarcoFalke

ci: Pin native tests on cross-builds to same commit

72/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Mentions testing or verification! No meaningful explanatory body
Why it was queued
access controldocumentation-only discount
AI analysis · Informational 15/100

This commit changes Bitcoin Core's GitHub Actions CI workflow so that when a Windows cross-build job runs, a separate job records the exact commit ID being built, and the follow-on native Windows test job checks out that same recorded commit. This prevents a race condition where a new commit pushed during the cross-build could cause the native tests to run against different source code than what was compiled. It is a CI reliability improvement, not a security fix.

Lower-prioritytest: add unit test for the private broadcast storageby Vasil Dimov · 582016fa · Dec 16, 2025 · 2 filesMessage 72 · AdequateInformational 15Details
Commit message · Vasil Dimov

test: add unit test for the private broadcast storage

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

This commit only adds a new unit test file for an existing feature called private broadcast storage. It does not change any production code, so it cannot introduce a security vulnerability or fix one on its own.

Lower-prioritydoc: add release notes for 29415by Vasil Dimov · 89372213 · Dec 16, 2025 · 1 fileMessage 45 · ThinInformational 15Details
Commit message · Vasil Dimov

doc: add release notes for 29415

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

This commit only adds documentation: a release note describing a previously merged privacy feature (PR #29415). It does not change any code, so it cannot introduce or fix a security vulnerability on its own. The feature it describes lets users optionally broadcast transactions only over Tor or I2P to hide their IP address and avoid linking separate transactions.

Lower-prioritytest: add functional test for private broadcastby Vasil Dimov · e74d54e0 · Dec 16, 2025 · 2 filesMessage 67 · AdequateInformational 15Details
Commit message · Vasil Dimov

test: add functional test for private broadcast

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

This commit only adds a new automated test file for Bitcoin Core's existing 'private broadcast' feature. It does not change any production code, so it cannot introduce a security vulnerability or fix one. The test verifies that transactions submitted through the RPC are broadcast privately over Tor/I2P-style connections and checks related edge cases.

Lower-priorityrpc: use private broadcast from sendrawtransaction RPC if -privatebroadcast is ONby Vasil Dimov · 818b780a · Dec 16, 2025 · 1 fileMessage 50 · ThinInformational 19Details
Commit message · Vasil Dimov

rpc: use private broadcast from sendrawtransaction RPC if -privatebroadcast is ON

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

This commit updates the sendrawtransaction RPC command so that, when the optional -privatebroadcast setting is enabled, it broadcasts raw transactions over privacy-preserving networks (Tor/I2P) instead of sending them to all connected peers. It also adds a check that at least one of those networks is reachable, and updates the command's help text. There is no direct evidence in the commit of a security vulnerability being fixed; it appears to be a privacy feature enhancement.

Lower-prioritynet_processing: retry private broadcastby Vasil Dimov · eab595f9 · Dec 16, 2025 · 5 filesMessage 58 · ThinLow 26Details
Commit message · Vasil Dimov

net_processing: retry private broadcast

Periodically check for stale transactions in peerman and if found,
reschedule new connections to be opened by connman for broadcasting
them.

58/100 · ThinMessage clarity
✓ Descriptive subject✓ Provides detailed explanatory context
AI analysis · Low 26/100

This commit adds a retry mechanism for a new optional 'private transaction broadcast' feature in Bitcoin Core. If a transaction sent privately isn't seen back from the network within about a minute, the node schedules extra private outgoing connections to rebroadcast it. It is a feature-completion patch, not a fix for an active vulnerability, and it does not appear to introduce obvious security bugs on its own.

Lower-prioritynet_processing: stop private broadcast of a transaction after round-tripby Vasil Dimov · 37b79f9c · Dec 16, 2025 · 3 filesMessage 73 · AdequateLow 36Details
Commit message · Vasil Dimov

net_processing: stop private broadcast of a transaction after round-trip

Remove the transaction from the list of transactions to broadcast after
we receive it from the network.

Only remove the transaction if it is the same as the one we sent: has
the same wtxid (and it follows the same txid). Don't remove transactions
that have the same txid and different wtxid. Such transactions show that
some of the private broadcast recipients malleated the witness and the
transaction made it back to us. The witness could be either:
* invalid, in which case the transaction will not be accepted in
anybody's pool; or
* valid, in which case either the original or the malleated transaction
will make it to nodes' mempools and eventually be mined. Our response
is to keep broadcasting the original. If the malleated transaction
wins then we will eventually stop broadcasting the original when it
gets stale and gets removed from the "to broadcast" storage cause it
is not acceptable in our mempool.

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

This Bitcoin Core change improves how the node stops privately re-broadcasting a transaction once it sees that same transaction come back from the network. It is a hardening/efficiency fix for the new private transaction broadcast feature, not a fix for a known remote exploit. The patch makes the node stop its private re-broadcast attempts when the exact transaction it sent is seen again, while still continuing to broadcast the original if a peer returns a malleated (altered-witness) version.

Lower-prioritynet_processing: handle ConnectionType::PRIVATE_BROADCAST connectionsby Vasil Dimov · 2de53eee · Dec 16, 2025 · 4 filesMessage 73 · AdequateLow 42Details
Commit message · Vasil Dimov

net_processing: handle ConnectionType::PRIVATE_BROADCAST connections

For connections of type `ConnectionType::PRIVATE_BROADCAST`:
* After receiving VERACK, send a transaction from the list of
transactions for private broadcast and disconnect
* Don't process any messages after VERACK (modulo `GETDATA` and `PONG`)
* Don't send any messages other than the minimum required for the
transaction send - `INV`, `TX`, `PING`.

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

This commit adds a new 'private broadcast' feature in Bitcoin Core that lets users send transactions through short-lived, disguised peer connections to reduce the risk that someone watching the network can figure out which IP address originated a transaction. The patch also fixes a related privacy leak: without the change, a malicious peer could have tricked the node into revealing its real network address during one of these private broadcasts. The commit is defensive and improves privacy, but it is a new and complex network feature, so it deserves careful review.

Lower-prioritynet_processing: move a debug check in VERACK processing earlierby Vasil Dimov · 30a9853a · Dec 16, 2025 · 1 fileMessage 73 · AdequateInformational 15Details
Commit message · Vasil Dimov

net_processing: move a debug check in VERACK processing earlier

The following commit will interrupt the processing of the `VERACK`
message earlier for private broadcast connections. The `Assume()` would
be nice to have for private broadcast as well, so move it earlier.

This is a non-functional change.

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

This commit simply moves an internal consistency check (an `Assume()` assertion) to an earlier point in the code that handles a peer's VERACK message. The check itself and the surrounding logic are unchanged. The author explicitly states this is a non-functional change, meaning it does not alter program behavior in release builds or fix any active bug.

Lower-prioritynet_processing: modernize PushNodeVersion()by Vasil Dimov · d1092e5d · Dec 16, 2025 · 1 fileMessage 58 · ThinInformational 15Details
Commit message · Vasil Dimov

net_processing: modernize PushNodeVersion()

Rename some variables in `PeerManagerImpl::PushNodeVersion()` and
use one log call instead of 2 almost identical. Also, assign
variables after they are declared to make it easy to assign them
different values, conditionally.

This is a non-functional change.

58/100 · ThinMessage clarity
✓ Descriptive subject✓ Provides detailed explanatory context
AI analysis · Informational 15/100

This is a straightforward code cleanup in Bitcoin Core's network handshake routine. It renames local variables, splits declarations from assignments, and merges two nearly identical log lines into one. The commit message explicitly calls it a non-functional change, and the diff shows no altered behavior, no new network data, and no changed security checks.

Lower-prioritynet_processing: move the debug log about receiving VERSION earlierby Vasil Dimov · 9937a12a · Dec 16, 2025 · 1 fileMessage 73 · AdequateInformational 15Details
Commit message · Vasil Dimov

net_processing: move the debug log about receiving VERSION earlier

Move the debug log message that we have received a `VERSION` message
earlier, before any `MakeAndPushMessage()`. Thus, if the processing is
interrupted before `MakeAndPushMessage()`s, the log would still be
executed.

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

This commit simply moves a diagnostic log message that records receipt of a peer's VERSION message to an earlier point in the network processing code. It does not change any protocol behavior, validation logic, or security checks. The change only affects debug logging output, making it more likely the log line is printed even if the connection is interrupted shortly after receiving VERSION. There is no security issue here.

AI review queuednet_processing: store transactions for private broadcast in PeerManagerby Vasil Dimov · 679ce3a0 · Dec 16, 2025 · 6 filesMessage 73 · AdequateInformational 12Details
Commit message · Vasil Dimov

net_processing: store transactions for private broadcast in PeerManager

Extend `PeerManager` with a transaction storage and a new method
`InitiateTxBroadcastPrivate()` which:
* adds a transaction to that storage and
* calls `CConnman::PrivateBroadcast::NumToOpenAdd()` to open dedicated
privacy connections that will pick an entry from the transaction
storage and broadcast it.

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

This commit adds infrastructure for a new privacy feature in Bitcoin Core. It creates a storage area for transactions that should be broadcast privately, and a method to request short-lived connections to privacy-network peers to broadcast them. The code is purely additive scaffolding; it does not by itself introduce a vulnerability, nor does it complete the private-broadcast feature. It simply wires a new code path into the existing transaction-broadcast logic.

Lower-prioritynet_processing: reorder the code that handles the VERSION messageby Vasil Dimov · a098f37b · Dec 16, 2025 · 1 fileMessage 73 · AdequateInformational 13Details
Commit message · Vasil Dimov

net_processing: reorder the code that handles the VERSION message

Change the order in which code snippets are executed as a result of
receiving the `VERSION` message. Move the snippets that do
`MakeAndPushMessage()` near the end. This makes it easier to interrupt
the execution when no messages should be sent as a response to the
`VERSION` messages, in private broadcast connections.

This is a non-functional change.

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

This commit simply rearranges the order of steps inside the code that handles a peer's VERSION message in Bitcoin Core. It moves the sending of two optional follow-up messages (WTXIDRELAY and SENDADDRV2) to a later point in the same function. The commit message explicitly calls this a non-functional change, and the diff shows no logic changes—only moved code blocks.

AI review queuednode: extend node::TxBroadcast with a 3rd optionby Vasil Dimov · a3faa6f9 · Dec 16, 2025 · 3 filesMessage 68 · AdequateInformational 14Details
Commit message · Vasil Dimov

node: extend node::TxBroadcast with a 3rd option

Extend `node::TxBroadcast` with a 3rd option to not add the
transaction to the mempool and broadcast privately.

This is a non-functional change - `BroadcastTransaction()` will not
do anything if the 3rd options is passed and is not used by any of
its callers.

68/100 · AdequateMessage clarity
✓ 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 14/100

This commit adds a new placeholder option for broadcasting Bitcoin transactions more privately, but the option is not actually used anywhere yet. It is a non-functional change that prepares the code for a future feature. There is no security issue in this patch itself.

AI review queuednet_processing: rename RelayTransaction() to better describe what it doesby Vasil Dimov · 95c051e2 · Dec 16, 2025 · 3 filesMessage 73 · AdequateInformational 15Details
Commit message · Vasil Dimov

net_processing: rename RelayTransaction() to better describe what it does

Rename `PeerManager::RelayTransaction()` to
`PeerManager::InitiateTxBroadcastToAll()`. The transaction is not
relayed when the method returns. It is only enqueued for a possible
broadcasting at a later time. Also, there will be another method which
only does so to Tor or I2P peers.

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 simply renames a function inside Bitcoin Core from RelayTransaction() to InitiateTxBroadcastToAll(). No behavior changes; the new name is more accurate because the function only queues a transaction for possible later broadcast rather than sending it immediately. It is a code clarity and documentation improvement.

Lower-prioritynet: implement opening PRIVATE_BROADCAST connectionsby Vasil Dimov · bb49d260 · Dec 16, 2025 · 3 filesMessage 73 · AdequateLow 27Details
Commit message · Vasil Dimov

net: implement opening PRIVATE_BROADCAST connections

Implement opening `ConnectionType::PRIVATE_BROADCAST` connections with
the following properties:
* Only to Tor or I2P (or IPv4/IPv6 through the Tor proxy, if provided)
* Open such connections only when requested and don't maintain N opened
connections of this type.
* Since this is substantially different than what
`OpenNetworkConnection()` does, open the private broadcast connections
from a different thread instead of modifying `OpenNetworkConnection()`
to also open those types of connections.

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

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

This commit adds a new optional Bitcoin Core feature called private broadcast connections. It lets the node open short-lived outbound connections over Tor, I2P, or clearnet through a Tor proxy, separately from normal peer connections. The change is defensive/privacy-oriented: it tries to avoid reusing a permanent I2P address and only routes these connections through anonymity networks. There is no obvious security bug in the diff, but it is a new networking subsystem with concurrency, proxy handling, and resource limits, so it carries some implementation risk.

Lower-prioritynet: introduce a new connection type for private broadcastby Vasil Dimov · 01dad4ef · Dec 16, 2025 · 9 filesMessage 78 · AdequateInformational 15Details
Commit message · Vasil Dimov

net: introduce a new connection type for private broadcast

We will open a short-lived connection to a random Tor or I2P peer,
send our transaction to that peer and close the connection.

78/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Names security-relevant behavior explicitly
AI analysis · Informational 15/100

This commit adds a new type of network connection called 'private-broadcast' to Bitcoin Core. It is a feature for improving user privacy when broadcasting transactions over anonymity networks like Tor or I2P. There is no indication in the commit that this fixes a security vulnerability; it is a privacy enhancement.

Lower-priorityinit: introduce a new option to enable/disable private broadcastby Vasil Dimov · 94aaa5d3 · Dec 16, 2025 · 3 filesMessage 65 · AdequateInformational 15Details
Commit message · Vasil Dimov

init: introduce a new option to enable/disable private broadcast

Co-authored-by: brunoerg <brunoely.gc@gmail.com>
Co-authored-by: Lőrinc <pap.lorinc@gmail.com>

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

This commit adds a new optional Bitcoin Core setting called -privatebroadcast. When enabled, transactions submitted through the sendrawtransaction RPC are broadcast over short-lived Tor or I2P connections instead of being placed in the node's public mempool first. The change is purely additive: it introduces the option, sets its default to off, and adds startup checks that warn or error if the feature is configured incorrectly. There is no bug fix or vulnerability patch here.

Lower-prioritylog: introduce a new category for private broadcastby Vasil Dimov · d6ee490e · Dec 16, 2025 · 2 filesMessage 50 · ThinInformational 15Details
Commit message · Vasil Dimov

log: introduce a new category for private broadcast

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

This commit simply adds a new logging category named 'privatebroadcast' to Bitcoin Core's logging system. It does not change any network behavior, privacy rules, or security logic. It only gives developers and users a new on/off switch for log messages that will be added separately.

Lower-priorityfuzz: add subtest for re-downloading a previously pruned blockby Eugene Siegel · db2d39f6 · Dec 16, 2025 · 1 fileMessage 83 · StrongInformational 12Details
Commit message · Eugene Siegel

fuzz: add subtest for re-downloading a previously pruned block

This imitates the use of the getblockfrompeer rpc.
Note that currently pruning is limited to blocks in the active chain.

Co-authored-by: Martin Zumsande <mzumsande@gmail.com>

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

This commit adds a new test case to an existing fuzz test. Fuzz tests are automated tools that feed random or semi-random inputs to a program to find crashes or bugs. The new test simulates re-downloading a block that was previously pruned (deleted to save disk space), similar to what happens when a user runs the getblockfrompeer RPC. It does not change normal node behavior, only test code.

Lower-priorityfuzz: Add fuzzer for block indexby Martin Zumsande · 45f5b2da · Dec 16, 2025 · 2 filesMessage 78 · AdequateInformational 15Details
Commit message · Martin Zumsande

fuzz: Add fuzzer for block index

This fuzz target creates arbitrary tree-like structure of indices,
simulating the following events:
- Adding a header to the block tree db
- Receiving the full block (may be valid or not)
- Reorging to a new chain tip (possibly encountering invalid blocks on
the way)
- pruning
The test skips all actual validation of header/ block / transaction data
by just simulating the outcome, and also doesn't interact with the data directory.

The main goal is to test the integrity of the block index tree in
all fuzzed constellations, by calling CheckBlockIndex()
at the end of each iteration.

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

This commit adds a new automated fuzz test for Bitcoin Core's block index tree. It is purely a testing/quality-assurance change: it creates fake block trees and simulates events such as adding headers, receiving blocks, reorganizing chains, and pruning, then checks the tree's integrity. It does not change any production code that runs on real Bitcoin nodes, so it cannot directly introduce a network-exploitable vulnerability.

Lower-prioritytest: Wrap validation functions with TestChainstateManagerby Martin Zumsande · c011e3aa · Dec 16, 2025 · 4 filesMessage 95 · StrongInformational 15Details
Commit message · Martin Zumsande

test: Wrap validation functions with TestChainstateManager

This allows to access them in the fuzz test in the next commit
without making them public.

Co-authored-by: TheCharlatan <seb.kung@gmail.com>

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

This commit only changes test infrastructure code. It moves some internal class members from private to protected access and adds test-only wrapper methods so that fuzz tests can reach validation logic without making those functions public in the main codebase. There is no change to how Bitcoin Core behaves in production, and no security bug is being fixed or introduced.