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