Includes:
[32.x] More Backports #36300
pull fanquake wants to merge 24 commits into bitcoin:32.x from fanquake:more_32_0_backports changing 43 files +424 −144-
fanquake commented at 3:53 PM on September 19, 2026: member
-
7a0964a252
rpc: Correct OpenRPC default metadata
Correct six argument metadata entries that produce misleading or invalid OpenRPC defaults. The getdeploymentinfo blockhash fallback and four sighashtype fallbacks describe how omitted arguments are resolved. They are not literal values accepted by the RPCs, so mark them as DefaultHint values. The send include_watching option is boolean, but its string default makes the generated schema internally inconsistent. Use a boolean value, matching the analogous sendall option. Runtime behavior is unchanged. Github-Pull: #36297 Rebased-From: b7f740c594ba1482344a7906b799fb62c533464f
- fanquake added this to the milestone 32.0 on Sep 19, 2026
- DrahtBot added the label Backport on Sep 19, 2026
-
DrahtBot commented at 3:53 PM on September 19, 2026: contributor
<!--e57a25ab6845829454e8d69fc972939a-->
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.
<!--006a51241073e994b41acfe9ec718e94-->
Code Coverage & Benchmarks
For details see: https://corecheck.dev/bitcoin/bitcoin/pulls/36300.
<!--021abf342d371248e50ceaed478a90ca-->
Reviews
See the guideline and AI policy for information on the review process.
Type Reviewers ACK marcofleon, willcl-ark Approach ACK ismaelsadeeq If your review is incorrectly listed, please copy-paste <code><!--meta-tag:bot-skip--></code> into the comment that the bot should ignore.
<!--5faf32d7da4f0f540f40219e4f7537a3-->
LLM Linter (✨ experimental)
Possible places where named args for integral literals may be used (e.g.
func(x, /*named_arg=*/0)in C++, andfunc(x, named_arg=0)in Python):Parse(descriptor_str, keys, error, true)insrc/wallet/walletutil.cpp
Possible places where comparison-specific test macros should replace generic comparisons:
- [test/functional/interface_http.py]
assert count < num_req, f"Server handled the whole batch of {num_req}: nothing was throttled"-> useassert_greater_than(num_req, count)for the comparison instead.
<sup>2026-10-01 15:57:12</sup>
-
98b9a497e0
wallet: Remove WalletDescriptor's default constructor
Drop the default constructor and add a factory function to construct a WalletDescriptor from stream Github-Pull: #36230 Rebased-From: 4cc00f7bc04b4c07827728ba5ce1094b338a76a8
-
655148d0ac
wallet: Make WalletDescriptor's descriptor const
Github-Pull: #36230 Rebased-From: bb5e8320d76f5175fdf86bdc4c2d24bfc1eed438
-
7fdb8584da
wallet: Compare descriptors by hash of canonical string
The canonical string comparison was slow because it would compute the canonical string for each comparison. This can be sped up by holding the canonical string in memory, computed upon construction of WalletDescriptor. To reduce memory usage, this string is further hashed so that the comparison operates over the hash of the canonical string. Github-Pull: #36230 Rebased-From: 64abb3e8d3610449d541bfff2db23b9ace3fa111
-
81e580401d
descriptor: Explicitly handle use_apostrophe cases
Github-Pull: #36230 Rebased-From: 405b1d6055e78866fe2d86ba6fb16534f9554a32
-
d17455aae8
descriptor, doc: Clarify miniscript CompatDescriptorHash
The hardened indicator for Minscript expressions in CompatDescriptorHash uses whichever hardened indicator was originally given by the user. Github-Pull: #36230 Rebased-From: f0f6dce849634e801ac81705176ca8b96abbaa09
-
e6c57c0982
wallet: Document WalletDescriptor::UpdateFrom
Github-Pull: #36230 Rebased-From: f6cbcfd98a000deb17521520074ba46965c410b1
-
c46dacf923
test: Simplify miniscript descriptor check in wallet back compat
Github-Pull: #36230 Rebased-From: ebf2f69ee81925057cdcc881e42e861dbdf39ae5
-
21a947002e
test: Add 31.1 to wallet back compat
Github-Pull: #36230 Rebased-From: 61edcf92532502e91c2e17b8c2a23b45f5773936
- DrahtBot added the label CI failed on Sep 19, 2026
- DrahtBot removed the label CI failed on Sep 19, 2026
-
bfc87b96ef
doc: scope claims about private broadcast feature
Reframe in terms of risk reduction rather than absolutes Github-Pull: #36309 Rebased-From: 2630d8e6c9d60579372c019e4b2cc7e73163a5d8
-
fa11293ddc
private broadcast: mark feature as experimental
Github-Pull: #36309 Rebased-From: f41372998377ab8310476f0c03294e69cc3222e8
-
c65060e6d3
ci: raise BuildKit step log limit
The Windows cross-toolchain build can exceed BuildKit's default 2 MiB per-step log limit, which hides useful output. Raise the limit to 5 MiB for both CI builder configurations. This retains substantially more diagnostics without enabling unlimited logs. Github-Pull: #36316 Rebased-From: 96d487c11e8ff55f5df3975272916a6d13c70162
-
6854ead11c
ci: use POSIX threads in Nix Windows cross shell
Guix release binaries use the POSIX GCC thread model, but the pinned Nixpkgs cross compiler defaults to MCF. Select POSIX through the Nixpkgs threads hook so GCC and its target libraries agree. Leave threads.package null because making winpthreads a target dependency exposes its headers to native GCC build tools. Supply its headers and libraries through EXTRA_*_FOR_TARGET for target libraries instead. Add winpthreads to the compiler wrapper so builds in the shell get its include and library paths without manual NIX_CFLAGS_COMPILE or NIX_LDFLAGS exports. Github-Pull: #36316 Rebased-From: 1d59d5ad2550b2ff6aaea2a630d1c6afa877ea2b
-
d06f51300e
ci: print Windows cross compiler thread model
BuildKit can truncate the compiler build log, hiding its configure flags. Print the compiler version and thread model when CI enters the Nix test shell so a mismatch is visible in the job output. Github-Pull: #36316 Rebased-From: 9fd18aedb088b5ca6a7c424aab2a4a1ec3ef4eeb
-
8ec0fd46f4
net: don't discourage private broadcast peers
Keep private broadcast connections outside normal discouragement handling. Misbehaving private broadcast peers are still disconnected. Github-Pull: #36312 Rebased-From: eab6630addc385d013db5fe6779679228e445d09
-
782ca5a16f
test: Fixup MAX_BODY_SIZE http throttling test
Github-Pull: #36324 Rebased-From: fa2c62036b1d1a1f5858e7ea96cbc719503a942d
-
651670dec1
test: characterize fee callback loss at shutdown
Shutdown saves and unregisters the fee estimator before draining queued validation callbacks, so a pending block update can be missing from the saved estimates. The mempool estimator also ignores its saved file on restart when the saved tip no longer matches the active tip. Queue a block update after the scheduler stops and check that the block-policy height in the saved estimates does not reflect it. Co-authored-by: Rob Hamilton <6456095+Rob1Ham@users.noreply.github.com> Github-Pull: #36322 Rebased-From: 08729e6ef9c9c5ec75834633a39f51f768d789c7
-
8b93cadccc
init: drain callbacks before saving fee estimates
Save and unregister the fee estimator after the existing callback drain so queued block updates are reflected in the saved estimates. The estimator comment now says its shutdown actions follow the callback drain. The old paragraph below the indexes claimed the drain only let wallets catch up, although wallets are already unloaded. The new comment beside the final chainstate flush keeps the accurate point that callbacks queued there can be dropped. Github-Pull: #36322 Rebased-From: 8c27c38526419de2eaca1d4857df2172ad1da1ab
- DrahtBot added the label CI failed on Sep 25, 2026
- DrahtBot removed the label CI failed on Sep 25, 2026
-
02a7f11038
tools: Call SHA256AutoDetect in bitcoin-util, bitcoin-tx and bitcoin-wallet
Only kernel::Context users selected a hardware SHA256 implementation, so these tools fell back to the generic one. On an M2 Max, grind is ~5x faster and signing 2000 P2PKH inputs with bitcoin-tx ~2.3x. Github-Pull: #36364 Rebased-From: 4048909a53422bf86b207a9b5c8650e8edd25737
-
ismaelsadeeq commented at 6:37 AM on September 30, 2026: member
-
26f3c91025
doc: add 461 (Deterministic ECDSA signatures with low-R grinding) to bips.md
Github-Pull: #36377 Rebased-From: d57346d682f17e6cf09f8acc5e7893ee16eec193
-
18765f6734
log: move CreateNewBlock() log line behind a new mining category
Github-Pull: #36336 Rebased-From: 54b8795121d3081019befd8a2bc70adcd06fcb65
- fanquake referenced this in commit 5cf7f5ed46 on Sep 30, 2026
- fanquake referenced this in commit 635745539f on Sep 30, 2026
- fanquake referenced this in commit 7f0ffc9b10 on Sep 30, 2026
- DrahtBot added the label CI failed on Sep 30, 2026
- DrahtBot removed the label CI failed on Sep 30, 2026
-
willcl-ark commented at 12:23 PM on September 30, 2026: member
ACK 7f0ffc9b10cfd855ab8f6fcd0fe29e555336b459
All nice clean backports, all appear functionally correct too.
Many missing release notes, but IIUC this is fine here as we are going to update the wiki directly (should remember to do this though!)
- DrahtBot requested review from ismaelsadeeq on Sep 30, 2026
- fametrano referenced this in commit f0eaefcd8a on Sep 30, 2026
- fametrano referenced this in commit 10f299afd2 on Sep 30, 2026
- fametrano referenced this in commit 4e6d832a25 on Sep 30, 2026
- fametrano referenced this in commit 213193b6bd on Sep 30, 2026
- fanquake marked this as ready for review on Oct 1, 2026
- fanquake requested review from stickies-v on Oct 1, 2026
- fanquake requested review from marcofleon on Oct 1, 2026
-
d7de90cc1e
fees: rename the default fee_rate_estimator value to "auto"
"none" read as though fee estimation was disabled, so rename the public value (and the FeeRateEstimatorType::NONE enumerator) to "auto", which describes what it does. Also reject unknown fee_rate_estimator values instead of silently coercing them to the default, so a mistyped value surfaces an error. The previous "none" spelling was never released, so it is rejected too. Co-authored-by: w0xlt <94266259+w0xlt@users.noreply.github.com> Github-Pull: #36365 Rebased-From: 4056908f0feae2a1caf9b53cfbe77bb8091246c9
-
162c3b2187
fees: fall back to block_policy when the mempool estimator can't estimate
When the mempool policy estimator cannot produce an estimate, GetFeeRateEstimate() now returns the block policy estimate rather than an error. The combined estimate starts from the block policy estimate and lowers it with the mempool estimate only when present, so the fallback path shares the log that reports the selected fee rate. An error is returned only when the block policy estimate itself is unavailable. Github-Pull: #36365 Rebased-From: c0b7ca3dbdbaecdd045c8a36d9758470358880a0
-
532b496bc1
fees: clear mined-block stats when the mempool load fails
When the mempool fails to load at startup (persistence disabled, or a missing or corrupt mempool.dat), init notifies the fee_rate_estimator_man, which clears its tracked mined-block window. Otherwise the estimator would keep a window describing a mempool the node no longer has and, once the mempool refilled, serve an estimate built on it. Clearing makes the estimator report insufficient data until the window refills from the current tip, so the combined estimate falls back to the block policy estimate meanwhile. Github-Pull: #36365 Rebased-From: 5b77288673e2b74de1512180a8911f435311ca7a
- fanquake force-pushed on Oct 1, 2026
- marcofleon approved
-
marcofleon commented at 3:59 PM on October 1, 2026: contributor
ACK 532b496bc1194f36d28e333ab4eb2b7b8dbdaf59
Backports are clean.
- DrahtBot requested review from willcl-ark on Oct 1, 2026
- willcl-ark approved
-
willcl-ark commented at 4:04 PM on October 1, 2026: member
ACK 532b496bc11
metadata update in
git range-diff 7f0ffc9b10c...532b496bc11only - fanquake merged this on Oct 1, 2026
- fanquake closed this on Oct 1, 2026
Milestone
32.0