Decision-making is a basic and essential part of element of civilization. With the advent of technology and especially the power of blockchain to decentralize and democratize decision-making, we are inspired by how blockchain-based voting can revolutionize and improve how society makes decisions—on everything from small decisions for self-organized groups to eventual national elections. In the future, it can even enable efficient and effective ‘global’ voting on issues affecting our planet as a whole.

Considering the challenges with current voting systems—prone to tampering, fraudulent voting, and inconsistent reporting; blockchain provides a powerful solution through digitized, decentralized, public ledger and paves a way to an empowered form of making group choices—crowd-deciding.

What it does is a blockchain-based voting system, with zero-knowledge proof voter verification. It empowers decision-making through leveraging digitized, decentralized, public ledger. In its current iteration, it is a functional voting system with real-time addition the blockchain for an initial group of polls.

How we built it

Our database is entirely based on blockchain, and the back-end is in fact real. Every time a vote is submitted, it is written and can never be changed. We use the LotionJS wrapper to write to Tendermint, which helps keep our state machines & nodes in sync. For the web-app we use express & React with the Grommet.IO component library. All designs were done with sketch using the Grommet.IO pack.

Challenges we ran into

We encountered some difficulty setting up Ethermint. We also had some challenge with setting up proxy to the blockchain with express.

At a more philosophical and strategy level, we encountered some challenges in fully conceptualizing how to use a system that is inherently decentralized and completely public for certain use cases such as government elections and corporate enterprise where some level of centralization is called for and/or some voting outcomes are not intended to be fully public. As a group, we worked through this by deciding to initially focus on serving self-organized groups and as we gather data, experience we can architect a system that can be used for these important use cases.

Accomplishments that we're proud of

  • We have a working model by using LotionJS with a UI that has been called easy-to-use by voters.
  • We also circulated a survey related to concerns people have when creating online polls and elections and received over 30 global responses. The suggestions and responses helped us focus on the pain points faced by potential users and future features that will help serve our mission of creating a new way to crowd-decide and improve upon past and current blockchain voting efforts.

What we learned

With members of our team having differing levels of experience and knowledge about blockchain functionality and application, as a group, we learned about blockchain aspects such as: proof-of-work, proof-of-stake, Solidity, Ethereum. We learned LotionJS setup and used devpost for the first time.

Through our research on the application of voting and blockchain, we gained knowledge on e-voting systems landscape with or without blockchain as well as security aspects of e-voting systems.

What's next for

  • More R&D effort on wallet which securely saves voter's confidential data (e.g. birthdate, residential address, ethnic group, political party affiliation) and ZK-proof scheme.
  • Scale the blockchain, make it able to have throughput of 2000 TPS.
  • Design a more economic incentive mechanism to better secure the system. The voting system faces various attacks: sybil attack, DDoS, 51% attack, fake/double voting conducted by foreign states, political activist groups and individuals.
    • Sybil attack, fake/double voting problems can be prevented by the underlying blockchain.
    • DDoS requires infrastructure protection and local node failover.
    • To tackle the 51% attack challenge, we believe the mining nodes plays an essential role and must be prequified to prevent foreign states' influence to the voting process. We plan to adopt a PoS (proof-of-stake) mechanism for relevant citizens become the mining node or elect their delegate monitor the election on their behalf. We called it "citizen watch". With this design, 51% attacks no longer makes sense.
    In the future, we also look forward to measuring the impact that truly democratized, decentralized voting has on transparency and accountability, both within small groups and to the system as a whole. We have created some interesting feedback loops through the surveys and functional poll, including connecting with individuals actually working on creating voting systems to increase transparency in countries where this can be an issue.

Built With

Share this project: