BC
← All projectsBitcoin Core

Bitcoin Core

The Bitcoin network's reference node and wallet implementation.

BitcoinSupply chainNormal
Repository coverage

2876 commits in the local evidence base

Every captured commit receives deterministic security triage and a separate communication-quality score. Security candidates and broader second-pass signals receive full-patch Ollama analysis.

252security candidates603second-pass queue603AI analyses
210commits · 30 days
492commits · 60 days
1521commits · 180 days
2876commits · 365 days
Backfill bands
Aug 5 → Feb 61351 seen45 candidatesComplete
Feb 6 → Jun 61033 seen63 candidatesComplete
Jun 6 → Jul 6281 seen11 candidatesComplete
Jul 6 → Aug 5207 seen5 candidatesComplete
Commit communication

Does the history explain itself?

Message quality measures whether a commit identifies its scope, purpose, rationale, testing, and supporting references. It does not change the security-severity score.

70/100 average clarity
915Strong · 80–100
1187Adequate · 60–79
686Thin · 40–59
88Opaque · 0–39
6security candidates with opaque commit messaging
Read the scoring rubric →
Developer activity

Who is changing the project?

Public Git author strings; identities are not independently verified.

DeveloperCommitsCandidatesAnalyzedHigh riskMessage avg.
Antoine Poinsot2245170
Ava Chow15649104064
MarcoFalke4062159074
Lőrinc1772136081
fanquake2271923057
Hennadii Stepanov2081427063
rkrux57944074
Sjors Provoost89813074
Sebastian Falbesoner33711073
David Gumberg55637072
Pieter Wuille9556066
Hodlinator66517076
Analysis record

Published AI watches

Last scanned 58 minutes ago

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

test: test the result order of a multiple import request is correct

This commit only adds a new automated test to Bitcoin Core. It checks that when a user asks the wallet to import multiple descriptors at once, the list of results comes back in the same order as the original request, including any error me…

3ac8b806by Pol Espinasa+40−01 file
No security note in commit
Informational 15 AI analysisMessage 87 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

test: test invalid or missing timestamp throws importdescriptors

This commit only adds new automated tests for the Bitcoin Core wallet's importdescriptors RPC. It checks that the command correctly rejects requests with a missing or invalid timestamp. No production wallet code is changed, so this cannot …

No changes to consensus, networking, wallet logic, or cryptographyOnly functional test code is modifiedAdded assertions are for expected error handling paths
e4732bf0by Pol Espinasa+28−11 file
No security note in commit
Informational 15 AI analysisMessage 68 · Adequate
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

ci, iwyu: Enforce warning-free `src/common`

This is a routine code cleanup commit. It adjusts which C++ header files are included in the `src/common` part of Bitcoin Core so that an automated tool called Include What You Use (IWYU) reports no warnings. It also tells the continuous i…

50145f62by Hennadii Stepanov+75−3822 files
No security note in commit
Informational 20 AI analysisMessage 73 · Adequate
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

wallet: Remove meaningless bool fallback in FundTransaction

This commit removes an old backward-compatibility feature in Bitcoin Core's wallet RPC command `fundrawtransaction`. Previously, callers could pass a plain `true` or `false` as the second argument, which was silently ignored. Now, passing …

Removal of a no-op backward-compatibility code path that silently accepted arbitrary boolean valuesStricter RPC input validation: bare booleans now rejected with a JSON type errorNo memory safety, cryptographic, or consensus changes observed
fa7fe798by MarcoFalke+60−652 files
No security note in commit
Informational 17 AI analysisMessage 45 · Thin
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

gui: Menu action for exporting a watchonly wallet

This commit adds a new menu item in the Bitcoin Core desktop wallet that lets users export a 'watch-only' copy of their wallet. A watch-only wallet can see transactions and balances but cannot spend funds. The change only wires up an exist…

