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.
Message quality measures whether a commit identifies its scope, purpose, rationale, testing, and supporting references. It does not change the security-severity score.
This is a large internal code reorganization (refactor) in Bitcoin Core. It creates a new BlockTemplateManager class that takes over block-template creation, block submission, and tip-waiting helpers that were previously spread across seve…
Large refactor touching mining, RPC, interfaces, and test shutdown pathsNew object lifetime dependency: BlockTemplateManager holds references to mempool, chainman, and notifications; explicit reset ordering added in Shutdown/InitAndLoadChainstate/test setupsRemoval of early-init node.mining interface; BlockTemplateManager is now created after chainstate load, with a comment that it must exist before setChainstateLoaded(true) unblocks IPC waiters
This commit adds the first implementation of BIP352 (Silent Payments) to Bitcoin Core. Silent Payments are a new type of privacy-preserving Bitcoin address that lets someone receive payments without publicly revealing a fixed address. The …
New cryptographic feature implementation (BIP352 Silent Payments)Extensive use of secp256k1 silentpayments moduleInput public key extraction from P2PKH, P2WPKH, P2SH-P2WPKH, and P2TR inputs
This update fixes a wallet database loading bug where a damaged or tampered Bitcoin wallet file could cause the program to read past the end of a stored extended public key (xpub). The patch makes the loader check the stored xpub length be…
Out-of-bounds read in wallet descriptor cache deserializationASan container-overflow triggered by malformed on-disk recordMissing length validation between record size prefix and fixed-size decoder
This commit adds a new wallet RPC called listrawtransactions to Bitcoin Core. It is a feature addition that lets users list every transaction their wallet knows about, including internal transfers and consolidations that the existing listt…
No security-relevant bug fix or vulnerability patch is present in the diff.New RPC exposes additional wallet transaction metadata, but only to callers already authorized for wallet RPCs.Code is a refactor of existing gettransaction logic into shared helpers; no new cryptographic, network, or consensus code.
This Bitcoin Core update fixes several wallet bugs where a failed database write could leave a wallet in an inconsistent state. For example, encrypting a wallet or changing its passphrase could appear to succeed in memory while the change …
Atomicity fix for encryption state and descriptor key persistenceFailure to persist master key during encryption previously reported success in memoryPassphrase change could activate new passphrase only in memory
This commit only changes Bitcoin Core's internal functional test code. It replaces hard-coded test keys and addresses with ones generated from a new test helper class, and unifies how tests tell nodes not to create a default wallet. There …
This commit only adds a new automated test to Bitcoin Core. It checks that when two partially-signed Bitcoin transactions (PSBTs) are combined, any custom 'unknown' data fields attached to them are preserved correctly. There is no change t…
This is a Bitcoin Core wallet maintenance patch. It speeds up a wallet function that checks whether a descriptor already exists by caching a hash of the descriptor's canonical text, instead of rebuilding that text every time. It also tidie…
No security-relevant signal in commit message or diffChange is described as performance improvement and code cleanupBackwards-compatibility test notes a known miniscript wallet loading incompatibility between v31.0/v31.1 and other versions, but this is a documented compatibility quirk, not a vulnerability
This is a documentation-only fix for Bitcoin Core's machine-readable RPC help data. It changes several default values from literal strings to 'hint' labels (because the real default depends on context) and corrects one boolean default from…
OpenRPC schema/default mismatch correctionRPC help metadata type correction (string 'false' to boolean false)No executable code path changes
This commit fixes documentation metadata for six Bitcoin Core RPC arguments. It changes how default values are described so that automatically generated API docs and schemas are accurate. The actual behavior of the software when running is…
No runtime code changesOnly RPC help/schema metadata modifiedVendor explicitly states runtime behavior is unchanged
This commit fixes a bug in Bitcoin Core's MuHash3072 cryptographic code where dividing a MuHash object by itself (x /= x) produced the wrong mathematical result. The fix is straightforward: the code now saves the divisor's numerator before…
Cryptographic correctness bug in MuHash3072 division operatorSelf-aliasing in operator/= produces incorrect 1/D result instead of empty setNo production code path identified that triggers self-division
This is a build-compatibility fix, not a security patch. It changes how some constant data is stored internally so that Apple's macOS linker (ld64) can build Bitcoin Core correctly. The change avoids a linker bug that caused build failures…
No security-relevant code logic changedChange is a linker bug workaround, not a vulnerability fixConstants remain read-only; no new attack surface introduced
This commit refactors Bitcoin Core's wallet descriptor import feature so the same logic can be used by both the RPC command and a new GUI-facing interface. It also tightens one input rule: negative timestamps are now rejected, and the mini…
Refactor of security-sensitive wallet import code into shared CWallet pathNew input validation: negative timestamps rejected for importdescriptorsCentralization of descriptor range bound checks in CheckDescriptorRangeBounds
This change fixes a bug in how Bitcoin Core reconnects to the Tor control port. A previous update accidentally removed the wait time between reconnect attempts when an already-established Tor control connection was dropped. Without the wai…
Uncontrolled retry loop causing resource exhaustion and log floodingLocal-only Tor control port interaction; no remote attacker path by defaultRegression introduced by prior refactor (#34158) and restored here
This change updates the Windows code-signing tool used in Bitcoin Core's reproducible build process. It fixes a build-time failure where signature verification could not complete because a certificate package was missing and the old tool v…
Tooling update in release signing pipelineRestores CA certificate store for signature verificationDisables CRL/CDP network lookups during verification
This change lets Bitcoin Core store different custom signet blockchains in separate data folders, using a unique suffix derived from each signet's network identifier. It also adds a friendlier error hint in bitcoin-cli when an RPC authenti…
Data isolation between distinct custom signets reduces risk of cross-network state corruption or accidental mainnet/testnet confusionNo memory-safety, cryptographic, or consensus changes observedNo privilege escalation, remote code execution, or denial-of-service vectors introduced in the diff
This change adds two extra pieces of information—whether a spent output came from a coinbase transaction and the block height at which it was created—to a Bitcoin Core REST API endpoint. It is a feature/parity improvement to make the REST …
This change makes Bitcoin Core treat manually-added peers (from -addnode, -connect, or the addnode RPC) more gently during Initial Block Download (IBD). Previously, if such a peer was slow or stalled at sending blocks, the node would disco…
Behavior change in peer disconnection logic during IBDManual peers exempted from block-stalling disconnectionNew per-peer cooldown state m_block_download_paused_until introduced
This is a small fix in Bitcoin Core's own test helper code. A helper function used only in tests could crash with an IndexError when given an extremely short fake signature, instead of cleanly returning False. The change moves a length che…
Out-of-order bounds check leading to IndexError in test helperRegression test added for malformed short DER signaturesTest-only code path, no production validation logic changed
This commit only adds a new functional test to Bitcoin Core. It checks that the getrawtransaction RPC can retrieve a stale block's coinbase transaction via the optional txindex, and that the response correctly shows the block is no longer …
Expand any commit for its author, full message, clarity score, changed files, triage signals, analysis, and source link.
Security candidateqa: Silence socket.timeout exception when substituting it for a JSONRPCExceptionby Hodlinator · f42226d5 · Jun 4, 2026 · 1 fileMessage 65 · AdequateInformational 15Details
Commit message · Hodlinator
qa: Silence socket.timeout exception when substituting it for a JSONRPCException
This prevents "During handling of the above exception, another exception occurred:" and an extra traceback.
65/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
authentication path
AI analysis · Informational 15/100
This is a one-line change in Bitcoin Core's internal test framework. It only affects how error messages are displayed when a test RPC call times out, suppressing an extra Python traceback. It does not change any production code, network behavior, or security logic.
p2p: Saturate LocalServiceInfo::nScore updates at INT_MAX
Signed overflow on nScore updates is undefined behavior. Use SaturatingAdd in AddLocal() and SeenLocal() so increments saturate at INT_MAX instead of overflowing.
Add unit test coverage for saturation in both code paths.
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
memory safety
AI analysis · Low 37/100
This commit fixes a subtle programming bug in Bitcoin Core's peer-to-peer networking code. A local network address score counter could, in theory, overflow when repeatedly incremented, which is 'undefined behavior' in C++ and could potentially cause the program to misbehave or crash. The fix makes the counter stop increasing once it reaches the maximum integer value, and adds tests to confirm that behavior.
Security candidatemigrate: Handle HD chains that have identical seeds but different IDsby Ava Chow · de92208c · Jun 3, 2026 · 2 filesMessage 78 · AdequateLow 41Details
Commit message · Ava Chow
migrate: Handle HD chains that have identical seeds but different IDs
The seed ID is calculated from a pubkey produced by treating the seed as a private key. This calculation includes a pubkey compression parameter, even thought that compression is completely irrelevant for the usage of the seed as a BIP 32 seed. Thus migration should detect if a seed has been used multiple times by checking if the computed master key was already processed.
The spkm_migration fuzzer needs to have it's added descriptors accounting to be updated for this fix.
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 materialfuzzing or regression evidencesigning or wallet path
AI analysis · Low 41/100
This commit fixes a wallet migration bug in Bitcoin Core. When converting old-style wallets to modern descriptor wallets, the migration code could process the same BIP 32 seed more than once because it identified seeds by a 'seed ID' that changes depending on a technical detail (public-key compression) that does not actually affect the seed's value. The fix now detects duplicate seeds by comparing the derived master extended public key, preventing redundant or conflicting descriptors from being created during migration. There is no direct evidence this is exploitable as an attack; it appears to be a correctness and robustness fix.
Security candidateversionbits: Limit live activation params and activation warnings per BIP323by Anthony Towns · f802edf5 · Jun 1, 2026 · 5 filesMessage 75 · AdequateLow 27Details
Commit message · Anthony Towns
versionbits: Limit live activation params and activation warnings per BIP323
Test bits are conserved. This only has an effect on the warnings.
Co-Authored-By: Antoine Poinsot <mail@antoinep.com>
75/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Mentions testing or verification
Why it was queued
secret or key material
AI analysis · Low 27/100
This Bitcoin Core change narrows which version bits trigger live 'unknown soft fork' warnings from 29 bits down to 5, following the new BIP323 specification. It does not change how many bits exist in block headers or how test networks behave; it only reduces false or misleading upgrade alerts for bits that the network no longer treats as active deployment candidates.
Security candidatekey: validate BIP32 seed length in CExtKey::SetSeedby Muhammad · 2cf9d79d · May 28, 2026 · 1 fileMessage 81 · StrongLow 42Details
Commit message · Muhammad
key: validate BIP32 seed length in CExtKey::SetSeed
BIP32 specifies that seed must be between 128 and 512 bits (16 to 64 bytes). CExtKey::SetSeed currently accepts any length, including empty seeds, which could lead to weak master keys.
Add an Assert at the start of SetSeed to enforce the valid seed length range.
Fixes #35308
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
secret or key materialdefensive validation
AI analysis · Low 42/100
This commit adds a safety check to Bitcoin Core's code that creates master cryptographic keys from a seed. The BIP32 standard says seeds must be 16 to 64 bytes long, but the function previously accepted any length, including empty seeds. The fix rejects out-of-range seeds with an internal assertion. It is a hardening change rather than a fix for an active exploit path, because callers in the current codebase already supply valid-length seeds.
guix, refactor: Remove unused `out_name()` function
50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
boot or update path
AI analysis · Informational 15/100
This commit simply removes an unused helper function from a Guix build-attestation script. There is no change to how Bitcoin Core runs, no security fix, and no vulnerability introduced.
... Model name: AMD Ryzen 9 7950X3D 16-Core Processor ... C++ compiler .......................... GNU 15.2.0, /usr/bin/g++ CMAKE_BUILD_TYPE ...................... Debug Preprocessor defined macros ........... DEBUG DEBUG_LOCKORDER DEBUG_LOCKCONTENTION RPC_DOC_CHECK ABORT_ON_FAILED_ASSUME _GLIBCXX_DEBUG _GLIBCXX_DEBUG_PEDANTIC _LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_DEBUG C++ compiler flags .................... -m64 -O0 -ftrapv -O1 -g3 -g3 -std=c++20 ... ... feature_dbcrash.py | ✓ Passed | 2806 s
100/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
defensive validationauthentication path
AI analysis · Informational 15/100
This change only adjusts Bitcoin Core's continuous integration (CI) test configuration. It tells the test runner to skip one specific test, feature_dbcrash.py, when running with certain command-line options because that test is extremely slow (about 47 minutes in one run). There is no code change that affects how Bitcoin nodes operate, and no security issue is present.
wallet, test: remove -walletrbf startup option from rpc_psbt.py
Also, include PSBT_GLOBAL_FALLBACK_LOCKTIME key/value while making the PSBT v2 blank for combinepsbt RPC.
75/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Mentions testing or verification
Why it was queued
signing boundarysigning or wallet path
AI analysis · Informational 15/100
This commit only changes Bitcoin Core's own test code. It removes the obsolete -walletrbf startup option from two functional tests and adds a missing PSBT v2 field (fallback locktime) to a test helper that creates blank PSBTs. There is no change to production wallet or node code, so it does not affect real users' funds, transactions, or network security.
Security candidateutil: Require integers for SaturatingAdd() and AdditionOverflow()by Hodlinator · 0774eaaf · May 25, 2026 · 1 fileMessage 73 · AdequateLow 33Details
Commit message · Hodlinator
util: Require integers for SaturatingAdd() and AdditionOverflow()
Previously we could fall back to using an unspecialized implementation of std::numeric_limits<T> which would compile as long as the numeric operators existed, but would return 0 for min() & max().
73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
memory safety
AI analysis · Low 33/100
This change tightens two low-level math helper functions so they only accept whole-number (integer) types. Previously, a non-integer type could slip through and silently produce wrong min/max values because the generic fallback for numeric limits returns 0. The patch prevents that misuse at compile time rather than relying on an internal check.
Security candidatetest: remove the lazy import of util in authproxyby rkrux · 7be0d6fa · May 25, 2026 · 1 fileMessage 82 · StrongInformational 15Details
Commit message · rkrux
test: remove the lazy import of util in authproxy
This lazy import prompted the removal of the circular dependency, so remove it now that we can.
82/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body✓ Mentions testing or verification
Why it was queued
authentication path
AI analysis · Informational 15/100
This is a minor code cleanup in Bitcoin Core's test framework. It removes a lazy (deferred) import and replaces it with a normal import at the top of the file. There is no security issue here—it's purely a refactoring change to simplify the code after an earlier dependency cleanup.
Security candidatetest: move out JSONRPCException from authproxy to utilby rkrux · 779f4446 · May 25, 2026 · 10 filesMessage 100 · StrongInformational 15Details
Commit message · rkrux
test: move out JSONRPCException from authproxy to util
So that util is not dependent on authproxy at all and going forward authproxy can use util methods.
Reviewing with --color-moved=dimmed-zebra option can be helpful.
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
signing or wallet pathauthentication path
AI analysis · Informational 15/100
This is a harmless internal code cleanup in Bitcoin Core's test suite. It moves a Python exception class named JSONRPCException from one test helper file (authproxy.py) to another (util.py) and updates the files that import it. There is no change to how Bitcoin nodes behave, no fix for a security bug, and no change that affects real users or live networks.
Security candidateci: switch to GitHub cache for all runnersby willcl-ark · c03107ac · May 22, 2026 · 5 filesMessage 80 · StrongInformational 15Details
Commit message · willcl-ark
ci: switch to GitHub cache for all runners
Cirrus is winding down and github now offers more than 10GB cache.
Switch to GH cache for all runner-types. Simplify docker build arg construction, and reduce the number of needed action permissions.
80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Why it was queued
credential or privilege statedocumentation-only discount
AI analysis · Informational 15/100
This commit is a routine infrastructure change for Bitcoin Core's continuous integration (CI) system. It switches the CI cache provider from Cirrus to GitHub's own cache service because Cirrus is being phased out and GitHub now offers more cache storage. The changes only affect how build artifacts and dependencies are stored between automated test runs; they do not modify the Bitcoin Core software that users run, nor do they introduce any known security vulnerability.
Use uint64_t for the block weight options to match BlockAssembler's nBlockWeight accounting and the IPC schema's blockReservedWeight type.
A negative -blockmaxweight value is now parsed as 0 instead of an overflowed signed value before validation rejects it.
The new block_max_weight option is not exposed to IPC clients.
68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
memory safety
AI analysis · Low 27/100
This commit refactors how Bitcoin Core's block builder (the miner) handles the maximum block weight setting. It replaces an older signed-size field with a new optional unsigned field and fixes a parsing quirk: a negative command-line value for -blockmaxweight is now treated as 0 before validation rejects it, instead of silently wrapping around to a huge positive number. The change is mostly a cleanup, but it removes a small overflow/underflow footgun in argument parsing.
Security candidatemusig: Reject empty pubkey list in GetMuSig2KeyAggCacheby nervana21 · 8ce84321 · May 18, 2026 · 2 filesMessage 50 · ThinLow 37Details
Commit message · nervana21
musig: Reject empty pubkey list in GetMuSig2KeyAggCache
50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
cryptography-sensitive path
AI analysis · Low 37/100
This commit fixes a small but real bug in Bitcoin Core's MuSig2 multi-signature helper. Previously, if someone asked the code to aggregate an empty list of public keys, it would pass an invalid empty list deeper into the cryptographic library, which could cause undefined behavior or a crash. The change now rejects an empty list immediately and returns a failure, and a test was added to make sure this stays fixed.
Add unit and functional regression tests asserting that combine/merge preserves proprietary fields at the global, input, and output scopes.
95/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
signing boundaryfuzzing or regression evidencesigning or wallet path
AI analysis · Informational 15/100
This commit only adds new regression tests for Bitcoin Core's PSBT (Partially Signed Bitcoin Transaction) combine/merge logic. It checks that custom 'proprietary' data fields are preserved when two PSBTs are merged at global, input, and output levels. There is no production code change, no bug fix, and no security patch in the diff itself.
psbt: preserve proprietary fields when combining PSBTs
CombinePSBTs currently preserves unknown records but drops proprietary records at the global, input, and output levels because the Merge() paths never union m_proprietary.
Preserve proprietary records in PartiallySignedTransaction::Merge(), PSBTInput::Merge(), and PSBTOutput::Merge() so combine/merge keeps all PSBT key-value data.
85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
Why it was queued
signing boundarysigning or wallet path
AI analysis · Low 28/100
This commit fixes a bug in Bitcoin Core's handling of PSBTs (Partially Signed Bitcoin Transactions). When two PSBTs were combined, the software correctly kept 'unknown' extra data but accidentally discarded 'proprietary' custom data fields added by wallets or tools. The patch makes sure proprietary fields are preserved during merging, preventing potential loss of transaction metadata that some wallets rely on.
Security candidatelogging: use util/log.h where possibleby Anthony Towns · 02b2c411 · May 15, 2026 · 58 filesMessage 60 · AdequateInformational 15Details
Commit message · Anthony Towns
logging: use util/log.h where possible
Replace usage of logging.h with util/log.h where it suffices.
60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
seed or entropy pathsigning or wallet pathparser or protocol path
AI analysis · Informational 15/100
This commit is a simple internal cleanup: it swaps the full logging header file for a smaller, more focused one in many source files. There is no change to program behavior, no bug fix, and no security relevance.
Security candidatei2p: clean up SAM error loggingby takeshikurosawaa · b6c36704 · May 15, 2026 · 1 fileMessage 73 · AdequateLow 35Details
Commit message · takeshikurosawaa
i2p: clean up SAM error logging
SESSION CREATE requests can contain the I2P private key. Keep using the redacted request text in error messages, and avoid echoing raw SAM replies in the generic reply error path.
This keeps the error useful while avoiding logging either the private-key-bearing request or unescaped router-controlled reply bytes. No network behavior change is intended.
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
secret or key material
AI analysis · Low 35/100
This commit tightens up error messages in Bitcoin Core's I2P (anonymous networking) code. Previously, error messages could accidentally include the full text of a SAM request that may carry the user's I2P private key, or the full raw reply from an I2P router. The patch keeps the error useful by still referencing the redacted request, but stops echoing the sensitive request body and unescaped router replies into logs. It is a defensive information-disclosure fix, not a change to network behavior.
Security candidatetest: Check that MuSig2 signing does not reuse noncesby Ava Chow · 2ef6679c · May 13, 2026 · 1 fileMessage 87 · StrongInformational 12Details
Commit message · Ava Chow
test: Check that MuSig2 signing does not reuse nonces
Run each MuSig2 operation twice to check that new nonces are generated and used throughout signing.
87/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body✓ Mentions testing or verification
Why it was queued
signing boundarysigning or wallet path
AI analysis · Informational 12/100
This commit only adds a new test to Bitcoin Core's functional test suite. It runs each MuSig2 signing operation twice and checks that different nonces and partial signatures are produced each time. There is no change to wallet or consensus code, so it does not fix or introduce a vulnerability by itself. It is a defensive regression test aimed at catching nonce-reuse bugs in the future.
Security candidaterefactor, key: move `CreateMuSig2PartialSig` to `musig.{h,cpp}` moduleby Sebastian Falbesoner · 8ba5f68b · May 13, 2026 · 5 filesMessage 78 · AdequateInformational 15Details
Commit message · Sebastian Falbesoner
refactor, key: move `CreateMuSig2PartialSig` to `musig.{h,cpp}` module
Compared to `CreateMuSig2Nonce`, creating a partial signature has a stronger link to the secret key used, but for consistency reasons it still makes sense to move all functionality that call the secp256k1 musig API functions to the `musig.{h,cpp}` module for consistency.
Can be reviewed via the git option `--color-moved=dimmed-zebra`.
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 15/100
This commit is a pure code move: it takes the CreateMuSig2PartialSig function out of the CKey class in key.cpp/key.h and places it in the musig.cpp/musig.h module. The function's logic is unchanged, and the only caller is updated to use the new free-function name. There is no security fix or behavior change.
Security candidatepsbt, test: remove address type restrictions in testby rkrux · 81348576 · May 13, 2026 · 1 fileMessage 87 · StrongInformational 15Details
Commit message · rkrux
psbt, test: remove address type restrictions in test
Because the corresponding Taproot fields were added in PSBT in PR 22558, so these restrictions are no longer necessary.
87/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body✓ Explains rationale or failure mode✓ Mentions testing or verification
Why it was queued
signing boundarysigning or wallet path
AI analysis · Informational 15/100
This is a minor test-only cleanup. It removes a TODO comment and two command-line flags that forced a specific address type in one of Bitcoin Core's automated functional tests. The change has no effect on production code, user wallets, or network behavior.
Security candidatekey: cleanse ChainCode on destructionby Thomas · 21a1380c · May 12, 2026 · 4 filesMessage 78 · AdequateLow 49Details
Commit message · Thomas
key: cleanse ChainCode on destruction
HMAC primitives cleanse their internal stack buffers, but a caller's ChainCode remains populated in memory after use. Promote ChainCode from `typedef uint256` to a `base_blob<256>` subclass with a memory_cleanse() destructor, so chain codes in CExtKey, CExtPubKey, and local variables are cleansed on scope exit.
Retype MUSIG_CHAINCODE from `constexpr uint256` to `const ChainCode` to match its BIP328 semantic role. Dropping `constexpr` (ChainCode is no longer a literal type) also removes the GCC-14 consteval lambda workaround.
Remove the duplicate typedef in pubkey.h (which includes hash.h transitively). Two fuzz-test call sites in test/fuzz/key.cpp now construct the chain-code argument explicitly rather than relying on the typedef.
78/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
secret or key materialfuzzing or regression evidence
AI analysis · Low 49/100
This commit is a defensive hardening change for Bitcoin Core's handling of BIP32 'chain codes'—secret-derived values used when creating child keys from a master key. Previously these values were stored as ordinary 256-bit numbers that could remain in memory after use. The change makes ChainCode a dedicated type that securely wipes its own memory when it goes out of scope, similar to how private keys are already handled. It is a preventive security improvement rather than a fix for an active exploit.
Security candidatemusig: Include pubnonce in session idby Ava Chow · bb05986c · May 12, 2026 · 4 filesMessage 80 · StrongLow 31Details
Commit message · Ava Chow
musig: Include pubnonce in session id
Multiple signing sessions over the same message are allowed. Including the pubnonce in the session id allows distinguishing the signing sessions.
This should be safe as a new secret nonce is used for each signing session, and after the nonce is used, it is still deleted from memory in order to avoid reuse.
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
signing boundarynonce handlingsigning or wallet path
AI analysis · Low 31/100
This change tweaks how Bitcoin Core's MuSig2 multi-signature code keeps track of active signing sessions. Previously, the session identifier was based only on the public keys and the transaction hash. Now it also includes each participant's public nonce. This matters because the same keys and transaction can legitimately be signed more than once, and without the nonce in the identifier the code could confuse two different signing sessions and risk reusing or misplacing secret nonce data. The commit itself is framed as a safety improvement, not a fix for a known active bug or exploit.
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
signing boundarydefensive validationsigning or wallet path
AI analysis · Moderate 62/100
This commit fixes a bug in Bitcoin Core's descriptorprocesspsbt RPC command. Previously, the command could mark a partially-signed Bitcoin transaction (PSBT) as 'complete' and return a finalized transaction hex even when one of the signatures was actually invalid. The fix makes the command verify signatures cryptographically, not just check that signature data is present. The new test deliberately corrupts a signature and confirms the command now correctly reports the PSBT as incomplete.
Security candidatecrypto: cleanse HMAC stack buffers after useby Thomas · b3a3f883 · May 10, 2026 · 2 filesMessage 68 · AdequateModerate 51Details
Commit message · Thomas
crypto: cleanse HMAC stack buffers after use
CHMAC_SHA256 and CHMAC_SHA512 leave two stack buffers populated on return: rkey[] holds K' XOR ipad after the constructor, and temp[] holds the inner-hash output after Finalize().
When the HMAC is keyed with sensitive material (chain code in BIP32Hash() in hash.cpp for BIP32 child key derivation; PRK in HKDF-Expand in hkdf_sha256_32.cpp, used for BIP324 transport keying), rkey is one constant XOR from that key, and temp is a one-way digest covering it.
Cleanse both buffers with memory_cleanse(), matching the convention in chacha20.cpp and chacha20poly1305.cpp. No observable change for callers.
68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
secret or key materialcryptography-sensitive path
AI analysis · Moderate 51/100
This commit is a defensive hardening patch for Bitcoin Core's HMAC code. It wipes two temporary memory buffers that previously held sensitive key-derived data after the HMAC operation finishes. The change reduces the risk that leftover key material could leak through memory dumps, core dumps, or side-channel attacks, but it does not fix an active bug or known exploit.