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 onlyOwnerClosing 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 onlyOwnerCancellation 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
| Scenario | Close | Cancel |
|---|---|---|
| Accepted initiative, within release timelock | Must wait for timelock | Redeemable immediately |
| Proposed initiative, lock not yet expired | Must wait for lock expiry | Redeemable immediately |
| Expired initiative | Redeemable immediately | Redeemable immediately |
| Lock past its natural expiry | Redeemable immediately | Redeemable 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 nonReentrantBoth actions are permanent. There is no way to reopen a closed or cancelled board.
