stonecoldpat / anonymousvoting

Anonymous voting on Ethereum without a tally authority. Protocol from this paper http://homepages.cs.ncl.ac.uk/feng.hao/files/OpenVote_IET.pdf
340 stars 88 forks source link

Question: Does this require any trusted computing? #7

Closed SilentCicero closed 7 years ago

SilentCicero commented 7 years ago

@stonecoldpat great work here!

Questions:

Does this require any trusted computing authority?

Does a single ZKP have to be generated by any/single authority before the voting process begins?

Do voters generate their "voter.txt" themselves or does that have to be generated by a trusted authority?

I know your video explains no trusted authority.. just trying to identify it that means what I think it does.

From a computational point of view, the only way the voters position (1 or 0) gets revealed is if they all collude right?

--

Side note, are you based in Ireland/UK.. thinking of vacationing there, maybe we could meetup =D

stonecoldpat commented 7 years ago

@stonecoldpat great work here!

Questions:

Does this require any trusted computing authority?

Nope. It is a fully decentralised protocol and everybody (including the smart contract) can perform the computation :)

Disclaimer: In this implementation we have an Elections Admin who authenticates voters before setting their Ethereum account as eligible to vote and is responsible for informing the contract to move onto the next stage (so he pays the $$ for that). He isn't trusted to perform any computation.

Does a single ZKP have to be generated by any/single authority before the voting process begins?

Nope. There are two rounds. Each voter performs a ZKP to prove he knows the private key to his voting key. The second is a 1 out of 2 ZKP computed by the voter to prove an encrypted vote is well-formed and is either 0 (no vote) or 1 (yes vote).

Do voters generate their "voter.txt" themselves or does that have to be generated by a trusted authority?

A Java program is included to let the voter do this themselves :) this is all their random factors and keys. Ideally should be deleted after election.

I know your video explains no trusted authority.. just trying to identify it that means what I think it does.

From a computational point of view, the only way the voters position (1 or 0) gets revealed is if they all collude right?

Yup. Or if the voter reveals it themselves. (For example it is feasible that someone creates an alternative contract to buy votes - and the voter reveals their private key to it.)

Side note, are you based in Ireland/UK.. thinking of vacationing there, maybe we could meetup =D

In London! Ping or email me when you are around :)