[repo] [presentation] [chat room]

tallyard

tallyard is an authenticated voting system that ensures voter privacy while preventing double-voting. Voter privacy is achieved via the homomorphic secret sharing system outlined here and double-voting is prevented by a STARKs zero-knowledge proof as described here. Voters’ computers communicate with each other directly over a peer-to-peer network. While there is a “master” node that decides what the candidates of the election are, it does not have any privileges once voting begins.

Have a look at the presentation I gave for my university’s cybersecurity club for an overview of the mathematics.

The zero-knowledge implementation is not entirely finished.

tallyard is very much a work-in-progress and is only useful for elections where everyone is voting simultaneously, such as a club election, which it was actually used for.

Installation

Arch Linux

Latest Stable Version

$ yay -S tallyard

HEAD of master

$ yay -S tallyard-git

From Source

Ensure you have the Go programming language installed. Then:

$ git clone https://gitlab.com/edwargix/tallyard
$ cd tallyard
$ make
$ # the tallyard binary is now at ./tallyard

Usage

Once every voter wishing to participate in the election has tallyard installed, everyone should run it:

$ tallyard

One voter, henceforth called “the master”, will then choose “Create Election”, enter the candidates of the election, and share the printed “election key” with everyone else1. Every voter who is not the master will instead select “Join Election” and paste the “election key” provided by the master. Voting will begin once the master hits the enter key. However, the master should only do so once he has received confirmation of a connection from all of the other voters.

Why Go?

Future Work

Stuck? Have suggestions or feedback?

Join our Matrix room to join the discussion.

If you’re unfamiliar with Matrix, you can learn about it and sign up for an account here.

Origin of the name

“Tillyard” is the last name of the author of the The Elizabethan World Picture, which I read in my phenomenal Shakespeare class. Also, the voting system works by keeping a “tally” of votes in a secretive manner. These two notions together yield “tallyard”.

“tallyard” is written in lowercase letters to follow the convention of UNIX executable names being all lowercase.


  1. preferably over a secure medium↩︎

Creative Commons License
This work is licensed under a Creative Commons Attribution 4.0 International License.