Definition:
Governor is OpenZeppelin’s battle-tested, modular on-chain governance framework that allows any ERC-20 or ERC-721 token holder community to submit, vote on, and automatically execute governance proposals on-chain — providing trustless DAO governance without relying on multi-sigs, centralized coordination, or off-chain snapshot systems. The Governor framework is the most widely adopted on-chain governance primitive, used by Compound, Uniswap, ENS, Gitcoin, and dozens of other major protocols.
Origins: Compound Governor
The Governor pattern was pioneered by Compound Finance with their GovernorAlpha (2020) and GovernorBravo (2021) contracts. OpenZeppelin generalized this into an extensible, modular Governor contract framework, making it easy for any project to deploy their own on-chain governance.
Core Components
Governor Contract:
The central contract managing the full governance lifecycle:
- Propose — Anyone meeting the proposal threshold (minimum token balance) can create a proposal specifying target contracts, calldata, and a description
- Delay — A voting delay period (blocks/time) before voting opens
- Vote — Token holders vote For, Against, or Abstain during the voting period
- Quorum — A minimum participation threshold must be met for a vote to be valid
- Timelock — Passed proposals wait in a timelock queue before execution
- Execute — After the timelock, anyone can trigger execution
Timelock Controller:
A separate contract that holds all protocol funds and permissions. The Governor queues passed proposals in the Timelock before execution, giving the community a window to exit if a malicious proposal passes.
Vote Token (ERC-20Votes / ERC-721Votes):
Voting uses token delegation. Token holders delegate their voting power to themselves or another address. This is snapshot-based — voting power is measured at the proposal’s start block to prevent flash loan attacks.
Governor Extension Modules (OpenZeppelin)
OpenZeppelin’s modular design allows composing Governor with extensions:
| Extension | Adds |
|---|---|
GovernorVotes |
ERC-20Votes delegation support |
GovernorVotesQuorumFraction |
% of total supply as quorum |
GovernorTimelockControl |
Timelock queue between pass and execution |
GovernorSettings |
Adjustable voting delay/period/threshold |
GovernorCountingSimple |
For/Against/Abstain counting |
Protocols configure their own Governor by composing these modules.
Proposal Lifecycle Parameters
| Parameter | Description | Typical Value |
|---|---|---|
| Voting Delay | Blocks after proposal before voting opens | 1 day |
| Voting Period | How long voting is open | 3–7 days |
| Proposal Threshold | Minimum tokens to submit proposal | 1,000–100,000 tokens |
| Quorum | Minimum votes cast for validity | 1–10% of supply |
| Timelock Delay | Queue wait before execution | 2 days |
On-chain vs. Off-chain Governance
| Feature | Governor (on-chain) | Snapshot (off-chain) |
|---|---|---|
| Trustless execution | Yes — auto-executes | No — multi-sig required |
| Gas cost for voting | Yes — voters pay gas | No — signaling is free |
| Binding result | Yes | No — advisory only |
| Treasury control | Fully on-chain | Requires multi-sig bridge |
| Sybil resistance | Token-based | Token-based |
Major Protocol Deployments
| Protocol | Governor Variant |
|---|---|
| Compound | GovernorBravo (predecessor to OZ Governor) |
| Uniswap | Custom Bravo-based Governor |
| ENS | OZ Governor + Timelock |
| Gitcoin | OZ Governor |
| Nouns DAO | Custom (fork of Bravo) |
| Optimism | OZ Governor (Token House) |
Related Terms
Sources
- OpenZeppelin Governor Documentation — Official docs with module reference and integration guide.
- OpenZeppelin Governor GitHub — Source code for all Governor contracts.
- Compound GovernorBravo — The original on-chain governance system Governor is modeled after.
- Tally — Governor Dashboard — Explorer for live Governor-based DAO proposals.
Last updated: 2026-04