FounderVesting.sol
Quick Links
VIEW CONTRACT ON GITHUB
The FounderVesting.sol contract is a simple but critical component of AetherCycle's commitment to community ownership. It holds the founder's entire 1% allocation (8,888,888 AEC) in a rigid vesting schedule with a 5-year cliff. This contract is the target of the AccountabilityDAO, which has the power to modify its terms, ensuring the founder remains aligned with the long-term interests of the protocol.
Inherits from: ReentrancyGuard
Key State Variables & Constants
INITIAL_CLIFF_DURATION
uint256
Constant: The initial vesting cliff period, set to 5 years.
MAX_CLIFF_DURATION
uint256
Constant: The maximum total cliff duration allowed, capped at 10 years.
FOUNDER_ALLOCATION
uint256
Constant: The exact amount of the founder's allocation (8,888,889 AEC).
beneficiary
address
The address of the founder who is entitled to claim the tokens after the cliff.
accountabilityDAO
address
The address of the AccountabilityDAO contract, which is the only address authorized to modify vesting terms.
cliffEnd
uint256
The timestamp when the vesting cliff ends. Initially set to vestingStart + 5 years, but can be extended by the DAO.
totalClaimed
uint256
The total amount of AEC that has been claimed by the beneficiary.
allocationBurned
bool
A flag that becomes true if the DAO triggers the burnAllocation function, permanently preventing any further claims.
Write Functions
Beneficiary-Only Functions (onlyBeneficiary)
claim(): Allows thebeneficiaryto claim their full allocation of AEC tokens. This function can only be successfully called after thecliffEndtimestamp has passed and if the allocation has not been burned.updateBeneficiary(address newBeneficiary): Allows the currentbeneficiaryto transfer their claim rights to a new address.recoverToken(address token, uint256 amount): A safety function that allows the beneficiary to recover any non-AEC ERC20 tokens mistakenly sent to the contract.
DAO-Only Functions (onlyDAO)
extendVesting(uint256 additionalTime): Can only be called by theAccountabilityDAO. It extends thecliffEndtimestamp by theadditionalTimespecified (in seconds).burnAllocation(): Can only be called by theAccountabilityDAO. It permanently burns the entire unclaimed allocation by transferring the tokens to theBURN_ADDRESSand setsallocationBurnedtotrue.updateDAO(address newDAO): Allows the currentAccountabilityDAOto transfer its governance powers to a new DAO contract, facilitating future upgrades to the governance module if needed.
View Functions
getClaimableAmount(): Returns the amount of AEC the beneficiary can currently claim. It will be0before the cliff or if the allocation is burned, andFOUNDER_ALLOCATIONafter the cliff.getVestingInfo(): Returns a detailed struct containing all key information about the vesting schedule, including total amount, start time, cliff end, amount claimed, burned status, claimable amount, and remaining time until the cliff ends.getCliffProgress(): Returns the progress of the vesting cliff as a percentage in basis points (e.g., 5000 for 50%).isClaimable(): A simple boolean check that returnstrueif the beneficiary can currently claim their tokens.
Events
VestingExtended(uint256 previousCliff, uint256 newCliff, uint256 extension): Emitted when the DAO successfully extends the vesting period.AllocationBurned(uint256 amountBurned, address burnAddress): Emitted when the DAO successfully burns the founder's allocation.TokensClaimed(address beneficiary, uint256 amount): Emitted when the beneficiary successfully claims their AEC tokens.BeneficiaryUpdated(address oldBeneficiary, address newBeneficiary): Emitted when the beneficiary address is changed.DAOUpdated(address oldDAO, address newDAO): Emitted when the DAO address is changed.
Last updated