BC
← All projectsBitcoin Core

Bitcoin Core

The Bitcoin network's reference node and wallet implementation.

BitcoinSupply chainNormal
Repository coverage

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

257security candidates611second-pass queue2888AI analyses
188commits · 30 days
472commits · 60 days
1489commits · 180 days
2878commits · 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
949Strong · 80–100
1188Adequate · 60–79
688Thin · 40–59
88Opaque · 0–39
6security candidates with opaque commit messaging
Read the scoring rubric →
Developer activity

Who is changing the project?

Public Git author strings; identities are not independently verified.

DeveloperCommitsCandidatesAnalyzedHigh riskMessage avg.
Antoine Poinsot22422170
Ava Chow15850158064
MarcoFalke41021406074
Lőrinc17721177081
fanquake22819226057
Hennadii Stepanov21114208063
rkrux57957074
Sjors Provoost89889074
Sebastian Falbesoner33733073
merge-script32718088
David Gumberg55655072
Pieter Wuille95595066
Analysis record

Published AI watches

Last scanned 17 minutes ago

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

Merge bitcoin/bitcoin#35729: refactor: test: Unroll `&&` conditions in macros

This commit only changes Bitcoin Core's internal test code. It splits combined conditions inside test-check macros (like BOOST_CHECK(a && b)) into separate checks so that when a test fails, the test output points to the exact failing condi…

aa0e0f79by merge-script+196−9519 files
No security note in commit
Low 26 AI analysisMessage 100 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#35493: wallet, descriptor: Fix MuSig private key completeness checks on `importdescriptors`

This commit fixes a bug in Bitcoin Core's wallet import logic for a new type of multi-signature setup called MuSig. Previously, when a user imported a MuSig descriptor that already contained all needed private keys, the wallet incorrectly …

False-positive warning in wallet import for fully-private MuSig descriptorsIncorrect private-key completeness check on synthetic aggregate public keyDescriptor logic now delegates completeness to `Descriptor::HavePrivateKeys()`
2c01832fby merge-script+76−374 files
No security note in commit
Informational 15 AI analysisMessage 81 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#35943: doc: fix dead link in txrequest.h

This commit only fixes a broken web link in a code comment. It replaces an outdated URL to a research paper with a working URL to the same paper. There is no change to program logic, no security fix, and no vulnerability.

5d051c05by merge-script+1−11 file
No security note in commit
Informational 15 AI analysisMessage 100 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#33186: wallet, test: Ancient Wallet Migration from v0.14.3 (no-HD and Single Chain)

This commit only adds new automated tests for migrating very old Bitcoin Core wallets (version 0.14.3 from 2017) to the modern descriptor wallet format. It does not change any wallet production code, consensus rules, or network behavior. T…

757aa573by merge-script+246−124 files
No security note in commit
Low 28 AI analysisMessage 91 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#35925: wallet, rpc: Exclude non-owned addresses from listreceivedby*

