BC
← All projectsBitcoin Core

Bitcoin Core

The Bitcoin network's reference node and wallet implementation.

BitcoinSupply chainNormal
Repository coverage

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

315security candidates666second-pass queue3001AI analyses
153commits · 30 days
332commits · 60 days
1307commits · 180 days
2862commits · 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.

71/100 average clarity
1166Strong · 80–100
1206Adequate · 60–79
701Thin · 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.
merge-script1994588389
Antoine Poinsot22422170
Ava Chow19265186068
MarcoFalke41421408074
fanquake23121228058
Lőrinc18121177081
Hennadii Stepanov22316211064
rkrux57957074
Sjors Provoost89889074
Sebastian Falbesoner33733073
David Gumberg55655072
Pieter Wuille95595066
Analysis record

Published AI watches

Last scanned 47 minutes ago

Low 44 AI analysisMessage 91 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#36284: wallet: don't double discard output groups with avoidpartialspends

This is a wallet bug, not a theft or remote-code bug. When a Bitcoin Core user turns on the optional 'avoidpartialspends' or 'avoid_reuse' setting, an output group rejected during coin selection could be counted twice as 'discarded.' That …

Logic error causing double-counting of discarded UTXO groupsCan trigger false 'insufficient funds' failure in coin selectionAffects avoidpartialspends / avoid_reuse wallets only
e8e7e91aby Ava Chow+43−14 files
No security note in commit
Informational 18 AI analysisMessage 81 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#35890: doc: use overwrite (>) instead of append (>>) for one-shot PSBT files in offline-signing-tutorial.md

This is a documentation-only fix in a tutorial file. It changes two shell examples from using '>>' (append to file) to '>' (overwrite file). If a user followed the old instructions and ran the same command twice, the file would contain two…

No security signal: change is limited to documentationNo code changes to Bitcoin Core binaries, RPC, wallet, or consensus logicNo cryptographic, network, or privilege-boundary implications
bfdcd979by merge-script+2−21 file
No security note in commit
Informational 19 AI analysisMessage 91 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#35675: mining: add block template manager

This is a large internal code reorganization (refactor) in Bitcoin Core. It creates a new BlockTemplateManager class that takes over block-template creation, block submission, and tip-waiting helpers that were previously spread across seve…

Large refactor touching mining, RPC, interfaces, and test shutdown pathsNew object lifetime dependency: BlockTemplateManager holds references to mempool, chainman, and notifications; explicit reset ordering added in Shutdown/InitAndLoadChainstate/test setupsRemoval of early-init node.mining interface; BlockTemplateManager is now created after chainstate load, with a comment that it must exist before setChainstateLoaded(true) unblocks IPC waiters
5c726f20by Ryan Ofsky+561−44926 files
No security note in commit
Informational 12 AI analysisMessage 91 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#35301: Silent Payments: Implement bip352 (take 2)

This commit adds the first implementation of BIP352 (Silent Payments) to Bitcoin Core. Silent Payments are a new type of privacy-preserving Bitcoin address that lets someone receive payments without publicly revealing a fixed address. The …

New cryptographic feature implementation (BIP352 Silent Payments)Extensive use of secp256k1 silentpayments moduleInput public key extraction from P2PKH, P2WPKH, P2SH-P2WPKH, and P2TR inputs
be5d0b55by Ava Chow+6951−010 files
No security note in commit
Low 45 AI analysisMessage 96 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#35440: wallet: check descriptor cache xpub length before decoding

This update fixes a wallet database loading bug where a damaged or tampered Bitcoin wallet file could cause the program to read past the end of a stored extended public key (xpub). The patch makes the loader check the stored xpub length be…

Out-of-bounds read in wallet descriptor cache deserializationASan container-overflow triggered by malformed on-disk recordMissing length validation between record size prefix and fixed-size decoder
b3f846ecby Ava Chow+225−8511 files
Vendor flagged security relevance
Informational 20 AI analysisMessage 100 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#35813: wallet, rpc: Add listrawtransactions RPC

This commit adds a new wallet RPC called listrawtransactions to Bitcoin Core. It is a feature addition that lets users list every transaction their wallet knows about, including internal transfers and consolidations that the existing listt…

No security-relevant bug fix or vulnerability patch is present in the diff.New RPC exposes additional wallet transaction metadata, but only to callers already authorized for wallet RPCs.Code is a refactor of existing gettransaction logic into shared helpers; no new cryptographic, network, or consensus code.
2b95b45aby Ava Chow+334−276 files
No security note in commit
Moderate 68 AI analysisMessage 91 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#35752: wallet: make encryption state updates atomic

This Bitcoin Core update fixes several wallet bugs where a failed database write could leave a wallet in an inconsistent state. For example, encrypting a wallet or changing its passphrase could appear to succeed in memory while the change …

Atomicity fix for encryption state and descriptor key persistenceFailure to persist master key during encryption previously reported success in memoryPassphrase change could activate new passphrase only in memory
7ee3d622by Ava Chow+379−16418 files
Vendor flagged security relevance
Informational 15 AI analysisMessage 100 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#35619: test: ExtendedPrivateKey follow-ups

This commit only changes Bitcoin Core's internal functional test code. It replaces hard-coded test keys and addresses with ones generated from a new test helper class, and unifies how tests tell nodes not to create a default wallet. There …

248ce46fby merge-script+18−244 files
No security note in commit
Informational 15 AI analysisMessage 91 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#36261: test: cover PSBT unknown field merging

This commit only adds a new automated test to Bitcoin Core. It checks that when two partially-signed Bitcoin transactions (PSBTs) are combined, any custom 'unknown' data fields attached to them are preserved correctly. There is no change t…

bbc40edeby merge-script+130−01 file
No security note in commit
Informational 18 AI analysisMessage 100 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#36230: wallet: Improve `HasWalletDescriptor` performance and other canonical descriptor string followups

This is a Bitcoin Core wallet maintenance patch. It speeds up a wallet function that checks whether a descriptor already exists by caching a hash of the descriptor's canonical text, instead of rebuilding that text every time. It also tidie…

No security-relevant signal in commit message or diffChange is described as performance improvement and code cleanupBackwards-compatibility test notes a known miniscript wallet loading incompatibility between v31.0/v31.1 and other versions, but this is a documented compatibility quirk, not a vulnerability
4a583f38by merge-script+97−429 files
No security note in commit
Informational 21 AI analysisMessage 81 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#36297: rpc: Correct invalid OpenRPC defaults

This is a documentation-only fix for Bitcoin Core's machine-readable RPC help data. It changes several default values from literal strings to 'hint' labels (because the real default depends on context) and corrects one boolean default from…

OpenRPC schema/default mismatch correctionRPC help metadata type correction (string 'false' to boolean false)No executable code path changes
5f05d8c5by merge-script+6−63 files
No security note in commit
Informational 20 AI analysisMessage 68 · Adequate
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

