AccountabilityDAO.sol

Quick Links

VIEW CONTRACT ON GITHUB

The AccountabilityDAO.sol contract is a specialized, limited-scope governance module created for the sole purpose of providing community oversight over the founder's 1% token allocation, which is held in the FounderVesting.sol contract. It is not a general-purpose DAO; its powers are strictly limited to extending the founder's vesting cliff or permanently burning the allocation, ensuring the protocol's core mechanics remain autonomous and immutable.

Inherits from: ReentrancyGuard


Key State Variables & Constants

Variable
Type
Description

EXTEND_THRESHOLD

uint256

Constant: The amount of AEC required to be locked in the DAO to enable the extendFounderVesting function (100,000,000 AEC).

BURN_THRESHOLD

uint256

Constant: The amount of AEC required to be locked to enable the burnFounderAllocation function (200,000,000 AEC).

EXTENSION_DURATION

uint256

Constant: The duration (2 years in seconds) by which the founder's vesting cliff is extended when extendFounderVesting is triggered.

aecToken

IERC20

The address of the AEC token contract used for deposits.

founderVesting

IFounderVesting

The address of the FounderVesting contract that this DAO governs.

totalLocked

uint256

The current total amount of AEC tokens locked/deposited in the DAO.

userDeposits

mapping(address => uint256)

A mapping from a user's address to the amount of AEC they have deposited.

founderAllocationBurned

bool

A flag that becomes true after the founder's allocation has been burned, permanently disabling both DAO actions.

Write Functions

User-Facing Functions

  • deposit(uint256 amount): Allows any AEC holder to deposit tokens into the DAO. Deposited tokens contribute to the totalLocked balance required to meet the action thresholds.

  • withdraw(uint256 amount): Allows a user to withdraw a specific amount of their deposited tokens at any time.

  • withdrawAll(): A convenience function for a user to withdraw their entire deposited balance.

Action Functions (Publicly Callable)

  • extendFounderVesting(): A permissionless function that can be called by anyone once totalLocked meets or exceeds the EXTEND_THRESHOLD. It interacts with the FounderVesting contract to extend the vesting cliff by 2 years. This action has a 30-day cooldown period.

  • burnFounderAllocation(): A permissionless, one-time function that can be called by anyone once totalLocked meets or exceeds the BURN_THRESHOLD. It interacts with the FounderVesting contract to permanently burn the entire remaining founder allocation.


View Functions

  • getActionableStatus(): Returns a detailed status of the DAO, including booleans indicating if the extend and burn actions are currently possible, and the remaining amount of AEC needed to reach each threshold.

  • getDAOStats(): Provides a high-level overview of the DAO's statistics, including the current amount of locked AEC, the number of extensions executed, and whether the allocation has been burned.


Events

  • TokensDeposited(address indexed user, uint256 amount, uint256 newTotal): Emitted when a user deposits AEC into the DAO.

  • TokensWithdrawn(address indexed user, uint256 amount, uint256 newTotal): Emitted when a user withdraws AEC from the DAO.

  • VestingExtended(address indexed triggeredBy, uint256 totalLocked): Emitted when the founder's vesting period is successfully extended.

  • FounderAllocationBurned(address indexed triggeredBy, uint256 totalLocked): Emitted when the founder's token allocation is successfully burned.

Last updated