Tools and scripts

PRPriorityReviewabilityReviewsAgreementSize
(+)#36293 l0rinc contrib: exclude inactive keys from the binary quorum by defaultP1 · bug fixReady1Strong0 + 125 tests
  • Prevent release binary verification from accepting expired or revoked keys toward the signature quorum
  • Avoids reporting releases as verified when signatures come only from compromised or defunct keys
  • Allows opt-in inclusion of expired keys when verifying historical releases
  • P1 after comparing with the other PRs here (assessed alone as P2): Raised to P1: release-binary verification tooling counting revoked/expired keys toward the quorum is a disclosed security defect in a tool downstream users rely on, the most consequential problem in this category.
  • P2 because verification tooling counted revoked and expired keys toward minimum required signatures
  • Fixes a responsibly disclosed flaw while retaining historical release verification via an explicit flag
  • Ready to review; all reviewer concerns have been addressed in pushed updates
  • Strong support after testing verification on releases 22.1 through 31.1 (willcl-ark)
  • Concerns about verifying older releases resolved by adding an opt-in expired key flag (sedited, willcl-ark)
  • Agreed to leave signature de-duplication to a follow-up (willcl-ark)
  • 0 lines added or modified outside tests
  • 125 lines added or modified in tests
  • 15 lines removed in total
  • 3 files, 5 commits
(+)#36105 ryanofsky bitcoin wrapper: Fix Windows exec so wrapper waits for child processP2 · platform fixReady1Strong15 + 14 tests
  • Make the Windows bitcoin wrapper wait for child processes and return their exit codes
  • Allow scripts, external callers, and test suites to reliably check child process outcomes
  • Re-enable skipped functional tests on Windows
  • P2 because it repairs the execution model of the CLI wrapper on Windows
  • Ensures external scripts and users waiting on the wrapper receive accurate exit codes
  • Ready to review
  • Tested on Linux and Windows with the MSVCRT workaround dropped (cyb3ralbert)
  • Concept approval without stated reasons (hebasto, hodlinator)
  • All discussion questions and suggestions addressed
  • 15 lines added or modified outside tests
  • 14 lines added or modified in tests
  • 21 lines removed in total
  • 7 files, 3 commits
