Token locks
Lock tokens in a contract that releases them to a beneficiary on a schedule nobody can shorten.
A token lock holds tokens in a contract on Kaspa and releases them to one address, the beneficiary, on the schedule chosen when the lock was made. Any holder can lock tokens. Nobody can release them early or shorten the schedule: not the person who locked them, not the beneficiary, not Kasseal.
Making a lock
- Connect your wallet and open your page (Portfolio). Press Lock on a token in Holdings, or on a token you launched and hold in Launches.
- Choose how many tokens: at least 0.05 % of the supply, at most what you hold outside locks. One lock spends at most three of your token UTXOs; merge them on the token page to lock more at once.
- Choose who receives them: Me, or Another address. Locking for another address is a transfer: the tokens leave your wallet now and are released to that address, never back to you. It must be a Schnorr address (
kaspa:q…); a script address needs its script, and only a key-locked script is accepted. - Choose how long: 10 minutes, 30, 90 or 180 days, 1 year, or a custom length. The last release must be at least 10 minutes and at most 2 years away.
- Choose how it unlocks: All at the end, in equal parts on a schedule (2 to 100 releases, with an optional wait before the first), or Custom dates (2 to 10 dates, each with its own amount).
- Review the timeline, the KAS needed and the warning, tick that you understand the lock is final, and approve in your wallet.
A lock takes two approvals: the first sets it up, the second locks the tokens. If an earlier lock stopped after its setup, your page shows Setup waiting: your next lock reuses that setup, needs one approval, and the setup’s KAS comes back to you. With Custom dates each date is its own lock: one approval sets them up, then one per date.
The KAS a lock needs
- 1 KAS per release, paid to the beneficiary together with that release’s tokens.
- Up to 0.2 KAS per release for the network fee of the transaction that sends it.
- 1 KAS kept for the final release, and 1 KAS in the cell that holds the locked tokens.
- The network fees of making the lock.
Kasseal charges no fee for locks. What the releases do not spend on network fees goes to the beneficiary with the last release.
Releases
- A release is never early. The network accepts it once its time has passed, so it arrives about 3 minutes after the time shown.
- Kasseal sends due releases to the beneficiary automatically, usually within a few minutes. Anyone can also send one, from the lock’s card or its proof page, with no wallet signature: the contract pays only the beneficiary.
- Whoever sends a release may keep the part of its fee allowance (up to 0.2 KAS from the lock’s deposit) that the network fee does not use. The tokens and the 1 KAS always go to the beneficiary.
- With a wait before the first release, every release due by the end of the wait is paid together at it; the rest follow on schedule.
Extending a lock
Only the beneficiary can extend a lock: press Extend and move every remaining release later by 30, 90 or 180 days or 1 year. Releases only ever move later, an extension cannot be undone, and a lock can end at most five years after its original end. A release that is already due would move too, so the app asks you to claim it first (Claim, then extend); while a release is being paid, extend once it has landed.
Where locks show
| Where | What it shows |
|---|---|
| Locks tab of a profile | Locks paid to the wallet and locks it made. Each card has a ring that fills with the share of the lock’s time that has passed, a mark for each release, the next unlock with a countdown, and Claim, Extend, Share and View proof. |
| Holdings of a profile | A token’s locked tokens as + N locked under its balance. They count in the value and the P&L, and are released on their schedule. |
| Token page | A 🔒 N% locked badge, and a Locks tab: the share of supply locked, the next unlock, how much of the creator’s wallet is locked and how much is free, LP shares locked, the graduation liquidity that is locked for ever, and every active lock. A lock is never listed as a holder. |
The lock’s page (/lock/<id>) | The lock read from its contract on Kaspa: what is locked, by whom, for whom, the schedule with each release paid, due or upcoming, and every event (created, release paid, extended). A due release can be sent from here, with no wallet. |
The locked share counts only tokens still in active locks: a release that is due but not paid yet is no longer counted as locked. Share makes an image of the lock, with a QR code that opens its page.