6 ms·
Voting comes up a lot as a use for blockchain, but I've never been convinced that a regular public database wouldn't be better - generally the government has to
by shawabawa3 9y ago
Voting comes up a lot as a use for blockchain, but I've never been convinced that a regular public database wouldn't be better - generally the government has to be trusted in some way, and gets to say who can and can't vote, so blockchain's main benefits (trustless+permissionless) aren't needed.
Payments is definitely something blockchain can do better in some cases
- scott_s 9y agoVerifiability by an individual voter - given their receipt (hash) they would be able to verify that their vote (transaction) was in the chain that produced the final tally. I am in general a blockchain skeptic - I think in most cases, there’s just enough trust to just use a centralized database - but voting seems like a good usecase for blockchain, as it provides voters with a receipt and it’s designed for auditing provenance.
- shawabawa3 9y agoIt would be just as easy to verify in a public database
- scott_s 9y agoI don't think verifiability is the same. Yes, assuming the public database has some unique ID per vote, one could go in and verify their own vote was in the tally, and we could also verify that the final tally is the sum of everything in the public database. But what about someone who claims their vote was eliminated after voting occurred? There's no way to verify that either way. That kind of tampering, though, would not be possible using a blockchain, where the chain is constructed as the vote happens.
- MaxBarraclough 9y agoPart of the point of voting machinery is to make it impossible for the government to see which way a specific person voted. (Excepting a totally unanimous vote, I suppose.) But I figure we could tag each vote with a unique hash that's generated by, and known only to, the voter. Then, when all votes are cast, the database can be made public, including the hashes. Then each voter can check that their vote has been registered correctly, without the government knowing who voted what way. This wouldn't be good enough, though. We want to make it impossible to confirm to anyone else which way you voted, even if you want to, in order to prevent vote-selling. > But what about someone who claims their vote was eliminated after voting occurred? There's no way to verify that either way. You mean someone who cast a vote but then doesn't see it turn up on the public voting database? I imagine we could solve that with crypto. In my model: when you vote, you are given a cryptographically-signed proof-of-vote that is tied to your unique hash. > would not be possible using a blockchain Unless I'm missing something (which is entirely possible), I've shown that blockchain isn't the only solution.
- scott_s 9y agoIf I understand your scheme, tampering is still possible, we can just detect that it happened. The major difference with a blockchain-based voting solution is that after-the-fact tampering is not possible; you can't arbitrarily remove votes from the chain. And if we try to modify your scheme so that we start cryptographically ensuring that votes are included in the final tally, it's going to start looking a lot like a blockchain. Let me reiterate: I am a blockchain skeptic. I think that, for the most part, it's a solution looking for a problem, and there's enough trust in most interactions that it's not worth the trouble. I just think voting is one of the rare instances where it does make sense.
- MaxBarraclough 9y ago> If I understand your scheme, tampering is still possible, we can just detect that it happened True, the voter can prove that tampering happened, as the signature receipt they are given is specific to their voting choice (as well as to their secret hash). How would a blockchain fare against a 51% attack? What secret/proof does the voter have that an imposter doesn't have? Is each person issued a 'votecoin'? How could we maintain voter anonymity?
- scott_s 9y agoTo your questions, I don't know. I would think we would try to avoid 51% attacks by construction because the blockchain would not be easily accessible by non-voting machines. Voting currently doesn't do much to prevent imposters, so I wouldn't even try to addres that. It's also possible that voters would not even receive a transactions receipt (votecoin). They may not even be aware blockchain is going on behind the scenes: they may just see a normal voting machine at their precinct, beep-boop the screen and go home. The value would be in being able to audit the entire vote chain, which we currently don't do. Currently we spot-check the paper ballots against machine output for auditing. Re-doing the whole thing is a recount, and rare. My complaint about bitcoin itself is that rather than creating a virtual currency, we really created a virtual commodity; that is, it's the closest we've come to creating a virtual item that has the properties of scarcity and non-transferability of physical items. I think that's bad for a currency, but good for auditing votes.
- AlexandrB 9y ago> Verifiability by an individual voter This is, in fact, undesirable. If verifiability is possible by an individual someone can ask you (under thread of violence) to verify that you did or did not vote a certain way. It's especially undesirable if verification can be performed a long time after the vote is completed because laws and social mores can change turning a previously innocent vote into a black mark.
- filoeleven 9y agoMy linked comment(1) should be a way to verify that a vote was recorded as cast while at the polling place, and to provide a receipt to allow later checking that nothing was tampered with that doesn’t reveal ballot choices. This would stop anyone except the government itself from getting proof of how someone voted, and if the latter situation arises you have bigger problems, but burning your receipt is easy. There are probably even better methods to further protect both anonymity and verifiability. I don’t know if the group at (2) is still active, but the graphic presented there looks like a good setup—-though I think they are after vote-from-home, while my linked comment still makes use of polling places. (1) https://news.ycombinator.com/item?id=14921442 https://news.ycombinator.com/item?id=14921442 (2) https://followmyvote.com/cryptographically-secure-voting/ https://followmyvote.com/cryptographically-secure-voting/
- maxfurman 9y agoWouldn't a public ledger of votes break the secrecy of the ballot?
- shawabawa3 9y agoNo more than a public blockchain would
- philipodonnell 9y agoBlockchains can be designed to allow confirmation of something already known without revealing it to parties that only have access to the blockchain.
- AlexandrB 9y ago"We want you to vote for X or else Y" or "Prove you didn't vote for X or else Y" attacks are possible as long as verification is possible. This seems like a huge drawback of blockchain voting. Edit: Example - people vote against unpopular candidate Paul. Paul then stages a coup and takes control of government. He then asks you to provide a receipt that you voted for him on the blockchain or all your property is confiscated by the state.
- philipodonnell 9y agoHonest question, why would Paul need to do that if he took control of the government? I mean, "I can't" is an honest answer here, since its unrecoverable and many people won't care enough to try to verify their votes.
- dragonwriter 9y ago> Honest question, why would Paul need to do that if he took control of the government? He might want to to punish enemies or reward supporters; “control of government” id, in practice, not infinite power, and people often use such a position to, first and foremost, secure the position. > I mean, "I can't" is an honest answer Which is a reason Paul might want to let it be known that some form of accountability will be asked in advance. (Which he also might due to push the actual vote results; if it is projected to be close, expecting a cost for voting the “wrong” way if one candidate wins will likely shift some votes.)
- philipodonnell 9y ago> generally the government has to be trusted in some way There's an enormous difference between trusting the government to _count_ the votes correctly and trusting the government to _record_ the votes correctly, and I think this is actually the point. How do you enable voting _without_ trusting the government? If you have a public database then you can sign votes into it, but how do you ensure that the government won't simply delete votes it doesn't like? Pretty soon you get to the idea that each vote should be incremental to all the votes before it, so no one can manipulate the previous votes... and you get a blockchain. A blockchain would allow you to separate the act of voting from the tallying of votes, which would be an enormous improvement over the current 'check everyone's eligibility at the door and don't mention how many people you turned away'.
- paulmd 9y agoHave the primary key be a number or hash and publish the whole database, so you can count the number of votes yourself, or verify your vote, but cannot reverse any single vote back to a person without knowing their voter number. Whether we structure this as a Merkle tree or a flat CSV is irrelevant. Of course, in neither data format do you have any way of actually authenticating the other votes, by design. Maybe the vote in the block before yours was a dead person, or never existed at all, how would you know? (this is what the crypto world calls a "sybil attack") Whoops, looks like we're back to trusting a centralized authority (the government, who issues the voter tokens). So why do we need millions of computers hashing away, again? Fundamentally, one of the design features of voting is that it's un-verifiable, i.e. you can say you're voting Bush and go into the booth and vote Gore, and nobody can prove otherwise. Otherwise you could have personal threats against you (boss/spouse/etc) and if you have a ticket that can be verified to show you voted Gore then you could suffer personal harm. Verifiability to the public is actually an bug in the system here - it should be verifiable to the government and no one else. The best systems produce a paper token that is retained at the voting site. You can then validate the number of tokens against the voting rolls/etc, but the "evidence" stays in the possession of the government (who we've already agreed must be trusted anyway since they're the ones maintaining voter rolls/issuing tokens and ballots/checking IDs/etc). I forget what the name of the theorem is, that says identifiers like domain names or onion names can either be unique/authentic, intelligible, or decentralized, pick any two. Well, you can also say that ballots can either be publically verifiable, trustless, or private, pick any two (where "guaranteed one-per-person" is a form of trust). Blockchain doesn't escape this, it is just a different format for the data (Merkle tree vs flat CSV).