Unilateral-exit readiness
Spark's current mainnet CLI is a package generator, not a complete recovery workflow
Spark's current CLI begins with live leaf discovery and requests external fee UTXO data. In normal mainnet mode it emits transactions and unsigned CPFP PSBTs with manual ordering instructions, but lacks a complete durable broadcast, resume, timelock-monitoring, and sweep workflow. 1
What the evidence shows
Technical and product details
- Documented behavior
The unilateralexit command begins with live wallet.getLeaves(), constructs a coordinator client, and asks the user for raw external UTXO information. 1
Supporting material shown on this page
Spark CLI unilateralexit implementationPinned source code · github.com · checked 2026-07-14 Relevant lines from the pinned source · open raw file 3842 walletInternals.config.getCoordinatorAddress(), 3843 ); 3844 3845 const feeBumpChains = await constructUnilateralExitFeeBumpPackages( 3846 hexStrings, // Use all selected leaves 3847 utxos, 3848 { satPerVbyte: feeRate }, - Technical details
In normal/mainnet mode it prints raw transactions and unsigned CPFP PSBTs, tells the user to sign them, and instructs manual root-to-leaf parent/child submission. 1
Supporting material shown on this page
Spark CLI unilateralexit implementationPinned source code · github.com · checked 2026-07-14 Relevant lines from the pinned source · open raw file 3842 walletInternals.config.getCoordinatorAddress(), 3843 ); 3844 3845 const feeBumpChains = await constructUnilateralExitFeeBumpPackages( 3846 hexStrings, // Use all selected leaves 3847 utxos, 3848 { satPerVbyte: feeRate }, - Missing operations
The command contains no complete mainnet broadcaster, durable resume engine, real-time timelock monitor, or final sweep workflow. 1
Supporting material shown on this page
Spark CLI unilateralexit implementationPinned source code · github.com · checked 2026-07-14 Relevant lines from the pinned source · open raw file 3842 walletInternals.config.getCoordinatorAddress(), 3843 ); 3844 3845 const feeBumpChains = await constructUnilateralExitFeeBumpPackages( 3846 hexStrings, // Use all selected leaves 3847 utxos, 3848 { satPerVbyte: feeRate }, - Product consequence
Even the reference command leaves the safety-critical multi-day execution to an expert using external Bitcoin tooling. 1
Supporting material shown on this page
Spark CLI unilateralexit implementationPinned source code · github.com · checked 2026-07-14 Relevant lines from the pinned source · open raw file 3842 walletInternals.config.getCoordinatorAddress(), 3843 ); 3844 3845 const feeBumpChains = await constructUnilateralExitFeeBumpPackages( 3846 hexStrings, // Use all selected leaves 3847 utxos, 3848 { satPerVbyte: feeRate },
Scope control
What this does not establish
- This describes the cited Spark CLI command, not every possible exit tool. Separate software can automate broadcasting, persistence, timelock monitoring, and sweeping once complete state and fee funds exist. 1
Sources and excerpts
Primary sources
The relevant details and available source-code excerpts appear alongside the claims above. This list preserves the complete original-source trail for independent verification.
Spark CLI unilateralexit implementation
Pinned source code · github.com · Pinned or archival · checked 2026-07-14
How sources, absence findings, and limitations were evaluated