amincd (OP)
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
January 13, 2014, 05:07:55 AM Last edit: January 13, 2014, 05:23:23 AM by amincd |
|
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 name | Voter pubkey | Alice | 1D7JGuHSq3oTzLPnD4VEFuGhunM2FcMfMq | Bob | 1FxpXuFQw5nVHBt5rdmC4c8FgCbZ9NXQ1a | Carol | 12aTDVyvthfLtxSeJHVbJ8MG5GRhVJr6Lo | Dan | 12bKM37peormM5anhKeBB4qVdVKotmfNUw | Erin | 186P6ZnpiERtpcv5GoVQiW3ns5DK1pQL8D |
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://ip.bitcointalk.org/?u=https%3A%2F%2Fi.imgur.com%2Fm3yyeFO.png&t=665&c=r-BN9YMi05Y_iw)
|
|
|
|
mpattison
Member
![*](https://bitcointalk.org/Themes/custom1/images/star.gif)
Offline
Activity: 98
Merit: 10
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
January 13, 2014, 05:14:50 AM |
|
That... looks absolutely fantastic. If you can patent that, I would suggest you do so. ![Shocked](https://bitcointalk.org/Smileys/default/shocked.gif)
|
|
|
|
remotemass
Legendary
Offline
Activity: 1122
Merit: 1017
ASMR El Salvador
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
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?
|
{ Imagine a sequence of bits generated from the first decimal place of the square roots of whole integers that are irrational numbers. If the decimal falls between 0 and 5, it's considered bit 0, and if it falls between 5 and 10, it's considered bit 1. This sequence from a simple integer count of contiguous irrationals and their logical decimal expansion of the first decimal place is called the 'main irrational stream.' Our goal is to design a physical and optical computing system system that can detect when this stream starts matching a specific pattern of a given size of bits. bitcointalk.org/index.php?topic=166760.0 } Satoshi did use a friend class in C++ and put a comment on the code saying: "This is why people hate C++".
|
|
|
HairyMaclairy
Legendary
Offline
Activity: 1414
Merit: 2174
Degenerate bull hatter & Bitcoin monotheist
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
January 13, 2014, 05:26:29 AM |
|
Very interesting
|
|
|
|
amincd (OP)
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
January 13, 2014, 05:27:45 AM |
|
That... looks absolutely fantastic. If you can patent that, I would suggest you do so. ![Shocked](https://bitcointalk.org/Smileys/default/shocked.gif) Thanks ![Cheesy](https://bitcointalk.org/Smileys/default/cheesy.gif) 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
Activity: 1122
Merit: 1017
ASMR El Salvador
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
January 13, 2014, 05:45:46 AM |
|
Seems good, despite the fact that you could still sell your voting right to someone else...
|
{ Imagine a sequence of bits generated from the first decimal place of the square roots of whole integers that are irrational numbers. If the decimal falls between 0 and 5, it's considered bit 0, and if it falls between 5 and 10, it's considered bit 1. This sequence from a simple integer count of contiguous irrationals and their logical decimal expansion of the first decimal place is called the 'main irrational stream.' Our goal is to design a physical and optical computing system system that can detect when this stream starts matching a specific pattern of a given size of bits. bitcointalk.org/index.php?topic=166760.0 } Satoshi did use a friend class in C++ and put a comment on the code saying: "This is why people hate C++".
|
|
|
HairyMaclairy
Legendary
Offline
Activity: 1414
Merit: 2174
Degenerate bull hatter & Bitcoin monotheist
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
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.
|
|
|
|
jubalix
Legendary
Offline
Activity: 2632
Merit: 1022
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
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.
|
|
|
|
amincd (OP)
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
January 13, 2014, 07:15:39 AM Last edit: January 13, 2014, 07:40:11 AM by amincd |
|
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
Activity: 1135
Merit: 1170
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
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?
|
Use your Namecoin identity as OpenID: https://nameid.org/Donations: 1 domobKsPZ5cWk2kXssD8p8ES1qffGUCm | NMC: NC domobcmcmVdxC5yxMitojQ4tvAtv99pY BM-GtQnWM3vcdorfqpKXsmfHQ4rVYPG5pKS | GPG 0xA7330737
|
|
|
amincd (OP)
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
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.
|
|
|
|
domob
Legendary
Offline
Activity: 1135
Merit: 1170
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
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.
|
Use your Namecoin identity as OpenID: https://nameid.org/Donations: 1 domobKsPZ5cWk2kXssD8p8ES1qffGUCm | NMC: NC domobcmcmVdxC5yxMitojQ4tvAtv99pY BM-GtQnWM3vcdorfqpKXsmfHQ4rVYPG5pKS | GPG 0xA7330737
|
|
|
p2pbucks
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
January 13, 2014, 08:11:24 AM |
|
Is this vote anonymously ?
|
|
|
|
amincd (OP)
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
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.
|
|
|
|
domob
Legendary
Offline
Activity: 1135
Merit: 1170
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
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.
|
Use your Namecoin identity as OpenID: https://nameid.org/Donations: 1 domobKsPZ5cWk2kXssD8p8ES1qffGUCm | NMC: NC domobcmcmVdxC5yxMitojQ4tvAtv99pY BM-GtQnWM3vcdorfqpKXsmfHQ4rVYPG5pKS | GPG 0xA7330737
|
|
|
greyman
Newbie
Offline
Activity: 40
Merit: 0
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
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).
|
|
|
|
gollum
Sr. Member
![*](https://bitcointalk.org/Themes/custom1/images/star.gif) ![*](https://bitcointalk.org/Themes/custom1/images/star.gif) ![*](https://bitcointalk.org/Themes/custom1/images/star.gif)
Offline
Activity: 434
Merit: 250
In Hashrate We Trust!
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
January 13, 2014, 03:32:24 PM |
|
So I need to buy 1 BTC for 1000$ to make a vote? ![Smiley](https://bitcointalk.org/Smileys/default/smiley.gif) 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)
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
January 13, 2014, 09:36:49 PM Last edit: January 13, 2014, 09:49:18 PM by amincd |
|
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](https://bitcointalk.org/Smileys/default/smiley.gif) 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
Activity: 1122
Merit: 1017
ASMR El Salvador
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
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.
|
{ Imagine a sequence of bits generated from the first decimal place of the square roots of whole integers that are irrational numbers. If the decimal falls between 0 and 5, it's considered bit 0, and if it falls between 5 and 10, it's considered bit 1. This sequence from a simple integer count of contiguous irrationals and their logical decimal expansion of the first decimal place is called the 'main irrational stream.' Our goal is to design a physical and optical computing system system that can detect when this stream starts matching a specific pattern of a given size of bits. bitcointalk.org/index.php?topic=166760.0 } Satoshi did use a friend class in C++ and put a comment on the code saying: "This is why people hate C++".
|
|
|
Sitarow
Legendary
Offline
Activity: 1792
Merit: 1047
|
![](https://bitcointalk.org/Themes/custom1/images/post/xx.gif) |
January 13, 2014, 11:12:09 PM |
|
That... looks absolutely fantastic. If you can patent that, I would suggest you do so. ![Shocked](https://bitcointalk.org/Smileys/default/shocked.gif) I can see ideas to use bitcoin protocol and network to solve modern day issues being patentable.
|
|
|
|
|