Accusations and suspicions in regards to the integrity of elections have always been an issue, but in recent years, we have seen an increasing distrust in the voting process. Several controversies surrounded the recent midterm elections, from ballot harvesting and registration fraud to voter suppression. Online voting and decentralizing elections through blockchain technologies will not only boost voter participation, but also allow for greater transparency in the voting process.

What it does

The distributed application identifies unique voters using public-key cryptography, and voters use both their public and private keys to cast a vote on a referendum or poll, which propagates through the network until it becomes confirmed in a block by a miner. The blockchain allows individual voters to be anonymous, but keeps the immutable ledger of votes public in order to prevent fraud and tampering.

How we built it

A significant amount of time was spent brainstorming how we would implement a blockchain that would function without cryptocurrency, and shift its focus to function as a voting ledger. We eventually settled on creating the backend with Python, using Flask as a local server to display the front end user interface. Bootstrap was used for CSS theming, and JavaScript for making AJAX requests between the front and back end.

Challenges we ran into

One of the first problems we ran into was how to incentivize people to mine the blockchain data. While a common reward is paying cryptocurrency to the first one who successfully mines the block, we did not have a reliable, approved source to fund this operation (spending tax dollars would undoubtedly be a controversial debate). We decided on providing the opportunity to start their own polls and collect data they are interested in. A harder challenge was actually creating the decentralized blockchain network and the public ledger that would record the collected data.

Accomplishments that we’re proud of

We’re proud of the fact that we were able to create a blockchain-based distributed application in such a short time frame, considering none of us have had experience working with cryptocurrency or blockchain related applications, or peer to peer networks before for that matter. We’re also immensely proud of our idea, and its potential to make a huge difference in the world through improving the democratic process and helping prevent fraud, corruption, and voter suppression, especially for minorities and oppressed groups.

What we learned

In adapting the blockchain model for cryptocurrency to work for voting, we had to really understand the advantages and drawbacks of online transactions and a decentralized network. While there are indeed risks of outside interference from malicious hackers and other technological threats, the blockchain mitigates the problems of voter suppression and voter fraud. In addition, we learned all the technical details of implementing blockchain with Python: public key cryptography, hashing functions and mining, proof of work, immutability of blocks by dependency of previous blocks’ hashes, etc.

What's next for P2Poll

In the future we hope to add more security measures to the blockchain and implement two factor authentication in an effort to live up to our mission and make voting even more secure. To make it viable in the real world, the incentive for mining must also be expanded upon, so only those who accumulate enough credits will be able to run custom polls on the blockchain. Finding a way to make a more robust registration system which verifies an individual’s identity will also be a major leap in making P2Poll viable in important referendums and even elections in the future.

+ 3 more
Share this project: