BC
← All projectsBitcoin Core

Bitcoin Core

The Bitcoin network's reference node and wallet implementation.

BitcoinSupply chainNormal
Repository coverage

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

258security candidates613second-pass queue2891AI analyses
195commits · 30 days
469commits · 60 days
1488commits · 180 days
2867commits · 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
959Strong · 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 Chow16351161065
MarcoFalke41021406074
Lőrinc17721177081
fanquake22819226057
Hennadii Stepanov21214208063
rkrux57957074
Sjors Provoost89889074
merge-script36718088
Sebastian Falbesoner33733073
David Gumberg55655072
Pieter Wuille95595066
Analysis record

Published AI watches

Last scanned 34 minutes ago

Low 28 AI analysisMessage 81 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#35959: Update secp256k1 subtree to latest master

This commit updates Bitcoin Core's embedded copy of the secp256k1 cryptographic library to a newer version. The update adds a new Silent Payments module, lets advanced users swap in a custom SHA256 compression function, removes some old de…

Dependency update of a core cryptographic library (libsecp256k1)New runtime SHA256 compression callback with self-test/smoke test to catch mis-implementations earlyBehavior change in ellswift_xdh to reject secret keys >= curve order (vendor states not a security issue)
625f951bby Ava Chow+297−11626 files
No security note in commit
Informational 23 AI analysisMessage 91 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#35605: wallet: rpc: Deprecate `removeprunedfunds` RPC

This commit deprecates a Bitcoin Core wallet RPC command called removeprunedfunds. The command lets users delete transactions from their own wallet, which can alter displayed balances. The change does not fix a software bug; it is a cleanu…

RPC allows deletion of arbitrary wallet transactions, affecting balancesDeprecation framed by authors as removing a dangerous and maintenance-burden featureNo authentication bypass, memory corruption, or consensus change present in diff
e9ed5e83by Ava Chow+64−695 files
No security note in commit
Informational 18 AI analysisMessage 91 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#35930: wallet: post-#35501 cleanups in CWalletTx

This is a follow-up cleanup and hardening patch for the Bitcoin Core wallet's handling of transactions that have multiple possible witness versions (same transaction ID but different witness data). It renames a variable, simplifies a helpe…

Added input-validation during wallet transaction deserializationNew unit test specifically exercises rejection of mismatched variant txidFollow-up to PR #35501 which introduced witness-variant tracking in the wallet
512dc9afby Ava Chow+68−315 files
No security note in commit
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
Repository ledger

Explore captured commits

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

Lower-prioritytest: Avoid interface_ipc.py Duplicate ID errorsby Ryan Ofsky · e9c52272 · Sep 17, 2025 · 1 fileMessage 98 · StrongInformational 17Details
Commit message · Ryan Ofsky

test: Avoid interface_ipc.py Duplicate ID errors

