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 queue603AI analyses
210commits · 30 days
492commits · 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 Poinsot2245170
Ava Chow15649104064
MarcoFalke4062159074
Lőrinc1772136081
fanquake2271923057
Hennadii Stepanov2081427063
rkrux57944074
Sjors Provoost89813074
Sebastian Falbesoner33711073
David Gumberg55637072
Pieter Wuille9556066
Hodlinator66517076
Analysis record

Published AI watches

Last scanned 48 minutes ago

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 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 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 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
Informational 19 AI analysisMessage 50 · Thin
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

gui: Adds option to not load the wallet after migration

This commit adds a user-facing checkbox in the Bitcoin Core desktop wallet that lets someone choose whether to automatically load a wallet after migrating it from an older format. Previously the wallet was always loaded. The change is a us…

No security-relevant signal: change is a feature/usability additionNo memory safety, cryptographic, consensus, or network changesNo privilege boundary crossed
492a715dby Pol Espinasa+20−104 files
No security note in commit
Informational 15 AI analysisMessage 100 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

refactor: Make all `const static` class members `constexpr`

This commit is a code cleanup that changes many internal class constants from 'static const' to 'static constexpr'. In modern C++, constexpr constants are automatically inlined and avoid certain linker errors when used in specific ways. Th…

05c35c40by rustaceanrob+38−4024 files
No security note in commit
Informational 15 AI analysisMessage 83 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

fuzz: populate wallet TXO index in wallet_create_transaction

This is a fix to a Bitcoin Core fuzz test (an automated testing harness), not to the main wallet code that real users run. The test was inserting fake wallet transactions in a way that skipped updating an internal index called m_txos. Beca…

Test-only change in fuzz harnessFixes internal test-state consistency, not production wallet behaviorNo validation, consensus, or P2P networking changes
1eac6a72by frankomosh+1−01 file
No security note in commit
Informational 15 AI analysisMessage 83 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

scripted-diff: Use long form of shell options in Guix scripts

This commit is a purely cosmetic change in Bitcoin Core's Guix build scripts. It replaces the short shell command 'set -e' with its long-form equivalent 'set -o errexit'. Both forms do exactly the same thing: they make the script exit imme…

2cb3bfa8by Hennadii Stepanov+6−66 files
No security note in commit
Informational 15 AI analysisMessage 45 · Thin
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

guix: Add copyright headers to Guix scripts

This commit only adds or updates copyright and license header comments at the top of several helper scripts used for Bitcoin Core's Guix build process. It does not change any executable code, logic, or behavior. There is no security risk.

711eb10fby Hennadii Stepanov+20−27 files
No security note in commit
Low 28 AI analysisMessage 96 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Squashed 'src/secp256k1/' changes from bd0287d650..d2d04864ef

This commit updates the secp256k1 cryptographic library inside Bitcoin Core to a newer version. The main change is adding support for a new optional feature called 'Silent Payments' (BIP352), which is a privacy-enhancing way to receive Bit…

New cryptographic module added (Silent Payments / BIP352)Field-element equality check magnitude bound corrected from 31 to 30X-only public key even-Y invariant enforced in extrakeys module
a33f2405by fanquake+13939−13434 files
No security note in commit
Informational 15 AI analysisMessage 90 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

scripted-diff: Use C.UTF-8 locale in Guix scripts

This commit is a routine cleanup that changes the locale setting in Bitcoin Core's Guix build scripts from the old ASCII-only 'C' locale to the modern 'C.UTF-8' locale. It is not a security fix and does not change any behavior that could b…

8916f796by Hennadii Stepanov+15−1515 files
No security note in commit
Informational 19 AI analysisMessage 68 · Adequate
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

p2p: Assume v2transport for addresses from seeds

This change makes Bitcoin Core assume that hard-coded and DNS seed nodes support the newer BIP324 encrypted transport (v2) when first connecting. If the guess is wrong, the software falls back to the older v1 protocol automatically. It is …

Adds NODE_P2P_V2 to assumed service flags for seed-derived addressesFallback to v1 transport exists if the v2 assumption is wrongNo input validation, memory safety, or cryptographic changes
cf0f2aeaby Martin Zumsande+10−22 files
No security note in commit
Informational 16 AI analysisMessage 75 · Adequate
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

qt, test: Enable tests on macOS with `minimal` QPA plugin

