Bitcoin Forum

Bitcoin => Bitcoin Discussion => Topic started by: amincd on January 13, 2014, 05:07:55 AM



Title: A fraud-proof voting system based on Bitcoin and Zerocoin
Post by: amincd on January 13, 2014, 05:07:55 AM
This post (http://www.reddit.com/r/Bitcoin/comments/1v2f03/could_the_bitcoin_cryptographic_tech_be_used_in/) in Reddit inspired me to come up with a way to use Bitcoin technology to create a voting system that is both fraud proof and private (conceals who people voted for).

I believe this is possible using a blockchain modeled on Bitcoin and the Zerocoin extension.

Here's how it would work:

There would be a public record showing the name of each voter and the public key that is linked to them. The public key is provided by the voter themselves, so they can be certain that only they have the private key for it.

It would be something like this, just more comprehensive in terms of the personal details posted about the voter (it has to be enough information to identify each person):

Voter nameVoter pubkey
Alice1D7JGuHSq3oTzLPnD4VEFuGhunM2FcMfMq
Bob1FxpXuFQw5nVHBt5rdmC4c8FgCbZ9NXQ1a
Carol12aTDVyvthfLtxSeJHVbJ8MG5GRhVJr6Lo
Dan12bKM37peormM5anhKeBB4qVdVKotmfNUw
Erin186P6ZnpiERtpcv5GoVQiW3ns5DK1pQL8D

Next, each voter would be credited with 1 VoteCoin to their public address. Before a certain date, all voters would be required to mint a ZeroVoteCoin, which must be paid for with their 1 VoteCoin (which they can spend using their private key), similar to the Zerocoin scheme where a bitcoin is spent to mint a zerocoin. They would save the secret serial number they used to mint the ZeroVoteCoin, for later use.

On election day, each voter uses their secret serial number to create a zero knowledge proof that they minted a ZeroVoteCoin, in order to redeem their ZeroVoteCoin for a VoteCoin, and credits the new VoteCoin to the public key of the candidate they want to vote for. The candidate with the most VoteCoins is elected. Since the Zerocoin scheme obscures which VoteCoin credited the ZeroVoteCoin that was later redeemed, the public knows that a particular VoteCoin was used, by a particular person, but not which candidate they voted for.

See a graphical representation below (click for large version):

https://i.imgur.com/m3yyeFO.png (http://imgur.com/K8qMX4G.png)




Title: Re: A fraud-proof voting system based on Bitcoin and Zerocoin
Post by: mpattison on January 13, 2014, 05:14:50 AM
That... looks absolutely fantastic.

If you can patent that, I would suggest you do so. :o


Title: Re: A fraud-proof voting system based on Bitcoin and Zerocoin
Post by: remotemass on January 13, 2014, 05:24:19 AM
Could the same key-pair be used for different votings or for each voting you would need a new key-pair to be associated with each voter identity?


Title: Re: A fraud-proof voting system based on Bitcoin and Zerocoin
Post by: HairyMaclairy on January 13, 2014, 05:26:29 AM
Very interesting


Title: Re: A fraud-proof voting system based on Bitcoin and Zerocoin
Post by: amincd on January 13, 2014, 05:27:45 AM
That... looks absolutely fantastic.

If you can patent that, I would suggest you do so. :o

Thanks  :D Hmm, it hadn't even occurred to me that it might be patentable. I'm borrowing everything from already existing schemes.

Could the same key-pair be used for different votings or for each voting you would need a new key-pair to be associated with each voter identity?

The same key-pair could be used for different votes. The important thing is that the private key remain secret.



Title: Re: A fraud-proof voting system based on Bitcoin and Zerocoin
Post by: remotemass on January 13, 2014, 05:45:46 AM
Seems good, despite the fact that you could still sell your voting right to someone else...


Title: Re: A fraud-proof voting system based on Bitcoin and Zerocoin
Post by: HairyMaclairy on January 13, 2014, 06:21:15 AM
Seems good, despite the fact that you could still sell your voting right to someone else...

Yes because you retain the private key you can prove you voted for X.  So the system breaks down. 


Title: Re: A fraud-proof voting system based on Bitcoin and Zerocoin
Post by: jubalix on January 13, 2014, 07:06:18 AM
hmm  I think I made a similar proposal in a thread a bit back, but not with the zerocoin bit.


Title: Re: A fraud-proof voting system based on Bitcoin and Zerocoin
Post by: amincd on January 13, 2014, 07:15:39 AM
Seems good, despite the fact that you could still sell your voting right to someone else...

True, if you consider vote buying a type of electoral fraud, the scheme is not fraud-proof. I think a variation of this scheme could probably be made that's resistant to vote buying too, using tamper-resistant hardware devices that generate and store a random private key and serial number, and limit the voter's access to them. The device could be designed to destroy the private key and serial number upon use, and each voter would return their device to the electoral body, who would be responsible for verifying that it hadn't been tampered with, after they've voted.


Title: Re: A fraud-proof voting system based on Bitcoin and Zerocoin
Post by: domob on January 13, 2014, 07:26:39 AM
I always thought that it would be possible to implement a public, verifiable and still "private" voting system based on blind signatures only, without the need of such complicated constructs like Zerocoin?  It needs a central authority, but I presume that this is inevitable for votes anyway because someone must be in charge of putting the voted-for government into office and things like this.  (And one needs a registry of voters, as already specified in the OP.)

Then each voter can (authenticated by their public key) can have their vote blind-signed by the authority, which keeps track that no-one votes twice.  But because of the blinding, they cannot determine who voted for which candidate.  In the end, everyone publishes their unblinded vote through some anonymous channel (e. g., Tor).  All votes are displayed publicly, such that everyone can check the result, that each vote is signed by the authority, that their own vote is contained and that the number of votes matches that of participants and whatever else they want.

What's the advantage of a blockchain based protocol?


Title: Re: A fraud-proof voting system based on Bitcoin and Zerocoin
Post by: amincd on January 13, 2014, 07:28:09 AM
What's the advantage of a blockchain based protocol?

You don't need to trust a central authority. The vote is publicly auditable.


Title: Re: A fraud-proof voting system based on Bitcoin and Zerocoin
Post by: domob on January 13, 2014, 07:51:33 AM
What's the advantage of a blockchain based protocol?

You don't need to trust a central authority. The vote is publicly auditable.

It is also in this case.  And as I explained, I'm of the impression that you need a central authority for voting anyway (at least to specify who is allowed to vote, like a citizen registry).  The only real need for the central authority in the blind signature scheme is for signing votes, which corresponds basically "only" to this function of voter registry.


Title: Re: A fraud-proof voting system based on Bitcoin and Zerocoin
Post by: p2pbucks on January 13, 2014, 08:11:24 AM
Is this vote anonymously ?


Title: Re: A fraud-proof voting system based on Bitcoin and Zerocoin
Post by: amincd on January 13, 2014, 08:42:21 AM
What's the advantage of a blockchain based protocol?

You don't need to trust a central authority. The vote is publicly auditable.

It is also in this case.  And as I explained, I'm of the impression that you need a central authority for voting anyway (at least to specify who is allowed to vote, like a citizen registry).  The only real need for the central authority in the blind signature scheme is for signing votes, which corresponds basically "only" to this function of voter registry.

If the central authority cheats, how would you know? With a blockchain, the evidence is in the inconsistency between the results the authority announces, and the results indicated by the blockchain. With a central authority that "keeps track that no-one votes twice", there's no way to know if the central authority is doing its job.

Is this vote anonymously ?

Yes, it's totally anonymous, because the step where the ZeroVoteCoin is redeemed for a VoteCoin doesn't reveal which VoteCoin was used to mint the ZeroVoteCoin that's being redeemed.


Title: Re: A fraud-proof voting system based on Bitcoin and Zerocoin
Post by: domob on January 13, 2014, 09:55:00 AM
What's the advantage of a blockchain based protocol?

You don't need to trust a central authority. The vote is publicly auditable.

It is also in this case.  And as I explained, I'm of the impression that you need a central authority for voting anyway (at least to specify who is allowed to vote, like a citizen registry).  The only real need for the central authority in the blind signature scheme is for signing votes, which corresponds basically "only" to this function of voter registry.

If the central authority cheats, how would you know? With a blockchain, the evidence is in the inconsistency between the results the authority announces, and the results indicated by the blockchain. With a central authority that "keeps track that no-one votes twice", there's no way to know if the central authority is doing its job.

This is partially true (and may indeed be an advantage of the blockchain-based system, although I would still accept it if my government did the blind-signature thing).  However, even in the system described by me (which is of course not my invention, but I don't find a good link at the moment) every participant can check that their vote was actually counted, and that not too many votes have been cast in total.  It is true, though, that the authority could publish fake votes for those voters that don't exercise their right to vote (and that it could get away with forging votes if the voters don't check them).  It needs active control by the voters, but the possibility is there to uncover any fraud attempts.


Title: Re: A fraud-proof voting system based on Bitcoin and Zerocoin
Post by: greyman on January 13, 2014, 03:27:47 PM
I vaguely remember MemoryCoin uses some type of voting, using the similar schema.

For this to work on a national scale, the following problems must be solved:

1) someone could be coerced to vote in a certain way
2) someone can sell his vote (buyer and seller meets, buyer shows him how he is voting in a desired way, and seller pays him for that).


Title: Re: A fraud-proof voting system based on Bitcoin and Zerocoin
Post by: gollum on January 13, 2014, 03:32:24 PM
So I need to buy 1 BTC for 1000$ to make a vote? :)