No security-relevant signals detected in the diffNew GUI feature exposing existing wallet export functionalityAction is disabled for wallets with private keys disabled
cb51f97fby Ava Chow+30−04 files
No security note in commit
Informational 19 AI analysisMessage 50 · Thin
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

gui: Adds option to not load the wallet after migration

This commit adds a user-facing checkbox in the Bitcoin Core desktop wallet that lets someone choose whether to automatically load a wallet after migrating it from an older format. Previously the wallet was always loaded. The change is a us…

No security-relevant signal: change is a feature/usability additionNo memory safety, cryptographic, consensus, or network changesNo privilege boundary crossed
492a715dby Pol Espinasa+20−104 files
No security note in commit
Informational 15 AI analysisMessage 100 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

refactor: Make all `const static` class members `constexpr`

This commit is a code cleanup that changes many internal class constants from 'static const' to 'static constexpr'. In modern C++, constexpr constants are automatically inlined and avoid certain linker errors when used in specific ways. Th…

05c35c40by rustaceanrob+38−4024 files
No security note in commit
Informational 15 AI analysisMessage 83 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

fuzz: populate wallet TXO index in wallet_create_transaction

This is a fix to a Bitcoin Core fuzz test (an automated testing harness), not to the main wallet code that real users run. The test was inserting fake wallet transactions in a way that skipped updating an internal index called m_txos. Beca…

Test-only change in fuzz harnessFixes internal test-state consistency, not production wallet behaviorNo validation, consensus, or P2P networking changes
1eac6a72by frankomosh+1−01 file
No security note in commit
Informational 15 AI analysisMessage 83 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

scripted-diff: Use long form of shell options in Guix scripts

This commit is a purely cosmetic change in Bitcoin Core's Guix build scripts. It replaces the short shell command 'set -e' with its long-form equivalent 'set -o errexit'. Both forms do exactly the same thing: they make the script exit imme…

2cb3bfa8by Hennadii Stepanov+6−66 files
No security note in commit
Informational 15 AI analysisMessage 45 · Thin
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

guix: Add copyright headers to Guix scripts

This commit only adds or updates copyright and license header comments at the top of several helper scripts used for Bitcoin Core's Guix build process. It does not change any executable code, logic, or behavior. There is no security risk.

711eb10fby Hennadii Stepanov+20−27 files
No security note in commit
Low 28 AI analysisMessage 96 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Squashed 'src/secp256k1/' changes from bd0287d650..d2d04864ef

This commit updates the secp256k1 cryptographic library inside Bitcoin Core to a newer version. The main change is adding support for a new optional feature called 'Silent Payments' (BIP352), which is a privacy-enhancing way to receive Bit…

New cryptographic module added (Silent Payments / BIP352)Field-element equality check magnitude bound corrected from 31 to 30X-only public key even-Y invariant enforced in extrakeys module
a33f2405by fanquake+13939−13434 files
No security note in commit
Informational 15 AI analysisMessage 90 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

scripted-diff: Use C.UTF-8 locale in Guix scripts

This commit is a routine cleanup that changes the locale setting in Bitcoin Core's Guix build scripts from the old ASCII-only 'C' locale to the modern 'C.UTF-8' locale. It is not a security fix and does not change any behavior that could b…

8916f796by Hennadii Stepanov+15−1515 files
No security note in commit
Informational 19 AI analysisMessage 68 · Adequate
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

p2p: Assume v2transport for addresses from seeds

This change makes Bitcoin Core assume that hard-coded and DNS seed nodes support the newer BIP324 encrypted transport (v2) when first connecting. If the guess is wrong, the software falls back to the older v1 protocol automatically. It is …

Adds NODE_P2P_V2 to assumed service flags for seed-derived addressesFallback to v1 transport exists if the v2 assumption is wrongNo input validation, memory safety, or cryptographic changes
cf0f2aeaby Martin Zumsande+10−22 files
No security note in commit
Informational 16 AI analysisMessage 75 · Adequate
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