This commit removes workarounds that skipped three Bitcoin Core Qt test suites on macOS when using the 'minimal' Qt platform plugin. The previous commit fixed the underlying crash cause, so these tests can now run. It is a test-infrastruct…

No security-relevant code change in the diff itselfReferences a prior crash fix, but this commit only removes test skipsNo input handling, cryptography, networking, consensus, or wallet logic modified
fd59d68cby Hennadii Stepanov+0−343 files
No security note in commit
Informational 15 AI analysisMessage 85 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

refactor: simplify adding SipHash-1-3-UJ

This is a code cleanup (refactor) that moves the internal SipHash mixing steps into shared helper methods. It does not change how Bitcoin hashes data, how many rounds are run, or any user-visible behavior. There is no security bug being fi…

25bfca06by Lőrinc+74−1222 files
No security note in commit
Informational 21 AI analysisMessage 68 · Adequate
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

crypto: add generic SipHash-1-3-UJ

This commit adds a new, weaker variant of the SipHash algorithm inside Bitcoin Core's cryptography module. It is explicitly designed for low-security uses such as internal hash tables, not for protecting funds or network messages. The code…

New weaker cryptographic primitive added (SipHash-1-3 vs. standard SipHash-2-4)Explicit unpadded input design removes length-commitment paddingJumbo 256-bit blocks increase attacker control within a single round
c2d7931bby Pieter Wuille+103−02 files
No security note in commit
Informational 15 AI analysisMessage 78 · Adequate
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

bench: add fixed-width SipHash benchmarks

This commit only adds new performance benchmark tests for a hash function called SipHash. It does not change any production code that handles Bitcoin transactions, networking, or wallet data. There is no security issue here.

7ff55cc6by Lőrinc+49−31 file
No security note in commit
Informational 15 AI analysisMessage 80 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

crypto: add fixed-width SipHash-1-3-UJ

This commit adds two new shortcut methods for computing a specific SipHash variant on fixed-size inputs. It is a pure performance/ergonomics addition: the new methods copy the hasher's internal state before operating, so they do not alter …

a0ccd4adby Pieter Wuille+21−01 file
No security note in commit
Informational 15 AI analysisMessage 90 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

test: add shared SipHash vectors

This commit only adds new test data and test code for the SipHash hashing function used in Bitcoin Core. It does not change any production code that handles transactions, networking, or wallets. The goal is to make sure the existing SipHas…

af50ba85by Lőrinc+797−237 files
No security note in commit
Informational 15 AI analysisMessage 95 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

test: wallet: BnB incomplete result on attempt-limit success

This commit adds a new unit test for Bitcoin Core's coin selection algorithm. It checks that when the Branch-and-Bound (BnB) search finds a usable coin selection early but then keeps searching for a better one until it hits the attempt lim…

6ee05c4bby Bruno Garcia+20−01 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.

Security candidatepubkey: Return tweaks from BIP32 derivationby Ava Chow · 4b24bfea · Sep 30, 2025 · 2 filesMessage 72 · AdequateInformational 19Details
Commit message · Ava Chow

pubkey: Return tweaks from BIP32 derivation

MuSig2 needs the BIP32 derivation tweaks in order to sign with a key
derived from the aggregate pubkey.

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
secret or key material
AI analysis · Informational 19/100

This commit is a small, additive change to Bitcoin Core's public-key derivation code. It adds an optional way for callers to retrieve the 'tweak' value used when deriving child public keys under the BIP32 standard. The change is needed so that a newer multi-signature scheme called MuSig2 can sign with derived keys. There is no direct evidence in the commit that this fixes a security bug; it appears to be a feature or API improvement.

Security candidatedoc: rpc: fix case typo in `finalizepsbt` help (final_scriptwitness)by Sebastian Falbesoner · ff05bebc · Sep 26, 2025 · 1 fileMessage 50 · ThinInformational 15Details
Commit message · Sebastian Falbesoner

doc: rpc: fix case typo in `finalizepsbt` help (final_scriptwitness)

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing boundarysigning or wallet path
AI analysis · Informational 15/100

This commit fixes a capitalization typo in the help text for the `finalizepsbt` RPC command. The documentation previously referred to `final_scriptWitness` but the actual PSBT field name is `final_scriptwitness` (all lowercase). This is purely a documentation string change and has no effect on code behavior, transaction processing, or security.

Security candidateci: Turn centos config into alpine musl configby MarcoFalke · fa6b2e9e · Sep 25, 2025 · 5 filesMessage 57 · ThinInformational 15Details
Commit message · MarcoFalke

