You can use colored coins to do voting on the Blockchain.
You can start by creating "Vote coins", and issue as many of them as you have registered voters. Then you ask the voters to generate a Bitcoin address, and that they give it to you.
You then send 1 "vote coin" to each of those addresses. You designate two or more addresses, one for each candidate/proposition. Finally the voters have to send the vote coin to the address representing the proposition they want to vote for.
When the vote is closed, you simply look at the "vote coin" balance in each of the two addresses.
The votes are secret because nobody can tell which address belongs to which voter.
Coinprism is a web wallet that lets you issue, send and receive your own colored coins. It's quite simple to use.
For secrecy, the voters could go to the voting office, the officials verify that the voter is allowed to vote, the voter writes down his address on a piece of paper, and slide it into a sealed box. At the end of that registration process, the voting office has a box with 100 pieces of papers with each an address. They can then send the "vote coins" to those 100 addresses, without knowing which belongs to whom.
Of course, this is just an illustration, it's possible to achieve the same without requiring people to travel using the equivalent process implemented as open source software.
How can be both the votes secret and be visible who voted? – Mathias711 – 2014-05-27T09:21:18.403
I think it's hard to accomplish to vote just once, because you are anonymous if you just look at the blockchain. Therefor you can open a new address, deposit bitcoin on it, and vote once more – Mathias711 – 2014-05-27T09:23:37.490
Perhaps with one target address per voter? If the target is hit twice both votes are voided. – Giulio Prisco – 2014-05-27T09:27:44.967
So you want to create 10.000 addresses if there are 10.000 voters? Then you can maybe do something like
yesif the last number in the sending address is even, andnoif odd. And if it's not public which addresses are used in the system, then no-one can void your vote. Unless 'they' track your wallet, and see you sending 1 satoshi to an address and conclude it's for voting. Then you can only count the first vote or something. Like sealing vote-paper on a real vote. – Mathias711 – 2014-05-27T09:32:40.547Is anyone working on a implementation of this? – ihtkwot – 2015-07-16T20:11:17.283