Skip to content
Contract · Payments

Token Vesting

Linear vesting with cliff for team members, advisors, and investors. Wraps OpenZeppelin's audited VestingWallet.

All templates
OZ Wallet
Audited base
~750k gas
Ethereum
Post-deploy checklist
  1. Verify the contract on the block explorer
  2. Confirm beneficiary address before funding
  3. Transfer ERC20 tokens (or send ETH) into the wallet
  4. Have the beneficiary call release() / release(token) after the cliff
  5. Document start + duration for your stakeholders
Configure & deploy

Address that receives vested funds. Cannot be changed after deploy on the standard VestingWallet.

Unix seconds when vesting begins. Cliff is implicit: nothing is releasable before start + any custom cliff you encode off-chain.

Total vesting window in seconds. Example: 4 years ≈ 126144000; 1 year ≈ 31536000.

Use cases
  • Team token vesting over 4 years with a 1-year cliff
  • Investor token unlocks with linear release
  • Advisor allocations that stream over time
TokenVesting.solsolidity
// SPDX-License-Identifier: MIT
// Compatible with OpenZeppelin Contracts ^5.0 (Wizard / Contracts MCP patterns)
// Compiled with Solidity ^0.8.24 — Ethereum Toolset browser solc
pragma solidity ^0.8.24;

import "@openzeppelin/contracts/finance/VestingWallet.sol";

// Linear vesting with a cliff. beneficiary receives tokens/ETH streamed
// from startTimestamp over durationSeconds.
contract TokenVesting is VestingWallet {
    constructor(address beneficiary, uint64 startTimestamp, uint64 durationSeconds)
        VestingWallet(beneficiary, startTimestamp, durationSeconds)
    {}
}