ci: Turn centos config into alpine musl config

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
authentication path
AI analysis · Informational 15/100

This commit swaps one continuous-integration (CI) test runner from CentOS to Alpine Linux (musl). It only changes build/test automation files, not the Bitcoin Core software that users run. There is no security-relevant code change here.

Security candidateminer: fix `addPackageTxs` unsigned integer overflowby ismaelsadeeq · b807dfcd · Sep 24, 2025 · 1 fileMessage 55 · ThinLow 33Details
Commit message · ismaelsadeeq

miner: fix `addPackageTxs` unsigned integer overflow

55/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Names security-relevant behavior explicitly! No meaningful explanatory body
Why it was queued
memory safety
AI analysis · Low 33/100

This commit fixes a math bug in the Bitcoin Core block-building code. The original code subtracted a safety margin from the maximum block weight and then compared the current block weight to that lower number. Because the variables are unsigned integers, if the block weight was already larger than expected, the subtraction could underflow and wrap around to a huge number, making the comparison behave incorrectly. The fix rewrites the comparison as an addition on the other side, which cannot underflow. The practical effect is on when the miner decides to stop trying to add more transactions; the bug could make it give up too early or keep going too long in edge cases.

Security candidateMerge bitcoin/bitcoin#28592: p2p: Increase tx relay rateby merge-script · 56c6daa6 · Sep 19, 2025 · 2836 filesMessage 81 · StrongInformational 17Details
Commit message · merge-script

Merge bitcoin/bitcoin#28592: p2p: Increase tx relay rate

b81f37031c8f2ccad9346f1b65ee0f8083c44796 p2p: Increase tx relay rate (Anthony Towns)

Pull request description:

In the presence of smaller transactions on the network, blocks can sustain a higher relay rate than 7tx/second. In this event, the per-peer inventory queues can grow too large.

This commit bumps the rate up to 14 tx/s (for inbound peers), increasing the safety margin by a factor of 2.

Outbound peers continue to receive relayed transactions at 2.5x the rate of inbound peers, for a rate of 35tx/second.

ACKs for top commit:
sipa:
ACK b81f37031c8f2ccad9346f1b65ee0f8083c44796
achow101:
ACK b81f37031c8f2ccad9346f1b65ee0f8083c44796
darosior:
utACK b81f37031c8f2ccad9346f1b65ee0f8083c44796.
glozow:
utACK b81f37031c8f2ccad9346f1b65ee0f8083c44796

Tree-SHA512: 854ea0824d5f4c629f1dceb9ee61cc9226c8f0d4d26664737e68db917f65341d4800362ab55ed32673db920b2b59aa116b4cb9ee063367b2e43c94a904b41c08

81/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
cryptography-sensitive pathseed or entropy pathsigning or wallet pathboot or update pathauthentication pathparser or protocol pathmerge-commit duplicate discount
AI analysis · Informational 17/100

This commit is a routine Bitcoin Core merge that increases the rate at which transactions are relayed to peers (from 7 to 14 per second for inbound peers, and up to 35 for outbound peers). It is described by the project as a safety-margin improvement to keep per-peer inventory queues from growing too large when blocks contain many small transactions. The change is a single constant tweak in the P2P networking code and is not presented as a security fix.

Security candidateBugfix: QA: rpc_bind: Skip nonloopback test if no such address is foundby Luke Dashjr · 79b4c276 · Sep 19, 2025 · 1540 filesMessage 60 · AdequateInformational 15Details
Commit message · Luke Dashjr

Bugfix: QA: rpc_bind: Skip nonloopback test if no such address is found

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

This commit is a test-only bugfix for the Bitcoin Core QA suite. It changes the rpc_bind functional test so that it skips the non-loopback network binding test when the machine running the tests has no non-loopback IP address available. It does not change any production code that runs on real Bitcoin nodes, wallets, or miners, and therefore has no direct security impact on users of the software.

Security candidatelog: reword `signature validations` to `script verification` in `assumevalid` logby Lőrinc · 91ac64b0 · Sep 18, 2025 · 2 filesMessage 88 · StrongInformational 15Details
Commit message · Lőrinc

log: reword `signature validations` to `script verification` in `assumevalid` log

