The purpose of this post is to introduce Flexible Voting and begin the discussion about its adoption by the Uniswap DAO. Flexible Voting is an extension to the Governor contract. It allows for the construction of new mechanisms which make governance participation easier, cheaper, and more accessible for UNI holders.
Flexible Voting was developed by ScopeLift as part of our grant from the UGP. Before explaining more about Flexible Voting, let me introduce ScopeLift.
ScopeLift is a dev shop focused on crypto. We’re a small technical team with many years of EVM engineering experience. We’ve had the pleasure of working with many great clients including Gitcoin, Optimism, Cozy, Endaoment, POAP, and others.
ScopeLift was heavily involved in porting Uniswap v3 to the Optimism in the early days of that network, before Optimism moved to full EVM equivalence. We’re also the team behind [Umbra], a stealth address system developed with grant funding from the EF, MolochDAO, Gitcoin, and others.
ScopeLift received a UGP grant earlier this year to work on Governance related projects. One of those projects is Seatbelt, which we helped release and improve. The other is Flexible Voting, which is the subject of this post.
Flexible Voting is an extension to the Governor contracts that enables delegates to split their voting weight across For, Against, and Abstain on any given proposal. This capability is especially useful when a contract serves as the delegate.
By enabling arbitrary contract logic to roll up the voting weight of disparate parties into a single delegated vote, many possibilities are unlocked. Having a contract act as the delegate also means these mechanisms can be implemented without introducing new trust assumptions.
The inspiration for Flexible Voting came from cUNI (Compound UNI). When a UNI holder deposits their tokens into Compound, they lose the ability to participate in Governance. Attempts to mitigate this required trust and were gameable.
Flexible Governance fixes this problem. A deposit contract like Compound can delegate its voting weight to another “voting” contract. That contract in turn can implement its own set of rules enabling cUNI holders to vote on proposals.
In addition to allowing token holders to vote while their UNI is active in DeFi, Flexible Voting enables many more use cases, such as:
Voting on L2 with bridged tokens
Shielded voting (i.e. secret/private voting)
Cheaper subsidized signature based voting
Easier voting with tokens held by custodians
For a much more in-depth introduction to Flexible Voting, how we built it, and what it enables, check out post on the ScopeLift blog.
Flexible Voting is implemented as an extension to the OpenZeppelin Governor contract. It is open source. Adopting it would require a carefully crafted governance proposal to be submitted and voted on.
ScopeLift is committed to working with the community to see Flexible Voting adopted. We’d love to hear your feedback. If you’re a member of the community and you’d like to help us move Flexible Voting forward for Uniswap, please get in touch.
For our part, we’re working to expand the system’s capability by implementing some of the concrete use cases which Flexible Voting makes possible. We’re working to see Flexible Voting, which is backwards compatible with existing Governor tooling, directly and fully supported. We’re also proposing Flexible Voting to other DAOs.
If you’d like to help us build it, fund it, or get it adopted by another community you’re a part of, reach out!