Flask GUI in development
Chain Voting Summary
We wanted a decentralized blockchain voting system which uses an incorruptible and immutable background to have a fair electoral process and increases the voter engagement by more convenience and accessibility. It allows transparency by tracking votes to ensure its proper place while being anonymous. It reduces polling time with the following and tallying in real time.
What it does
Chain-Voting constructs a decentralized blockchain network that can be used in small or large scale elections. A Firebase database is used to create a whitelist of voter id's and passwords who can participate in the election. To begin the blockchain network, 'voter.py' creates a list of candidates and a genesis block. Then other voters can run 'voter.py' to cast their votes and update the blockchain.
How we built it
We built it in Python using blockchain to decentralize the voting system by updating a voting ledger on each node connected to the network. We used web sockets to connect the nodes together and update the blockchain. We used a Firebase database of voter IDs and passwords to check the authenticity of the voter and also checked if a voter has attempted to vote twice.
Challenges we ran into
We could not get it working on two different computers due to firewall issues. We could not complete a graphical user interface in time to make it more user-friendly. Initially, we were having troubles creating a Firebase database as no one had used it before but we finally understood the syntax and got it working.
Accomplishments that we're proud of
When the four of us came to MadHacks, we had limited knowledge of what to pursue and how to do it. During the team-making phase, all of us met where the idea of a blockchain voting system was pitched. With most of us having inadequate knowledge on networks and the underlying concept of blockchain, we still decided to undertake it. Throughout the 24 hours we were awake, we understood how a blockchain works, implemented it and successfully debugged our program. Moreover, we got to know more about the Python language and how to successfully integrate it with server sockets. The most vital things that made our project successful were teamwork, sheer dedication and fortitude. Without trusting each other, it would not have been possible.
What we learned
All of us learnt how to code and implement a blockchain. We learnt a lot about using web sockets for networking and how to create a Firebase database.
What's next for Chain-Voting
- Salt and hash user passwords in the Firebase database
- Encrypt user id to keep votes anonymous
- Prepare Chain-Voting for a post-quantum era by implementing hard hashing and encryption algorithms (such as lattice cryptography using the SVP or learning with errors)
- Implement a GUI to improve voting experience
- Parallelize blockchain verification to improve end-of-election tallies
- Add more voting options to allow for different kinds of responses, which may allow users to design research surveys