Review of Spark's trust model

Privacy, control, and safety

The referenced Lightspark SSP server implementation 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. 123456789

10 sourcesEvidence reviewed through July 14, 2026

What the evidence shows

Technical and product details

  1. Documented behavior

    Spark's public README directs engineers testing local SSP changes to run sparkcore.server from Lightspark's webdev project and links to a server-side Sparkcore test. The referenced repository URL returned 404 without authentication when rechecked on 2026-07-13. 12

    Supporting material shown on this page

    Sparkcore SSP instructionsPinned source code · github.com · checked 2026-07-14
    Relevant lines from the pinned source · open raw file
    254## Testing against local SSP changes
    255
    256To run the server with local changes go to your sparkcore folder in the lightspark webdev project:
    257
    258```
    259export QUART_APP=sparkcore.server
    260export QUART_ENV=development
  2. Documented behavior

    Public flow documentation expressly allows the SSP to reject a previously quoted static-deposit claim, while public wallet code routes default Lightning and cooperative-exit requests through the configured SSP. 456789

    Supporting material shown on this page

    documented SSP rejection pointPinned source code · github.com · checked 2026-07-14
    Relevant lines from the pinned source · open raw file
    29    Alice->>SSP: quote for UTXO
    30    SSP-->>Alice: quote<id, utxo, credit_amount, signed: ssp_id_key>
    31    Note right of Alice: utxo is <transaction_id, output_index, network>
    32
    33    Alice->>SSP: ClaimStaticDeposit <utxo, credit_amount_sats, deposit_secret_key, user_signature>
    34    Note right of SSP: SSP does not commit to a quote and can reject any previously provided quotes
    35    SSP->>SSP: create transfer to Alice and tweak the keys
    default Lightning SSP flowPinned source code · github.com · checked 2026-07-14
    Relevant lines from the pinned source · open raw file
    4222          // Advance local state — leaves are now locked on the SO
    4223          await this.leafManager.handleTransferEvent(swapResponse.transfer);
    4224
    4225          const sspResponse = await sspClient.requestLightningSend({
    4226            encodedInvoice: invoice,
    4227            amountSats: isZeroAmountInvoice ? amountSatsToSend! : undefined,
    default cooperative-exit flowPinned source code · github.com · checked 2026-07-14
    Relevant lines from the pinned source · open raw file
    5037          path: leaf.id,
    5038        },
    5039        newKeyDerivation: {
    5040          type: KeyDerivationType.RANDOM,
    5041        },
    5042        receiverIdentityPublicKey: sspPubKey,
    5043      }));
    Breez SSP configurationPinned source code · github.com · checked 2026-07-14
    Relevant lines from the pinned source · open raw file
    54            Network::Mainnet => Self {
    55                network,
    56                operator_pool: Self::default_operator_pool_config(network),
    57                reconnect_interval_seconds: 1,
    58                service_provider_config: Self::create_service_provider_config(
    59                    "https://api.lightspark.com",
    60                    "023e33e2920326f64ea31058d44777442d97d7d5cbfcf54e3060bc1695e5261c93",
    Breez Lightning SSP flowPinned source code · github.com · checked 2026-07-14
    Relevant lines from the pinned source · open raw file
    665            return Ok((to_pay_sat, Some(receiver_address)));
    666        }
    667
    668        let fee_estimate = self
    669            .ssp_client
    670            .get_lightning_send_fee_estimate(invoice, Some(to_pay_sat))
    671            .await?;
    Breez cooperative-exit SSP flowPinned source code · github.com · checked 2026-07-14
    Relevant lines from the pinned source · open raw file
    149        withdrawal_address: Address,
    150    ) -> Result<CoopExitFeeQuote, ServiceError> {
    151        let leaf_external_ids: Vec<String> =
    152            leaves.iter().map(|leaf| leaf.id.to_string()).collect();
    153
    154        self.ssp_client
    155            .get_coop_exit_fee_quote(leaf_external_ids, &withdrawal_address.to_string())

Interpretation

Why this matters for Spark's trust model

The default hosted Lightning and cooperative-exit path depends on policy decisions inside the one component outsiders cannot inspect. Neither public source review nor live schema introspection can exclude sanctions, Travel Rule, partner, or destination policy inside that component. 125689

This section states the trust-model consequence of the cited evidence. Conditional or inferred claims remain bounded by the next section.

Scope control

What this does not establish

  • Public inaccessibility does not establish why the implementation is private, what policies it contains, or that sanctions screening is deployed there. Lightspark's open-source statement concerns Spark and does not expressly promise an open-source SSP. 1310

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

Sparkcore SSP instructions

Pinned source code · github.com · Pinned or archival · checked 2026-07-14

Open original source
2

referenced non-public implementation

Referenced non-public implementation · github.com · Pinned or archival · checked 2026-07-14

Open original source
3

public SSP schema

Pinned source code · github.com · Pinned or archival · checked 2026-07-14

Open original source
4

documented SSP rejection point

Pinned source code · github.com · Pinned or archival · checked 2026-07-14

Open original source
5

default Lightning SSP flow

Pinned source code · github.com · Pinned or archival · checked 2026-07-14

Open original source
6

default cooperative-exit flow

Pinned source code · github.com · Pinned or archival · checked 2026-07-14

Open original source
7

Breez SSP configuration

Pinned source code · github.com · Pinned or archival · checked 2026-07-14

Open original source
8

Breez Lightning SSP flow

Pinned source code · github.com · Pinned or archival · checked 2026-07-14

Open original source
9

Breez cooperative-exit SSP flow

Pinned source code · github.com · Pinned or archival · checked 2026-07-14

Open original source
10

Lightspark's open-source statement

Blog or announcement · lightspark.com · Live source · checked 2026-07-14

Open original source

How sources, absence findings, and limitations were evaluated