Token vesting.
A lock says “not before this date”. Vesting says “a little at a time, starting here, finishing there”, which is what team and contributor allocations actually need.
How release is calculated#
A schedule has four numbers: a total, a start, an optional cliff and an end. Between start and end the claimable amount grows linearly. Before the cliff it is zero, regardless of how much time has passed.
before cliff → 0
between cliff and end → total × (now − start) / (end − start) − already claimed
at or after end → everything remainingThe final claim sweeps the exact remainder rather than recomputing the fraction, so a schedule always finishes at precisely the total. No dust is stranded.
What a cliff is for#
A cliff is a date before which nothing is claimable, even though time is accruing. When it passes, everything earned up to that point becomes claimable at once. The usual reason is commitment: a one-year cliff on a four-year schedule means someone who leaves in month eleven takes nothing.
What a vesting cliff is covers how holders read one.
What the contract forbids#
No HoodLock function can cancel, edit or reverse a schedule. There is no revoke, no sweep and no rescue. Check the beneficiary address and the amount before you sign. A mistake cannot be undone by us.
The token is the exception, and it matters. A token that is upgradeable, pausable, mintable, or that can blacklist an address can still make a schedule worthless or unclaimable after the fact. Where the schedule's creator is also the token's deployer, which is the common case for team vesting, they may keep exactly that power, whatever this contract does.
It cuts the other way too. Because there is no rescue path, a token that pauses or freezes the beneficiary locks the tokens permanently, with no recourse from anyone. Irrevocable and unrecoverable are the same property.
| Constraint | Value | Why it exists |
|---|---|---|
| End date | More than 24 hours away | The end must be more than 24 hours after creation, even when the start is back-dated, so no schedule is fully vested the moment it is created. |
| Maximum fee | 0.05 ETH, hard-coded | A ceiling the admin can never exceed, whatever else changes. |
| Batch limit | 200 beneficiaries | Bounds gas on a single createMany call. |
The admin can change the fee, up to that cap, and the fee collector, and can hand the admin role to a new address in two steps. Nothing else. No admin function can touch an existing schedule. See the contract reference.
Claiming#
- The beneficiary claims, not the creator. Claiming is a transaction they send when they choose.
- Claims are free. The fee is charged once, at creation. Claiming costs gas only.
- Nothing arrives automatically. Unclaimed tokens accumulate and stay claimable. There is no expiry.
- The beneficiary can be transferred by the current beneficiary, for a wallet change or a handover.
Vesting or locking?#
| If the supply is… | Use |
|---|---|
| One allocation you hold and intend to keep | a lock |
| Going to a team, advisors or contributors over time | vesting |
| A treasury you need to spend from on a schedule | several locks on different dates |
| Meant never to return | a burn |
Locks vs vesting vs burning compares all three in full, and allocation benchmarks covers what sizes and schedules hold up to scrutiny.
Batches#
createMany creates one schedule per beneficiary in a single transaction, up to 200, all
sharing the same token and the same timing. The fee is charged per schedule. It is the practical way to
set up a whole team at once.
The proof page#
Each schedule gets a public page showing the total, how much has vested so far and what percentage that is, the amount already claimed, and the start, cliff and end dates. Because no HoodLock function can alter a schedule, that page describes a commitment we cannot walk back for you. See proof of lock.
One thing worth stating on your own page rather than leaving to inference: what share of the schedule had already vested when it was created. A schedule back-dated so that half of it is claimable on day one is technically vesting and practically a transfer. Our proof pages show how much has vested so far and, before a cliff, how much unlocks the moment it passes. They do not show the share vested at creation, so say it yourself before someone else does.
Create a vesting schedule
Flat 0.005 ETH per schedule, claims are free, and no HoodLock function can alter it afterwards.
Open vesting →