We need a new coin with unlimited inflation to keep it's price at 0$ so it can be used for coloring without any other costs than transaction fees.


Title: Re: A fraud-proof voting system based on Bitcoin and Zerocoin
Post by: amincd on January 13, 2014, 09:36:49 PM
This is partially true (and may indeed be an advantage of the blockchain-based system, although I would still accept it if my government did the blind-signature thing).  However, even in the system described by me (which is of course not my invention, but I don't find a good link at the moment) every participant can check that their vote was actually counted, and that not too many votes have been cast in total.  It is true, though, that the authority could publish fake votes for those voters that don't exercise their right to vote (and that it could get away with forging votes if the voters don't check them).  It needs active control by the voters, but the possibility is there to uncover any fraud attempts.

Not having to trust a government at any stage of the election is tremendously valuable. It eliminates one of the major sources of civil strife, by elevating the perceived legitimacy of elections, and guarantees that one man indeed = one vote.

So I need to buy 1 BTC for 1000$ to make a vote? :)

We need a new coin with unlimited inflation to keep it's price at 0$ so it can be used for coloring without any other costs than transaction fees.

This would be its own blockchain. There's also probably no need to use proof of work for a block chain that's used only within one country.


Title: Re: A fraud-proof voting system based on Bitcoin and Zerocoin
Post by: remotemass on January 13, 2014, 09:58:06 PM
It would be nice to have a website - could be something with a name like radiobuttondemocracy.com, or something - that you would login with facebook to assign your desired public key to be associated with your facebook username.
Then you would have a list of questions for all sorts of things for each country/nation/state like:

USA
Do you want gay marriage to be legal there?
Do you want cannabis to be legal there?
Do you want abortion to be legal there?
etc.
etc.
...
...

Canada
Do you want gay marriage to be legal there?
Do you want cannabis to be legal there?
Do you want abortion to be legal there?
etc.
etc.
...
...

UK
Do you want gay marriage to be legal there?
Do you want cannabis to be legal there?
Do you want abortion to be legal there?
etc.
etc.
...
...

It would use this provably fair system or similar so you could just login with your facebook to keep the answers updated and on the day of voting you would just sign the voting with your private key and all votes would be sent at the same time on that voting day.


Title: Re: A fraud-proof voting system based on Bitcoin and Zerocoin
Post by: Sitarow on January 13, 2014, 11:12:09 PM
That... looks absolutely fantastic.

If you can patent that, I would suggest you do so. :o

I can see ideas to use bitcoin protocol and network to solve modern day issues being patentable.


Title: Re: A fraud-proof voting system based on Bitcoin and Zerocoin
Post by: jubalix on January 13, 2014, 11:21:47 PM
That... looks absolutely fantastic.

If you can patent that, I would suggest you do so. :o

once you publish in like this you can't patent it.


Title: Re: A fraud-proof voting system based on Bitcoin and Zerocoin
Post by: luv2drnkbr on January 14, 2014, 12:51:52 AM
It would be nice to have a website - could be something with a name like radiobuttondemocracy.com, or something - that you would login with facebook to assign your desired public key to be associated with your facebook username.
Then you would have a list of questions for all sorts of things for each country/nation/state like:

USA
Do you want gay marriage to be legal there?
Do you want cannabis to be legal there?
Do you want abortion to be legal there?
etc.
etc.
...
...

Canada
Do you want gay marriage to be legal there?
Do you want cannabis to be legal there?
Do you want abortion to be legal there?
etc.
etc.
...
...

UK
Do you want gay marriage to be legal there?
Do you want cannabis to be legal there?
Do you want abortion to be legal there?
etc.
etc.
...
...

It would use this provably fair system or similar so you could just login with your facebook to keep the answers updated and on the day of voting you would just sign the voting with your private key and all votes would be sent at the same time on that voting day.

That's reminiscent of a recent reddit post (http://www.reddit.com/r/Bitcoin/comments/1v39xb/this_is_the_most_compelling_presentation_about/ceoelu5):

Quote
This means, for example, that we could have laws and voting on new laws done in an anonymous and enforceable manner. Imagine a semi-anarchist city where each citizen isn't a citizen unless they happen to currently physically be there, and to reside there they put up a deposit for some amount of time, which gets taxed over time for social services, and forfeited completely if they violate the laws, and returned to them if and when they leave. (All automatically enforceable.) And everybody anonymously votes on new laws using colored coins from the same addresses. Proposed legislation is uploaded anonymously. Bam you have a functioning society with laws and social welfare and cohesiveness, which is still entirely voluntary, with true actual democracy, and no leaders-- just the protocol, which you agreed to when you entered the city limits. Taxation would be minimal and 100% efficient, and go only towards what the population decided were necessary services. Public servants could have their jobs voted on on a weekly basis.


Title: Re: A fraud-proof voting system based on Bitcoin and Zerocoin
Post by: BTC-TK on January 14, 2014, 12:56:04 AM
Only problem then is that about 500 basement dwelling nerds with mustaches would vote.


Title: Re: A fraud-proof voting system based on Bitcoin and Zerocoin
Post by: amincd on January 14, 2014, 10:56:36 PM
It would be nice to have a website - could be something with a name like radiobuttondemocracy.com, or something - that you would login with facebook to assign your desired public key to be associated with your facebook username.
Then you would have a list of questions for all sorts of things for each country/nation/state like:

USA
Do you want gay marriage to be legal there?
Do you want cannabis to be legal there?
Do you want abortion to be legal there?
etc.
etc.
...
...

Canada
Do you want gay marriage to be legal there?
Do you want cannabis to be legal there?
Do you want abortion to be legal there?
etc.
etc.
...
...

UK
Do you want gay marriage to be legal there?
Do you want cannabis to be legal there?
Do you want abortion to be legal there?
etc.
etc.
...
...

It would use this provably fair system or similar so you could just login with your facebook to keep the answers updated and on the day of voting you would just sign the voting with your private key and all votes would be sent at the same time on that voting day.

This is a great idea. It would be nice if there were a nonproprietary directory that could be used as an alternative to Facebook, but I guess FB would do.

Perhaps one vote could be held for each social network (FB, G+, LinkedIn, etc).


Title: Re: A fraud-proof voting system based on Bitcoin and Zerocoin
Post by: superresistant on February 24, 2014, 08:22:24 AM

Excellent idea.
What do you need to setup this ? Fund ? Devs ?


Title: Re: A fraud-proof voting system based on Bitcoin and Zerocoin
Post by: BigJohn on February 24, 2014, 08:42:47 AM
I don't quite get this. You say this:
Quote
There would be a public record showing the name of each voter and the public key that is linked to them. The public key is provided by the voter themselves, so they can be certain that only they have the private key for it.

So if the public record (which I assume is the blockchain) has the names, who gets to put the names on it? It sounds like it would require some central agency.

If that's not how it works, and there is no central authority, what's stopping an individual from "registering" several times and casting multiple votes?


Title: Re: A fraud-proof voting system based on Bitcoin and Zerocoin
Post by: Elwar on February 24, 2014, 09:37:22 AM
I have a voting system set up using only Bitcoin. It is used for my BitPools site.

Very close to Beta but the voting portion is quite nice.


Title: Re: A fraud-proof voting system based on Bitcoin and Zerocoin
Post by: BitOnyx on February 24, 2014, 09:56:27 AM
Is it just me or does buying election votes would be much easier with this system then with current ways ? Also I am afraid it might require a bit too much from voters. Right now they are too lazy to go voting on election day. This system also would be a bit too difficult to explain to majority of population. And word coin probably would need to be removed since it would be even more confusing for a lot of people.

Anyway I love the initiation of alternate usage of bitcoin technologies. It shows large potential of usage not only in alternative monetary systems. Great idea in general :)


