spark.exposed

Plain-English editorial summary

Review of Spark Trust Model and Risks

Spark wallets present themselves as non-custodial, trust-minimized, and privacy-oriented. They promote themselves as easier alternatives to fully self-custodial Lightning, Liquid, and Ark wallets. They use the premise of “unilateral exit” to justify the tradeoffs of this centralized service. However, as this research demonstrates, the “unilateral exit” is in effect a farce—and the tradeoffs are indeed very severe. We conclude that, for all intents and purposes, Spark is indistinguishable from a traditional custodial wallet arrangement.

The protocol contains a technically real exit path, but using it requires current recovery state, external fee funds, specialized tooling, ordered package broadcasts, and extended monitoring. The four research topics separate these documented mechanics from the editorial judgment summarized here.

Read editorial note

Editorial disclaimer: This research is presented as an unbiased and factual review of public evidence. This homepage summary and the expanded note below—and only these sections—state an opinionated conclusion about Spark. The remainder of the publication reports evidence, methodology, limitations, and bounded conclusions without editorial opinion.

The case in plain English

Spark asks users to trust a centralized service while calling the result non-custodial

Spark may be “non-custodial” under a narrow technical definition: the wallet holds key material and the protocol contains a path that can eventually move coins without asking an Operator to sign again. That description leaves out nearly everything that determines whether an ordinary person actually controls their money.

Spark is not private in the ordinary meaning of the word

A normal Spark wallet identifies itself to every Operator with the same durable wallet identity. The reviewed transfer paths give every Operator the participants and transaction records, not merely an unreadable fragment of a signature. In the reviewed Lightning flow, every Operator receives the full invoice, amount, direction, payment hash, and affected wallet identities. The default hosted service can attach that same identity to Lightning requests and exact Bitcoin withdrawal destinations.

Changing apps or rotating a deposit address does not create a new identity. Public participation can expose complete transfers, and the reviewed public interfaces can reveal exact holdings and raw Bitcoin transaction material for wallets in public mode. Spark may hide activity from casual blockchain observers, but it replaces public-chain visibility with visibility inside a small service network. That is a different privacy model—not privacy from the parties operating the system. Review the privacy evidence.

Spark is centralized where users actually feel it

The published design names three Operators, but the ordinary software path does not behave like a neutral market of independent providers. The reviewed SDKs fix Lightspark's SO0 as the default coordinator without automatic failover, and both expose the same Lightspark hosted service by default. Integrators can change those defaults, but users of finished wallet products generally receive the configuration chosen for them.

The signing threshold is two of three. Under this review's stated threat model, Lightspark and Flashnet coordination is treated as a core assumption, so those two roles form an effective quorum without Breez. That is not proof that they have colluded or share keys. It is the security assumption users must evaluate: the advertised three-party structure offers little comfort if two closely connected roles can act together. Review the quorum analysis.

Spark can censor a wallet

The Operator code contains a wallet-specific refusal control—a kill switch keyed to the wallet's durable identity. Relevant state-changing operations check it, including transfers, claims, cooperative exits, deposit operations, renewal, and privileged service paths. The control can preserve read access while refusing the actions needed to move money, and one reviewed provider can update it live and selectively.

The public evidence does not show that every Operator has enabled this control in production or that it has been used against a particular customer. It does show that selective censorship is a designed and tested capability, not an outside speculation. Concentration at the default coordinator and hosted Lightning service creates additional places where ordinary payments can be delayed or refused even before a network-wide block is considered. Review the censorship evidence.

As a consumer safeguard, unilateral exit is a farce

The marketing version sounds simple: if Spark disappears, broadcast a pre-signed transaction and recover the bitcoin. The documented procedure is nothing like that. A mnemonic does not contain the wallet's current leaves or their transaction ancestry. The wallet must preserve a fresh, complete exit-state backup while Operators are still available and update it whenever the wallet changes. If the outage arrives first, the seed alone cannot reconstruct what needs to be broadcast.

Even with that state, the user needs separate on-chain bitcoin to pay fees, software that can build and sign parent-and-child transaction packages, a package-relay-capable Bitcoin service, exact root-to-leaf ordering, confirmation monitoring, retry and resume logic, relative-timelock calculations, and later sweep transactions to a separately verified address. The operation can span days or weeks and must survive app termination, provider failures, fee changes, stale transactions, and chain reorganizations.

Our sanitized mainnet case began with approximately 100,000 sats. Ordinary wallet use produced more than 30 leaves and a full plan exceeding 900 Bitcoin transactions. Economic triage meant deliberately abandoning part of the balance; even the selected recovery needed roughly three dozen ordered packages, separate fee funding, long waits, and final sweeps. After more than two dozen packages had confirmed, the coins still had not reached a destination. Read the complete case study.