qt, test: Enable tests on macOS with `minimal` QPA plugin

This commit removes workarounds that skipped three Bitcoin Core Qt test suites on macOS when using the 'minimal' Qt platform plugin. The previous commit fixed the underlying crash cause, so these tests can now run. It is a test-infrastruct…

No security-relevant code change in the diff itselfReferences a prior crash fix, but this commit only removes test skipsNo input handling, cryptography, networking, consensus, or wallet logic modified
fd59d68cby Hennadii Stepanov+0−343 files
No security note in commit
Informational 15 AI analysisMessage 85 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

refactor: simplify adding SipHash-1-3-UJ

This is a code cleanup (refactor) that moves the internal SipHash mixing steps into shared helper methods. It does not change how Bitcoin hashes data, how many rounds are run, or any user-visible behavior. There is no security bug being fi…

25bfca06by Lőrinc+74−1222 files
No security note in commit
Informational 21 AI analysisMessage 68 · Adequate
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

crypto: add generic SipHash-1-3-UJ

This commit adds a new, weaker variant of the SipHash algorithm inside Bitcoin Core's cryptography module. It is explicitly designed for low-security uses such as internal hash tables, not for protecting funds or network messages. The code…

New weaker cryptographic primitive added (SipHash-1-3 vs. standard SipHash-2-4)Explicit unpadded input design removes length-commitment paddingJumbo 256-bit blocks increase attacker control within a single round
c2d7931bby Pieter Wuille+103−02 files
No security note in commit
Informational 15 AI analysisMessage 78 · Adequate
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

bench: add fixed-width SipHash benchmarks

This commit only adds new performance benchmark tests for a hash function called SipHash. It does not change any production code that handles Bitcoin transactions, networking, or wallet data. There is no security issue here.

7ff55cc6by Lőrinc+49−31 file
No security note in commit
Informational 15 AI analysisMessage 80 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

crypto: add fixed-width SipHash-1-3-UJ

This commit adds two new shortcut methods for computing a specific SipHash variant on fixed-size inputs. It is a pure performance/ergonomics addition: the new methods copy the hasher's internal state before operating, so they do not alter …

a0ccd4adby Pieter Wuille+21−01 file
No security note in commit
Informational 15 AI analysisMessage 90 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

test: add shared SipHash vectors

This commit only adds new test data and test code for the SipHash hashing function used in Bitcoin Core. It does not change any production code that handles transactions, networking, or wallets. The goal is to make sure the existing SipHas…

af50ba85by Lőrinc+797−237 files
No security note in commit
Informational 15 AI analysisMessage 95 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

test: wallet: BnB incomplete result on attempt-limit success

This commit adds a new unit test for Bitcoin Core's coin selection algorithm. It checks that when the Branch-and-Bound (BnB) search finds a usable coin selection early but then keeps searching for a better one until it hits the attempt lim…

6ee05c4bby Bruno Garcia+20−01 file
No security note in commit
Repository ledger

Explore captured commits

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

Security candidatechainparams: delete my DNS seedby Pieter Wuille · d9080639 · Jul 9, 2026 · 2 filesMessage 45 · ThinInformational 19Details
Commit message · Pieter Wuille

chainparams: delete my DNS seed

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
seed or entropy path
AI analysis · Informational 19/100

A Bitcoin Core developer removed their own DNS seed (seed.bitcoin.sipa.be, run by Pieter Wuille) from the list of hardcoded network seeds that help new Bitcoin nodes find peers when they first start up. This is a routine operational/maintenance change, not a code vulnerability fix. It slightly reduces the number of default seed options available to users.

Lower-priorityindex: Remove return value from Commit()by Martin Zumsande · 65735728 · Jul 9, 2026 · 2 filesMessage 45 · ThinTriage 0Details
Commit message · Martin Zumsande

index: Remove return value from Commit()

