
PublicVotes – Ethereum-Based Voting Application - dominiksch
http://publicvotes.org/
======
gervase
Very exciting. As things like this become more well-defined, and start to
solve the security/ease-of-use problem, I think (hope?) that we'll see some
truly groundbreaking applications of distributed decision making tools.

~~~
nickpsecurity
I'm doubting it. The reason is that they're both really hard to come up with
and _really hard for end-users to understand_. That last part is important for
widespread trust and verification. It's why I've always been in favor of
centralized models with distributed verification. Especially simple
computations that can just be re-run on available data with tamper-detection
and comparisons of hashes, etc.

~~~
slasaus
You mean something as trustworthy and tamper proof on a large scale as paper
ballots and manual tallying? I still haven't seen any electronics that can be
practically verified by the public comparable with the centuries old manual
solutions that anyone can follow. Using electronics means getting a massive
TCB with many orders of magnitude less the number of eyes that can actually
inspect the computations being run (both because of organizational reasons and
lack of knowledge).

According to Halderman* it might take us 10 years, if ever, to get machines
the public can trust and verify on the scale that is needed for nation-wide
elections.

Given the sorry state of current phone and laptop security, the problem of
having a massive TCB is not solved, not with building on Ethereum either.

* [https://www.youtube.com/watch?v=JY_pHvhE4os#t=58m55s](https://www.youtube.com/watch?v=JY_pHvhE4os#t=58m55s)

~~~
nickpsecurity
It's all in the protocol and implementations: you don't need to trust huge
TCB's and manufacturing of specific device. Low TCB, diverse, clients doing
the checking is all you need. The paper comparison is unfair given online and
electronic is assumed in the requirements of the OP. Something closer to paper
in usability, cost, or security would be:

[http://www.scantegrity.org/](http://www.scantegrity.org/)

~~~
slasaus
Scantegrity, like other secure electronic systems, scores low on usability[1].

Recently the CEO of Fox-IT reported a delay to our minister in the
Netherlands[2] with researching the specs for a usable and secure vote printer
and vote counter[3]. It's not as easy as people think, especially the elder
seem to have trouble with it.

[1] [https://www.usenix.org/conference/evtwote14/workshop-
program...](https://www.usenix.org/conference/evtwote14/workshop-
program/presentation/acemyan)

[2]
[https://zoek.officielebekendmakingen.nl/blg-604665](https://zoek.officielebekendmakingen.nl/blg-604665)
(Dutch)

[3] Unofficial translated summary of the report on large scale voting;
proposes using a vote printer and vote counter with human readable ballots in
between: [https://www.kiesraad.nl/sites/default/files/every-vote-
count...](https://www.kiesraad.nl/sites/default/files/every-vote-counts-
conclusions-and-recommendations.pdf) (English)

~~~
nickpsecurity
Thanks for the data. I'll factor that into future comments. The direction that
leads, though, is improve the usability rather than toss out the whole system
or its principles.

My main recommendation if anyone asks with intent to deploy is paper and
optical readers. Cheap, easy to use, easy to check at booth, and easy to audit
later. I prefer computers stay out of voting as much as possible. However, if
they're there, Scantegrity line and Civitas seem like top contenders to build
on.

Also note in any analysis that secure voting has so many seemingly-
contradictory requirements and attack points that any solution will likely
pose difficulties. I expect some responsibility and effort from the system's
users just like they must put effort into learning to drive. That said, the
usability can certainly improve and we should put every effort into that.

------
nickpsecurity
Secure voting is hard. Better to improve on something that already had good
work put into it like Civitas:

[http://www.cs.cornell.edu/projects/civitas/](http://www.cs.cornell.edu/projects/civitas/)

Plus, you don't really need decentralized voting so much as decentralized
checking. That's where the effort should be. Blockchains are a total waste of
time and money for this kind of thing. Especially with so many prototypes in
existence that use less energy/money with good security properties.

~~~
dominiksch
Ou I absolutely agree on that. This is nothing more than a simple Proof of
Concept for voting on Ethereum/a Blockchain. Definitely also agree that the
ideology of "decentralize and blockchain everything" is wrong.

In the current implementation of PublicVotes, it costs around $1 to record
some 200 votes into the Blockchain. This is quite expensive compared to
systems such as Civitas, but it is arguably, cheaper than the current system
where governments often count vote ballots by hand. (at least that's how it's
done around here in Italy).

Nonetheless, I do think though that Smart Contracts can play an important role
in future voting systems, and obviously they can empower entire governments. I
will work on a Liquid Democracy model next for which Smart Contracts make a
lot of sense.

~~~
slasaus
> This is quite expensive compared to systems such as Civitas, but it is
> arguably, cheaper than the current system where governments often count vote
> ballots by hand.

Maybe cheaper, but I'm not sure if having to trust my computer with an
important vote like that is better than having to trust a voting booth, ballot
box and my eyes when the votes are being tallied. I think the slowness of
manual tallying is a security property since anyone can inspect the
computation while it's being run. All other technologies like Civitas,
Scantegrity etc. are not cheaper but more expensive than this manual process
and open up great possibilities for state level adversaries.

I think your system (using peoples computers) might be trusted when the stakes
are lower though. Interesting project :)

------
Kinnard
"The code is available on Github and here is a blog post explaining how
OpenVotes works." There's no link to the blogpost.

~~~
Natanael_L
This is what is linked: [https://medium.com/@DomSchiener/publicvotes-ethereum-
based-v...](https://medium.com/@DomSchiener/publicvotes-ethereum-based-voting-
application-3b691488b926#.s82vez1r6)

------
joosters
I don't get it. What does Ethereum add to this?

~~~
dominiksch
Through Ethereum this creates a transparent voting system where anyone can
audit a poll, since everything is recorded in the Blockchain. Additionally,
votes cannot be altered once they are cast, ensuring the integrity of the
system.

Right now this is a Proof of Concept though, more voting applications will
follow.

~~~
joosters
But what's to stop vote tampering between the webpage and the blockchain?
Couldn't you easily make up false votes or record votes wrongly?

~~~
dominiksch
The website is currently a single Point of Failure, since it is the gatekeeper
for recording votes into the Blockchain. With this proof of concept I did not
want to build a fully decentralized voting application that ensures that 1
person == 1 vote, I rather just wanted to display how Ethereum and the
Blockchain can be utilized for voting. Once a vote is recorded into the
Blockchain it cannot be altered anymore. The question of feasibility of this
application is obviously very much up in the air.

But overall, there are some interesting concepts to protect such systems
against sybil-attacks, so that we can ensure that 1 person == 1 vote any
nothing more.

------
fareesh
Tried to click on Early US Presidential and Bernie Sanders, but got a
websocket 400 error. I'm on the latest Chrome on Ubuntu.

~~~
dominiksch
You should still be able to vote. AFAIK, this is caused due to not having an
SSL certificate.

~~~
dominiksch
Just checked, seems that that account went out of Ether as there were too many
votes (more than 100). Didn't expect this much traffic haha.

But to basically explain what happened, each poll has a minimum 0.2 Ether
which are used for paying the network for executing the smart contract. Since
more than 100 people have voted on the system, it means that the account
(which holds the Ether) went out of tokens and now nobody can vote anymore.

I'm right now working on fixing this by creating a balancing system that
basically creates a faucet. But feel free to create a new poll. You can send
me the link here and I'll send some Ether to get you going.

------
pippy
I noticed the dropdown on the create page doesn't display the list correctly
(chrome, Win7):

[http://i.imgur.com/QfuWYS5.png](http://i.imgur.com/QfuWYS5.png)

~~~
dominiksch
Hey pippy thanks for notifying me. This is a weird error which happened to one
of my friends on Windows and Chrome as well. Will look into it.

------
dominiksch
Hey everyone. Anyone that wants to create a new poll and doesn't have any
Ether, please just post here with your poll link and I will send some Ether to
your poll so you can get started :)

~~~
tunesmith
oh cool! I tried one here: 0xa93eb477fe671f5911ddb56b2c0aa6bb4b74b8de

~~~
dominiksch
Sent. Once the transaction has been received, you should be able to click on
"Start Poll" at the page :)

~~~
pippy
I have one i tested too: 0x06183b08067874c411e1fe0dd7d1b14bd357506e

~~~
dominiksch
Sent, your poll should be ready soon. :)

------
mrdrozdov
Anyone can comment on its ability to scale? Not sure exactly what to ask about
(I guess performance?), but do you think this could scale to say 200 million
people?

------
what-no-tests
BUG: After voting there's no response. I can vote over and over again and I
just keep getting '200' responses.

~~~
dominiksch
Hey, that should have been fixed last night. There was a small bug when I
pushed some updates last night.

