Concept editionConceptNot a live service

The tally is public.
The ballot is yours.

Placeholder only. This form does not send anything anywhere. Coming Soon.
BALLOTS SEALED BOX PROOF ONLY
Illustration only. No real votes.
What it aims to do

Count every vote.
Reveal none of them.

i.

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.

ii.

Public, checkable result

Anyone should be able to verify the final tally from public data, without trusting the people running the vote.

iii.

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.

How it works (design sketch)

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.

Step 01

Register

The DAO publishes a list of eligible members, for example holders of a membership token at a snapshot.

Eligibility public
Step 02

Prove

On your own device you build a proof that you are on the list and have not voted yet.

Identity hidden
Step 03

Cast

You submit your choice with the proof. The program checks the proof and records the ballot.

Choice hidden
Step 04

Tally

After the window closes, the totals are computed and a proof shows they match the recorded ballots.

Result public
Privacy model

What 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

intended, unaudited, unbuilt
  • Which way each individual member voted.
  • Which eligible address a given ballot came from.
  • The secret your device uses to build proofs.

Stays public

on any Solana explorer
  • 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.
What a public record is designed to show
proposal  : <public text>
eligible  : <public rule or list commitment>
turnout   : <public count>
ballot #n  :  voter and choice not readable
result    : <public tally + proof>
Read this first

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.