SolstackBlog
← All guides

Security / Trust

What "Non-Custodial" Actually Means and How to Check a dApp's Claim

What non-custodial means precisely, the technical claims behind the marketing term, and the checks you can run instead of taking an app's word for it.

2026-10-06·6 min read·Verified against mainnet-beta
What "Non-Custodial" Actually Means and How to Check a dApp's Claim

"Non-custodial" is one of the most common terms in crypto, and one of the least understood. Nearly every app uses it, and not every app that uses it works that way. This post covers what the term means in technical terms and how to check it yourself instead of trusting the label. Solana's staying-safe guide recommends the same habit for every signature request.

What it means

An app is non-custodial if it can never move your funds without a signature you approve, at the time of that specific action. That's narrower than "you keep your own keys", though keeping your keys is part of it. In full, it means three things:

  1. The app never holds your private key. It can build a transaction but can't sign it. Signing happens in your wallet, with a key that never leaves your device or hardware wallet.
  2. The app can't approve future actions by itself. Every movement of funds needs a new signature for that transaction. An app can't get one signature from you and then keep moving funds later.
  3. You can see what you're signing before you approve it. If you can't make sense of what you're signing, you haven't really agreed to it, even though your key did the signing.

An app that holds a balance for you and lets you withdraw later is custodial in the way that matters, even if it never asks you to hand anything over. While the funds sit there, you don't control the key that holds them.

Where the term gets stretched

Some setups are sold as non-custodial but deserve a closer look:

  • Smart wallets and session keys approve a range of future actions with one signature. Your key approved it, but you no longer review each action. That isn't necessarily bad, but it's a different trust model from signing every transaction, and you should understand it before you grant it.
  • Staking and lending protocols keep deposits in a program-controlled pool. No person or company can take the funds on their own, which is non-custodial in a real sense. You are now trusting the smart contract, though, and that's a different risk from trusting a person, and not obviously a smaller one.
  • Approvals you granted once and that keep working. An approve instruction you signed once (see how wallet-drainer contracts work) can be used again and again up to its limit. An honest app using it still meets the strict definition, but an old approval you've forgotten about is still live.

How to check it

Read what your wallet shows before you sign, every time. A non-custodial app has nothing to hide on that screen, because the transaction it built is the whole story. If the site says one thing and the wallet's summary says another, believe the wallet.

Check whether the app can act without you. Does every action that touches your funds open a new wallet prompt? Or did you approve something once that lets the app, or a program it controls, act again and again? The second isn't automatically a red flag, but it's a weaker guarantee than signing each action.

Look for transaction-building code you can read, if that matters to you. A non-custodial claim is much easier to trust when the code that builds the transactions is open and you don't have to take a closed frontend on faith.

Why it matters

The point of non-custodial design is practical. A hacked website, a malicious update or a dishonest team can't move your funds without your signature on that action, and you knew what you were signing. That only holds if all three conditions above are true, which is why it's worth checking them yourself.

On Solstack, nearly every action is built for you to review and sign in your own wallet, and read-only tools never ask for a signature. Multisender and Airdrop work differently. Your one signature approves a key made for that send, and Solstack's server uses it to send every batch. By the definition above that's a pre-authorization, so those two tools aren't non-custodial while a send runs. The approval covers exactly the send's total and nothing more, and the leftover SOL comes back when the send ends. The Grid Trading Bot and DLMM Liquidity Bot go further. They trade from a wallet of their own, which you fund once, and Solstack's server holds its key until you stop the bot, at which point everything it holds comes back to you. They are custodial while they run. How signing works explains each case, and Sign & Verify shows what "your key, your signature" looks like for something as simple as proving you own a wallet.