spark.exposed

The exit

The current Blink app labels the wallet non-custodial while never starting the SDK's exit flows

Blink's current UI calls the account non-custodial, says only the user can access funds, and presents the seed as recovery. The same source says unilateral-exit conflicts belong to flows the app never starts, leaving outage availability operationally dependent on external services. 123

3 sourcesEvidence reviewed through August 24, 2026

What the evidence shows

Technical and product details

  1. Product claim

    Blink's current UI labels the account “Non-custodial,” says “Only you can access funds,” and presents the twelve-word phrase as the wallet recovery backup. 1

    Supporting material shown on this page

    Blink custody and recovery languagePinned source code · github.com · checked 2026-08-24
    Relevant lines from the pinned source · open raw file
    4162    modalDescription:
    4163      "Your Lightning address is permanently linked to this wallet. Back up your recovery phrase first, so you never lose access to your address and funds.",
    4164    backupNow: "Back up wallet",
    4165  },
    4166  NonCustodialInfoBulletin: {
    4167    title: "This is a non-custodial account",
    4168    body: "To learn more read our blog post",
  2. Implementation fact

    The same current source pins Breez 0.22.0 and says unilateral-exit state conflicts belong to “flows the app never starts.” No complete exit interface was found in the reviewed app source. 23

    Supporting material shown on this page

    Blink unstarted exit flowsPinned source code · github.com · checked 2026-08-24
    Relevant lines from the pinned source · open raw file
    33  [SdkErrorTags.StorageError]: SelfCustodialErrorCode.Generic,
    34  [SdkErrorTags.Signer]: SelfCustodialErrorCode.Generic,
    35  [SdkErrorTags.SparkError]: SelfCustodialErrorCode.Generic,
    36  /** Optimization / unilateral-exit state conflicts (0.22): flows the app never starts,
    37   *  so no user-facing refinement exists for them. */
    38  [SdkErrorTags.OptimizationAlreadyRunning]: SelfCustodialErrorCode.Generic,
    39  [SdkErrorTags.OptimizationCancelled]: SelfCustodialErrorCode.Generic,
    Blink Breez 0.22 dependencyPinned source code · github.com · checked 2026-08-24
    Relevant lines from the pinned source · open raw file
    61  "dependencies": {
    62    "@apollo/client": "^3.9.11",
    63    "@bitcoinerlab/secp256k1": "^1.1.1",
    64    "@blinkbitcoin/blink-client": "1.1.0",
    65    "@blinkbitcoin/react-native-geetest-module": "0.1.2",
    66    "@breeztech/breez-sdk-spark-react-native": "0.22.0",
    67    "@expo/react-native-action-sheet": "^4.0.1",
  3. Failure-case consequence

    During total operator refusal or outage, an ordinary Blink user with only the advertised app and seed cannot perform the independent exit the custody claim implies. 12

    Supporting material shown on this page

    Blink custody and recovery languagePinned source code · github.com · checked 2026-08-24
    Relevant lines from the pinned source · open raw file
    4162    modalDescription:
    4163      "Your Lightning address is permanently linked to this wallet. Back up your recovery phrase first, so you never lose access to your address and funds.",
    4164    backupNow: "Back up wallet",
    4165  },
    4166  NonCustodialInfoBulletin: {
    4167    title: "This is a non-custodial account",
    4168    body: "To learn more read our blog post",
    Blink unstarted exit flowsPinned source code · github.com · checked 2026-08-24
    Relevant lines from the pinned source · open raw file
    33  [SdkErrorTags.StorageError]: SelfCustodialErrorCode.Generic,
    34  [SdkErrorTags.Signer]: SelfCustodialErrorCode.Generic,
    35  [SdkErrorTags.SparkError]: SelfCustodialErrorCode.Generic,
    36  /** Optimization / unilateral-exit state conflicts (0.22): flows the app never starts,
    37   *  so no user-facing refinement exists for them. */
    38  [SdkErrorTags.OptimizationAlreadyRunning]: SelfCustodialErrorCode.Generic,
    39  [SdkErrorTags.OptimizationCancelled]: SelfCustodialErrorCode.Generic,
  4. Custody conclusion

    The app may preserve user signing authority, but it does not give the mobile user independent availability or recovery. In that failure case, control is operationally custodial: access remains contingent on services the user does not control. 12

    Supporting material shown on this page

    Blink custody and recovery languagePinned source code · github.com · checked 2026-08-24
    Relevant lines from the pinned source · open raw file
    4162    modalDescription:
    4163      "Your Lightning address is permanently linked to this wallet. Back up your recovery phrase first, so you never lose access to your address and funds.",
    4164    backupNow: "Back up wallet",
    4165  },
    4166  NonCustodialInfoBulletin: {
    4167    title: "This is a non-custodial account",
    4168    body: "To learn more read our blog post",
    Blink unstarted exit flowsPinned source code · github.com · checked 2026-08-24
    Relevant lines from the pinned source · open raw file
    33  [SdkErrorTags.StorageError]: SelfCustodialErrorCode.Generic,
    34  [SdkErrorTags.Signer]: SelfCustodialErrorCode.Generic,
    35  [SdkErrorTags.SparkError]: SelfCustodialErrorCode.Generic,
    36  /** Optimization / unilateral-exit state conflicts (0.22): flows the app never starts,
    37   *  so no user-facing refinement exists for them. */
    38  [SdkErrorTags.OptimizationAlreadyRunning]: SelfCustodialErrorCode.Generic,
    39  [SdkErrorTags.OptimizationCancelled]: SelfCustodialErrorCode.Generic,

Scope control

What this does not establish

  • This is a technical product assessment, not a legal custody classification. It does not claim Blink or the Operators normally possess the user's signing key, and it can change if Blink ships the complete workflow. 12

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

Blink custody and recovery language

Pinned source code · github.com · Pinned or archival · checked 2026-08-24

Open original source
2

Blink unstarted exit flows

Pinned source code · github.com · Pinned or archival · checked 2026-08-24

Open original source
3

Blink Breez 0.22 dependency

Pinned source code · github.com · Pinned or archival · checked 2026-08-24

Open original source

How sources, absence findings, and limitations were evaluated