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.

Updated 2026-07-29 · HoodLock Team

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.

text
before cliff        →  0
between cliff and end →  total × (now − start) / (end − start) − already claimed
at or after end     →  everything remaining
Note

The 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#

Irreversible

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.

Careful

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 — the common case for team vesting. They may retain 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.

ConstraintValueWhy it exists
Minimum duration24 hoursStops a schedule that would be fully vested the moment it is created.
Maximum fee0.05 ETH, hard-codedA ceiling the admin can never exceed, whatever else changes.
Batch limit200 beneficiariesBounds gas on a single createMany call.

The admin can change the fee and the fee collector, and nothing else. No admin function can touch an existing schedule. See the contract reference.

Claiming#

Vesting or locking?#

If the supply is…Use
One allocation you hold and intend to keepa lock
Going to a team, advisors or contributors over timevesting
A treasury you need to spend from on a scheduleseveral locks on different dates
Meant never to returna 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, the amount already claimed, the cliff and end dates, and the percentage released. Because no HoodLock function can alter a schedule, that page describes a commitment we cannot walk back for you. See proof of lock.

Careful

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 it; 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 →