Tools
Token Locker
Lock any SPL or Token-2022 token in a program-owned vault and release it on a schedule — all at once on a date, or gradually after a cliff — with unlocked tokens delivered to the recipient automatically.
Step by step
- Step 1Connect walletDevnet only while the program awaits a security review.
- Step 2Token, amount, recipient, scheduleYourself or another address; one unlock date, or a cliff and a vesting window with a release frequency. The unlock curve previews live.
- Step 3Review and sign onceTokens move into the vault; the recipient's token account is created at the same time.
- Step 4Delivered on scheduleSolstack's crank sends each unlock to the recipient; anyone can trigger it too. The lock closes itself when the last token is out.
What a lock is
A lock is a token account (the vault) whose only authority is a program-derived address the Token Locker program controls, plus a small account recording who it's for and on what schedule. The program only ever moves tokens out along that schedule — via a release instruction that anyone may send — so the recipient can't take them early, the creator can't take them back (unless the lock was created cancelable), and neither can Solstack. Every lock has its own public page you can share as proof; the Token Lock Verifier lists every active lock for a mint.
Two schedules
| All at once | Nothing until one date, everything on it. The plain time lock — for a founder allocation, a treasury, or LP tokens. A self lock's date can be pushed later (never earlier) while it's still locked. |
|---|---|
| Gradually after a cliff | Nothing until the cliff, optionally a first chunk on that day, then the rest in equal steps — daily, weekly, monthly, quarterly, or continuously every second — until the end date. The shape used for team, advisor and investor vesting. |
The exact rule the program follows: before the cliff, 0. From the cliff, the cliff amount plus a share of the remainder proportional to the time elapsed, rounded down to the last full period. From the end date, everything. Both the app and the program compute it the same way, so the preview you see is what the chain will do.
Automatic delivery
Because release is permissionless, delivery doesn't wait for the recipient. Solstack runs a crank every few minutes that scans the program for locks with unlocked, undelivered tokens and sends them, paying the network fee itself; stepped vests are delivered one step at a time, continuous vests in chunks of at least 1% of the total, and every lock in full the moment its schedule ends. The lock page also has a Deliver now button that asks the crank to run immediately, and Claim, which does the same from your own wallet. The final delivery closes the vault and the lock and refunds their rent to the creator.
Options you choose at creation
| Cancelable | The creator can end the lock early. Whatever has already unlocked still goes to the recipient; the rest returns to the creator. Off by default — leave it off for a lock nobody can undo. |
|---|---|
| Transferable | The recipient can hand the remaining schedule to another address, for example after changing wallets. |
| Name | Up to 32 bytes, stored on-chain and shown on the lock page and in lists. |
Token-2022 mints
Token-2022 works alongside standard SPL. A transfer fee applies when tokens enter the vault and again on each delivery — the lock records what actually arrived, and the program harvests any withheld fee before closing the vault. Mints with a transfer hook or the non-transferable extension are refused up front, since the vault couldn't move them. A mint with a permanent delegate is flagged: that delegate can move tokens out of any account, the vault included, so such a lock is only as strong as the delegate.
What it costs
A flat 0.02 SOL Solstack fee on creation, shown as its own line on the review card, plus the network fee and rent: about 0.005 SOL for the lock and vault (refunded when the lock completes) and ~0.002 SOL for the recipient's token account if they don't hold the token yet. Delivery, claiming, cancelling, transferring and extending carry no Solstack fee.
FAQ
What does it cost?
A flat 0.02 SOL Solstack fee when you create a lock, shown on the review card before you sign, plus the network fee and rent for the lock and vault accounts (about 0.005 SOL, refunded to you when the lock completes) and ~0.002 SOL for the recipient's token account if they don't have one yet. Claiming, delivering, cancelling, transferring and extending are free apart from the network fee.
How do the tokens reach the recipient on their own?
The program's release instruction can be sent by anyone, not just the recipient. Solstack runs a crank every few minutes that scans for locks with unlocked, undelivered tokens and sends them, paying the fee itself — so the recipient's tokens simply appear once the schedule unlocks them. Anyone can also press Deliver on the lock page to send them immediately, or Claim with their own wallet.
All at once, or after a cliff — which do I want?
All at once is a plain time lock: nothing until one date, everything on it — the usual choice for locking your own supply. Gradually after a cliff is vesting: nothing until the cliff (optionally a first chunk on that day), then the rest in equal steps — daily, weekly, monthly, quarterly, or continuously every second — until the end date. That's the shape used for team, advisor and investor allocations.
Can a lock be changed after it's created?
The amount and schedule are fixed. The only ways out are the options you choose when creating it: Cancelable lets you end it early (whatever has already unlocked still goes to the recipient, the rest comes back to you), and Transferable lets the recipient hand the remaining schedule to another address. A self lock with an all-at-once date can also be pushed later, never earlier. With neither option, nobody — not you, not Solstack — can touch the tokens before they unlock.
Which tokens work?
Standard SPL and Token-2022 mints, including LP tokens. A Token-2022 transfer fee applies on the way in and on each delivery, and the lock records what actually arrived. Mints with a transfer hook or the non-transferable extension can't be locked, and a mint with a permanent delegate is flagged: that delegate can pull tokens out of any account, the vault included.
Who can the recipient be?
Any address — your own wallet, someone else's, or a multisig vault such as a Squads PDA. Its token account is created when the lock is made, at your expense, so delivery never depends on the recipient doing anything.
What happens when everything has been delivered?
The final delivery closes the vault and the lock account and refunds their rent to the creator. The lock then stops appearing in lists and the verifier, and its share link reads "no active lock" — the tokens are in the recipient's wallet and the history stays on the explorer.
Is this program audited?
No — it's a new, unaudited on-chain program, which is why it's deployed on devnet only for now. Don't lock anything with real value until that changes.