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 41 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-prioritydepends: Add patch for Windows11Style pluginby Hennadii Stepanov · 8558902e · Nov 18, 2025 · 2 filesMessage 45 · ThinInformational 18Details
Commit message · Hennadii Stepanov

depends: Add patch for Windows11Style plugin

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

This commit adds a build-time patch for the Qt GUI toolkit used by Bitcoin Core's Windows builds. The patch fixes a visual/layout bug in the Windows 11 visual style where spinbox controls (number/date input fields with up/down buttons) could be sized incorrectly or have their user-set widths overridden. It is a cosmetic/user-experience fix, not a security patch.

Security candidateMerge bitcoin/bitcoin#31734: miniscript: account for all `StringType` variants in `Miniscriptdescriptor::ToString()`by Ava Chow · 53b72372 · Nov 18, 2025 · 2866 filesMessage 91 · StrongLow 26Details
Commit message · Ava Chow

Merge bitcoin/bitcoin#31734: miniscript: account for all `StringType` variants in `Miniscriptdescriptor::ToString()`

28a4fcb03c0fb1cd5112eca1eb36dcb13e0b4ff2 test: check listdescriptors do not return a mix of hardened derivation marker (pythcoiner)
975783cb79e929260873c1055d4b415cd33bb6b9 descriptor: account for all StringType in MiniscriptDescriptor::ToStringHelper() (pythcoiner)

Pull request description:

In `MiniscriptDescriptor::ToStringHelper()` only the `StringType::Private` variant of the `type` argument was handled. This PR implements serializing w/ all variants of `StringType` & add a functional test for the descriptor triggering the related issue.

Closes #31694: previously when calling `listdescriptors` RPC on a wallet containing a taproot descriptor w/ a (miniscript) taptree, origins of internal key & taptree were serialized w/ differents hardened derivation markers:
- origin of the internal key were serialized w/ `StringType::Normalized` type (using `h` as marker)
- origins of taptree keys were serialized w/ `StringType::Private` type (using `'` as marker)

Note: Origins in segwit (`wsh()`) miniscript descriptors were also serialized w/ `StringType::Private` type (`'` marker) and are now serialized w/ `StringType::Normalized` type (`h` marker).

ACKs for top commit:
sipa:
Code review ACK 28a4fcb03c0fb1cd5112eca1eb36dcb13e0b4ff2
achow101:
ACK 28a4fcb03c0fb1cd5112eca1eb36dcb13e0b4ff2
rkrux:
Concept ACK 28a4fcb03c0fb1cd5112eca1eb36dcb13e0b4ff2

Tree-SHA512: 15d14000b5951ca69a64a05b9a0b138c48a07b81eaf2fa86b91ac20cc8735533355a787363c64ba88403dd8a56ef5232cba57d34bea80835a0f40774d62fbc2b

91/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
defensive validationcryptography-sensitive pathseed or entropy pathsigning or wallet pathboot or update pathauthentication pathparser or protocol pathmerge-commit duplicate discount
AI analysis · Low 26/100

This commit fixes a formatting inconsistency in how Bitcoin Core's wallet describes certain advanced 'miniscript' descriptors. When a user called the listdescriptors RPC, the same descriptor could contain a mix of 'h' and ''' markers for hardened derivation paths, depending on whether the key was inside a Taproot taptree or not. The patch makes the output uniform. It is a correctness/usability bug rather than a direct loss-of-funds vulnerability, but inconsistent descriptors can confuse downstream tools or users who compare or re-import descriptor strings.

Lower-prioritydoc: Add missing --platform=linux to docker build commandby MarcoFalke · 55555db0 · Nov 18, 2025 · 1 fileMessage 65 · AdequateInformational 16Details
Commit message · MarcoFalke

doc: Add missing --platform=linux to docker build command

This is required to pick the native arch, similar to how the
CI_IMAGE_PLATFORM is set to linux.

65/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
documentation-only discount
AI analysis · Informational 16/100

