[Formal Review][RGP-17] Upgrade Governance Contracts from Compound Alpha to Open Zeppelin Governor

Author(s): @abbey & @shelb_ee
Type: social
Created: 2023-09-06
Status: active
Discussion post: [Discussion][RGP-17] Upgrade Governance Contracts from Compound Alpha to Open Zeppelin Governor

The corresponding Snapshot poll will be live from Monday, October 16th at 5pm CET until Monday, October 23rd at 5pm CET. Vote here!

Overview

This social proposal aims to gain consensus on upgrading Radworks’ current governance contracts (Compound Governor Alpha) to Open Zeppelin Governor with the assistance of the Scopelift team. If the community approves moving forward with this upgrade, the contracts will be developed by the Scopelift team via a grant from the Grants Org. Final approval and execution of the new contracts will happen via an Executable Proposal in a future proposal cycle.

Why upgrade?

Governor Alpha was the battle-tested industry standard at the time of the launch of the $RAD token in February 2021. It was the most appropriate choice for governance of the Radworks treasury. While Governor Alpha has all of the basic capabilities we need as a community-governed network, it is now deprecated, leading to a list of limitations. Other major DAOs have already moved on from Compound Alpha, including Compound itself.

Outdated governance contracts come with a number of specific risks and downsides:

  • Alpha was designed as an immutable contract, meaning any changes to governance parameters (e.g. voting period, quorum, etc.) would require deploying a new contract and transfer ownership of the timelock instead of just being able to upgrade the existing one
  • The DAO’s treasury is susceptible to a multi-block MEV attack due to a 1 block voting delay
  • The DAO treasury cannot hold ETH directly in the timelock, and any ETH sent directly to the timelock would be stuck
  • The DAO is limited to proposals that execute 10 onchain actions at a time
  • The DAO’s governance parameters cannot be updated by the DAO
  • The contracts are incompatible with tooling providers, who increasingly eschew support for Governor Alpha
  • Less granularity when voting (only yes/no voting options, no option to add note to onchain votes)

The newer versions of this governor contract (Compound Governor Bravo and Open Zeppelin (OZ) Governor) have more capabilities and allow for upgrades and changes to governance parameters without requiring migration. We believe that upgrading a well-maintained governance system is crucial for long-term security and sustainability, and that many of the features and capabilities available in the latest version of the our existing contracts will enhance Radworks’ governance system, enabling a more detailed expression of input into proposals and providing easier management tools for governance facilitators.

Upgrading to Open Zeppelin Governor

The Governance Committee proposes we upgrade to Open Zeppelin Governor. Open Zeppelin Governor is the successor to Compound Governor Bravo (which was the successor of Compound Alpha), although remains fully compatible with Governor Bravo (i.e same benefits and features). The OZ Governor does, however, enable further features and integrations leading to more modularity than Bravo, making it a clear choice. Some key features that Open Zeppelin offers includes:

  • Build-in upgradability of the contracts
  • More granularity in voting choices onchain (yes, no + abstain, ability to add note/reasoning to votes onchain)
  • More possible modularity in terms of features and tooling integrations

Some key differences between Bravo & OZ Governor that we found interesting include:

  • OZ lets you describe quorum as a fraction of the total supply instead of a fixed number of tokens
  • OZ supports the flexible voting extension, which allows voting from an L2 or a shielded pool, new delegation schemes, etc.)
  • OZ supports NFT voting in addition to ERC20 voting
  • OZ makes the timelock delay optional

The Flexible Voting extension - which was created by the Scopelift team & is only compatible with OZ Governor - is an example of one of the additional tools that can only be enabled on the Open Zeppelin Governor that is worth pointing out. The extension can enable some of the following features:

  • Voting with tokens while earning yield in DeFi
  • Voting with tokens bridged to L2
  • Shielded voting (i.e. secret/private voting)
  • Cheaper subsidized signature based voting
  • Better voting options with tokens held by custodians
  • Possibly enable vestees to delegate & vote with their share of the unvested tokens currently held in the multisig vesting contracts. It would require some extra smart contract development though.

The Flexible Voting contracts are less adopted or “battle tested” as the governor contract systems, but Gitcoin and PoolTogether have recently adopted the Flexible Voting extension into their OZ Governor. The Governance Committee is interested in exploring integrating the Flexible Voting extension in the future due to its modularity, however, are not proposing to include it as part of the initial upgrade.

Ecosystem Adoption

The OZ Governor has seemingly become the industry standard, and is used by many DAOs both small and large. As it seems to have become the default choice for many small DAOs, there are a number of large DAOs using it. For example, ENS launched their DAO on OZ Governor. HOP Exchange, Unlock, Optimism and others are other examples who use OZ-based Governors (i.e. some have built a customization on top of the OZ Governor but use the core codebase).

Security

The OZ Governor contracts were released in August 2021 and have been consistently audited since. According to Scopelift, OZ Governor is more actively maintained than Compound Governor Bravo. Ben from the Scopelift team points out in their Grant application that would fund the upgrade, upgrading the DAO’s Governance contracts helps it avoid security risks (e.g. multi-block MEV attack) and keeps it in line with current best practices & tooling developments.

The Scopelift team plans to leave the existing Timelock in place when upgrading the Governor contract, which helps reduce risks that would come with the error-prone process of migrating all the contracts managed by Radworks.

