Arm
One transaction. Your tokens do not go anywhere: the squirrel just starts watching them.
Stash is a dead man's switch for Solana wallets. Check in now and then. If you go quiet for long enough, your tokens go to the people you chose. They stay in your own wallet until then, and nobody holds your keys.
One transaction. Your tokens do not go anywhere: the squirrel just starts watching them.
A tiny transaction to yourself. The clock restarts from zero.
Winter comes. The wallet still works as usual, and nobody can touch what is in it.
The interval ran out. Still nothing moves, and a single check-in would undo it.
Anyone can send one call. The heirs take their shares: no keeper, no company, no permission.
This is the real rule engine, the one the program is specified to follow, running in your browser. Move the slider to change how long the owner has been silent.
One piece of paper, one point of failure. Nobody knows it exists, or everybody does. Either way it is not a plan.
Now someone else can hold your keys, or your instructions, and you have to trust them for years.
Everything has to leave your wallet and sit in a program. You cannot use it like before, and a bug in it is a bug in everything you moved.

On Solana a token account can name a delegate: someone allowed to move a set amount, and only that. Stash is that delegate, and it is specified to move nothing until you have been silent for the time you chose. Until then you sign with the same key, spend the same way, and nothing was deposited anywhere. SOL itself cannot be delegated, so it has its own small vault you can empty at any time.
One transaction creates your switch account with your heirs, their shares and your two timers, and approves the Stash authority as a delegate on the token accounts you choose.
Every so often, sign a tiny transaction that restarts the clock. A wallet app, a script or the planned CLI can all send it.
If you stay silent through the interval and the grace period, the switch opens. Anyone can then send distribute and the program moves the tokens to each heir. No keeper, no company, no permission.
You checked in within the interval. Nothing can move. The wallet works as usual.
The interval ran out. Nothing can move yet. One check-in puts everything back to active.
Anyone can send distribute. The heirs get their shares. If you come back before it is called, a check-in still closes it.
Solana's token program lets an owner approve a delegate on a token account: it can move up to an amount you set, and nothing else. Stash uses that, with a program-derived authority as the delegate.
owner: you delegate: none amount: 5,000 USDC
owner: you // still you delegate: Stash authority // a PDA, no private key allowed: up to the approved amount amount: 5,000 USDC // never left
arm(interval, grace, heirs[]) // creates your switch account (a PDA of your wallet), // stores heirs, shares and timers, starts the clock check_in() // owner only: last_check_in = now disarm() // owner only: closes the switch account, refunds its rent deposit_sol(lamports) / withdraw_sol(lamports) // the optional SOL vault: owner only, any time distribute() // anyone, only after interval + grace: // splits each covered token account and the SOL vault // between the heirs, last heir takes the remainder
This is the planned flow. The rules behind it are real and tested; the program that will enforce them on Solana is not deployed yet, so nothing here has been sent to a cluster.
One transaction: create the switch account (rent of about 0.0037 SOL, refunded when you close it), store the plan, approve the delegate on each token account you want covered.
A transaction that only you can sign and that costs a few thousandths of a cent in fees. It sets last_check_in to the cluster's clock.
After interval + grace, anyone sends distribute with the token accounts and the heirs' token accounts. Large wallets need a few transactions because Solana limits their size.
Your family should not need to guess a seed phrase to inherit what you built.
A treasury wallet that keeps working if the one person who controls it disappears.
Out of reach for months? Set a long interval and a trusted heir as a safety net.
You do not plan to need it. That is the point of a switch.
No. Arming creates a small switch account and approves a delegate on the token accounts you pick. The tokens stay where they are and you keep spending them as usual. Only SOL in the optional vault is held by the program.
The check-in works and the clock restarts. Grace is exactly for this: the owner can still come back until the moment the switch opens. Even after it opens, a check-in closes it again as long as nobody has called distribute yet.
Anyone. The heirs, a friend, a bot. distribute is open to every address and does nothing before the switch opens, so there is no company or keeper you depend on. The playground shows what it will pay.
The design says no. The program has no admin function and no upgrade authority. The delegate only acts inside distribute, which waits for your silence, and you can revoke it yourself at any time. That is the specification: the program itself is not built yet.
A Solana wallet cannot run contract code the way an EIP-7702 account can. What Solana offers instead is the token delegate, which is exactly the right size for this job: it can move tokens up to a set amount and nothing more.
No. The rules are written and tested in JavaScript and you can play with them in the playground. The Solana program is specified in the docs but not built, deployed or audited. This page says so at the top and will tell you when that changes.
Try the whole thing in your browser. No wallet, no signing, nothing to install.