Since it unused in the current code.

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Lower-priorityindex: Don't commit ahead of the flushed chainstateby Martin Zumsande · 3679f1ec · Jul 9, 2026 · 3 filesMessage 85 · StrongTriage 0Details
Commit message · Martin Zumsande

index: Don't commit ahead of the flushed chainstate

Otherwise, if the node has an unclean restart,
indexes with state (coinstatsindex) couldn't reorg to the
last flushed tip and would be corrupted.

Also updates documentation of Commit() -
the locator functionality isn't used, so the previous text was wrong:
We must have the best block in our block index after a restart.

Co-authored-by: Fabian Jahr <fjahr@protonmail.com>

85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
Lower-priorityvalidation: Don't use m_chain.Tip() in FlushStateToDiskby Martin Zumsande · e9ed898a · Jul 9, 2026 · 1 fileMessage 73 · AdequateTriage 0Details
Commit message · Martin Zumsande

validation: Don't use m_chain.Tip() in FlushStateToDisk

In DisconnectBlock(), we can call FlushStateToDisk after updating
the coins but before changing the tip, which is still at the
disconnected block. This means that the ChainStateFlushed
signal would have the wrong block in the locator.

Also remove an outdated comment - the wallet doesn't use
ChainStateFlushed anymore, currently only indexes do.

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

73/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context
Lower-priorityvalidation: track last flushed blockby Martin Zumsande · 09c06960 · Jul 9, 2026 · 3 filesMessage 80 · StrongTriage 0Details
Commit message · Martin Zumsande

validation: track last flushed block

This will be used to prevent the indexes from flushing their state ahead of
the chainstate.

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

80/100 · StrongMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode
Lower-prioritytest: add test for index commits ahead of the last flushed blockby Martin Zumsande · 13c02b54 · Jul 9, 2026 · 2 filesMessage 87 · StrongTriage 0Details
Commit message · Martin Zumsande

test: add test for index commits ahead of the last flushed block

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

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
Security candidatetest: Redeclare variable as signed in `util_tests`by rustaceanrob · cd2a4bc5 · Jul 9, 2026 · 1 fileMessage 95 · StrongInformational 15Details
Commit message · rustaceanrob

test: Redeclare variable as signed in `util_tests`

Assigning `ToIntegral<int64_t>("-1")` to the `optional<uint64_t>` `n`
is a silent underflow. `BOOST_CHECK_EQUAL` then promotes `int` to
`uint64_t`, which also underflows. The correct check is to do this
inline.

95/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
signing boundary
AI analysis · Informational 15/100

This is a minor fix to a unit test file. A test variable was being assigned a negative value in an unsigned container, which caused a silent underflow and made the test assertion technically incorrect. The patch changes the test to check the negative result directly without storing it in the wrong type. It does not change any production code or affect real Bitcoin Core behavior.

AI review queueddepends: add netbsd_LDFLAGSby fanquake · 699c21ae · Jul 9, 2026 · 1 fileMessage 35 · OpaqueTriage 0Details
Commit message · fanquake

depends: add netbsd_LDFLAGS

35/100 · OpaqueMessage clarity
✓ Descriptive subject! No meaningful explanatory body
Why it was queued
second-pass: opaque commit message
Lower-priorityci: add netBSD cross CI jobby fanquake · c43b7a11 · Jul 9, 2026 · 3 filesMessage 72 · AdequateTriage 0Details
Commit message · fanquake

ci: add netBSD cross CI job

Use 11.0rc6, as the 10.x sysroot ships with a GCC that is too old to
have bitset, source_location etc.

72/100 · AdequateMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides an explanatory body
AI review queuedwallet: use in-memory SQLite for temporary wallet in exportwatchonlywalletby Pablo Martin · d1e7f8c9 · Jul 8, 2026 · 5 filesMessage 63 · AdequateInformational 18Details
Commit message · Pablo Martin

