Bitcoin Forum
December 02, 2022, 02:59:37 AM *
News: Bitcointalk Community Awards
 
   Home   Help Search Login Register More  
Pages: 1 2 [All]
  Print  
Author Topic: A fraud-proof voting system based on Bitcoin and Zerocoin  (Read 9023 times)
amincd (OP)
Hero Member
*****
Offline Offline

Activity: 772
Merit: 500


View Profile
January 13, 2014, 05:07:55 AM
Last edit: January 13, 2014, 05:23:23 AM by amincd
 #1

This post 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):




1669949977
Hero Member
*
Offline Offline

Posts: 1669949977

View Profile Personal Message (Offline)

Ignore
1669949977
Reply with quote  #2

1669949977
Report to moderator
The network tries to produce one block per 10 minutes. It does this by automatically adjusting how difficult it is to produce blocks.
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction.
mpattison
Member
**
Offline Offline

Activity: 98
Merit: 10


View Profile
January 13, 2014, 05:14:50 AM
 #2

That... looks absolutely fantastic.

If you can patent that, I would suggest you do so. Shocked
remotemass
Legendary
*
Offline Offline

Activity: 1103
Merit: 1013


ASMR El Salvador


View Profile WWW
January 13, 2014, 05:24:19 AM
 #3

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?

Take pics of in/out cash (with GPS metatag on) ¦¦ https://bit.ly/3j37m5j ¦¦ bitcointalk.org/index.php?topic=5362345
HairyMaclairy
Legendary
*
Offline Offline

Activity: 1414
Merit: 2174


Degenerate bull hatter & Bitcoin monotheist


View Profile
January 13, 2014, 05:26:29 AM
 #4

Very interesting
amincd (OP)
Hero Member
*****
Offline Offline

Activity: 772
Merit: 500


View Profile
January 13, 2014, 05:27:45 AM
 #5

That... looks absolutely fantastic.

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

Thanks  Cheesy 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.

remotemass
Legendary
*
Offline Offline

Activity: 1103
Merit: 1013


ASMR El Salvador


View Profile WWW
January 13, 2014, 05:45:46 AM
 #6

Seems good, despite the fact that you could still sell your voting right to someone else...

Take pics of in/out cash (with GPS metatag on) ¦¦ https://bit.ly/3j37m5j ¦¦ bitcointalk.org/index.php?topic=5362345
HairyMaclairy
Legendary
*
Offline Offline

Activity: 1414
Merit: 2174


Degenerate bull hatter & Bitcoin monotheist


View Profile
January 13, 2014, 06:21:15 AM
 #7

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. 
jubalix
Legendary
*
Offline Offline

Activity: 2450
Merit: 1022


View Profile WWW
January 13, 2014, 07:06:18 AM
 #8

hmm  I think I made a similar proposal in a thread a bit back, but not with the zerocoin bit.

Admitted Practicing Lawyer::BTC/Crypto Specialist. B.Engineering/B.Laws

https://www.binance.com/?ref=10062065
amincd (OP)
Hero Member
*****
Offline Offline

Activity: 772
Merit: 500


View Profile
January 13, 2014, 07:15:39 AM
Last edit: January 13, 2014, 07:40:11 AM by amincd
 #9

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.
domob
Legendary
*
Offline Offline

Activity: 1122
Merit: 1134


View Profile WWW
January 13, 2014, 07:26:39 AM
 #10

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?

Use your Namecoin identity as OpenID: https://nameid.org/
Donations: 1domobKsPZ5cWk2kXssD8p8ES1qffGUCm | NMC: NCdomobcmcmVdxC5yxMitojQ4tvAtv99pY
BM-GtQnWM3vcdorfqpKXsmfHQ4rVYPG5pKS | GPG 0xA7330737
amincd (OP)
Hero Member
*****
Offline Offline

Activity: 772
Merit: 500


View Profile
January 13, 2014, 07:28:09 AM
 #11

What's the advantage of a blockchain based protocol?

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

Activity: 1122
Merit: 1134


View Profile WWW
January 13, 2014, 07:51:33 AM
 #12

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.

Use your Namecoin identity as OpenID: https://nameid.org/
Donations: 1domobKsPZ5cWk2kXssD8p8ES1qffGUCm | NMC: NCdomobcmcmVdxC5yxMitojQ4tvAtv99pY
BM-GtQnWM3vcdorfqpKXsmfHQ4rVYPG5pKS | GPG 0xA7330737
p2pbucks
Hero Member
*****
Offline Offline

Activity: 642
Merit: 500


Evolution is the only way to survive


View Profile
January 13, 2014, 08:11:24 AM
 #13

Is this vote anonymously ?
amincd (OP)
Hero Member
*****
Offline Offline

Activity: 772
Merit: 500


View Profile
January 13, 2014, 08:42:21 AM
 #14

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.
domob
Legendary
*
Offline Offline

Activity: 1122
Merit: 1134


View Profile WWW
January 13, 2014, 09:55:00 AM
 #15

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.

Use your Namecoin identity as OpenID: https://nameid.org/
Donations: 1domobKsPZ5cWk2kXssD8p8ES1qffGUCm | NMC: NCdomobcmcmVdxC5yxMitojQ4tvAtv99pY
BM-GtQnWM3vcdorfqpKXsmfHQ4rVYPG5pKS | GPG 0xA7330737
greyman
Newbie
*
Offline Offline

