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

Closing and Cancelling a Board

There are two ways to shut down a board, and they have different consequences for locked tokens. Both are owner-only and irreversible.

Closing a board

function closeBoard() external onlyOwner

Closing sets closesAt to the current timestamp. The board stops accepting new proposals and new support. Existing locks follow their normal redemption rules: accepted initiatives respect the releaseLockDuration timelock, expired initiatives release immediately, and individual locks can still be redeemed after their natural expiry.

Use closeBoard() when the board has served its purpose and you want to wind down gracefully without disrupting existing commitments.

// Emitted on close
event BoardClosed(address indexed actor)

Cancelling a board

function cancelBoard() external onlyOwner

Cancellation does everything closeBoard() does, plus sets a boardCancelled flag that bypasses all timelocks. Every locked token becomes immediately redeemable regardless of initiative state, lock duration, or release timelock.

Use cancelBoard() when something has gone wrong and token holders need their tokens back now.

// Emitted on cancel
event BoardCancelled(address indexed actor)

How redemption changes after each action

ScenarioCloseCancel
Accepted initiative, within release timelockMust wait for timelockRedeemable immediately
Proposed initiative, lock not yet expiredMust wait for lock expiryRedeemable immediately
Expired initiativeRedeemable immediatelyRedeemable immediately
Lock past its natural expiryRedeemable immediatelyRedeemable immediately

After closure or cancellation

Initiative states are unchanged. Proposed initiatives stay Proposed, accepted stay Accepted. The board simply stops accepting new activity. Token holders call redeemLock() or redeemLocksForInitiative() to withdraw:

// Redeem a single lock position
function redeemLock(uint256 lockId) external nonReentrant
 
// Batch redeem all locks for an initiative
function redeemLocksForInitiative(uint256 initiativeId, uint256[] calldata lockIds) external nonReentrant

Both actions are permanent. There is no way to reopen a closed or cancelled board.