We’re excited to announce that Shutter and Snapshot are partnering to bring Permanent Shielded Voting to all DAOs using Snapshot.
This new system will use a form of linear threshold-homomorphic encryption (specifically El-Gamal) in combination with zero-knowledge proofs, ensuring that every individual vote remains permanently private while voting results can still be transparently calculated.
Quick links:
- A proof-of-concept (PoC) has been built into a forked Snapshot UI (Watch PoC video)
- You can run the PoC yourself in 2 command line prompts (Try Out the PoC)
Let’s dive into the details.

Why Permanent Shielded Voting Matters
Permanent private voting is one of the most requested features in DAO governance. Vitalik Buterin has called for privacy. It’s supported by significant efforts in both industry (e.g., Shutter, Cicada) and academia (e.g., 1, 2, 3). And across DAO communities, everyday voters continue to raise the same concern: when every vote is public, governance breaks down.
The cost of public voting is real - retaliation, pressure, vote-buying, and strategic signaling over honest conviction. It discourages participation and distorts outcomes. In modern elections, ballots are secret for a reason. DAOs need the same protection.
With Permanent Shielded Voting on Snapshot, that changes:
- Permanent Privacy: No one can see how others voted during and after the vote.
- Censorship-resistant: No single party stop or forge votes.
- One-click Enabling: DAOs can turn on permanent Shielded Voting in one step.
- Modular: DAOs can turn on and off as needed for their proposals.
- Proven & Trusted: Shielded Voting has been live on Snapshot for 3 years with no privacy breaches. It has protected over 881 DAOs and encrypted 372,914 votes.
- Scalable: El-Gamal allows for voting to scale to millions of votes. Shutter API allows for Shielded Voting to easily integrate other voting platforms.
- Verifiable: ZK proofs allow for the final tally to be verifiable and auditable.
See the PoC in Action on Snapshot
In this PoC, users can cast yes/no votes privately using Shutter’s El-Gamal-based system. Multi-choice and other advanced voting types are also possible by splitting them into multiple binary sub-votes.
Try Out the PoC Yourself
You can run the PoC yourself in two command line prompts, by cloning this repo:
- Clone repo: github.com/pepae/sx-monorepo-elgamal
- Start the Snapshot UI and run the docker compose setup for the Shutter El-Gamal servers.
Why El-Gamal?
El-Gamal encryption is a special kind of linear homomorphic encryption that allows computations on encrypted data - such as summing votes - without ever decrypting individual votes.
Unlike general-purpose FHE, which supports arbitrary computations but remains extremely computationally costly, El-Gamal offers a practical, efficient alternative that’s scalable and viable. Using El-Gamal will allow us to more easily bring Permanent Shielded Voting to Snapshot’s massive user base, and to use this model on other DAO governance platforms.
Combined with Shutter’s threshold encryption approach, it also allows for the encryption/decryption key generation to be distributed and robust and it removes the need to trust a single, centralized party.
This is how it works on a high level: Consider a basic vote with three options: Yes, No, and Abstain, which we represent as 1, −1, and 0, respectively. Each voter encrypts their chosen option using the public key provided by Shutter and generates a zero-knowledge proof showing that their encrypted vote is valid, i.e., that it encodes one of the allowed values (−1, 0, or 1). The encrypted vote and the accompanying proof are then submitted on-chain.
After the voting period ends, the tallying authority (Snapshot), the Shutter Keypers, or any other designated party - verifies all submitted zero-knowledge proofs. It then homomorphically aggregates all valid encrypted votes to compute the encrypted tally. The Keypers collaboratively decrypt this tally using threshold decryption, ensuring that individual votes remain private, and generate a zero-knowledge proof that the decryption was performed correctly.
Note that while the PoC only supports yes/no/abstain votes, this can be easily extended to support more complex voting types by splitting into multiple binary votes and aggregating afterwards.
Learn more about how Permanent Shielded Voting works.
When is it Available on Snapshot?
Stage 1 is complete - the PoC is live in a forked Snapshot UI. We’re now preparing testnet integration before the final mainnet release.
Roadmap:
- ✅ Stage 1: PoC built into forked Snapshot UI
- Stage 2: Snapshot testnet integration
- Stage 3: Full Mainnet launch
What’s Next?
We’re working closely with Snapshot to bring Permanent Shielded Voting to the entire DAO ecosystem. Once live, every Snapshot space will be able to enable Permanent Shielded Voting - with no setup, no special tooling.
If you’re a DAO admin, delegate, or active voter who wants to see Permanent Shielded Voting enabled for your DAO on Snapshot, get in touch with us. We can help you put together a proposal that you can bring to your DAO for consideration - outlining why Permanent Shielded Voting matters and how it can be enabled in one-click once it's live on Snapshot.
Links/resources