Review of Spark's trust model

The evidence-led thesis

Review of Spark's trust model

Spark does not eliminate third-party trust; in ordinary default use, it redistributes that trust across Lightspark’s hosted SSP, a three-member Operator set, and an operatorless exit process that none of eight reviewed consumer wallets implements end to end. These systems can observe durable wallet and payment metadata and refuse hosted operations. If a former owner and an Operator threshold retained matching old keys, they could also authorize a fresh conflicting spend. Privacy, payment liveness, post-transfer safety, and practical self-custody therefore depend on operational behavior users cannot independently verify.

What the public record establishes: Reviewed transfer and Lightning paths replicate participant identities and payment data to every Operator. Lightspark’s default SSP authenticates the same wallet identity, receives full invoices and Bitcoin withdrawal addresses, and can decline hosted requests; each Operator also has a wallet-specific state-change gate. The published mainnet client makes Lightspark the default SSP, fixed coordinator, and one of three Operators at a two-of-three threshold. In the reference inbound-Lightning flow the SSP is the former leaf owner, so retained matching keys from the Lightspark SSP, Lightspark Operator, and Flashnet Operator would be sufficient to sign a fresh conflicting spend. None of the eight reviewed wallet surfaces supplied the complete in-app fallback; the documented process instead requires current recovery material, external on-chain fee funds, and a multi-stage Bitcoin procedure.

Critical boundary: This dossier establishes architecture, capabilities, and conditional attack requirements—not abuse. No public evidence reviewed shows that old keys were retained, Operators colluded, a conflicting signature was made, available datasets were combined in practice, sanctions logic was wired into the SSP or wallet gate, or that gate was used against a production wallet. The retained-key conclusion requires matching historical keys and the published configuration, which is not a live-server attestation. Privacy mode can suppress covered public reads, integrators can change the default services, and a user who already holds complete current recovery state and external fee funds may still exit without Operator cooperation.

10
key findings
50
findings examined
170
source links

Complete public record

All findings

The full collection covers source code, product behavior, contracts, public claims, exit mechanics, and the limits of what those materials can establish.

Showing all findings

Metadata, policy, and Operator trust

Spark privacy, refusal, and retained-key safety

Protocol code, published configuration, provider interfaces, live public observations, and trust assumptions. The findings distinguish visibility and cryptographic capability from unproved claims about data use, key retention, collusion, or private compliance wiring.

Privacy, control, and safety

The referenced server logic for Spark’s default Lightspark SSP is not publicly accessible

Spark's public repository directs local SSP work to a separate Lightspark Sparkcore path that was not publicly accessible when checked. The public repository exposes the SSP schema, clients, and flow documents, but not the referenced Python handlers or full server-side decision logic. [10 sources]

Pinned source code · Referenced non-public implementation · Blog or announcementRead the analysis

Privacy, control, and safety

Retained Lightspark and Flashnet keys could sign a conflicting spend of a Lightspark-funded Lightning leaf

In Spark's reference inbound-Lightning flow, the SSP is the former owner of the leaf. Under the published two-of-three configuration, retained matching keys from the Lightspark SSP, Lightspark Operator, and Flashnet Operator would be sufficient to sign a fresh conflicting spend; no evidence shows retention or collusion. [9 sources]

Pinned source code · Official documentation · Blog or announcementRead the analysis

Recovery requirements and wallet support

Unilateral-exit readiness and practical custody

SDK and wallet surfaces, state prerequisites, the published Blink mainnet case, time, and economics. These materials distinguish a protocol primitive from a completed consumer recovery product.

Unilateral exit

No complete in-app operatorless exit was found in eight reviewed consumer-wallet products

The reviewed snapshots and public interfaces for Blink, Primal, Cake, Blitz, Radar, Club Orange, Wallet of Satoshi, and Bringin exposed no complete in-app sequence for preserving current exit state, supplying CPFP funds, ordered broadcasting, durable resume, timelock handling, and final sweeping. Closed-source findings are limited to public claims and observed interfaces. [11 sources]

Repository record · Web source · Blog or announcementRead the analysis

Unilateral exit

Spark’s FAQ reduces exit to a pre-signed broadcast; its beta manual documents a multi-stage expert procedure

Spark's FAQ says a user can exit at any time by broadcasting a pre-signed transaction. Its dedicated beta manual separately requires Bitcoin Core v29, external L1 UTXOs, economic leaf selection, exact package ordering, mainnet signing and timelock handling, and warns that the wallet is unusable until completion. [4 sources]

Official documentation · Pinned source codeRead the analysis

Unilateral exit

Across Primal, Radar, Wallet of Satoshi, and Bringin, control claims were not matched by a demonstrated unilateral-exit path

Across Primal, Radar, Wallet of Satoshi, and Bringin, public control or recovery claims were not matched in the reviewed surfaces by a demonstrated complete user-operated exit. Closed-source findings are limited to published claims, instructions, and observed interfaces rather than unseen implementation code. [18 sources]

Repository record · Pinned source code · Web sourceRead the analysis