This is a one-line documentation fix in a README file. It adds a missing '--platform=linux' flag to a Docker build command example used by developers running linting tools locally. There is no code change, no security vulnerability, and no risk to users.

Lower-priorityci: Re-enable LINT_CI_SANITY_CHECK_COMMIT_SIGby MarcoFalke · fa0ce4c1 · Nov 18, 2025 · 2 filesMessage 70 · AdequateInformational 18Details
Commit message · MarcoFalke

ci: Re-enable LINT_CI_SANITY_CHECK_COMMIT_SIG

With the move from cirrus-ci to GHA, the CIRRUS_REPO_FULL_NAME env var
was always unset, never triggering the sanity check.

Fix this by introducing a new vendor-agnostic env var and setting it
properly.

70/100 · AdequateMessage clarity
✓ Descriptive subject✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
AI analysis · Informational 18/100

This commit fixes a broken CI safety check. When Bitcoin Core moved from Cirrus CI to GitHub Actions, an automated check that verifies commit signatures on the official repository stopped running because it looked for an old environment variable that no longer existed. The patch introduces a new environment variable so the signature check runs again on non-pull-request pushes to the official bitcoin/bitcoin repository. It is a CI hardening fix, not a vulnerability in the Bitcoin software itself.

Lower-priorityci: [refactor] Rename CIRRUS_PR env var to LINT_CI_IS_PRby MarcoFalke · faa0973d · Nov 18, 2025 · 2 filesMessage 85 · StrongInformational 15Details
Commit message · MarcoFalke

ci: [refactor] Rename CIRRUS_PR env var to LINT_CI_IS_PR

The CIRRUS_PR env var was cirrus-specific and using a provider-agnostic
name makes more sense.

Also, enable pipefail, while touching this file.

This refactor is needed for the next commit.

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

This is a routine internal cleanup of the Bitcoin Core continuous integration (CI) lint scripts. It renames an environment variable from a Cirrus-specific name to a provider-agnostic one and enables a stricter shell option for catching pipeline failures. There is no user-facing change and no security-relevant behavior change.

Lower-priorityci: Consistenly only cache on the default branchby MarcoFalke · fa411f93 · Nov 18, 2025 · 1 fileMessage 57 · ThinInformational 19Details
Commit message · MarcoFalke

ci: Consistenly only cache on the default branch

57/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
Why it was queued
documentation-only discount
AI analysis · Informational 19/100

This change adjusts Bitcoin Core's GitHub Actions CI workflow so that build caches are only saved when running on the repository's default branch (e.g., 'master'). Previously, caches could be saved from non-default branches too. The patch is a hardening measure: it reduces the risk that a malicious or compromised branch could poison shared CI caches used by later builds. It is not a fix for an active exploit in Bitcoin Core's shipped software, but rather a defensive tightening of the project's own build infrastructure.

Security candidatetest: add functional test for new cluster mempool RPCsby Suhas Daftuar · 6c5c44f7 · Nov 18, 2025 · 5 filesMessage 87 · StrongInformational 15Details
Commit message · Suhas Daftuar

test: add functional test for new cluster mempool RPCs

Co-authored-by: glozow <gloriajzhao@gmail.com>

87/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body✓ Mentions testing or verification
Why it was queued
boot or update path
AI analysis · Informational 15/100

This commit only adds new automated tests for Bitcoin Core's mempool cluster features. It does not change any production code that runs on real Bitcoin nodes, so it cannot introduce a security vulnerability or directly fix one in the live software.

AI review queuedExpose cluster information via rpcby Suhas Daftuar · 21693f03 · Nov 18, 2025 · 6 filesMessage 60 · AdequateInformational 20Details
Commit message · Suhas Daftuar

Expose cluster information via rpc

Co-authored-by: glozow <gloriajzhao@gmail.com>

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 20/100

This commit adds new read-only ways to inspect Bitcoin's mempool through RPC: it exposes 'cluster' information for transactions, adds chunk-based fee/weight fields to existing mempool entries, and introduces a hidden diagnostic command that prints the mempool's feerate diagram. It is a feature/informational change, not a fix for a known vulnerability. There is no evidence in the commit or supplied references that it addresses a security bug or was triggered by a security report.