Why not Bravo?

Compound Governor Bravo is the successor to Governor Alpha. Some other major differences between Alpha and Bravo are listed here:

Compound Bravo has also been adopted by major protocols over the years. Uniswap upgraded to Bravo in August 2021. Wintermute Research also provides a useful description and analysis of the Bravo contracts and who is using them. Open Zeppelin conducted an audit of the Bravo contracts when they were released in early 2021. As the proposal process to change or request funds from the contracts are the same as Alpha (pass a governance vote and timelock delay), there are no additional security or governance risks compared with using the Alpha version.

The general consensus from Tally and Scopelift, however, is that Governor Bravo is on its way to becoming deprecated. There is no indication that anybody from the Compound is or is planning on working on the contracts moving forward. OZ Governor seems to be the modern implementation of Compound Bravo that most are being recommended to upgrade to.

Why Scopelift?

Scopelift is a small team of expert, full stack EVM devs that was recommended to us by the Tally team. The Governance Committee has been in conversations with their team for the past few months and is very impressed with their knowledge, credentials and willingness to dive into exploring new capability possibilities. Scopelift has worked with many great projects in the space, including Uniswap, Optimism, Gitcoin, Endaoment, Llama, PoolTogether, Yield, Cozy, Obol, Railgun and others. They are also working with tooling providers like Tally, which will be supporting it in their frontend. You can read more about their credibility in their Grant proposal.

The Scopelift team welcomes any review from Radworks devs or community members with relevant technical experience. All the work they do for the upgrade will be open source and publicly available. You can take a look at the repos they used for PoolTogether and Gitcoin.

Logistics

Upgrading our governance contracts will require both general consensus from the community to signal approval for an upgrade (social proposal) and subsequent on-chain vote (executable proposal). Gaining consensus on this Social Proposal is the first step.

In order to preserve USDC in the treasury, the Scopelift team is applying for a grant to fund the majority of their work with the condition that funds will only be received if this proposal passes. The Scopelift team has submitted an application for a Grant to fund their first milestone work.

If the community signals support for the upgrade via this Social proposal and the Grants Committee approves the Grant, their team will start developing and testing the new contracts. Once their work is complete, they will submit an Executable Proposal to the Radworks community for the final approval and execution of the governance upgrade. This proposal will include a RAD payment for completion of the final milestone.

Timeline

If this proposal passes the October cycle and the Grants Committee approves the application by the end of October, the Scopelift team will need around 1 month (100-200 hours of testing before implementing) of development and auditing. If all goes well, the final proposal to approve the contracts could be published during the January proposal cycle (we will not have a December cycle given holidays).

:mega: CALL TO ACTION & NEXT STEPS:

  • Provide final feedback for upgrading to OZ Governor The Scopelift team will be monitoring this post and answering questions as they come.
  • Vote in the Snapshot poll If the upgrade is approved, the Scopelift team will receive Grant funding and begin developing the new contracts over the coming weeks.
1 Like

:sparkles:October Snapshot Poll Results​:sparkles:

This proposal has PASSED :white_check_mark: with 4.5M RAD in support of the proposal. See final results here: Snapshot

The passing of this proposal will signal to the Grants Committee that the community approved this work outlined in Scopelift’s grant application and can start being funded. The Scopelift team will start preparing and testing the contract upgrade. Once their work is complete, an Executable Proposal will hit the forum to review, confirm and implement the new contracts. The proposal authors expect this happen within Q1 of 2024.

UPDATE!! :information_source: :sparkles:

The Scopelift team has been hard at work preparing for the governance contract upgrade! As a reminder, this work is being done in preparation for an upgrade of the Radworks governance system from the outdated Compound Alpha contracts to the new standard - Open Zeppelin Governor.

They have finalized the candidate Governor and are hoping for it to be reviewed and received feedback from devs in the ecosystem!

:link: Contract Repo: Radicle

(and yes - they are mirroring the upgrade on Radicle! :space_invader:)

ASK: They are asking for a general review from our devs to make sure they believe everything looks correct and is correctly configured. @bendi mentioned he is happy to hop on a call and/or answer questions here async to get anyone who need up to speed!

The goal is to have all reviews completed and feedback collected by the end of January so that we are able to submit the final, executable proposal in the February proposal cycle. Please share any comments or feedback as soon as possible in order to help us better prepare for the upcoming proposal! :pray:

The contracts look pretty good :+1: I only wonder if we want to have the quorum threshold to be a hardcoded value? The proposal threshold can be changed with a simple proposal as the Rad ownership evolves, but not the quorum threshold, it’s fixed until we migrate to a new governance contract.

1 Like

Thanks for reviewing it Igor! The quorum threshold will remain the same (4% of total supply - or 4,000,000 RAD).

In fact, all governance parameters will remain the same (as seen in the existing contracts), with the one suggested exception from the Scopelift team to increase the “Voting Delay” - which is the delay between the time a proposal is posted onchain and when people can start voting on it. The voting delay for our governance contracts has been at one block since it was created, and for security reasons the Scopelift team suggested we increase it. This will be explained and discussed in further detail in the upcoming proposal, but the plan is to adjust it to 12 hrs instead of one block. This is also more in line with what other DAOs have set as their Voting Delay.

1 Like