The only thing you need is to verify your identity on your phone. In Sweden we have a national system called BankID which is in use everywhere, so this is solvable.
Then you can publish your votes on the blockchain so they're immutable and publicly verifiable. This has some benefits over traditional voting:
* You can vote from your phone
* Votes can be counted instantly in real time
* Votes can be independently verified
* You can verify that your vote is counted correctly and included
You should also be able to make your identity private using zero knowledge proofs so you can verify your own vote but everyone else can not track any individual vote.
Voting via your phone would save huge amounts of time and energy compared to paper voting and it would make holding these votes much easier. It would avoid situations like in the Bush/Gore election where votes were invalid, not counted properly and counted too late.
I believe this would be a superior voting scheme if implemented properly and adopted on a national level.
What if I lose my private key? Can I just no longer vote for the rest of my life? If I can somehow reclaim my vote that means there is somebody that’s actually controlling that blockchain and it’s no longer trustless and reliable if some party has that power. If I lose my private key and lose my right to vote then that’s a bad system.
What if somebody starts paying people for their private keys? It seems like it’s illegal and immoral to let the practice continue but there’s no way of stopping it. Those private keys are either irrevocable which stays true to the blockchain and not trusting of a middleman OR there is some party the ability to revoke those keys and in that case… THAT’S a trusted middleman.
What happens if a user claims the vote they cast isn’t what the public ledger shows their public key/address as having voted for? What if a lot claim that?
What does the blockchain really provide in these kinds of imagined uses? That a certain set of private keys DID sign a certain set of transactions - assuming a 51% attack isn’t affordable enough for some party wanting to sway the election. That’s it. No connection to reality. Any non awful implementation of it involves inserting trusted third parties at every part of the process. And this isn’t because we’re ‘early’ and we’ll somehow figure these out. They’re fundamental to blockchain design.
In the case of a national election it's of course okay to trust that the government distributes the keys.
As I said in Sweden we have BankID. With it you log in to all banks, do your taxes, doctors appointments and journals, etc. These are given out at banks and service points which require your ID and send to your address (the exact same security checks as when you're voting). They can be withdrawn and renewed as needed.
We distribute the votes so 1 vote = 1 BankID vote. It's also technically possible to allow users to change their vote if done before the deadline.
All this can happen on any blockchain for example the very secure Bitcoin chain.
> What if I lose my private key?
You renew your BankID and you can change your vote.
> What if somebody starts paying people for their private keys?
What if somebody starts paying people to vote for them? Same problem.
> What happens if a user claims the vote they cast isn’t what the public ledger shows their public key/address as having voted for?
That it's even possible is an improvement over what we have today. Now I just don't know if my vote was counted incorrectly either by a tired worker or a corrupt one(s).
> What does the blockchain really provide in these kinds of imagined uses?
All votes can be counted publicly by anyone. There's no possibility for more votes than registered residents for example. There's no delay.
A lot of money is spent on setting up voting booths, collecting votes and counting them. This is much cheaper. We also don't throw away so much paper.
> assuming a 51% attack isn’t affordable enough for some party wanting to sway the election
Firstly a 51% attack would be easily detectable.
Secondly the only thing you can do is prevent people from voting. You cannot vote for them.
Thirdly all votes cast on the orphaned blocks can still be detected.
You're describing a system where the government has a list of IDs and associated Private Keys and therefore knows who everyone votes for. That IS NOT OK.
Also it's not that the government has their private keys. The government basically sends a token to an address the voter controls. So they cannot steal their votes and they cannot see where their transactions went.
So this is solvable.
I'm not so confident. The Monero output from those transactions is actually only knowable to the intended recipient so I don't really know how this would work best. Would there be a pre-determined address that we're all sending our vote transactions to? Would that key be public so it could be audited by everyone? It seems like in this scenario systematic abuse by the government would be trivial. Just grant a few % extra tokens to address you control and sign the transactions to vote your way and the'd be no auditability, no knowing which votes came from where. In many elections the polling is good enough and the margin narrow enough that it would be extremely easy to do and not look suspicious.
The initial seeding should also be public so the total amount of votes could be audited as well. It's possible to set it up so you can't ever create any new votes after the initial seed (this is possible in all current token schemes for example).
> Just grant a few % extra tokens to address you control and sign the transactions to vote your way and the'd be no auditability, no knowing which votes came from where. In many elections the polling is good enough and the margin narrow enough that it would be extremely easy to do and not look suspicious.
This is a big problem with paper voting actually. At least with the blockchain based voting you cannot create extra votes out of thin air.
With paper voting you might be able to say "the faulty votes came from this district". You could accomplish the same by setting up separate blockchain votes for each district and then just adding them together to form the final vote to get the same property.
I hate to be too pedantic about this but that's sort of the point. It doesn't sound like you're describing a blockchain anymore or at least getting any of the purported benefits of a blockchain. You have a central authority now setting up numerous separate instances, controling who gets the voting tokens, able to revoke and re-grant tokens at will, and in charge of setting and publishing the destination. The whole advantage of the blockchain is that there isn't a trusted 3rd party.
If you're already trusting the government you can do cryptographic hashing, a publicly readable database and build in a ton more transparency.
We seed it with the # of registered voters. Sure they could try to withhold some % of votes and vote themselves but hopefully that should be noticed.
> It doesn't sound like you're describing a blockchain anymore or at least getting any of the purported benefits of a blockchain.
The blockchain here makes sure the votes are delivered and counted correctly, without permission or trust.
Yes we need to trust the government to set it all up but after that they can't interfere.
> able to revoke and re-grant tokens at will,
This is false. Only the voter can do this.
I think with ring signatures obfuscating everything it might be tough or even impossible to detect.
I would certainly enjoy reading a research paper on the viability though!
>> able to revoke and re-grant tokens at will
>This is false. Only the voter can do this.
Then I think I don't understand the system you're proposing. How does the user get back their ability to vote if they lose their private key in this scenario?
Not really - paying someone to vote with the usual paper system doesn't work because you can't verify that they've voted the way you paid them to.
Not if the voter opts in for the vote by mail.
This would open up a whole can of worms for things like your employer (or other entity) being able to verify you voted "correctly", excluding people without smartphones, require ID to vote, &etc...
It doesn't need a blockchain (and predates blockchain), and it has some very nice properties, such as not requiring electricity proportional to how much an attacker might spend, and uncoercibility (as defined in their paper).
I think elections are poorly suited to blockchain for several reasons:
1. There is an authority (the government), so the lack of centralized trust of a blockchain adds nothing.
2. The core of a blockchain is preventing double-spends (double-votes) by picking which version of the truth is correct via some input proof-of-something. Unfortunately, there's more value in subverting an election than securing it, so it seems likely if the US uses $20k of computing power to secure the "vote blockchain", a malicious actor will simply spend $20m of compute power to reverse votes or otherwise stall out democracy. It turns out requiring work to secure something works much less well if it's not money. On the flip side, if we have to spend more for each election in proof-of-work computation than any attacker might spend, we quickly also are losing.
3. Blockchain's cryptography does not provide nice properties like uncoercibility, and those things would have to be baked on top, and yet can instead be built separately more simply (as proved by academic research like the one I linked and the hundreds of papers that cite it).
All 4 of the properties you mentioned are totally unrelated to blockchain technology. You could already get all the above if the government just ran an api that let users digitally sign and publish votes and check votes signed with their key, and that publicly exposes a full audit log. None of that requires blockchain, all it requires is that citizens get a private key (also required if it were a blockchain), don't have multiple, and that the private key isn't publicly associated with them for anonymity.
When you say "Blockchain would help because you could vote on your phone", what you really mean is "digital voting with cryptography to make it secure would be nice". Blockchain is irrelevant if all you want is a mobile app and cryptography that excludes the generals problem.
The actual problem is not a technical one in the first place. Elections are a mess for largely human reasons. Pretending that all we need is some magic technology to fix this problem is being wilfully ignorant.
This is why people are distrustful to voting machines and other techy solutions. Having everything verifiable in public addresses these concerns.
> There is an authority (the government), so the lack of centralized trust of a blockchain adds nothing.
The trust needed is for the government to distribute keys/votes instead of trusting the government to store and count your votes as well.
> a malicious actor will simply spend $20m of compute power to reverse votes or otherwise stall out democracy.
Yes they could. It is however easy to detect.
> so it seems likely if the US uses $20k of computing power to secure the "vote blockchain"
We would of course embed our votes in the much more secure Bitcoin ledger which is much harder to attack and runs without any help from the government (although they could help make it even more secure).
Prove to me it's as safe or safer than pen & paper and I'll consider it.
I would actually think voting through a blockchain with a solid proof function (obviously not mining for 30 minutes because phone batteries aren't very durable) is the much, much more secure scheme. Especially if executed over encrypted channels like TLS.
...Although with the levels of influence some people have, I wouldn't be surprised if they can catch the 4G traffic at least and fake that too (influencing all ISPs would be impossible even for them). But I will leave that exercise to the blockchain technologists, they seem to have invented mostly tamper-proof comms -- or so they claim?
Sure there are challenges but the physical voting is IMO well-documented to be very easily corruptable and fake-able. Well, at least outside the so-called "first world countries" it is. You guys can still believe in incorruptible democracy if it makes you feel better.
An agent has to be physically present to affect it, first of all. This helps a lot by constraining the field of actors from "potentially anyone with an internet connection" to "people who physically come in contact with the artifact". This is a widely underrated safety benefit with applicability all over, not just in elections.
The great benefit of paper voting is its simplicity. Any time you invent a complex contraption and tell the people to just trust that contraption's designers, e.g., the "blockchain technologists" you've mentioned, you've just built a new ruling class.
For something to work, it must use a process and mechanism that is plainly and obviously valid to anyone of sound mind. "Counting marks on paper" is such a process. You can't get much more complex than that before you're transferring control to a new elite.
People will always search for ways to unduly influence and damage processes by which power is ascribed. This is one of the main reasons why a process with trivial verification mechanisms is required for the public to credit the results.
In the year of Spectre and Meltdown, it is immensely naive to pretend that computers are ultimately trustworthy. Simplicity remains supreme, and computers are not simple.
It maybe feels dismissive when I put it this way, but you're describing HTML forms. I know you're arguing "votes on the blockchain [are] immutable and publicly verifiable", but there's nothing preventing a political regime claiming mass coercion or hacking and forking the history. Everything else is just a web app (we can even cover immutability, given INSERT only privileges and a UNIQUE constraint):
- You can vote from your phone
My phone has a browser.
- Votes can be counted instantly in real time:
This is how web apps work.
- Votes can be independently verified
Web apps generate logs and store information for later verification.
- You can verify that your vote is counted correctly and included
- You should also be able to make your identity private using zero knowledge proofs...
Either there's a way to map votes to people, unmasking their votes, or the government can pad the votes with junk IDs and no one can verify it. This system fundamentally cannot work.
Aside from these intractable, fundamental issues, the two main reasons we don't have online voting yet are:
- Not everyone has a computer or internet access
- It's extremely, dangerously insecure
And before you get into how secure blockchains are, please keep in mind we're not simply talking about technological security. There are so many ways to game this system, the primary one simply being you steal someone's BankID and vote for them. Personal information is stolen by malware all the time. And sure, when the victim goes to vote themselves and finds their vote was already cast, they can alert the authorities. But what if this is the case for a significant percentage of black people in Georgia? Will authorities fix the issue on Election Day? Will they fix 8 million of these issues on Election Day? What if an attacker files 8 million of these "someone voted for me" complaints in the last hour? This adds fragility to an election system that simply can't afford it.
All in all, you need to do a lot more research into the history of online voting proposals before you can seriously propose publishing votes on the blockchain. Which is my entire point about blockchain technology -- whenever someone wants to put something on it, two things are true:
- Other existing technology is a better fit
- The proposer is not an expert on the system they want to replace
How would a regime "fork the history" of the Bitcoin blockchain?
This isn't to solve voting in compromised countries, since you after all need to trust the government to give out votes and provide voting candidates, it's about making voting in governments with an already working democracy better. Like the western countries.
> Everything else is just a web app
Yes. The key point is you only need trust to seed the votes the rest can be done in a trustless and verifiable manner. My comment wasn't very clear.
> All in all, you need to do a lot more research into the history of online voting proposals before you can seriously propose publishing votes on the blockchain.
I'm not saying we should do this now. There are as you say many serious problems we would need to solve.
I was only proposing it as a possible use case with several substantial benefits.
* Immutable storage
Which is gained without any trust.