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 51 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 candidateStop enforcing descendant size/count limitsby Suhas Daftuar · cf3ab8e1 · Nov 18, 2025 · 7 filesMessage 45 · ThinLow 32Details
Commit message · Suhas Daftuar

Stop enforcing descendant size/count limits

Cluster size limits should be enough.

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
boot or update path
AI analysis · Low 32/100

This Bitcoin Core commit removes enforcement of two older mempool limits—how many child transactions and how much total data can descend from a single transaction—and relies instead on newer 'cluster' limits. The change is described by the project as a simplification, not a security fix. It could alter how large transaction chains are rejected, but the diff itself does not show a vulnerability or emergency patch.

Security candidateDo not allow mempool clusters to exceed configured limitsby Suhas Daftuar · 95762e67 · Nov 18, 2025 · 6 filesMessage 95 · StrongLow 47Details
Commit message · Suhas Daftuar

Do not allow mempool clusters to exceed configured limits

Include an adjustment to mempool_tests.cpp due to the additional memory used by
txgraph.

Includes a temporary change to the mempool_ephemeral_dust.py functional test,
due to validation checks being reordered. This change will revert once the RBF
rules are changed in a later commit.

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
boot or update path
AI analysis · Low 47/100

This Bitcoin Core commit enforces a new mempool policy: groups of related unconfirmed transactions ('clusters') are now capped by configured size and count limits. Previously these limits existed as settings but were not fully enforced by the new in-memory transaction graph. The patch wires the limits into the graph, rejects submissions that would exceed them, and removes transactions from the mempool when a newly accepted block creates oversized clusters. It also reorders some validation checks so cluster-size rejection happens before certain standardness checks, which is why one functional test was temporarily adjusted.

Security candidateMerge bitcoin/bitcoin#32419: psbt: clarify PSBT, PSBTInput, PSBTOutput unserialization flowsby Ava Chow · a90f3922 · Nov 17, 2025 · 2865 filesMessage 81 · StrongInformational 15Details
Commit message · Ava Chow

Merge bitcoin/bitcoin#32419: psbt: clarify PSBT, PSBTInput, PSBTOutput unserialization flows

d31158d3646f3c7e4832b9ca50f6ffe02800ff4c psbt: clarify PSBT, PSBTInput, PSBTOutput unserialization flows (rkrux)

Pull request description:

The unserialization flows of the PSBT types work based on few underlying assumptions of functions from `serialize.h` & `stream.h` that takes some to understand when read the first time.

Add few comments that highlight these assumptions hopefully making it easier to grasp. Also, mention key/value format types as per BIP 174.

ACKs for top commit:
achow101:
ACK d31158d3646f3c7e4832b9ca50f6ffe02800ff4c
theStack:
ACK d31158d3646f3c7e4832b9ca50f6ffe02800ff4c

Tree-SHA512: 45111ef7f0258ebbc41d058b3ef2a72472774ab2878caf2d71d7b57b27549c46a51ccbeda5fe164bcf4f7ec10627bbae6e7763aa80b1e66912703a2088682817

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
signing boundarycryptography-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 documentation-only change for Bitcoin Core. It adds comments explaining how PSBT (Partially Signed Bitcoin Transaction) data is read from serialized bytes, with no changes to actual code behavior. The surrounding merge commit also includes a very large number of unrelated file additions (build files, templates, docs, etc.), but the titled change itself is purely explanatory comments.

Security candidateci: Enable experimental kernel stuff in Alpine taskby MarcoFalke · fa9d67c1 · Nov 12, 2025 · 2 filesMessage 100 · StrongInformational 15Details
Commit message · MarcoFalke

ci: Enable experimental kernel stuff in Alpine task

Base the task on --preset=dev-mode to ensure maximal coverage and add
the following:

bitcoin-chainstate (experimental) ... ON
libbitcoinkernel (experimental) ..... ON
kernel-test (experimental) .......... ON

100/100 · StrongMessage clarity
✓ Specific, 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
authentication path
AI analysis · Informational 15/100

This commit changes a Bitcoin Core continuous integration (CI) test job. It renames the Alpine Linux test task and switches its build configuration to use a developer preset that enables experimental kernel-related components. There is no change to the actual Bitcoin node software, wallet code, network handling, or any code that end users run. It is purely a testing/CI configuration adjustment.

Security candidatescripted-diff: remove whitespace in sha256_sse4.cppby fanquake · 0c2b9dad · Nov 11, 2025 · 1 fileMessage 83 · StrongInformational 15Details
Commit message · fanquake

scripted-diff: remove whitespace in sha256_sse4.cpp