rpc: Correct OpenRPC default metadata

This commit fixes documentation metadata for six Bitcoin Core RPC arguments. It changes how default values are described so that automatically generated API docs and schemas are accurate. The actual behavior of the software when running is…

No runtime code changesOnly RPC help/schema metadata modifiedVendor explicitly states runtime behavior is unchanged
b7f740c5by will+6−63 files
No security note in commit
Informational 24 AI analysisMessage 91 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#36286: crypto: Fix MuHash3072 division by itself

This commit fixes a bug in Bitcoin Core's MuHash3072 cryptographic code where dividing a MuHash object by itself (x /= x) produced the wrong mathematical result. The fix is straightforward: the code now saves the divisor's numerator before…

Cryptographic correctness bug in MuHash3072 division operatorSelf-aliasing in operator/= produces incorrect 1/D result instead of empty setNo production code path identified that triggers self-division
d48e76e6by merge-script+11−13 files
No security note in commit
Informational 18 AI analysisMessage 93 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#36285: refactor: Use static const over inline const to work around ld64 bug

This is a build-compatibility fix, not a security patch. It changes how some constant data is stored internally so that Apple's macOS linker (ld64) can build Bitcoin Core correctly. The change avoids a linker bug that caused build failures…

No security-relevant code logic changedChange is a linker bug workaround, not a vulnerability fixConstants remain read-only; no new attack surface introduced
ad97933aby merge-script+8−82 files
No security note in commit
Informational 23 AI analysisMessage 91 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#34861: wallet: Add importdescriptors interface

This commit refactors Bitcoin Core's wallet descriptor import feature so the same logic can be used by both the RPC command and a new GUI-facing interface. It also tightens one input rule: negative timestamps are now rejected, and the mini…

Refactor of security-sensitive wallet import code into shared CWallet pathNew input validation: negative timestamps rejected for importdescriptorsCentralization of descriptor range bound checks in CheckDescriptorRangeBounds
2bbbeaa6by Ava Chow+619−26415 files
No security note in commit
Low 30 AI analysisMessage 100 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#36260: torcontrol: Use reconnect backoff after dropped connections

This change fixes a bug in how Bitcoin Core reconnects to the Tor control port. A previous update accidentally removed the wait time between reconnect attempts when an already-established Tor control connection was dropped. Without the wai…

