Author

Topic: Blockchain Electronic Votes (Read 806 times)

legendary
Activity: 1221
Merit: 1025
e-ducat.fr
May 13, 2014, 04:54:20 PM
#7
What's to stop someone from voting multiple times from multiple addresses?  Would this require registration of a BTC address with a voting commission?  Does .0001 BTC = 1 vote?
Each one of the N voters is identified by a public key KeyA supplied by the organizer.
When N multi-signature addresses have been registered by the organizers, they stop the registration and publish the list of registered addresses.
At that point, if a voter complains that she could not register her mutli-signature address, then there must be a cheater who has registered multiple addresses.
To prevent this, each voter must be required to send to the organizer a message stating that she registered a multi-sig address (without any mention of said address of course), signed with the private key corresponding to her public key KeyB.
In the event of an investigation, the controller requests the public KeyB from each voter and checks their message signature.
The controller request also an anonymous list of all public keys KeyC from each candidate.
If KeyB and KeyA can be combined with one of the public keys KeyC to build a script that hashes to one of the registered multi-sig address, then everything is OK. If there is a match with two or more multi-sig addresses, the voter cheated and must be excluded from the new round of voter registration.
Note that the controller must perform NxN hash computations but that's a small price to pay for the investigation process to preserve the privacy of the votes.

Would it be simpler to just create a new block chain and wallet for each election cycle?
It's probably simpler to use an existing blockchain.
Besides, no other blockchain comes close to the Bitcoin blockchain in terms of protection against a 51% attack.
Creating a new blockchain dedicated to a particular vote amounts to requesting the voters to trust more the organizers: they could take control of the new blockchain, mine some votes, drop some other votes. However, this would only disrupt the counting for a while: in the end, the votes would go though over time.
sr. member
Activity: 406
Merit: 250
May 13, 2014, 02:47:59 PM
#6
Would it be simpler to just create a new block chain and wallet for each election cycle? Send everyone one unit of non transferable currency they use to place a vote and they download the wallet to receive it and cast their ballot. Once they have done that they can simply delete the wallet and check the block chain for the winner.

I like the idea of having a block chain per election, this way there is a definite boundary between elections, and the 'currency' units cannot be mixed between elections.

Also the notion of sending out the 'currency' units could be likened to sending out a ballot form. Of course each user would need an address to store this.

As with anything there would still be room for some fraud, but nothing like the massive fraud in our elections now.

Also we could actually reduce the cost of elections dramatically and avoid the ridiculousness of the 2000 election and the constant recounts that only cost more money.
legendary
Activity: 1789
Merit: 1008
Keep it dense, yeah?
May 13, 2014, 02:30:53 PM
#5
Would it be simpler to just create a new block chain and wallet for each election cycle? Send everyone one unit of non transferable currency they use to place a vote and they download the wallet to receive it and cast their ballot. Once they have done that they can simply delete the wallet and check the block chain for the winner.

I like the idea of having a block chain per election, this way there is a definite boundary between elections, and the 'currency' units cannot be mixed between elections.

Also the notion of sending out the 'currency' units could be likened to sending out a ballot form. Of course each user would need an address to store this.
sr. member
Activity: 406
Merit: 250
May 13, 2014, 02:24:32 PM
#4
Would it be simpler to just create a new block chain and wallet for each election cycle? Send everyone one unit of non transferable currency they use to place a vote and they download the wallet to receive it and cast their ballot. Once they have done that they can simply delete the wallet and check the block chain for the winner.
full member
Activity: 199
Merit: 100
May 13, 2014, 11:15:20 AM
#3
What's to stop someone from voting multiple times from multiple addresses?  Would this require registration of a BTC address with a voting commission?  Does .0001 BTC = 1 vote?
member
Activity: 84
Merit: 10
May 13, 2014, 10:37:08 AM
#2
Nice, it's a good idea.
legendary
Activity: 1221
Merit: 1025
e-ducat.fr
May 13, 2014, 08:20:34 AM
#1
The fields of application for secure electronic transactions is very large. An electronic transaction is nothing more than a digitally signed message .
Therefore , we can consider electronic voting via the Bitcoin blockchain .

