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
What the evidence shows
Technical and product details
- Documented behavior
Spark's public README directs engineers testing local SSP changes to run
sparkcore.serverfrom Lightspark'swebdevproject and links to a server-side Sparkcore test. The referenced repository URL returned 404 without authentication when rechecked on 2026-07-13. 12Supporting 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=developmentreferenced non-public implementationReferenced non-public implementation · github.com · checked 2026-07-14 - 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 keysdefault 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
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.
Sparkcore SSP instructions
Pinned source code · github.com · Pinned or archival · checked 2026-07-14
referenced non-public implementation
Referenced non-public implementation · github.com · Pinned or archival · checked 2026-07-14
public SSP schema
Pinned source code · github.com · Pinned or archival · checked 2026-07-14
documented SSP rejection point
Pinned source code · github.com · Pinned or archival · checked 2026-07-14
default Lightning SSP flow
Pinned source code · github.com · Pinned or archival · checked 2026-07-14
default cooperative-exit flow
Pinned source code · github.com · Pinned or archival · checked 2026-07-14
Breez SSP configuration
Pinned source code · github.com · Pinned or archival · checked 2026-07-14
Breez Lightning SSP flow
Pinned source code · github.com · Pinned or archival · checked 2026-07-14
Breez cooperative-exit SSP flow
Pinned source code · github.com · Pinned or archival · checked 2026-07-14
Lightspark's open-source statement
Blog or announcement · lightspark.com · Live source · checked 2026-07-14
How sources, absence findings, and limitations were evaluated