Skip to main content
When you lock tokens to vote on a governance proposal, those tokens are held in a VoteLockCovenant until the voting period ends. After the period closes, you can reclaim them.
1

Wait for voting to close

The proposal detail page shows the voting deadline. Tokens cannot be unlocked while the vote is still open — the covenant enforces this with tx.locktime >= votingPeriodEnd.
2

Open the proposal

Navigate to Governance → [proposal] and find your vote entry in the vote list.
3

Unlock tokens

Click Unlock Tokens. The app calls POST /api/governance/:proposalId/unlock with your address. The backend reads your stored contract_address, constructor_params, and nft_commitment from when you confirmed the lock.
4

Sign

Your wallet displays the unlock transaction. Sign it — this returns your CashTokens to your address.
5

Confirm

The app calls POST /api/governance/:proposalId/confirm-unlock with the txHash. The backend verifies your address received the tokens and marks the unlock complete.

What if the Contract Data is Missing?

If you voted using the off-chain vote endpoint (without locking on-chain), there is no VoteLockCovenant to unlock — no tokens were ever locked. Only votes submitted via POST /governance/:id/lock and confirm-lock lock actual tokens.

Lost Vote Record

The vote record is stored in governance_votes linked to your voterAddress and the proposalId. If the record is missing contract_address (e.g. the lock was never confirmed), the unlock endpoint returns 400: Vote lock contract data not recorded. Contact the FlowGuard team to resolve manually.