Modular governance: Bringing hooks to OpenZeppelin

EthCC[8] · 2 Jul 2025 · 8:35

Kent Fenwick demonstrates governance modules built through Agora’s work with OpenZeppelin. The presentation examines adding and removing hook-like functionality while remaining compatible with iVotes and OpenZeppelin standards.

Speakers

Topics

From EthCC[8], hosted by Ethereum France.

Transcript

[Music] Hello everybody. So the future of governance is modular. That's what we're going to talk about today. And really what is governance in web 3? So if you're growing and engaging builders, if you're aligning incentives across groups, if you're programmatically allocating capital or updating code, controlling who gets access to your data, moderating, controlling what AI agents can do, guess what? You're doing governance and maybe you just don't know it yet. And really, if you think about it, if you have an EOA wallet, you don't

need to worry. It's a little risky, right? Maybe you got a small group of people, you're using a multi-IG, but as soon as you have a bigger group, a bigger decentralized group, that's when you need a governor, that's when you need governance. And that's really what we're going to be talking about here today. So, if you're not familiar with governance, has anyone here voted on a Dow or seen a DAO? Awesome. We got some here. So, you know, you're making a proposal. The community is going to vote on that proposal and then that's going to go to a time block where you're going to get to make sure that it's good before it goes and takes an action on a treasury or takes an action on a protocol.

So, who here has heard of Open Zeppelin, right? They're kind of a big deal in the web 3 community. We think so, too. So, our original governor at Agora, uh, we built around Open Zeppelin and really we added some proposal types, we added some scopes, some voting modules. These were things that we wanted to see uh makes makes governance safer, makes it better. But we ran into a problem. And the problem is that as we would work with new customers and deploy new governors, we got into this real mess where we had lots of governors out there. And we thought to ourselves, well, what do we do? Do we use factories? Should we be using uh forks?

and we decided to use modules modules. Modules and modules are hard to do in solidity which is why it's an exciting thing uh for me to show you. So we started again with our core open zeppelin uh foundational governor around that we took our same agora governor and then we went and modularized all the key components around that. So we have voting power modules, vote modules themselves, time lock modules, and access control modules. So all of this now lets you have a really flexible modular governance system built on top of this amazing foundation of Open Zeppelin.

And we call this the governor 2.0. So my name is Ken Fenwick. I'm the co-founder and CTO of Agora.xyz XYZ and we build amazing onchain governance products to help communities grow and engage. And what Governor 2.0 really wanted to do was we want fast customization and fast deployments. We want to make sure that we're not introducing all these new governance standards. We want to build on top of existing uh really rock solid governance primitives so that you don't have to learn a whole new system. And that was Open Zeppelin. And we took a lot of inspiration from unis swap when we built this hooks ba hookbased

architecture which I'll show you. It's really cool. So essentially now inside of the governor we have this concept of a base hook that you can go and extend and you can go and override or you can go and tap in to the governance life cycle. So again, we took a lot of inspiration from Uniswap V4 and we've created 16 different hooks into the governance life cycle. So after a vote is succeeded, before a vote is cast, after a proposal is cued, before a proposal is executed, you now have the ability to introspect, to add code, to perform actions based on these. Some of these are going to alter

state, some of them are not going to alter state for security reasons. But let's say you wanted to build some kind of an AI proposal generation or moderation. Awesome. Hook into the before propose and make sure that all of the formatting and content enforces to some uh parameters that you have before that vote goes on chain. Maybe you want to gatekeep. You want to make sure that only verified humans can vote on something. Awesome. hook into the before vote and make sure that you are dealing with a verified human before that person goes and votes. Uh let's say you want to keep things synced, right?

Notifications, crosschain messaging, these are really really important. Great. Tap into after vote succeeded after execute and make sure that you're keeping all of that state that you have on chain uh synchronize. We're really excited to announce that we'll be deploying this uh it'll be the the world app will be the first app running on governor 2.0. Uh this is coming out in a few weeks. So watch for that. Really exciting from uh from the world team in Agora. And of course it's audited by Open Zeppelin. So we made sure we got the the best uh our good friends to make sure that we were going to be safe and secure along the way.

So what's ready to use right now? So, you can head over to our GitHub repo, which I'll show you in a bit, and you can use our top choice and threshold votes. So, if you want to do onchain uh election style uh voting for multiple options, optimistic votes, so if you want to keep your community engaged, you don't want to get too much apathy, you can submit an optimistic proposal, and only if people really don't want that to happen will they come and vote. That's ready to go. We talked about world ID gatekeeping. Uh world ID gatekeeping. that's ready to go and multi-token support. So, if you have maybe an ERC 721, an ERC20 floating around and you want to use that, we've got you covered.

And coming soon, we're really excited about this one, our crosschain LZ read and crosschain right support with layer zero. This is really going to allow you to deploy your governor anywhere you want and take action on any chain that's supported by layer zero. Really excited to be partnered with them. Uh support for Gauntlet vault. Gauntlet has these really awesome uh vault products. So instead of using a a standard time lock, you could use a Gauntlet vault. And really excited about this one. I'm excited about a lot of things, but I'm really excited about uh Macy private voting. Private voting is a one of the most requested features we get at Agora.

It's a really complicated thing to do, requires a lot of infrastructure to do well, and we're really excited to be bringing that to Agora Governor 2.0 this year as well. I got to give shoutouts. Got to give shout outs to Corey, to Cairo, to Open Zeppelin, to Yakobo, and the entire Agora team for making this possible. What are you going to build? What are you going to build with this? It's easy. Go forkus right now on GitHub. The code is there. Thank you so much. I'm Ken Fenwick, the co-founder uh and CTO of Agora Governance. And hit me up on uh on X and let's chat. Thank you very much.

Any uh any questions? Sir about the sir can you talk a little more about the private voting and specifically what kind of privacy you're providing because I guess there can be different levels right uh yeah so um so Macy has a lot of Macy is a is a is a standard for private voting uh it's a it's a whole other open source project so in the Macy um in the Macy module we're working on we will have shielded ballots which means that you will not be able to see the result of the vote as the vote is progressing and then after a given time we will be decrypting the votes and you'll see the result of the

vote afterwards. So it's really a shielded ballot not shielded user vote. Oh awesome. Oh amazing. Sounds good. Yeah. Any other questions? Awesome. Thank you very much.