Voting with no early result.

Nobody should know who won before everyone else.

Today I’m launching ZeroVote, a voting app designed to make that possible.

In elections, someone has to count the ballots before announcing the winner. For a period of time—sometimes minutes, sometimes days—that person knows something no one else does.

This creates a trust problem. Everyone else must trust that person to protect the result and report it correctly.

Prediction markets turn that trust problem into a financial one: the person with early information can profit from it.

ZeroVote makes insider trading on the vote count impossible.

Most voting systems manage the problem by restricting access. ZeroVote removes the need for that trust.

On ZeroVote, an organizer creates an election and chooses when voting ends and when the result unlocks. ZeroVote emails each voter their own ballot link, and each voter casts one anonymous ballot—no account, no password.

That link goes to the voter and nowhere else. The organizer never sees it, so they cannot cast a ballot in anyone else’s name.

The ballots remain locked until the reveal time. No one, including the organizer, can see individual votes or a partial count. At that time, every ballot unlocks at once and the result becomes public.

At 7:59, no one knows who won.

At 8:00, everyone does.

The key does not exist yet

Each ballot is encrypted in the voter’s browser using a future value from drand, a public randomness network operated by independent organizations.

Drand produces a new, unpredictable value every few seconds. ZeroVote ties each election to the value drand will publish at the reveal time the organizer sets.

Until then, the value needed to unlock the ballots has not been created. It is not hidden on my server or held by the organizer. There is nothing to steal or leak.

At that moment, drand publishes the value and the ballots can be opened.

A count anyone can check

Preventing early access is only half the problem. The other half is proving that the final count is correct.

ZeroVote publishes a public record of every anonymous ballot. Anyone can download that record, run the open-source verifier, and reproduce the result.

The verifier checks that the ballots were properly registered, that no credential was used twice, that the public record has not changed, that the correct drand value opened the ballots, and that the announced result matches the ballots.

Voters also receive a receipt proving that their ballot was included. If a ballot is changed, added, or removed, the receipt no longer matches the public record.

The result does not depend on the organizer’s count or mine. Everyone can calculate it from the same evidence.

A fairer market

Prediction markets should reward better predictions, not earlier access to the answer.

A prediction market built on a ZeroVote election, settles as soon as the ballots unlock. That makes the market easier to trust, supporting greater participation and deeper liquidity.

ZeroVote is built for awards, boards, union chapters, co-ops, clubs, and any election where the result should remain secret until it becomes public.

ZeroVote is live today. The verifier is open source, and the API is documented.