Title: Re: A fraud-proof voting system based on Bitcoin and Zerocoin
Post by: Speaker1264 on February 24, 2014, 01:31:09 PM
It works in a way so that no one can create more than one vote, but it doesn't solve the issue of someone just handing over their coin/private key to someone else.  That is core problem of voting at the moment, until someone finds a way of verifying that no one uses more than one vote, while everyone's votes still remain anonymous.


Title: Re: A fraud-proof voting system based on Bitcoin and Zerocoin
Post by: notbatman on February 24, 2014, 02:08:10 PM
could a biometric hash work?


Title: Re: A fraud-proof voting system based on Bitcoin and Zerocoin
Post by: allyouracid on February 24, 2014, 02:45:33 PM
I like the idea itself, although it would be a hell of a task to base a whole election on such a system (meaning setting up the infrastructure and making quite everybody use (prior: understand) it). That would make it extremely difficult, regarding how unflexible countries are as a whole when it comes down to changing things.
And Facebook (or any similar private company) would be the very last thing which i would consider connecting to my votes.


Title: Re: A fraud-proof voting system based on Bitcoin and Zerocoin
Post by: sundance on February 25, 2014, 02:09:28 AM

I see applications of this in many types of voting scenarios.

I recommend using the Paillier cryptosystem or other homomorphic cryptosystem to encrypt the contents of the vote. While people listening to the blockchain don't know who voted for who, they can see the subtotals of the vote during the vote (and potentially interfere with the outcome).

