Governor (OpenZeppelin)

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:

  1. Propose — Anyone meeting the proposal threshold (minimum token balance) can create a proposal specifying target contracts, calldata, and a description
  2. Delay — A voting delay period (blocks/time) before voting opens
  3. Vote — Token holders vote For, Against, or Abstain during the voting period
  4. Quorum — A minimum participation threshold must be met for a vote to be valid
  5. Timelock — Passed proposals wait in a timelock queue before execution
  6. 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

Last updated: 2026-04