wallet: use in-memory SQLite for temporary wallet in exportwatchonlywallet

The intermediate watchonly wallet created during exportwatchonlywallet is
a pure build artifact — it is always discarded once BackupWallet() copies
it to the destination. Creating it as an in-memory SQLiteDatabase
(SQLITE_OPEN_MEMORY) removes the need to write files to the wallets
directory and eliminates the cleanup handler that deleted those files on
both success and failure paths.

Introduces InMemoryWalletDatabase (a minimal SQLiteDatabase subclass) and
MakeInMemoryWalletDatabase() factory in sqlite.h/cpp, following the same
pattern as MockableSQLiteDatabase / CreateMockableWalletDatabase() in the
test utilities. MockableSQLiteDatabase now derives from InMemoryWalletDatabase,
removing its redundant Files() override.

The wallet is named after the source wallet ("<name>_watchonly_temp") so
concurrent exports of different wallets use distinct names and log lines
remain traceable to the source wallet.

63/100 · AdequateMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification! Contains work-in-progress language
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 18/100

This change refactors how Bitcoin Core creates a temporary wallet during the exportwatchonlywallet command. Previously, the temporary wallet was written to disk in the wallets directory and then deleted afterward. Now it is kept entirely in memory using SQLite's in-memory mode, so no temporary files are created on disk. This is a cleanup and hardening improvement, not a fix for an active exploit.

Security candidatetest: add regression test for in-memory SQLiteDatabase reopenby Pablo Martin · 777d23f2 · Jul 8, 2026 · 1 fileMessage 100 · StrongInformational 24Details
Commit message · Pablo Martin

test: add regression test for in-memory SQLiteDatabase reopen

InMemoryWalletDatabase::Open() now throws to prevent silently returning
a fresh empty connection after close, which would discard all data. Add a
test to pin this behaviour.

Co-authored-by: Jan B <608446+janb84@users.noreply.github.com>

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
access controlfuzzing or regression evidencesigning or wallet path
AI analysis · Informational 24/100

This commit only adds a new automated test. It checks that Bitcoin Core's in-memory SQLite wallet database correctly refuses to reopen after being closed, because reopening would silently create a fresh empty database and discard any previous wallet data. The actual protective change (making Open() throw) is already in the codebase; this commit just pins the behavior with a regression test so it cannot accidentally break in the future.

AI review queuedwallet: store m_additional_flags in SQLiteDatabase to fix reopen pathby Pablo Martin · ee43743f · Jul 8, 2026 · 2 filesMessage 73 · AdequateLow 31Details
Commit message · Pablo Martin

wallet: store m_additional_flags in SQLiteDatabase to fix reopen path

SQLiteDatabase::Open() (the public override) always reopens the database
with no additional flags. If SQLiteBatch::Close() triggers the
force_conn_refresh path (TxnAbort failed), it calls Open() which drops
the original additional_flags, causing in-memory databases to be reopened
as on-disk instead.

Store additional_flags as a member and use it in Open() so the reconnect
preserves the original flags. For in-memory databases, connection recovery
makes no sense as all data would be lost; both the force_conn_refresh path
and the public Open() now throw instead.

Co-authored-by: Sjors Provoost <sjors@sprovoost.nl>

73/100 · AdequateMessage clarity
✓ Specific, 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 · Low 31/100

This patch fixes a bug in Bitcoin Core's SQLite wallet code where an in-memory test wallet could accidentally be reopened as a real on-disk database, or be lost entirely during error recovery. The fix stores the original database flags so reopening preserves them, and explicitly throws an error instead of trying to recover a connection to an in-memory database (which would lose all data). It appears to be a correctness/reliability fix rather than an active security vulnerability in normal production use.

Lower-prioritydoc: Archive 30.3 release notesby Ava Chow · 443179a9 · Jul 8, 2026 · 1 fileMessage 45 · ThinTriage 0Details
Commit message · Ava Chow

