BC
← All projectsBitcoin Core

Bitcoin Core

The Bitcoin network's reference node and wallet implementation.

BitcoinSupply chainNormal
Repository coverage

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

252security candidates603second-pass queue1022AI analyses
206commits · 30 days
491commits · 60 days
1521commits · 180 days
2876commits · 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
915Strong · 80–100
1187Adequate · 60–79
686Thin · 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 Poinsot2248170
Ava Chow15649127064
MarcoFalke40621105074
Lőrinc1772169081
fanquake2271960057
Hennadii Stepanov2081443063
rkrux57944074
Sjors Provoost89824074
Sebastian Falbesoner33717073
David Gumberg55638072
Pieter Wuille95518066
Hodlinator66520076
Analysis record

Published AI watches

Last scanned 27 minutes ago

Informational 15 AI analysisMessage 93 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#35895: refactor: Enable clang-tidy rule to reject anon namespace in header

This is a code cleanup change that turns on a static-analysis rule to prevent a specific C++ coding pattern (anonymous namespaces in header files) and updates two headers to comply. It does not change how Bitcoin Core behaves at runtime an…

No security-relevant code changeNo memory safety, cryptography, consensus, or network changesTooling-only refactor (clang-tidy configuration)
c4fbd3c7by merge-script+9−123 files
No security note in commit
Informational 15 AI analysisMessage 100 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#35630: test: Add importdescriptors rpc error test coverage

This commit only adds new test cases to Bitcoin Core's functional test suite. It does not change any production wallet, node, or RPC code. The tests verify that the importdescriptors RPC reports errors in the right order, rejects bad times…

465196d0by merge-script+77−11 file
No security note in commit
Informational 15 AI analysisMessage 81 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#35180: coins: group private cache helpers

This change is purely a code cleanup: it moves two internal helper functions of a Bitcoin Core cache class into the private section of the class and removes a duplicate 'private:' label. There is no change to what the code does, no bug fix…

c940fd75by merge-script+13−141 file
No security note in commit
Low 29 AI analysisMessage 81 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#35582: rpc: reject null for optional parameters

This Bitcoin Core change tightens how three RPC commands (scantxoutset, scanblocks, deriveaddresses) handle the value null when it is passed for optional parameters. Previously, explicitly passing null could be treated differently from sim…

RPC parameter validation changeNull value handling changeAddition of explicit error checks for missing required contextual parameters
3db96eb5by merge-script+18−75 files
No security note in commit
Informational 15 AI analysisMessage 57 · Thin
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

refactor: Enable misc-definitions-in-headers

This commit is a code cleanup: it turns on a clang-tidy style check called 'misc-definitions-in-headers' and suppresses that check around a large inline implementation block in a benchmark header. There is no change to Bitcoin's runtime be…

fa93132dby MarcoFalke+3−02 files
No security note in commit
Informational 15 AI analysisMessage 85 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

refactor: Enable clang-tidy rule to reject anon namespace in header

This commit only changes a linting configuration file for the project's code style checker. It enables a rule that prevents anonymous namespaces from being used in header files, which is a code-quality and build-hygiene practice. There is …

No security-relevant signals in the diff or commit message.Change is purely a static-analysis/linting configuration update.
fa5ca877by MarcoFalke+2−11 file
No security note in commit
Informational 15 AI analysisMessage 62 · Adequate
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

refactor: Use C++20 std::identity over IntIdentity

This commit is a straightforward code cleanup: it replaces a small custom helper named IntIdentity with the standard C++20 std::identity from the <functional> header. The behavior of the ConvertBits function is unchanged; only the implemen…

fafe5042by MarcoFalke+4−111 file
No security note in commit
Informational 15 AI analysisMessage 87 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

test: test the result order of a multiple import request is correct

This commit only adds a new automated test to Bitcoin Core. It checks that when a user asks the wallet to import multiple descriptors at once, the list of results comes back in the same order as the original request, including any error me…

3ac8b806by Pol Espinasa+40−01 file
No security note in commit
Informational 15 AI analysisMessage 87 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

test: test invalid or missing timestamp throws importdescriptors

This commit only adds new automated tests for the Bitcoin Core wallet's importdescriptors RPC. It checks that the command correctly rejects requests with a missing or invalid timestamp. No production wallet code is changed, so this cannot …

No changes to consensus, networking, wallet logic, or cryptographyOnly functional test code is modifiedAdded assertions are for expected error handling paths
e4732bf0by Pol Espinasa+28−11 file
No security note in commit
Informational 15 AI analysisMessage 80 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

