spark.exposed

The exit

Blitz preserves an offline exit bundle but exports the actual recovery outside the wallet

Blitz materially improves recovery by caching and exporting complete leaf and ancestor state for offline use. It still sends execution to separate developer tooling rather than funding, broadcasting, monitoring, refunding, and sweeping inside the wallet. 123

3 sourcesEvidence reviewed through August 24, 2026

What the evidence shows

Technical and product details

  1. Material mitigation

    Blitz stores raw Spark leaves and ancestor nodes in SQLite, refreshes them while Operators are reachable, and can build a spark.unilateral-exit-bundle.v1 file that remains usable as input while the Operators are offline. 12

    Supporting material shown on this page

    Blitz exit-state storagePinned source code · github.com · checked 2026-08-24
    Relevant lines from the pinned source · open raw file
    152// ---------------------------------------------------------------------------
    153// Normalization: raw SDK TreeNode -> JSON-serializable, all bytes hex-encoded.
    154// Every field returned by getLeaves() is public (public keys, FROST public
    155// shares, and Bitcoin transactions that pay back to the owner), so nothing here
    156// is encrypted. We keep the FULL leaf (including the directTx variants the
    157// SDK's WalletLeaf DTO drops) so the export is a complete unilateral-exit copy.
    158// ---------------------------------------------------------------------------
    Blitz bundle exportPinned source code · github.com · checked 2026-08-24
    Relevant lines from the pinned source · open raw file
    150            'unilateral exit of multi-level trees needs live Spark operators or ' +
    151            'the reference Rust exporter (tools/spark-recovery-bundle). See the ' +
    152            'spark-unilateral-exit guide.';
    153
    154        const fileData =
    155          `{"schema":"spark.unilateral-exit-bundle.v1",` +
    156          `"createdAt":${JSON.stringify(new Date().toISOString())},` +
  2. Missing product stages

    The app does not fund, construct, package-relay, monitor, resume, refund, or sweep the exit. Its export notes direct the user to the separate Spark unilateral-exit guide. 3

    Supporting material shown on this page

    Blitz external recovery directionPinned source code · github.com · checked 2026-08-24
    Relevant lines from the pinned source · open raw file
    143        const networkLabel = NETWORK_LABELS[networkInt] || 'MAINNET';
    144        const recoveryNotes = hasAncestors
    145          ? 'Includes each leaf plus its ancestor TreeNodes up to the tree root, ' +
    146            'captured from Spark operators at export time, so this bundle can ' +
    147            'drive an offline unilateral exit of multi-level trees. Refresh it ' +
    148            'after any wallet activity. See the spark-unilateral-exit guide.'
    149          : 'Leaves only. Ancestor/parent TreeNodes are not included; offline ' +
  3. Assessment

    Blitz is the closest reviewed wallet to preserving the prerequisite state, but backup export is not unilateral-exit execution. The ordinary mobile user still has no in-app path from outage to recovered coins. 23

    Supporting material shown on this page

    Blitz bundle exportPinned source code · github.com · checked 2026-08-24
    Relevant lines from the pinned source · open raw file
    150            'unilateral exit of multi-level trees needs live Spark operators or ' +
    151            'the reference Rust exporter (tools/spark-recovery-bundle). See the ' +
    152            'spark-unilateral-exit guide.';
    153
    154        const fileData =
    155          `{"schema":"spark.unilateral-exit-bundle.v1",` +
    156          `"createdAt":${JSON.stringify(new Date().toISOString())},` +
    Blitz external recovery directionPinned source code · github.com · checked 2026-08-24
    Relevant lines from the pinned source · open raw file
    143        const networkLabel = NETWORK_LABELS[networkInt] || 'MAINNET';
    144        const recoveryNotes = hasAncestors
    145          ? 'Includes each leaf plus its ancestor TreeNodes up to the tree root, ' +
    146            'captured from Spark operators at export time, so this bundle can ' +
    147            'drive an offline unilateral exit of multi-level trees. Refresh it ' +
    148            'after any wallet activity. See the spark-unilateral-exit guide.'
    149          : 'Leaves only. Ancestor/parent TreeNodes are not included; offline ' +

Scope control

What this does not establish

  • This finding credits Blitz's real recovery-state work. It does not describe the bundle as useless or claim an expert cannot complete the exit with separate tooling. 12

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.

1

Blitz exit-state storage

Pinned source code · github.com · Pinned or archival · checked 2026-08-24

Open original source
2

Blitz bundle export

Pinned source code · github.com · Pinned or archival · checked 2026-08-24

Open original source
3

Blitz external recovery direction

Pinned source code · github.com · Pinned or archival · checked 2026-08-24

Open original source

How sources, absence findings, and limitations were evaluated