BC
← All projectsBitcoin Core

Bitcoin Core

The Bitcoin network's reference node and wallet implementation.

BitcoinSupply chainNormal
Repository coverage

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

260security candidates613second-pass queue2893AI analyses
184commits · 30 days
475commits · 60 days
1490commits · 180 days
2857commits · 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
970Strong · 80–100
1189Adequate · 60–79
690Thin · 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 Chow16452162065
MarcoFalke41021406074
Lőrinc18121177081
fanquake22919226057
Hennadii Stepanov21314208063
rkrux57957074
Sjors Provoost89889074
merge-script42819088
Sebastian Falbesoner33733073
David Gumberg55655072
Pieter Wuille95595066
Analysis record

Published AI watches

Last scanned 29 minutes ago

Low 26 AI analysisMessage 96 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#32784: wallet: derivehdkey RPC to get xpub at arbitrary path

This commit adds a new Bitcoin Core wallet RPC called derivehdkey that lets a user derive an extended public key (xpub) — or optionally the matching extended private key (xprv) — at a chosen BIP32 path from one of the wallet's own HD keys.…

New RPC exposes xpub/xprv derivation from wallet HD keysRequires at least one hardened derivation stepRejects watch-only wallets and locked/encrypted wallets
a8b582ecby Ava Chow+633−15819 files
No security note in commit
Informational 15 AI analysisMessage 81 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#35852: scripted-diff: Use inline const(expr) over static constexpr in headers

This is a large but purely mechanical code cleanup in Bitcoin Core. It changes how constants are declared in header files from older C++ styles (static const, static constexpr) to the modern C++17 inline constexpr/inline const form. The pu…

dec68f99by merge-script+440−440102 files
No security note in commit
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
Repository ledger

Explore captured commits

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

Lower-priorityci: add configure environment actionby will · b8fcc9fc · Sep 1, 2025 · 1 fileMessage 57 · ThinInformational 15Details
Commit message · will

ci: add configure environment action

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

This commit adds a new reusable GitHub Actions step that sets environment variables for Bitcoin Core's continuous integration (CI) system. It defines build/cache directories and computes cache hashes from source files. There is no user-facing or network-facing change, and nothing in the diff suggests a security vulnerability or fix.

Lower-priorityci: add caching actionsby will · b232b0fa · Sep 1, 2025 · 2 filesMessage 85 · StrongInformational 15Details
Commit message · will

ci: add caching actions

Add "Restore" and "Save" caching actions.

These actions reduce boilerplate in the main ci.yml configuration file.

These actions are implemented so that caches will be saved on `push`
only.

When a pull request is opened it will cache hit on the caches from the
lastest push, or in the case of depends will hit on any matching depends
hash, falling back to partial matches.

Depends caches are hashed using
`$(git ls-tree HEAD depends "ci/test/$FILE_ENV" | sha256sum | cut -d' ' -f1)`
and this hash is passed in as an input to the actions. This means we
direct cache hit in cases where depends would not be re-built, otherwise
falling back to a partial match.

Previous releases cache is hashed similarly to depends, but using the
test/get_previous_releases.py file.

The cirruslabs cache action will fallback transparently to GitHub's
cache in the case that the job is not being run on a Cirrus Runner,
making these compatible with running on forks (on free GH hardware).

85/100 · StrongMessage clarity
✓ Subject identifies a change✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Mentions testing or verification
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This commit adds two new GitHub Actions helper files that manage caching for the project's continuous integration (CI) build system. It saves and reuses compiled code and dependency downloads to make automated builds faster. There is no indication this change introduces a security vulnerability or modifies any Bitcoin Core software code that users run.

Lower-priorityfees: make estimateSmartFee/HighestTargetTracked virtual for mockingby brunoerg · f591c3be · Aug 29, 2025 · 1 fileMessage 50 · ThinInformational 15Details
Commit message · brunoerg

fees: make estimateSmartFee/HighestTargetTracked virtual for mocking

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 changes two function declarations in a header file from regular methods to virtual methods. Virtual methods can be overridden in subclasses, which is useful for testing with mock objects. There is no security issue here.

