Solana · non-custodial

More secure than
your Ledger.

Your Ledger stops your keys from being stolen. It does nothing to stop you approving a transaction that empties your wallet. That is how almost everyone actually loses money.

Vault signs nothing until you approve the exact transaction. Two factors, an exact amount, ninety seconds. Then the permission is gone.

Keys in AWS Nitro enclavesPolicy enforced in hardwareYou hold the only root credentials
enclave · signing request
fromjupiter-airdrop-claim[.]net
01SystemProgram.transfer → DrA1nEr9…lZ2x 142.831 SOL
02TokenProgram.transfer → DrA1nEr9…lZ2x 18,400 USDC
03TokenProgram.transfer → DrA1nEr9…lZ2x 2 NFT
SystemProgram.assign — wallet ownership reassignmentTokenProgram.setAuthority — AccountOwnerTokenProgram.approve — delegate grantadvanceNonceAccount — non-expiring signature6× bundled transfer — drain patterncloseAccount — non-self destinationAddress lookup table — resolved destination hiddenUnknown program — no matching approvalSystemProgram.assign — wallet ownership reassignmentTokenProgram.setAuthority — AccountOwnerTokenProgram.approve — delegate grantadvanceNonceAccount — non-expiring signature6× bundled transfer — drain patterncloseAccount — non-self destinationAddress lookup table — resolved destination hiddenUnknown program — no matching approval

the problem

Your Ledger is blind on Solana.

This is not our claim. It is in Ledger's own developer documentation. Clear signing on Solana covers a single transfer and a couple of account-creation combos. Anything else returns device error 6808 and falls back to blind signing.

What a Ledger shows you

swap 40 SOL on jupiter

Message hash
0x7f3a2c9e18b4d6f0a5c8e2b7d94f1a6c3e8b0d5f2a9c7e4b1d8f6a3c0e5b2d9f
Blind signing required

You are confirming something you cannot read. The device verifies that it is you. It has no opinion on what you are agreeing to.

What Vault shows you

approval · pinned

destinationLedger Nano7bXgN4mK…mN1o
total12.500000 SOL
fee (3%)0.375000 SOL
recipient gets12.125000 SOL
valid for90 seconds

The enclave holds these exact numbers. Anything that does not match them, byte for byte, is refused. There is nothing to blind sign because the transaction was fixed before it existed.

Every DEX swap, every Jupiter route, and every Anchor program call on a hardware wallet is a blind sign.

Ledger docs

where the money actually goes

Almost nobody loses their keys. They lose a signature.

The attack that drains people is not key theft. It is being persuaded to authorise something yourself, on a device that cannot tell you what it is.

$0M

lost on Solana in the first half of 2026

up from roughly $127M across all of 2025

Blockaid
0%

of it from compromised keys and signing infrastructure

not smart contract bugs

Blockaid H1 2026
0.0%

of active wallet users hit a drain attempt

transfer farming was 75% of detected threats

Backpack
0

Solana wallets personally compromised in 2025

the largest absolute count of any major chain

Chainalysis

In April 2026, Drift Protocol lost $270 million. Not a contract bug. Two of five multisig signers were socially engineered into pre-signing transactions bound to durable nonces, executed weeks later. As the post-mortem put it: “the decisive authorisation did not occur at execution time, but at the earlier signing stage.”

Every one of those signers could have been holding a hardware wallet. It would have changed nothing, because the key was never the target.

BlockSec incident analysis

how it works

A permission that expires while you watch.

Vault has no standing authority. Between approvals it can do exactly nothing, which is what makes a stolen session, a fake site, or a compromised backend worth nothing on its own.

You name the exact transaction

Destination and amount, typed by you on this panel. Nothing is inferred, nothing is remembered from last time.

Two factors sign the permission

Your passkey and a second credential. The passkey is bound to this domain by the browser, so a lookalike site cannot invoke it. The code arrives by email carrying the destination and amount, so you can check the panel against something the panel does not control.

The permission dies on its own

An exact approval is pinned to one Solana blockhash, so it stops being valid in roughly ninety seconds whether or not anything else happens. There is no standing permission left behind to abuse.

a live permit

EXACTExpired

Hardware wallet top-up

Ledger Nano
Total leaving vault12.5000 SOL
Service fee (3%)0.3750 SOL
Recipient receives12.1250 SOL
policy idpol_8f3a2c
solana.tx.recent_blockhash == 'EkSnNWid2cvwEVnVx9aBqawnmiCNiDgp3gUdkDPTKN1N' && solana.tx.instructions.count() == 3 && solana.tx.address_table_lookups.count() == 0 && solana.tx.transfers.all(t, (t.to == '7bXgN4mKpQvR2sT8uY1wZ3aB5cD6eF7gH8iJ9kL0mN1o' && t.amount == 12125000000) || (t.to == 'FEEwa11etVaU1t9K3nqRp7sZq2xW8yG4hJ5kL6mN7oP8' && t.amount == 375000000))
Blockhash pinned

This one is real in every respect except that it is not attached to a wallet. Watch the ring: when it reaches zero the permission stops existing, with no action from us and none from you.

the verifier

Don't trust our website.
Verify it.

We ship an open-source verifier you run yourself. It holds a read-only credential that you generate, and it talks straight to the enclave. Not to us.

It prints the exact policy the enclave is holding, decodes the pending transaction locally, and flags any change to your credentials. If this website ever showed you something different, you would know in one command.

vault-verify · reads api.turnkey.com directly
who_am_i
sub-org b4c2f8a1 · verifier (read-only)
list_policies
6 policies · conditions shown verbatim
list_activities
1 pending · decoded locally
list_users
3 root credentials · no drift
✓ panel matches enclave

second channel

Every approval, confirmed on Telegram.

Email is the first channel. Telegram is the second, deliberately run on infrastructure that has nothing to do with our mail provider. Every approval, every signature, and every refusal lands in your chat the moment it happens.

It also tells us when a message did not arrive, which email never does. A confirmation that goes quiet is itself a signal.

  • Instant delivery, no rate limits that matter
  • Destination and exact amount in every message
  • Refusals pushed too, not just approvals
  • Link once with a tap, unlink any time
Vault Alerts
bot · online
Approval created
12.500000 SOL total
Fee 0.375000 · recipient gets 12.125000
To 7bXgN4mK…mN1o (Ledger Nano)
Expires in 90s
14:02
Signed
Confirmed in 1 slot
5Kd8fJ2n…mP0qT
14:02
Refused
Attempt to move 142.831 SOL
To DrA1nEr9…lZ2x (unknown)
No approval matched. Nothing left the vault.
09:41

A wallet that can refuse
is worth more than one
that cannot.

Set it up once. After that, nothing moves unless you say so, in exact numbers, with two factors, inside ninety seconds.