doc: Archive 30.3 release notes

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
documentation-only discount
Lower-prioritydoc: add release note describing change for forbidden clientsby Matthew Zipkin · 55d3cd51 · Jul 8, 2026 · 1 fileMessage 50 · ThinTriage 0Details
Commit message · Matthew Zipkin

doc: add release note describing change for forbidden clients

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
documentation-only discount
Lower-priorityhttp: check rpcallowip immediately after accepting connectionby Matthew Zipkin · d1ed2a6e · Jul 8, 2026 · 7 filesMessage 83 · StrongTriage 0Details
Commit message · Matthew Zipkin

http: check rpcallowip immediately after accepting connection

Instead of sending 403 Forbidden, disconnect as soon as possible.

To facilitate unit testing, this commit includes a refactor
that moves the subnet allow list and relevant methods
into the HTTPServer class instead of file-scope static scope.

83/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
Lower-prioritySquashed 'src/ipc/libmultiprocess/' changes from 16bf05dea02..28e056576a3by Ryan Ofsky · 707d0ded · Jul 8, 2026 · 6 filesMessage 91 · StrongTriage 0Details
Commit message · Ryan Ofsky

Squashed 'src/ipc/libmultiprocess/' changes from 16bf05dea02..28e056576a3

28e056576a3 Merge bitcoin-core/libmultiprocess#269: proxy: add local connection limit to ListenConnections
39a10ce8958 proxy: add local connection limit to ListenConnections()
43172f52d9e test: add dedicated ListenConnections coverage
033f8121957 doc/version: Bump version 11 > 12

git-subtree-dir: src/ipc/libmultiprocess
git-subtree-split: 28e056576a309b76bf5885bc1d1c89c7191602b9

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
Security candidaterefactor: Use u64 over size_t for all cache sizes to fix a 32-bit overflowby MarcoFalke · fabafd91 · Jul 8, 2026 · 5 filesMessage 100 · StrongLow 43Details
Commit message · MarcoFalke

refactor: Use u64 over size_t for all cache sizes to fix a 32-bit overflow

This is a refactor on 64-bit systems, because size_t is equal to u64.

However, on 32-bit systems, it fixes an integer overflow while calculating the cache sizes:

src/node/caches.cpp:71:49: runtime error: unsigned integer overflow: 471859200 * 10 cannot be represented in type size_t (aka "unsigned int")

This happens while multiplying the default cache size (450MiB) by 10:

index_sizes.tx_index = std::min(total_cache * 10 / 100, ...)
^^^^^^^^^^^^^^^^

The issue was introduced in commit d06dabf26bea7d9ca8d635e8338f64aec74c56a8.

====

Also, add missing includes in touched files, according to IWYU.

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

This commit fixes a bug in Bitcoin Core that only affects 32-bit computers. When the program calculated how much database cache to allocate, it multiplied a large default cache value by 10. On 32-bit systems that multiplication overflowed, producing a much smaller or incorrect number. The fix changes the internal type from size_t (32-bit on 32-bit systems) to uint64_t (always 64-bit) so the multiplication stays correct. On normal 64-bit computers the change is harmless and just a cleanup.

Lower-prioritykernel: expose witness stack for btck_TransactionInputby Peter Zafonte · e6de3a2d · Jul 8, 2026 · 4 filesMessage 50 · ThinTriage 0Details
Commit message · Peter Zafonte

kernel: expose witness stack for btck_TransactionInput

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Lower-prioritykernel: expose scriptSig for btck_TransactionInputby Peter Zafonte · 6667dc4e · Jul 8, 2026 · 4 filesMessage 50 · ThinTriage 0Details
Commit message · Peter Zafonte

kernel: expose scriptSig for btck_TransactionInput

50/100 · ThinMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Lower-priorityfuzz: add p2p_private_broadcast harnessby frankomosh · d24d3cba · Jul 8, 2026 · 2 filesMessage 68 · AdequateTriage 5Details
Commit message · frankomosh

