How does token vesting work, and how is it different from a lock-up?
Vesting releases tokens bit by bit over a schedule, often after a cliff, a date before which nothing is released.1 A lock-up stops holders selling for a set time.2 A smart contract such as OpenZeppelin's vesting wallet can hold the tokens and release them on schedule.1,3
Three words
- Vesting. Releasing tokens to their owner over time, according to a schedule. In OpenZeppelin's code, the default schedule is a straight line.1
- Cliff. A date before which nothing is released. OpenZeppelin's cliff version counts as vested zero tokens until the cliff date.1
- Lock-up. For company shares, the SEC's investor website says a lock-up stops insiders selling for a set time after an initial public offering (IPO), when a company first sells shares to the public. Most last 180 days.2
Module 28 used vesting and cliffs for grant tokens.1 This lesson looks inside the contract that does the work.
People mix the words up
Token projects often use the two words loosely. Arbitrum's documents say its team and investor tokens are subject to "4 year lockups", yet those tokens unlock every month after the first year.4 The SEC's lock-up page also says some share lock-ups limit how many shares can be sold over a period, not only when.2
In April 2025, staff at the US Securities and Exchange Commission (SEC) listed vesting and lock-ups among the supply details they had seen issuers disclose when offering crypto-related securities.5 So when you read a token's documents, look for the actual rule, whatever word is used.5,4
How a vesting contract works
OpenZeppelin publishes open-source smart contract code. Its VestingWallet is a contract that holds tokens and releases them to an owner, called the beneficiary, on a schedule.1
- Set-up. You give it a beneficiary, a start time and a duration.1
- Late deposits. Tokens sent to it later follow the schedule "as if they were locked from the beginning".1
- Vested so far. Before the start, nothing has vested. After the end, everything has. In between, the code works out total × time since the start ÷ duration.3
- Ready to release. What can be released now = what has vested − what was already released.3
- Release. The release function sends that amount to the wallet's owner.3
The cliff version adds one more rule. The cliff is measured from the start and can't be longer than the whole schedule.6 Before the cliff, the vested amount is 0. From the cliff on, it is the normal straight line, counted from the start.6 So every month before the cliff vests at once, on the cliff date.6,3
A lock-up in code
OpenZeppelin says that if you set the duration to 0, the same contract acts as a timelock. It holds tokens for the beneficiary until a set time.1 That is a lock-up in code: nothing, then everything at once.1
What the code can't stop
OpenZeppelin warns that the vesting wallet itself can change hands, so "it is possible to sell unvested tokens".1 A contract shows when tokens are released. It does not prove that nobody has sold the right to them.1
This follows OpenZeppelin's code. Before the cliff: nothing. From the cliff on: total × months since the start ÷ total months. After the end: everything.3,6
Released in a given month = vested at the end of that month − vested at the end of the month before.3
Example: 180,000,000 tokens over 36 months with a 12-month cliff. Month 11: 0. Month 12: 60,000,000. Month 13: 65,000,000. So 60,000,000 arrive in month 12, then 5,000,000 a month. The quizzes use this method.
- Finance: VestingWallet and VestingWalletCliff. OpenZeppelin Contracts 5.x documentation (read 22 October 2026).
- Initial Public Offerings: Lockup Agreements (glossary). Investor.gov, US Securities and Exchange Commission.
- VestingWallet.sol (source code). OpenZeppelin Contracts on GitHub, master branch (read 22 October 2026).
- $ARB airdrop eligibility and distribution specifications. Arbitrum DAO governance docs, Arbitrum Foundation (read 22 October 2026).
- Offerings and Registrations of Securities in the Crypto Asset Markets (staff statement). US Securities and Exchange Commission, Division of Corporation Finance, 10 April 2025.
- VestingWalletCliff.sol (source code). OpenZeppelin Contracts on GitHub, master branch (read 22 October 2026).
General education built from the publicly available sources listed above. Not financial, legal, tax or investment advice. Naming a company, project or regulator is not an endorsement either way. Last checked 2026-10-24. Terms and disclaimer.