Ask HN: How does a Bitcoin based voting app works?
I've been thinking about this for a while. From my understanding, each vote cast would create an entry on the global blockchain. But the minimum one can spend to create a node is a Satoshi, which is frowned upon on the community, and even so when you get to millions of votes, it'd become a bit expensive to keep the app working. Did I get this right or is there a better approach to scale? If you want fair voting (one person - one vote), instead of rich voting (one dollar - one vote), you absolutely must map actual people to their voting mechanism. You could, for instance, create 1 billion private keys, and distribute them individually among 1 billion people. And then they would vote by signing their voting choices on your voting website. Of course, you don't even need Bitcoin for this scheme. It's much more complex than that though, since you have to deal with things like 1) Private key theft 2) Private key sales (rich people buying individual votes) 3) Issuing new keys to the new voters 4) Blocking keys of the dead voters 5) Make sure your DB of everyone's private keys doesn't get stolen 6) Not issuing multiple keys to the same person 7) Making sure individual voting records don't become public, only the aggregates And all of these organizational things are much much harder than the secure voting code. Agree except (5) - if it's even possible then you're already fucked. There should be no such thing, by design Agreed. Instead you could store some standard signed messages. At 3.2 maximum transactions per second it would take approximately 500 days of non-stop voting to get through all 146m registered voters in the USA (and during that time the BTC market would be doing nothing but voting). So to answer the question a BTC-based voting system where a transaction is used to cast a vote won't work. For this to work you'd need a different network with different speeds and abilities, but then you lose the benefits of the distributed BTC network. We can't even get all states to do an ID check before voting because of disenfranchisement concerns. I don't think a block chain idea is going to get very far. Could probably run a side-chain and have secretaries of state host it on their servers with federal oversight and auditing....but you're right about the voter-ID stuff (from a number of angles is a nightmare). This wouldn't take place on the Bitcoin Blockchain, at least not in an on-chain manner as it would be way to slow and costly. Voting itself comes in different forms. If you mean voting for a head of state to curb election fraud I could imagine this (for now) to be done in a more traditional way. 1) You go to vote in a normal voting booth
2) In the booth you have an offline computer, allowing you to pick a candidate and create a hash on a flash drive.
3) You enter the drive into an online computer infront of the voting scrutineers and the transaction is pushed to a blockchain. The advantage of such a system might be that you can verify that your vote was counted by keeping the public key, while on the other hand it avoids vote selling if it makes sure that you can't check again who was voted for in the transaction. Scale it for your own voting requirement. Maybe Bitcoin will fit as a template, maybe it won't.
Can you take the blockchain as an idea , and start with an empty one? It doesn't. There is no such thing as fair and anonymous voting, digital or otherwise. If you can't tie a person to their vote, you will never know if they sold their vote, at best you can limit the number of total votes. Bitcoin makes it very hard to tie a physical person to a digital identity, therefore makes it very easy to sell your vote. They can sell there vote not, they just need to show up to the polls in order to do it. Please learn first how cryptographers attempt to solve problems in voting,
and, more importantly, what these problems actually are. Blockchain is just
a timestamping protocol. Voting has nothing to do with timestamps and
everything with (1) not knowing how your neighbour voted and (2)
validating that your vote was properly counted. This precisely fails to answer the question. Voting is commonly put forward as a use case for blockchains and indeed Bitcoin, so a simple "how on earth does that even scale" is hardly an unreasonable question. A helpful answer would be something more than "lol read up n00b" and probably more like pointing at a real-life working example. > This precisely fails to answer the question. Voting is commonly put forward as a use case for blockchains [...] Commonly and incorrectly. It's like asking how to weld steel using milk and
pasta -- the very question is ill-formed. Voting has very different problems
than what distributed timestamping (a.k.a. blockchain) solves. > A helpful answer would be something more than "lol read up n00b" And I didn't specify the field the OP should read about? And on what problems?
I think I did. It really takes one trivial query in Google to get a grasp, and
I provided the necessary keywords. Secrecy of the vote is necessary to prevent against such things as vote buying and manipulating others to vote a certain way through intimidation (these days more of a problem outside of US). The validating that a vote was counted appropriately probably could be used in a block chain type mechanism, but may need to be more with a zcash type of implementation. I'm a true believer that more tech is not the right answer for voting security. (At least for the near term). Voter-verified paper ballots, that can be run through open-source tabulators and then stored for a subsequent mandatory audit would be ideal (3-5% is the target I think we've gone for in Cali). Can you recommend specific resources? Not specific to cryptography, but a good understanding of voting in general is another important foundation. For that, I found this class very interesting: https://www.coursera.org/learn/digital-democracy