fuzz: add p2p_private_broadcast harness

Add a fuzz harness targeting ConnectionType::PRIVATE_BROADCAST.
Seeds m_tx_for_private_broadcast via InitiateTxBroadcastPrivate
so PushPrivateBroadcastTx reaches the send-INV and other paths.
Guarantees one PRIVATE_BROADCAST peer per iteration, optionally
adds peers of other types, uses CallOneOf() branching between
guided and arbitrary message types, and verifies the outbound
INV is well-formed after the handshake completes.

Co-authored-by: Greg Sanders <gsanders87@gmail.com>

68/100 · AdequateMessage clarity
✓ Descriptive subject✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
fuzzing or regression evidence
Lower-prioritytest: add negative zero CSV failure script test vectorby azuchi · c4068cf3 · Jul 8, 2026 · 1 fileMessage 72 · AdequateTriage 5Details
Commit message · azuchi

test: add negative zero CSV failure script test vector

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
Why it was queued
fuzzing or regression evidence
Lower-prioritytest: add CHECKLOCKTIMEVERIFY failure-path script test vectorsby azuchi · 37edf0e2 · Jul 8, 2026 · 1 fileMessage 72 · AdequateTriage 5Details
Commit message · azuchi

test: add CHECKLOCKTIMEVERIFY failure-path script test vectors

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
Why it was queued
fuzzing or regression evidence
Lower-prioritydoc: add release notes for 32800by Musa Haruna · 29b12441 · Jul 7, 2026 · 1 fileMessage 45 · ThinTriage 0Details
Commit message · Musa Haruna

doc: add release notes for 32800

45/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component! No meaningful explanatory body
Why it was queued
documentation-only discount
AI review queuedrpc: add `vsize_adjusted` field to getrawtransaction output for mempool transactionsby Musa Haruna · 5d25a0c2 · Jul 7, 2026 · 2 filesMessage 83 · StrongInformational 19Details
Commit message · Musa Haruna

rpc: add `vsize_adjusted` field to getrawtransaction output for mempool transactions

Extend the `getrawtransaction` RPC to include a new field `vsize_adjusted` when the transaction is in the mempool.
The `vsize_adjusted` field provides the mempool's accounting size for the transaction based on its sigop cost,
which can exceed its serialized vsize under `-bytespersigop` policies.

Test coverage is added to verify the correct calculation and exposure of the `vsize_adjusted` field via `mempool_sigoplimit.py`.

83/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification
Why it was queued
signing or wallet pathsecond-pass: security-sensitive path
AI analysis · Informational 19/100

This commit adds a new read-only field called vsize_adjusted to the getrawtransaction RPC output, but only when the transaction is currently in the memory pool. It exposes information the node already calculates for mempool policy, so it does not change behavior, fix a bug, or introduce a vulnerability. It is a transparency/feature improvement for RPC users.

Lower-priorityrpc: add `vsize_adjusted` and `vsize_bip141` field to mempool-related RPCsby Musa Haruna · eaef8d31 · Jul 7, 2026 · 5 filesMessage 83 · StrongTriage 0Details
Commit message · Musa Haruna

rpc: add `vsize_adjusted` and `vsize_bip141` field to mempool-related RPCs

This commit adds a new `vsize_adjusted` and `vsize_bip141` field to mempool acceptance and submission RPCs,
including `testmempoolaccept` and `submitpackage`,
to report the sigop-adjusted virtual transaction size and virtual transaction size as defined in BIP 141 respectively.
While `vsize` is now marked as deprecated.

RPC help texts are updated to reflect this addition.
Tests in `mempool_accept.py, mempool_accept, p2p_segwit, rpc_packages, mempool_sigoplimit` are extended
to verify the presence and correctness of the new fields.

Co-authored-by: Gloria Zhao <gloriajzhao@gmail.com>

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