Lower-prioritydoc: Update mempool_replacements.md to reflect feerate diagram checksby Suhas Daftuar · 72f60c87 · Nov 18, 2025 · 1 fileMessage 50 · ThinInformational 15Details
Commit message · Suhas Daftuar

doc: Update mempool_replacements.md to reflect feerate diagram checks

50/100 · ThinMessage clarity
✓ Specific, 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 updates a documentation file describing Bitcoin Core's mempool replacement policy. It removes outdated rules and adds notes about newer 'feerate diagram' checks and cluster mempool behavior. There are no code changes, no executable changes, and no security fix or vulnerability introduced.

Lower-priorityRewrite GatherClusters to use the txgraph implementationby Suhas Daftuar · 88672e20 · Nov 18, 2025 · 1 fileMessage 50 · ThinLow 28Details
Commit message · Suhas Daftuar

Rewrite GatherClusters to use the txgraph implementation

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

This commit rewrites an internal Bitcoin Core function called GatherClusters so it uses a newer transaction graph (txgraph) implementation instead of manually walking parent/child relationships. The change is a refactor that preserves the same 500-entry DoS limit but moves where and how that limit is enforced. There is no direct evidence in the commit that this fixes a security bug, but refactors of mempool cluster logic can affect denial-of-service protections.

Lower-priorityEliminate CheckPackageLimits, which no longer does anythingby Suhas Daftuar · 1902111e · Nov 18, 2025 · 4 filesMessage 50 · ThinInformational 15Details
Commit message · Suhas Daftuar

Eliminate CheckPackageLimits, which no longer does anything

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

This commit removes a function called CheckPackageLimits that, according to the commit title and message, no longer did anything useful. The function body simply returned success without performing any checks, and callers were already using other mechanisms (like CheckPolicyLimits) for the relevant limits. This is a straightforward code cleanup with no apparent security impact.

Lower-prioritybench: add more mempool benchmarksby Suhas Daftuar · f1074174 · Nov 18, 2025 · 1 fileMessage 60 · AdequateInformational 15Details
Commit message · Suhas Daftuar

bench: add more mempool benchmarks

Add benchmarks for:

- adding a transaction
- calculating mempool ancestors/descendants

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

This commit only adds new performance benchmark tests for Bitcoin Core's transaction memory pool. It does not change any production code that runs on real networks, so it cannot directly affect security or be exploited by attackers.

Lower-priorityStop tracking parents/children outside of txgraphby Suhas Daftuar · 84de685c · Nov 18, 2025 · 3 filesMessage 45 · ThinInformational 12Details
Commit message · Suhas Daftuar

Stop tracking parents/children outside of txgraph

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

This commit is a code cleanup in Bitcoin Core's memory pool (mempool). It removes duplicate bookkeeping: parent/child relationships between transactions used to be tracked both inside each mempool entry object and inside a newer 'txgraph' module. The change makes txgraph the single source of truth for those relationships. There is no direct evidence in the commit or supplied references that this fixes a security vulnerability; it appears to be a refactoring to simplify data structures and reduce maintenance risk.

Lower-priorityfuzz: try to add more code coverage for mempool fuzzingby Suhas Daftuar · 72e74e0d · Nov 18, 2025 · 2 filesMessage 75 · AdequateInformational 12Details
Commit message · Suhas Daftuar

fuzz: try to add more code coverage for mempool fuzzing

Including test coverage for mempool eviction and expiry

75/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Mentions testing or verification
Why it was queued
fuzzing or regression evidence
AI analysis · Informational 12/100

This commit is a test-only change. It expands Bitcoin Core's fuzz testing for the transaction memory pool (mempool) to cover more behaviors like eviction, expiry, reorg handling, and block template creation. It also adds a sanity check inside the mempool's own consistency verification code. There is no indication this fixes a security vulnerability or changes production network behavior.