Activity: 40
Merit: 0


View Profile WWW
January 13, 2014, 03:27:47 PM
 #16

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).
gollum
Sr. Member
****
Offline Offline

Activity: 434
Merit: 250


In Hashrate We Trust!


View Profile
January 13, 2014, 03:32:24 PM
 #17

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

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.
amincd (OP)
Hero Member
*****
Offline Offline

Activity: 772
Merit: 500


View Profile
January 13, 2014, 09:36:49 PM
Last edit: January 13, 2014, 09:49:18 PM by amincd
 #18

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? Smiley

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.
remotemass
Legendary
*
Offline Offline

Activity: 1103
Merit: 1013


ASMR El Salvador


View Profile WWW
January 13, 2014, 09:58:06 PM
 #19

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.

Take pics of in/out cash (with GPS metatag on) ¦¦ https://bit.ly/3j37m5j ¦¦ bitcointalk.org/index.php?topic=5362345
Sitarow
Legendary
*
Offline Offline

Activity: 1792
Merit: 1047



View Profile
January 13, 2014, 11:12:09 PM
 #20

That... looks absolutely fantastic.

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

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

Activity: 2450
Merit: 1022


View Profile WWW
January 13, 2014, 11:21:47 PM
 #21

That... looks absolutely fantastic.

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

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

Admitted Practicing Lawyer::BTC/Crypto Specialist. B.Engineering/B.Laws

https://www.binance.com/?ref=10062065
luv2drnkbr
Hero Member
*****
Offline Offline

Activity: 793
Merit: 1007



View Profile
January 14, 2014, 12:51:52 AM
 #22

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:

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.

BTC-TK
Member
**
Offline Offline

Activity: 154
Merit: 14


View Profile
January 14, 2014, 12:56:04 AM
 #23

Only problem then is that about 500 basement dwelling nerds with mustaches would vote.

   ⚡⚡ PRiVCY ⚡⚡   ▂▃▅▆█ ✅ PRiVCY (PRIV) is a new PoW/PoS revolutionary privacy project ● ☞ ✅ Best privacy crypto-market! ● █▆▅▃▂
    Own Your Privacy! ─────────────────║ WebsiteGithub  |  Bitcointalk  |  Twitter  |  Discord  |  Explorer ║─────────────────
   ✯✯✯✯✯                 ✈✈✈[Free Airdrop - Starts 9th June]✅[Tor]✈✈✈ ║───────────║ Wallet ➢ ✓ Windows  |  ✓ macOS  |  ✓ Linux
amincd (OP)
Hero Member
*****
Offline Offline

Activity: 772
Merit: 500


View Profile
January 14, 2014, 10:56:36 PM
Last edit: January 23, 2014, 11:58:52 AM by amincd
 #24

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).
superresistant
Legendary
*
Offline Offline

Activity: 2128
Merit: 1117



View Profile
February 24, 2014, 08:22:24 AM
 #25


Excellent idea.
What do you need to setup this ? Fund ? Devs ?
BigJohn
Member
**
Offline Offline

Activity: 116
Merit: 10


View Profile
February 24, 2014, 08:42:47 AM
 #26

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?
Elwar
Legendary
*
Offline Offline

Activity: 3598
Merit: 2384


Viva Ut Vivas


View Profile WWW
February 24, 2014, 09:37:22 AM
 #27

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.

First seastead company actually selling sea homes: Ocean Builders https://ocean.builders  Of course we accept bitcoin.
BitOnyx
Member
**
Offline Offline

Activity: 112
Merit: 10

Cryptocurrencies Exchange


View Profile WWW
February 24, 2014, 09:56:27 AM
 #28

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 Smiley

Speaker1264
Newbie
*
Offline Offline

Activity: 6
Merit: 0


View Profile
February 24, 2014, 01:31:09 PM
Last edit: February 24, 2014, 02:45:30 PM by Speaker1264
 #29

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.
notbatman
Legendary
*
Offline Offline

Activity: 2212
Merit: 1038



View Profile
February 24, 2014, 02:08:10 PM
 #30

could a biometric hash work?
allyouracid
Legendary
*
Offline Offline

Activity: 2312
Merit: 1271


Encrypted Money, Baby!


View Profile
February 24, 2014, 02:45:33 PM
 #31

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.

Don't visit my shitcoin blog: OCOIN.DEV
Use cointracking.info for tax declaration & tracking of your trades!
sundance
Newbie
*
Offline Offline

Activity: 22
Merit: 20


View Profile
February 25, 2014, 02:09:28 AM
 #32


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.

mably
Sr. Member
****
Offline Offline

Activity: 355
Merit: 264



View Profile
March 27, 2014, 08:56:58 PM
 #33

Any progress on this really exciting project?
serenitys
Full Member
***
Offline Offline

Activity: 126
Merit: 101

Be Here Now


View Profile
April 01, 2014, 06:57:41 AM
 #34

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.

You say "anti government" like that's a bad thing...

Unfortunate times will bring out the best in good people and the worst in bad people
sufisu
Newbie
*
Offline Offline

Activity: 42
Merit: 0


View Profile WWW
April 01, 2014, 07:57:15 AM
 #35

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.
Pages: 1 2 [All]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!