Review of Spark's trust model

Unilateral-exit readiness

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. 23561011141618

18 sourcesEvidence reviewed through July 14, 2026

What the evidence shows

Technical and product details

  1. Primal

    Primal's pinned Android and iOS UI says users fully control bitcoin, have sole custody through the recovery phrase, and now hold the keys. The source-visible pinned application and UI code contained no unilateral-exit or recovery-bundle flow. 12345618

    Supporting material shown on this page

    Primal Android control claimPinned source code · github.com · checked 2026-07-14
    Relevant lines from the pinned source · open raw file
    1380    <string name="wallet_notice_upgrade_description_second">With one tap, we\'ll move your funds and full\ntransaction history to your new non-custodial\nwallet - so you fully control your bitcoin.\nQuestions? Check out our </string>
    1381    <string name="wallet_notice_upgrade_faqs">FAQs</string>
    Primal Android custody claimsPinned source code · github.com · checked 2026-07-14
    Relevant lines from the pinned source · open raw file
    1574    <string name="wallet_backup_disclaimer_part_one">Primal does not have access to the funds in your wallet. You have sole custody of your wallet via the recovery phrase. If you lose your recovery phrase, </string>
    1575    <string name="wallet_backup_disclaimer_part_two">Primal will not be able to restore your funds.</string>
    1576    <string name="wallet_backup_button_i_understand">I understand, backup wallet</string>
    1577    <string name="wallet_backup_button_cancel">Cancel, I\'ll do this later</string>
    1578    <string name="wallet_backup_seed_description_one">This is your wallet recovery phrase. To backup your wallet, simply write these words down in the correct order.</string>
    Primal iOSRepository record · github.com · checked 2026-07-14
    Primal iOS backup claimPinned source code · github.com · checked 2026-07-14
    Relevant lines from the pinned source · open raw file
    36            .font: UIFont.appFont(withSize: 18, weight: .bold),
    37            .foregroundColor: UIColor.foreground,
    38            .paragraphStyle: paragraphStyle,
    39            .underlineStyle: NSUnderlineStyle.single.rawValue
    40        ])
    41        secondText.append(.init(string: " Primal does not have access to the funds in your wallet. You have sole custody of your wallet via the recovery phrase. If you lose your recovery phrase, ", attributes: [
    42            .font: UIFont.appFont(withSize: 18, weight: .regular),
    Primal iOS confirmation claimPinned source code · github.com · checked 2026-07-14
    Relevant lines from the pinned source · open raw file
    24        let label = UILabel("Your wallet has been backed up. You now hold the keys to your bitcoin! Please confirm the three points below.", color: .foreground, font: .appFont(withSize: 18, weight: .regular), multiline: true)
    25        
    26        let checkViews = [
    27            BackupWalletCheckView(text: "My funds are not held by Primal"),
    28            BackupWalletCheckView(text: "If my device gets lost or stolen, the only way to recover my funds is via the wallet recovery phrase"),
    29            BackupWalletCheckView(text: "It is my sole responsibility to keep my recovery phrase safe")
    30        ]
  2. Radar

    Radar says it never holds the money and that no one can freeze or seize it but the user. Its recovery UI says the seed can restore the balance in Cake or another Spark wallet. Both pinned apps used Breez 0.18.0, and neither application's source-visible integration or UI contained the complete exit flow. 7891011121318

    Supporting material shown on this page

    Radar AndroidRepository record · github.com · checked 2026-07-14
    Radar iOSRepository record · github.com · checked 2026-07-14
    Radar control claimPinned source code · github.com · checked 2026-07-14
    Relevant lines from the pinned source · open raw file
    15Radar is built on Signal's trusted messaging network, so the people you already talk to come with you. No rebuilding your network. No new account necessary.
    16
    17### Private by default, yours by design
    18
    19• End-to-end encrypted — built on Signal's battle-tested protocol for encryption you can actually trust.  
    20• Self-custodial — your keys, your coins. Radar never holds your money; no one can freeze, seize, or lose it but you.  
    21• Instant Bitcoin payments over the Lightning Network, settled in seconds.  
    Radar recovery languagePinned source code · github.com · checked 2026-07-14
    Relevant lines from the pinned source · open raw file
    8332/* Title of confirmation alert when discarding recovery phrase. */
    8333"SETTINGS_PAYMENTS_PASSPHRASE_DISCARD_CONFIRMATION_TITLE" = "Continue Without Saving?";
    8334
    8335/* Explanation of the 'payments passphrase' in the 'view payments passphrase' settings. */
    8336"SETTINGS_PAYMENTS_PASSPHRASE_EXPLANATION" = "Your seed phrase isn't required to keep your funds safe — Radar handles recovery automatically. Saving it gives you extra peace of mind and lets you restore your balance in Cake Wallet or any other Spark-compatible wallet.";
    Radar iOS Breez versionPinned source code · github.com · checked 2026-07-14
    Relevant lines from the pinned source · open raw file
    5  "description": "Local wrapper around the upstream 0.18.0 tag. The upstream BreezSdkSpark.podspec is frozen at spec.version = 0.11.0-dev2 since the 0.11.0 tag, which forces CocoaPods to pull a mismatched FFI binary. This podspec depends on our locally vendored breez_sdk_sparkFFI = 0.18.0 instead. R
    6  "homepage": "https://breez.technology",
    7  "documentation_url": "https://sdk-doc-spark.breez.technology",
    8  "license": { "type": "MIT" },
    9  "authors": { "Breez": "contact@breez.technology" },
    10  "platforms": { "ios": "13.0" },
    11  "source": {
  3. Wallet of Satoshi

    Its disclosure says users retain full authority over private keys and describes unilateral exit as a permissionless alternative with longer processing and higher costs. Wallet of Satoshi publishes neither its mobile-app source nor a complete consumer unilateral-exit procedure. 1415

    Supporting material shown on this page

  4. Bringin

    Bringin says every v2 wallet ships with pre-signed exits and can leave Spark without Bringin's cooperation. Its mobile app is closed source, its public GitHub organization does not contain that app, and its launch material provides no operational exit procedure. 1617

    Supporting material shown on this page

Product-level detail

What was publicly verifiable for the four named products

The conclusions below are reproduced here so the reader does not need to open the separate implementation review. Each result remains limited to the named source snapshot, published binary, or public product surface.

Primal

Surface reviewed: public android and ios source

No source-visible recovery-bundle handling or complete operatorless package-broadcast, monitoring, refund, and sweep UI flow was found in either pinned application.

Capabilities that were present: seed backup and live-network wallet restore; ordinary Breez Spark wallet operations.

The result is bounded to the two pinned public repositories and does not test an unpublished build.

Radar

Surface reviewed: public android and ios source

Neither pinned app exposed current-exit-state export or the complete CPFP, ordered package, durable monitoring, timelock, refund, and sweep workflow.

Capabilities that were present: seed backup and live-network restoration in a Spark-compatible wallet; ordinary Breez Spark wallet operations.

The result is bounded to the two pinned public repositories.

Wallet of Satoshi

Surface reviewed: public documentation and source availability

No published consumer procedure was found for exporting current exit state and executing the complete operatorless workflow. Because the app is closed source, this is a public-verifiability and documented-product finding only.

Capabilities that were present: published description of unilateral exit as a permissionless alternative; seed-backup and ordinary wallet-restore guidance.

No source-code absence claim is made.

Bringin

Surface reviewed: public documentation and source availability

Bringin's public organization did not contain the mobile application, and the reviewed launch and product material supplied no operational procedure for the eight-stage workflow. This does not test private application code.

Capabilities that were present: first-party claim that each wallet ships with pre-signed exits and can leave without Bringin cooperation.

No source-code absence claim is made because Bringin does not publish the reviewed mobile-app source.

See versions, search method, artifact hashes, and full review limits.

Scope control

What this does not establish

  • These are dated claim-to-demonstrated-product comparisons. Seed restoration while Spark services remain available is distinct from outage recovery. Open-source absence findings are limited to the pinned commits and audit terms. Primal iOS pins an opaque compiled PrimalShared.xcframework, so that result is not a full transitive-binary audit. The Radar iOS archive likewise omits the Breez FFI binary and Pods submodule, so its result is limited to the source-visible integration and UI. Wallet of Satoshi and Bringin findings are limited to public claims, source availability, and published instructions. They do not prove that private or later implementations are impossible. 181416

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

Primal Android

Repository record · github.com · Pinned or archival · checked 2026-07-14

Open original source
2

Primal Android control claim

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

Open original source
3

Primal Android custody claims

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

Open original source
4

Primal iOS

Repository record · github.com · Pinned or archival · checked 2026-07-14

Open original source
5

Primal iOS backup claim

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

Open original source
6

Primal iOS confirmation claim

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

Open original source
7

Radar Android

Repository record · github.com · Pinned or archival · checked 2026-07-14

Open original source
8

Radar Android Breez version

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

Open original source
9

Radar iOS

Repository record · github.com · Pinned or archival · checked 2026-07-14

Open original source
10

Radar control claim

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

Open original source
11

Radar recovery language

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

Open original source
12

Radar iOS Breez version

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

Open original source
13

Radar App Store

Web source · apps.apple.com · Live source · checked 2026-07-14

Open original source
14

Wallet of Satoshi disclosure

Web source · walletofsatoshi.com · Live source · checked 2026-07-14

Open original source
15

Wallet of Satoshi Play listing

Web source · play.google.com · Live source · checked 2026-07-14

Open original source
16

Bringin v2 launch

Blog or announcement · bringin.app · Live source · checked 2026-07-14

Open original source
17

Bringin public GitHub organization

Repository record · github.com · Live source · checked 2026-07-14

Open original source
18

consumer-wallet exit audit manifest

Reproducible audit manifest · Review of Spark's trust model · Pinned or archival · checked 2026-07-14

Open original source

How sources, absence findings, and limitations were evaluated