refactor: Remove unused #include in common/system

This is a minor code cleanup that removes one unused header file include and swaps another for a more specific one. It does not change any program behavior or fix any security issue.

fa7304f3by MarcoFalke+1−22 files
No security note in commit
Informational 15 AI analysisMessage 50 · Thin
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

iwyu: Fix warnings in `src/consensus` and treat them as errors

This commit is a routine code cleanup: it adjusts which C++ header files are included in several consensus-related source files and turns on a stricter compiler hygiene check (Include What You Use, or IWYU) for the src/consensus directory.…

13b53f8bby Hennadii Stepanov+42−79 files
No security note in commit
Informational 15 AI analysisMessage 55 · Thin
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

fuzz: don't connman.ReceiveMsgFrom oversized msg

This is a small fix to a Bitcoin Core fuzz test (an automated internal testing harness), not to the live network code. The fuzzer was sometimes creating fake P2P messages larger than the real protocol allows and passing them into a test he…

Test-only fuzz harness hardeningOversized message guard added before ReceiveMsgFrom() in fuzz targetNo change to production P2P message acceptance logic
bb19f1daby Greg Sanders+5−01 file
No security note in commit
Informational 15 AI analysisMessage 68 · Adequate
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

kernel, node: colocate dbcache bounds

This commit is a small code cleanup: it moves two constants that define the minimum and maximum size of the database cache (dbcache) into a shared kernel header so that both the node and kernel code use the same limits. There is no change …

8aa21e11by Lőrinc+7−74 files
No security note in commit
Informational 15 AI analysisMessage 68 · Adequate
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

ci, iwyu: Enforce warning-free `src/common`

This is a routine code cleanup commit. It adjusts which C++ header files are included in the `src/common` part of Bitcoin Core so that an automated tool called Include What You Use (IWYU) reports no warnings. It also tells the continuous i…

50145f62by Hennadii Stepanov+75−3822 files
No security note in commit
Informational 15 AI analysisMessage 55 · Thin
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

fuzz: Rework rpc fuzz target

This commit rewrites an internal fuzz-testing harness for Bitcoin Core's RPC interface. It changes how fake RPC arguments are generated so the test can feed more realistic JSON data (numbers, booleans, nested arrays/objects, raw JSON) dire…

No changes to runtime consensus, networking, wallet, or RPC server logicOnly src/test/fuzz/rpc.cpp is modifiedChange improves fuzzer fidelity by removing RPCConvertValues string-to-JSON conversion
fa895bb7by MarcoFalke+64−481 file
No security note in commit
Informational 20 AI analysisMessage 73 · Adequate
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

wallet: Remove meaningless bool fallback in FundTransaction

This commit removes an old backward-compatibility feature in Bitcoin Core's wallet RPC command `fundrawtransaction`. Previously, callers could pass a plain `true` or `false` as the second argument, which was silently ignored. Now, passing …

Removal of a no-op backward-compatibility code path that silently accepted arbitrary boolean valuesStricter RPC input validation: bare booleans now rejected with a JSON type errorNo memory safety, cryptographic, or consensus changes observed
fa7fe798by MarcoFalke+60−652 files
No security note in commit
Informational 15 AI analysisMessage 35 · Opaque
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

guix: consolidate config flags

This commit is a housekeeping change to Bitcoin Core's Guix build scripts. It only reorders and consolidates CMake configuration flags, and adds a couple of disabled test/build options. There is no change to the actual Bitcoin software cod…

683ae4c5by fanquake+16−146 files
No security note in commit
Informational 17 AI analysisMessage 45 · Thin
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

gui: Menu action for exporting a watchonly wallet

This commit adds a new menu item in the Bitcoin Core desktop wallet that lets users export a 'watch-only' copy of their wallet. A watch-only wallet can see transactions and balances but cannot spend funds. The change only wires up an exist…

No security-relevant signals detected in the diffNew GUI feature exposing existing wallet export functionalityAction is disabled for wallets with private keys disabled
cb51f97fby Ava Chow+30−04 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.

AI review queuedrpc: fix race condition in gettxoutsetinfoby w0xlt · 5e77072f · Mar 11, 2026 · 1 fileMessage 76 · AdequateLow 32Details
Commit message · w0xlt

rpc: fix race condition in gettxoutsetinfo

