New Compound Governor Design Approach

Introduction

Compound grants has funded a proposal for ScopeLift to upgrade the DAO’s Governor contracts. After performing a technical assessment and gathering feedback from Compound stakeholders, we are ready to share the technical details of the upgrade process in this post. We welcome any feedback or questions from the community.

Technical Summary

ScopeLift will upgrade Compound’s GovernorBravoDelegator and GovernorBravoDelegate contracts. We’ll use the latest contracts from OpenZeppelin(OZ) library with some modifications to preserve many of the existing features of the Governors including:

  • Enumerable Proposal IDs: Unlike out of the box OZ governors, where proposalIds are calculated from hashing the contents of a proposal, we will keep the incrementing proposalId pattern of Governor Bravo. To implement this, we will use the GovernorStorage extension with some modifications to incorporate enumerability of proposalIds.
  • Proposal Guardian, Whitelist Guardian, and whitelisted proposers: Current Governor Bravo’s flow of cancelling a proposal will be preserved. The DAO will have control over the management of the roles mentioned above.

The upgrade comes with a number of advantages outlined in the original upgrade proposal and also additional benefits such as:

  • Updatable Governor Settings: Proposal threshold, Voting Delay, and Voting Period will be adjustable through the governance process without min and max bounds.
  • Updatable Quorum: The DAO will also be able to set the quorum, which will be a non-fractional, updatable value using a simple, customized extension contract.
  • No Admin: The admin role will no longer exists, and its privileges will be passed onto the DAO and its governance process.
  • No Limits: There will be no limits on the number of operations a proposal can have.
  • Flexible Voting: Flexible Voting is an extension to the OZ Governor developed by ScopeLift. It allows for the integration of novel voting schemes without changing or compromising the core security model of the DAO. Examples include voting with tokens while earning yield in DeFi, cross chain voting, shielded voting, and more. Flexible Voting is supported by Tally. It’s been audited and is now a OZ governor extension.
  • Upgradeability: We will use the upgradeable versions of the OZ contracts, and any future upgrades can be done through the upgradeable proxy functionality.
  • Tally Support : Tally will be used as the primary governance interface going forward, while preserving the history of past proposals.

After assembling and extensively testing the new Governor contracts, the contracts will be audited and deployed on Mainnet. A delegate will submit a proposal to add the new Governor as a pendingAdmin to the Timelock contract and make a call to the new Governor contracts to accept the admin role. Passing and executing this proposal will complete the governor upgrade process.

4 Likes

Thanks @garyghayrat - Appreciate ScopeLift’s work on this and look forward to seeing this implemented once the community has provided feedback.

Great job so far!

  1. Will the new governor have a functionality where a delegator will be able to push several proposals at a time?
  2. Can you share the migration/code?

Excited to see this in the works and Scopelift is a great team for this.

Can we have an approximate timeline for completion and milestones? Something like this is ideally fully audited and complete before the Community Multisig’s role as guardian expires

1 Like

Hi there!

  1. With the new governor, you will be able to include multiple operations without limits in a single proposal. There won’t be a functionality to create multiple distinct proposals directly through the governor, but you can achieve this using something like multicall.
  2. Of course! Once we’ve collected the community feedback, we’ll start developing the code. And we will share with the community the upgrade proposal details and the code after it has gone through the security review process.

Thank you! We’re working on scheduling an audit date and finalizing the timeline. We’ll update this post with the timeline soon. Can you tell me why it is ideal for the governor upgrade to be completed before the community multisig’s role expires?

1 Like

We say this is ideal as if the governor updates are sufficient to not needing the guardian (compound guardian, not the community multisig as a whole), then we won’t need to renew the Guardian’s role when it expires.