ProposalCovenant tracks approvals and enforces an execution timelock.
Full Lifecycle
Create a Proposal
Navigate to Proposals
Go to Vault → Proposals → Create Proposal, or navigate to your vault and click New Proposal.
Define payout details
- Recipient: BCH P2PKH address that will receive funds
- Payout Amount: satoshis to transfer
- Voting Deadline: timestamp after which the proposal expires if quorum is not reached
- Execution Timelock: minimum wait after approval before execution
Approve a Proposal
Each signer navigates to the proposal detail page and clicks Approve. Each approval is an individual on-chain transaction that incrementsapproval_count in the NFT state.
Once approval_count >= requiredApprovals, status transitions to APPROVED automatically.
Execute a Proposal
After theexecutionTimelock timestamp passes, anyone can call execute(). In the FlowGuard app, this button appears on the proposal detail page. The executor service also monitors approved proposals and submits execution transactions automatically.
Cancel a Proposal
M-of-N signers can cancel at any point while status is PENDING or APPROVED. Cancel is an on-chain transaction that sets status toCANCELLED.

