RPC / REST / ZMQ

PRPriorityReviewabilityReviewsAgreementSize
(+)#36187 hodlinator http: Require default IPv4 bind to succeed (again)
  • Prevent local credential theft when another process occupies the default IPv4 RPC port
  • Require the default IPv4 loopback bind to succeed during startup instead of failing open
  • Ensure explicit bind configurations fail closed if any specified endpoint cannot be bound
P1 · bug fix
  • P1 after comparing with the other PRs here (assessed alone as P2): Raised to P1: local auth-cookie exfiltration when the default IPv4 RPC bind silently fails is an interface-security regression, the strongest fund/credential risk on this list.
  • P2 because it fixes a local credential exfiltration risk on multi-user systems
  • P2 because interface security and credential exposure are top priorities for RPC defaults
Ready
  • Ready for review
  • Code and functional tests are complete with green CI and feedback addressed
0Strong
  • Strong support for failing closed to avoid exposing credentials to rogue local processes
  • Matches the CLI default IPv4 target to a mandatory bitcoind listener (winterrdog)
  • Concept approval without detailed objections (l0rinc, janb84, sedited, winterrdog)
57 + 71 tests
  • 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
  • Stop scanblocks from silently skipping unindexed blocks and falsely reporting completion
  • Ensure wallets and client applications are warned when scans cannot check requested ranges
P2 · bug fix
  • P2 because it fixes scanblocks silently reporting completion when blocks were skipped
  • Prevents wallets and applications from missing transaction matches without warning
Ready
  • Ready for review, clean patch with passing CI that incorporates prior reviewer feedback
0
Strong
  • Broad support for eliminating silent scan failures
  • Concept approval without stated reasons (maflcko)
  • Requested allowing scans on indexed ranges while catching up, which author addressed (fjahr)
22 + 59 tests
  • 22 lines added or modified outside tests
  • 59 lines added or modified in tests
  • 13 lines removed in total
  • 2 files, 1 commits
(+)#36204 janb84 http: disconnect clients that never finish a request
  • Prevent slow-trickling HTTP clients from tying up RPC connection slots indefinitely
  • Protects RPC and REST callers from denial-of-service slot exhaustion
P2 · DoS protection
  • P2 because it prevents denial-of-service exhaustion of limited RPC connection slots
  • Protects node RPC availability even though exposure is typically limited to localhost
Ready
  • Ready to review
  • Clean state with feedback from the initial review round addressed
0
Positive
  • Positive sentiment with initial review feedback addressed
  • Concept approval and detailed technical review on timeouts and tests (hodlinator)
67 + 183 tests
  • 67 lines added or modified outside tests
  • 183 lines added or modified in tests
  • 12 lines removed in total
  • 4 files, 2 commits
(+)#36259 azuchi http: update m_keep_alive under m_send_mutex
  • Prevent dropped responses when an HTTP client pipelines requests ending with a connection close header
  • Ensures the server does not disconnect clients before queuing all pending responses
P3 · bug fix
  • P3 because it resolves dropped responses during pipelined HTTP requests
  • Low severity bug because the race window is small and bitcoin-cli does not pipeline requests
  • Ranking pass: Moved up: dropped HTTP responses are lost caller data, on par with the other httpserver correctness fixes rather than with docs/tests.
Ready
  • Ready to review
  • Self-contained fix accompanied by a deterministic regression test
0
Strong
  • Support for updating keep-alive state alongside the send buffer to prevent inconsistent reads (winterrdog)
  • No objections raised
12 + 144 tests
  • 12 lines added or modified outside tests
  • 144 lines added or modified in tests
  • 3 lines removed in total
  • 3 files, 1 commits
(+)#35780 b-l-u-e http: linger-close after parse errors so clients can read the reply
  • Ensure HTTP clients receive proper error responses instead of connection aborts on parse failures
  • Fixes intermittent functional test failures and ungraceful connection resets on Windows
P3 · bug fix
  • P3 because it fixes an edge-case bug where Windows clients get TCP resets instead of HTTP error codes
  • Improves CI reliability by eliminating intermittent test failures on Windows
  • Ranking pass: Moved up: clients receiving a TCP reset instead of the HTTP error body is a returned-data failure, grouped with the other HTTP server fixes.
Needs rebase
  • Needs rebase due to merge conflicts with master
  • PR is marked draft and author has been inactive for several weeks
0Positive
  • Concept approval to improve client error handling and test determinism (pinheadmz, hodlinator)
  • Questions whether lingering close should integrate into the request state machine (pinheadmz, winterrdog)
  • Rebase branch suggestion provided (hodlinator)
131 + 8 tests
  • 131 lines added or modified outside tests
  • 8 lines added or modified in tests
  • 21 lines removed in total
  • 8 files, 2 commits
(+)#36212 LittleYier cli: Display warning arrays in -getinfo
  • Ensure bitcoin-cli -getinfo displays active node warnings properly when returned as a list
  • Prevents active warnings from being swallowed and misleading node operators
P3 · bug fix
  • P3 because it fixes a minor CLI bug where warning arrays were swallowed and shown as none
  • Prevents node operators inspecting their nodes from being misled during active warnings
  • Ranking pass: Moved up: -getinfo showing '(none)' while warnings are active actively misleads operators, above optional new fields.
Ready
  • Ready to review with passing CI and clean mergeable code
0
Strong
  • Strong overall sentiment with concept support for fixing swallowed warnings
  • Concept approval thanking author for catching the bug (stickies-v)
  • Nonblocking suggestion for alternative multi-line header formatting and commit squashing (stickies-v)
4 + 11 tests
  • 4 lines added or modified outside tests
  • 11 lines added or modified in tests
  • 6 lines removed in total
  • 2 files, 2 commits
(+)#31252 polespinasa rpc: print P2WSH and P2SH redem Script in getrawtransaction and getblock
  • Expose decoded redeem and witness scripts directly in verbose block and transaction RPCs
  • Saves developers and explorers from having to manually extract and parse input spend scripts
P3 · new feature
  • P3 because it improves transaction inspection convenience for block explorers and developers
  • Eliminates custom parsing logic for common multisig and script hash spends
Ready
  • Ready for review
  • Clean patch with test coverage and all reviewer feedback addressed