-BEGIN VERIFY SCRIPT-
expand -t4 src/crypto/sha256_sse4.cpp | sed 's/ *$//' | sponge src/crypto/sha256_sse4.cpp
-END VERIFY SCRIPT-

Co-authored-by: Anthony Towns <aj@erisian.com.au>

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

This commit is a purely cosmetic cleanup of a single file. It only removes trailing whitespace and converts tab characters to spaces in the assembly code comments and formatting of src/crypto/sha256_sse4.cpp. No program logic, instructions, constants, or behavior was changed.

Security candidateclang-tidy: Remove no longer needed NOLINTby Hennadii Stepanov · 038849e2 · Nov 4, 2025 · 1 fileMessage 45 · ThinInformational 15Details
Commit message · Hennadii Stepanov

clang-tidy: Remove no longer needed NOLINT

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

This is a minor code cleanup change. It removes a comment marker used by an automated linting tool (clang-tidy) because the tool no longer needs it. The actual code behavior is unchanged.

Security candidatecoins: reduce lookups in dbcache layer propagationby Lőrinc · c8f5e446 · Nov 1, 2025 · 1 fileMessage 91 · StrongInformational 18Details
Commit message · Lőrinc

coins: reduce lookups in dbcache layer propagation

Previously, when the parent coins cache had no entry and the child did, `BatchWrite` performed a find followed by `try_emplace`, which resulted in multiple `SipHash` computations and bucket traversals on the common insert path.

This change uses a single leading `try_emplace` and branches on the returned `inserted` flag.
In the `FRESH && SPENT` case (only exercised by tests), we erase the just-inserted placeholder (which is constant time with no rehash anyway).
Semantics are unchanged for all valid parent/child state combinations.

This change is a minimal version of https://github.com/bitcoin/bitcoin/pull/32128/commits/723c49b63bb10da843fbb6efc6928dca415cc47f and draws simplification ideas https://github.com/bitcoin/bitcoin/pull/30673/commits/ae76ec7bcff0a08a61f294882a71e46d177b009f.

Added TODO versions for related pre-existing issues that should be fixed in follow-ups.

Co-authored-by: Martin Ankerl <martin.ankerl@gmail.com>
Co-authored-by: Andrew Toth <andrewstoth@gmail.com>
Co-authored-by: optout <13562139+optout21@users.noreply.github.com>

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
constant-time or timing behavior
AI analysis · Informational 18/100

This is a small internal performance cleanup in Bitcoin Core's coin cache code. It replaces two hash-map operations with one, reducing CPU work when copying coin data from a child cache into a parent cache. The commit explicitly says behavior is unchanged; no security vulnerability is described or evident in the diff.

Security candidaterefactor: Return uint64_t from GetSerializeSizeby MarcoFalke · fa6c0bed · Oct 30, 2025 · 1 fileMessage 93 · StrongLow 45Details
Commit message · MarcoFalke

refactor: Return uint64_t from GetSerializeSize

Normally, the values are small enough to fit in size_t, but the risk
that it may not fit sometimes is a reason to use uint64_t consistently
for all architectures.

On 64-bit systems, this refactor is a no-op. On 32-bit systems, it could
avoid bugs in the theoretical and unexpected case where a 32-bit size_t
is too small and overflows.

For example, 32-bit Bitcoin Core versions with CVE-2025-46597 unfixed
may overflow while checking for the bad-blk-length violation when
receiving a malformed and bloated compact block.

93/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✓ Names security-relevant behavior explicitly
Why it was queued
explicit security languagememory safety
AI analysis · Low 45/100

This is a small defensive code change in Bitcoin Core that changes an internal size-measuring helper from using the system's native size type (size_t) to always using a 64-bit unsigned integer (uint64_t). On 64-bit computers nothing effectively changes. On 32-bit computers, the change prevents a theoretical integer overflow when calculating the serialized size of very large or malformed data. The commit message mentions this could matter for a specific malformed compact-block handling bug tracked as CVE-2025-46597 on 32-bit builds, but the patch itself only changes the return type and internal variable; it does not fix the compact-block logic directly.

Security candidaterefactor: Use uint64_t over size_t for serialized-size valuesby MarcoFalke · fad0c868 · Oct 30, 2025 · 9 filesMessage 97 · StrongInformational 18Details
Commit message · MarcoFalke

refactor: Use uint64_t over size_t for serialized-size values

The values are small enough to fit in size_t, but to avoid having to
think about it, just use uint64_t consistently for all architectures.

On 64-bit systems, this refactor is a no-op. On 32-bit systems, it could
avoid bugs in the theoretical and unexpected case where a 32-bit size_t
is too small and overflows.