This update fixes a wallet reporting bug. When a user asked their Bitcoin wallet to list every address that had received money, including empty ones, the result incorrectly included foreign addresses that the wallet merely knew about (for …

Information disclosure: wallet RPCs leaked existence/labels of foreign addressesIncorrect access-control boundary: non-owned addresses exposed in 'received' reportFix uses IsMine() rather than address purpose metadata, avoiding inconsistent purpose handling
e8cc21c5by Ava Chow+19−32 files
No security note in commit
Informational 15 AI analysisMessage 91 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#35937: test: Append print_suppressions=0 to LSAN_OPTIONS, and suppress bitcoin-qt

This commit only changes test configuration. It tells the LeakSanitizer tool used during automated testing to stop printing long lists of suppressed memory leaks, and it narrows the list of ignored leaks to the bitcoin-qt GUI test binary. …

5973e075by merge-script+3−42 files
No security note in commit
Informational 15 AI analysisMessage 91 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#35928: doc: mention -DWITH_ZMQ=ON in macOS build guide

This is a one-line documentation update to the macOS build guide. It adds a note telling users to pass a specific CMake option if they want ZeroMQ notification support. There is no code change and no security impact.

8397e09eby merge-script+1−11 file
No security note in commit
Informational 15 AI analysisMessage 100 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#35482: fuzz: exercise the transaction-handling path in process_message(s)

This commit only changes Bitcoin Core's internal fuzz testing code. It makes the fuzz tests exercise more of the transaction-handling code path by toggling Initial Block Download mode and resetting the mempool between test runs. There is n…

No production code modifiedNo consensus, validation, net_processing, or wallet logic changedOnly fuzz test harnesses and test utilities affected
f11dc617by merge-script+105−798 files
No security note in commit
Informational 15 AI analysisMessage 91 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#35914: test, fuzz: Remove unused variables

This commit removes unused variables from Bitcoin Core's test and fuzzing code. It is a cleanup/refactoring change with no effect on the live network software or user funds. It does not fix or introduce any security vulnerability.

d36bf709by merge-script+1−138 files
No security note in commit
Informational 15 AI analysisMessage 93 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#35896: refactor: Default uint256::operator==, add operator<=>

This commit is a routine code cleanup in Bitcoin Core. It switches the uint256 equality and comparison operators to use standard C++20 defaults, removes an old custom Compare() helper, and marks an internal assertion-failure function as ne…

ed2c59abby merge-script+99−245 files
No security note in commit
Moderate 62 AI analysisMessage 96 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#35872: rpc: avoid descriptor range counter overflow

This update fixes a counting bug in several Bitcoin Core RPC commands that scan descriptors. When a user requested a descriptor range ending at the maximum allowed value (2,147,483,647), the internal counter used a smaller integer type and…

Signed integer overflow in descriptor expansion loopCrash/undefined behavior on maximum-range descriptor scansAuthenticated RPC surface affected (scantxoutset, scanblocks, getdescriptoractivity, utxoupdatepsbt, descriptorprocesspsbt)
b388674aby Ava Chow+3−12 files
Vendor flagged security relevance
Informational 19 AI analysisMessage 91 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#35842: rpc: Properly make RPCResult::Type::ANY non-test-only

This is a small cleanup and documentation fix for Bitcoin Core's RPC help system. It removes a comment that incorrectly said a certain output type was 'for testing only' and makes the help text properly display those outputs. There is no d…

No memory safety, cryptography, consensus, or authorization changes observedChange is confined to RPC help/schema metadata generationComment-only/type-label change from 'for testing only' to general use
c36ffd87by merge-script+42−364 files
No security note in commit
Informational 15 AI analysisMessage 93 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

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

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

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

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

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

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

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

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

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

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

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

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

refactor: Enable misc-definitions-in-headers

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

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

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

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

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

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

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

fafe5042by MarcoFalke+4−111 file
No security note in commit
Repository ledger

Explore captured commits

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

Lower-priorityci: add Valgrind fuzzby fanquake · e4b04630 · Oct 22, 2025 · 1 fileMessage 50 · ThinInformational 15Details
Commit message · fanquake

ci: add Valgrind fuzz

50/100 · ThinMessage clarity
✓ Subject identifies a change✓ Uses a recognizable type or scope✓ Mentions testing or verification! No meaningful explanatory body
Why it was queued
fuzzing or regression evidencedocumentation-only discount
AI analysis · Informational 15/100

This commit simply adds a new automated testing job to Bitcoin Core's continuous integration (CI) pipeline. It will run the project's fuzz tests under Valgrind, a memory-error detection tool. There is no code change to Bitcoin Core itself, no bug fix, and no security vulnerability being patched.

Lower-prioritytest: Use unassigned p2p_port instead of hardcoded 60000 in p2p_i2p_ports.pyby MarcoFalke · fa20275d · Oct 21, 2025 · 1 fileMessage 72 · AdequateInformational 15Details
Commit message · MarcoFalke

test: Use unassigned p2p_port instead of hardcoded 60000 in p2p_i2p_ports.py

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

This is a minor test-only change in Bitcoin Core. It replaces a hardcoded port number (60000) used in a test with a dynamically chosen unassigned port. There is no effect on the actual Bitcoin software users run, and no security issue is being fixed or introduced.

Lower-prioritydoc: Update add checksum instructions in tutorialby Ben Westgate · de7c3587 · Oct 21, 2025 · 1 fileMessage 60 · AdequateInformational 15Details
Commit message · Ben Westgate

doc: Update add checksum instructions in tutorial

Clarify how to add the checksum for a descriptor in non-canonical form.

60/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides an explanatory body
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This commit is a minor documentation correction in a tutorial file. It changes one sentence to clarify that the `getdescriptorinfo` RPC returns a separate `checksum` field (rather than a full descriptor with checksum embedded) that users must manually append to their descriptor. There is no code change and no security relevance.

Lower-priorityci: Only write docker build images to Cirrus cacheby MarcoFalke · fabe0e07 · Oct 21, 2025 · 1 fileMessage 77 · AdequateInformational 15Details
Commit message · MarcoFalke

ci: Only write docker build images to Cirrus cache

Other cache providers offer too little space for this to be useful.

77/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This is a minor change to Bitcoin Core's continuous integration (CI) setup. It stops saving large Docker build cache images to GitHub Actions' cache and only saves them to the Cirrus cache, because other cache providers don't offer enough storage. There is no user-facing or security-relevant change.

Lower-priorityci: Move buildx command to python scriptby MarcoFalke · fab64a5d · Oct 21, 2025 · 2 filesMessage 80 · StrongInformational 15Details
Commit message · MarcoFalke

ci: Move buildx command to python script

This has a few benefits:

* The shellcheck SC2086 warning is disabled for the whole command, but
is only needed for the DOCKER_BUILD_CACHE_ARG env var. So in Python,
only pass this one env var to shlex.split() for proper word splitting.
* Future logic improvements can be implemented in Python.

The comments are moved, which can be checked via the git options:
--color-moved=dimmed-zebra --color-moved-ws=ignore-all-space

80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
AI analysis · Informational 15/100

This commit is a routine cleanup of Bitcoin Core's continuous integration (CI) scripts. It moves a Docker image-building command from a shell script into a Python script. There is no security-relevant change here—only how the CI tooling internally constructs the same Docker command.

Lower-priorityci: Remove unused MAYBE_CPUSETby MarcoFalke · fa72a2bd · Oct 21, 2025 · 1 fileMessage 70 · AdequateInformational 15Details
Commit message · MarcoFalke

ci: Remove unused MAYBE_CPUSET

The option is currently unused. If it is used again in the future, it
could trivially be added back.

Also, the logic is just a single undocumented python command one-liner.

So remove it for now.

70/100 · AdequateMessage clarity
✓ Descriptive subject✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
AI analysis · Informational 15/100

This commit removes an unused CI (Continuous Integration) option called MAYBE_CPUSET from a shell script that builds test containers. It is a cleanup change with no security relevance.

Lower-priorityci: Drop libFuzzer from msan fuzz taskby MarcoFalke · fa70e23d · Oct 21, 2025 · 1 fileMessage 67 · AdequateInformational 15Details
Commit message · MarcoFalke

ci: Drop libFuzzer from msan fuzz task

67/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Mentions testing or verification! No meaningful explanatory body
Why it was queued
fuzzing or regression evidence
AI analysis · Informational 15/100

This commit changes a single CI (continuous integration) test configuration file. It removes 'fuzzer' from the list of sanitizers used in an MSan (MemorySanitizer) fuzzing task, leaving only 'memory'. This is a build/test pipeline adjustment, not a change to Bitcoin Core's runtime code, wallet logic, networking, or consensus rules. There is no indication of a security vulnerability being fixed.

Lower-prioritybuild: Move CMAKE_SKIP_INSTALL_RPATH from CMake to Guix scriptby Henry Romp · 4b41f99d · Oct 18, 2025 · 2 filesMessage 85 · StrongInformational 15Details
Commit message · Henry Romp

build: Move CMAKE_SKIP_INSTALL_RPATH from CMake to Guix script

Remove CMAKE_SKIP_INSTALL_RPATH from CMakeLists.txt and add CMAKE_SKIP_RPATH to the Guix build script. This keeps build-environment-specific settings in the build scripts rather than hardcoded in the CMake configuration.

85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
AI analysis · Informational 15/100

This commit moves a build setting that controls whether executable files remember where to find shared libraries. Previously it was hardcoded in the main CMake configuration; now it is set only in the Guix reproducible-build script. This is a build-system hygiene change with no apparent security effect.

Lower-priority[doc] correct topology requirements in submitpackage helptextby glozow · 3d222825 · Oct 17, 2025 · 1 fileMessage 50 · ThinInformational 15Details
Commit message · glozow

[doc] correct topology requirements in submitpackage helptext

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

This commit only updates the help text for the submitpackage RPC command. It corrects the documentation to match the actual rules for what transactions can be submitted together. No code behavior changed, and there is no security issue.

Lower-prioritydoc: archive release notes for v28.3by fanquake · ceea24b9 · Oct 16, 2025 · 1 fileMessage 45 · ThinInformational 15Details
Commit message · fanquake

doc: archive release notes for v28.3

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
documentation-only discount
AI analysis · Informational 15/100

This commit simply archives the already-published release notes for Bitcoin Core version 28.3. It adds a Markdown file documenting what changed in that release, but does not modify any program code, configuration defaults, or network behavior. There is nothing here that could introduce or fix a security vulnerability on its own.

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.

Lower-priorityguix: remove python-pydantic-core input from LIEFby fanquake · 59c48989 · Oct 15, 2025 · 1 fileMessage 45 · ThinInformational 15Details
Commit message · fanquake

guix: remove python-pydantic-core input from LIEF

It's propagated by python-pydantic-2.

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

This commit is a routine cleanup of the Guix build recipe for the LIEF dependency. It removes a redundant input (python-pydantic-core) because it is already pulled in automatically by python-pydantic-2. There is no indication of a security vulnerability or functional change to Bitcoin Core itself.

Lower-priorityguix: patch around riscv issue with newer (2.40+) binutilsby fanquake · 7b5cc276 · Oct 15, 2025 · 2 filesMessage 81 · StrongInformational 18Details
Commit message · fanquake

guix: patch around riscv issue with newer (2.40+) binutils

See https://sourceware.org/bugzilla/show_bug.cgi?id=28509.
https://sourceware.org/git/?p=glibc.git;a=commit;h=68389203832ab39dd0dbaabbc4059e7fff51c29b.

Needed for the next commit, which bumps the time-machine.

81/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
AI analysis · Informational 18/100

This commit adds a build-system patch for Bitcoin Core's Guix reproducible-build environment. The patch fixes a glibc RISC-V assembly issue where jump instructions could incorrectly target symbols that the linker is allowed to override (preemptible symbols). It is a build-toolchain compatibility fix for newer binutils (2.40+) and does not change Bitcoin Core's runtime consensus or networking code.

Lower-priorityguix: update time-machine to 5cb84f2013c5b1e48a7d0e617032266f1e6059e2by fanquake · 9570ddbe · Oct 15, 2025 · 2 filesMessage 73 · AdequateInformational 11Details
Commit message · fanquake

guix: update time-machine to 5cb84f2013c5b1e48a7d0e617032266f1e6059e2

Package updates:
(base) glibc 2.35 -> 2.39
binutils 2.38 -> 2.41
diffutils 3.8 -> 3.10
gawk 5.2.1 -> 5.3.0
git-minimal 2.45.2 -> 2.46.0
grep 3.8 -> 3.11
gzip 1.12 -> 1.13
linux-headers 6.1.106 -> 6.1.119
make 4.3 -> 4.4.1
xz 5.2.8 -> 5.4.5

CMake 3.30 becomes available.
Clang/LLVM 19 becomes available.

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Informational 11/100

This commit updates the Guix build environment used to create reproducible Bitcoin Core release binaries. It moves to a newer Guix snapshot and newer toolchain packages (like glibc, binutils, and compiler tools). There is no direct evidence in the commit that this fixes a specific security vulnerability, but keeping build dependencies current is a normal defensive maintenance practice that can reduce exposure to known bugs in older components.

Lower-priorityguix: use Clang & LLVM 19 for macOS buildby fanquake · 9f2a6927 · Oct 15, 2025 · 2 filesMessage 45 · ThinInformational 15Details
Commit message · fanquake

guix: use Clang & LLVM 19 for macOS build

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

This commit updates the Bitcoin Core macOS build process to use version 19 of the Clang compiler and LLVM linker instead of version 18. It also updates a build verification script to expect the new toolchain version. There is no indication of a security vulnerability or fix in the change itself.

Lower-priorityci: use Debian Trixie for macOS cross jobby fanquake · 91b5cbaa · Oct 15, 2025 · 2 filesMessage 57 · ThinInformational 15Details
Commit message · fanquake

ci: use Debian Trixie for macOS cross job

This will use Clang & LLVM 19.

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

This commit only changes which Linux container image is used for Bitcoin Core's automated macOS cross-compilation testing jobs, switching from Ubuntu 24.04 to Debian Trixie in order to use Clang/LLVM 19. It does not modify any wallet, networking, consensus, or node code that end users interact with, and it introduces no apparent security issue.

Lower-prioritytest: Move export_env_build_path to util.pyby MarcoFalke · fa75ef43 · Oct 15, 2025 · 2 filesMessage 67 · AdequateInformational 15Details
Commit message · MarcoFalke

test: Move export_env_build_path to util.py

67/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Mentions testing or verification! No meaningful explanatory body
AI analysis · Informational 15/100

This commit simply moves a small helper function from one test file to another. It does not change what the code does, only where the code lives. There is no security issue here.

Lower-prioritytest: Move get_binary_paths and Binaries to util.pyby MarcoFalke · fa9f4953 · Oct 15, 2025 · 2 filesMessage 87 · StrongInformational 15Details
Commit message · MarcoFalke

test: Move get_binary_paths and Binaries to util.py

Can be reviewed with the git options
--color-moved=dimmed-zebra --color-moved-ws=ignore-all-space

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

This commit is a simple code cleanup in Bitcoin Core's test framework. It moves two helper pieces—the Binaries class and get_binary_paths function—from one test file to another shared utility file, and updates the imports. There is no change to how Bitcoin works, no bug fix, and no security impact.

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.

AI review queuednode: change a tx-relay on/off flag to enumby Vasil Dimov · 07a92647 · Oct 15, 2025 · 10 filesMessage 68 · AdequateInformational 19Details
Commit message · Vasil Dimov

node: change a tx-relay on/off flag to enum

Previously the `bool relay` argument to `BroadcastTransaction()`
designated:

```
relay=true: add to the mempool and broadcast to all peers
relay=false: add to the mempool
```

Change this to an `enum`, so it is more readable and easier to extend
with a 3rd option. Consider these example call sites:

```cpp
Paint(true);
// Or
Paint(/*is_red=*/true);
```

vs

```cpp
Paint(RED);
```

The idea for putting `TxBroadcastMethod` into `node/types.h` by Ryan.

Co-authored-by: Ryan Ofsky <ryan@ofsky.org>

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 19/100

This commit is a straightforward code cleanup: it replaces a true/false 'relay' flag with a named enum so the code is easier to read and future-proof. It does not change what the program actually does—transactions are still added to the mempool and/or broadcast exactly as before. There is no security fix or vulnerability here.

Lower-prioritytest: P2SH sig ops are only counted with `SCRIPT_VERIFY_P2SH` flagby brunoerg · 3a10d700 · Oct 14, 2025 · 1 fileMessage 72 · AdequateInformational 16Details
Commit message · brunoerg

test: P2SH sig ops are only counted with `SCRIPT_VERIFY_P2SH` flag

72/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Mentions testing or verification! No meaningful explanatory body
AI analysis · Informational 16/100

This commit only adds a new test case to Bitcoin Core's own test suite. It checks that P2SH signature-operation counting is disabled when the relevant verification flag is not set. There is no change to production code, no bug fix, and no security patch.

Lower-prioritymempool: Store iterators into mapTx in mapNextTxby Suhas Daftuar · 6c73e474 · Oct 14, 2025 · 2 filesMessage 60 · AdequateInformational 14Details
Commit message · Suhas Daftuar

mempool: Store iterators into mapTx in mapNextTx

This takes the same amount of space as CTransaction pointers, and saves a map
lookup in many common uses.

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

This commit is a small internal cleanup in Bitcoin Core's memory pool (mempool) data structure. It changes how the mempool tracks which transaction spends a given coin: instead of storing a pointer to the transaction and then looking it up again in another table, it now stores an iterator directly into that table. This removes a few redundant lookups and simplifies some code paths. There is no indication this fixes a security bug or introduces a vulnerability.

Lower-priorityAllow moving an Epoch::Markerby Suhas Daftuar · 51430680 · Oct 14, 2025 · 1 fileMessage 45 · ThinInformational 11Details
Commit message · Suhas Daftuar

Allow moving an Epoch::Marker

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

This tiny change allows a small internal bookkeeping object (Epoch::Marker) to be moved in memory rather than copied. The commit message gives no security context. By itself this is a routine C++ cleanup; it does not obviously fix or introduce a vulnerability, though it slightly changes object lifetime behavior.

Lower-priorityTxGraph: change m_excluded_clustersby Greg Sanders · 9b43428c · Oct 14, 2025 · 1 fileMessage 68 · AdequateInformational 15Details
Commit message · Greg Sanders

TxGraph: change m_excluded_clusters

Change BlockBuilderImpl's m_excluded_clusters to unordered
set since ordering is not used.

Change the set to a set of sequence numbers for a modest
stability increase under fuzz testing.

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
fuzzing or regression evidence
AI analysis · Informational 15/100

This is a small internal code cleanup in Bitcoin Core's transaction graph code. It swaps one data structure (an ordered set of cluster pointers) for another (an unordered set of cluster sequence numbers). The behavior is unchanged; the change is described by the author as improving fuzz-test stability. There is no security-relevant bug fix here.

Lower-prioritytest: change log rate limit version gate from 299900 to 290100by Eugene Siegel · 7b544341 · Oct 14, 2025 · 1 fileMessage 72 · AdequateInformational 15Details
Commit message · Eugene Siegel

test: change log rate limit version gate from 299900 to 290100

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

This is a one-line change in Bitcoin Core's internal test framework. It adjusts the version number at which the test suite starts passing a '-nologratelimit' option to tested nodes, lowering the gate from an unreleased future version (299900) to the actual current release series (290100). It does not change production node behavior and has no direct security relevance.