Registering a public key pair to identify voters
Viewing the blockchain of votes
Voting for candidate B in poll #17 using a unique voter ID and private key
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
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.