Are you an LLM? Read llms.txt for a summary of the docs, or llms-full.txt for the full context.
Skip to content

Accepting and Expiring Initiatives

An initiative in the Proposed state can transition to Accepted (threshold met) or Expired (inactive too long). Both transitions are permanent and one-way.

Proposed → Accepted  (via acceptInitiative)
Proposed → Expired   (via expireInitiative)

acceptInitiative()

function acceptInitiative(uint256 initiativeId) external

Accepts an initiative that has reached the board's acceptance threshold. Records acceptanceTimestamp, which starts the releaseLockDuration countdown for token redemption. If an incentives pool is configured, supporters earn rewards on redemption.

Access control

Who can call acceptInitiative() depends on the board's AcceptanceCriteria:

permissionsthresholdOverrideWho can acceptThreshold required
OnlyOwnerNoneOwner onlyYes
OnlyOwnerOnlyOwnerOwner onlyNo (owner bypasses)
PermissionlessNoneAnyoneYes
PermissionlessOnlyOwnerAnyoneYes (owner bypasses)

The threshold is calculated as:

threshold = max(totalSupply * thresholdPercentTotalSupplyWAD / 1e18, minThreshold)

Query the current value with getAcceptanceThreshold() and compare against getWeight(initiativeId).

expireInitiative()

function expireInitiative(uint256 initiativeId) external onlyOwner

Expires an initiative that has been inactive for longer than the board's inactivityTimeout. Owner-only. The initiative must still be in the Proposed state.

Inactivity is tracked by lastActivity, which updates when the initiative is created and each time a supporter locks tokens. If block.timestamp > lastActivity + inactivityTimeout, the initiative can be expired.

Tokens locked against an expired initiative are redeemable immediately with no waiting period. No incentive rewards are distributed.

Events

event InitiativeAccepted(uint256 indexed initiativeId, address indexed actor)
event InitiativeExpired(uint256 indexed initiativeId, address indexed actor)

See Redeeming Tokens for how supporters reclaim tokens after acceptance or expiry.