Lower-prioritytest: Fixup fill_mempool docstringby MarcoFalke · fa3f6820 · Aug 29, 2025 · 1 fileMessage 72 · AdequateInformational 15Details
Commit message · MarcoFalke

test: Fixup fill_mempool docstring

The assumption was removed in commit
3eab8b724044dc321f70e5eed66b149713158a04.

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

This is a tiny documentation-only change in a test helper file. It removes one outdated sentence from a docstring because a previous commit removed the assumption it described. No code behavior changed, and there is no security relevance.

Lower-prioritycoins: increase default `dbbatchsize` to 32 MiBby Lőrinc · b6f8c489 · Aug 28, 2025 · 1 fileMessage 68 · AdequateInformational 15Details
Commit message · Lőrinc

coins: increase default `dbbatchsize` to 32 MiB

The default database write batch size is increased from 16 MiB to 32 MiB to improve I/O efficiency and performance during UTXO flushes, particularly during Initial Block Download and `assumeutxo` loads.

On systems with slower I/O, a larger batch size reduces overhead from numerous small writes. Measurements show this change provides a modest performance improvement on most hardware during a critical section, with a minimal peak memory increase (approx. 75 MiB on default settings).

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Informational 15/100

This commit simply doubles a default internal setting that controls how much data Bitcoin Core groups together before writing to its UTXO database. It is a performance tuning change, not a security fix or vulnerability. There is no indication it introduces a security problem.

Lower-priorityrefactor: Extract default batch size into kernelby Lőrinc · 8bbb7b8b · Aug 28, 2025 · 3 filesMessage 72 · AdequateInformational 15Details
Commit message · Lőrinc

refactor: Extract default batch size into kernel

The constant for the default batch size is moved to `kernel/caches.h` to consolidate kernel-related cache constants.

72/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body
AI analysis · Informational 15/100

This is a simple code cleanup change: a single default value for a database batch size setting is moved from one header file to another and renamed to follow project conventions. The actual numeric value (16 MiB) and how it is used remain unchanged. There is no security relevance.

Lower-prioritythreading: reduce the scope of lock in getblocktemplateby kevkevinpal · 493ba0f6 · Aug 28, 2025 · 1 fileMessage 50 · ThinInformational 12Details
Commit message · kevkevinpal

threading: reduce the scope of lock in getblocktemplate

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

This change narrows the use of a global lock in the getblocktemplate RPC, which miners use to request work. The lock is now acquired later and held for a shorter time, rather than being held across the entire request setup. This is a performance and correctness cleanup. There is no direct evidence in the commit that it fixes an exploitable security bug, but reducing lock scope can prevent subtle race conditions or RPC stalls.

Lower-priorityci: return to using dash in CentOS jobby fanquake · 509ffea4 · Aug 27, 2025 · 2 filesMessage 57 · ThinInformational 15Details
Commit message · fanquake

ci: return to using dash in CentOS job

57/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope! No meaningful explanatory body
AI analysis · Informational 15/100

This is a routine Continuous Integration (CI) maintenance change for Bitcoin Core. It switches the CentOS test container back from using the ksh shell to the dash shell, because a Red Hat bug that previously required ksh has been fixed. The change only affects internal test scripts and installed CI packages; it does not touch Bitcoin Core's network code, wallet, consensus logic, or any user-facing software.

Lower-priorityRevert "[refactor] rewrite vTxHashes as a vector of CTransactionRef"by Anthony Towns · b7b249d3 · Aug 26, 2025 · 4 filesMessage 65 · AdequateInformational 12Details
Commit message · Anthony Towns

Revert "[refactor] rewrite vTxHashes as a vector of CTransactionRef"

This reverts commit a03aef9cec35b0d03aa63d7e8093f0420cd4b40b.

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

This commit undoes a recent code cleanup that changed how Bitcoin Core's memory pool tracks transactions for compact block reconstruction. The reversion restores the previous design where the mempool keeps pairs of transaction IDs and iterators, rather than storing direct shared references to transactions. There is no indication in the commit itself that this fixes a security bug; it appears to be a design or correctness revert, possibly due to bugs introduced by the original refactor.

