Hey guys,
I'm really hopeful about the future of Bitcoin and Blockchain system; but I'm curious about one thing. Is Blockchain capable of creating fair elections? If we can achieve that goal, that will be the biggest and most sensational innovation of Bitcoin and Blockchain for the world and humanity! What do you think about it?
Current state of blockchain is very bad idea as a platform for fair elections. You see fundamentally blockchain works like this:
You make a transaction and whole world sees it and can confirm that this transaction took place and you can prove that you performed this transaction.
Now let's assume your transaction is a vote - looks fine, right? a fair votes that easy to count and above all it's immutable? However this fundamental propery makes it very easy to sell your vote i.e. you can easily prove that you have voted for certain party. For voting system a very different system have to be crafted - one that allows you to cast a vote (send the transaction) but in such a way that AFTER you sent the transaction nobody (even you) can prove where it was sent (so you can't prove you have voted for certain party) to elliminate any possibility to sell the vote. There is no blockchain that capable of doing so (even ZCash can't do it).
"Now let's assume your transaction is a vote - looks fine, right? a fair votes that easy to count and above all it's immutable?
However this fundamental propery makes it very easy to sell your vote i.e. you can easily prove that you have voted for certain party." Hello bro, would you mind explaining the above (colored and bolded) post? I have read and re- read the comment, still can't understand the message you trying to pass across. Are you saying people aren't supposed to know the parties that others vote for?
Fair voting system means that Nobody suppose to know for sure who you vote for. And you should be unable to prove that you have voted for certain party. I.e. you can tell your friends you voted for Hillary but there is no way you can prove it (unless you took video of you voting). You can lie or be honest and there is no way to know. In blockchain you can't lie because by voting you create cryptographic proof that you have voted for Trump. If you want, you can produce this proof to anyone asking who you voted for by signing arbitrary message with your private key.
I'l give you an example of how I envision digital vote:
You have a private key that associated with you and this key can sign your transactions (votes). So to cast a vote you sign an immutable message saying (I, owner of this public key, vote for Trump), then broadcast it all over the network for everyone to see and verify that this is a real vote. And everyone does the same. Then the election closes, everyone can check the blockchain and count all the votes. And it sounds really fair because votes can't suddenly appear, nobody can create votes out of thin air and behind every vote there is a real human who got his unique private key, known only to him.
Now what do I do to abuse this system? I will come to you and tell you "wanna earn easy 100$? Here is a smart contract - cast your vote for Trump, and as soon as your vote shows up in blockchain you'll automatically get 0,3 ETH". You don't know this guy, but you can easily see he can't possibly scam you. And now you have strong motivation to sell your vote, because there exists mechanism to easily and automatically prove that you indeed have voted for Trump. Worst of all - nobody can track the guy who pays you for the vote, and it is very hard to distingwish between those who sold their vote in this manner and those who honestly voted for Trump.
Real life paper vote selling is quite different - it requires you to make a photo/video of your ballot paper (i.e. create a proof that you commited crime of selling vote). So to cast a vote in current system you either have to play fair, or create evidence of fraud that can potentially lead to your being punished.