Create a vesting schedule.
Four numbers decide everything: how much, when it starts, when the cliff falls and when it ends. Get them right before you sign, because a schedule cannot be edited afterwards.
No HoodLock function can cancel, edit or recover a schedule. A wrong beneficiary address or a wrong amount is permanent. Read this page before you start rather than during.
The token is the one exception: an upgradeable, pausable or blacklisting token can still undo or freeze a schedule after the fact, and if you deployed the token, you may hold that power yourself. See how vesting works.
Decide the four numbers#
| Field | What it means | Common choice |
|---|---|---|
| Amount | Total tokens in the schedule | The whole allocation for that person |
| Start | When accrual begins | Today, or a shared team start date |
| Cliff | Nothing is claimable before this | One year on a multi-year schedule |
| End | Everything is claimable at this point | Two to four years for team supply |
Between start and end, release is linear. Before the cliff it is zero even though time is accruing. When the cliff passes, everything earned to that point becomes claimable at once. The exact formula is on the vesting page.
Allocation benchmarks covers what sizes and durations survive scrutiny, and what a cliff is covers how holders read one.
Create it#
- Open vesting. Go to the vesting form with the wallet holding the tokens.
- Pick the token. Choose it from your balances or paste the contract address.
- Add the recipients. Each row takes the address that will be able to claim and the amount for that address. Use + Add recipient for more rows, or Paste CSV for a longer list. Check every address character by character. This is the field that cannot be fixed later.
- Set start, cliff and end. Pick the dates or use the presets. The form enforces the contract's rules, so an invalid combination will not reach a signature prompt.
- Review the summary. Check the dates against what you intend to announce. The Vested at creation row shows how much a back-dated start makes claimable straight away (see below).
- Approve, then create. Two transactions, or one if you already approved enough. The form does not show the fee, so expect 0.005 ETH per schedule in the wallet prompt, on top of gas. It is charged once, here, and claiming later is free.
The rules the contract enforces#
| Rule | Value |
|---|---|
| Minimum duration | The end date must be more than 24 hours after the moment the schedule is created |
| Ordering | start ≤ cliff ≤ end |
| Fee | Exactly the fee per schedule. Any other amount makes the transaction fail, so nothing extra can be lost |
| Batch size | Up to 200 recipients per transaction |
If you build transactions yourself rather than using the app, note that the API validates
end - start ≥ 86400 while the contract validates end > block.timestamp +
MIN_DURATION. A back-dated start can pass the first and fail the second. Validate against
block.timestamp. Details on the API page.
Vesting a whole team at once#
Batch creation makes one schedule per beneficiary in a single transaction. Every schedule shares the token and the dates, with its own address and amount. Up to 200 at a time, with the fee charged per schedule.
It is the practical way to set up a cap table, and it produces one proof page per person rather than one shared page, which is what you want when someone asks about a specific allocation.
Be honest about back-dating#
A schedule with a start date in the past is already partly vested the moment it exists. That is legitimate, since teams often vest from the date people actually joined. But a schedule that is 50% claimable on day one is, in practice, half a transfer.
The proof page does not state this for you. It shows what has vested so far, and it warns when a future cliff will release a large chunk at once, but a schedule that was already substantially vested when it was created reads, months later, exactly like one that vested honestly over that period.
So say it yourself, in your own announcement: the start date, and what share was already claimable on day one. It costs nothing, and it is the one number a sceptical reader cannot reconstruct from the page.
After creating#
- The beneficiary claims, when they choose. Nothing is pushed automatically and unclaimed tokens never expire.
- Claims are free. Gas only.
- The beneficiary can hand over to a new address themselves, for a wallet change. You cannot do it for them.
- You cannot change anything. Not the amount, not the dates, not the recipient.
Every schedule gets its own proof link under Created by you on the vesting page. Share it the same way you would a lock. Proof of lock covers what it shows.
Create a vesting schedule
Flat 0.005 ETH per schedule, claims are free, and no HoodLock function can alter it afterwards.
Open vesting →