Lower-prioritybench/blockencodings: add compact block reconstruction benchmarkby Anthony Towns · df5a50e5 · Aug 26, 2025 · 2 filesMessage 50 · ThinInformational 15Details
Commit message · Anthony Towns

bench/blockencodings: add compact block reconstruction benchmark

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

This commit adds a new performance test (benchmark) for Bitcoin Core's compact block reconstruction feature. It does not change any production code that runs on the live Bitcoin network, so it cannot directly cause security problems or be exploited by attackers.

Lower-priorityRevert "refactor: Simplify `extra_txn` to be a vec of CTransactionRef instead of a vec of pair<Wtxid, CTransactionRef>"by Anthony Towns · b9300d8d · Aug 26, 2025 · 6 filesMessage 65 · AdequateLow 27Details
Commit message · Anthony Towns

Revert "refactor: Simplify `extra_txn` to be a vec of CTransactionRef instead of a vec of pair<Wtxid, CTransactionRef>"

This reverts commit a8203e94123b6ea6e4f4a6320e3ad20457f44a28.

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

This commit undoes a recent code cleanup in Bitcoin Core's compact block reconstruction feature. The original cleanup changed an internal list of spare transactions from storing pairs of 'transaction ID + transaction pointer' to storing only the transaction pointer. This revert restores the paired format and adds a comment explaining that keeping both values together improves CPU cache performance during block reconstruction. There is no direct evidence in the commit that this fixes an active security bug, but it is a defensive revert of a performance refactor in a consensus-adjacent code path.

Lower-priorityci: use LLVM 21by fanquake · 4cf0ae47 · Aug 26, 2025 · 5 filesMessage 40 · ThinInformational 15Details
Commit message · fanquake

ci: use LLVM 21

40/100 · ThinMessage clarity
✓ Subject identifies a change✓ Uses a recognizable type or scope! No meaningful explanatory body
AI analysis · Informational 15/100

This commit simply updates the continuous integration (CI) test scripts to use LLVM/Clang version 21 instead of version 20. It does not change Bitcoin Core's actual source code, network behavior, or wallet logic. There is no security issue here.

Lower-priorityci: Enable CI_LIMIT_STACK_SIZE=1 in i686_no_ipc taskby MarcoFalke · fa96a4af · Aug 26, 2025 · 1 fileMessage 62 · AdequateInformational 15Details
Commit message · MarcoFalke

ci: Enable CI_LIMIT_STACK_SIZE=1 in i686_no_ipc task

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 only changes a continuous integration (CI) test configuration file. It adds an environment variable that limits stack size during automated testing of a 32-bit Intel build. There is no change to the actual Bitcoin Core software that users run, and nothing in the commit suggests a security fix or vulnerability.

Lower-prioritytest: Fix CLI_MAX_ARG_SIZE issuesby MarcoFalke · facfde2c · Aug 26, 2025 · 2 filesMessage 57 · ThinInformational 18Details
Commit message · MarcoFalke

test: Fix CLI_MAX_ARG_SIZE issues

57/100 · ThinMessage clarity
✓ Descriptive subject✓ Uses a recognizable type or scope✓ Mentions testing or verification! No meaningful explanatory body
AI analysis · Informational 18/100

This commit fixes a bug in Bitcoin Core's own testing tools. The test framework had a limit meant to avoid passing overly long command-line arguments to the bitcoin-cli program, but it was checking the size of the largest single argument instead of the total size of all arguments. The fix lowers the threshold and checks the total length, and adds tests to make sure large arguments still work by routing them through standard input instead. This is a test-only change and does not affect the Bitcoin Core software that users run.

Security candidateSquashed 'src/ipc/libmultiprocess/' changes from b4120d34bad2..1b8d4a6f1e54by Ryan Ofsky · dd68d0f4 · Aug 22, 2025 · 11 filesMessage 91 · StrongLow 25Details
Commit message · Ryan Ofsky

