Unilateral-exit readiness
A Spark unilateral exit is a staged recovery procedure, not a single emergency broadcast
Blink's documented workflow advances packages confirmation by confirmation, pauses for CSV refund timelocks, and later requires separate sweeps. Under the documented standard-mempool relay path, automation can resume and parallelize independent leaf chains, but it cannot remove within-chain confirmation ordering or the CSV timelock. 123
What the evidence shows
Technical and product details
- Confirm-and-continue
Blink's recovery loop reconstructs package state, signs a CPFP bump, submits one package per leaf chain, waits for confirmation, and repeats. 1
Supporting material shown on this page
Blink confirm-and-continue loopPinned source code · github.com · checked 2026-07-14 Relevant lines from the pinned source · open raw file 138``` 139 140Each round it rebuilds packages from live chain state, signs the CPFP bump 141with the seed, submits **one package per leaf chain**, waits for confirmation, 142and repeats. Already-confirmed transactions are skipped on reconstruction, so 143the loop is stateless: rate limits, crashes, and reboots cost nothing — re-run 144and it resumes. Esplora hiccups are retried with exponential backoff instead - Durable progress
Confirmed transactions are skipped when the tool is rerun, allowing recovery after rate limits, crashes, or reboots. 1
Supporting material shown on this page
Blink confirm-and-continue loopPinned source code · github.com · checked 2026-07-14 Relevant lines from the pinned source · open raw file 138``` 139 140Each round it rebuilds packages from live chain state, signs the CPFP bump 141with the seed, submits **one package per leaf chain**, waits for confirmation, 142and repeats. Already-confirmed transactions are skipped on reconstruction, so 143the loop is stateless: rate limits, crashes, and reboots cost nothing — re-run 144and it resumes. Esplora hiccups are retried with exponential backoff instead - Timelock stage
The refund that hands each leaf to the user's key is deferred until its CSV lock matures; the recovery command must be rerun afterward to broadcast it. 3
Supporting material shown on this page
Blink timelock and sweep stagesPinned source code · github.com · checked 2026-07-14 Relevant lines from the pinned source · open raw file 189After the loop finishes, each economical leaf's refund waits out its CSV 190timelock. Re-running the same `make recover` after maturity broadcasts the 191refunds; once they confirm, `make sweep` builds and signs one-input Taproot 192key-path spends from the refund outputs to any destination address, and 193`broadcast-sweep` pushes them as ordinary transactions. At the time of 194writing, this wallet's four economical exits are through their chains and 195waiting on refund maturity. - Finalization stage
After refunds confirm, separate sweep construction, signing, and broadcasting move the outputs to the chosen destination. 3
Supporting material shown on this page
Blink timelock and sweep stagesPinned source code · github.com · checked 2026-07-14 Relevant lines from the pinned source · open raw file 189After the loop finishes, each economical leaf's refund waits out its CSV 190timelock. Re-running the same `make recover` after maturity broadcasts the 191refunds; once they confirm, `make sweep` builds and signs one-input Taproot 192key-path spends from the refund outputs to any destination address, and 193`broadcast-sweep` pushes them as ordinary transactions. At the time of 194writing, this wallet's four economical exits are through their chains and 195waiting on refund maturity. - Parallelism limit
Under Blink's documented standard-mempool relay path, funding fan-out can advance independent leaf chains concurrently, but it does not remove within-chain confirmation ordering or the refund timelock. 23
Supporting material shown on this page
Blink parallelism mechanicsPinned source code · github.com · checked 2026-07-14 Relevant lines from the pinned source · open raw file 161### What fan-out would have changed here 162 163We ran this recovery sequentially (the default). With `FAN_OUT=1` the loop 164would first have broadcast **one extra transaction with 4 outputs** — the 165single 9,388-sat funding UTXO split into one UTXO per economical leaf, each 166sized to that leaf's remaining CPFP fees plus a 1,000-sat buffer, the lastBlink timelock and sweep stagesPinned source code · github.com · checked 2026-07-14 Relevant lines from the pinned source · open raw file 189After the loop finishes, each economical leaf's refund waits out its CSV 190timelock. Re-running the same `make recover` after maturity broadcasts the 191refunds; once they confirm, `make sweep` builds and signs one-input Taproot 192key-path spends from the refund outputs to any destination address, and 193`broadcast-sweep` pushes them as ordinary transactions. At the time of 194writing, this wallet's four economical exits are through their chains and 195waiting on refund maturity.
Documented operational sequence
A durable recovery state machine—not one transaction
- Refresh and encrypt current leaves and ancestors while Operators are online
- Preserve the bundle separately from the mnemonic
- Load the matching seed and bundle during an outage
- Provide an external on-chain fee UTXO
- Construct and sign parent + CPFP-child packages
- Submit packages in valid root-to-leaf order
- Persist confirmations and resume after interruptions
- Wait through relative timelocks
- Construct and broadcast final sweeps
- Verify destination confirmations
No reviewed consumer wallet demonstrates this complete sequence in its mobile UI. This establishes an implementation and usability gap, not mobile impossibility.
Scope control
What this does not establish
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.
Blink confirm-and-continue loop
Pinned source code · github.com · Pinned or archival · checked 2026-07-14
Blink parallelism mechanics
Pinned source code · github.com · Pinned or archival · checked 2026-07-14
Blink timelock and sweep stages
Pinned source code · github.com · Pinned or archival · checked 2026-07-14
How sources, absence findings, and limitations were evaluated