(+)#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
| 0 | Strong- 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
| 0 | Positive- 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 |
(+)#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 | 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 | 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 |
(+)#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
| 1 | Strong- 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
| 1 | Positive- 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 -6 | Disputed- 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 | 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
| 1 | Positive- 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
|