97/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Explains rationale or failure mode
Why it was queued
memory safetysigning or wallet path
AI analysis · Informational 18/100

This is a code cleanup change that swaps the variable type `size_t` for `uint64_t` in a handful of places that store serialized data sizes. On 64-bit computers the two types are the same size, so nothing changes. On 32-bit computers, `uint64_t` is larger and could in theory prevent a rare overflow if a serialized object ever exceeded about 4 GB. The commit message explicitly calls this a defensive refactor and says the practical risk is theoretical and unexpected. There is no reported bug, exploit, or security incident tied to this change.

Security candidateci: Add missing python3-dev package for riscv64by MarcoFalke · facf8b77 · Oct 30, 2025 · 2 filesMessage 57 · ThinInformational 15Details
Commit message · MarcoFalke

ci: Add missing python3-dev package for riscv64

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 updates Bitcoin Core's continuous integration (CI) build scripts to install the python3-dev package instead of (or alongside) the base python3 package on two CI environments, including riscv64. It is a build-infrastructure fix, not a change to the Bitcoin node software that users run. There is no indication it fixes a security vulnerability in the Bitcoin protocol or wallet code.

Security candidaterpc: add "ischange: true" in wallet gettransaction decoded tx outputby Matthew Zipkin · d633db54 · Oct 29, 2025 · 2825 filesMessage 50 · ThinInformational 15Details
Commit message · Matthew Zipkin

rpc: add "ischange: true" in wallet gettransaction decoded tx output

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 a massive repository import or initial commit containing the entire Bitcoin Core codebase plus CI/build files. Its stated title is about adding an 'ischange: true' field to wallet transaction RPC output, but the supplied diff shows only generic repository files (CI configs, editor config, README, CMakeLists, etc.) being added. There is no visible change to wallet RPC code in the provided diff, and no security-relevant modification is evident.

Security candidaterandom: scope environ extern to macOS, BSDs and Illumosby fanquake · 79d6f458 · Oct 29, 2025 · 1 fileMessage 70 · AdequateInformational 18Details
Commit message · fanquake

random: scope environ extern to macOS, BSDs and Illumos

These platforms fail to compile with it removed.

70/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Names security-relevant behavior explicitly
Why it was queued
seed or entropy path
AI analysis · Informational 18/100

This is a minor build-fix patch. It narrows which operating systems need a special declaration to access the program's environment variables during randomness collection. Previously the declaration was used for all non-Windows systems; now it is only used on macOS, the BSDs, and Illumos because those platforms fail to compile without it. There is no security bug being fixed here.

Security candidateRemove unreliable seed from chainparams.cpp, and the associated READMEby SatsAndSports · b0c70679 · Oct 29, 2025 · 2 filesMessage 50 · ThinInformational 16Details
Commit message · SatsAndSports

Remove unreliable seed from chainparams.cpp, and the associated README

50/100 · ThinMessage clarity
✓ Specific, 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 removes one of several built-in DNS seed sources used by Bitcoin Core to help new nodes find peers on the network. The change is described as removing an 'unreliable seed.' DNS seeds are trusted to return a list of honest Bitcoin nodes, so removing a seed that is not reliably maintained reduces the chance that a stale or misconfigured seed could misdirect new nodes. It is a routine network-health cleanup, not a fix for a confirmed attack or vulnerability.

Security candidateMerge bitcoin/bitcoin#31514: wallet: allow label for non-ranged external descriptor (if `internal=false`) & disallow label for ranged descriptorsby Ava Chow · 80bb7012 · Oct 27, 2025 · 2853 filesMessage 91 · StrongLow 25Details
Commit message · Ava Chow

Merge bitcoin/bitcoin#31514: wallet: allow label for non-ranged external descriptor (if `internal=false`) & disallow label for ranged descriptors

664657ed134365588914c2cf6a3975ce368a4f49 bugfix: disallow label for ranged descriptors & allow external non-ranged descriptors to have label (scgbckbone)

Pull request description:

Motivation:
* ranged descriptors MUST not be able to have label (current impl allows it)
* external non-ranged descriptor MUST be able to have label (current impl disallows it, **if** `internal=false` is provided via importdescriptor user data)

