Governance
Token-weighted voting via the OpenZeppelin Governor interface.
Proposal lifecycle
- Pending — submitted, voting not yet open.
- Active — votes accepted until
deadline. - Succeeded — quorum + majority reached.
- Queued — sent to the timelock.
- Executed — call dispatched on-chain.
Voting
Voting weight equals your staked MATIC at the proposal's snapshot block. Cast a vote with the standard OZ Governor entrypoint:
solidity
function castVote(uint256 proposalId, uint8 support) external returns (uint256 weight);
// support: 0 = Against, 1 = For, 2 = Abstaints
const gov = new ethers.Contract(GOVERNANCE_ADDRESS, GOVERNANCE_ABI, signer)
await (await gov.castVote(proposalId, 1)).wait()Creating proposals
Proposals are calldata batches against any whitelisted target (vault config, risk parameters, executor ceilings). Use propose() with arrays of targets, values, calldatas and a description string.