https://github.com/vasa-develop/dynamic-vesting-escrow
A vesting escrow for dynamic teams, based on Curve vesting escrow
https://github.com/vasa-develop/dynamic-vesting-escrow
Last synced: 11 months ago
JSON representation
A vesting escrow for dynamic teams, based on Curve vesting escrow
- Host: GitHub
- URL: https://github.com/vasa-develop/dynamic-vesting-escrow
- Owner: vasa-develop
- License: mit
- Created: 2021-02-18T07:31:23.000Z (about 5 years ago)
- Default Branch: master
- Last Pushed: 2021-06-24T10:08:55.000Z (almost 5 years ago)
- Last Synced: 2025-03-30T09:31:34.021Z (about 1 year ago)
- Language: Solidity
- Homepage:
- Size: 25.4 KB
- Stars: 17
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
## dynamic-vesting-escrow
> A vesting escrow for dynamic teams, based on [Curve vesting escrow](https://github.com/curvefi/curve-dao-contracts)
### Features:
- Ability to claim a specific amount.
- Recipient specific `startTime`, `endTime`. Configurable flag `ALLOW_PAST_START_TIME` to decide if `startTime` can be in past.
- Recipient specific cliff duration (min duration after start time to call claim).
- Recipient specific pause, unpause, terminate. `Paused` freezes the recipient's vesting state (recipient can claim vested tokens), and updates the recipient specific parameters when `UnPaused` so that number of tokens vesting per second (can be unique for each recipient) remains the same for complete lifecycle of the recipient.
- No limit on recipient pause duration. Any recipient can be paused, unpaused as many times as the owner wishes.
- Ability to automatically transfer unvested tokens of the `Terminated` recipient to a "safe" address, and transfer all the vested tokens to the recipient.
- Global vesting escrow termination. Ability to transfer (seize) unvested tokens to a "safe" address. The recipient(s) is/are still entitled to the vested portion.
- Ability to add more recipients (no dilution) in the vesting escrow at any point in time (provided that escrow is not terminated).
### Known Issue
This is a minor issue, which **does NOT effect the security of the contract in a significant way**.
Due to rounding error, `totalLockedOf` returns a value different (slightly off) from the expected value. But the return values of `totalLockedOf` are capped so that at the end of the vesting period, the recipient can claim exactly the `totalVestingAmount` assigned to it.
This rounding error also effects functions which use `totalLockedOf`:
- `claimableAmountFor`
- `batchTotalLockedOf`
- `seizeLockedTokens`
**This contract may have more issues, so test it yourself before using it in production.**