(+) #36187 hodlinator http: Restore requirement of IPv4 bind success P1 · bug fix Ready 0 Strong 57 + 71 tests Prevent local cross-user RPC credential theft when another process occupies the default IPv4 loopback port Require the default IPv4 loopback bind to succeed during startup before writing the RPC cookie P1 because it resolves a security flaw where bitcoind fails open on partial endpoint binds Prevents rogue local processes on IPv4 from capturing plaintext cookies sent by default CLI tools Broad agreement on requiring an IPv4 listener since bitcoin-cli defaults to IPv4 (winterrdog) Concept approval without extensive rationale (janb84, l0rinc, sedited) Suggestions regarding error messaging and log levels were addressed or deferred without blocking 57 lines added or modified outside tests 71 lines added or modified in tests 14 lines removed in total 3 files, 4 commits (+) #35837 MicSm rpc: fail scanblocks when block filter range is unavailable P1 · bug fix Ready 0 Blocked 22 + 59 tests Stop scanblocks from silently omitting unindexed blocks and returning incomplete match results Fail with an explicit error when reading block filters fails, alerting callers to incomplete scans P1 because it prevents silent data gaps that cause callers to miss transactions in unindexed ranges Eliminating misleading success responses prevents fund safety and correctness risks for filter users Author needs to address open review objections regarding functional tests and error handling Concept approval for preventing silent failures when reading block filters (maflcko, fjahr) Unaddressed objection: functional test relies on races and mines excessive blocks (fjahr) Questions whether to return partial results instead of erroring when a range is missing (fjahr) Concern that checking index readiness at scan start may misclassify errors on long scans (fjahr) 22 lines added or modified outside tests 59 lines added or modified in tests 13 lines removed in total 2 files, 1 commits (+) #36385 l0rinc rest: fix getutxos POST body decoding P1 · bug fix Waiting on author 1 Strong 7 + 17 tests Ensure POST requests to /rest/getutxos find valid outpoints instead of incorrectly reporting no hit Align POST behavior with GET queries so REST clients get accurate UTXO results Cap input vector allocation and reject trailing or malformed request bytes P1 after comparing with the other PRs here (assessed alone as P2): Raised to P1: like #35837 it silently returns wrong data to existing callers (POST getutxos always misses), plus an unbounded allocation; same consequence class as the other P1 correctness bugs. P2 because it fixes a correctness bug causing false negative UTXO results for REST clients It prevents unbounded memory allocation on large declared outpoint counts Substantive support with no open objections Verified locally by reproducing the issue and confirming matching responses (Zeegaths) Tested 14 POST bodies in binary and hex on regtest to confirm expected responses (fametrano) Open suggestion to return HTTP 400 when a POST body contains no outpoints (fametrano) 7 lines added or modified outside tests 17 lines added or modified in tests 11 lines removed in total 2 files, 4 commits (+) #36200 hodlinator rpc: invalid credentials can occupy every HTTP worker P2 · DoS protection Ready 0 Strong 0 + 36 tests Prevent unauthorized clients from tying up all HTTP RPC worker threads with invalid credentials Stop denial of service against legitimate authenticated RPC callers P2 because it fixes an easy resource exhaustion denial-of-service vector on the HTTP server Prevents unauthenticated clients with network access from blocking legitimate RPC calls Ready to review Author moved the PR to draft to consider an alternative dedicated slow-reply thread design No review verdicts recorded Support because the worker exhaustion vector is cheap and easy to hit (willcl-ark) Resolved objection: removing the sleep speeds up password guessing, but DoS risk is worse (willcl-ark) 0 lines added or modified outside tests 36 lines added or modified in tests 6 lines removed in total 2 files, 1 commits (+) #36503 l0rinc rpc: reject AssumeUTXO rollback without tip data P2 · bug fix Waiting on author 0 Strong 1 + 18 tests Prevent daemon crashes when requesting a snapshot rollback on a pruned assumeutxo node without tip data Return a regular error instead of crashing when required block or undo data is missing P2 because node crashes from assertion failures represent a severe reliability issue Impact is confined to pruned assumeutxo nodes attempting rollbacks without required historical data Concept approval for a contained fix preventing daemon assertion failures (musaHaruna) Open suggestion to adjust boundary checks and cover non-pruned snapshot nodes (musaHaruna) 1 lines added or modified outside tests 18 lines added or modified in tests 3 lines removed in total 2 files, 2 commits (+) #36434 pinheadmz http: support unix sockets P2 · user request Ready 0 Strong 754 + 793 tests Allow local RPC and REST connections and bitcoin-cli over UNIX domain sockets Lets node operators manage access via filesystem permissions rather than IP allowlists Eliminates TCP loopback overhead for local node communication P2 because it fulfills a long-standing user request for UNIX domain socket RPC support Provides filesystem-based access control and removes TCP loopback overhead for node operators Approach approval citing clean design with socket variants and high user demand (winterrdog) Concept approval without stated reasons (b-l-u-e) Earlier concerns regarding socket file collisions and Host header regressions were fixed (b-l-u-e) Open question on whether to support abstract namespace sockets in the future (winterrdog) 754 lines added or modified outside tests 793 lines added or modified in tests 265 lines removed in total 20 files, 10 commits (+) #35286 instagibbs rpc: add testsubmitpackage for 1p1c test submissions P2 · user request Ready 0 Strong 287 + 716 tests Allow wallets to test 1-parent-1-child package acceptance and RBF without modifying the mempool Enable pre-flight checks for CPFP fee bumping where aggregate feerates or sibling eviction are required P2 because it introduces the testsubmitpackage RPC to resolve an established gap for wallet developers Fulfills a frequent feature request for pre-flight testing of CPFP packages without mutating mempool state Concept approval citing the usefulness of dry-running 1p1c package acceptance for wallets (ismaelsadeeq) Concept approval without stated reasons (w0xlt) Suggests verifying downstream user demand before committing to maintain the new RPC (dergoegge) Suggests splitting out the internal validation dry-run if RPC demand is not established (andrewtoth) 287 lines added or modified outside tests 716 lines added or modified in tests 74 lines removed in total 7 files, 2 commits (+) #35728 maflcko rpc: Properly throw on internal I/O errors in GetTransaction P2 · bug fix Ready 1 (+5) Strong 80 + 86 tests Report disk read and index corruption errors explicitly instead of claiming transactions are missing Alerts users and RPC callers to storage or index corruption instead of masking it as nonexistent data P2 because RPC and REST endpoints misreport disk read failures as missing transactions Callers receive accurate failure details rather than false negatives during storage problems Strong support for distinguishing read failures from missing transactions (yuvicc, ryanofsky) Verified by testing (musaHaruna) Open question on design overlap with PR 34132 and release note wording (l0rinc) 80 lines added or modified outside tests 86 lines added or modified in tests 44 lines removed in total 7 files, 6 commits (+) #36648 fametrano descriptor, rpc, wallet: do not echo key material in error messages P2 · bug fix CI failing 0 (+1) Positive 32 + 131 tests Prevent private keys and key material from leaking into error messages Keep secret data out of application logs, error reporters, and screenshots when descriptor parsing fails P2 because it stops sensitive key material from leaking into RPC error responses Prevents private keys from being exposed in caller logs and error reports Check whether the CI failure is from this PR before deep review Support without stated reasons (jpk68) Author addressed concerns about error clarity and key indexing, awaiting follow-up (uqlidi) 32 lines added or modified outside tests 131 lines added or modified in tests 62 lines removed in total 11 files, 1 commits (+) #36629 andrewtoth Add output script index and corresponding script history RPC P2 · user request Ready 1 Strong 1,174 + 1,060 tests Allow querying historical transactions by script or address without wallet imports Avoid requiring external indexing stacks or Electrum servers to sync separate databases P2 because it exposes a getscripthistory RPC repeatedly requested by downstream tooling Allows querying transaction history and spends by script hash or descriptor window directly from the node Strong support across reviewers, with one Tested ACK verifying fixes on the updated push (kravens) Concept approval from multiple contributors (sedited, l0rinc, w0xlt, romanz, ViniciusCestarii, xyzconstant) Earlier objections around disk read budgets and library boundaries are resolved (kravens) Nonblocking suggestions remain open regarding mempool error handling and help text (ViniciusCestarii, kravens) 1,174 lines added or modified outside tests 1,060 lines added or modified in tests 31 lines removed in total 30 files, 5 commits (+) #34534 fjahr rpc: Manual prune lock management (Take 2) P2 · new feature Ready 0 (+1) Strong 171 + 238 tests Allow users and external wallets to manually protect blocks from pruning on pruned nodes Prevents blocks needed for rescans from being deleted while a wallet is unloaded or offline P2 because it adds RPCs external wallets need to hold blocks on disk without disabling pruning Enables wallets to build on pruned nodes without missing blocks during offline periods Substantive support for enabling wallet rescans on pruned nodes (achow101, stickies-v) Code approved across multiple revisions (sedited) Concept approval with open questions on startup lock options and minor test cleanups (andrewtoth) 171 lines added or modified outside tests 238 lines added or modified in tests 1 lines removed in total 9 files, 6 commits (+) #36566 andrewtoth private broadcast: wait synchronously for mempool acceptance P2 · user request Waiting on author 0 Blocked 107 + 152 tests Ensure transactions sent via private broadcast are accepted into the mempool before returning success Prevent third-party wallet failures and unblock future private broadcast support in the wallet P2 after comparing with the other PRs here (assessed alone as P3): Raised to P2 and moved up 17: it repairs a silent semantic break of sendrawtransaction for existing third-party callers and is a stated prerequisite for wallet private broadcast. P3 because it allows callers to wait for mempool inclusion rather than returning immediately It fixes broken assumptions for third-party wallets and services using sendrawtransaction No review verdicts recorded Unaddressed objection: synchronous waiting could cause wallet hangs leading to double payments (instagibbs) Asks which third-party software currently requires synchronous mempool acceptance (instagibbs) 107 lines added or modified outside tests 152 lines added or modified in tests 42 lines removed in total 17 files, 4 commits (+) #35281 ferminquant univalue: respect token end pointer P3 · bug fix Ready 0 (+1) Blocked 31 + 3 tests Prevent out-of-bounds reads when parsing JSON inputs that lack null termination Avoid potential node crashes when processing truncated or bounded JSON requests P3 because it hardens RPC parsing against out-of-bounds reads on truncated input RPC inputs are typically null-terminated in practice making this a preventative hardening fix Ranking pass: Moved up 8: out-of-bounds reads in the JSON tokenizer used by every RPC request is the most security-adjacent item left in P3. Unaddressed objection: tests fail to properly isolate bounded inputs with trailing data (maflcko) Concept approval because it fixes two separate out-of-bounds reads (sedited) Verified by testing added coverage for fractions and exponents (carloantinarella) 31 lines added or modified outside tests 3 lines added or modified in tests 30 lines removed in total 10 files, 1 commits (+) #36204 janb84 http: disconnect clients that never finish a request P3 · DoS protection Needs rebase 0 Mild 67 + 183 tests Disconnect HTTP clients that trickle bytes without completing requests, preventing connection slot exhaustion Ensure legitimate RPC clients can always connect even if slow clients occupy sockets P3 because it improves robustness against DoS rather than fixing an urgent remote vulnerability RPC binds to localhost by default, limiting the exposure to local exhaustion Needs mechanical rebase due to conflicts with master, but the logic is ready to review Concept approval because it mitigates slow-loris attacks and invalid automated bug reports (pinheadmz) Concept approval and praised test cleanup (hodlinator) Unaddressed objection: test assertion allows duration under RPCSERVERTIMEOUT, masking premature closes (hodlinator) 67 lines added or modified outside tests 183 lines added or modified in tests 12 lines removed in total 4 files, 2 commits (+) #35902 chriszeng1010 zmq: Log bind error at Error level, abort startup on init error P3 · bug fix Waiting on author 0 Mild 70 + 43 tests Prevent node operators from running unaware that ZMQ notifications failed to start Abort startup with an explicit error when configured ZMQ sockets fail to bind or initialize P3 because node operators avoid running unaware that configured ZMQ notifications are disabled Configuration mistakes and port conflicts are caught immediately at startup rather than swallowed Ranking pass: Moved up 7: silently disabled ZMQ leaves downstream notification consumers blind, a bigger operational hazard than the other P3 diagnostics. General agreement that ZMQ bind failures should abort startup loudly Concept approval after testing with port conflicts and misconfigurations (pinheadmz) Approach approval verified through broken-config startup tests (jeanpablojp) Unaddressed objection: unnecessary intermediate helper function indirection, no author reply (pinheadmz) 70 lines added or modified outside tests 43 lines added or modified in tests 44 lines removed in total 9 files, 1 commits (+) #35831 pablomartin4btc argsman, cli: Allow options after non-option arguments (GNU-style) P3 · user request Author silent 80d 1 Positive 103 + 182 tests Parse command-line options that appear after commands or positional arguments Prevent trailing options like -rpcwallet from being silently swallowed or misparsed P3 because it brings standard GNU-style argument parsing to bitcoin-cli users Avoids silent misrouting of commands when trailing flags are absorbed into positional arguments Support without stated reasons (w0xlt) Previous objections on parsing edge cases and bitcoin-tx handling were fixed (w0xlt, vicjuma) 103 lines added or modified outside tests 182 lines added or modified in tests 38 lines removed in total 7 files, 3 commits (+) #36002 andrewtoth txindex: allow running in pruned mode P3 · new feature Ready 1 Strong 211 + 166 tests Allow node operators to run txindex on pruned nodes without storing the full blockchain history Enable looking up historical transactions and serving RPC requests on resource-constrained nodes P3 because RPC and REST errors gain structured candidate block hashes for pruned lookups Client applications can identify missing blocks and fetch them on demand via getblockfrompeer Strong support for enabling txindex on pruned nodes Full approval after checking edge cases and error handling (optout21) Concept approval because it greatly improves pruned node capabilities (optout21, arejula27) Concept approval noting disk usage tradeoffs (ajtowns) Concept approval without stated reasons (l0rinc) 211 lines added or modified outside tests 166 lines added or modified in tests 97 lines removed in total 21 files, 7 commits (+) #36332 achow101 sign: add musig2 data after validating musig2 involvement P3 · bug fix Waiting on author 1 Blocked 20 + 48 tests Prevent leaking unrelated MuSig2 keys and derivation paths into PSBTs when multiple descriptors are used P3 because it fixes data correctness in PSBT RPC outputs when multiple descriptors are supplied MuSig2 signing is an advanced workflow, making this bug fix lower priority than core RPC work Ranking pass: Moved up 7: injecting unrelated key-origin metadata into shared PSBTs is a data-correctness and privacy leak, above the other PSBT polish items. Reviewing now is worthwhile, though an inverted test assertion remains to be updated Unaddressed objection: a functional test assertion is inverted (polespinasa) Verified by testing across five descriptor variants (fametrano) Concept approval with suggestions to optimize repeated key lookups (Bicaru20) Suggested avoiding repeated participant pubkey lookups during signing (vicjuma) 20 lines added or modified outside tests 48 lines added or modified in tests 18 lines removed in total 2 files, 3 commits (+) #36343 Bruce039 psbt: verify final scripts in FinalizePSBT P3 · bug fix Ready 1 Strong 13 + 28 tests Stop finalizepsbt from reporting PSBTs complete when final scripts fail standard verification Prevents generating invalid raw transactions that get rejected by the mempool P3 because it fixes an edge case where finalizepsbt emitted invalid transaction hex Aligns finalizepsbt with mempool rules and other PSBT verification entry points Ranking pass: Moved up 7: finalizepsbt reporting complete with unusable hex misleads callers about a transaction's state. Verified by testing bugfix on pkh, sh-wpkh, wpkh, and taproot inputs (fametrano) Concept approval without stated reasons (l0rinc) Suggestion to update analyzepsbt to report updater when verification fails (Bicaru20) 13 lines added or modified outside tests 28 lines added or modified in tests 1 lines removed in total 3 files, 2 commits (+) #36567 Ravan002 psbt: drop Taproot and MuSig2 signatures when adding an input P3 · bug fix Ready 2 Strong 4 + 14 tests Drop invalid Taproot and MuSig2 signatures when an input is added to a PSBT Prevent operations like joinpsbts from emitting transactions carrying stale signatures P3 because it fixes stale Taproot and MuSig2 signature retention in PSBT RPC tools like joinpsbts Modifying input sets invalidates existing signatures, making this a minor correctness fix for PSBT flows Ranking pass: Moved up 9: grouped with the other PSBT correctness fixes it duplicates review context with (#36343 , #36332 ). Concept support because it clears all signature fields and MuSig2 nonces as expected (fametrano) Approval without stated reasons (jpk68) Approval without stated rationale from an account with no prior project history (Yudis-bit) 4 lines added or modified outside tests 14 lines added or modified in tests 0 lines removed in total 2 files, 1 commits (+) #36555 ja7ad rpc: return error when invalidateblock fails P3 · bug fix Ready 0 Strong 19 + 14 tests Stops invalidateblock from reporting success when block disconnection fails and leaves a partial rollback Explicitly rejects attempts to invalidate the genesis block with an invalid parameter error P3 because invalidateblock is an administrative and testing tool rather than an everyday RPC method Prevents callers from assuming a rollback succeeded when block disconnection actually failed Ranking pass: Moved up 6: an RPC reporting success after a partial chain rollback is a false-success bug of the same class as the ones ranked just above. No review verdicts recorded Supports routing disconnection failures through state rather than reporting success (yusufyildiz34) Suggests documenting partial rollback as a known limitation instead of adding regression code (l0rinc) Requested simplifying tests and expanding the pull request description (l0rinc, pinheadmz) 19 lines added or modified outside tests 14 lines added or modified in tests 4 lines removed in total 6 files, 3 commits (+) #35370 junbyjun1238 rpc: add key-origin modes to PSBT processing RPCs P3 · user request Waiting on author 0 Blocked 86 + 245 tests Allow PSBT processing RPCs to explicitly add, preserve, or strip key-origin derivation metadata Let participants in collaborative workflows sanitize sensitive derivation paths and xpubs before sharing P3 because users get explicit modes to add, preserve, or strip derivation metadata in PSBT RPCs Resolves unexpected retention of derivation paths and global xpubs when processing transactions Ranking pass: Moved down 9: valuable privacy control, but it adds modes rather than fixing wrong output, so it sits below the P3 correctness fixes. Author has been silent for 84 days New reviews may wait a long time for an author response Concept and approach approval for adding strip options to PSBT processing RPCs (willcl-ark, rkrux) Unaddressed objection: strip mode breaks MuSig2 signing on PSBTs lacking key origins (fametrano) Open question on whether participant pubkeys should also be stripped to avoid fingerprinting (fametrano) 86 lines added or modified outside tests 245 lines added or modified in tests 10 lines removed in total 9 files, 2 commits (+) #36266 fjahr rpc: Let dumptxoutset fail early on stale targets and concurrent runs P3 · bug fix Waiting on author 0 Mild 24 + 33 tests Stop dumptxoutset from doing heavy UTXO copies and block disconnects before failing on stale targets Prevent file corruption and prune-lock collisions by restricting dumptxoutset to a single running instance P3 because it prevents file corruption and prune-lock collisions from concurrent dumptxoutset runs It avoids expensive, wasteful UTXO set copies when rolling back to a stale block target No review verdicts recorded Unaddressed objection: a reorg before tip pinning still triggers a CHECK_NONFATAL failure (cyb3ralbert) Waiting on author reply regarding revalidation against the pinned tip (cyb3ralbert) 24 lines added or modified outside tests 33 lines added or modified in tests 12 lines removed in total 2 files, 2 commits (+) #34038 ajtowns logging: replace -loglevel with -trace, expose trace logging via RPC P3 · new feature Ready 0 (+2) -1 Disputed 172 + 94 tests Fix silent failures when configuring trace logging and let node operators manage trace logs via RPC P3 because it enables runtime inspection and toggling of trace-level logging via an administrative RPC P3 because changing the return schema needs scrutiny but affects an admin rather than high-traffic endpoint Ranking pass: Moved down 12: competing with #35387 on the same problem and admin-only in scope, so it ranks below the correctness fixes despite unblocking #35355 . Approach objection: three interacting flags are confusing and break RPC compatibility (ryanofsky) Approach objection: setting trace as default while keeping specific categories at debug is impossible (ryanofsky) Prefers alternative proposal in #35387 with unified -loglevel handling (ryanofsky) Supports parallel flags as an easier startup interface despite unwieldy RPC interactions (stickies-v) Tested and supports parallel flag design (sedited) 172 lines added or modified outside tests 94 lines added or modified in tests 133 lines removed in total 16 files, 3 commits (+) #36212 LittleYier cli: Display warning arrays in -getinfo P3 · bug fix Ready 0 Strong 4 + 11 tests Display active network warnings in -getinfo when warnings are returned as an array CLI users currently see no warnings even when active network warnings exist P3 because -getinfo is a convenience display rather than a programmatic RPC interface Restores visibility into active network warnings for CLI operators but remains deferrable Ranking pass: Moved down 8: real bug but confined to the -getinfo convenience display. Concept approval and thanks for catching the issue (stickies-v) Suggestions open on layout formatting, type checking, and reducing test scope (stickies-v) Question on whether the author is still working on the pull request (sedited) 4 lines added or modified outside tests 11 lines added or modified in tests 6 lines removed in total 2 files, 2 commits (+) #36642 fametrano rpc: reset id and version per batch element P3 · bug fix Ready 0 (+1) Strong 5 + 14 tests Ensure malformed items in an RPC batch return proper errors instead of reusing the preceding request ID Prevent dropped error responses when a malformed batch item follows a JSON-RPC notification P3 because it fixes batch response error handling for malformed requests Affects only invalid non-object batch payloads and is reasonably deferrable Substantive support with no open objections Fixes JSON-RPC specification compliance for batch responses expecting unique IDs (pinheadmz) Verified by code review and testing (AndreaDiazCorreia) Earlier suggestions to clean up duplicate resets and simplify tests were addressed 5 lines added or modified outside tests 14 lines added or modified in tests 2 lines removed in total 2 files, 1 commits (+) #36047 chriszeng1010 rpc: handle createNewBlock() returning nullptr during shutdown P3 · bug fix Author silent 73d 0 Crickets 6 + 34 tests Prevent false internal bug assertions when mining RPCs run during node shutdown Return a standard shutdown error to mining RPC clients instead of an assertion failure P3 because callers receive misleading assertion failures rather than standard shutdown error codes Ensures predictable error handling for RPC clients when the node shuts down Ranking pass: Moved up 12: spurious 'Internal bug detected' responses to mining clients at shutdown is a user-visible false error, not cosmetic. No review verdicts recorded No reviews or discussion yet No substantive feedback either way 6 lines added or modified outside tests 34 lines added or modified in tests 4 lines removed in total 2 files, 1 commits (+) #36366 Bruce039 net: limit relative ban times to uint32 P3 · bug fix Ready 0 (+1) Strong 6 + 25 tests Prevent signed integer overflow and silent ban drops when users set very large relative ban durations Reject excessive durations in setban and clamp the bantime startup setting to safe maximum limits P3 because it fixes an overflow bug where extreme ban durations silently expire immediately Avoids misleading success returns from setban while addressing a UBSan runtime failure Ranking pass: Moved up 15: setban silently dropping bans while reporting success is a false-success bug like the others grouped here. Review is worthwhile now with no blocking issues Substantive support for clamping or rejecting values larger than realistic use cases (maflcko) Author pushed a fix after startup failure was flagged for large bantime in settings.json (willcl-ark) 6 lines added or modified outside tests 25 lines added or modified in tests 1 lines removed in total 3 files, 1 commits (+) #36259 azuchi http: update m_keep_alive under m_send_mutex P3 · bug fix Ready 0 Strong 12 + 144 tests Prevent premature HTTP disconnects from dropping responses on pipelined requests P3 because it fixes dropped responses during pipelined HTTP requests ending with close The bug is a narrow race condition that is difficult to trigger in real workloads Deferring the fix has minimal impact on overall RPC stability Ranking pass: Moved up 13: dropped HTTP responses on pipelined requests is a genuine server-side correctness race, ahead of feature additions. Reviewing now is worthwhile with nothing known that would invalidate it Support for keeping state in sync to prevent premature disconnects (winterrdog) Suggests delaying review because the bug is hard to hit in practice (winterrdog) Concept approval noting low review priority (pinheadmz) 12 lines added or modified outside tests 144 lines added or modified in tests 3 lines removed in total 3 files, 1 commits (+) #33741 polespinasa rpc: Optionally print feerates in sat/vb P3 · user request CI failing 0 (+1) Strong 88 + 80 tests Let node RPCs return fee rates directly in sat/vB instead of BTC/kvB Saves downstream callers manual conversions and avoids rounding errors in sub-1 sat/vB environments P3 because it improves ergonomics and avoids rounding issues for downstream applications The utility to callers is clear, but it is an optional interface convenience rather than an urgent fix Ranking pass: Moved down 10: clear ergonomic win, but an optional convenience field ranks below the interface correctness fixes above. CI is failing so check whether the failure is caused by this PR before doing a deep review Support for migrating fee rates to sat/vB in a backwards-compatible manner (musaHaruna) Concept approvals without stated reasons (w0xlt, jonatack) Open suggestion to use named parameters for the new arguments (maflcko) Open suggestion to add a release note if shifting positional RPC arguments (willcl-ark) 88 lines added or modified outside tests 80 lines added or modified in tests 68 lines removed in total 10 files, 7 commits (+) #31252 polespinasa rpc: print P2WSH and P2SH redem Script in getrawtransaction and getblock P3 · user request Ready 0 Strong 114 + 255 tests Let RPC and REST users directly inspect decoded redeem and witness scripts in transaction inputs Eliminates the need to manually extract raw bytes and run separate script decoding calls P3 because it resolves a long-standing usability gap for tools inspecting detailed transaction inputs Saves external tooling from parsing raw byte pushes to interpret P2SH and SegWit scripts Ranking pass: Moved down 12: additive output field with tooling demand, but no existing caller is broken today. Substantive concept approval with detailed implementation review (sedited) Concept approval without stated reasons (murchandamus) Prior objections on script detection and naming were resolved (luke-jr, naiyoma, sedited) 114 lines added or modified outside tests 255 lines added or modified in tests 5 lines removed in total 10 files, 5 commits (+) #35909 davidgumberg rest: Allow fetching stale header P3 · user request Waiting on author 1 Mild 76 + 58 tests Allow REST clients to retrieve block headers from stale branches Enables tracing chain reorganizations without having to fall back to the getblockheader RPC P3 because it closes an interface gap by bringing REST to parity with the getblockheader RPC Directly benefits tools like fork-observer when following reorgs without requiring RPC access Ranking pass: Moved down 9: REST/RPC parity gap with a named consumer, still an additive feature. Broad concept support for exposing stale headers via REST Tested and prefers query parameters over maintaining a new endpoint (jeanpablojp) Unaddressed suggestion to use a dedicated endpoint instead of query parameters (0xB10C) Concept approval without stated reasons (sedited, w0xlt) 76 lines added or modified outside tests 58 lines added or modified in tests 28 lines removed in total 6 files, 3 commits (+) #36005 pythcoiner rpc, descriptor: warn when multipath expansion clones single-path key expressions P3 · new feature Needs rebase 1 Strong 57 + 88 tests Warn users when multipath descriptor expansion duplicates single-path keys across branches Prevent unintended key reuse and address clustering between receive and change outputs Expose descriptor warnings during inspection rather than waiting until wallet import P3 because it surfaces descriptor warnings during inspection rather than waiting for wallet import Deduplicates warning messages across expanded paths for cleaner inspection output Needs rebase due to conflicts with master, but the descriptor logic is ready to review Verified by testing that deliberate code mutations fail the new unit and functional tests (jeanpablojp) Suggested adding test coverage for multiple simultaneous warnings (jeanpablojp) 57 lines added or modified outside tests 88 lines added or modified in tests 10 lines removed in total 8 files, 4 commits (+) #29418 vasild rpc: provide per message stats for global traffic via new field in 'getnettotals' P3 · user request Ready 0 (+1) Strong 354 + 150 tests Expose cumulative message and byte statistics broken down by direction, network, and connection type Allows node operators and researchers to monitor network bandwidth without continuously polling peer stats P3 because it fulfills a user request by adding detailed message breakdowns to getnettotals Saves node operators from having to poll and aggregate transient per-peer statistics Ranking pass: Moved down 16: new aggregate statistics field with no evidence of a downstream consumer waiting on it beyond the originating issue. Tested on node monitoring dashboards with positive feedback (waketraindev) Support for exposing detailed message metrics with minimal RPC layer logic (stickies-v) Objection to server-side aggregation resolved by dropping the aggregation commit (stickies-v) Concept approval without detailed rationale (danielabrozzoni, epiccurious) 354 lines added or modified outside tests 150 lines added or modified in tests 14 lines removed in total 8 files, 3 commits (+) #33904 kevkevinpal rest: add interface for gettxspendingprevout rpc P3 · new feature Ready 0 Positive 185 + 110 tests Allow REST clients to query which transactions spend specific outputs without using JSON-RPC P3 because it brings existing JSON-RPC spender queries to the unauthenticated REST interface Benefits REST-only API consumers who previously had no way to look up spending transactions Concept approval without stated reasons (sedited) No open objections 185 lines added or modified outside tests 110 lines added or modified in tests 1 lines removed in total 3 files, 2 commits (+) #27260 portlandhodl Enhanced error messages for invalid network prefix during address parsing. P3 · user request Author silent 68d 0 Mild 221 + 369 tests Give users clear, network-aware error messages when passing an address formatted for another network Avoid confusing fallback errors like generic Base58 failures on valid Bech32 addresses P3 because clearer diagnostic messages prevent user confusion when entering addresses for another network Resolving confusing error messages helps users debug mistakes but does not fix an operational breakage Ranking pass: Moved down 5: diagnostic message quality, below the additive fields that unblock tooling workarounds. Ready to review now Conflicts with master, but the rebase is mechanical Broad concept support for making address decoding error messages more user friendly (Sjors, rkrux, jonatack) Tested and confirmed improved address decoding errors (Sjors) Unaddressed objection: bundling large refactors with behavior changes impedes review (l0rinc) Open objections on std::string_view lifetime risks and redundant decoding passes (l0rinc) 221 lines added or modified outside tests 369 lines added or modified in tests 352 lines removed in total 11 files, 8 commits (+) #36569 Ravan002 psbt: analyzepsbt reports an error when outputs exceed inputs P3 · bug fix Waiting on author 2 Strong 5 + 8 tests Stop analyzepsbt from reporting negative fees when outputs exceed known inputs Return an error instead of advising unviable signing or updating steps P3 because it fixes misleading RPC output for transactions that can never be validly mined Corrects confusing negative fees and bad next-role advice once all input amounts are known Ranking pass: Moved up 9: corrects misleading analyzepsbt output (negative fee, wrong next role) for an impossible transaction. Verified fix on master and confirmed regression tests pass (Husteem) Verified by testing on Windows (Yudis-bit) Open suggestion to add a unit test in psbt_tests (Yudis-bit) Questioned need for a unit test given functional test coverage (winterrdog) 5 lines added or modified outside tests 8 lines added or modified in tests 0 lines removed in total 2 files, 1 commits (+) #36619 kriss39 rest: don't log an error for /spenttxouts on a block without undo data P3 · bug fix Ready 2 Positive 6 + 8 tests Prevent spurious error messages in debug.log when spent outputs are requested for blocks without undo data Stops unauthenticated REST queries on pruned or side-branch blocks from spamming false disk corruption errors P3 because it fixes spurious error logs that mimic disk corruption on normal 404 REST queries Affects node operators querying spent transaction outputs on pruned or side-chain blocks Ranking pass: Moved up 9: unauthenticated REST requests emitting fake disk-corruption errors misleads operators, slightly above pure interface hygiene. Concept approval without stated reasons (stickies-v, maflcko) Both reviewers re-ACKed after the author simplified the block status check (maflcko, stickies-v) 6 lines added or modified outside tests 8 lines added or modified in tests 2 lines removed in total 2 files, 1 commits (+) #35433 rkrux wallet: deprecate replaceable argument from transaction (and psbt) creation (and modification) RPCs P3 · cleanup Ready 0 Strong 53 + 125 tests Deprecate redundant replaceable parameters across raw transaction and wallet RPCs Clean up interfaces after network transactions became replaceable by default P3 because it deprecates redundant BIP 125 arguments across transaction creation RPCs Provides standard API hygiene after full-RBF became default, but is deferrable cleanup Ready to review Author addressed feedback and pushed a rebase with updated tests Concept approval for deprecating the arguments across RPCs (polespinasa) Resolved objections on silent parameter omission and test coverage (polespinasa, achow101, w0xlt) Author addressed all reviewer comments in the latest rebase 53 lines added or modified outside tests 125 lines added or modified in tests 77 lines removed in total 15 files, 7 commits (+) #36488 maflcko rpc: wallet: Schedule mixed-case confTarget option deprecation P3 · cleanup Ready 1 Strong 13 + 5 tests Deprecate the legacy mixed-case confTarget option in wallet bumpfee and psbtbumpfee RPCs Require the -deprecatedrpc=confTarget flag to use it, preparing for removal next cycle Eliminate naming inconsistencies and duplicate parameter handling alongside conf_target P3 because it standardizes RPC parameter handling by gating an undocumented alias P3 because it follows deprecation policy before full removal in the next cycle Ranking pass: Moved up 5: same deprecation-discipline class as #35433 and should be reviewed alongside it. Substantive support with no open objections (fametrano) Verified on regtest with and without flag against a client library (fametrano) Author declined suggestion to add functional tests for the deprecated option (maflcko) 13 lines added or modified outside tests 5 lines added or modified in tests 1 lines removed in total 4 files, 1 commits (+) #33117 D33r-Gee Interfaces: Expose UTXO Snapshot Loading and Add Progress Notifications P3 · cleanup Ready 0 (+1) Strong 126 + 2 tests Allow GUI frontends and multiprocess clients to initiate UTXO snapshot loading Provide user progress feedback while snapshot coins are validated and populated P3 because the RPC refactor primarily exists to provide test coverage for the new interface Changes failure error codes to internal errors, which could affect external automation Ranking pass: Moved down 8: the RPC-visible part is a refactor plus an error-code change; its payoff is in GUI drafts outside this category. Strong support with no remaining objections after rebases and refactoring Verified by testing mainnet snapshot loads with downstream GUI branches (pinheadmz, Sjors) Resolved objection: passing file handles across IPC boundaries complicates separation (ryanofsky) Resolved objection: signaling progress per coin would fire over 100 million times (pinheadmz) 126 lines added or modified outside tests 2 lines added or modified in tests 21 lines removed in total 10 files, 3 commits (+) #36220 arejula27 rpc: report background validation progress in getchainstates P3 · bug fix Waiting on author 1 -1 Blocked 3 + 4 tests Ensure getchainstates reports consistent background validation progress during assumeutxo sync Matches progress values reported by getblockchaininfo relative to the snapshot base block P3 because it fixes an internal RPC inconsistency when monitoring background chainstates in assumeutxo Minor progress reporting discrepancy across RPCs that is worthwhile to clean up but deferrable Unaddressed blocking objection: adds special cases instead of revisiting synchronization design (l0rinc) Verified progress reporting matches getblockchaininfo on an assumeutxo node (musaHaruna) Tested on assumeutxo (nervana21) Support for accurate monitoring aligning with assumeutxo documentation (vicjuma) Concept approval without stated reasons (sedited) 3 lines added or modified outside tests 4 lines added or modified in tests 2 lines removed in total 2 files, 2 commits (+) #35387 ryanofsky logging: make trace logging easily usable P3 · new feature Waiting on author 0 Mild 188 + 102 tests Allow loglevel configuration standalone without requiring paired debug flags to take effect Inspect and adjust category log levels at runtime via RPC without restarting the node P3 because dynamic runtime log configuration adds useful node control Lacks evidence of demand from external downstream consumers Ranking pass: Moved up 5: same band and same problem as #34038 , kept adjacent so the two approaches are compared, but second since #34038 has a dependent PR. Author silent for 93 days, so reviews may wait a long time for a response No review verdicts recorded Support for an elegant approach and intuitive interface (stickies-v) Nonblocking objection: maintaining two parallel active logging RPC methods adds maintenance burden (stickies-v) Unaddressed question asking if breaking debug interactions was intended (cyb3ralbert) 188 lines added or modified outside tests 102 lines added or modified in tests 41 lines removed in total 11 files, 2 commits (+) #32468 polespinasa rpc: generateblock to allow multiple outputs P3 · user request Ready 0 Strong 131 + 134 tests Allow developers to test blocks with multiple coinbase recipients and custom payout splits Enable mining mempool transactions automatically in regtest without crafting raw blocks P3 because it improves test-RPC flexibility by allowing multiple outputs and default mempool mining Developers testing coinbase distributions avoid manually assembling custom transaction lists Ranking pass: Moved down 15: regtest-only developer convenience with no external consumer. Ready for review following an author rebase No review verdicts recorded Strong support for simulating protocols with multiple coinbase recipients (supertestnet) Addressed objections against creating a separate RPC and modifying core miner logic (andrewtoth, maflcko) Addressed objections on backwards compatibility and custom reward amounts (achow101, stickies-v) 131 lines added or modified outside tests 134 lines added or modified in tests 55 lines removed in total 15 files, 7 commits (+) #31672 vasild rpc: add cpu_load to getpeerinfo P3 · new feature Author silent 186d 1 (+1) -1 Blocked 159 + 1 tests Help node operators identify resource-intensive or abusive peers Track and expose message processing CPU usage per peer in getpeerinfo and -netinfo Lay groundwork for future peer-prioritization and anti-DoS measures P3 because exploratory peer monitoring metrics without external demand offer modest value Provides diagnostic value during DoS investigation but remains marginal Ranking pass: Moved down 14: exploratory per-peer metric, its own card calls the value marginal and no external demand is cited. Author silent for 180 days; review may wait a long time for a response Wide concept support for peer CPU tracking to combat DoS (jonatack, laanwj, mzumsande, hodlinator) Verified in testing on signet IBD and -netinfo (jonatack, BrandonOdiwuor, yuvicc) Unaddressed objection: metrics are non-actionable, flame graphs or wall time are better (ajtowns) Nonblocking objection: exploratory metrics should not go into production getpeerinfo (sipa) Suggested using a decaying average instead of connection-wide average (sipa) 159 lines added or modified outside tests 1 lines added or modified in tests 4 lines removed in total 8 files, 2 commits (+) #36478 maflcko rpc: Check named args names and result field names at compile time P3 · cleanup Ready 1 Strong 81 + 11 tests Enforce naming conventions on RPC argument and result field names at compile time Prevent developer confusion and bugs caused by malformed or non-standard RPC field names P3 because it catches malformed RPC argument and result field names at compile time Enforces consistent naming conventions across RPC declarations without runtime overhead Strong support with substantive testing (fametrano) Verified RPC help diffs, compile times, and compile-time rejection of invalid names (fametrano) Author declined a suggestion to reject empty alias parts at compile time (fametrano) 81 lines added or modified outside tests 11 lines added or modified in tests 43 lines removed in total 9 files, 2 commits (+) #36175 nervana21 rpc: Stamp `getblock` OpenRPC result discriminator P3 · new feature Ready 1 Strong 43 + 11 tests Map getblock verbosity parameter values to OpenRPC result schema branches machine-readably Let typed client libraries generate distinct return types without hardcoding the verbosity mappings P3 because it adds discriminator metadata to OpenRPC output for one RPC method Benefit felt primarily by typed client generators that currently hardcode verbosity result mappings Ranking pass: Moved down 9: metadata for one method, benefiting code generators only. Support with no open objections Favors approach over alternatives as simpler for the current use case (willcl-ark) Concept approval without stated reasons (jeanpablojp) 43 lines added or modified outside tests 11 lines added or modified in tests 5 lines removed in total 4 files, 3 commits (+) #36626 nebula-21 test: check `PSBT_GLOBAL_VERSION` validation on decode P3 · test coverage Ready 0 Positive 0 + 16 tests Catch regressions in PSBT decoding by testing unsupported version numbers and missing version fallbacks Ensure decodepsbt rejects invalid global versions and correctly defaults omitted versions to version 0 P3 because it adds test coverage verifying decodepsbt rejects unsupported global PSBT versions Modifying version limits or fallback checks previously triggered zero existing test failures Ready to review as nothing known would invalidate a review now Concept approval without stated reasons (Bicaru20) Suggested combining tests, explicitly setting psbt_version=2, and adding coverage for version 1 (Bicaru20) 0 lines added or modified outside tests 16 lines added or modified in tests 0 lines removed in total 1 files, 1 commits (+) #35054 fjahr p2p: UTXO set sharing P4 · new feature Waiting on author 0 -5 Blocked 943 + 771 tests Distribute AssumeUTXO snapshots directly over the P2P network instead of requiring out-of-band downloads. Reduces onboarding friction and avoids centralized distribution points for users wanting fast initial sync. P4 after comparing with the other PRs here (assessed alone as P3): Lowered to P4 and moved down 16: within rpc its contribution is one new method with no external consumer asking; the substance belongs to p2p. P3 because it adds a new downloadutxoset RPC to trigger snapshot fetching without breaking existing methods. Needs rebase and CI is failing. Author has been silent for 146 days. Blocked by unaddressed objections while author has been silent (andrewtoth, narula, josibake, nkaretnikov) Unaddressed objection: peer can cause immediate out-of-memory crash via data length field (andrewtoth) Unaddressed objection: activation failure leaves download manager permanently stuck (andrewtoth) Objections to dual chainstate complexity and unvalidated snapshots in P2P (l0rinc, stickies-v, evoskuil) Tested snapshot download, activation, and background validation on mainnet demo node (svanstaa) 943 lines added or modified outside tests 771 lines added or modified in tests 1 lines removed in total 27 files, 13 commits (+) #36384 maflcko rpc: Use self.Arg<_>(name) helper over manual and duplicate parsing P4 · cleanup Ready 0 Positive 73 + 2 tests Eliminate redundant parameter parsing and duplicate default values across node and wallet RPC endpoints Prevents drift between documented argument defaults and actual execution for maintainers P4 because it is internal cleanup with no user-visible behavioral changes or bug fixes Reduces boilerplate in RPC parameter extraction but provides modest maintenance value Concept approval without stated reasons (fanquake) No open objections 73 lines added or modified outside tests 2 lines added or modified in tests 133 lines removed in total 14 files, 4 commits (+) #36613 aaron-leeb test: add getblockfilter test coverage for header-only blocks P4 · test coverage Ready 1 Strong 0 + 15 tests Add test coverage for getblockfilter when querying blocks known only by header Ensures the RPC returns the expected error when a block was never connected P4 because it only closes a narrow test coverage gap for an RPC error branch Exercises an untested condition without fixing an active functional bug or regression Substantive support with no open objections Verified test passes and exercises the error path via mutation testing (Zippo76) 0 lines added or modified outside tests 15 lines added or modified in tests 0 lines removed in total 1 files, 1 commits (+) #36719 Snan0M doc: clarify RPC addnode 'add' vs 'onetry' connection limits P4 · bug fix Ready 1 Positive 5 Clarify addnode RPC documentation regarding connection limits for persistent versus one-try peers Prevent manual peer counts in bitcoin-cli from wrapping around and showing inaccurate numbers past 255 P4 because it fixes a minor display wraparound bug and clarifies RPC help text Only nodes maintaining over 255 manual peers encounter the display issue The changes do not affect node operation, consensus, or network behavior Support without stated reasons after requested adjustments were made (jonatack) Resolved objection against widening the block-relay peer counter (jonatack) Resolved request to clarify separate add and onetry limits in addnode help (jonatack) 5 lines added or modified outside tests 0 lines added or modified in tests 4 lines removed in total 2 files, 2 commits (+) #34950 defenwycke rpc: migrate generatetoaddress params to self.Arg for consistency P4 · cleanup Waiting on author 0 Mild 3 + 3 tests Align generatetoaddress parameter parsing with generatetodescriptor Explicitly reject negative maxtries inputs instead of silently overflowing P4 because it is a minor cleanup aligning generatetoaddress argument parsing with modern RPC helpers Fixes negative maxtries wrapping to UINT64_MAX with minimal external impact Waiting on the author to answer an open objection regarding release notes No review verdicts recorded Support for consistency cleanup with generatetodescriptor (maflcko, GerardoTaboada) Unaddressed objection: behavioral change on negative maxtries needs a release note (GerardoTaboada) Resolved compilation and linker failure in bitcoin-qt target (maflcko) 3 lines added or modified outside tests 3 lines added or modified in tests 3 lines removed in total 2 files, 1 commits (+) #36429 optout21 [RFC] Delayed transaction broadcast, minimal P4 · new feature Ready 0 Neutral 229 + 259 tests Prevent network observers from correlating transaction broadcast timing with off-chain user activity Allow users to schedule private transaction announcements with randomized delay directly from the node P4 because adding an RPC parameter lacks documented external consumer demand The interface change is niche without broader wallet ecosystem requests Ready for review with no known blockers or pending changes No review verdicts recorded Neutral overall with initial concerns answered and no explicit endorsements yet Questioned whether broadcast delays belong in client software rather than the node (ismaelsadeeq) Asked for concrete privacy gains and the harm in knowing transaction creation time (ismaelsadeeq) Noted that node restarts drop delayed transactions and nLockTime may reveal creation time (vasild) 229 lines added or modified outside tests 259 lines added or modified in tests 28 lines removed in total 12 files, 6 commits (+) #36167 fanquake [RFC] Enable `-Wunused` P4 · cleanup CI failing 0 Mild 548 + 59 tests Catch unused variables and parameters automatically during the build Prevent silent accumulation of dead code and subtle bugs caused by forgotten parameters P4 because internal RPC parameter lookup refactoring has no user-visible interface effect Bundles minor code modernization alongside mechanical warning fixes CI is failing so verify whether the failure is caused by this PR before doing a deep review No review verdicts recorded Objection that removing parameters like self causes unnecessary churn when they should be used (maflcko) Suggested splitting finer-grained warning flags into separate PRs, which the author addressed (maflcko) 548 lines added or modified outside tests 59 lines added or modified in tests 649 lines removed in total 160 files, 8 commits