This change should fix issue https://github.com/bitcoin/bitcoin/issues/33417
reported by zaidmstrr. It's possible to reproduce the `mp/proxy.capnp:0:
failed: Duplicate ID @0xcc316e3f71a040fb` error by installing libmultiprocess
system-wide, or to one of the locations listed in the python test's `imports`
list before the local libmultiprocess subtree, and then running the test.

98/100 · StrongMessage clarity
✓ 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
AI analysis · Informational 17/100

This is a test-only fix that changes the order of import directories in a single Python test file. It prevents a false 'duplicate ID' error when the test accidentally loads two copies of the same Cap'n Proto schema file from different libmultiprocess installations. It does not change production Bitcoin Core code and does not create a security vulnerability.

Lower-priorityrefactor: remove redundant locator cleanup in BaseIndex::Init()by Hao Xu · facd01e6 · Sep 17, 2025 · 2 filesMessage 85 · StrongInformational 15Details
Commit message · Hao Xu

refactor: remove redundant locator cleanup in BaseIndex::Init()

Leverage locator.IsNull() to simplify ReadBestBlock() and remove
unnecessary SetNull().

Co-authored-by: furszy <matiasfurszyfer@protonmail.com>
Co-authored-by: l0rinc <pap.lorinc@gmail.com>
Signed-off-by: Hao Xu <hao.xu@linux.dev>

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 is a small internal code cleanup in Bitcoin Core's index subsystem. It changes how the program reads a saved 'block locator' (a bookmark of where an index thinks it is in the blockchain) so the code is slightly simpler. The behavior is unchanged: if no bookmark exists, the result is still empty. There is no security issue visible in the change.

Lower-prioritySquashed 'src/ipc/libmultiprocess/' changes from 13424cf2ecc1..47d79db8a552by Ryan Ofsky · 535fa0ad · Sep 17, 2025 · 11 filesMessage 91 · StrongLow 43Details
Commit message · Ryan Ofsky

Squashed 'src/ipc/libmultiprocess/' changes from 13424cf2ecc1..47d79db8a552

47d79db8a552 Merge bitcoin-core/libmultiprocess#201: bug: fix mptest hang, ProxyClient<Thread> deadlock in disconnect handler
f15ae9c9b9fb Merge bitcoin-core/libmultiprocess#211: Add .gitignore
4a269b21b8c8 bug: fix ProxyClient<Thread> deadlock if disconnected as IPC call is returning
85df96482c49 Use try_emplace in SetThread instead of threads.find
ca9b380ea91a Use std::optional in ConnThreads to allow shortening locks
9b0799113557 doc: describe ThreadContext struct and synchronization requirements
d60db601ed9b proxy-io.h: add Waiter::m_mutex thread safety annotations
4e365b019a9f ci: Use -Wthread-safety not -Wthread-safety-analysis
15d7bafbb001 Add .gitignore
fe1cd8c76131 Merge bitcoin-core/libmultiprocess#208: ci: Test minimum cmake version in olddeps job
b713a0b7bfbc Merge bitcoin-core/libmultiprocess#207: ci: output CMake version in CI script
0f580397c913 ci: Test minimum cmake version in olddeps job
d603dcc0eef0 ci: output CMake version in CI script

git-subtree-dir: src/ipc/libmultiprocess
git-subtree-split: 47d79db8a5528097b408e18f7b0bae11a6702d26

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
AI analysis · Low 43/100

This commit updates a helper library (libmultiprocess) used by Bitcoin Core for inter-process communication. The main functional change fixes a deadlock bug: when an IPC connection drops at the same moment a thread-related call is returning, the cleanup code could get stuck waiting for locks held by other threads. The patch restructures how thread objects are stored and how cleanup callbacks are removed so the locks are held for shorter periods and in a safer order. It also adds stricter thread-safety compiler checks and CI testing with older CMake versions. There is no direct evidence this is exploitable as a security vulnerability; it appears to be a robustness/reliability fix for a hang condition.

Lower-prioritytest: add tool_bitcoin to test bitcoin wrapper behaviorby Ryan Ofsky · 29e836fa · Sep 17, 2025 · 2 filesMessage 72 · AdequateInformational 15Details
Commit message · Ryan Ofsky

test: add tool_bitcoin to test bitcoin wrapper behavior

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 commit only adds a new automated test file and registers it in the test runner. It checks how the 'bitcoin' command-line wrapper launches either bitcoind or bitcoin-node depending on flags. There is no change to the actual Bitcoin Core software that users run, so it cannot introduce a security vulnerability or directly fix one in production code.

Lower-priorityinit: add exe name to bitcoind, bitcoin-node -version output to be able to distinguish these in testsby Ryan Ofsky · 0972f550 · Sep 17, 2025 · 6 filesMessage 60 · AdequateInformational 15Details
Commit message · Ryan Ofsky

init: add exe name to bitcoind, bitcoin-node -version output to be able to distinguish these in tests

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

This commit changes the -version output of Bitcoin's command-line and GUI programs so the name of the executable (for example 'bitcoind' or 'bitcoin-node') is printed alongside the version string. It is a testing/debugging convenience change and does not alter how wallets, network messages, or consensus rules are handled.

Lower-prioritybitcoin: Make wrapper not require -mby Ryan Ofsky · 453b0fa2 · Sep 17, 2025 · 6 filesMessage 60 · AdequateInformational 18Details
Commit message · Ryan Ofsky

bitcoin: Make wrapper not require -m

Choose the right binary by default if an IPC option is specified

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

This commit changes the 'bitcoin' wrapper program so it automatically picks the multi-process version of Bitcoin tools when certain IPC options are present, instead of requiring users to manually pass -m. It is a usability improvement for an experimental multi-process build path. There is no direct security vulnerability in the diff, but it slightly increases the attack surface reachable through the wrapper by making multi-process binaries easier to invoke.

Lower-prioritymusig: Move synthetic xpub construction to its own functionby Ava Chow · f1487621 · Sep 16, 2025 · 3 filesMessage 50 · ThinInformational 15Details
Commit message · Ava Chow

musig: Move synthetic xpub construction to its own function

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

This commit simply moves a small block of code that builds a synthetic extended public key into its own reusable function. There is no change in behavior, no bug fix, and no security-relevant change.

Lower-prioritybuild, msvc: Update vcpkg manifest baselineby Hennadii Stepanov · ef20c2d1 · Sep 16, 2025 · 1 fileMessage 76 · AdequateInformational 15Details
Commit message · Hennadii Stepanov

build, msvc: Update vcpkg manifest baseline

This change updates the vcpkg manifest baseline from the "2025.03.19
Release" to the "2025.08.27 Release", with the following package
changes:
- boost: 1.87.0 --> 1.88.0
- qtbase: 6.8.2#1 -> 6.9.1
- qttools: 6.8.2 -> 6.9.1
- sqlite3: 3.49.1 --> 3.50.4

76/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
AI analysis · Informational 15/100

This is a routine build-system maintenance update for the Microsoft Visual Studio (MSVC) dependency manifest. It bumps the vcpkg baseline and several bundled library versions (Boost, Qt, SQLite) to newer releases. There is no code change to Bitcoin Core itself, and the commit message does not describe any security fix.

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

key: use static context for libsecp256k1 calls where applicable

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

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

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

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

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

net: Do not apply whitelist permission to onion inbounds

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

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

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

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

AI review queuedcmake: Install `bitcoin` manpageby Hennadii Stepanov · 7584a4fd · Sep 16, 2025 · 1 fileMessage 35 · OpaqueInformational 15Details
Commit message · Hennadii Stepanov

cmake: Install `bitcoin` manpage

35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body
Why it was queued
documentation-only discountsecond-pass: opaque commit message
AI analysis · Informational 15/100

This commit is a harmless build-system fix. It tells the CMake installer to also include the manual page (help documentation) for the main `bitcoin` command-line program when installing Bitcoin Core. There is no security issue.

Lower-prioritynet: remove unnecessary casts in socket operationsby Matthew Zipkin · 67f632b6 · Sep 16, 2025 · 5 filesMessage 85 · StrongInformational 15Details
Commit message · Matthew Zipkin

net: remove unnecessary casts in socket operations

These methods in the Sock class wrap corresponding syscalls,
accepting void* arguments and casting to char* internally, which is
needed for Windows support and ignored on other platforms because
the syscall itself accepts void*:

Send()
Recv()
GetSockOpt()
SetSockOpt()

85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
AI analysis · Informational 15/100

This commit is a routine code cleanup in Bitcoin Core's networking layer. It removes a platform-specific type alias (sockopt_arg_type) and replaces it with direct void*/char* casts where needed. The behavior of the program is unchanged; there is no security fix or vulnerability here.

Lower-prioritytest: Prevent disk space warning during node_init_testsby Ryan Ofsky · bdf01c6f · Sep 15, 2025 · 1 fileMessage 100 · StrongInformational 15Details
Commit message · Ryan Ofsky

test: Prevent disk space warning during node_init_tests

mzumsande pointed out https://github.com/bitcoin/bitcoin/pull/32345#issuecomment-3286964369 that this test was causing a warning:

Warning: Disk space for "/tmp/test_common bitcoin/node_init_tests/init_test/bf78678cb7723a3e84b5/blocks" may not accommodate the block files. Approximately 810 GB of data will be stored in this directory.

Fix by setting regtest instead of mainnet network before running the test.

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

This is a minor test-only change. A Bitcoin Core unit test was accidentally configured to use the main network (mainnet) parameters, which caused a harmless but noisy warning about needing hundreds of gigabytes of disk space. The fix makes the test use the small regtest network parameters instead. It does not change production code or affect real users, wallets, or funds.

Lower-prioritytest: Add submitblock test in interface_ipcby TheCharlatan · 0a26731c · Sep 15, 2025 · 1 fileMessage 82 · StrongInformational 15Details
Commit message · TheCharlatan

test: Add submitblock test in interface_ipc

Co-Authored-By: Sjors Provoost <sjors@sprovoost.nl>

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

This commit adds a new automated test for the Bitcoin Core mining IPC (inter-process communication) interface. It exercises the submitSolution and checkBlock methods with both an invalid block version and a valid block. There is no change to production code, no bug fix, and no security-relevant behavior change.

Lower-priorityci: use Mold linker for asan-lsan-ubsan-integer-no-depends-usdt workflowby Brandon Odiwuor · f031536f · Sep 13, 2025 · 1 fileMessage 62 · AdequateInformational 15Details
Commit message · Brandon Odiwuor

ci: use Mold linker for asan-lsan-ubsan-integer-no-depends-usdt workflow

62/100 · AdequateMessage clarity
✓ Specific, 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 changes a single Bitcoin Core continuous-integration (CI) script so that one automated testing job uses the Mold linker instead of the default system linker. It adds the 'mold' package to the CI container and tells the build to use it. There is no change to the Bitcoin Core software that users run, no bug fix, and no security relevance.

Lower-priorityrefactor(test): Break up headers_sync_stateby Hodlinator · f0368689 · Sep 12, 2025 · 1 fileMessage 90 · StrongInformational 15Details
Commit message · Hodlinator

refactor(test): Break up headers_sync_state

Helps logically separate the scenarios being tested.

Also adds missing comment for part 4.

(unique_ptrs and ProcessingResults will be cleaned up in next commit).

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

This commit only reorganizes existing test code in Bitcoin Core. It splits one large test case into three smaller, logically separate test cases and adds a missing comment. No production code, network behavior, or security-sensitive logic is changed.

Lower-priorityrefactor(test): Store HeadersSyncState on the stackby Hodlinator · fe896f8f · Sep 12, 2025 · 1 fileMessage 72 · AdequateInformational 15Details
Commit message · Hodlinator

refactor(test): Store HeadersSyncState on the stack

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 small code cleanup inside Bitcoin Core's test suite. It changes how one test object is created and stored so it lives on the stack instead of the heap. There is no change to the actual Bitcoin network code, no bug fix, and no security-relevant behavior change.

Lower-prioritydoc(test): Improve commentsby Hodlinator · 04eeb957 · Sep 12, 2025 · 1 fileMessage 72 · AdequateInformational 15Details
Commit message · Hodlinator

doc(test): Improve comments

+ new assert helping explain why CHAIN_WORK == TARGET_BLOCKS * 2.

72/100 · AdequateMessage clarity
✓ Descriptive subject✓ Provides an explanatory body✓ Explains rationale or failure mode✓ Mentions testing or verification
AI analysis · Informational 15/100

This commit only changes comments and adds one explanatory assertion inside a Bitcoin Core test file. There is no change to production code, no behavior change, and no security fix or vulnerability introduced.

Lower-priorityrefactor(headerssync): Process spans of headersby Hodlinator · e984618d · Sep 12, 2025 · 3 filesMessage 90 · StrongInformational 15Details
Commit message · Hodlinator

refactor(headerssync): Process spans of headers

More lightweight than vectors which needed to be copied in tests. Also good to get rid of headers_batch-vector before breaking up test.

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

This is a small internal cleanup in Bitcoin Core's header synchronization code. It replaces std::vector with std::span for passing batches of block headers, avoiding unnecessary copying in tests. There is no security-relevant change to network behavior, validation logic, or consensus rules.

Lower-priorityheaderssync: Make HeadersSyncState more flexible and move constantsby Hodlinator · cc5dda1d · Sep 12, 2025 · 10 filesMessage 83 · StrongInformational 19Details
Commit message · Hodlinator

headerssync: Make HeadersSyncState more flexible and move constants

Move calculated constants from the top of src/headerssync.cpp into src/kernel/chainparams.cpp.

Instead of being hardcoded to mainnet parameters, HeadersSyncState can now vary depending on chain or test. (This means we can reset TARGET_BLOCKS back to the nice round number of 15'000).

Signet and testnets got new HeadersSyncParams constants through temporarily altering headerssync-params.py with corresponding GENESIS_TIME and MINCHAINWORK_HEADERS (based off defaultAssumeValid block height comments, corresponding to nMinimumChainWork). Regtest doesn't have a default assume valid block height, so the values are copied from Testnet 4. Since the constants only affect memory usage, and have very low impact unless dealing with a largely malicious chain, it's not that critical to keep updating them for non-mainnet chains.

GENESIS_TIMEs (UTC):
Testnet3: 1296688602 = datetime(2011, 2, 2)
Testnet4: 1714777860 = datetime(2024, 5, 3)
Signet: 1598918400 = datetime(2020, 9, 1)

83/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
AI analysis · Informational 19/100

This commit is a code cleanup and refactoring change for Bitcoin Core's initial block header synchronization. It moves hardcoded tuning constants out of the headers-sync source file and into each network's chain parameters, so test networks can use values appropriate to their own history. It is not a security fix and does not patch a known vulnerability. The change does add a small runtime safety check that the commitment period is non-zero, which prevents an accidental misconfiguration from causing undefined behavior.

Lower-priorityrefactor(headerssync): Extract test constants ahead of breakup into functionsby Hodlinator · a4ac9915 · Sep 12, 2025 · 2 filesMessage 95 · StrongInformational 15Details
Commit message · Hodlinator

refactor(headerssync): Extract test constants ahead of breakup into functions

Made arith_uint256 constexpr-constructible so it can be used for compile time constants.

Co-authored-by: Lőrinc <pap.lorinc@gmail.com>

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

This is a code cleanup (refactor) change in Bitcoin Core. It makes a 256-bit integer type usable in compile-time constants and reorganizes a test file so that repeated test data is generated in helper functions. There is no change to network behavior, consensus rules, or wallet handling, and no security fix.

Lower-prioritytest(headerssync): Test returning of pow_validated_headers behaviorby Hodlinator · 8fd1c289 · Sep 12, 2025 · 1 fileMessage 100 · StrongInformational 14Details
Commit message · Hodlinator

test(headerssync): Test returning of pow_validated_headers behavior

Adding these checks necessitates increasing the length of the generated test chains so that we can properly exceed the REDOWNLOAD_BUFFER_SIZE during the test.

One can check out this commit and locally revert the TARGET_BLOCKS value change to prove the need for tests being able to control the buffer size, as is done by the next commit. Beyond the current REDOWNLOAD_BUFFER_SIZE of 15'009 we need 3 extra - 15'012 TARGET_BLOCKS:
* 1 for the genesis block.
* 1 for the test wanting to check that we start receiving headers for permanent storage *before* the final header (first_chain.back()).
* 1 to exceed REDOWNLOAD_BUFFER_SIZE in HeadersSyncState::PopHeadersReadyForAcceptance().

(The release process includes an occasional increase of the REDOWNLOAD_BUFFER_SIZE value, see release-process.md and history of headerssync.cpp).

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
defensive validation
AI analysis · Informational 14/100

This is a test-only change for Bitcoin Core. It expands an existing unit test to verify how the headers synchronization logic returns proof-of-work-validated headers. The change increases the number of generated test blocks and adds assertions that check internal behavior of the sync state machine. There is no change to production code, no fix for a vulnerability, and no security-relevant behavior change in the software users run.

Lower-prioritytest(headerssync): headers_sync_chainwork test improvementsby Hodlinator · 7b00643e · Sep 12, 2025 · 1 fileMessage 95 · StrongInformational 15Details
Commit message · Hodlinator

test(headerssync): headers_sync_chainwork test improvements

Introduces CHECK_RESULT for consistently validating ProcessingResult.
* Verifies HeadersSyncState::State directly after ProcessNextHeaders().
* Uses BOOST_REQUIRE_EQUAL for HeadersSyncState::State - Nicer failure output and prevents continuing test in nonsensical state.
* Encourages checking Locator and result.pow_validated_headers.

Changes happy_path to test both full & non-full headers messages.

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

This commit only improves existing test code for Bitcoin Core's header synchronization logic. It adds helper macros and stricter assertions to make tests clearer and more thorough, but it does not change any production code, fix a bug, or alter network behavior. There is no security issue here.

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

cmake: Fix regression in `secp256k1.cmake`

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

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

86/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
cryptography-sensitive path
AI analysis · Informational 19/100

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

Lower-prioritydepends: systemtap 5.3by fanquake · 28efd724 · Sep 12, 2025 · 1 fileMessage 59 · ThinInformational 18Details
Commit message · fanquake

depends: systemtap 5.3

The diff in the copied header is:
```diff
< #if __STDC_VERSION__ >= 199901L
---
> #if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
```

From
https://sourceware.org/git/?p=systemtap.git;a=commit;h=b8345d8e07b725a943a97b19aa4866e74baadd98.

59/100 · ThinMessage clarity
✓ Subject identifies a change✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
AI analysis · Informational 18/100

This commit updates the systemtap dependency used in Bitcoin Core's build system from version 4.8 to 5.3. Systemtap is a developer/tracing tool, not part of the live Bitcoin network code. The change is a routine dependency bump with a small upstream patch that fixes a C header macro check to avoid compiler warnings/errors. There is no indication this fixes a security vulnerability in Bitcoin Core itself.