SOLSTACKBlog
← All guides

Security / Trust

What "Non-Custodial" Actually Means — and How to Verify a dApp Isn't Lying About It

A precise definition of non-custodial, the specific technical claims behind the marketing term, and the concrete checks you can run to verify them yourself instead of taking an app's word for it.

2026-10-06·6 min read·Verified against mainnet-beta

"Non-custodial" is one of the most used, and least precisely understood, terms in crypto. Every app claims it. Not every app that claims it is actually structured that way. Here's what the term technically means, and how to check it yourself rather than trust the label.

The precise definition

An application is non-custodial if it never has the ability to move your funds without a signature you personally approve, at the moment of that specific action. This is a narrower and more specific claim than "you keep your own keys," though that's part of it. The full requirement:

  1. The app never holds your private key. It can build a transaction, but it cannot sign one — signing happens in your wallet software, using a key that never leaves your device (or hardware wallet).
  2. The app cannot pre-authorize future actions on its own. Every fund movement requires a fresh signature for that specific transaction — an app can't sign something once and then move funds repeatedly later without you.
  3. You can see what you're signing before you approve it. This one is implied but essential — a signature you can't meaningfully evaluate isn't really informed consent, even if it's technically your key doing the signing.

An app that holds a deposit balance internally and lets you withdraw later — even if it never explicitly asks you to "hand over" custody — is custodial in the sense that matters: it's holding funds you don't control the private key for, in the interim.

Where the term gets stretched

A few patterns that get marketed as "non-custodial" but deserve scrutiny:

  • A "smart wallet" or session-key system that pre-authorizes a range of future actions with a single signature — technically your key approved it, but you're not reviewing each individual action anymore. This isn't necessarily bad, but it's a meaningfully different trust model than signing every transaction individually, and worth understanding before you grant it.
  • A staking or lending protocol where deposited funds sit in a program-controlled pool — genuinely non-custodial in the sense that no individual or company can unilaterally take the funds, but the smart contract itself is now something you're trusting, which is a different (and not obviously lesser) risk than trusting a person.
  • An approval you granted once, that keeps working. An approve instruction (see how wallet-drainer contracts work) that you signed once can be used repeatedly afterward up to its limit — a legitimate app using this pattern is still non-custodial by the strict definition, but it's worth knowing an old approval you forgot about is still live.

How to actually verify it, not just trust the claim

Read what your wallet shows before signing, every time. A genuinely non-custodial app has nothing to hide in that screen — the transaction it built is the entire story. If a site's UI claims one thing and the wallet's transaction summary suggests another, believe the wallet.

Check whether the app can act without you. A useful test: does the workflow require a fresh wallet popup for every fund-affecting action, or did you approve something once that now lets the app (or a program it controls) act repeatedly? The latter isn't automatically a red flag, but it's a different guarantee than per-action signing.

Look for an open-source or otherwise auditable transaction-building layer, if that matters to you — a non-custodial claim is much easier to trust when the actual code constructing transactions can be read, rather than taken on faith from a closed frontend.

Why this matters practically

The value of non-custodial design isn't abstract — it's that a compromised website, a malicious update, or a dishonest team behind an app cannot move your funds without your specific, informed signature on that specific action. That guarantee only holds if the three conditions above are actually true, which is why it's worth verifying rather than taking the label at face value.

Every Solstack action is built for you to review and sign in your own wallet — nothing is pre-authorized, and read-only tools never request a signature at all. Full breakdown of the model in the non-custodial docs, and Sign & Verify is a useful way to see exactly what "your key, your signature" looks like for something as simple as proving wallet ownership.