Repro steps:
* create blank wallet and import descriptors
* external has `label=test` (not internal)
```
conn = bitcoind.create_wallet(wallet_name=w_name, disable_private_keys=True, blank=True,
passphrase=None, avoid_reuse=False, descriptors=True)
descriptors = [
{
"timestamp": "now",
"label": "test",
"active": True,
"desc": "wpkh([0f056943/84h/1h/0h]tpubDC7jGaaSE66Pn4dgtbAAstde4bCyhSUs4r3P8WhMVvPByvcRrzrwqSvpF9Ghx83Z1LfVugGRrSBko5UEKELCz9HoMv5qKmGq3fqnnbS5E9r/0/*)#erexmnep",
"internal": False
},
{
"desc": "wpkh([0f056943/84h/1h/0h]tpubDC7jGaaSE66Pn4dgtbAAstde4bCyhSUs4r3P8WhMVvPByvcRrzrwqSvpF9Ghx83Z1LfVugGRrSBko5UEKELCz9HoMv5qKmGq3fqnnbS5E9r/1/*)#ghu8xxfe",
"active": True,
"internal": True,
"timestamp": "now"
},
]
r = conn.importdescriptors(descriptors)
print(r)
```
response:
```
[{'error': {'code': -8,
'message': 'Internal addresses should not have a label'},
'success': False,
'warnings': ['Range not given, using default keypool range']},
{'success': True,
'warnings': ['Range not given, using default keypool range']}]
```
But in above, ONLY external has a label.

If you remove `internal: False` from external descriptor import object - it will import no problem:
```
[{'success': True,
'warnings': ['Range not given, using default keypool range']},
{'success': True,
'warnings': ['Range not given, using default keypool range']}]

```
Even tho it should NOT, as the descriptor is ranged. Current implementation relies on checking user provided data to decide whether desc is ranged.

ACKs for top commit:
achow101:
ACK 664657ed134365588914c2cf6a3975ce368a4f49
rkrux:
lgtm crACK 664657ed134365588914c2cf6a3975ce368a4f49

Tree-SHA512: 9e70aea620019c29950ba417d4ae38d65cd94a4f6fcabbc021d67b031de1c44c27d6f6f5cb7e6950a099eb6e58bed9be764d4c6347195daeccb14a5d95c123b2

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
access controlcryptography-sensitive pathseed or entropy pathsigning or wallet pathboot or update pathauthentication pathparser or protocol pathmerge-commit duplicate discount
AI analysis · Low 25/100

This commit fixes a wallet bug in Bitcoin Core's importdescriptors RPC. Previously, the code incorrectly decided whether a descriptor was 'internal' (change addresses) or 'ranged' (HD-style many addresses) based on user-supplied data rather than the descriptor itself. This meant users could accidentally attach a label to a ranged descriptor, which is not supposed to be allowed, and could be blocked from labeling a normal external descriptor when they explicitly set internal=false. The patch makes the check inspect the actual descriptor, so labels are allowed only on non-ranged external descriptors and disallowed on ranged ones. It is a correctness/validation bug, not a direct theft-of-funds vulnerability.

Security candidatetest: Update BIP324 test vectorsby Tim Ruffing · 51877f2f · Oct 23, 2025 · 1 fileMessage 90 · StrongInformational 15Details
Commit message · Tim Ruffing

test: Update BIP324 test vectors

based on https://github.com/bitcoin/bips/pull/2016

90/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✓ Links an issue, advisory, or supporting reference
Why it was queued
secret or key materialfuzzing or regression evidencecryptography-sensitive path
AI analysis · Informational 15/100

This commit only updates test data in a single test file. It replaces hard-coded BIP324 test vectors with newer values taken from a Bitcoin Improvement Proposal pull request. No production code, network behavior, or wallet logic is changed, so it cannot directly affect live Bitcoin Core users or introduce a runtime security flaw.

Security candidateMerge bitcoin/bitcoin#32266: depends: Avoid `warning: "_FORTIFY_SOURCE" redefined` for `libevent`by merge-script · 1c85d062 · Oct 23, 2025 · 2850 filesMessage 81 · StrongInformational 15Details
Commit message · merge-script

Merge bitcoin/bitcoin#32266: depends: Avoid `warning: "_FORTIFY_SOURCE" redefined` for `libevent`

fe71a4b139f3a142468c2e931775813bc8f9d2ad depends: Avoid `warning: "_FORTIFY_SOURCE" redefined` for `libevent` (Hennadii Stepanov)

Pull request description:

On Alpine Linux 3.12.3, compiling the `libevent` package produces multiple warnings:
```
$ gmake -C depends -j $(nproc) libevent
<snip>
<command-line>: warning: "_FORTIFY_SOURCE" redefined
<built-in>: note: this is the location of the previous definition
<snip>
```

This PR fixes these warnings.

ACKs for top commit:
shahsb:
ACK https://github.com/bitcoin/bitcoin/pull/32266/commits/fe71a4b139f3a142468c2e931775813bc8f9d2ad
maflcko:
lgtm ACK fe71a4b139f3a142468c2e931775813bc8f9d2ad
theuni:
utACK fe71a4b139f3a142468c2e931775813bc8f9d2ad

