Private Tari Governance Voting Tool Progress Update
With the recent discussion around CC voting and governance, I thought this was a good time to share what I have been building.
I have been developing an open source private voting tool for Tari governance. The goal is to allow an eligible person to vote without revealing which voter they are, while still allowing the election and final results to be independently verified.
What is already working and tested
-
Real Tari Triptych linkable ring proofs for anonymous voter eligibility
-
Election scoped nullifiers that prevent the same voter from voting twice without revealing their identity
-
Proofs cryptographically bound to the specific election, voter registry, and ballot selection
-
Real multi voter elections and larger voter registries
-
Duplicate voting attempts, including generating a completely new proof and ballot from the same voter
-
Replay attacks
-
Altered ballot selections
-
Corrupted and invalid proofs
-
Wrong election ballots
-
Altered voter registries
-
Governance source revision binding
-
Strict canonical ballot encoding and decoding
-
Election lifecycle enforcement
-
Deterministic tallies
-
Local voter ballot generation, verification, and export
-
Organizer ballot import and independent verification
-
A separate verifier that can verify an election without trusting the GUI or election operator
The current protocol and registry limits support up to 4,096 eligible voters in a single election. That is the configured maximum, not a claim that I have already run a full 4,096 voter election through the GUI. Larger scale and performance testing is still part of the testing before release.
A large amount of development time has gone into trying to break the system rather than simply making a Vote button work.
The ballot office now accepts the same canonical ballot bytes regardless of how they are delivered. That means an offline ballot file and the upcoming private Internet submission system use the exact same cryptographic verification and duplicate protection.
What is being built next
The next major part is private Internet ballot submission.
The transport design currently includes:
-
Ed25519 signatures to authenticate the official election transport configuration
-
RFC 9180 HPKE encryption
-
X25519
-
HKDF SHA256
-
ChaCha20 Poly1305
-
One click private submission through Tor and an onion service
-
An optional non Tor private relay using a split trust design
-
Fixed size padded messages to reduce simple ballot size correlation
-
Privacy preserving batching to reduce timing correlation
-
Private acceptance and inclusion receipts
-
Batch commitments with operator side Tari Ootle anchoring
-
No silent fallback to an identifiable connection if private submission fails
Voters will not need a Tari wallet, tTARI, an account, or their own Ootle transaction.
Ballot privacy
The current V1 is an anonymous ballot system, rather than a cryptographically sealed ballot system.
The ballot can ultimately be publicly verified, but the cryptography is designed so the ballot is not tied to the identity of the voter.
Fully sealed ballots, where even the election operator cannot inspect ballot choices before voting closes, could be added later if Tari actually needs that level of protection.
I would rather release and test the anonymous V1 first, see what the community actually wants, and then decide whether the additional complexity of sealed ballots is worthwhile.
Open source release
The project will be released open source on GitHub soon for public testing and review.
The goal is for anyone to be able to:
-
Inspect the code
-
Reproduce the tests
-
Independently verify elections and final tallies
-
Review the privacy and threat model
-
Try to break it
-
Suggest improvements
I should also have the first proper GUI screenshots to share within the next week, including the voter flow, anonymous proof generation, ballot verification, and organizer side. I’ll hopefully deploy it all within this week ![]()
There is still more security testing, larger scale testing, and private transport work to finish before the first public release, but the project is well beyond the initial proof of concept stage now.











