Skip to content

mitmedialab/split-value-voting

 
 

Repository files navigation

Python3 code for Rabin/Rivest end-to-end split-value voting method(s).

Note: The MIT team referenced it's project to this code base and the corresponding paper for the Harvard TechSoc Global Hackathon on elections on April 15, 2018 at Harvard Law School.

This code is under development. It appears to be working correctly as intended, but could use a bit of cleanup in details. It is for simulating an election (not for actually running an election), in order to demonstrate the overall split-value method.

The relevant paper: http://people.csail.mit.edu/rivest/pubs.html#RR14a

This code simulates an election:

  • defines election ballot style
  • defines number of simulated voters
  • simulates casting of votes
  • creates simulated secure bulletin board
  • posts cast votes on bulletin baord
  • determines election outcome and posts to bulletin baord
  • posts commitments to first part of proof of correct election outcome
  • simulates random "verifier challenges"
  • posts second part of proof of correct election outcome

Implementation features:

  • universally verifiable proof of correctness of election outcome
  • open source (MIT) license
  • multiple races
  • write-in votes

It does not yet simulate:

  • encryption between voter and voting system
  • simulating failure of a server

Modules:

  • sv_main.py -- top-level module for simulating election
  • sv_verifier.py -- top-level module for verifying election
  • sv.py -- common routines
  • sv_election.py -- election data structure
  • sv_race.py -- race data structure
  • sv_voter.py -- voter data structure and casting votes
  • sv_server.py -- simulates server array
  • sv_tally.py -- computes election outcome
  • sv_prover.py -- produces proof of correctness of outcome
  • sv_sbb.py -- simulates secure bulletin board
  • default_election.sbb.txt -- SBB output for a small "default election"

About

Code for Rabin/Rivest split-value voting method(s).

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%