The purpose of this post is to introduce Flexible Voting and begin the discussion about its adoption by the Gitcoin 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 GTC holders.
Flexible Voting was developed by ScopeLift as part of our grant from the Uniswap Grants Program. Before explaining more about Flexible Voting, let me introduce ScopeLift for anyone whose not familiar with us.
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 Uniswap, Optimism, Cozy, Endaoment, POAP, and others.
ScopeLift is a long time friend friend of Gitcoin. W’ve had the privilege of contributing to Gitcoin in various ways over the last few years, including helping to build the cart based checkout experience, the bulk checkout smart contract, the BrightID integration, the integration with zkSync, and the first iteration of dGrants.
We’re also the team behind Umbra, a stealth address system developed with grant funding from the EF, MolochDAO, and of course Gitcoin
ScopeLift received a UGP grant earlier this year to work on Governance related projects. One of those projects 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. Any holder of GTC who wants to deploy their tokens in DeFi would experience the same issue.
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 DeFi depositors to vote on proposals.
In addition to allowing token holders to vote while their GTC 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. Since the DAO is actively considering an upgrade to the OpenZeppelin Governor, now would be the perfect opportunity to adopt Flexible Voting, and ScopeLift is committed to helping should the DAO choose to do this.
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 Gitcoin, 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, including Uniswap, which funded its initial development.
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!