Even though not all script verification is turned off currently (e.g. we're still doing the cheaper sigop counts), this naming is more consistent with other usages.

88/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Names security-relevant behavior explicitly
Why it was queued
signing boundarydefensive validation
AI analysis · Informational 15/100

This commit only rewords a log message and updates the matching test. It changes 'signature validations' to 'script verification' in a progress/debug log line and fixes a typo in a comment. There is no functional code change and no security impact.

Security candidatesystem: add helper for fetching total system memoryby Lőrinc · 6c720459 · Sep 17, 2025 · 3 filesMessage 96 · StrongInformational 15Details
Commit message · Lőrinc

system: add helper for fetching total system memory

Added a minimal system helper to query total physical RAM on [Linux/macOS/Windows](https://stackoverflow.com/a/2513561) (on other platforms we just return an empty optional).

The added test checks if the value is roughly correct by checking if the CI platforms are returning any value and if the value is at least 1 GiB and not more than 10 TiB.

The max value is only validated on 64 bits, since it's not unreasonable for 32 bits to have max memory, but on 64 bits it's likely an error.

https://learn.microsoft.com/en-us/windows/win32/api/sysinfoapi/ns-sysinfoapi-memorystatusex
> ullTotalPhys The amount of actual physical memory, in bytes.

https://man7.org/linux/man-pages/man3/sysconf.3.html:
> _SC_PHYS_PAGES The number of pages of physical memory. Note that it is possible for the product of this value and the value of _SC_PAGESIZE to overflow.
> _SC_PAGESIZE Size of a page in bytes. Must not be less than 1.

See https://godbolt.org/z/ec81Tjvrj for further details

96/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✓ Names security-relevant behavior explicitly
Why it was queued
memory safetydefensive validation
AI analysis · Informational 15/100

This commit adds a simple helper function that asks the operating system how much total physical memory (RAM) the computer has. It supports Linux, macOS, and Windows, and returns no value on other platforms. It also adds a test to make sure the reported number looks reasonable. There is no security issue visible in this change.

Security candidatekey: use static context for libsecp256k1 calls where applicableby Sebastian Falbesoner · 1ff9e929 · Sep 16, 2025 · 3 filesMessage 73 · AdequateInformational 18Details
Commit message · Sebastian Falbesoner

key: use static context for libsecp256k1 calls where applicable

The dynamically created signing context for libsecp256k1 calls is only
needed for functions that involve generator point multiplication with a
secret key, i.e. different variants of public key creation and signing.
The API docs hint to this by stating "not secp256k1_context_static" for
the context parameter. In our case that applies to the following calls:
- `secp256k1_ec_pubkey_create`
- `secp256k1_keypair_create`
- `secp256k1_ellswift_create`
- `secp256k1_ecdsa_sign`
- `secp256k1_ecdsa_sign_recoverable`
- `secp256k1_schnorrsig_sign32`
- `ec_seckey_export_der` (not a direct secp256k1 function, but calls
`secp256k1_ec_pubkey_create` inside)

For all the other secp256k1 calls we can simply use the static context.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
secret or key materialsigning boundarycryptography-sensitive path
AI analysis · Informational 18/100

This commit is a code-quality and performance cleanup, not a security fix. It changes many Bitcoin Core calls to the libsecp256k1 cryptography library so they use a shared, read-only 'static context' instead of a special signing context. The signing context is only needed for operations that actually multiply a secret key with a generator point, such as creating public keys or signing. Using the static context elsewhere is harmless and matches the library's documented recommendations. There is no indication this fixes an active vulnerability.

Security candidatenet: Do not apply whitelist permission to onion inboundsby Martin Zumsande · f563ce90 · Sep 16, 2025 · 2 filesMessage 73 · AdequateModerate 52Details
Commit message · Martin Zumsande

net: Do not apply whitelist permission to onion inbounds

Tor inbound connections do not reveal the peer's actual network address.
Therefore do not apply whitelist permissions to them.

Co-authored-by: Vasil Dimov <vd@FreeBSD.org>

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
credential or privilege state
AI analysis · Moderate 52/100

This change fixes a logic issue in Bitcoin Core's network handling. When a node operator configures special permissions (like bypassing connection limits or relay rules) for specific IP addresses, those permissions were mistakenly being granted to inbound connections arriving through a Tor hidden service. Because Tor hides the true IP address of the connecting peer, the node cannot verify that the peer actually belongs to the whitelisted address range. The patch ensures that whitelist permissions are not applied to Tor inbound connections, so only connections whose real network address is known can receive those privileges.

Security candidatecmake: Fix regression in `secp256k1.cmake`by Hennadii Stepanov · 9193c3e4 · Sep 12, 2025 · 1 fileMessage 86 · StrongInformational 19Details
Commit message · Hennadii Stepanov

cmake: Fix regression in `secp256k1.cmake`

The `enable_language` command must be called in file scope, not in a
function call.

See: https://cmake.org/cmake/help/latest/command/enable_language.html

86/100 · StrongMessage clarity
✓ 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
cryptography-sensitive path
AI analysis · Informational 19/100

This is a small CMake build-system fix. A command that tells the build system to use the C programming language was moved from inside a function to the top of the file. The old placement could cause CMake configuration to fail or behave incorrectly when building the secp256k1 cryptographic library, but it does not change how the Bitcoin software itself runs or processes transactions.

Security candidaterefactor: Fix includes in `crypto` directoryby Hennadii Stepanov · bdb8eadc · Sep 9, 2025 · 24 filesMessage 88 · StrongInformational 15Details
Commit message · Hennadii Stepanov

refactor: Fix includes in `crypto` directory

IWYU issue #1763 appears to be a corner case, so it has been addressed
using a local pragma rather than a global mapping.

88/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
cryptography-sensitive path
AI analysis · Informational 15/100

This commit is a routine code cleanup that adjusts which header files are included in the cryptographic source files. It does not change any program logic, algorithms, or security behavior. The goal is to make the include lists match what the compiler actually needs, which helps maintainability and tooling but has no direct security impact.

Security candidateFix benchmark CSV outputby Hennadii Stepanov · 790b4401 · Sep 8, 2025 · 1 fileMessage 51 · ThinInformational 20Details
Commit message · Hennadii Stepanov

Fix benchmark CSV output

The `SHA256AutoDetect` return output is used, among other use cases, to
name benchmarks. Using a comma breaks the CSV output.

This change replaces the comma with a semicolon, which fixes the issue.

51/100 · ThinMessage clarity
✓ Subject identifies a change✓ Provides detailed explanatory context
Why it was queued
cryptography-sensitive path
AI analysis · Informational 20/100

This commit fixes a formatting bug in benchmark output. The SHA256AutoDetect function returns a string describing which CPU-accelerated SHA-256 implementations are active. That string previously used commas, which broke CSV-formatted benchmark reports because commas are the field separator. The patch swaps commas for semicolons so benchmark CSV files parse correctly. It is a data-formatting fix, not a security fix.

Security candidateindex: Fix coinstatsindex overflow issueby Fabian Jahr · 431a076a · Sep 7, 2025 · 6 filesMessage 73 · AdequateModerate 57Details
Commit message · Fabian Jahr

index: Fix coinstatsindex overflow issue

The index originally stored cumulative values in a CAmount type but this allowed for
potential overflow issues which were observed on Signet. Fix this by
storing the values that are in danger of overflowing in a arith_uint256.

Also turns an unnecessary copy into a reference in RevertBlock and
CustomAppend and gets
rid of the explicit total unspendable tracking which can be calculated
by adding the four categories of unspendables together.

73/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Names security-relevant behavior explicitly
Why it was queued
memory safety
AI analysis · Moderate 57/100

This commit fixes an integer overflow bug in Bitcoin Core's optional coin statistics index. The index keeps running totals of spent and created coins, and on long-running or high-activity networks these totals could exceed the range of the 64-bit 'CAmount' type, causing wrong statistics or node instability. The fix widens the at-risk totals to a 256-bit type and removes a redundant stored total that can be computed from other values. It also changes the index's database directory name so upgraded nodes do not reuse the old, buggy data, while leaving the old directory in place for users who might downgrade.

Security candidatetrace: Workaround GCC bug compiling with old systemtapby Luke Dashjr · 93a29ff2 · Sep 4, 2025 · 2754 filesMessage 50 · ThinInformational 15Details
Commit message · Luke Dashjr

trace: Workaround GCC bug compiling with old systemtap

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
cryptography-sensitive pathseed or entropy pathsigning or wallet pathboot or update pathauthentication pathparser or protocol path
AI analysis · Informational 15/100

This commit is not a focused code patch. The supplied diff shows the addition of thousands of unrelated repository files (CI configs, templates, build files, documentation, source trees, etc.) under a commit title that only mentions a GCC/systemtap tracing workaround. The actual claimed change is not visible in the provided diff, so there is no basis to assess any security issue.

Security candidatenet: handle multi-part netlink responsesby willcl-ark · 88db09ba · Sep 3, 2025 · 2767 filesMessage 80 · StrongLow 37Details
Commit message · willcl-ark

net: handle multi-part netlink responses

Handle multi-part netlink responses to prevent truncated results from
large routing tables.

Previously, we only made a single recv call, which led to incomplete
results when the kernel split the message into multiple responses (which
happens frequently with NLM_F_DUMP).

Also guard against a potential hanging issue where the code would
indefinitely wait for NLMSG_DONE for non-multi-part responses by
detecting the NLM_F_MULTI flag and only continue waiting when necessary.

80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
Why it was queued
cryptography-sensitive pathseed or entropy pathsigning or wallet pathboot or update pathauthentication pathparser or protocol path
AI analysis · Low 37/100

This commit fixes how Bitcoin Core reads network routing information from the Linux kernel. Previously, the code only made one request and could receive incomplete routing data on systems with large routing tables, or could hang waiting for a 'done' signal that never comes. The fix loops to collect all kernel response parts and only waits for the 'done' marker when the kernel says the response is multi-part. This is a reliability bug fix, not a direct money-stealing vulnerability, but incorrect routing data could affect how the node connects to peers.

Security candidatecontrib: update makeseeds UA regexby fanquake · b8da9f40 · Sep 3, 2025 · 1 fileMessage 45 · ThinInformational 16Details
Commit message · fanquake

contrib: update makeseeds UA regex

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
seed or entropy path
AI analysis · Informational 16/100

This commit updates a regular expression in a seed-node generation script so it recognizes newer Bitcoin Core version numbers (28.2 and 29.0) when scanning network peers. It is a routine maintenance change to the list of acceptable user-agent strings and does not alter node consensus, wallet, or network security code.

Security candidatecontrib: update makeseeds minblocksby fanquake · 6cdd8ee6 · Sep 3, 2025 · 2 filesMessage 35 · OpaqueInformational 15Details
Commit message · fanquake

contrib: update makeseeds minblocks

35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
seed or entropy path
AI analysis · Informational 15/100

This commit simply raises the minimum block-height thresholds used by a Bitcoin Core maintenance script that builds the list of hard-coded network seed nodes. It is a routine configuration update, not a code fix for a security vulnerability.

Security candidatecontrib: update fixed seedsby fanquake · 93967894 · Sep 3, 2025 · 5 filesMessage 35 · OpaqueInformational 19Details
Commit message · fanquake

contrib: update fixed seeds

35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body! Opaque security-relevant change
Why it was queued
seed or entropy pathsigning or wallet path
AI analysis · Informational 19/100

This commit simply refreshes Bitcoin Core's built-in list of 'fixed seeds'—the fallback network addresses new nodes use to find peers when DNS seeders are unavailable. It removes old seed entries and adds new ones. There is no code change, no bug fix, and no security patch in the diff itself. It is a routine network-address list update.

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.

Security candidatetest: cover invalid codesep positions for signature in taprootby Greg Sanders · 81e5c838 · Aug 18, 2025 · 2 filesMessage 77 · AdequateInformational 17Details
Commit message · Greg Sanders

test: cover invalid codesep positions for signature in taproot

77/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Mentions testing or verification✓ Names security-relevant behavior explicitly! No meaningful explanatory body
Why it was queued
signing boundary
AI analysis · Informational 17/100

This commit only changes Bitcoin Core's own test code and test framework. It fixes how the test suite encodes the 'code separator position' used in Taproot signature hashing, switching from a signed 32-bit integer to an unsigned 32-bit integer. It also adds two new test cases that check what happens when an invalid code-separator position is used. There is no change to the actual consensus or networking code that runs on the Bitcoin network, so this does not create or fix a live security vulnerability in Bitcoin Core itself. It is a test-coverage improvement.

Security candidaterpc: Support version 3 transaction creationby Bue-von-hon · 2cb473d9 · Aug 15, 2025 · 10 filesMessage 68 · AdequateInformational 20Details
Commit message · Bue-von-hon

rpc: Support version 3 transaction creation

Adds v3 support to the following RPCs:
- createrawtransaction
- createpsbt
- send
- sendall
- walletcreatefundedpsbt

Co-authored-by: chungeun-choi <cucuridas@gmail.com>
Co-authored-by: dongwook-chan <dongwook.chan@gmail.com>
Co-authored-by: sean-k1 <uhs2000@naver.com>
Co-authored-by: ishaanam <ishaana.misra@gmail.com>

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
signing boundarysigning or wallet path
AI analysis · Informational 20/100

This commit adds a new 'version' parameter to several Bitcoin Core RPCs so users can create version 3 transactions. It is a feature addition, not a bug fix. The code validates that the requested version is within the allowed standard range and applies sensible defaults, so it does not appear to introduce a security vulnerability.

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

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

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

Pull request description:

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

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

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

Tree-SHA512: 3e76e22ee692a7403d61c66615f56d0fa5f7883dd47553bcaec2f9ffd942daaa90ceb61830206bece50da53dcd737b6438c36bcb086030b2deb68c44172f3931

81/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
cryptography-sensitive pathseed or entropy pathsigning or wallet pathboot or update pathauthentication pathparser or protocol pathmerge-commit duplicate discount
AI analysis · Informational 15/100

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

Security candidate[policy] lower default minrelaytxfee and incrementalrelayfee to 100sat/kvBby glozow · 6da5de58 · Aug 11, 2025 · 12 filesMessage 73 · AdequateLow 41Details
Commit message · glozow

[policy] lower default minrelaytxfee and incrementalrelayfee to 100sat/kvB

Let's say an attacker wants to use/exhaust the network's bandwidth, and
has the choice between renting resources from a commercial provider and
getting the network to "spam" itself it by sending unconfirmed
transactions. We'd like the latter to be more expensive than the former.

The bandwidth for relaying a transaction across the network is roughly
its serialized size (plus relay overhead) x number of nodes. A 1000vB
transaction is 1000-4000B serialized. With 100k nodes, that's 0.1-0.4GB
If the going rate for commercial services is 10c/GB, that's like 1-4c per kvB
of transaction data, so a 1000vB transaction should pay at least $0.04.

At a price of 120k USD/BTC, 100sat is about $0.12. This price allows us
to tolerate a large decrease in the conversion rate or increase in the
number of nodes.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
explicit security languagesigning or wallet path
AI analysis · Low 41/100

This commit lowers Bitcoin Core's default minimum relay fee and replacement fee from 1000 satoshis per kilovbyte to 100 satoshis per kilovbyte. The stated goal is to make it cheaper for legitimate transactions to propagate while still keeping spam-based bandwidth attacks more expensive than renting commercial bandwidth. It is a deliberate policy change, not a code vulnerability, but it changes the economics of transaction relay and mempool replacement across the network.

Security candidateassumevalid: log every script validation state changeby Lőrinc · fab2980b · Aug 8, 2025 · 3 filesMessage 100 · StrongInformational 15Details
Commit message · Lőrinc

assumevalid: log every script validation state change

The `-assumevalid` option skips script verification for a specified block and all its ancestors during Initial Block Download.
Many new users are surprised when this suddenly slows their node to a halt.
This commit adds a log message to clearly indicate when this optimization ends and full validation begins (and vice versa).

When using `-assumeutxo`, logging is suppressed for the active assumed-valid chainstate and for the background validation chainstate to avoid the confusing toggles.

-------

> cmake -B build && cmake --build build && mkdir -p demo && build/bin/bitcoind -datadir=demo -stopatheight=500 | grep 'signature validation'

```
2025-08-08T20:59:21Z Disabling signature validations at block #1 (00000000839a8e6886ab5951d76f411475428afc90947ee320161bbf18eb6048).
2025-08-08T20:59:21Z Enabling signature validations at block #100 (000000007bc154e0fa7ea32218a72fe2c1bb9f86cf8c9ebf9a715ed27fdb229a).
2025-08-08T20:59:21Z Disabling signature validations at block #200 (000000008f1a7008320c16b8402b7f11e82951f44ca2663caf6860ab2eeef320).
2025-08-08T20:59:21Z Enabling signature validations at block #300 (0000000062b69e4a2c3312a5782d7798b0711e9ebac065cd5d19f946439f8609).
```

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✓ Names security-relevant behavior explicitly
Why it was queued
signing boundarydefensive validation
AI analysis · Informational 15/100

This commit only adds user-facing log messages that announce when Bitcoin Core turns signature checking on or off during initial block download. It does not change whether signatures are checked, only how clearly the node tells the user about it. There is no security vulnerability here.