BC
← All projectsBitcoin Core

Bitcoin Core

The Bitcoin network's reference node and wallet implementation.

BitcoinSupply chainNormal
Repository coverage

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

260security candidates613second-pass queue2893AI analyses
184commits · 30 days
476commits · 60 days
1491commits · 180 days
2855commits · 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
969Strong · 80–100
1189Adequate · 60–79
689Thin · 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 Chow16452162065
MarcoFalke41021406074
Lőrinc18121177081
fanquake22919226057
Hennadii Stepanov21214208063
rkrux57957074
Sjors Provoost89889074
merge-script42819088
Sebastian Falbesoner33733073
David Gumberg55655072
Pieter Wuille95595066
Analysis record

Published AI watches

Last scanned 21 minutes ago

Low 26 AI analysisMessage 96 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#32784: wallet: derivehdkey RPC to get xpub at arbitrary path

This commit adds a new Bitcoin Core wallet RPC called derivehdkey that lets a user derive an extended public key (xpub) — or optionally the matching extended private key (xprv) — at a chosen BIP32 path from one of the wallet's own HD keys.…

New RPC exposes xpub/xprv derivation from wallet HD keysRequires at least one hardened derivation stepRejects watch-only wallets and locked/encrypted wallets
a8b582ecby Ava Chow+633−15819 files
No security note in commit
Informational 15 AI analysisMessage 81 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#35852: scripted-diff: Use inline const(expr) over static constexpr in headers

This is a large but purely mechanical code cleanup in Bitcoin Core. It changes how constants are declared in header files from older C++ styles (static const, static constexpr) to the modern C++17 inline constexpr/inline const form. The pu…

dec68f99by merge-script+440−440102 files
No security note in commit
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 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
Repository ledger

Explore captured commits

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

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

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

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.

Lower-prioritytest/refactor: use test deque to avoid quadratic iterationby Lőrinc · 75e6984e · Sep 11, 2025 · 1 fileMessage 100 · StrongInformational 15Details
Commit message · Lőrinc

test/refactor: use test deque to avoid quadratic iteration

Extracted from https://github.com/bitcoin/bitcoin/pull/33141#discussion_r2323012972.
In Python, list `pop(0)` is linear, so consuming all items is quadratic.
Switched to `collections.deque` with `popleft()` to express FIFO intent and avoid the O(n^2) path.
Behavior is unchanged; for a few hundred items the perf impact is likely negligible.

Ref: https://docs.python.org/3/tutorial/datastructures.html#using-lists-as-queues
> While appends and pops from the end of list are fast, doing inserts or pops
> from the beginning of a list is slow (because all of the other elements have
> to be shifted by one).

Co-authored-by: maflcko <6399679+maflcko@users.noreply.github.com>

100/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
AI analysis · Informational 15/100

This is a minor internal cleanup in Bitcoin Core's Python test runner. It replaces a regular Python list used as a FIFO queue with a purpose-built deque, which avoids a theoretical slowdown when popping items from the front. The change only affects test infrastructure, not the live Bitcoin node software, and the commit message explicitly states behavior is unchanged.

Lower-prioritycommon: Make arith_uint256 trivially copyableby Fabian Jahr · 653a9849 · Sep 11, 2025 · 1 fileMessage 68 · AdequateInformational 18Details
Commit message · Fabian Jahr

common: Make arith_uint256 trivially copyable

Replacing the custom code with default behavior should not result in a change of behavior since base_uint contains a simple array of uint32_t and compiler generated versions of the code could be better optimized.

Co-authored-by: MarcoFalke <*~=`'#}+{/-|&$^_@721217.xyz>

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
AI analysis · Informational 18/100

This commit simplifies the internal copy behavior of a core Bitcoin data type (arith_uint256) by letting the compiler generate default copy routines instead of hand-written loops. The change is framed as a performance/cleanup improvement and includes a compile-time check that the type remains trivially copyable. There is no indication this fixes a security bug or introduces a vulnerability.

Lower-priorityci: always use tag for LLVM checkoutby fanquake · b736052e · Sep 11, 2025 · 1 fileMessage 80 · StrongInformational 15Details
Commit message · fanquake

ci: always use tag for LLVM checkout

Rather than trying to match the apt installed clang version, which is
prone to intermittent issues. i.e #33345.

80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body✓ Links an issue, advisory, or supporting reference
AI analysis · Informational 15/100

This is a Bitcoin Core continuous integration (CI) script change. It switches the LLVM source checkout from trying to match the locally installed clang version to always using a fixed tag (llvmorg-21.1.1). The commit message says this avoids intermittent CI issues. There is no change to the Bitcoin Core software that users run, no wallet or consensus code is touched, and no security vulnerability is described.

Lower-prioritytest: additional test coverage for script_verify_flagsby Anthony Towns · 652424ad · Sep 11, 2025 · 2 filesMessage 72 · AdequateInformational 14Details
Commit message · Anthony Towns

test: additional test coverage for script_verify_flags

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

This commit only adds extra test cases and assertions for how Bitcoin Core handles script verification flags. It does not change any production code that processes real transactions, so it cannot introduce a security vulnerability or fix one in live software.

Lower-priorityci: disable cirrus cache in 32bit arm jobby will · 00c253d4 · Sep 10, 2025 · 1 fileMessage 80 · StrongInformational 15Details
Commit message · will

ci: disable cirrus cache in 32bit arm job

Co-authored-by: Max Edwards <youwontforgetthis@gmail.com>
Add an optional matrix field allowing opt-out of configuring cirrus
GHA cache when not using cirrus runners.

This is not needed for the cirruslabs/[save|restore]-cache actions, as
they automatically fallback based on runner type.

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

This commit changes Bitcoin Core's continuous integration (CI) configuration for GitHub Actions. It adds a per-job option to override which cache provider is used for Docker setup, specifically setting a 32-bit ARM job to use GitHub Actions' native cache instead of Cirrus Labs' cache. This is a build-infrastructure tweak with no apparent effect on the Bitcoin software users run, on their funds, or on network security.