Squashed 'src/ipc/libmultiprocess/' changes from b4120d34bad2..1b8d4a6f1e54

1b8d4a6f1e54 Merge bitcoin-core/libmultiprocess#194: mpgen: Work around c++20 / capnproto 0.8 incompatibility
f1fad396bf5f Merge bitcoin-core/libmultiprocess#195: ci: Add openbsd
eed42f210d17 ci: Bump all tasks to actions/checkout@v5
486a510bbeff ci: Remove ancient and problematic -lstdc++fs in mpexample
dd40897efe79 Add missing thread include
98414e7d2867 ci: Add openbsd
dc3ba2204606 cmake, doc: Add check for CVE-2022-46149
cb170d4913a2 Merge bitcoin-core/libmultiprocess#193: build: require CapnProto 0.7.0 or better
8ceeaa6ae401 ci: Add olddeps job to test old dependencies versions
c4cb758eccb5 mpgen: Work around c++20 / capnproto 0.8 incompatibility
30930dff7b06 build: require CapnProto 0.7.0 or better

git-subtree-dir: src/ipc/libmultiprocess
git-subtree-split: 1b8d4a6f1e54b92708bd2ad627ec6d440a1daf3d

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
explicit security language
AI analysis · Low 25/100

This commit updates the libmultiprocess subtree used by Bitcoin Core. The most notable change is a build-time guard that refuses to compile against specific old versions of the Cap'n Proto library because those versions contain a known memory-access vulnerability (CVE-2022-46149). The commit also adds CI testing for older Cap'n Proto versions and OpenBSD, fixes a C++20/Cap'n Proto 0.8 compatibility issue in the code generator, removes an obsolete linker flag, and adds a missing include. It is primarily a hardening and compatibility update, not a fix for a new vulnerability in Bitcoin Core itself.

AI review queuedwallet, refactor: Remove Legacy check and errorby pablomartin4btc · d3c5e473 · Aug 22, 2025 · 1 fileMessage 72 · AdequateInformational 15Details
Commit message · pablomartin4btc

wallet, refactor: Remove Legacy check and error

Remove dead code due to legacy wallet removal.

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

This commit removes a now-impossible error path in Bitcoin Core's wallet code. Legacy (non-descriptor) wallets have already been removed from the codebase, so the check that rejected adding descriptors to a legacy wallet was unreachable 'dead code.' The change replaces that check with an internal assertion, which only affects debug builds and only crashes the program if an invariant that should never happen is violated. There is no security vulnerability here.

Lower-prioritythreading: remove unused template instantiationsby Cory Fields · 46ca7712 · Aug 22, 2025 · 1 fileMessage 60 · AdequateInformational 15Details
Commit message · Cory Fields

threading: remove unused template instantiations

These were only required for the ENTER_CRITICAL_SECTION macro.

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

This commit removes two unused C++ template instantiations from Bitcoin Core's synchronization code. Template instantiations are pre-compiled versions of a generic function for specific data types. The removed ones supported older mutex types that are no longer used by the ENTER_CRITICAL_SECTION macro. This is a routine cleanup with no security impact.

Lower-prioritytests: get rid of remaining manual critsect usageby Cory Fields · c88b1cbf · Aug 22, 2025 · 1 fileMessage 55 · ThinInformational 13Details
Commit message · Cory Fields

tests: get rid of remaining manual critsect usage

55/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
AI analysis · Informational 13/100

This is a test-only cleanup change. It replaces old-style manual lock/unlock macros with safer automatic lock helpers in a single test file. There is no change to the actual Bitcoin Core software that users run, and no security bug is being fixed.

Lower-prioritytests: Add Assertions in reverse_lock tests to exercise thread-safety annotationsby Cory Fields · 3ddd554d · Aug 22, 2025 · 1 fileMessage 60 · AdequateInformational 15Details
Commit message · Cory Fields

tests: Add Assertions in reverse_lock tests to exercise thread-safety annotations

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