Tree-SHA512: 0a3ffb2a4cf811bce93addac8e5394cf6b3d79a46245cbdd8488771b9b51e56f66cd9222548138041e69183d52ad4b909d3d1441593f9d79d557d6c000fb324b

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 build-system cleanup. It removes harmless compiler warnings about a duplicated security-hardening macro (_FORTIFY_SOURCE) when compiling the libevent dependency on Alpine Linux. It does not change how Bitcoin Core runs or how it protects user funds.

Security candidateSquashed 'src/leveldb/' changes from aba469ad6a..cad64b151dby fanquake · f21162d8 · Oct 16, 2025 · 153 filesMessage 81 · StrongInformational 15Details
Commit message · fanquake

Squashed 'src/leveldb/' changes from aba469ad6a..cad64b151d

cad64b151d Merge bitcoin-core/leveldb-subtree#57: doc: fix typos
157ed16be9 doc: fix typos

git-subtree-dir: src/leveldb
git-subtree-split: cad64b151dabe9ffe9771a54d7c9dbfb3355cefb

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
seed or entropy pathauthentication path
AI analysis · Informational 15/100

This commit is a routine subtree update that pulls in the upstream LevelDB source code from version aba469ad6a to cad64b151d. The actual code change in the upstream merge is only a documentation typo fix ('doc: fix typos'). The large diff size comes from adding the entire upstream LevelDB repository files into Bitcoin Core's src/leveldb/ subtree, not from a security-relevant code change. There is no indication of a security fix or vulnerability being addressed.

Security candidateSquashed 'src/secp256k1/' changes from b9313c6e1a..d543c0d917by fanquake · 3cbf7cb3 · Oct 15, 2025 · 42 filesMessage 91 · StrongLow 26Details
Commit message · fanquake

Squashed 'src/secp256k1/' changes from b9313c6e1a..d543c0d917

