Voting Systems on the Blockchain

November 6, 2018
by Sharon Moran

There has been much discussion in cryptocurrency communities about voting systems on the blockchain.  At first glance, it appears that the blockchain is a natural fit for voting.  However, the more one examines the issues with voting, one realizes that a blockchain solution would require a lot of thought and some safeguards to ensure a non-hacked election.

A lot of the issues that we will talk about here are not specific problems with voting systems on the blockchain.  The same problems are also tied to traditional voting systems.  So, let’s look at the requirements for a sound voting system and how the blockchain could improve it.

  1. Voting only occurs for a specific duration.  Years ago, traditional voting only occurred on a specified day.  One had to apply for exemption with an absentee ballot. Today, most jurisdictions have the ability for early voting and/or vote by mail.  The blockchain could handle this one quite effectively.  For example, Ethereum smart contracts utilizes the Unix time system of seconds since 1970.  So, whether the duration of the election occurs over minutes, hours, days, or months, the blockchain can easily support this. 
  2. Voting must only occur from valid voters.  Tradional voting systems have some safeguards in place. However, there are some security holes that a would-be hacker could exploit.  Most traditional voting systems require a prior registration form the voter, AND, the voter must provide “something” when showing up to vote.  In some voting jurisdictions, you only need to provide a name and signature.  Other jurisdictions are extending this to make some voters present a photo ID.  The blockchain could solve this with prior dissemination of a public/private key.  However, how would this key get safely delivered to the voter?  Also, if the voter loses this key, how is an additional one re-issued?
  3. Ensure that a voter votes for the intended candidate.  Let’s assume candidate Apple is running against candidate Orange. If a voter votes for Apple, how does the voter know that Orange didn’t receive the respective vote?  In-person voting machines also fail to solve this problem effectively.  Good old fashioned paper ballots actually solve this the best.  A voter fills in the bubble with a pencil and then submits the ballot. However, paper systems do have a weakness here of the voter worrying whether their vote was counted.  For example, was the block filled in correctly?  Where there any stray marks that could potentially setup an ambiguous voting situation? For the blockchain to solve this problem, I believe some type of multifactor information needs to get back to the voter.  The voter needs to cast the potential vote, and then something should comeback to the voter, potentially from a side blockchain that wants to confirm a vote for Apple. Or, maybe the solution would be a separate view key that would allow the voter to look at their vote.  If the vote doesn’t match, then a violation could be filed. 
  4. Support for a recount. Perhaps one could argue that recounting is only needed for paper ballots.  However, real life candidates will be looking for a auding system of some type. The blockchain could support this.  The question is more how much privacy is going to be exposed to achieve this.  Would information about when votes were casted, from what IP addresses, etc be available for the general public?