Voting on the blockchain sounds like a brilliant idea, promising to eliminate fraud while providing complete transparency to the final results.
But in practice, blockchain voting is extremely difficult to implement in a way that both keeps the votes private (so you don’t know how a person voted) and doesn’t require a third party.
There are a few voting apps already out there, like the Blockchain Voting Machine, Follow My Vote and TIVI, that use the blockchain as a ballot box. But each of these, in some way or another, relies on a third party to achieve voter privacy.
At the Financial Cryptography and Data Security Conference in Malta this week, however, a PhD student from Newcastle University in the UK, caught audience attention when he stepped forward with a proposal for secure voting that involves no third party for privacy – or for tallying votes.
Patrick McCorry’s Open Vote Network is a smart contract written in Solidity, where ethereum takes over the work of the trusted third party.
The solution, McCorry said, is ideal for boardroom voting, although not for large groups.
He explained the idea to CoinDesk:
“Everyone can cast their encrypted vote. And then at the end of the election, once all the votes have been cast, anyone, including observers, can simply add the encrypted votes together. It will cancel out all the random factors in the encryption and it will just reveal the final tally.”
When McCorry and his fellow researchers first took on the project, they ran up against two issues.
The first was that, in designing a voting scheme in ethereum, the platform would not compute the final tally until the final voter cast a vote, requiring 100% participation. The second was an adaptive issue where the final voter was able to compute the tally before casting a vote. This posed a problem, since knowing the vote tally upfront has the potential to sway a person’s vote.
However, using ethereum and cryptography, the Open Vote Network team found a way around both problems.
The system works like this: an election admin sends ethereum a ‘white list’ of voters. Later, when a voter registers for an election, he or she puts down a small deposit. Voters then have a limited time to cast their vote, or lose the deposit.
When a vote is cast, it is first encrypted before being submitted to ethereum. Once all the votes are in (or the time limit for voting is up), ethereum computes the tally, keeping votes private.
And once the final voter casts a vote, he or she cannot change that vote, even after computing the tally.
McCorry explained that his approach rides on the fact that the people in the election are known — an advantage in that it allows the use of peer pressure to encourage voting.
Moving forward, McCorry foresees a time when decentralized vote collections are implemented widely.
“We wanted to show that decentralized elections were possible. Because it has been in academic literature for years, but it has never been practically implemented,” McCorry said.
He added that the project – the code for which is now available on Github – also demonstrates that ethereum can support cryptography, as the Open Vote Network uses both ElGamal and zero-knowledge proofs.
McCorry concluded by saying that he and his team are moving on to research use of the blockchain for larger-scale elections.
Voting image via Shutterstock. Event image via Amy Castor for CoinDesk