The tally is public.
The ballot is yours.
Count every vote.
Reveal none of them.
Private ballots
A member votes with a zero-knowledge proof. The design goal is that the proof says "an eligible member voted this way" without saying who.
Public, checkable result
Anyone should be able to verify the final tally from public data, without trusting the people running the vote.
Less pressure to sell votes
If nobody can see your ballot, it is harder for others to pay for it or punish it. That is a goal, with real caveats listed below.
From voter roll to tally, in four slips.
The intended mechanism, shown as an illustration. It describes a design we want to build, not something you can use today.
Register
The DAO publishes a list of eligible members, for example holders of a membership token at a snapshot.
Eligibility publicProve
On your own device you build a proof that you are on the list and have not voted yet.
Identity hiddenCast
You submit your choice with the proof. The program checks the proof and records the ballot.
Choice hiddenTally
After the window closes, the totals are computed and a proof shows they match the recorded ballots.
Result publicWhat is hidden. What is not.
Ballotshade aims to reduce linkability between a member and their vote. It does not provide anonymity in a general sense, and it cannot stop someone from simply telling you how they voted.
Hidden by design goal
- Which way each individual member voted.
- Which eligible address a given ballot came from.
- The secret your device uses to build proofs.
Stays public
- The eligibility rules and the list (or commitment to the list) of who may vote.
- Turnout: how many ballots were cast.
- The final result, and the proof that it was counted correctly. Transaction times and fee payers are visible too.
Known limitations — please read
- Not built, not audited. Ballotshade is an early idea. There is no deployed program, no audit and no working app. Do not run a real governance vote on the strength of this page.
- Linkability, not anonymity. The aim is to make a ballot harder to tie to a member. It does not hide who you are. Wallets, fee payers, timing and off-chain behaviour can still point back to you.
- Small groups leak. If a DAO has few members, or the result is lopsided or unanimous, observers can infer how people voted even without breaking any cryptography.
- Vote-buying is not solved. Hiding ballots helps, but a voter can still show a buyer their secret or a proof of how they voted. Strong receipt-freeness and coercion resistance are hard open problems and are not promised here.
- Eligibility is a trust point. Whoever defines the voter list (for example a token snapshot) shapes the outcome. Ballots can be private while the roll itself is unfair or sybil-prone.
- Turnout is public by design. Anyone can see how many ballots were cast, and may learn more by watching timing.
- Cryptography risk. Zero-knowledge systems are subtle. A bug could expose ballots, allow double voting, or corrupt a tally.