Software could automate these steps, including software running on a phone. But none of the eleven reviewed consumer-wallet surfaces provided the complete flow. A hypothetical future recovery system is not a recovery feature available to today's user. Calling the exit “available at any time” while leaving the user to build an incident-response system is, in practical consumer terms, a farce. Review the wallet implementations.

For all practical purposes, the user experiences custody

There is a real technical distinction between holding every signing key and depending on a threshold protocol. That distinction does not settle the consumer question. Control over money means being able to access it, move it, and recover it when the normal service refuses or disappears. If the app cannot perform the independent recovery, if the seed cannot reconstruct the required state, and if spending normally depends on a small set of identifiable operators and hosted services, then the user does not possess practical, independent control.

That is why “non-custodial” may be technically defensible yet deeply doubtful in context. It describes the key arrangement while omitting the operational reality. For the ordinary mobile user—not a protocol engineer with a current recovery bundle, external fee coins, custom tooling, a reliable Bitcoin package relay, and days to supervise the process—Spark behaves like a custodial wallet: private operators can observe activity, normal use depends on centralized infrastructure, transactions can be refused, and the advertised escape hatch is not actually delivered by the product.

The bottom line: Spark moves custody risk around rather than making it disappear. Its marketing emphasizes the cryptographic possibility of eventual escape. The evidence shows that privacy, availability, censorship resistance, and usable recovery remain concentrated in systems the user does not control.

Mainnet unilateral-exit case study

What it took to attempt to exit approximately 100,000 sats

A sanitized real-world recovery record shows how ordinary wallet history expanded into more than 30 leaves and a full plan exceeding 900 Bitcoin transactions. The case study documents the required state, external fee funding, package ordering, economic triage, confirmation waits, and unfinished final sweeps.

Read case study

Published mainnet defaults

Who runs Spark

The roles an ordinary wallet is configured to use, according to the reviewed SDK defaults.

RoleEntityReviewed default
Signing Operator 0 and coordinatorLightsparkSO0 is fixed as coordinator without automatic failover
Signing Operator 1FlashnetOne member of the published two-of-three threshold
Signing Operator 2BreezOne member of the published two-of-three threshold
Default hosted Lightning serviceLightsparkBoth reviewed SDKs expose the same hosted service by default

Source-backed protocol review

Evidence and research index

This publication examines Spark's published defaults, Operator code, hosted-service paths, metadata flows, and documented exit procedure. Ten principal claims summarize the case; 61 supporting records preserve the complete evidence and limits.

10
principal claims
61
evidence records
202
source links

Research navigation

Four views of the trust model

Each topic is organized into principal evidence groups. Direct protocol behavior remains separate from conditional analysis and adjacent ecosystem context.

Operators, hosted services, and refusal controls

Centralization

How the published Operator set, coordinator, hosted SSP, wallet gate, and adjacent compliance systems shape default-path control.

5 evidence groups · 19 supporting records

Open topic

Identity, metadata, and public visibility

Privacy

What Operators, the default SSP, public interfaces, and counterparties can learn from the reviewed transfer and payment paths.

3 evidence groups · 13 supporting records

Open topic

Recovery requirements and wallet support

The exit

The documented operatorless-exit procedure, its state and fee prerequisites, and what eleven reviewed consumer-wallet surfaces exposed.

5 evidence groups · 25 supporting records

Open topic

Hosted routing, settlement order, and recovery

Lightning swaps

How the reviewed default SSP paths handle invoices, send ordering, receive validation, and conditional retained-key risk.

3 evidence groups · 4 supporting records

Open topic

Complete evidence index

All 61 supporting records

Use this index to inspect individual claims and sources. The topic pages provide the more persuasive grouped reading order.

Showing all records

Operators, hosted services, and refusal controls

Centralization

How the published Operator set, coordinator, hosted SSP, wallet gate, and adjacent compliance systems shape default-path control. Open the topic overview.

Centralization

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

Identity, metadata, and public visibility

Privacy

What Operators, the default SSP, public interfaces, and counterparties can learn from the reviewed transfer and payment paths. Open the topic overview.

Recovery requirements and wallet support

The exit

The documented operatorless-exit procedure, its state and fee prerequisites, and what eleven reviewed consumer-wallet surfaces exposed. Open the topic overview.

The 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

The exit

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

The reviewed snapshots and public interfaces for Blink, Primal, Cake, Blitz, Radar, Flash, Agicash, Layerz, 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. [14 sources]

Repository record · Web source · Blog or announcementRead the analysis

The 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

Hosted routing, settlement order, and recovery

Lightning swaps

How the reviewed default SSP paths handle invoices, send ordering, receive validation, and conditional retained-key risk. Open the topic overview.

Lightning swaps

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