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

Variable
Type
Description

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 the beneficiary to claim their full allocation of AEC tokens. This function can only be successfully called after the cliffEnd timestamp has passed and if the allocation has not been burned.

  • updateBeneficiary(address newBeneficiary): Allows the current beneficiary to 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 the AccountabilityDAO. It extends the cliffEnd timestamp by the additionalTime specified (in seconds).

  • burnAllocation(): Can only be called by the AccountabilityDAO. It permanently burns the entire unclaimed allocation by transferring the tokens to the BURN_ADDRESS and sets allocationBurned to true.

  • updateDAO(address newDAO): Allows the current AccountabilityDAO to 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 be 0 before the cliff or if the allocation is burned, and FOUNDER_ALLOCATION after 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 returns true if 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