More than ever before the average person has started to question the integrity of the voting system. And why wouldn't they––it's susceptible to hacking. Re-counting always yields different results. There's no way to verify your vote was counted. We asked ourselves how can we re-design the voting system while preserving everything we like about it.
What it does
We started by looking at the basics of what a good voting system entails. First and foremost everyone's vote needs to count. Second, the voting process needs to favor what the people actually want; tyranny of the majority is not a way to run a country. Our first goal was to make sure that everyone knows their vote counts. To do that we decided to move the voting system onto the blockchain. Anyone can verify at any time their vote made it and was counted. No more re-counts changing results. The major problem with this, however, is that if every vote is public a live tally happens while voting is ongoing which fundamentally changes the outcome of an election. That's the opposite of everyone's vote counting. Our innovation is we figured out a way to anonymize who everyone is voting for during the election, but at the end of the day it all still can be verified. Third, we want the results to matter. To that end, we implemented a fully instant runoff vote system to reduce polarization.
The best part is all of this is super accessible. Anyone can vote using our simple iPhone app. No more going to the polls. And––it's still secure and any potential breaches would be known instantly.
How we built it
We built it around the ethereum blockchain and smart contracts. When a person votes, they are in essence sending a token to a specific wallet that only they can send votes to. Our system is then able to manage one wallet per candidate per question per person, combine this all together, and apply instant runoff voting. We also have security measures in place so that only those who are registered in the centralized voter registry will be given vote access in the form of a private key/address per election. That private/key address is sent to the user before the election in the form of a QR code which the app can read––or if the user so desires can enter into the blockchain themselves.
Challenges we ran into
Figuring out how to keep everything a secret during the election, but public afterwards was a major conceptual challenge. Traversing the blockchain efficiently to tally votes is also incredibly challenging and requires the creation of several different data structures. Learning how to use Ethereum was also a general challenge.
Accomplishments that we're proud of
We managed to design a voting system that met all of our goals. We strongly believe this is the best voting system ever created.
What we learned
Download everything early. Downloading the entire Ethereum blockchain took over 5 hours and was a huge waste of time.
What's next for Oceans
Scale. Time to use it in a real use case.