Contract · Payments
Token Vesting
Linear vesting with cliff for team members, advisors, and investors. Wraps OpenZeppelin's audited VestingWallet.
OZ Wallet
Audited base
~750k gas
Ethereum
Post-deploy checklist
- Verify the contract on the block explorer
- Confirm beneficiary address before funding
- Transfer ERC20 tokens (or send ETH) into the wallet
- Have the beneficiary call release() / release(token) after the cliff
- 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)
{}
}