0
Strong
  • Concept approval for exposing decoded spend scripts in verbose RPC outputs (murchandamus, sedited)
  • Iterative feedback on edge-case script detection and nested segwit has been resolved (naiyoma, sedited)
  • Script identification and handling feedback incorporated (luke-jr)
114 + 255 tests
  • 114 lines added or modified outside tests
  • 255 lines added or modified in tests
  • 5 lines removed in total
  • 10 files, 5 commits
(+)#27260 portlandhodl Enhanced error messages for invalid network prefix during address parsing.
  • Provide specific error messages when an address has an invalid network prefix
  • Stop misreporting wrong-network addresses as completely invalid Bech32 or Base58
P3 · bug fix
  • P3 because it fixes misleading error messages when RPC callers pass an address from another network
  • Helps node operators debug invalid input without affecting transaction safety or correctness
  • Ranking pass: Slightly lower: misleading error text is a diagnostics fix, ranked just under the fixes that change what data callers actually receive.
Needs rebase
  • Review is blocked because the branch has merge conflicts and needs a rebase
0
Strong
  • Strong concept consensus on improving address error diagnostics
  • Concept approval noting real-world debugging usefulness (rkrux)
  • Concept approval with assistance on tests and commit structure (Sjors, l0rinc)
  • Concept or approach approval without detailed rationale (jonatack, RandyMcMillan)
221 + 369 tests
  • 221 lines added or modified outside tests
  • 369 lines added or modified in tests
  • 352 lines removed in total
  • 11 files, 8 commits
(+)#33741 polespinasa rpc: Optionally print feerates in sat/vb
  • Allow RPC consumers to optionally receive feerates formatted in sat/vB instead of BTC/kvB
  • Eliminate manual unit conversions and potential calculation errors in modern tooling
P3 · user request
  • P3 because it offers a long-requested usability convenience for RPC consumers working in sat/vB
  • It is an opt-in parameter on existing RPCs rather than a bug fix or architectural prerequisite
Ready
  • Ready to review; the branch is clean, CI passes, and prior reviewer feedback has been addressed
0 (+1)
Positive
  • Broad support for standardizing feerate outputs to modern sat/vB conventions (w0xlt, musaHaruna, jonatack)
  • Discussed returning distinct fields instead of an argument to avoid configuration hazards (glozow)
  • Concerns about floating-point math, bucket ranges, and parameter naming were resolved (maflcko, w0xlt, jonatack)
89 + 69 tests
  • 89 lines added or modified outside tests
  • 69 lines added or modified in tests
  • 56 lines removed in total
  • 10 files, 7 commits
(+)#35813 pablomartin4btc wallet, rpc: Add listrawtransactions RPC
  • Allow wallet users and automated tools to view transactions that spend change back to the wallet
  • Provide a complete transaction history that includes consolidations and pure self-transfers
P3 · new feature
  • P3 because it adds an RPC method giving raw wallet transaction history without output filtering
  • Resolves an omission where change-only transactions could not be inspected via RPC
  • Leaves existing RPC interfaces unchanged
  • Ranking pass: Lower: a new wallet-first RPC closing #34632; valuable but ranks under interface-machinery fixes in this category.
Needs rebase
  • Needs rebase due to merge conflicts with the base branch
2 (+3)Strong
  • Strong consensus on introducing a dedicated RPC method
  • Recommended dedicated RPC approach and approved implementation (achow101)
  • Verified and approved after testing pagination and verbosity (Bicaru20)
  • Verified by testing on regtest (BrandonOdiwuor, w0xlt)
  • Approved after reviewing documentation and helper refactoring (polespinasa)
169 + 165 tests
  • 169 lines added or modified outside tests
  • 165 lines added or modified in tests
  • 27 lines removed in total
  • 6 files, 5 commits
(+)#32857 Sjors wallet: allow skipping script paths
  • Allow Taproot spends to skip script paths to avoid exposing fallback scripts on chain
  • Saves transaction fees and protects privacy for users of complex Taproot and MuSig2 setups
P3 · new feature
  • P3 because it adds an optional parameter to five RPC methods without changing default behavior
  • Gives RPC callers explicit control over Taproot spending metadata and signing paths
Ready
  • Ready to review: branch is rebased, CI passes, and prior reviewer suggestions are addressed
0 (+1)
Strong
  • Strong support citing multi-party MuSig keypath and script-path race scenarios (rkrux)
  • Verified by testing script-path suppression behavior and test coverage (jeanpablojp)
  • Concept approval without stated reasons (w0xlt)
66 + 177 tests
  • 66 lines added or modified outside tests
  • 177 lines added or modified in tests
  • 27 lines removed in total
  • 13 files, 9 commits
(+)#35370 junbyjun1238 rpc: add key-origin modes to PSBT processing RPCs
  • Allow PSBT processing RPCs to strip existing key-origin data and global xpubs
  • Prevent leaking derivation paths to co-signers in collaborative setups
