As I was writing this, the entire U.S. waited with bated breath to learn the results of the 2020 general election. Although former Vice President Joe Biden has been elected – with one notable dissenting opinion – I have no way of knowing whether my own ballot was counted or declared “fraudulent” and thrown out. That matters.
Last week saw reports of voter intimidation, closed polling sites, fears of lost and late ballots and accusations of voter fraud. The COVID-19 pandemic has driven unprecedented levels of mail-in voting, a method which is secure but relies on an infrastructure that is already defunded and spread thin. These problems all build on top of the usual low turnout numbers and the legacy of voter suppression in the U.S.
Nate Williams is a recent graduate and full-stack developer at Vocdoni, an e-voting project built on open source technologies including Ethereum, zk-SNARKs and IPFS.
The chaos surrounding the 2020 election has exposed cracks in the state of U.S. democracy. While much of this uncertainty stems from larger social and political issues, at least some fault can be attributed to the way the election itself was carried out.
This election has made it clear: 19th century voting methods are incapable of adequately expressing the will of such a huge, diverse and fractured population. We need a better way to make decisions.
Is digital voting the solution?
What if we had a system in which everyone could vote from their mobile phone and open a browser to verify the results of an election, all without having to place trust in any central authority?
This system would enable civic participation to fundamentally shift as trust in collective decision-making grows and the barriers to direct democracy shrink. Many of the problems elections currently face, from poor security to voter turnout and beyond, could be ameliorated – if not completely solved – through blockchain voting.
A growing number of people are beginning to see digital voting as a valuable route to recovering public trust. Binance CEO Changpeng Zhao and Ethereum co-founder Vitalik Buterin discussed the matter recently.
“Develop something now, get it approved (obviously hardest step), and get 300 million plus (fully KYC’ed) users in 4 years time. Any capable developer should be willing to do it ‘for free,” Zhao tweeted.
To which Vitalik replied, "The technical challenges with making a secure cryptographic voting system are significant (and often underestimated), but IMO this is directionally 100% correct.”
Despite a host of challenges, digital voting seems to be an inevitable path forward for many countries. So rather than shying away in hopes that it’s never implemented, we should address these challenges. The technologies behind state-of-the-art cryptocurrencies have already been theorized to solve many of these problems, so they are a good jumping off point.
The trust and privacy dilemma
There are some reasons to be skeptical of our ability to host safe and secure digital elections – countless pieces have been written on this topic. One of the most notable came from YouTuber Tom Scott. As he explains, the main problem with voting can be summarized as a dilemma between two seemingly opposed properties: anonymity and trust.
The only way to fully trust the integrity of a system without relying on any authority is for it to be end-to-end verifiable, accessible and transparent to anyone. But how is this even possible if votes must be anonymous?
Providing trust with blockchain
Since the origins of blockchain, it has been speculated that the technology could be used for voting. However, we have yet to see such a solution deployed.
Many projects claim to use blockchain for voting, but most only leverage it as a mechanism to publish votes that are collected and processed by another system. These claims are misleading, this use of the blockchain does not solve the core issues of digital voting. Votes can still be manipulated up until the point they are published.
In order to offer end-to-end verifiability, a blockchain voting system must allow ballots to be directly cast onto the blockchain. Under such a scheme, any voter can ensure that their vote has been counted. Furthermore, auditors can check the integrity of the system from start to finish.
A blockchain voting system could guarantee that no votes are lost or modified in transit. Due to the open and distributed nature of blockchains, such a system is highly resilient to DDoS attacks and lacks a centralized back end that could misbehave or be infected with malware. And, notably, results would be available as soon as an election ends.
Providing privacy with zero-knowledge proofs
The amazing transparency of the blockchain also limits its ability to provide privacy to digital voting.
A blockchain is a perfect structure to log and ensure the integrity of data, but it also allows the origins of this data to be traced. An anonymous voting system would need to decouple transactions (ballots) from their origins. Enter zk-SNARKs.
See also: George Samman – The Trend Towards Blockchain Privacy: Zero Knowledge Proofs
A zk-SNARK is a cutting-edge, cryptographic-proof construction that provides us with the ability to prove possession of certain private information, without revealing this information. Applied to voting, a zk-SNARK circuit could permit a voter to prove he or she belongs to a census and is able to cast a ballot, all without revealing their identity or allowing their ballot to be traced by others.
This could be achieved by creating a “census” of participants’ public keys and using zk-SNARKs so voters can prove they belong without revealing those keys. A more detailed account for such a model is found here.
We can therefore create a voting-specific blockchain where, instead of paying a fee, you can post transactions after proving that you belong to the census by generating a zero-knowledge proof.
This is an incredible construct; it almost feels like magic. We now have a ballot that has no signature, and therefore can’t be traced back to an address, along with a proof that allows this ballot to be included in a completely end-to-end verifiable blockchain. On top of that, the voter does need to pay for any gas or fee, so no token is involved.
Is this model resilient to attacks?
Strong public blockchains are inherently resilient to censorship attacks, but vote buying and bribery are also significant concerns.
If voters are coerced, it would be possible for them to override their votes later on, without fear of double-spending. And there are some clever tricks that render vote buying unviable by allowing anyone to exhibit a valid proof for any vote once an election has closed.
What blockchain voting won’t fix
The solution does not begin and end in blockchain, nor is it only technological. There are several challenges with digital voting and elections, such as accessibility and universal authentication, that require government involvement and don’t have simple technological fixes.
See also: Gregory Magarshak – In Defense of Blockchain Voting
But these are issues that can be addressed and iterated upon with pilot projects and investment in better authentication mechanisms. The Achilles heel of this voting system is the user client app (equivalent to a crypto wallet). Trust in the OS and the app implementation would likely be required.
So, can we have reliable elections using blockchain?
The first compelling examples of such a solution are beginning to pop up. I’ve been exposed to the possibility of blockchain voting while working on Vocdoni Open Stack, an open-source project that for the last three years has been devoted to deconstructing the problem of decentralized voting.
We have designed a protocol and a set of libraries that are bringing radical new solutions to what, until now, has been an unsolved problem. A trustless, end-to-end, verifiable and anonymous voting system. Our technological infrastructure is publicly available here and has already been successfully proven with dozens of organizations including the largest cultural organization in Europe with almost 200,000 voters.
It’s a mistake to think we can achieve the perfect digital voting system, as 100% security will never exist. This is the case for physical voting as well. But we can now build voting systems that provide, to our digital society, equal or greater guarantees than those presented by physical voting.