Uncontrolled retry loop causing resource exhaustion and log floodingLocal-only Tor control port interaction; no remote attacker path by defaultRegression introduced by prior refactor (#34158) and restored here
fb68c270by merge-script+32−332 files
No security note in commit
Informational 18 AI analysisMessage 100 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#36256: guix: Update osslsigncode to 2.14

This change updates the Windows code-signing tool used in Bitcoin Core's reproducible build process. It fixes a build-time failure where signature verification could not complete because a certificate package was missing and the old tool v…

Tooling update in release signing pipelineRestores CA certificate store for signature verificationDisables CRL/CDP network lookups during verification
7dedc454by Hennadii Stepanov+22−22 files
No security note in commit
Informational 19 AI analysisMessage 96 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#34566: feature: Use different datadirs for different signets

This change lets Bitcoin Core store different custom signet blockchains in separate data folders, using a unique suffix derived from each signet's network identifier. It also adds a friendlier error hint in bitcoin-cli when an RPC authenti…

Data isolation between distinct custom signets reduces risk of cross-network state corruption or accidental mainnet/testnet confusionNo memory-safety, cryptographic, or consensus changes observedNo privilege escalation, remote code execution, or denial-of-service vectors introduced in the diff
d32a515fby merge-script+211−4412 files
No security note in commit
Informational 19 AI analysisMessage 81 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#36251: rest: add `generated` and `height` to spenttxouts JSON

This change adds two extra pieces of information—whether a spent output came from a coinbase transaction and the block height at which it was created—to a Bitcoin Core REST API endpoint. It is a feature/parity improvement to make the REST …

dadca55fby merge-script+13−54 files
No security note in commit
Low 33 AI analysisMessage 91 · Strong
BC Bitcoin CoreBitcoin Core BitcoinSupply chain

Merge bitcoin/bitcoin#34743: p2p: don't disconnect manual peers for block stalling

This change makes Bitcoin Core treat manually-added peers (from -addnode, -connect, or the addnode RPC) more gently during Initial Block Download (IBD). Previously, if such a peer was slow or stalled at sending blocks, the node would disco…

Behavior change in peer disconnection logic during IBDManual peers exempted from block-stalling disconnectionNew per-peer cooldown state m_block_download_paused_until introduced
cff00c54by merge-script+148−168 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-prioritydoc: remove mention of wsystemby fanquake · 57246934 · Aug 10, 2026 · 1 fileMessage 53 · ThinTriage 0Details
Commit message · fanquake

doc: remove mention of wsystem

Followup to #35704.

53/100 · ThinMessage clarity
✓ Descriptive subject✓ Names a concrete action or component✓ Links an issue, advisory, or supporting reference! No meaningful explanatory body
Security candidateMerge bitcoin/bitcoin#35937: test: Append print_suppressions=0 to LSAN_OPTIONS, and suppress bitcoin-qtby merge-script · 5973e075 · Aug 10, 2026 · 2 filesMessage 91 · StrongInformational 15Details
Commit message · merge-script

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

fad9ab714b5512f204f75a94d8cc4fa164dd4061 test: Append print_suppressions=0 to LSAN_OPTIONS, and suppress bitcoin-qt (MarcoFalke)

Pull request description:

(see commit msg for rationale and background).

To test, one should be able to use the cmake options such as `-DCMAKE_C_COMPILER='clang' -DCMAKE_CXX_COMPILER='clang++' --preset=dev-mode -DBUILD_GUI=ON -DSANITIZERS=address` on e.g. Fedora. Then see that the current suppressions file is insufficient, and also confirm that `print_suppressions=0` is required.

ACKs for top commit:
fanquake:
ACK fad9ab714b5512f204f75a94d8cc4fa164dd4061

Tree-SHA512: 1830b4aeb072fa18b76522a124a268073675da14255e469a6d86ee5de52cd08d5613d0c3bd8a66465b0c4636345c9e967923cd1fb516906a58b614fe0e700033

91/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
access controldefensive validationmerge-commit duplicate discount
AI analysis · Informational 15/100

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. There is no change to the actual Bitcoin Core software that users run, and no security vulnerability is being fixed or introduced.

Lower-priorityMerge bitcoin/bitcoin#34794: rest: add Cache-Control headers to REST responsesby merge-script · b6bd573e · Aug 10, 2026 · 5 filesMessage 91 · StrongTriage 0Details
Commit message · merge-script

Merge bitcoin/bitcoin#34794: rest: add Cache-Control headers to REST responses

75f58519277630a398cbe3cdde33a23383b07bc3 doc: add release note for REST cache-control headers (w0xlt)
bbe21ac29f551036ca8fe482ef4301bb09bc4ca8 doc: document REST cache-control defaults (w0xlt)
862a1795563153ab33b4caf719e5828944b577b0 http: add no-store to dispatcher-generated error responses (w0xlt)
acf45c44c01341e428f3528e6df66f112ff6f151 rest: add Cache-Control headers to REST responses (w0xlt)

Pull request description:

This PR adds explicit Cache-Control headers to REST responses.

The policy is:

- Immutable data gets: `Cache-Control: public, immutable, max-age=86400`
- Mutable, node-local, and error responses get: `Cache-Control: no-store`

Important details:

- `/block` and `/block/notxdetails` bin/hex, `/blockpart`, `/blockfilter`, `/spenttxouts`, and `/deploymentinfo/<blockhash>.json` are treated as immutable.
- `/block` and `/block/notxdetails` JSON, all `/tx` formats, `/headers`, `/blockfilterheaders`, `/blockhashbyheight`, `/chaininfo`, `/mempool`, `/getutxos`, and `/deploymentinfo.json` are no-store.
- REST errors and HTTP dispatcher-generated errors are no-store.
- Unmatched `/rest` 404s also return no-store, including paths like `/rest/tx`, `/rest/does-not-exist`, and `/rest?x=1`.

Tests were added in `interface_rest.py` to cover successful responses, behavior across a newly mined block, REST errors, and unmatched REST 404s.

Docs were added to `REST-interface.md`, including guidance for overriding the defaults in a reverse proxy or CDN.

Closes #33809

ACKs for top commit:
stickies-v:
re-ACK 75f58519277630a398cbe3cdde33a23383b07bc3
pinheadmz:
ACK 75f58519277630a398cbe3cdde33a23383b07bc3
sedited:
ACK 75f58519277630a398cbe3cdde33a23383b07bc3

Tree-SHA512: 292ccd06ddfc9272c17fa720ce1ea8bb05462337af6460488f70003d3daf31fcf262e68c264522a911bba65ae2b25fc88a1fd422e5664583daf64070231cb062

91/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
merge-commit duplicate discount
Lower-priorityMerge bitcoin/bitcoin#35260: doc: clarify test placement guidanceby merge-script · 128456b6 · Aug 8, 2026 · 2 filesMessage 91 · StrongTriage 0Details
Commit message · merge-script

Merge bitcoin/bitcoin#35260: doc: clarify test placement guidance

db74d3390a391a2a76d7b4d676342a9d1489059b doc: clarify test placement guidance (Lőrinc)

Pull request description:

**Problem:** `doc/developer-notes.md` does not explain where test coverage belongs in a commit stack, especially when existing behavior is uncovered or a refactor depends on uncovered behavior.
This has led to review questions about whether tests should record current behavior before a change or be added with the final behavior, for example in [#35251](https://github.com/bitcoin/bitcoin/pull/35251#discussion_r3217842286) and [#31212](https://github.com/bitcoin/bitcoin/pull/31212#discussion_r1854105033).

**Fix:** Add a `General Testing` section under the development guidelines explaining when to use automated tests or a manual testing guide and when behavior-preserving work is easy to validate without new tests.
Add a `Commit Structure for Tests` subsection distinguishing existing coverage, simple uncovered changes, non-trivial changes to uncovered behavior, and non-trivial refactors whose preserved behavior is not covered.
Replace the blanket `CONTRIBUTING.md` rule with a link to the detailed guidance.

ACKs for top commit:
maflcko:
lgtm ACK db74d3390a391a2a76d7b4d676342a9d1489059b
pablomartin4btc:
ACK db74d3390a391a2a76d7b4d676342a9d1489059b
LarryRuane:
ACK db74d3390a391a2a76d7b4d676342a9d1489059b
w0xlt:
ACK db74d3390a391a2a76d7b4d676342a9d1489059b
sedited:
ACK db74d3390a391a2a76d7b4d676342a9d1489059b

Tree-SHA512: a8f3629b9bd59d20b1bc597d1b43fbb1d3cca9f500a8d79a7b62b417cd6b91c7b92cf6e32946171c76eb54e882a58eac94045753d8bb5899acdb48a7d1ccb2bd

91/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
defensive validationdocumentation-only discountmerge-commit duplicate discount
Lower-priorityMerge bitcoin/bitcoin#35822: fuzz: reset SOCKS5 interrupt between inputsby merge-script · 05a7c470 · Aug 8, 2026 · 1 fileMessage 91 · StrongTriage 0Details
Commit message · merge-script

Merge bitcoin/bitcoin#35822: fuzz: reset SOCKS5 interrupt between inputs

77440814bf2c3eb7a649f25c585b3fd54929e5f3 fuzz: reset SOCKS5 interrupt between inputs (Hao Xu)

Pull request description:

Reset `g_socks5_interrupt` before each `socks5` fuzz input.

`CThreadInterrupt` remains interrupted until explicitly reset. Previously,
inputs executed after the first input setting the interrupt flag inherited its
state. As corpus inputs are shuffled between all-input coverage runs, the
number of affected inputs and the resulting coverage counts could differ.

Tested with the complete 91-input `socks5` corpus. The all-input deterministic
coverage check passes.

ACKs for top commit:
nervana21:
tACK 77440814bf2c3eb7a649f25c585b3fd54929e5f3
maflcko:
lgtm ACK 77440814bf2c3eb7a649f25c585b3fd54929e5f3
sedited:
ACK 77440814bf2c3eb7a649f25c585b3fd54929e5f3

Tree-SHA512: d1b2b33661f9796628fd7eb1f4ddb212b07110ebbfa7516e305f8aa21bde7898b4bf8fc6f6570df22f8cf6380f1287cb9b6135683ad49b2bdbe83ad9a1af23b9

91/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
fuzzing or regression evidencemerge-commit duplicate discount
Lower-priorityMerge bitcoin/bitcoin#35898: rpc: fix mempool entry vsize docsby merge-script · 1be0b462 · Aug 7, 2026 · 1 fileMessage 81 · StrongTriage 0Details
Commit message · merge-script

Merge bitcoin/bitcoin#35898: rpc: fix mempool entry vsize docs

a3ebf8ab607f2529b634eb6fa990aef7def43d1d rpc: fix mempool entry vsize docs (Musa Haruna)

Pull request description:

Follow-up to [#32800](https://github.com/bitcoin/bitcoin/pull/32800#discussion_r3672286132).

This fixes the RPC help text for `MempoolEntryDescription()`. These docs are used by mempool-entry RPCs such as `getmempoolentry`, verbose `getrawmempool`, `getmempoolancestors`, and `getmempooldescendants`.

The vsize fields in those results describe transactions already in the mempool, so they are always returned and there is no `allowed` field. This removes the incorrect optional markers and the `testmempoolaccept`-specific “only present when allowed is true” wording.

No behavior change.

ACKs for top commit:
sedited:
ACK a3ebf8ab607f2529b634eb6fa990aef7def43d1d

Tree-SHA512: 60574d120d8b85944cde00ebb151c0e847c25000d5ea822ee4d624c723626a1c4db187fa8d09f2fe4405cccb58492c8ac7f754f3176f5adf85008dfb4dd96f14

81/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
merge-commit duplicate discount
Lower-priorityMerge bitcoin/bitcoin#35908: doc: Update NetBSD Build Guideby merge-script · 5f4d5626 · Aug 7, 2026 · 1 fileMessage 81 · StrongTriage 0Details
Commit message · merge-script

Merge bitcoin/bitcoin#35908: doc: Update NetBSD Build Guide

f32685315c2e465a60cecd605d7446d92803c366 doc: Install `pkgconf` to find `capnproto` on NetBSD (Hennadii Stepanov)
5964c7229fc261ef9c52f3aea1bb11a68a50c803 doc: Switch `pkg-config` package to modern `pkgconf` on NetBSD (Hennadii Stepanov)
9b85c9814d1d5b1ef9caedc25dc336dacb887dcc doc: Drop GCC upgrade instructions for NetBSD (Hennadii Stepanov)

Pull request description:

This PR updates the "NetBSD Build Guide" following the latest release 11.0. See commit messages for more details.

ACKs for top commit:
fanquake:
ACK f32685315c2e465a60cecd605d7446d92803c366

Tree-SHA512: 1138038715957951d79c838a1f06dfe5d641684901f451a0937a5df16c03c01f76443cc4761b6258cb93dc4ba496fe99129deb45dd9ea3d3a56c9762813a3d76

81/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
documentation-only discountmerge-commit duplicate discount
AI review queuedMerge bitcoin/bitcoin#35928: doc: mention -DWITH_ZMQ=ON in macOS build guideby merge-script · 8397e09e · Aug 7, 2026 · 1 fileMessage 91 · StrongInformational 15Details
Commit message · merge-script

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

222855ed1129669e67785c9800292f017a301816 doc: mention -DWITH_ZMQ=ON in macOS build guide (cyb3ralbert)

Pull request description:

`doc/build-osx.md` currently says:

> Support for ZMQ notifications requires the following dependency.

The `zeromq` dependency is covered, but the `-DWITH_ZMQ=ON` CMake option is not
mentioned anywhere in that section. `WITH_ZMQ` defaults to `OFF`, so following the
guide as written results in a build with ZMQ disabled, even though the user completed
the ZMQ section. I verified this at the configure step on macOS: with `zeromq`
installed and no flag, CMake reports `ZeroMQ ... OFF`; with `-DWITH_ZMQ=ON` it
reports `ON`.

The same wording was added to the BSD build guides in #35283, but `doc/build-osx.md`
was not included.

Docs-only change. No tests run.

ACKs for top commit:
hebasto:
ACK 222855ed1129669e67785c9800292f017a301816.

Tree-SHA512: b7e7114e18ef10216780f6b549516c79bff67d7a909c5167f9c48cc8d2ef0b10f1524c7656452308914e5cd86425588f9f2dac07d4eeb2fe1e624f5478453d73

91/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
documentation-only discountmerge-commit duplicate discountsecond-pass: broader security terminology
AI analysis · Informational 15/100

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.

Lower-priorityMerge bitcoin/bitcoin#35704: windows: remove deprecated codecvt via UTF-8 narrow APIsby merge-script · 4b4e63f2 · Aug 7, 2026 · 5 filesMessage 81 · StrongTriage 0Details
Commit message · merge-script

Merge bitcoin/bitcoin#35704: windows: remove deprecated codecvt via UTF-8 narrow APIs

6b6d77cc84e4b08641bc2f3fd3c4cf2a22ffdddf windows: remove deprecated codecvt via UTF-8 narrow APIs (kevkevinpal)

Pull request description:

Since #32380 the Windows process code page is UTF-8, so narrow
APIs accept UTF-8 directly. Drop wstring_convert/codecvt and the
related wide process calls (`_wsystem`, `_wexecvp`, `CreateProcessW`)
in favor of `::system`, `_execvp`, and `CreateProcess`.

This should be fine to remove since Bitcoin Core is now on C++20

ACKs for top commit:
hebasto:
re-ACK 6b6d77cc84e4b08641bc2f3fd3c4cf2a22ffdddf, only rebased since my [recent](https://github.com/bitcoin/bitcoin/pull/35704#pullrequestreview-4845891494) review.
hodlinator:
ACK 6b6d77cc84e4b08641bc2f3fd3c4cf2a22ffdddf

Tree-SHA512: dd8039e4d2ccf5d04e52d845ceed2b9ce6b2c53ee23680e502eae6b4f07228e42ae602ca5079c42615ec7be61741fd77781e61567adcc6f03e960ce5b55b1d9a

81/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
merge-commit duplicate discount
Lower-priorityMerge bitcoin/bitcoin#35830: fees: Return false for incompatible fee estimatesby merge-script · 71c06c5c · Aug 7, 2026 · 1 fileMessage 100 · StrongTriage 0Details
Commit message · merge-script

Merge bitcoin/bitcoin#35830: fees: Return false for incompatible fee estimates

b9d573e4a9594e460e100042f195392f3a59480b fees: Return false for incompatible fee estimates (Hao Xu)

Pull request description:

policy_estimator_io deliberately reuses a CBlockPolicyEstimator because
constructing one for every fuzz input severely reduces throughput.
However, Read() returns true for an incompatible old fee estimates file
without replacing the estimator state. The target then calls Write()
with state loaded by a previous input, making coverage depend on corpus
order.

Return false for incompatible files so the target skips Write() when no
state was loaded. This keeps the estimator reuse optimization instead of
resetting the expensive object before every fuzz input.

For the in-tree production caller, incompatible files remain non-fatal
and the estimator still starts from its default state. Read() now
reports failure, so startup emits one additional non-fatal warning.
Node startup and estimator state are unchanged, as is RPC behavior.

ACKs for top commit:
maflcko:
review ACK b9d573e4a9594e460e100042f195392f3a59480b 📩
sedited:
ACK b9d573e4a9594e460e100042f195392f3a59480b

Tree-SHA512: d6ec5986122716ad2c6fb5305626aec71b4b416242791547a12f86fb210d768c87fcb9615fd50259908656766bbe085d55ae90e1d72eaee24d438eecfd9c6dd4

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
Why it was queued
fuzzing or regression evidencemerge-commit duplicate discount
Lower-priorityMerge bitcoin/bitcoin#35915: Release: Prepare "Open Transifex translations for `v32.0`" stepby merge-script · 55dfc244 · Aug 7, 2026 · 2 filesMessage 81 · StrongTriage 0Details
Commit message · merge-script

Merge bitcoin/bitcoin#35915: Release: Prepare "Open Transifex translations for `v32.0`" step

97abf95f48abca708746aed98dc97b1d536d4bb9 qt: Update the `src/qt/locale/bitcoin_en.ts` translation source file (Hennadii Stepanov)

Pull request description:

This PR follows our [Release Process](https://github.com/bitcoin/bitcoin/blob/4df077d7cd32c71646a85a2464a58c322a0cee11/doc/release-process.md).

This step is required to open Transifex translations for v32.0, as scheduled in https://github.com/bitcoin/bitcoin/issues/35122.

For reference, see a previous similar PR in https://github.com/bitcoin/bitcoin/pull/34525.

**Note for reviewers:**

The Transifex slug was already updated in https://github.com/bitcoin/bitcoin/pull/34808.

ACKs for top commit:
fanquake:
ACK 97abf95f48abca708746aed98dc97b1d536d4bb9

Tree-SHA512: 0ddddf7ccd89efeb419c59e0189527b52ee68c31bf108c432674a747d2a6e21f84a2bb372c212a1057083202e56a6a3dba04a632174aea5eaca84f019a6c81d7

81/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
merge-commit duplicate discount
Security candidateMerge bitcoin/bitcoin#35482: fuzz: exercise the transaction-handling path in process_message(s)by merge-script · f11dc617 · Aug 7, 2026 · 8 filesMessage 100 · StrongInformational 15Details
Commit message · merge-script

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

87b080fe2b66036184a54a0bfc320498dd416d74 fuzz: reset the reused mempool in process_message(s) (Hao Xu)
d522fd3196368d4be337bff7bc2a5f33ce3ed1c4 fuzz: prepare deterministic mempool rebuilds (Hao Xu)
b11456386b266b8c0a319b6fad3481b8eeb155cf fuzz: let the test input toggle IBD in the p2p fuzz targets (Hao Xu)
2a29cee68438e485b101e9a89c907f7a2ea38232 test: add helper to reset chainman and mempool (Hao Xu)
2a4ef42d34edf6499e4185c2fc7c6fed8b071ae7 fuzz: share a single FakeNodeClock in the chainman-resetting fuzz targets (Hao Xu)

Pull request description:

## Problem

`process_message` and `process_messages` keep the node in IBD (`ResetIbd()`) and
mine their coinbases with the default bare-`OP_TRUE` output script. As a result
`net_processing` returns early at the `IsInitialBlockDownload()` check and never
reaches the transaction-handling path; and even if it did, a tx spending a
bare-`OP_TRUE` coinbase is rejected as `NONSTANDARD` by
`ValidateInputsStandardness`. The reused mempool therefore always stays empty and
that path is never exercised.

## Changes

Both targets now get the same treatment:

1. **Toggle IBD from the test input** — a `bool` decides whether to also
`JumpOutOfIbd()`, exercising both the IBD and non-IBD paths. In
`process_message` it is consumed last, so existing corpus entries read `false`
and are unchanged. In `process_messages` the messages run in a loop, so the
bool must be consumed *first* (see the corpus note below).
2. **Use a spendable `P2WSH_OP_TRUE` coinbase** — both anyone-can-spend (an
`OP_TRUE` witness, no signature) and a standard witness output, so a fuzz-built
tx spending a mature coinbase can actually be accepted into the mempool.
3. **Reset the rng before rebuilding (preparation)** — rebuilding the chainman
(and, in the next commit, the mempool) consumes the global PRNG. Reset it with
`MakeRandDeterministicDANGEROUS()` first so the rebuild is deterministic across
iterations. Mirrors the `cmpctblock` harness.
4. **Reset the reused mempool** — now that the mempool can become non-empty,
rebuild it together with the chainman in `ResetChainmanAndMempool()` when the
block index grew or the mempool changed. A dirty mempool is detected by its
sequence number rather than its size, since a tx can be added and removed
within one iteration (leaving the size unchanged).

## Corpus note

~~In `process_messages` the IBD bool is consumed before the message loop (first
integral read), which shifts the `FuzzedDataProvider` layout. Existing
`process_messages` corpus entries can be migrated by appending a single `0x00`
byte at the end (read as `false`, keeping the IBD path); every other consumed
value stays the same. This is a qa-assets change accompanying this PR.~~

This note no longer applies because the IBD toggle is now consumed inside the
message loop. Appending a single `0x00` byte would not reliably target that bool
or preserve the rest of the input layout.

The accompanying `qa-assets` update should migrate or regenerate the affected
`process_messages` corpus entries for the current layout.

ACKs for top commit:
Crypt-iQ:
crACK 87b080fe2b66036184a54a0bfc320498dd416d74
maflcko:
review ACK 87b080fe2b66036184a54a0bfc320498dd416d74 🏁
frankomosh:
Review ACK 87b080fe2b66036184a54a0bfc320498dd416d74

Tree-SHA512: e557b2ca3329767a45fe8315c63df9c3191a3a46a17c5e75ea3e4ad0c25e0e500a687fa650297a386b0a2ebb95503d069089ca5ae3d0a34caab98367aeb28683

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✓ Names security-relevant behavior explicitly
Why it was queued
entropy or randomnesssigning boundarydefensive validationfuzzing or regression evidencemerge-commit duplicate discount
AI analysis · Informational 15/100

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 no change to production network, wallet, or consensus code, and no security vulnerability is being fixed or introduced.

Lower-priorityMerge bitcoin/bitcoin#35879: ci: Fix $BASE_ROOT_DIR installationby merge-script · 6f906106 · Aug 7, 2026 · 3 filesMessage 81 · StrongTriage 0Details
Commit message · merge-script

Merge bitcoin/bitcoin#35879: ci: Fix $BASE_ROOT_DIR installation

fae7ba9abae8c5bec72b1c79bdd2480bade89399 ci: Fix $BASE_ROOT_DIR installation (MarcoFalke)

Pull request description:

In the ci system, `BASE_ROOT_DIR` has a default value that can be changed. This has problems:

* The docs do not mention that changing the value requires re-building the image, as the value is embedded.
* Many places hard-code the default value, which is confusing and brittle.

Fix all issues by adding docs and replacing the hard-coded default values with `$BASE_ROOT_DIR`.

ACKs for top commit:
willcl-ark:
ACK fae7ba9abae8c5bec72b1c79bdd2480bade89399

Tree-SHA512: 6bdfc7acf46962f83664b9a4996b65bddad2f3046c19654a83b89c63a7ac8ac3ab3396f03240d42b091f3eda00b9da50bb49a2d19ded37b0de840a20a7c7e1d9

81/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
merge-commit duplicate discount
AI review queuedMerge bitcoin/bitcoin#35914: test, fuzz: Remove unused variablesby merge-script · d36bf709 · Aug 7, 2026 · 8 filesMessage 91 · StrongInformational 15Details
Commit message · merge-script

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

3175d576288f3118c6fee0d9f7cb57f976c52346 test, refactor: Remove unused `error` in `wallet_tests.cpp` (Hennadii Stepanov)
422f1bd92f15c35d8fa799d25889e2fcb7469a44 test, refactor: Remove unused `utxo_pool` in `coinselector_tests.cpp` (Hennadii Stepanov)
e550945a3941e31c8a31983fdce29c11e584bea1 test, refactor: Remove unused `removed_refs` in `txgraph_tests.cpp` (Hennadii Stepanov)
e50f422d25f98cc83d1d2251eca4e134be5453bd test, refactor: Remove unused variables in `test/rbf_tests.cpp` (Hennadii Stepanov)
b7ae50e2e27eb10414a8a2b327fee95e3db3cddc fuzz, refactor: Remove unused `header` in `p2p_transport_serialization.cpp` (Hennadii Stepanov)
3df0d067ade9574ef70e96f048f6178fb34f38f1 fuzz, refactor: Remove unused `random_string` in `locale.cpp` (Hennadii Stepanov)
fc28914de4e1251be7087e2a0cfa5b8fd3b0f0b9 fuzz, refactor: Remove unused `linearization` in `cluster_linearize.cpp` (Hennadii Stepanov)
da58e559865e128ca47571645a7d0e60f9caf317 test, refactor: Remove unused `warnings` in `wallet/test/util.cpp` (Hennadii Stepanov)

Pull request description:

Noted in https://my.cdash.org/builds/3868446/build.

See commit messages for more details.

Here is a related upstream change: https://github.com/llvm/llvm-project/pull/203084.

ACKs for top commit:
maflcko:
review ACK 3175d576288f3118c6fee0d9f7cb57f976c52346 🐕

Tree-SHA512: 49334f79aa0effa9bbc94c7bce69bd1869ded87926229e575ba3721108d08ad5b7451222959310773e8e6009125d98016d095ac1a915e2dfa22712c51d8903aa

91/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
fuzzing or regression evidencesigning or wallet pathmerge-commit duplicate discountsecond-pass: security-sensitive path
AI analysis · Informational 15/100

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.

AI review queuedMerge bitcoin/bitcoin#35896: refactor: Default uint256::operator==, add operator<=>by merge-script · ed2c59ab · Aug 7, 2026 · 5 filesMessage 93 · StrongInformational 15Details
Commit message · merge-script

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

fa2e76d397a4be6d98d3a43f4df923fa592523ea bench: Add base_blob compare bench via uint256 (MarcoFalke)
fa588e9e0f8019d855dbc41199814564c27d5256 refactor: Mark assertion_fail as [[noreturn]] (MarcoFalke)
faec059dfe8bc5a90e273748ce5ced0e024dad81 refactor: Add uint256::operator<=>() (MarcoFalke)
fa6df14c2360f2b55daac0744e8a675eaf3e5eb4 refactor: uint256::operator==() = default (MarcoFalke)

Pull request description:

Some refactors with rationale:

* Default the `uint256` base blob equals operator, because this is standard C++20 practise.
* Add the `uint256` base blob `<=>` operator, because this is standard C++20 practise. Also, `transaction_identifier` already offers such an operator. This allows to remove the non-standard `Compare()` function.
* Add a `[[noreturn]]` to the assertion failure helper that does not return. This is standard C++11 practise.

ACKs for top commit:
optout21:
ACK fa2e76d397a4be6d98d3a43f4df923fa592523ea
Sjors:
ACK fa2e76d397a4be6d98d3a43f4df923fa592523ea
purpleKarrot:
ACK fa2e76d397a4be6d98d3a43f4df923fa592523ea
hebasto:
re-ACK fa2e76d397a4be6d98d3a43f4df923fa592523ea.
w0xlt:
ACK fa2e76d397a4be6d98d3a43f4df923fa592523ea as a simplification/refactor, not as a performance optimization.

Tree-SHA512: 2e64e09fabe71d84c05ed943664417dd1bc1cf6fe6bf31006a58dd9180c458f69915ba7770501537678f1ad51cce16018f79bdf6780e072b73b692ea44b60185

93/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Links an issue, advisory, or supporting reference
Why it was queued
signing or wallet pathmerge-commit duplicate discountsecond-pass: security-sensitive path
AI analysis · Informational 15/100

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 never returning. There is no security bug being fixed and no behavior change that would affect users or attackers.

Security candidateMerge bitcoin/bitcoin#35872: rpc: avoid descriptor range counter overflowby Ava Chow · b388674a · Aug 6, 2026 · 2 filesMessage 96 · StrongModerate 62Details
Commit message · Ava Chow

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

264555af3cc2ab2919e49e7dea3f8066b9336020 rpc: avoid descriptor range counter overflow (Lőrinc)
143a13fb2bd190e50c26bb5582c6c0a2af17867a test: characterize descriptor range endpoint (Lőrinc)

Pull request description:

**Problem:** The authenticated `scantxoutset`, `scanblocks`, `getdescriptoractivity`, `utxoupdatepsbt`, and `descriptorprocesspsbt` RPCs share a descriptor expansion helper that iterates inclusive `int64_t` ranges with an `int` counter.
A ranged descriptor with an explicit `[begin, end]` range ending at `2^31 - 1` expands that valid position, then overflows when advancing the counter to exit the loop.
Trap-enabled builds terminate, while other builds invoke undefined behavior.

**Fix:** Use `int64_t` for loop control so the one-past-the-end value is representable and every position passed to `Descriptor::Expand()` remains within its existing `int` range.

Related: [#26275](https://github.com/bitcoin/bitcoin/pull/26275) fixed the same endpoint overflow in `deriveaddresses`.

ACKs for top commit:
achow101:
ACK 264555af3cc2ab2919e49e7dea3f8066b9336020
polespinasa:
ACK 264555af3cc2ab2919e49e7dea3f8066b9336020
sedited:
ACK 264555af3cc2ab2919e49e7dea3f8066b9336020

Tree-SHA512: 4326182b5897b6f6672e5f7c7296eafdbb6e3b5ed901d61e8fa2cff9b19d372bb8adb88902368dc520ed400e12dd5264ea68677d9ce0feec76fa2ef55fa0d2f4

96/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✓ Names security-relevant behavior explicitly
Why it was queued
signing boundarymemory safetymerge-commit duplicate discount
AI analysis · Moderate 62/100

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 could wrap past its maximum, causing undefined behavior. In practice this could crash builds that catch such errors, or silently misbehave in others. The fix widens the loop counter to a 64-bit integer so it can safely reach and pass the endpoint. A test was added to confirm the edge case now works.

AI review queuedMerge bitcoin/bitcoin#35842: rpc: Properly make RPCResult::Type::ANY non-test-onlyby merge-script · c36ffd87 · Aug 6, 2026 · 4 filesMessage 91 · StrongInformational 19Details
Commit message · merge-script

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

fac4b06e997e197d6dca4c41bdec99c0ba84cfca refactor: Use CLIENT_NAME in buildOpenRPCDoc (MarcoFalke)
fa3aadbc32e01386ddf54263d756b7a89b30addf refactor: Use self.Arg<bool> in getopenrpcinfo (MarcoFalke)
fa1871a52816e7d79a29bd7cabe2901e67acf71e refactor: Remove stale NOLINTNEXTLINE above GetAddressInfoBaseFields (MarcoFalke)
fa2264791490a16e55e404687140d47c58972387 rpc: Properly make RPCResult::Type::ANY non-test-only (MarcoFalke)
fa1242dcc02212154913745bb41aad12dd42761e refactor: Use std::visit in ApplyArgFallback (MarcoFalke)

Pull request description:

Commit 6a1a66c180cba5f2d4189e89327de23505c7f4dd attempted to properly render RPC results of the type `ANY`.

However, the commit is incomplete.

Fix it, by properly rendering all `ANY` types.

Moreover, a few trivial refactors after https://github.com/bitcoin/bitcoin/pull/34683 are included here.

ACKs for top commit:
sedited:
ACK fac4b06e997e197d6dca4c41bdec99c0ba84cfca
willcl-ark:
ACK fac4b06e997e197d6dca4c41bdec99c0ba84cfca

Tree-SHA512: b77f1956e4feb9afb93d38245491eec190c4538aec7ac57c327fb2efd86c7da6ee8a1406f81fc18fac06bae77a7d38845a537ca0b8f4ae2d94c38eefd8e88dc1

91/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
signing or wallet pathmerge-commit duplicate discountsecond-pass: security-sensitive path
AI analysis · Informational 19/100

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 direct security vulnerability here; the change is about making generated API documentation accurate and consistent.

Lower-priorityMerge bitcoin/bitcoin#35759: fuzz: check http_request body matches framingby merge-script · 7cb9aaae · Aug 6, 2026 · 1 fileMessage 91 · StrongTriage 0Details
Commit message · merge-script

Merge bitcoin/bitcoin#35759: fuzz: check http_request body matches framing

7502b9ddba740a2b2250764e340b17a23b15ece8 fuzz: check http_request body matches framing (ameen-alam)

Pull request description:

The http_request target asserted that ReadBody() returns an empty string. That held for the libevent-based http_libevent::HTTPRequest, where the harness only parsed the request line and headers and never populated a body. Commit 9c20859b5f (PR #35182) replaced libevent with http_bitcoin::HTTPRequest, and the target was switched over in e427c227fa; its LoadBody() now decodes Content-Length and chunked bodies per RFC 9112, so any fully-parsed request carrying a body trips the stale assertion (e.g. "POST / HTTP/1.1\r\nContent-Length: 3\r\n\r\nabc").

Replace the emptiness check with a framing-consistency check that mirrors LoadBody()'s own branch logic: a chunked body is bounded by MAX_BODY_SIZE, a Content-Length body is exactly that many bytes, and a request with neither framing header has no body. This strengthens the target instead of dropping the assertion.

**Steps to reproduce (old assertion):**
Build the fuzz binary and pass this input as a file to the `http_request` target:
`POST / HTTP/1.1\r\nContent-Length: 3\r\n\r\nabc`
→ `test/fuzz/http_request.cpp:49: Assertion 'body.empty()' failed`

**Testing the fix:**
Ran the updated target ~16 min under libFuzzer with ASAN/UBSAN
(14.2M execs, no crashes), plus targeted inputs for each branch:
Content-Length body, chunked, `Transfer-Encoding: identity` + Content-Length,
no framing headers, and `Content-Length: 0`. Happy to contribute the repro
input to qa-assets as a follow-up.

ACKs for top commit:
pinheadmz:
ACK 7502b9ddba740a2b2250764e340b17a23b15ece8
marcofleon:
tACK 7502b9ddba740a2b2250764e340b17a23b15ece8

Tree-SHA512: 4f2eb6bdb3a4556866a84fe0f1d0d8cf506e2efd1b1c7493a99f67ca452b31a140034d418c4064142b1a66c3a6c34b97df0e2b12c21ea86cd4019ffc7cff3b27

91/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
fuzzing or regression evidencemerge-commit duplicate discount
Lower-priorityMerge bitcoin/bitcoin#35878: net_processing: process unique tx INVs onlyby merge-script · 5b008514 · Aug 6, 2026 · 2 filesMessage 81 · StrongTriage 0Details
Commit message · merge-script

Merge bitcoin/bitcoin#35878: net_processing: process unique tx INVs only

1278a5970d5ada0979052a5bad899e896b8ab40b net_processing: process unique tx INVs only (Gregory Sanders)

Pull request description:

There is no reason we should process conflicting
advertisements for transactions, as they cannot be both accepted into our mempool.

Avoid processing these and doing spurious work.

Should be no change in observable behavior.

ACKs for top commit:
ajtowns:
ACK 1278a5970d5ada0979052a5bad899e896b8ab40b
fjahr:
ACK 1278a5970d5ada0979052a5bad899e896b8ab40b
l0rinc:
ACK 1278a5970d5ada0979052a5bad899e896b8ab40b

Tree-SHA512: c62ceed2cc634c8c99509a8495e5f9bb6d4d8d050942f709a6539ae4dfe1ec628ce7ab0ec1392656809e0d827d1fecf2e8fb9bb4600d13a5bf9a34c9e9e3ad6e

81/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
merge-commit duplicate discount
Lower-priorityMerge bitcoin/bitcoin#35912: doc: fix stale bitcoin_en.xlf referenceby Hennadii Stepanov · a061b011 · Aug 6, 2026 · 1 fileMessage 91 · StrongTriage 0Details
Commit message · Hennadii Stepanov

Merge bitcoin/bitcoin#35912: doc: fix stale bitcoin_en.xlf reference

e98ffd4bd82d35ea316f977a9659c8080066b643 doc: fix stale bitcoin_en.xlf reference (cyb3ralbert)

Pull request description:

`doc/release-process.md` still instructs users to create the Transifex resource from `src/qt/locale/bitcoin_en.xlf`, even though that file no longer exists.

It was removed in #34808, which switched the Transifex source to the native Qt `.ts` file. That PR updated the other references to `.xlf` in this document, but this one was missed. The last step in the same list already refers to `bitcoin_en.ts`, as does `.tx/config`.

This patch updates the remaining outdated reference.

Docs-only change. No tests run.

ACKs for top commit:
hebasto:
ACK e98ffd4bd82d35ea316f977a9659c8080066b643. This was overlooked in https://github.com/bitcoin/bitcoin/pull/34808.

Tree-SHA512: fc6a295aae8a58e72e3324f52849255fe5c49bc53af71733de44489dd8a5dea86e3dfeaaf01cb47c506e717019a390de97a71505babcb1c98626f5c2fd98274f

91/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
documentation-only discountmerge-commit duplicate discount
Lower-priorityMerge bitcoin/bitcoin#34927: test: Check that RPCs do not time out, even under loadby merge-script · 950b1c09 · Aug 6, 2026 · 4 filesMessage 91 · StrongTriage 0Details
Commit message · merge-script

Merge bitcoin/bitcoin#34927: test: Check that RPCs do not time out, even under load

fa7bc26d1276581aac795daf8ceaea903cdcd7b3 test: Check that RPCs do not time out, even under load (MarcoFalke)
fa2bd96cc0d4887b94b3f2601649ef62c5513308 test: Map cli CalledProcessError on server error to JSONRPCException (MarcoFalke)

Pull request description:

It turns out there is no test currently to check that the RPC server does not time out under load. With "load" I mean a flood of trivial payloads. That is, the only work needed is JSON encoding and decoding of (let's say) a block of data of 2 MB or so. This may take a few milliseconds, but should never take more than a few seconds.

So add a test for this.

ACKs for top commit:
enirox001:
ACK https://github.com/bitcoin/bitcoin/pull/34927/changes/fa7bc26d1276581aac795daf8ceaea903cdcd7b3
sedited:
ACK fa7bc26d1276581aac795daf8ceaea903cdcd7b3

Tree-SHA512: c60646981b7449c757e9fad499e1cd71030376ffb2ae687c8136c6f70accd0a2d76a4cbfc7dd1bc6626ea3a5310a33616a36cd682cc5c4371ec86aa2c8641aeb

91/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Mentions testing or verification✓ Links an issue, advisory, or supporting reference
Why it was queued
merge-commit duplicate discount
Lower-priorityMerge bitcoin/bitcoin#35885: ci: switch to a sourceware mirror for riscvby merge-script · bd01e66f · Aug 6, 2026 · 2 filesMessage 81 · StrongTriage 0Details
Commit message · merge-script

Merge bitcoin/bitcoin#35885: ci: switch to a sourceware mirror for riscv

81fcecfe4525f2d57412f07390a139a2acf1c54e Revert "ci: Temporarily remove riscv32 config from GHA matrix" (will)
b283e1751cc48b247d500cb5a642561d10651f16 ci: use mirror for riscv submodules (will)

Pull request description:

The https transport is rate-limited to block AI scrapers.

Switch to a live mirror on fish.foo to re-enable the riscv job.

ACKs for top commit:
maflcko:
lgtm ACK 81fcecfe4525f2d57412f07390a139a2acf1c54e
sedited:
ACK 81fcecfe4525f2d57412f07390a139a2acf1c54e

Tree-SHA512: 1891046d9847b904a3e4be25b7f313fc2413ad1cc0b2c09b2300f81a2f1f691dad816fa5fcfeeae263f8d5f868d229aca5a7ab3f227ce650d359068488bc1e21

81/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
merge-commit duplicate discount
Lower-priorityMerge bitcoin/bitcoin#35910: refactor: Remove unused newFeeRate var in ReplacementChecksby merge-script · 4df077d7 · Aug 6, 2026 · 1 fileMessage 81 · StrongTriage 0Details
Commit message · merge-script

Merge bitcoin/bitcoin#35910: refactor: Remove unused newFeeRate var in ReplacementChecks

fa9a9a82acd4804502cdc5fc00ffd1698920d157 refactor: Remove unused newFeeRate var in ReplacementChecks (MarcoFalke)

Pull request description:

This is unused since cluster-mempool, so it seems confusing to keep around. See the commit that forgot to remove it:

```sh
$ git show 216e6937290338950215795291dbf0a533e234cf -U99999 | grep newFeeRate
CFeeRate newFeeRate(ws.m_modified_fees, ws.m_vsize);
- if (const auto err_string{PaysMoreThanConflicts(ws.m_iters_conflicting, newFeeRate, hash)}) {
```

ACKs for top commit:
sedited:
ACK fa9a9a82acd4804502cdc5fc00ffd1698920d157

Tree-SHA512: f8804109c59dfe37da754cb1924cc16abbc792fbb3619249a1edbc005f66fd88357c4810926625a375415c5be4ff056d68af3029f8075590252289c1d753a2fd

81/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Links an issue, advisory, or supporting reference
Why it was queued
merge-commit duplicate discount
Lower-priorityrefactor: Remove unused newFeeRate var in ReplacementChecksby MarcoFalke · fa9a9a82 · Aug 6, 2026 · 1 fileMessage 85 · StrongTriage 0Details
Commit message · MarcoFalke

refactor: Remove unused newFeeRate var in ReplacementChecks

This is unused since cluster-mempool. See the commit that forgot to
remove it:

```sh
$ git show 216e6937290338950215795291dbf0a533e234cf -U99999 | grep newFeeRate
CFeeRate newFeeRate(ws.m_modified_fees, ws.m_vsize);
- if (const auto err_string{PaysMoreThanConflicts(ws.m_iters_conflicting, newFeeRate, hash)}) {
```

85/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Uses a recognizable type or scope✓ Provides detailed explanatory context
Lower-priorityMerge bitcoin/bitcoin#35895: refactor: Enable clang-tidy rule to reject anon namespace in headerby merge-script · c4fbd3c7 · Aug 5, 2026 · 3 filesMessage 93 · StrongInformational 15Details
Commit message · merge-script

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

fa93132d6da508597205513725ba4663d3a24954 refactor: Enable misc-definitions-in-headers (MarcoFalke)
fa5ca877b60339c858b5045f855ae0256e63b69d refactor: Enable clang-tidy rule to reject anon namespace in header (MarcoFalke)
fafe5042bd1b8c53faf3c0dfe40958f605666d67 refactor: Use C++20 std::identity over IntIdentity (MarcoFalke)

Pull request description:

This avoids issues like https://github.com/bitcoin/bitcoin/pull/35737 from passing CI in the first place.

Also, the rule can help to avoid ODR issues, according to https://clang.llvm.org/extra/clang-tidy/checks/fuchsia/header-anon-namespaces.html

This follows https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#sf21-dont-use-an-unnamed-anonymous-namespace-in-a-header

ACKs for top commit:
sedited:
ACK fa93132d6da508597205513725ba4663d3a24954

Tree-SHA512: c1a9d573aed9f295a9fb1931e96e37a9c39e2339392af79d0a3441ebd29282812c2614eab13a01e0d508802f66b73e8f2387ffcbb7dd28676b4fa43f81f9a680

93/100 · StrongMessage clarity
✓ Specific, descriptive subject✓ Names a concrete action or component✓ Provides detailed explanatory context✓ Explains rationale or failure mode✓ Links an issue, advisory, or supporting reference
Why it was queued
merge-commit duplicate discount
AI analysis · Informational 15/100

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 and does not fix an active security bug.