Fix an assertion failure in gettxoutsetinfo (issue #34263) caused by
capturing the best block before releasing cs_main, then checking it
against a potentially newer best block in GetUTXOStats().

Remove the early pindex capture since ComputeUTXOStats() independently
fetches the current best block under lock. Use stats.hashBlock and
stats.nHeight (the actual computed values) instead of the potentially
stale pindex when building the response.

76/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
second-pass: broader security terminology
AI analysis · Low 32/100

This patch fixes a crash in a Bitcoin Core RPC command called gettxoutsetinfo. The command reports statistics about the set of unspent transaction outputs (UTXOs). The bug was a timing issue: the code briefly noted the current best block while holding one lock, then released that lock and later compared the saved block to a newer best block. If the blockchain advanced in between, an internal consistency check could fail and crash the node. The fix removes the stale saved block reference and instead uses the block that the statistics were actually computed against.

AI review queuedfuzz: Use NodeClockContextby MarcoFalke · eeeeb2a0 · Mar 10, 2026 · 25 filesMessage 68 · AdequateInformational 15Details
Commit message · MarcoFalke

fuzz: Use NodeClockContext

This refactor does not change any behavior.

However, it is nice to know that no global mocktime leaks from the fuzz
init step to the first fuzz input, or from one fuzz input execution to
the next.
With the clock context, the global is re-set at the end of the context.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
fuzzing or regression evidencesigning or wallet pathsecond-pass: unusually broad changesecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit is a test-only code cleanup. It replaces direct calls to a global mock-time setter with a local clock-context object in Bitcoin Core's fuzz tests. The change does not alter how the software behaves and only affects internal testing code, not the live Bitcoin network or user wallets.

AI review queuedqt: 31.0 translations updateby Hennadii Stepanov · d21afb29 · Mar 10, 2026 · 101 filesMessage 45 · ThinInformational 15Details
Commit message · Hennadii Stepanov

qt: 31.0 translations update

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
second-pass: unusually broad change
AI analysis · Informational 15/100

This commit is a routine update of translated user-interface text for the Bitcoin Core Qt wallet in preparation for version 31.0. It adds, removes, and revises translated strings across many language files and registers two new language files (Yoruba and a generic Chinese locale) in the resource list. There is no executable code change and no security relevance.

AI review queuedwalletdb: hash pubkey/privkey in one shot to avoid leaking secret databy Sebastian Falbesoner · 501a3dd4 · Mar 8, 2026 · 1 fileMessage 85 · StrongLow 37Details
Commit message · Sebastian Falbesoner

walletdb: hash pubkey/privkey in one shot to avoid leaking secret data

Avoid storing the privkey in a vector, which could linger in memory
and potentially leak sensitive data. An alternative approach is to
use `secure_allocator` for the `std::vector` instances, but this
commit has the advantage of also deduplicating code at the same shot.

Thanks to @theuni for suggesting this.

85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Low 37/100

This change is a defensive cleanup in Bitcoin Core's wallet code. Previously, when saving or loading private keys, the code temporarily copied the public and private keys together into an ordinary memory buffer (a std::vector) before hashing them. That buffer could remain in memory longer than necessary, creating a small window where sensitive private-key material might be exposed through memory dumps, core dumps, or swap. The patch removes that temporary buffer and instead hashes the keys directly in one step. It does not fix an active exploit or reported breach, but it reduces a real, if narrow, information-disclosure risk.

AI review queuedrefactor: improve benchmark setup and execution for various testsby Lőrinc · 8825051e · Mar 8, 2026 · 5 filesMessage 95 · StrongInformational 15Details
Commit message · Lőrinc

refactor: improve benchmark setup and execution for various tests

Note that `make_hard_case` already clears the UTXO pool in `coin_selection.cpp`.

./build/bin/bench_bitcoin -filter='^(BnBExhaustion|AddrManAddThenGood|DeserializeBlockTest|DeserializeAndCheckBlockTest|CheckBlockTest|LoadExternalBlockFile|FindByte|WalletCreatePlain|WalletCreateEncrypted|WalletLoadingDescriptors)$'

| ns/op | op/s | err% | total | benchmark
|--------------------:|--------------------:|--------:|----------:|:----------
| 15,088,500.00 | 66.28 | 0.2% | 0.17 | `AddrManAddThenGood`
| 179,208.00 | 5,580.11 | 2.0% | 0.00 | `BnBExhaustion`

| ns/block | block/s | err% | total | benchmark
|--------------------:|--------------------:|--------:|----------:|:----------
| 318,166.00 | 3,143.01 | 3.5% | 0.00 | `CheckBlockTest`
| 886,750.00 | 1,127.71 | 0.8% | 0.01 | `DeserializeBlockTest`

| ns/op | op/s | err% | total | benchmark
|--------------------:|--------------------:|--------:|----------:|:----------
| 42.00 | 23,809,523.81 | 2.4% | 0.00 | `FindByte`
| 5,473,208.00 | 182.71 | 0.4% | 0.06 | `LoadExternalBlockFile`
| 584,168,041.00 | 1.71 | 0.3% | 6.43 | `WalletCreateEncrypted`
| 168,040,458.00 | 5.95 | 1.1% | 1.85 | `WalletCreatePlain`
| 155,446,625.00 | 6.43 | 0.7% | 0.78 | `WalletLoadingDescriptors`

| ns/op | op/s | err% | total | benchmark
|--------------------:|--------------------:|--------:|----------:|:----------
| 14,894,917.00 | 67.14 | 0.3% | 0.16 | `AddrManAddThenGood`
| 177,667.00 | 5,628.51 | 1.3% | 0.00 | `BnBExhaustion`

| ns/block | block/s | err% | total | benchmark
|--------------------:|--------------------:|--------:|----------:|:----------
| 313,791.00 | 3,186.83 | 3.8% | 0.00 | `CheckBlockTest`
| 888,208.00 | 1,125.86 | 0.7% | 0.01 | `DeserializeBlockTest`

| ns/op | op/s | err% | total | benchmark
|--------------------:|--------------------:|--------:|----------:|:----------
| 41.00 | 24,390,243.90 | 2.4% | 0.00 | `FindByte`
| 5,445,208.00 | 183.65 | 1.0% | 0.06 | `LoadExternalBlockFile`
| 581,800,500.00 | 1.72 | 0.4% | 6.40 | `WalletCreateEncrypted`
| 166,035,583.00 | 6.02 | 0.5% | 1.82 | `WalletCreatePlain`
| 153,574,792.00 | 6.51 | 0.1% | 0.77 | `WalletLoadingDescriptors`

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
second-pass: broader security terminology
AI analysis · Informational 15/100

This commit is a code cleanup that changes how several performance benchmarks are set up and run. It does not alter the behavior of the actual Bitcoin Core software that users run, only the internal testing/benchmarking code. There is no security issue here.

AI review queuedbench: add fluent API for untimed setup steps in `nanobench`by Lőrinc · 83b8528d · Mar 8, 2026 · 1 fileMessage 95 · StrongInformational 15Details
Commit message · Lőrinc

bench: add fluent API for untimed setup steps in `nanobench`

Some benchmarks need per-epoch state reset so every measured run does the same work.
Add `Bench::setup(...).run(...)` for untimed per-epoch setup.
The existing `run()` now delegates to `runImpl()` with an empty setup lambda, keeping the old API unchanged.

This vendors the upstream change from `martinus/nanobench`.
The upstream PR also adds tests that verify setup is excluded from timing and runs once before each epoch's iterations.
Those tests are not copied here because wiring them into `src/bench/nanobench.h` outside the benchmarking setup would be awkward.

The `Default is 1ms, so we are mostly relying ...` comment update matches current upstream `nanobench` master.

-------

Running a few benchmarks (which will be migrated in the next commit to use the new setup method) several times to showcase the spread:

./build/bin/bench_bitcoin -filter='^(BnBExhaustion|AddrManAddThenGood|DeserializeBlockTest|DeserializeAndCheckBlockTest|CheckBlockTest|LoadExternalBlockFile|FindByte|WalletCreatePlain|WalletCreateEncrypted|WalletLoadingDescriptors)$'

| ns/op | op/s | err% | total | benchmark
|--------------------:|--------------------:|--------:|----------:|:----------
| 26,400,542.00 | 37.88 | 0.4% | 0.29 | `AddrManAddThenGood`
| 189,075.00 | 5,288.91 | 0.4% | 0.01 | `BnBExhaustion`

| ns/block | block/s | err% | total | benchmark
|--------------------:|--------------------:|--------:|----------:|:----------
| 1,237,000.00 | 808.41 | 2.4% | 0.01 | `DeserializeAndCheckBlockTest`
| 893,333.00 | 1,119.40 | 0.6% | 0.01 | `DeserializeBlockTest`

| ns/op | op/s | err% | total | benchmark
|--------------------:|--------------------:|--------:|----------:|:----------
| 31.62 | 31,622,370.70 | 0.2% | 0.01 | `FindByte`
| 5,506,875.00 | 181.59 | 1.4% | 0.06 | `LoadExternalBlockFile`
| 593,480,333.00 | 1.68 | 0.4% | 6.53 | `WalletCreateEncrypted`
| 174,305,167.00 | 5.74 | 0.7% | 1.93 | `WalletCreatePlain`
| 160,833,875.00 | 6.22 | 0.2% | 0.80 | `WalletLoadingDescriptors`

| ns/op | op/s | err% | total | benchmark
|--------------------:|--------------------:|--------:|----------:|:----------
| 26,005,125.00 | 38.45 | 1.3% | 0.29 | `AddrManAddThenGood`
| 181,909.67 | 5,497.23 | 0.1% | 0.01 | `BnBExhaustion`

| ns/block | block/s | err% | total | benchmark
|--------------------:|--------------------:|--------:|----------:|:----------
| 1,223,000.00 | 817.66 | 2.8% | 0.01 | `DeserializeAndCheckBlockTest`
| 892,917.00 | 1,119.92 | 0.7% | 0.01 | `DeserializeBlockTest`

| ns/op | op/s | err% | total | benchmark
|--------------------:|--------------------:|--------:|----------:|:----------
| 31.58 | 31,660,608.70 | 0.5% | 0.01 | `FindByte`
| 5,612,750.00 | 178.17 | 1.1% | 0.06 | `LoadExternalBlockFile`
| 594,012,250.00 | 1.68 | 0.2% | 6.53 | `WalletCreateEncrypted`
| 174,668,334.00 | 5.73 | 0.8% | 1.92 | `WalletCreatePlain`
| 158,494,375.00 | 6.31 | 0.3% | 0.79 | `WalletLoadingDescriptors`

95/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Mentions testing or verification
Why it was queued
second-pass: broader security terminology
AI analysis · Informational 15/100

This commit is a clean, non-functional change to Bitcoin Core's internal benchmarking header. It adds a new fluent API (bench.setup(...).run(...)) so benchmark authors can run an untimed setup step before each timed epoch. The old run(...) API is preserved by delegating to a new internal runImpl(...) with an empty setup lambda. There is no change to consensus, networking, wallet logic, or any runtime node behavior.

AI review queuedtest: Fix intermittent issue in wallet_assumeutxo.pyby MarcoFalke · faa68ed4 · Mar 4, 2026 · 2 filesMessage 72 · AdequateInformational 15Details
Commit message · MarcoFalke

test: Fix intermittent issue in wallet_assumeutxo.py

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

This commit fixes a flaky automated test in Bitcoin Core. It replaces a complicated node restart/sync dance with a simpler helper that manually copies blocks between test nodes via RPC. There is no change to production code, no security fix, and no vulnerability.

AI review queuedprevector: simplify `operator==`by Daniel Pfeifer · 2678abe9 · Mar 4, 2026 · 1 fileMessage 35 · OpaqueInformational 15Details
Commit message · Daniel Pfeifer

prevector: simplify `operator==`

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 is a small code cleanup in Bitcoin Core. It replaces a hand-written equality check for a custom vector-like container (`prevector`) with a standard C++ library function (`std::ranges::equal`). There is no security-relevant change visible in the diff, and no security context is provided by the commit or any supplied references.

AI review queueddoc: add release notesby ismaelsadeeq · d8f4e7ca · Mar 2, 2026 · 1 fileMessage 28 · OpaqueInformational 15Details
Commit message · ismaelsadeeq

doc: add release notes

28/100 · OpaqueMessage clarity
✓ Subject identifies a change! No meaningful explanatory body
Why it was queued
documentation-only discountsecond-pass: opaque commit message
AI analysis · Informational 15/100

This commit only adds documentation (release notes) describing a prior change. It does not modify any executable code, network behavior, or security logic. There is no security issue in this commit itself.

AI review queuedpolicy: update `AreInputsStandard` to return error stringby ismaelsadeeq · d2716e9e · Mar 2, 2026 · 9 filesMessage 85 · StrongInformational 19Details
Commit message · ismaelsadeeq

policy: update `AreInputsStandard` to return error string

This commit renames AreInputsStandard to ValidateInputsStandardness.

ValidateInputsStandardness now returns valid TxValidationState if all inputs
(scriptSigs) use only standard transaction forms else returns invalid
TxValidationState which states why an input is not standard.

85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
Why it was queued
defensive validationsigning or wallet pathsecond-pass: near security thresholdsecond-pass: security-sensitive path
AI analysis · Informational 19/100

This commit renames a Bitcoin Core internal function from AreInputsStandard to ValidateInputsStandardness and changes it from returning true/false to returning a structured result that includes an explanation of why an input was rejected. It does not change what transactions are accepted or rejected; it only improves the error messages returned to users and developers. There is no security vulnerability being fixed here.

AI review queuedtest: avoid interface_ipc.py race and null pointer dereferenceby Ryan Ofsky · 1c1de334 · Mar 2, 2026 · 1 fileMessage 100 · StrongInformational 16Details
Commit message · Ryan Ofsky

test: avoid interface_ipc.py race and null pointer dereference

Avoid race condition in run_deprecated_mining_test caused by creating and
immediately destroying an unused worker thread. This leads to test failures
reported by maflcko in #34711

100/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✓ Links an issue, advisory, or supporting reference
Why it was queued
second-pass: broader security terminology
AI analysis · Informational 16/100

This is a fix for a flaky Bitcoin Core functional test, not a security vulnerability in the live Bitcoin network or wallet software. The test was creating and immediately destroying an unused worker thread, which could trigger a race condition or null pointer dereference during testing. The patch avoids the problematic helper function and directly creates the needed connection. It does not affect production code paths.

AI review queuedtest: improve `wallet_backup` testby rkrux · 5c005363 · Mar 2, 2026 · 1 fileMessage 72 · AdequateInformational 15Details
Commit message · rkrux

test: improve `wallet_backup` test

Remove the unused functions that were ported many years back.

72/100 · AdequateMessage clarity
✓ Descriptive subject✓ Uses a recognizable type or scope✓ Provides an explanatory body✓ Mentions testing or verification
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit only cleans up an unused helper functions in a test file and fixes a grammar typo in a comment. It does not change any production code, network behavior, or wallet logic, so it has no security relevance.

AI review queuedtest: improve `wallet_assumeutxo` func testby rkrux · 04d95157 · Mar 2, 2026 · 1 fileMessage 100 · StrongInformational 15Details
Commit message · rkrux

test: improve `wallet_assumeutxo` func test

Reduce the number of blocks that need to be generated before pruning
the blockchain.

Unload the wallet that was restored in a prior test because it is not
needed anymore after the test.

Both the above steps should reduce the number of chain notifications
that need to be processed by the wallet(s) when an erroneous scenario
of restoring wallet is checked.

100/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Mentions testing or verification
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit only changes a single functional test file. It reduces the number of blocks generated in a test from 500 to 200 and unloads a wallet earlier to make the test run faster and produce fewer chain notifications. There is no change to production code, no bug fix, and no security-relevant behavior change.

AI review queueddoc: Improve dependencies.md IPC documentationby Ryan Ofsky · b87a1c27 · Mar 1, 2026 · 1 fileMessage 76 · AdequateInformational 15Details
Commit message · Ryan Ofsky

doc: Improve dependencies.md IPC documentation

Improve dependencies.md to document IPC dependencies better:

- Link to native_capnp.mk file not capnp.mk file so it's possible to see what
version of Cap'n Proto is being used in release binaries. This is important
since #31895 dropped the "Version Used" column and the capnp.mk file does not
include version number.
- Indicate Capn"Proto is used for IPC and link to multiprocess.md documenting
the feature.
- Link to correct PR requiring Cap'n Proto 0.7.1. Previous link was
pointing at PR which required 0.7.0.
- Mention libmultiprocess as a dependency even though it is included as a git
subtree and can be built as a cmake subproject. Libmultiprocess still needs
to be built separately when cross compiling, and is useful to build separately
when developing, and is still a depends package.

Based on 2cf352fd8e6a77003e38d954b6c879b20d4b960a from #33623 by willcl-ark
which made similar changes in the 29.x branch.

76/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
documentation-only discountsecond-pass: broader security terminology
AI analysis · Informational 15/100

This commit is a documentation-only update to the Bitcoin Core dependencies guide. It fixes links, adds a missing dependency entry for libmultiprocess, and clarifies that Cap'n Proto is used for inter-process communication (IPC). No code was changed, so there is no direct security impact.

AI review queuedrefactor: Add ExecuteHTTPRPC functionby Ryan Ofsky · df76891a · Feb 27, 2026 · 4 filesMessage 70 · AdequateInformational 13Details
Commit message · Ryan Ofsky

refactor: Add ExecuteHTTPRPC function

Add ExecuteHTTPRPC to provide a way to execute an HTTP request without relying
on HTTPRequest and libevent types.

Behavior is not changing in any way, this is just moving code. This commit may
be easiest to review using git's --color-moved option.

70/100 · AdequateMessage clarity
✓ Descriptive subject✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Why it was queued
parser or protocol pathsecond-pass: security-sensitive path
AI analysis · Informational 13/100

This commit is a code cleanup that splits the existing JSON-RPC request handling into a new helper function called ExecuteHTTPRPC. The commit message explicitly says behavior is not changing, and the diff shows the same logic being moved around rather than added or removed. There is no indication of a security fix or vulnerability.

AI review queuedfuzz: wallet: add target for `MigrateToDescriptor`by brunoerg · 779e7825 · Feb 27, 2026 · 1 fileMessage 60 · AdequateInformational 14Details
Commit message · brunoerg

fuzz: wallet: add target for `MigrateToDescriptor`

60/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Mentions testing or verification! No meaningful explanatory body
Why it was queued
fuzzing or regression evidencesigning or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 14/100

This commit adds a new automated fuzz test for Bitcoin Core's wallet migration feature. It does not change production wallet code; it only adds test code that feeds random inputs to the existing migration function to help find bugs. There is no indication this commit fixes or introduces a security vulnerability.

AI review queuedwallet: Drain validation interface queue after notifications disconnectby Ava Chow · 98e8af4b · Feb 27, 2026 · 2 filesMessage 73 · AdequateLow 40Details
Commit message · Ava Chow

wallet: Drain validation interface queue after notifications disconnect

When unloading a wallet, there may be unexecuted callbacks in the
validation interface queue that can still execute after we have
completed all of the other wallet shutdown tasks. Instead of letting
these run in the background, once the notifications are disconnected,
wait for the queue to drain before continuing with wallet shutdown.

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 · Low 40/100

This change fixes a wallet shutdown timing issue in Bitcoin Core. Previously, when a wallet was unloaded, some background blockchain notifications could still run after the wallet had already finished shutting down. The patch makes the wallet explicitly wait for those pending notifications to finish before completing shutdown, preventing potential crashes or use-after-free problems.

AI review queueddoc: Use relative markdown linksby MarcoFalke · fa9d0623 · Feb 27, 2026 · 7 filesMessage 45 · ThinInformational 15Details
Commit message · MarcoFalke

doc: Use relative markdown links

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing or wallet pathdocumentation-only discountsecond-pass: security-sensitive path
AI analysis · Informational 15/100

This commit only changes documentation links from absolute GitHub URLs to relative markdown links. It does not modify any executable code, network behavior, cryptography, wallet logic, or configuration handling. There is no security relevance.

AI review queuedtest: add test for rebroadcast of transaction received via p2pby Martin Zumsande · 73e38531 · Feb 27, 2026 · 1 fileMessage 95 · StrongInformational 15Details
Commit message · Martin Zumsande

test: add test for rebroadcast of transaction received via p2p

The wallet doesn't only rebroadcast transactions it created, but
also relevant transactions received via p2p. Since this is not
self-evident, add test coverage for it.

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

This commit only adds a new test to Bitcoin Core. It checks that the wallet software will re-broadcast a transaction it learned about from another peer, not just transactions it created itself. There is no change to production code, so it does not fix or introduce a security issue on its own.

AI review queuedtest: refactor, decouple HasReason from test framework machineryby furszy · d9c6769d · Feb 26, 2026 · 12 filesMessage 95 · StrongInformational 15Details
Commit message · furszy

test: refactor, decouple HasReason from test framework machinery

Avoid providing the entire unit test framework dependency to tests that only
require access to the HasReason utility class.

E.g. reverselock_tests.cpp, sync_tests.cpp, util_check_tests.cpp, util_string_tests.cpp,
and script_parse_tests.cpp only require access to HasReason and nothing else.

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
second-pass: broader security terminology
AI analysis · Informational 15/100

This is a harmless code cleanup in Bitcoin Core's test suite. It moves a small helper class called HasReason from a large test-framework header into a smaller, more focused header so that simple unit tests don't need to pull in the entire testing framework. There is no change to how the software behaves in production, no bug fix, and no security issue.

AI review queuedkernel: Update headerssync paramsby Ava Chow · 58c2e23f · Feb 25, 2026 · 2 filesMessage 35 · OpaqueInformational 15Details
Commit message · Ava Chow

kernel: Update headerssync params

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 updates the internal tuning numbers used by Bitcoin Core when a new node downloads block headers from the network. It pushes the target date forward by six months and refreshes the generated parameters for mainnet, testnet, testnet4, and signet. There is no bug fix, behavior change, or security patch visible in the diff—it is routine parameter maintenance.

AI review queuedkernel: update chainTxDataby Ava Chow · cf261b07 · Feb 25, 2026 · 1 fileMessage 35 · OpaqueInformational 15Details
Commit message · Ava Chow

kernel: update chainTxData

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 updates routine network statistics in Bitcoin Core's chain parameters. It refreshes the recorded number of transactions, timestamps, and transaction rates for mainnet, testnet, signet, and regtest networks based on recent blockchain data. There is no security issue here—this is normal maintenance data.

AI review queuedSquashed 'src/ipc/libmultiprocess/' changes from 1fc65008f7d..1868a84451fby Ryan Ofsky · b7ca3bf0 · Feb 25, 2026 · 12 filesMessage 100 · StrongModerate 57Details
Commit message · Ryan Ofsky

Squashed 'src/ipc/libmultiprocess/' changes from 1fc65008f7d..1868a84451f

1868a84451f Merge bitcoin-core/libmultiprocess#245: type-context.h: Extent cancel_mutex lock to prevent theoretical race
fd4a90d3103 Merge bitcoin-core/libmultiprocess#244: ci: suppress two tidy lint issues
16dfc368640 ci: avoid bugprone-unused-return-value lint in test
dacd5eda464 ci: suppress nontrivial-threadlocal lint in proxy.cpp
ef96a5b2be2 doc: Comment cleanups after #240
e0f1cd76219 type-context.h: Extent cancel_mutex lock to prevent theoretical race
290702c74ce Merge bitcoin-core/libmultiprocess#240: Avoid errors from asynchronous (non-c++) clients
3a69d4755af Merge bitcoin-core/libmultiprocess#241: doc: Bump version number v7 -> v8
0174450ca2e Prevent crash on unclean disconnect if abandoned IPC call returns interface pointer
ddb5f74196f Allow simultaneous calls on same Context.thread
c4762c7b513 refactor: Add ProxyServer<Thread>::post() method
0ade1b40ac5 doc: Bump version number

git-subtree-dir: src/ipc/libmultiprocess
git-subtree-split: 1868a84451fe1b6a00116375a5f717230bb2533e

100/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
second-pass: broader security terminology
AI analysis · Moderate 57/100

This commit updates Bitcoin Core's internal IPC helper library (libmultiprocess) to fix crash and race-condition bugs that can happen when an IPC client disconnects while a server call is still running. It also removes an earlier 'thread busy' limitation so multiple calls can now be queued on the same worker thread. The changes are defensive hardening of inter-process communication, not a new user-facing feature.

AI review queuedthreadpool: guard against Start-Stop raceby furszy · 8cd4a436 · Feb 24, 2026 · 1 fileMessage 68 · AdequateLow 42Details
Commit message · furszy

threadpool: guard against Start-Stop race

Stop() has two windows where Start() could cause troubles:

1) m_workers is temporarily empty while workers are being joined,
this creates a window where Start() could slip through and reset
m_interrupt to false, preventing the old workers from exiting and
causing a deadlock.

2) Start() could be called after workers are joined but before the
empty() sanity check on m_work_queue, causing a crash.

Fix both races by keeping m_interrupt set for the entire duration
of Stop(), so any concurrent Start() call is rejected until all
workers have exited.

Co-authored-by: Hodlinator <172445034+hodlinator@users.noreply.github.com>

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

This patch fixes a timing bug in Bitcoin Core's internal worker-thread pool. If someone started the thread pool while it was still stopping, the program could freeze (deadlock) or crash. The fix keeps the pool marked as 'stopping' until every worker thread has fully exited, so a new start request is rejected during that window.

AI review queuedclusterlin: rescale costs (preparation)by Pieter Wuille · 4eefdfc5 · Feb 24, 2026 · 4 filesMessage 35 · OpaqueInformational 15Details
Commit message · Pieter Wuille

clusterlin: rescale costs (preparation)

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 is a non-security internal tuning change for Bitcoin Core's transaction mempool linearization logic. It multiplies several cost constants by 38 to prepare for future algorithm changes, and updates corresponding test/fuzz thresholds. There is no bug fix, no vulnerability, and no user-facing behavior change beyond slightly different internal cost budgets.