P3 · new feature
  • P3 because it expands bip32derivs options with string modes while maintaining backward compatibility
  • Gives users fine-grained control over PSBT derivation metadata via existing RPCs
  • Ranking pass: Moved up: stripping key-origin data before sharing PSBTs is a privacy gap with a filed issue (#30294), above generic new fields.
Author silent 69 days
  • Code is ready to review with all previous feedback addressed
  • Author has been silent for 69 days
0
Strong
  • Approach approval for stripping metadata in PSBT processing RPCs (willcl-ark)
  • Concept approval for stripping bip32 derivation data on demand (rkrux)
  • Design suggestion to use an enum argument was adopted (achow101, rkrux)
86 + 245 tests
  • 86 lines added or modified outside tests
  • 245 lines added or modified in tests
  • 10 lines removed in total
  • 9 files, 2 commits
(+)#34534 fjahr rpc: Manual prune lock management (Take 2)
  • Prevent needed blocks from being pruned when external or offline wallets are temporarily unloaded
  • Allows wallets to rescan against pruned nodes without having to manage full manual pruning logic
P3 · new feature
  • P3 because it adds RPC methods solving an operational limitation for external wallets on pruned nodes
  • Addresses real wallet rescan issues, but downstream tools are not actively blocked waiting for it
Ready
  • Ready for review; CI passes and earlier reviewer feedback has been addressed
0 (+1)
Positive
  • Generally positive sentiment on supporting unloaded wallet rescans
  • Concept approval for the unloaded wallet rescan use case (stickies-v)
  • Approval after thread safety feedback was resolved (sedited)
  • Questioned whether existing manual pruning options already suffice (andrewtoth)
+404/-1
  • 9 files
  • 6 commits
(+)#29418 vasild rpc: provide per message stats for global traffic via new RPC 'getnetmsgstats'
  • Track cumulative network traffic by message and connection type for node operators and monitoring tools
  • Keep long-term traffic statistics from being lost whenever peers disconnect
P3 · new feature
  • P3 because it provides persistent network traffic breakdowns that external dashboards can consume
  • Adds a dedicated RPC endpoint without altering existing RPC compatibility or core invariants
  • Ranking pass: Lower: a new diagnostic RPC; issue #26337 asks for it but no downstream consumer is blocked.
Needs rebase
  • Needs rebase due to merge conflicts with master
  • Author has been inactive since June 2026
0 (+1)Positive
  • Broad support for exposing global traffic metrics to node operators
  • Verified by testing with node monitoring dashboards (waketraindev)
  • Concept approval and implementation review (danielabrozzoni, epiccurious)
  • Resolved objection: dropped server-side aggregation options in response to feedback (stickies-v)
389 + 151 tests
  • 389 lines added or modified outside tests
  • 151 lines added or modified in tests
  • 14 lines removed in total
  • 9 files, 3 commits
(+)#35909 davidgumberg rest: Allow fetching stale header
  • Allow REST clients to fetch headers for stale blocks not on the active chain
  • Enables tools like fork-observer to inspect non-active blocks during or after re-orgs
P3 · new feature
  • P3 because it provides clear value for external REST consumers following re-orgs
  • Valuable for fork monitoring tools but deferrable without system-wide urgency
  • Ranking pass: Moved up: named external consumer (fork-observer) needs stale headers over REST, which is the evidence this category weighs.
Ready
  • Ready for review now
1
Positive
  • Concept approval without stated reasons (sedited)
  • Tested and prefers query parameter approach over a new endpoint (jeanpablojp)
  • Supports use case but asks if a dedicated endpoint would be cleaner (0xB10C)
76 + 58 tests
  • 76 lines added or modified outside tests
  • 58 lines added or modified in tests
  • 28 lines removed in total
  • 6 files, 3 commits
(+)#33904 kevkevinpal rest: add interface for gettxspendingprevout rpc
  • Allow lightweight HTTP clients to query which transactions spend specific outpoints via REST
  • Avoids requiring full JSON-RPC authentication and overhead for spending lookups
P3 · new feature
  • P3 because it brings REST interface parity with an existing RPC for outpoint spending lookups
  • Benefits external HTTP clients while having no impact on core RPC infrastructure
  • Ranking pass: Slightly lower: REST parity for an existing RPC, no consumer shown to be blocked.
Ready
  • Ready for review, with passing CI and previous review comments addressed
0
Positive
  • Concept approval and guidance on query limits and test coverage (sedited)
  • Code formatting and style review addressed (maflcko)
  • All requested changes incorporated with no open objections
184 + 110 tests
  • 184 lines added or modified outside tests
  • 110 lines added or modified in tests
  • 1 lines removed in total
  • 3 files, 1 commits
(+)#36266 fjahr rpc: Let dumptxoutset fail early on stale targets and concurrent runs
  • Ensure snapshot generation fails immediately when given a stale block target
  • Prevent concurrent snapshot calls from corrupting output files or prune locks
P3 · bug fix
  • P3 because the failure modes only occur in relatively rare edge cases
  • Improves RPC reliability and prevents silent file corruption for node operators
  • Limited impact because dumptxoutset is an infrequently used administrative command
  • Ranking pass: Moved up: concurrent dumptxoutset runs clobber files and prune locks, a real if rare operator-visible failure.
Ready
  • Ready for review
0
  • No review verdicts recorded
Crickets
  • No reviews or comments yet
  • Recently opened with no feedback so far
24 + 33 tests
  • 24 lines added or modified outside tests
  • 33 lines added or modified in tests
  • 12 lines removed in total
  • 2 files, 2 commits
(+)#36276 pinheadmz http: don't register RecvEvent while a request is in-flight
  • Prevent the HTTP server from reading new data on a connection while an earlier request is in flight
  • Stop socket buffer draining that triggers delayed TCP window probes and test timeouts on macOS
P3 · bug fix
  • P3 because it fixes a minor edge case in HTTP socket read throttling
  • Resolves an intermittent test timeout on macOS rather than an acute security or denial of service risk
  • The worst-case socket buffer drain before this fix is limited to 65kB
  • Ranking pass: Moved up: fixes a regression introduced by merged #36123 in the HTTP read path, though scope is a macOS test timeout.
Author reworking
  • Author converted PR to draft to investigate a potential 50ms latency added to RPC calls
  • Wait for author investigation and for failing CI to be resolved
0
Positive
  • Reviewers support the concept and diagnosis of the socket throttling gap
  • Concept approval on the initial commit (hodlinator)
  • Verified that the server drained kernel buffers instead of maintaining backpressure (davidgumberg)
16 + 24 tests
  • 16 lines added or modified outside tests
  • 24 lines added or modified in tests
  • 17 lines removed in total
  • 3 files, 2 commits
(+)#35387 ryanofsky logging: make trace logging easily usable
  • Make trace logging usable without requiring paired debug flags
  • Allow node operators to inspect and adjust log levels per category at runtime without restarting
P3 · new feature
  • P3 because it lets node operators adjust category log levels dynamically at runtime
  • Saves developers and node operators from restarting nodes during active debugging
Author silent
  • Author silent for over 60 days, though CI passes and the branch has no conflicts
0
  • No review verdicts recorded
Positive
  • Praised the new interface design as elegant and intuitive (stickies-v)
  • Nonblocking suggestion to deprecate the older logging RPC to avoid maintaining both (stickies-v)
188 + 102 tests
  • 188 lines added or modified outside tests
  • 102 lines added or modified in tests
  • 41 lines removed in total
  • 11 files, 2 commits
(+)#34038 ajtowns logging: replace -loglevel with -trace, expose trace logging via RPC
  • Make trace logging straightforward to configure at startup alongside debug logs
  • Allow node operators to dynamically inspect and toggle trace logging at runtime via RPC
P3 · new feature
  • P3 because it allows dynamic runtime control of trace logging without node restarts
  • Deprecation flags safely handle backward-incompatible changes to RPC output
  • Ranking pass: Lower: same problem as #35387 and under an Approach NACK; the design decision, not this patch, is what is blocked.
Ready
  • Ready for review, with clean code and passing tests
  • An open design dispute over command-line flag syntax invites feedback
2 -1
Disputed
  • Split on whether to use parallel flags or a unified key-value option
  • Support because the parallel startup flags are much easier to use (stickies-v, sedited)
  • Approach objection: interacting flags are confusing compared to a single option (ryanofsky)
+266/-132
  • 16 files
  • 3 commits
(+)#29278 ismaelsadeeq Wallet: Add `maxfeerate` wallet startup option
  • Cap transaction feerates independently from total fee limits on wallet transactions
  • Prevent accidental high feerates on small transactions while still allowing large transactions
P3 · cleanup
  • P3 because it adds a dedicated error code to distinguish feerate caps from total fee caps
  • Benefit is limited to clearer error diagnostics for RPC callers
  • Ranking pass: Lower: predominantly a wallet fee-policy change; its rpc content is one new error code.
Ready
  • Ready for review, with clean code, passing CI, and all prior review comments addressed
1 (+4)Strong
  • Broad agreement on decoupling total fee limits from feerate caps
  • Support for independently constraining fee totals and feerates (murchandamus)
  • Reviewed and approved across iterations (josibake, achow101, furszy)
  • Approved following fixes to unconfirmed input bump fee handling (polespinasa)
119 + 184 tests
  • 119 lines added or modified outside tests
  • 184 lines added or modified in tests
  • 79 lines removed in total
  • 30 files, 9 commits
(+)#35831 pablomartin4btc argsman, cli: Allow options after non-option arguments (GNU-style)
  • Allow CLI options to be placed after commands without being silently ignored or misparsed
  • Prevents confusing errors or targeting the wrong wallet when passing options after an RPC command
P3 · bug fix
  • P3 because options like -rpcwallet placed after a command no longer fall back to default
  • Eliminates silent wallet fallback and confusing parameter mismatch errors for CLI users
Ready
  • Ready to review because the author addressed previous feedback on edge cases and CI passes
1
Strong
  • Strong support across the approach with edge cases tested and addressed
  • Full support after suggesting edge-case fixes that the author incorporated (w0xlt)
  • Verified tool consistency after concerns about bitcoin-tx behavior were resolved (vicjuma)
103 + 182 tests
  • 103 lines added or modified outside tests
  • 182 lines added or modified in tests
  • 38 lines removed in total
  • 7 files, 3 commits
(+)#35728 maflcko rpc: Properly throw on internal I/O errors in GetTransaction
  • Prevent RPC and REST from falsely reporting confirmed transactions as missing when disk reads fail
  • Alert users and callers to internal storage faults instead of misleading them into thinking a tx is absent
P3 · bug fix
  • P3 because callers are no longer misled into thinking confirmed transactions do not exist on read errors
  • Ensures RPC clients detect storage or index faults instead of assuming transaction absence
Needs rebase
  • Needs rebase due to merge conflicts, and the author has been silent for two months
0
Mild
  • Concept approval for separating missing transactions from internal read errors (yuvicc, musaHaruna)
  • Unaddressed objection: pruned blocks may return an I/O error instead of block not available (yuvicc)
46 + 62 tests
  • 46 lines added or modified outside tests
  • 62 lines added or modified in tests
  • 41 lines removed in total
  • 10 files, 3 commits
(+)#36220 arejula27 rpc: report background validation progress in getchainstates
  • Report accurate background validation progress in getchainstates during assumeutxo sync
  • Resolves conflicting progress values previously reported between getblockchaininfo and getchainstates
P3 · bug fix
  • P3 because it resolves conflicting progress numbers reported across RPC endpoints
  • Improves monitoring accuracy for node operators running assumeutxo background sync
Ready
  • Ready for review: small patch with clean CI and functional test coverage
1
Strong
  • Strong support for consistent assumeutxo progress reporting across RPCs
  • Tested approval after clarifying target block pointer handling (nervana21)
  • Concept approval noting better alignment with assumeutxo documentation (vicjuma)
  • Concept approval without stated reasons (sedited)
3 + 4 tests
  • 3 lines added or modified outside tests
  • 4 lines added or modified in tests
  • 2 lines removed in total
  • 2 files, 2 commits
(+)#35286 instagibbs rpc: add testsubmitpackage for 1p1c test submissions
  • Let wallets and second-layer apps dry-run transaction packages before broadcasting them
  • Helps callers test whether fee bumping or package RBF will succeed and see predicted replacements
P3 · new feature
  • P3 because it adds a test acceptance endpoint requested by users for package validation
  • Downstream adoption is uncertain because it excludes parents that do not need fee bumping
Needs rebase
  • Needs rebase due to merge conflicts with master
  • Author paused work to assess external user demand before iterating further
0
Mild
  • Concept supported for dry-running package submissions (ismaelsadeeq, w0xlt)
  • User demand should be explicitly confirmed before deciding to maintain the endpoint (dergoegge)
  • Paused work to seek user buy-in and noted 1p1c rules may not fit LN parent transactions (instagibbs)
269 + 688 tests
  • 269 lines added or modified outside tests
  • 688 lines added or modified in tests
  • 64 lines removed in total
  • 7 files, 1 commits
(+)#36159 hodlinator http: Improve HTTPRemoteClient::MaybeDisconnect()
  • Make HTTP client disconnection logic more robust and avoid misleading idle timeout log messages
  • Add comprehensive unit test coverage for HTTP remote client disconnection conditions
P3 · test coverage
  • P3 because benefits are limited to internal HTTP server testability and minor logging corrections
  • Enables time mocking to verify client disconnect conditions without broader functional impact
Ready
  • Ready to review
  • Author addressed previous feedback and tests pass cleanly
1
Strong
  • Unanimous support with no outstanding objections
  • Concept approval and verified by mutation testing (jeanpablojp)
  • Verified by testing on Linux with clang-18 (winterrdog)
40 + 112 tests
  • 40 lines added or modified outside tests
  • 112 lines added or modified in tests
  • 44 lines removed in total
  • 3 files, 5 commits
(+)#35902 chriszeng1010 zmq: Log bind error at Error level, abort startup on init error
  • Prevent silent node startup when configured ZMQ notification endpoints fail to bind
  • Alerts node operators and dependent services immediately instead of running without notifications
P3 · bug fix
  • P3 because node operators avoid silent notification outages when endpoints fail to bind
  • Protects dependent services that assume notifications are active whenever the node is up
Ready
  • Ready for review with all reviewer feedback addressed and CI passing
0
Strong
  • Strong support for aborting node startup on ZMQ bind errors
  • Concept approval after testing broken configs and requesting error bubbling (pinheadmz)
  • Approach approval after verifying startup abort behavior with broken configs (jeanpablojp)
70 + 43 tests
  • 70 lines added or modified outside tests
  • 43 lines added or modified in tests
  • 44 lines removed in total
  • 9 files, 1 commits
(+)#36002 andrewtoth txindex: allow running in pruned mode
  • Allow pruned nodes to run txindex without keeping full raw block history on disk
  • Let users look up transaction block hashes and fetch missing blocks on demand
  • Enable indexing on already pruned nodes without redownloading past history
P3 · new feature
  • P3 because it returns missing block hashes so callers can retrieve blocks via RPC
  • Provides transparency on partial indexes by reporting starting height in getindexinfo
Ready
  • Ready to review
  • The author is actively addressing questions and CI is passing
0
Strong
  • Strong concept support for enabling txindex on pruned nodes
  • Enthusiastic concept approval (l0rinc)
  • Concept approval with discussion on partial history disk usage (ajtowns)
  • Suggests returning structured RPC data and unifying index state enums (arejula27)
176 + 195 tests
  • 176 lines added or modified outside tests
  • 195 lines added or modified in tests
  • 86 lines removed in total
  • 23 files, 7 commits
(+)#36200 hodlinator rpc: invalid credentials can occupy every HTTP worker
  • Prevent invalid RPC requests from occupying every worker thread and blocking legitimate users
P3 · DoS protection
  • P3 because it stops clients with RPC network access from easily exhausting HTTP worker threads
  • Severity is moderate since attackers must already have permission to reach the RPC port
Ready
  • Ready for review
  • Open design trade-offs around password guessing invite review input
0
  • No review verdicts recorded
Strong
  • Strong support because closing the easy DoS vector outweighs slower brute-forcing (willcl-ark)
  • Author is exploring alternatives to mitigate increased password guess rates (hodlinator)
0 + 36 tests
  • 0 lines added or modified outside tests
  • 36 lines added or modified in tests
  • 6 lines removed in total
  • 2 files, 1 commits
(+)#36047 chriszeng1010 rpc: handle createNewBlock() returning nullptr during shutdown
  • Prevent mining RPCs from throwing misleading internal bug assertions when called during node shutdown
  • Return a clean shutdown error or abort gracefully when block template creation fails on exit
P3 · bug fix
  • P3 because it replaces an unhandled assertion failure with a standard shutting down RPC error
  • Improves error reporting consistency for clients calling block generation calls during shutdown
Ready
  • Ready for review
  • Small patch with a reproduction functional test and passing CI
0
  • No review verdicts recorded
Crickets
  • No reviews or concept comments yet
6 + 34 tests
  • 6 lines added or modified outside tests
  • 34 lines added or modified in tests
  • 4 lines removed in total
  • 2 files, 1 commits
(+)#35433 rkrux wallet: deprecate replaceable argument from transaction (and psbt) creation (and modification) RPCs
  • Deprecate the obsolete replaceable argument across transaction creation and modification RPCs
  • Avoid caller confusion and simplify RPC interfaces now that full-RBF is the network default
P3 · cleanup
  • P3 because cleaning up obsolete parameters simplifies raw transaction RPCs
  • It carries low urgency without fixing any bugs or operational issues
  • Ranking pass: Moved up: a deliberate deprecation of a documented RPC argument, and deprecation discipline is a first-order concern here.
Needs rebase
  • Needs rebase due to merge conflicts against master
  • Stale while waiting on author response to outstanding review comments
0
Positive
  • General agreement on deprecating BIP 125 replaceability parameters
  • Concept approval for deprecating the replaceable argument (polespinasa)
  • Recommended throwing an RPC error when passed without the deprecation flag (achow101)
  • Unaddressed request for test coverage of replaceable=False across spend RPCs (polespinasa)
58 + 104 tests
  • 58 lines added or modified outside tests
  • 104 lines added or modified in tests
  • 69 lines removed in total
  • 15 files, 8 commits
(+)#36005 pythcoiner rpc, descriptor: warn when multipath expansion clones single-path key expressions
  • Warn users when single-path key expressions are cloned during multipath descriptor expansion
  • Prevent accidental key reuse between receive and change outputs
  • Expose descriptor warnings in getdescriptorinfo and deduplicate RPC warning outputs
P3 · new feature
  • P3 because it provides useful diagnostic parity by adding warnings to getdescriptorinfo
  • Avoids repetitive warning messages in RPC outputs
Needs rebase
  • Needs rebase due to merge conflicts with master
1Strong
  • Strong support with no objections raised
  • Verified by mutating checks and validating test failures (jeanpablojp)
57 + 88 tests
  • 57 lines added or modified outside tests
  • 88 lines added or modified in tests
  • 10 lines removed in total
  • 8 files, 4 commits
(+)#36249 fjahr net, rpc: Asmap version improvements/follow-ups
  • Let node operators and tooling inspect the active ASMap hash via RPC to verify it against attestations
  • Avoid forcing operators to parse debug logs to confirm which ASMap version is loaded
P3 · new feature
  • P3 because it exposes a convenient field to verify active ASMap data against attestations
  • Benefit is modest and deferrable since operators could previously check logs
Ready
  • Ready to review
  • Small PR with passing CI and author addressed review feedback
1 (+1)
Strong
  • Strong support across all reviewers
  • Verified by testing (jurraca)
  • Approved after author implemented suggested hash caching (sedited)
35 + 18 tests
  • 35 lines added or modified outside tests
  • 18 lines added or modified in tests
  • 23 lines removed in total
  • 6 files, 6 commits
(+)#36175 nervana21 rpc: Stamp `getblock` OpenRPC result discriminator
  • Let RPC client generators automatically map getblock verbosity levels to their result schemas
  • Stops downstream client libraries from having to hardcode which parameter value selects which schema
P3 · new feature
  • P3 because it adds structured metadata to OpenRPC output for downstream client generators
  • Tools like corepc and btcd will no longer need to hardcode the getblock schema mapping
  • It provides tooling leverage without altering runtime RPC behavior or node stability
  • Ranking pass: Moved up: named downstream generators (corepc, btcd) currently hardcode the getblock schema mapping.
Ready
  • Ready to review now; diff is small, CI passes, and only a minor inline question is open
0
Positive
  • Generally positive reception on clarifying schema branches for downstream tools
  • Concept ACK with test and documentation improvements that the author incorporated (jeanpablojp)
  • Minor inline question regarding a static_cast on parameter index (maflcko)
43 + 11 tests
  • 43 lines added or modified outside tests
  • 11 lines added or modified in tests
  • 5 lines removed in total
  • 4 files, 3 commits
(+)#35113 optout21 net: introduce block tracker to retry to download blocks after failure
  • Automatically retry on-demand block downloads across available peers when a peer fails or disconnects
  • Relieves callers from manually tracking and retrying missing block fetch requests
P3 · user request
  • P3 because it lets callers fetch blocks without looking up specific peer IDs first
  • Benefit is an incremental convenience enhancement to a diagnostic RPC command
  • Ranking pass: Lower: rpc content is a convenience argument on getblockfrompeer; the substance is p2p download retry logic.
Needs rebase
  • Has merge conflicts against master and needs a rebase
  • Author has been inactive after agreeing to address RPC design feedback
0
  • No review verdicts recorded
Disputed
  • Unaddressed objection: boolean parameters should be named rather than positional (luke-jr)
  • Author agreed to consider RPC parameter feedback but has not pushed updates
231 + 99 tests
  • 231 lines added or modified outside tests
  • 99 lines added or modified in tests
  • 10 lines removed in total
  • 8 files, 6 commits
(+)#32468 polespinasa rpc: generateblock to allow multiple outputs
  • Allow generateblock to create coinbase transactions with multiple outputs and custom amounts on regtest
  • Let generateblock automatically mine mempool transactions when no transaction list is provided
  • Eliminates manual raw block construction boilerplate for developers testing multi-recipient coinbases
P3 · new feature
  • P3 because it makes regtest block generation more flexible for developers testing multi-output coinbases
  • Defaulting to mempool transactions turns generateblock into a more complete test utility
  • Ranking pass: Lower: regtest-only developer tooling, below changes that affect production callers.
Ready
  • Ready to review now that requested design changes are implemented and rebased on master
0
  • No review verdicts recorded
Strong
  • Strong consensus to extend generateblock rather than introducing a new RPC method
  • Suggested extending generateblock and adding optional mempool mining (andrewtoth)
  • Guided keeping test-only coinbase mutation logic out of core node miner code (maflcko)
  • Advocated supporting custom reward splits rather than only equal shares (stickies-v)
131 + 134 tests
  • 131 lines added or modified outside tests
  • 134 lines added or modified in tests
  • 56 lines removed in total
  • 15 files, 7 commits
(+)#35355 ajtowns Use atomics for determining whether trace logging is enabled
  • Avoid overhead on high-frequency code paths when trace or debug logging is disabled
  • Simplify managing trace categories for node operators via the command line and RPC
P3 · new feature
  • P3 because it expands the logging RPC to manage trace logging dynamically
  • Changes to RPC output structures require careful deprecation handling
  • Ranking pass: Lower: overlaps #34038's RPC change and is a draft behind the same unresolved design dispute.
Needs rebase
  • Needs rebase due to merge conflicts with multiple open logging pull requests
  • Stale with no author activity for nearly four months
0
  • No review verdicts recorded
Crickets
  • No reviews or comments received yet
  • No contributor feedback since the author opened the draft
238 + 109 tests
  • 238 lines added or modified outside tests
  • 109 lines added or modified in tests
  • 320 lines removed in total
  • 24 files, 12 commits
(+)#27052 LarryRuane test: rpc: add last block announcement time to getpeerinfo result
  • Give node operators visibility into which peers provide prompt block announcements
  • Add test coverage to protect outbound peer eviction logic from regressions
P3 · new feature
  • P3 because it exposes peer responsiveness timestamps to operators without breaking compatibility
  • Enables external monitoring and functional testing of peer block announcement timing
Ready
  • Ready for review with passing CI and all feedback resolved
2
Strong
  • Strong support with all concerns resolved
  • Verified by mutation testing and checking header announcement edge cases (naiyoma)
  • Verified by running test suites and checking RPC output (rkrux)
  • Concept approval favoring test coverage and peer observability (satsie, kristapsk)
34 + 112 tests
  • 34 lines added or modified outside tests
  • 112 lines added or modified in tests
  • 19 lines removed in total
  • 8 files, 5 commits
(+)#36261 Bicaru20 test: cover PSBT unknown field merging
  • Ensure combinepsbt preserves unknown key-value pairs across global, input, and output maps
  • Prevents regressions for tooling and workflows using proprietary or newly defined PSBT fields
P3 · test coverage
  • P3 because it adds regression test coverage without altering RPC behavior or fixing an active bug
  • Pins combinepsbt handling of unknown fields to safeguard callers relying on PSBT extensions
Ready
  • Ready for review: clean, self-contained functional test addition with CI passing
0
Strong
  • Approach approval for the test coverage additions (w0xlt)
  • Concept approval after author added requested test coverage for single-sided fields (polespinasa)
0 + 130 tests
  • 0 lines added or modified outside tests
  • 130 lines added or modified in tests
  • 0 lines removed in total
  • 1 files, 1 commits
(+)#35893 mercie-ux test: cover submitpackage other-wtxid for same-txid-diff-witness
  • Add functional test coverage for submitpackage response formatting
  • Protects against regressions when a package transaction shares a txid with a mempool entry
P3 · test coverage
  • P3 because it pins documented JSON response formats for package submissions
  • Ensures RPC clients do not encounter silent compatibility regressions
Ready
  • Ready for review, small patch with passing CI
1Positive
  • Positive sentiment with no outstanding concerns
  • Concept approval without stated reasons (instagibbs)
  • Verified by testing after addressing cleanup feedback (jeanpablojp)
0 + 31 tests
  • 0 lines added or modified outside tests
  • 31 lines added or modified in tests
  • 0 lines removed in total
  • 1 files, 1 commits
(+)#35054 fjahr p2p: UTXO set sharing
  • Allow nodes to fetch assumeutxo snapshots directly across the P2P network instead of via out-of-band sources
  • Enable fast, frictionless node bootstrapping for regular users and prepackaged node projects
P4 · new feature
  • P4 after comparing with the other PRs here (assessed alone as P3): Lowered to P4: within rpc this is only a downloadutxoset control endpoint for a contested p2p proposal; a new method with no settled consumer.
  • P3 because it exposes the RPC interface to initiate asynchronous P2P snapshot fetching
  • Secondary control interface for the underlying P2P functionality
Needs rebase, CI failing
  • Review is blocked: PR is a draft, has merge conflicts, failing CI, and author has been silent for 115 days
0 -6Disputed
  • Heavily disputed, with strong opposition against expanding assumeutxo into the P2P network
  • Concept approval because it provides in-band snapshot acquisition (andrewtoth, svanstaa)
  • Concept rejection: adds validation complexity and dual chainstate maintenance burden (stickies-v, l0rinc)
  • Concept rejection: introduces undesirable trust assumptions to the P2P protocol (evoskuil, eynhaender)
  • Concept rejection: uncertain demand and excessive long-term maintenance costs (narula, nkaretnikov)
943 + 771 tests
  • 943 lines added or modified outside tests
  • 771 lines added or modified in tests
  • 1 lines removed in total
  • 27 files, 13 commits
(+)#31672 vasild rpc: add cpu_load to getpeerinfo
  • Help node operators and developers measure CPU time spent processing messages from individual peers
  • Identify resource-intensive peers to assist with peer prioritization and DoS investigations
P4 · new feature
  • P4 after comparing with the other PRs here (assessed alone as P3): Lowered to P4: adds an un-decayed, non-actionable field to the stable getpeerinfo interface with no external consumer, and reviewers objected to that exposure.
  • P3 because it adds a useful diagnostic metric for operators investigating heavy peers
  • Provides visibility into peer resource use but does not fix bugs or alter node behavior
Author silent 141 days
  • Worthwhile to review architectural direction, though the author has been inactive for several months
1 (+1) -1
Blocked
  • Concept support for monitoring per-peer CPU usage to assist anti-DoS measures (laanwj)
  • Prefers an experimental RPC with a decaying average over adding this directly to getpeerinfo (sipa)
  • Unaddressed objection: CPU load is not actionable and does not distinguish useful work (ajtowns)
  • Unaddressed objection: CPU load alone is useless without transaction context (rebroad)
159 + 1 tests
  • 159 lines added or modified outside tests
  • 1 lines added or modified in tests
  • 4 lines removed in total
  • 8 files, 2 commits
(+)#33117 D33r-Gee Interfaces: Expose UTXO Snapshot Loading and Add Progress Notifications
  • Allow GUI clients to trigger UTXO snapshot loading and display real-time progress feedback to users
P4 · cleanup
  • P4 because it only refactors loadtxoutset to use the new interface and standardizes error codes
  • Adds no new RPC features or user-facing functional changes
Needs rebase
  • Needs rebase due to merge conflicts with master
0 (+1)
Strong
  • Strong consensus on concept and approach with all architectural concerns resolved
  • Verified snapshot loading using downstream QML GUI (pinheadmz) and current GUI (Sjors)
  • Approach approval (sedited)
127 + 2 tests
  • 127 lines added or modified outside tests
  • 2 lines added or modified in tests
  • 21 lines removed in total
  • 10 files, 3 commits
(+)#35480 fernandguil doc: document ZMQ notification behavior during reorgs and evictions
  • Document existing ZMQ notification behavior during chain reorgs and mempool evictions
  • Clarify sequence order and event coverage for developers of external services and indexers
P4 · test coverage
  • P3 because it pins existing ZMQ notification ordering behavior with functional tests
  • Validates the interface without changing any core RPC or ZMQ source code
Ready
  • Ready for review
  • All reviewer suggestions addressed with wording updates and a new functional test
0
  • No review verdicts recorded
Mild
  • Constructive feedback requesting text condensation and a functional test (sedited)
  • Author implemented all requested changes with no further follow-up yet
15 + 59 tests
  • 15 lines added or modified outside tests
  • 59 lines added or modified in tests
  • 0 lines removed in total
  • 2 files, 2 commits
(+)#36124 hodlinator http: Make `HTTPRequest` update state internally
  • Prevent external callers from arbitrarily mutating internal HTTP request states
  • Enforce request state transitions automatically rather than relying on caller convention
P4 · cleanup
  • P4 because it is an internal encapsulation cleanup in the HTTP server layer
  • Turns internal state conventions into compiler-enforced invariants without fixing an active bug
Ready
  • Ready for review
0 (+2)
Strong
  • Strong support for replacing conventions with compiler-enforced state transitions (janb84)
  • Verified by testing after API adjustments (winterrdog)
71 + 46 tests
  • 71 lines added or modified outside tests
  • 46 lines added or modified in tests
  • 144 lines removed in total
  • 4 files, 3 commits
(+)#36198 hodlinator http: Add missing LIFETIMEBOUND annotations
  • Catch dangling references to HTTP server state at compile time
  • Warn developers when return values or views are bound to temporary objects
P4 · cleanup
  • P4 because it adds static analysis annotations without fixing an active defect
  • Reduces future footguns by flagging use-after-free hazards on temporaries during compilation
Ready
  • Ready to review
  • Small patch with passing CI and no pending blockers
0
  • No review verdicts recorded
Crickets
  • No review activity yet
  • Awaiting initial feedback from maintainers
6
  • 6 lines added or modified outside tests
  • 0 lines added or modified in tests
  • 6 lines removed in total
  • 1 files, 1 commits
(+)#34950 defenwycke rpc: migrate generatetoaddress params to self.Arg for consistency
  • Make parameter parsing consistent across testing RPCs
  • Prevent negative retry counts from silently overflowing to maximum integers
P4 · cleanup
  • P4 because this is a minor internal cleanup of RPC parameter parsing
  • Negative integer wrapping was harmless so the change is purely for code consistency
Author silent 170d
  • Review is likely not worthwhile because the author has been inactive for 170 days
0
  • No review verdicts recorded
Positive
  • Support for aligning parameter parsing with other generate calls (maflcko, GerardoTaboada)
  • Noted that rejecting negative retry counts changes user-visible behavior (GerardoTaboada)
  • Thinks low-value LLM-assisted cleanups are not worth review bandwidth (dergoegge)
3 + 3 tests
  • 3 lines added or modified outside tests
  • 3 lines added or modified in tests
  • 3 lines removed in total
  • 2 files, 1 commits
(+)#36273 MrHodlX rpc: unify the TX decode failure error message
  • Make raw transaction decode error hints consistent across RPC endpoints
  • Help RPC users debug failures by giving accurate error hints and pinpointing failing transaction indices
P4 · cleanup
  • P4 because unifying decode error strings across endpoints is a minor cosmetic cleanup
  • Provides slightly clearer diagnostics to RPC callers without affecting node stability or consensus
Ready
  • Ready to review
  • Clean small change with passing CI
0
  • No review verdicts recorded
Crickets
  • No reviews on the code or concept yet
  • Reminder about project AI description policy and comment formatting nit (maflcko)
20 + 11 tests
  • 20 lines added or modified outside tests
  • 11 lines added or modified in tests
  • 14 lines removed in total
  • 11 files, 2 commits
(+)#35281 ferminquant univalue: respect token end pointer
  • Prevent out-of-bounds memory reads when parsing JSON inputs that lack null terminators
  • Protect node operators and callers from memory safety bugs during bounded text parsing
P4 · bug fix
  • P3 because production exposure is limited since RPC handlers typically pass null-terminated buffers
  • Improves parsing safety for the RPC layer when handling bounded string inputs
Needs rebase
  • Needs rebase due to merge conflicts with the base branch
  • Author has been inactive for over a month
0 (+1)
Mild
  • General agreement on fixing the out-of-bounds memory reads in JSON parsing
  • Concept approval noting it fixes two distinct out-of-bounds reads (sedited)
  • Verified by testing bounded input test cases (carloantinarella)
  • Suggested minor test cleanup around buffer handling (maflcko)
31 + 3 tests
  • 31 lines added or modified outside tests
  • 3 lines added or modified in tests
  • 31 lines removed in total
  • 10 files, 1 commits
(+)#35820 l0rinc refactor: keep duration calculations typed
  • Prevent accidental time unit confusion across subsystems by using explicit typed durations
  • Clarify duration calculations where units were previously implicit in comments or parameter names
P4 · cleanup
  • P4 because it is an internal cleanup of duration expressions in RPC handlers
  • Caller-visible interfaces, RPC behavior, and performance remain unchanged
Needs rebase
  • Needs rebase due to merge conflicts, with author inactive for a month
0
Positive
  • Concept approval for improved readability (janb84)
  • Skeptical that the change adds genuine type safety or clarity (stickies-v)
  • Objected to guideline violations and noisy conversions, which the author addressed (maflcko)
75 + 32 tests
  • 75 lines added or modified outside tests
  • 32 lines added or modified in tests
  • 97 lines removed in total
  • 26 files, 13 commits
(+)#36155 csjones doc: remove json quoting from gettxoutsetinfo and getblockstats cli examples
  • Remove redundant inner quotes from CLI help examples for gettxoutsetinfo and getblockstats
  • Reduces visual noise and makes help text easier to read for CLI users
P4 · cleanup
  • P4 because it only updates example strings printed in RPC help output
  • Leaves argument handling, dispatch logic, and return types untouched
Ready
  • Ready to review
  • Trivial two-line documentation update with clean CI and no pending questions
1Positive
  • Standard commit approval (nervana21)
  • PR description clarified to remove confusing test notes upon request (sedited)
2
  • 2 lines added or modified outside tests
  • 0 lines added or modified in tests
  • 2 lines removed in total
  • 1 files, 1 commits
(+)#10102 ryanofsky Multiprocess bitcoin
  • Isolate the node, wallet, and GUI into separate processes so crashes or exploits do not compromise the node
  • Allow components to run on independent lifecycles for improved stability and security
P4 · cleanup
  • P4 because the RPC changes are limited to passing a logging suffix in bitcoin-cli's MakeBasicInit call and adding a comment note in rpc/request.h. No RPC commands, schemas, or server mechanisms are modified.
Review #29409 first
0 (+1) -1
Strong
  • Strong long-standing concept consensus across multiple maintainers
  • Concept approval emphasizing the value of process isolation (laanwj)
  • Concept approval with testing (Sjors)
  • Historical concept approval (dcousens, promag, jamesob, hebasto)
3,842 + 135 tests
  • 3,842 lines added or modified outside tests
  • 135 lines added or modified in tests
  • 539 lines removed in total
  • 136 files, 23 commits
Reviewability: ReadyStalePaused
Agreement: StrongPositivePositive w/ caveatsNeutralMildDisputedBlockedCrickets
Reviews: current code-review ACKs, then (+stale ACKs) and -NACKs; greener = more ACKs.
Size: lines added or modified outside tests, then in tests; greener = smaller.
Ranking pass (2026-09-17): all PRs here were compared with each other; 27 notes on review order, overlaps, and band changes.

Covers

The node's programmatic interfaces: JSON-RPC methods and their help and argument handling, the HTTP server and authentication, bitcoin-cli, the REST interface, and ZMQ notifications. Wallet RPCs are wallet first and rpc second unless the change is to the RPC machinery itself. The RPC/REST/ZMQ label is a strong prior.

Not rpc: the behavior an RPC merely exposes (that belongs to its area).

What matters here

Compatibility first: changes that break or silently alter what existing callers get back affect every application built on the node, so correctness of returned data and the discipline around deprecations matter most. Then security of the interface: authentication, exposure of sensitive data, resource exhaustion through the HTTP server. Then gaps that force applications into workarounds: missing fields or methods that downstream software has asked for, with evidence they asked. Then performance of hot methods that block explorers and indexers call constantly. Then consistency and documentation of the interface.

New methods without an external consumer asking rank low.

generated 2026-09-17 21:55 UTC