Blockchain voting

It is not the best idea2021-10-25

Many blockchain supporters are in favour of porting elections to blockchains. Among them Vitalik Buterin, the co-creator of Ethereum. His argument:

[...] any blockchain-based voting system that uses publicly verifiable zero-knowledge proofs can be independently verified. Someone can write their own implementation of the proof verifier and verify the Zk-SNARK themselves. They could even write their own software to vote. Of course, the technical complexity of actually doing this is beyond 99.99% of any realistic voter base, but if thousands of independent experts have the ability to do this and verify that it works, that is more than good enough in practice.

Blockchain voting is overrated among uninformed people but underrated among informed people

He is right. You just need to have a publicly verifiable system and most issues around cybersecurity should be sorted out. Independent security researchers would gradually test the system, would find bugs and issues, and as part of a slow rollout most of them would be found.

He is, however, overlooking two central aspects of paper ballot based elections that current drafts of Blockchain based balloting can't solve.

Anti-fragility by decentralization and trust by all citizens.

Any society built upon democracy relies on the trust of its citizens. With paper ballots, every citizen is free to attend the election process and verify its correctness.

In Germany, you can volunteer to help during the casting process and subsequent tallying of the votes. In fact, my co-founder Dariush volunteered for the most recent election in Germany. He was able to witness the counting and could've intervened had he noticed any malice or issues.

Since every vote in the election is counted at a local ballot office, thousands of citizens across the country witness the process.

More important; however, is, that verification is an immensely simple process. Gauging whether anything fraudulent is going on is something natural to the very core of us humans. We trust our instincts.

Verifying zero-knowledge proofs, on the other hand, unfortunately, is not something that's in our nature. It's something only people with a lot of time, a lot of background knowledge and deep understanding of maths can do.

If we rest our society on a few researchers verifying the cryptography, we are in fact outsourcing trust. Trust, that's not easy to verify yourself. Not accessible to most citizens.

Elections aren't just about being verifiably correct, but also about convincing all citizens that they are.

The other issue, blockchain voting brings to the table, is that it's by design centralized. Paper ballot elections, are conducted across many counties, states and electoral districts, it's a decentralized system.

A blockchain voting system has one entity of failure, one target to attack. The tallying algorithm (as described by Vitalik) proving its correctness through zero-knowledge proofs. While it might be hard to attack if tested through time, you only need to find one exploit to bring down the whole system.

Decentralized paper ballots (don't confuse this with blockchain's decentralization) are spread across hundreds to thousands of districts. While it might be easier to compromise a single one of those districts, widespread manipulation is nearly impossible. Risk is distributed across numerous volunteers, most of whom would need to act maliciously to make a difference.

While smart contract based voting is a fragile system, one entity, having to avoid disorder and failures, paper ballots are an anti-fragile system. One cause of fraud wouldn't bring down the whole system, the news would spread to all other districts and improve overall security, it's anti-fragile.