With homomorphic cryptosystems, the candidate choice is encrypted, and subtotals are done on the encrypted text so that subtotals are encrypted by definition and unknowable until the voting is done.



Title: Re: A fraud-proof voting system based on Bitcoin and Zerocoin
Post by: mably on March 27, 2014, 08:56:58 PM
Any progress on this really exciting project?


Title: Re: A fraud-proof voting system based on Bitcoin and Zerocoin
Post by: serenitys on April 01, 2014, 06:57:41 AM
Love this and would support it 1000%...

votecoin wishlist

all potential candidates buy into bitcoin with bitcoin (or whatever cryptocurrenc) to an escrow account held for term duration
for each block of time, if said winner does not fulfill whatever promises or if the favor rating drops, each voter of said winner is awarded a bitcoin from the escrow account.

any fraud, bad dealings, corruption, etc. can quickly drain the escrow account and if it reaches a certain amount/quantity/level, the person must resign...and do it in an automatic encrypted way so it's tamper proof. If the favor rating goes up - naturally, also tamper proof - the person increases wealth at the end of the term, not during it, so they have incentive to do their jobs with honor and not cheat the system or the people.

At the end of the term, funds are passed on to the winner. if he/she is ousted, funds remain as a pool and held for the next election.

Basically along with the tamper proof voting, there needs to be a built in monitor that holds them accountable and discourages fraud and corruption.

Or, they buy in at a set rate, the above applies, but this is the coffer from which state business is drawn - roads, infrastructure, etc.


Title: Re: A fraud-proof voting system based on Bitcoin and Zerocoin
Post by: sufisu on April 01, 2014, 07:57:15 AM
I am in for any initiative as a multi-purpose developer. Please contact me if anyone has actual interest in this concept and wants to bring this into life.