Deploy a Governor

How to deploy a Governor contract to use with Tally

To be compatible with the Tally app, we recommend you use OpenZeppelin's Governor contract. This modular, battle-tested system of DAO smart contracts givens tokenholders control of a DAO onchain.

A typical Governor DAO uses three contracts: a token contract, a Governor contract, and a timelock contract.

Configuring your Governor

Compatibility with Tally

Helpful Links from OpenZeppelin

Configuring your Governor

Core logic is determined by the Governor contract. When deploying a Governor, you need to chose:

  1. how voting power is determined

  2. how many votes are needed for quorum

  3. what options people have when casting a vote and how those votes are counted

  4. what type of token should be used to vote

You can write your own module or choose one from OpenZeppelin contracts.

These parameters must be set for the Governor contract:

  • votingDelay: how long after a proposal is created that voting power is fixed (a larger delay gives users time to unstake tokens)

  • votingPeriod: how long a proposal remains open to vote

A proposal threshold can also be set, which restricts proposal creation to accounts with enough voting power.

The latest published release of the OpenZeppelin Contracts library can be downloaded by running:

$ npm install @openzeppelin/contracts

The OpenZeppelin Contracts documentation includes guides and a detailed API reference for learning about developing secure smart contract systems.

You may also find the OpenZeppelin wizard useful for configuring a smart contract.

Compatibility with Tally

Check out our guide to ensure your OpenZeppelin Governor is compatible with the Tally platform:

OpenZeppelin Governor

Using Governor

Tally offers an all-in-one guide explaining how to use Governor in the PDF below.

Last updated