Lower-priorityFix miniminer_tests to work with cluster limitsby Suhas Daftuar · 1ca4f010 · Nov 18, 2025 · 1 fileMessage 45 · ThinInformational 15Details
Commit message · Suhas Daftuar

Fix miniminer_tests to work with cluster limits

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

This commit only changes a test file (miniminer_tests.cpp) so that existing unit tests still pass after a new mempool 'cluster limit' rule was introduced. It does not change any production code that runs on real Bitcoin nodes, so it cannot directly affect live network security or be exploited by attackers.

Lower-priorityAvoid violating mempool policy limits in testsby Suhas Daftuar · 7976eb1a · Nov 18, 2025 · 3 filesMessage 78 · AdequateInformational 16Details
Commit message · Suhas Daftuar

Avoid violating mempool policy limits in tests

Changes AddToMempool() helper to only apply changes if the mempool limits are
respected.

Fix package_rbf fuzz target to handle mempool policy violations

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

This commit fixes Bitcoin Core's own internal test and fuzzing helpers so they stop trying to add fake transactions to the test mempool in ways that break the real mempool policy rules. It does not change production network code, wallet behavior, or consensus rules. The change only affects test utilities and one fuzz target, making the tests more realistic and preventing false fuzz failures.

Lower-priorityRework RBF and TRUC validationby Suhas Daftuar · 3a646ec4 · Nov 18, 2025 · 6 filesMessage 90 · StrongModerate 63Details
Commit message · Suhas Daftuar

Rework RBF and TRUC validation

Calculating mempool ancestors for a new transaction should not be done until
after cluster size limits have been enforced, to limit CPU DoS potential.

Achieve this by reworking TRUC and RBF validation logic:

- TRUC policy enforcement is now done using only mempool parents of
new transactions, not all mempool ancestors (note that it's fine to calculate
ancestors of in-mempool transactions, if the number of such calls is
reasonably bounded).
- RBF replacement checks are performed earlier (which allows for checking
cluster size limits earlier, because cluster size checks cannot happen until
after all conflicts are staged for removal).
- Verifying that a new transaction doesn't conflict with an ancestor now
happens later, in AcceptSingleTransaction() rather than in PreChecks(). This
means that the test is not performed at all in AcceptMultipleTransactions(),
but in package acceptance we already disallow RBF in situations where a
package transaction has in-mempool parents.

Also to ensure that all RBF validation logic is applied in both the single
transaction and multiple transaction cases, remove the optimization that skips
the PackageMempoolChecks() in the case of a single transaction being validated
in AcceptMultipleTransactions().

90/100 · StrongMessage clarity
✓ 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 validation
AI analysis · Moderate 63/100

This Bitcoin Core commit reorders and reworks how two new transaction-handling features—RBF (Replace-By-Fee) and TRUC (a restricted version-3 transaction policy)—are validated. The main goal is to avoid doing expensive 'ancestor' calculations on the whole mempool until cheaper cluster-size checks have already run, so a maliciously crafted transaction can't waste a node's CPU as easily. It also makes sure the same RBF checks apply whether one transaction or a whole package is being accepted, and moves a 'spends a transaction it is replacing' check to a later, safer point.

Lower-priorityMake getting parents/children a function of the mempool, not a mempool entryby Suhas Daftuar · 19b84798 · Nov 18, 2025 · 5 filesMessage 50 · ThinInformational 15Details
Commit message · Suhas Daftuar

Make getting parents/children a function of the mempool, not a mempool entry

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 internal code cleanup in Bitcoin Core. It moves two helper functions—one that finds child transactions and one that finds parent transactions—from being methods on individual mempool entries to being methods on the mempool itself. The behavior is essentially the same; only the code organization and the caller syntax change. There is no indication this fixes a security bug or changes network behavior.

Lower-priorityRework truc_policy to use descendants, not childrenby Suhas Daftuar · 5560913e · Nov 18, 2025 · 1 fileMessage 50 · ThinLow 42Details
Commit message · Suhas Daftuar

