We have heard from several teams that they are using Snapshot for collecting votes on proposals from their community, and then executing them through team multisig wallets via Defender Admin. With this in mind, we have been in touch with the dev behind Snapshot, and have been brainstorming a few ideas about integrating the two systems. So we wanted to open up the discussion to the community!
Let’s start with the strengths of each system. Snapshot focus is on creating proposals for the community to vote on, making it easy to plug in different voting strategies. Defender focus is on simplifying the creation, review, and execution of administrative transactions, by making it easy to run upgrades or call protected functions via multisigs (and soon timelocks!).
Regarding integration points, Snapshot is unopinionated, but has a nice plugin architecture that we can leverage. A limitation is that proposals are stored in IPFS and are hence immutable. On the Defender side, we have a bit more freedom on what we want to do
Given all the above, this is a possible flow we have in mind:
Create proposal in Admin
As a project team member, you create a new proposal in Admin for a transaction that would enforce a change in the contracts, such as an upgrade. This is Defender’s bread and butter, making it easy to craft a transaction for an admin action out of a few inputs.
Making the proposal public
Once the proposal in Admin is created, you can make it publicly accessible via a unique URL. We can push this even further and turn it into a “Publish to IPFS” option!
Creating the equivalent proposal in Snapshot
Here’s where the magic happens. Using a Defender plugin in Snapshot, during proposal creation, you can link the Snapshot proposal to the Defender one, using the public URL generated in the previous step. This gets stored in the Snapshot proposal metadata on IPFS.
Viewing Snapshot info in Defender
With both proposals linked, we can now show you Snapshot voting information within Defender Admin, so you can know how your community has voted on a proposal before activating it. We can even add further restrictions and prevent you from executing if the vote hasn’t passed - or at least give you a very stern warning.
Viewing Defender info in Snapshot
And now your community can also see exactly what transaction will be executed associated to the proposal they are voting on, giving them further transparency on the process. And since the Defender Admin proposal is publicly accessible, we can also link to Defender so they can see all the decoded transaction info.
So what do you think? Does this align with your usage of Snapshot at the moment? Please share your feedback!