This commit only adds two runtime assertions to an existing test file. It does not change any production code, network behavior, wallet logic, or consensus rules. The assertions verify that a helper called reverse_lock correctly releases and re-acquires a mutex during tests. There is no security vulnerability here.

Lower-prioritythreading: remove obsolete critsect macrosby Cory Fields · b537a6a6 · Aug 22, 2025 · 1 fileMessage 45 · ThinInformational 15Details
Commit message · Cory Fields

threading: remove obsolete critsect macros

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

This commit simply deletes two unused C++ macros (ENTER_CRITICAL_SECTION and LEAVE_CRITICAL_SECTION) from a header file. These macros were non-RAII manual locking helpers that had been replaced by safer scoped lock wrappers. There is no runtime behavior change, no bug fix, and no security vulnerability being patched.

Lower-prioritythreading: use a reverse lock rather than manual critsect macrosby Cory Fields · 0d0e0a39 · Aug 22, 2025 · 1 fileMessage 50 · ThinInformational 15Details
Commit message · Cory Fields

threading: use a reverse lock rather than manual critsect macros

No functional change.

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 small internal cleanup in Bitcoin Core's RPC mining code. It replaces manual lock/unlock macros with a safer, automatic 'reverse lock' helper that temporarily releases a lock and re-acquires it when done. The commit message explicitly says 'No functional change,' and the diff shows only a mechanical code-style swap with no behavior change visible.

Lower-prioritydoc: capnproto instruction for Alpine and Archby Sjors Provoost · de65c865 · Aug 21, 2025 · 1 fileMessage 45 · ThinInformational 15Details
Commit message · Sjors Provoost

doc: capnproto instruction for Alpine and Arch

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 updates documentation for building Bitcoin Core on Alpine and Arch Linux. It adds instructions to install the Cap'n Proto library, which is needed for a new optional inter-process communication (IPC) feature, and mentions how to disable that feature if not needed. There are no code changes and no security fix or vulnerability introduced.

Lower-prioritydoc: add capnproto-devel to Fedora build instructionby Sjors Provoost · 49d1a1a3 · Aug 21, 2025 · 1 fileMessage 65 · AdequateInformational 15Details
Commit message · Sjors Provoost

doc: add capnproto-devel to Fedora build instruction

Co-authored-by: maflcko <6399679+maflcko@users.noreply.github.com>

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

This is a one-line documentation update for Fedora Linux build instructions. It adds an extra package name (capnproto-devel) so developers can compile Bitcoin Core's optional inter-process communication (IPC) feature. There is no code change, no bug fix, and no security issue in the commit itself.

Lower-prioritytest: index with an unclean restart after a reorgby Martin Zumsande · a602f6fb · Aug 21, 2025 · 1 fileMessage 82 · StrongInformational 12Details
Commit message · Martin Zumsande

test: index with an unclean restart after a reorg

This test fails without the previous commit.

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

This commit adds a new automated test for Bitcoin Core's coin statistics index. It checks that after a blockchain reorganization and an unclean shutdown, the index correctly rewinds to the last safely saved point. The commit itself is only a test file change and does not modify production code.

Lower-priorityindex: don't commit state in BaseIndex::Rewindby Martin Zumsande · 01b95ac6 · Aug 21, 2025 · 1 fileMessage 80 · StrongModerate 64Details
Commit message · Martin Zumsande

index: don't commit state in BaseIndex::Rewind

The committed state of an index should never
be ahead of the flushed chainstate. Otherwise, in the case
of an unclean shutdown, the blocks necessary to revert
from the prematurely committed state would not be
available, which would corrupt the coinstatsindex in particular.
Instead, the index state will be committed with the next
ChainStateFlushed notification.

80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
AI analysis · Moderate 64/100

This change fixes a crash-and-restart bug in Bitcoin Core's index tracking. Previously, during a blockchain reorganization (a 'reorg'), an index could save its new position to disk before the main chain data was fully flushed. If the computer then shut down uncleanly, the index could point to blocks that had already been pruned away, leaving the index corrupted on restart. The fix removes that premature save so the index only commits its position when the main chain state is safely flushed.