Before the invention of Bitcoin , electronic voting solutions were not satisfactory because they were not easily auditable and not sufficiently transparent neither for candidates nor for voters . In addition, they require a costly, labor intensive set up.
With the Bitcoin Blockchain, any community can organize a free, secure electronic voting.
Initially, associations or listed corporations might consider using this technology for elections or general assemby voting of their members or shareholders.
Here's how it might unfold for an association :

1) Know the list of candidates :
Each candidate (C) provides a public key KeyC to the voter and publishes everywhere a Bitcoin address like 1Martin.. for candidate Martin.
For the secrecy of each ballot, each KeyC is different for each voter, so the candidate must generate N public keys KeyC for N voters.
Each candidate should be required by the organizers to publish the Merkle root of a hash tree comprising all of the public keys KeyC he supplied.
Each voter should be able to check her branch of the hash tree, linking her keyC to the root.

2) Check the list of voters
Each voter (B) also receives from the association ( A) a public key KeyA which is listed on the site.
The voters list can be independently verified by all parties because everyone can check that she/he is on the list and make sure that the number of listed public keys is equal to the number of members in the association. The public key should be random and should not be on the Bitcoin elliptic curve bitcoin to prevent the organizers ( the association) from producing a valid signature. This precaution is also independently verifiable and reduces the need to trust the organizers .

3) Prepare the ballot
Before election day, with the public keys , the voter creates a 2-of-3 multi-signature address and sends to it a 0.001 BTC  micro-transaction (about the price of a postage stamp ) to prepare her/his ballot which is now logged in the blockchain .
The output (destination ) of her/his micro-transaction looks like this:
Code:
OP_HASH160 Hash OP_EQUAL

where Hash is the hash calculated by the bitcoin wallet from the following (SerializedScript) script:
Code:
OP_0 OP_2 KeyA KeyB KeyC OP_3 OP_CHECKMULTISIG

This transaction is compliant with BIP-16.
The voter enters the address on the website of the association without having to identify herself/himself : the website validates the address by checking it received a 0.001 BTC transaction .
The amount of the micro-transaction is meant to mitigate the risk of a denial of service attack on election day: the ballots have a negligible cost to each voter but  the cost is still prohibitive for spammers.
The amount of the micro-transactions can also be sent by candidates back to needy voters or be counted as contributions to the association.

4) Put the ballot in the ballot box
On election day , candidate Martin creates a signature SignatureC that spends the output of the multi signature micro-transaction ( 0.001 BTC) to an address V that he controls and publishes SignatureC and V next to the 2-of-3 multi-signature address on record on the association site. Since the V address is different for each multi-signature address , it is impossible to link a multi-signature address ( a voter ) to a candidate.
With SignatureC and V , the voter can now confirm her/his vote (put her/his ballot in the ballot box) by creating her/his signature SignatureB of the same transaction and publishing on the Bitcoin network the valid transaction combining her/his signature with that of the candidate without revealing her/his identity ( secret ballot ) .
The transaction to address V includes the following input:
Code:
SignatureB SignatureC SerializedScript

At this stage, only the candidate and the voter know that V belongs to Martin so that the voting results are not yet known.
Candidates can not know to whom is intended the multi-signature address prepared by the voter so that each candidate must provide a different address for each voter.

If the address provided by Martin was the same for all voters , the voting results would be known before the processing stage with the risk of influencing the votes not yet cast.
Incidentally, this system uses an advantage of a digital signature compared to a manual signature: a digital signature identifies its author only with her consent , when she reveals her identity.

5) Counting of election results
At the end of election day, candidate Martin simply transfers the bitcoins from the address V to the address 1Martin ..
Now everyone knows that the address V belongs to Martin and can count the votes for each candidate via the blockchain :
Each registered mutli-signature address (representing a voter) which can be connected to 1Martin .. with a transaction from a V address is a vote in favor of Martin .
The votes, while preserving the secrecy of the ballots, are perfectly verifiable by candidates and voters , independently of any organization, with open source software and with the Blockchain, a public, secure database.
Your comments are welcome.

Pierre Noizat
Jump to: