Digitization of voting is crucial in modern society especially with the rise of Smart City concepts. Decentralized voting would solve several issues such as government transparency. However, the technical difficulty of deploying blockchain to voting could be big. As an example, the voting app used by Iowa Caucus has failed miserably. The voting app got a technical issue and led to the delay in report of the result.

What it does

This app allows users to vote for a candidate by using BlockChain. As a result, the app can secure the data and prevent people from cheating.

Features of our software include extensive blockchain validation which prevents double voting and impersonation.

How we prevent double voting? Everytime a new block is added, each block in the chain is checked to see if there’s no duplicate.

How we prevent impersonation? In our implementation, each block indicates a vote. The vote is signed using Elliptic Curve Crypto.

How we built it

We wrote the backend using Node.js, utilizing express for the REST API and websocket for P2P communication between the nodes. We used the bare-bone version of Blockchain implementation written in Node.js (naivechain) and we altered the code significantly to suit our need for voting systems. Such modifications include introduction of security through public/private crypto, invention of our own consensus protocol, and a bunch of small changes regarding REST API and P2P communication. The frontend is written in Vue.js, providing real-time and easy-to-use user interface.

Challenges we ran into

Understanding Blockchain took considerable amount of our time since it is complex technology. We spent 24 hours trying to figure out how block chain actually works and how it can be applied to the voting system.

Accomplishments that we're proud of

The huge part of our accomplishments is that we learned a new topic and got to the point where we could implement the technology for practical scenarios. More specifically, coming up with and improving a consensus protocol to sync all the blockchains, applying the cryptography concepts that I learned in college, writing useful frontend, plus extensive testing to make the software stable.

What we learned

  • The inner workings of blockchain.
  • The complexity of P2P data sharing, block validation.
  • Applications of graph theory to create fully connected network of nodes.

What's next for VoteBase

  • Use digital certificate for publishing public keys
  • Use HTTPS and WSS to secure connection
  • Auto discovery of nodes
  • Proof of Work or Proof of Stake in our implementation
Share this project: