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 — a schedule cannot be edited afterwards.

Updated 2026-07-29 · HoodLock Team
Irreversible

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#

FieldWhat it meansCommon choice
AmountTotal tokens in the scheduleThe whole allocation for that person
StartWhen accrual beginsToday, or a shared team start date
CliffNothing is claimable before thisOne year on a multi-year schedule
EndEverything is claimable at this pointTwo 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.

Note

Allocation benchmarks covers what sizes and durations survive scrutiny, and what a cliff is covers how holders read one.

Create it#

  1. Open vesting. Go to the vesting form with the wallet holding the tokens.
  2. Pick the token and amount. Same as any other flow — from your balances or by address.
  3. Enter the beneficiary. The address that will be able to claim. Check it character by character. This is the field that cannot be fixed later.
  4. Set start, cliff and end. The form enforces the contract's rules, so an invalid combination will not reach a signature prompt.
  5. Review the summary. Check the dates against what you intend to announce — a back-dated start makes part of the schedule claimable immediately (see below).
  6. Approve, then create. Two transactions. The fee is charged once, here; claiming later is free.

The rules the contract enforces#

RuleValue
Minimum duration24 hours between start and end
Orderingstart ≤ cliff ≤ end
FeeExactly the fee — overpayment is not refunded, unlike locks and burns
Batch sizeUp to 200 beneficiaries per transaction
Careful

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 — same token, same timing, different addresses and amounts. 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#

Careful

A schedule with a start date in the past is already partly vested the moment it exists. That is legitimate — teams often vest from a 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#

Share the proof link 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 →