d543c0d917 Merge bitcoin-core/secp256k1#1734: Introduce (mini) unit test framework
f44c1ebd96 Merge bitcoin-core/secp256k1#1719: ci: DRY workflow using anchors
a44a339384 Merge bitcoin-core/secp256k1#1750: ci: Use clang-snapshot in "MSan" job
15d014804e ci: Drop default for `inputs.command` in `run-in-docker-action`
1decc49a1f ci: Use YAML anchor and aliases for repeated "CI script" steps
dff1bc107d ci, refactor: Generalize use of `matrix.configuration.env_vars`
4b644da199 ci: Use YAML anchor and aliases for repeated "Print logs" steps
a889cd93df ci: Bump `actions/checkout` version
574c2f3080 ci: Use YAML anchor and aliases for repeated "Checkout" steps
53585f93b7 ci: Use clang-snapshot in "MSan" job
6894c964f3 Fix Clang 21+ `-Wuninitialized-const-pointer` warning when using MSan
2b7337f63a Merge bitcoin-core/secp256k1#1756: ci: Fix image caching and apply other improvements
f163c35897 ci: Set `DEBIAN_FRONTEND=noninteractive`
70ae177ca0 ci: Bump `docker/build-push-action` version
b2a95a420f ci: Drop `tags` input for `docker/build-push-action`
122014edb3 ci: Add `scope` parameter to `cache-{to,from}` options
2f4546ce56 test: add --log option to display tests execution
95b9953ea4 test: Add option to display all available tests
953f7b0088 test: support running specific tests/modules targets
0302c1a3d7 test: add --help for command-line options
9ec3bfe22d test: adapt modules to the new test infrastructure
48789dafc2 test: introduce (mini) unit test framework
baa265429f Merge bitcoin-core/secp256k1#1727: docs: Clarify that callback can be called more than once
4d90585fea docs: Improve API docs of _context_set_illegal_callback
895f53d1cf docs: Clarify that callback can be called more than once
de6af6ae35 Merge bitcoin-core/secp256k1#1748: bench: improve context creation in ECDH benchmark
5817885153 Merge bitcoin-core/secp256k1#1749: build: Fix warnings in x86_64 assembly check
ab560078aa build: Fix warnings in x86_64 assembly check
10dab907e7 Merge bitcoin-core/secp256k1#1741: doc: clarify API doc of `secp256k1_ecdsa_recover` return value
dfe284ed2d bench: improve context creation in ECDH benchmark
7321bdf27b doc: clarify API doc of `secp256k1_ecdsa_recover` return value
b475654302 Merge bitcoin-core/secp256k1#1745: test: introduce group order byte-array constant for deduplication
9cce703863 refactor: move 'gettime_i64()' to tests_common.h
0c91c56041 test: introduce group order byte-array constant for deduplication
88be4e8d86 Merge bitcoin-core/secp256k1#1735: musig: Invalidate secnonce in secp256k1_musig_partial_sign
36e76952cb Merge bitcoin-core/secp256k1#1738: check-abi: remove support for obsolete CMake library output location (src/libsecp256k1.so)
399b582a5f Split memclear into two versions
4985ac0f89 Merge bitcoin-core/secp256k1#1737: doc: mention ctx requirement for `_ellswift_create` (not secp256k1_context_static)
7ebaa134a7 check-abi: remove support for obsolete CMake library output location (src/libsecp256k1.so)
806de38bfc doc: mention ctx requirement for `_ellswift_create` (not secp256k1_context_static)
03fb60ad2e Merge bitcoin-core/secp256k1#1681: doc: Recommend clang-cl when building on Windows
d93380fb35 Merge bitcoin-core/secp256k1#1731: schnorrsig: Securely clear buf containing k or its negation
8113671f80 Merge bitcoin-core/secp256k1#1729: hash: Use size_t instead of int for RFC6979 outlen copy
325d65a8cf Rename and clear var containing k or -k
960ba5f9c6 Use size_t instead of int for RFC6979 outlen copy
737912430d ci: Add more tests for clang-cl
7379a5bed3 doc: Recommend clang-cl when building on Windows
f36afb8b3d Merge bitcoin-core/secp256k1#1725: tests: refactor tagged hash verification
5153cf1c91 tests: refactor tagged hash tests
d2dcf52091 Merge bitcoin-core/secp256k1#1726: docs: fix broken link to Tromer's cache.pdf paper
489a43d1bf docs: fix broken link to eprint cache.pdf paper
d599714147 Merge bitcoin-core/secp256k1#1722: docs: Exclude modules' `bench_impl.h` headers from coverage report
0458def51e doc: Add `--gcov-ignore-parse-errors=all` option to `gcovr` invocations
1aecce5936 doc: Add `--merge-mode-functions=separate` option to `gcovr` invocations
106a7cbf41 doc: Exclude modules' `bench_impl.h` headers from coverage report
a9e955d3ea autotools, docs: Adjust help string for `--enable-coverage` option
e523e4f90e Merge bitcoin-core/secp256k1#1720: chore(ci): Fix typo in Dockerfile comment
24ba8ff168 chore(ci): Fix typo in Dockerfile comment
74b8068c5d Merge bitcoin-core/secp256k1#1717: test: update wycheproof test vectors
c25c3c8a88 test: update wycheproof test vectors
20e3b44746 Merge bitcoin-core/secp256k1#1688: cmake: Avoid contaminating parent project's cache with `BUILD_SHARED_LIBS`
2c076d907a Merge bitcoin-core/secp256k1#1711: tests: update Wycheproof
7b07b22957 cmake: Avoid contaminating parent project's cache with BUILD_SHARED_LIBS
5433648ca0 Fix typos and spellings
9ea54c69b7 tests: update Wycheproof files

git-subtree-dir: src/secp256k1
git-subtree-split: d543c0d917a76a201578948701cc30ef336e0fe6

91/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
defensive validationfuzzing or regression evidencecryptography-sensitive path
AI analysis · Low 26/100

This is a routine subtree update that pulls in many upstream secp256k1 changes. Most changes are documentation, build/CI cleanup, test infrastructure, and minor hardening. The only code-level security-relevant items are: (1) renaming the memory-clearing helper and adding an explicit variant that marks memory as undefined in test builds to catch use-after-clear bugs, (2) clearing the Schnorr nonce buffer after signing, (3) zeroing the MuSig secret nonce after partial signing to prevent reuse, and (4) using size_t instead of int for an RFC6979 length copy. None of these appear to fix an exploitable vulnerability in Bitcoin Core itself; they are defensive cleanups and test-framework improvements.

Security candidaterandomenv: Fix MinGW dllimport warning for `environ`by Lőrinc · 9610b0d1 · Oct 14, 2025 · 1 fileMessage 83 · StrongInformational 15Details
Commit message · Lőrinc

randomenv: Fix MinGW dllimport warning for `environ`

Extends 7703884 to guard environ declaration on all Windows builds, not just MSVC.
In the mingw-w64 headers (used by llvm-mingw), environ is defined as a macro which expands through _environ to (* __p__environ()), a call to a dllimport function, causing the same inconsistent linkage warning as MSVC.