Rework truc_policy to use descendants, not children

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

This commit fixes how Bitcoin Core counts the descendants of a special transaction type (TRUC) in the memory pool. Previously it looked only at direct children, which could miss deeper descendants introduced by blockchain reorganizations. The change makes the limit enforcement more accurate and adds a lock to prevent race conditions while checking the pool. It is a correctness and robustness improvement rather than a clear, exploitable vulnerability.

Lower-priorityUse txgraph to calculate ancestorsby Suhas Daftuar · c8b6f70d · Nov 18, 2025 · 4 filesMessage 45 · ThinInformational 12Details
Commit message · Suhas Daftuar

Use txgraph to calculate ancestors

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

This commit is a routine internal refactoring in Bitcoin Core's memory pool (mempool) code. It replaces one way of calculating transaction ancestors with a newer shared component called txgraph. The visible behavior for users and network peers should stay the same. There is no indication this fixes a security bug or introduces a vulnerability.

Lower-priorityUse txgraph to calculate descendantsby Suhas Daftuar · a4458d6c · Nov 18, 2025 · 1 fileMessage 45 · ThinInformational 16Details
Commit message · Suhas Daftuar

Use txgraph to calculate descendants

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

This commit simplifies how Bitcoin Core's memory pool (mempool) calculates the descendants of a transaction. It replaces a manual tree-walking routine with a call to a dedicated transaction graph component (m_txgraph). There is no direct evidence in the commit that this fixes a security bug; it appears to be a code cleanup or refactoring change.

Lower-prioritySimplify ancestor calculation functionsby Suhas Daftuar · 241a3e66 · Nov 18, 2025 · 6 filesMessage 70 · AdequateInformational 19Details
Commit message · Suhas Daftuar

Simplify ancestor calculation functions

Now that ancestor calculation never fails (due to ancestor/descendant limits
being eliminated), we can eliminate the error handling from
CalculateMemPoolAncestors.

70/100 · AdequateMessage clarity
✓ Descriptive subject✓ Provides detailed explanatory context✓ Explains rationale or failure mode
AI analysis · Informational 19/100

This commit is a routine code cleanup in Bitcoin Core's memory pool (mempool) logic. It removes error-handling paths from functions that calculate transaction ancestors, because a previous design change made those errors impossible. The commit does not introduce new behavior or fix a security bug; it simplifies the code after ancestor/descendant limits were removed elsewhere.

AI review queuedMake removeConflicts privateby Suhas Daftuar · b9cec7f0 · Nov 18, 2025 · 1 fileMessage 35 · OpaqueInformational 15Details
Commit message · Suhas Daftuar

Make removeConflicts private

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 moves a single internal helper function, removeConflicts, from the public section of a C++ class to the private section in the header file. It does not change what the function does, how it behaves, or any executable code. It is a routine encapsulation/cleanup change with no security effect.

Lower-priorityRemove unused limits from CalculateMemPoolAncestorsby Suhas Daftuar · 0402e6c7 · Nov 18, 2025 · 6 filesMessage 50 · ThinInformational 15Details
Commit message · Suhas Daftuar

Remove unused limits from CalculateMemPoolAncestors

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 routine code cleanup in Bitcoin Core. It removes an unused 'limits' parameter from several mempool ancestor-calculation functions and their callers. The actual mempool policy limits are still enforced elsewhere, so this change does not alter network rules or introduce a security issue.

Lower-priorityRemove unused members from CTxMemPoolEntryby Suhas Daftuar · fc4e3e6b · Nov 18, 2025 · 2 filesMessage 45 · ThinInformational 15Details
Commit message · Suhas Daftuar

Remove unused members from CTxMemPoolEntry

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

This commit removes several unused internal accounting fields from Bitcoin Core's memory pool transaction entry class. It is a straightforward code cleanup: fields that tracked descendant and ancestor transaction sizes, fees, and counts are deleted, and the methods that updated them are left empty. There is no security-relevant change visible in the diff.