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.