Use WIN32 instead of _MSC_VER to match the platform-specific guards already used throughout the file.

The warning occurs with llvm-mingw (both UCRT and MSVCRT variants as tested by Hebasto), but not with the mingw-w64 toolchain currently used in CI (as mentioned by fanquake).

Co-authored-by: Hennadii Stepanov <32963518+hebasto@users.noreply.github.com>

83/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
seed or entropy path
AI analysis · Informational 15/100

This is a one-line build-system warning fix for the Windows MinGW compiler. It changes a preprocessor guard so that the `environ` variable is not re-declared on any Windows build, preventing a harmless compiler warning about inconsistent linkage. There is no functional change to program behavior and no security impact.

Security candidatedoc: test: update TestShell example instructions/optionsby Sebastian Falbesoner · 53874f79 · Oct 9, 2025 · 1 fileMessage 83 · StrongInformational 15Details
Commit message · Sebastian Falbesoner

doc: test: update TestShell example instructions/options

The `createwallet` RPC doesn't return the empty passphrase
warning anymore if no passphrase was passed explicitly.
The `noshutdown` parameter key was removed in commit
fa0dc09b9002f0bcae63af6af8d37fb3e0040ef4, so remove it from
the table.

83/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
access controldocumentation-only discount
AI analysis · Informational 15/100

This commit only updates documentation for Bitcoin Core's test shell. It changes an example output to remove a wallet passphrase warning that is no longer returned, and removes a 'noshutdown' option from a table because that option was removed in an earlier commit. There is no code change and no security impact.

Security candidatedoc: Update multisig-tutorial.md to use multipath descriptorsby Ben Westgate · 2a46e94a · Oct 6, 2025 · 2 filesMessage 91 · StrongInformational 15Details
Commit message · Ben Westgate

doc: Update multisig-tutorial.md to use multipath descriptors

Update doc/multisig-tutorial.md to use a single multipath descriptor
instead of separate external/internal descriptors, per PR #22838.
Extract one xpub per participant, build a multipath descriptor with
<0;1> change index, and use getdescriptorinfo to append the checksum.
Clarify importdescriptors expands multipath descriptors into internal
and external forms. Tested shell snippets to confirm equivalent
listdescriptors output as the two-descriptor method.

Added missing loadwallet command for multisig_wallet_01

test: Use multipath descriptors in the functional wallet test
wallet_multisig_descriptor_psbt as this is intended as documentation

doc: replace `bitcoin-cli` with `bitcoin rpc` in multisig-tutorial.md

removed -named parameter where possible.

fixed a couple bugs where -signet was not passed

the call to getcoins.py requires the bitcoin-cli command still

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
signing boundarysigning or wallet path
AI analysis · Informational 15/100

This commit is a documentation and test update only. It changes the multisig tutorial and a related functional test to use a newer single 'multipath' descriptor format instead of two separate descriptors. There is no change to Bitcoin Core's consensus, networking, wallet security logic, or RPC behavior. It does not fix a vulnerability or introduce a security-relevant code change.

Security candidateMerge bitcoin/bitcoin#28584: Fuzz: extend CConnman testsby Ava Chow · f41f9724 · Sep 30, 2025 · 2840 filesMessage 91 · StrongInformational 15Details
Commit message · Ava Chow

Merge bitcoin/bitcoin#28584: Fuzz: extend CConnman tests

0802398e749c5e16fa7085cd87c91a31bbe043bd fuzz: make it possible to mock (fuzz) CThreadInterrupt (Vasil Dimov)
6d9e5d130d2e1d052044e9a72d44cfffb5d3c771 fuzz: add CConnman::SocketHandler() to the tests (Vasil Dimov)
3265df63a48db187e0d240ce801ee573787fed80 fuzz: add CConnman::InitBinds() to the tests (Vasil Dimov)
91cbf4dbd864b65ba6b107957f087d1d305914b2 fuzz: add CConnman::CreateNodeFromAcceptedSocket() to the tests (Vasil Dimov)
50da7432ec1e5431b243aa30f8a9339f8e8ed97d fuzz: add CConnman::OpenNetworkConnection() to the tests (Vasil Dimov)
e6a917c8f8e0f1a0fa71dc9bbb6e1074f81edea3 fuzz: add Fuzzed NetEventsInterface and use it in connman tests (Vasil Dimov)
e883b37768812d96feec207a37202c7d1b603c1f fuzz: set the output argument of FuzzedSock::Accept() (Vasil Dimov)

Pull request description:

Extend `CConnman` fuzz tests to also exercise the methods `OpenNetworkConnection()`, `CreateNodeFromAcceptedSocket()`, `InitBinds()` and `SocketHandler()`.

