Vesting Contracts
Key Features
Flexible Vesting Schedules: Configure start time, cliff period, duration, and release intervals
Access Control: Role-based permissions for administrative functions
Safety Features: Includes reentrancy protection and pausable functionality
Virtual Token: ERC20-compatible representation of vested tokens (non-transferable)
Merkle Tree Support: Efficient distribution of vesting schedules
Purchase Options: Optional ETH payment for vesting schedule creation
Contracts
TokenVesting Contract
The base vesting contract that implements core vesting functionality and virtual token features.
Features
Vesting Schedule Management:
Configurable start time, cliff period, and duration
Customizable slice periods for gradual token release
Optional revocability per schedule
Admin controls for schedule management
Virtual Token Implementation:
ERC20-compatible interface
Non-transferable by design
Balance represents vested tokens
Automatic balance updates on vesting events
Access Control:
DEFAULT_ADMIN_ROLE: Can manage vesting schedules and contract settingsVESTING_CREATOR_ROLE: Can create new vesting schedules
Inheritance
OpenZeppelin's AccessControlDefaultAdminRules
OpenZeppelin's ReentrancyGuard
OpenZeppelin's Pausable
IERC20Metadata
Key Functions
createVestingSchedule(): Creates new vesting schedulesrelease(): Releases vested tokens to beneficiariesrevoke(): Allows admin to revoke revocable scheduleswithdraw(): Enables admin to withdraw unused tokens
Security Features
Reentrancy protection on critical functions
Pausable functionality for emergency stops
Role-based access control
Comprehensive input validation
TokenVestingMerkle Contract
Extends TokenVesting with Merkle tree functionality for efficient schedule distribution.
Features
Merkle Tree Integration:
Efficient proof verification
Prevention of double-claiming
Batch schedule distribution support
Inheritance
TokenVesting
Key Functions
claimSchedule(): Claims vesting schedule using Merkle proofupdateMerkleRoot(): Updates the Merkle rootscheduleClaimed(): Checks if a schedule has been claimed
TokenVestingMerklePurchasable Contract
Extends TokenVestingMerkle with purchasing capabilities.
Features
Purchase Mechanism:
ETH payments for vesting schedules
Configurable cost per vToken
Customizable payment receiver
Inheritance
TokenVestingMerkle
Key Functions
claimSchedule(): Claims schedule with paymentsetVTokenCost(): Updates the cost per vTokensetPaymentReceiver(): Sets payment receiver address
Deprecated Contracts
Located in src/deprecated/:
MultiTokenVesting
Enables querying vesting balances across multiple contracts
Supports external vesting contract integration
MultiTokenVestingMerklePurchasable
Combines MultiTokenVesting and TokenVestingMerklePurchasable
Supports cross-contract schedule verification
Last updated