(+)#36106 ryanofsky bitcoin wrapper: respect CMAKE_INSTALL_BINDIR/LIBEXECDIRP2 · bug fixReady1Strong42 + 71 tests
  • Allow the bitcoin wrapper tool to locate internal executables when installed with custom directory layouts
  • Fix immediate failure on distributions like Arch Linux where CMAKE_INSTALL_LIBEXECDIR is set to lib
  • P2 after comparing with the other PRs here (assessed alone as P3): Raised to P2 and moved up: the wrapper is simply unusable on distros with non-default libexec layout (issue #35785), the same class of supported-platform breakage as #36105, so the two must share a band.
  • P3 because it enables the bitcoin wrapper command to work on distributions with non-default layouts
  • Ready to review
  • Substantive support with all raised issues addressed
  • Verified fix for custom layouts and approved the approach (hebasto)
  • Verified the fix for the distribution issue and confirmed valgrind fix (cyb3ralbert)
  • 42 lines added or modified outside tests
  • 71 lines added or modified in tests
  • 6 lines removed in total
  • 6 files, 2 commits
(+)#36608 instagibbs Reimplement private broadcast as node state-less jobs + package relay supportP2 · new featureNeeds rebase0Crickets7,403 + 9,808 tests
  • Eliminate deanonymization risks and timing leaks when broadcasting private transactions
  • Allow broadcasting low-fee private transactions that rely on child-pays-for-parent package relay
  • P2 after comparing with the other PRs here (assessed alone as P3): Raised to P2: the problem is recurring privacy/deanonymization leaks in private broadcast, a security-class issue, not merely a new CLI utility.
  • P3 because it provides a standalone utility to privately broadcast transactions without running bitcoind
  • Offers isolated relay over Tor and BIP324 as a dedicated CLI tool
  • Author directed review to slimmed-down PR #36628 instead
  • No review verdicts recorded
  • No substantive discussion or review comments yet
  • Author noted that reviewers should look at PR #36628 instead
  • 7,403 lines added or modified outside tests
  • 9,808 lines added or modified in tests
  • 4,442 lines removed in total
  • 121 files, 35 commits
(+)#36603 ajtowns Improve loadtxoutset performanceP2 · new featureReady0Mild1,110 + 213 tests
  • Speed up assumeutxo snapshot loading during node startup
  • Reduce memory overhead and redundant disk flushes when importing UTXO snapshots
  • P2 after comparing with the other PRs here (assessed alone as P3): Raised to P2 and moved up: substantial snapshot-load performance gain plus an offline bitcoin-util inspection tool, and #35054 (P2P UTXO set sharing) builds on it.
  • P3 because it adds an offline tool to inspect snapshot statistics and commitments
  • Helps developers and node operators analyze assumeutxo snapshots without running bitcoind
  • Ready to review
  • No review verdicts recorded
  • Unaddressed objection: adds assumeutxo complexity to consensus paths (l0rinc)
  • Questioned whether speeding up snapshot loading justifies code complexity (l0rinc)
  • Author defended the approach for fast node startup with no further reply yet (l0rinc)
  • 1,110 lines added or modified outside tests
  • 213 lines added or modified in tests
  • 472 lines removed in total
  • 27 files, 12 commits
(+)#35608 HowHsu contrib: Skip llvm-cov rendering for deterministic fuzz inputsP3 · speedupWaiting on author0 (+1)Strong0 + 71 tests
  • Speed up deterministic fuzz coverage checking for developers
  • Avoid rendering expensive coverage reports when profile data between runs is identical
  • P3 because it significantly accelerates deterministic fuzz coverage checks for developers
  • Cuts runtime on large fuzz targets from hours down to minutes by skipping redundant report generation
  • Ready to review now
  • Conflicts with master, but the rebase is mechanical
  • Verified by testing substantial speedups on fuzz coverage targets (jeanpablojp)
  • Code approval with a suggestion to make parallelism a named argument (maflcko)
  • Resolved objection: broken builds without coverage flags now pass checks (jeanpablojp, maflcko)
  • 0 lines added or modified outside tests
  • 71 lines added or modified in tests
  • 36 lines removed in total
  • 1 files, 1 commits
(+)#35814 carloantinarella contrib: Autogenerate bitcoin-cli bash completion file from getopenrpcinfoP3 · user requestReady0Positive0 + 1,574 tests
  • Autogenerate the bitcoin-cli Bash completion script from the RPC interface
  • Keeps CLI autocompletions and named arguments accurate without manual maintenance
  • P3 because it removes recurring manual maintenance to keep completion scripts in sync across releases
  • Provides CLI users with accurate autocompletion for newly added or changed RPC commands
  • Worth reviewing now, though the author is reworking the generator as a standalone script
  • Concept approval without stated reasons (sedited)
  • Suggested making the generator a standalone script instead of part of the test framework (sedited)
  • 0 lines added or modified outside tests
  • 1,574 lines added or modified in tests
  • 68 lines removed in total
  • 3 files, 2 commits
(+)#35831 pablomartin4btc argsman, cli: Allow options after non-option arguments (GNU-style)P3 · cleanupAuthor silent 80d1Positive103 + 182 tests
  • Parse command-line options that appear after commands or positional arguments
  • Prevent trailing options like -rpcwallet from being silently swallowed or misparsed
  • P3 after comparing with the other PRs here (assessed alone as P4): Raised from P4: silently swallowing options after a command (e.g. trailing -rpcwallet) is a real user-facing CLI correctness problem, not incidental cleanup.
  • P4 because updating bitcoin-tx to consume pre-filtered arguments is an incidental follow-up
  • Ready to review
  • Support without stated reasons (w0xlt)
  • Previous objections on parsing edge cases and bitcoin-tx handling were fixed (w0xlt, vicjuma)
  • 103 lines added or modified outside tests
  • 182 lines added or modified in tests
  • 38 lines removed in total
  • 7 files, 3 commits
(+)#35788 ajtowns bitcoin-util: Add evalscript subcommandP3 · new featureWaiting on author0 (+1)Strong325 + 294 tests
  • Allow developers and researchers to execute and inspect script fragments directly via the CLI
  • Validates script behavior and signatures against Core's consensus interpreter without custom tests
  • P3 because it adds a developer productivity tool to test script fragments against consensus logic
  • Helps developers and researchers validate scripts without building custom test harnesses
  • Ranking pass: Moved down: a useful developer/researcher convenience tool with no existing breakage behind it, so it ranks below the tool bugs and the dev-time-saving automation in the same band.
  • Ready to review
  • Strong support with extensive testing and no open objections
  • Verified by running script tests and 90k random scripts against an external interpreter (fametrano)
  • Verified across taproot tests, script unit tests, and CLI examples (jeanpablojp)
  • Open suggestion to clarify raw hex handling in help or require a 0x prefix (fametrano)
  • 325 lines added or modified outside tests
  • 294 lines added or modified in tests
  • 17 lines removed in total
  • 15 files, 4 commits
(+)#19460 ryanofsky multiprocess: Add bitcoin-wallet -ipcconnect optionP3 · new featureReview #10102 first0Blocked4,183 + 197 tests
  • Allow the standalone wallet tool to connect to a running node over IPC instead of running strictly offline
  • Prepare the wallet tool for future online actions like querying chain state and syncing balances
  • P3 because it enables the standalone wallet tool to communicate with a running node
  • Immediate impact is limited to verifying socket connections on startup
  • Review #10102 first
  • Stacked on top of open multiprocess PR #10102
  • No review verdicts recorded
  • Unaddressed objection: combining CLI tool and daemon behavior adds work and risks user footguns (ajtowns)
  • Answered objection: offline operation remains fully supported without requiring a node (jonasschnelli)
  • Approvals from accounts with no project history provided no rationale
  • 4,183 lines added or modified outside tests
  • 197 lines added or modified in tests
  • 644 lines removed in total
  • 149 files, 26 commits
(+)#36157 amannx21 contrib: fix dead null-byte check in linearize-data.pyP3 · bug fixReady0Crickets0 + 1 tests
  • Prevent linearize-data.py from hanging indefinitely when reaching null-byte padding at the end of block files
  • P3 because it fixes an infinite read loop when processing block files with zero padding
  • The linearize tool is a niche utility script, making the user impact limited
  • Ready to review
  • No review verdicts recorded
  • No substantive comments either way yet
  • Questioned why the script checks for zero bytes and whether it aborts incorrectly (sedited)
  • Author explained that zero bytes indicate file padding and advance to the next file rather than aborting
  • 0 lines added or modified outside tests
  • 1 lines added or modified in tests
  • 1 lines removed in total
  • 1 files, 1 commits
(+)#36190 Bortlesboat test: Check bitcoin wrapper child exit status on windowsP3 · test coverageReview #36105 first0 (+2)Strong15 + 55 tests
  • Verify that the Windows wrapper correctly forwards child exit statuses and reports spawn failures
  • Prevent regressions where child exit code -1 is conflated with process launch errors
  • P3 because it validates CLI wrapper error reporting and exit code forwarding on Windows
  • Ensures wrapper exit codes 0, 1, and -1 are preserved and launch errors emit stderr messages
  • Review #36105 first
  • The PR branch is stacked on open PR #36105 and includes its prerequisite commits
  • Strong support with no open objections
  • Verified by testing on Linux and Windows runners across both CRTs (cyb3ralbert)
  • Finds the new tests well written and useful additions to test coverage (ryanofsky)
  • 15 lines added or modified outside tests
  • 55 lines added or modified in tests
  • 20 lines removed in total
  • 7 files, 5 commits
(+)#35167 ajtowns Convert check-deps.sh to pythonP3 · cleanupAuthor silent 186d1Blocked5 + 291 tests
  • Automate library dependency checks by parsing design documentation directly
  • Prevent false passes on macOS and eliminate manual tracking of transitive dependencies
  • P3 because it makes developer dependency checking tools easier to maintain
  • Keeps dependency rules automatically synchronized with design documentation
  • Ranking pass: Moved down: maintainability of a developer dependency check with unresolved design-doc objections and a stale branch ranks below concrete tool bugs and user-facing tooling in the same band.
  • Needs rebase and the author has been silent for over six months
  • Wait for the author to address blocking design objections
  • Broad concept support for parsing dependencies automatically from design docs
  • Unaddressed objection: adding consensus-to-util dependency breaks library modularity (ryanofsky)
  • Unaddressed objection: moving init/common.cpp prevents logging in auxiliary tools (ryanofsky)
  • Unaddressed objection: script warns rather than failing CI when targets do not build (ryanofsky)
  • Approval for improved readability and fixing macOS verification bugs (sedited, janb84)
  • 5 lines added or modified outside tests
  • 291 lines added or modified in tests
  • 219 lines removed in total
  • 5 files, 4 commits
(+)#36571 jpk68 contrib/init: add systemd hardening directivesP3 · new featureReady0Strong0 + 49 tests
  • Improve defense-in-depth isolation for Linux systems running the contrib systemd service file
  • Restrict daemon access to kernel tunables, clock settings, namespaces, and unnecessary syscalls
  • P3 because it hardens the daemon attack surface for Linux systemd deployments
  • Defense-in-depth benefit is confined to an optional contrib example service file
  • Can be deferred without affecting core node functionality
  • Ready for review
  • No review verdicts recorded
  • Substantive support with no open objections (Hamza1610)
  • Verified with systemd security analysis, improving exposure score from 7.7 to 1.6 (Hamza1610)
  • 0 lines added or modified outside tests
  • 49 lines added or modified in tests
  • 1 lines removed in total
  • 1 files, 1 commits
(+)#36325 rxbryan Contrib: add multisig wizardP3 · new featureReady1 -1Blocked0 + 710 tests
  • Coordinate end-to-end multisig descriptor wallet setup across participants
  • Eliminate error-prone manual key derivation and RPC workarounds for users
  • P3 because it coordinates complex multisig setup that otherwise requires manual derivation and RPC workarounds
  • As a contrib helper prototyping future wallet workflows, review is worthwhile but deferrable
  • Ready for review
  • Verified offline multisig setup, noting Core inclusion protects users from scams (BenWestgate)
  • Unaddressed objection: maintaining workarounds diverts effort from core wallet work (pseudoramdom)
  • Unaddressed objection: placing script in contrib risks funds by looking recommended (pseudoramdom)
  • Unaddressed objection: offline node timestamp handling breaks pruned node restore (BenWestgate)
  • Concern over ongoing maintenance burden for a tool that will become obsolete (kevkevinpal)
  • 0 lines added or modified outside tests
  • 710 lines added or modified in tests
  • 0 lines removed in total
  • 4 files, 5 commits
(+)#35994 purpleKarrot Primitives: Combine assignmentsP4 · cleanupAuthor silent 72d0Mild22 + 372 tests
  • Prevent accidental reuse of dirty state in tests by combining consecutive member assignments into constructor calls
  • Pave the way for making core transaction primitive types immutable across unit tests and benchmarks
  • P4 because it adds a niche mechanical refactoring check rather than essential developer tooling
  • Needs rebase, CI is failing, and the author has been silent for over two months
  • General concept support for declarative test setup and immutable structs (josibake, l0rinc, maflcko)
  • Unaddressed bug: automated transformation accidentally drops witness data, confirmed with no fix pushed (alexanderwiederin)
  • Suggests closing the draft PR due to failing CI and prolonged inactivity (maflcko)
  • 22 lines added or modified outside tests
  • 372 lines added or modified in tests
  • 366 lines removed in total
  • 42 files, 8 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-11-01): all PRs here were compared with each other; 12 notes on review order, overlaps, and band changes.

Covers

Command-line tools other than the node and its RPC client, and the scripts under contrib: bitcoin-tx, bitcoin-util, the offline bitcoin-wallet tool, the bitcoin wrapper, seed and asmap generation, signet tooling, tracing scripts, and developer helper scripts. Build and release scripts are build; test helpers are tests. The Scripts and tools label is a strong prior.

What matters here

Tools that operators and downstream projects depend on first: seed generation, asmap, signet, and the wallet tool affect real deployments. Then correctness of any tool that touches keys or transactions. Then developer productivity tools that many contributors use. Then niche or single-user scripts, which rank low regardless of size.

generated 2026-11-02 01:17 UTC