Previously fuzzing those methods would have resulted in real socket functions being called in the operating system which is undesirable during fuzzing. Now that https://github.com/bitcoin/bitcoin/pull/21878 is complete all those are mocked to a fuzzed socket and a fuzzed DNS resolver (see how `CreateSock` and `g_dns_lookup` are replaced in the first commit).

ACKs for top commit:
achow101:
ACK 0802398e749c5e16fa7085cd87c91a31bbe043bd
jonatack:
Review re-ACK 0802398e749c5e16fa7085cd87c91a31bbe043bd
dergoegge:
Code review ACK 0802398e749c5e16fa7085cd87c91a31bbe043bd

Tree-SHA512: a717d4e79f42bacf2b029c821fdc265e10e4e5c41af77cd4cb452cc5720ec83c62789d5b3dfafd39a22cc8c0500b18169aa7864d497dded729a32ab863dd6c4d

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
fuzzing or regression evidencecryptography-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 merge of a Bitcoin Core pull request that adds and extends fuzz tests for the CConnman networking component. Fuzz tests are automated test harnesses that feed random or mutated inputs to functions to find bugs. The changes only affect test code and test utilities; they do not change the behavior of the live Bitcoin node software. There is no indication this commit fixes a security vulnerability or introduces one.

Security candidatesign: Create MuSig2 signatures for known MuSig2 aggregate keysby Ava Chow · 4a273edd · Sep 30, 2025 · 3 filesMessage 78 · AdequateInformational 12Details
Commit message · Ava Chow

sign: Create MuSig2 signatures for known MuSig2 aggregate keys

When creating Taproot signatures, if the key being signed for is known
to be a MuSig2 aggregate key, do the MuSig2 signing algorithms.

First try to create the aggregate signature. This will fail if there are
not enough partial signatures or public nonces. If it does fail, try to
create a partial signature with all participant keys. This will fail for
those keys that we do not have the private keys for, and if there are
not enough public nonces. Lastly, if the partial signatures could not be
created, add our own public nonces for the private keys that we know, if
they do not yet exist.

78/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Names security-relevant behavior explicitly
Why it was queued
secret or key materialsigning boundarysigning or wallet path
AI analysis · Informational 12/100

This commit adds wallet-side support for producing MuSig2 aggregate and partial signatures when signing Taproot transactions. It is a feature implementation, not a fix for a known vulnerability. There is no evidence in the commit or supplied references that this change addresses a security bug, disclosure, or incident.

Security candidatepsbt: MuSig2 data in Fill/FromSignatureDataby Ava Chow · d99a0816 · Sep 30, 2025 · 2 filesMessage 45 · ThinLow 28Details
Commit message · Ava Chow

psbt: MuSig2 data in Fill/FromSignatureData

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
signing boundarysigning or wallet path
AI analysis · Low 28/100

This commit adds support for copying MuSig2 multi-signature data between two internal data structures used when handling Partially Signed Bitcoin Transactions (PSBTs). It is a feature-completion change: previously, MuSig2 participant lists, public nonces, and partial signatures were not transferred when converting between PSBT fields and the signing engine's SignatureData object, or when merging two PSBT inputs/outputs. The patch makes those transfers happen consistently. There is no direct evidence in the commit that this fixes an exploitable vulnerability; it appears to be a correctness/functional improvement for an upcoming MuSig2 signing workflow.

Security candidatesigningprovider: Add musig2 secnoncesby Ava Chow · 4d8b4f53 · Sep 30, 2025 · 2 filesMessage 70 · AdequateInformational 11Details
Commit message · Ava Chow

signingprovider: Add musig2 secnonces

Adds GetMuSig2SecNonces which returns secp256k1_musig_secnonce*, and
DeleteMuSig2Session which removes the MuSig2 secnonce from wherever it
was retrieved. FlatSigningProvider stores it as a pointer to a map of
session id to secnonce so that deletion will actually delete from the
object that actually owns the secnonces.

The session id is just a unique identifier for the caller to determine
what secnonces have been created.

70/100 · AdequateMessage clarity
✓ Descriptive subject✓ Provides detailed explanatory context✓ Explains rationale or failure mode
Why it was queued
signing boundarysigning or wallet path
AI analysis · Informational 11/100

This commit adds infrastructure for storing and retrieving MuSig2 secret nonces (temporary cryptographic values used in multi-signature setup) inside Bitcoin Core's signing provider classes. It is a code organization change that introduces storage methods and a deletion method, but does not by itself change how transactions are signed or validated. There is no indication in the commit that it fixes a known security bug.