Inspiration
The inspiration for this project came from the need to create a safe, secure, and fast way to handle voting, using decentralized techniques. Also, none of us in the team had ever worked on Blockchain technology before, and the challenge of building a working blockchain from scratch was a very interesting prospect for all of us.
What it does
The project aims to decentralize the voting system, be it in government elections, university elections, etc. Very often we see how corrupt and unfair practices are used to tamper with the voting processes. This is a striking problem in almost all parts of the world. Our application hence tackles this by allowing a completely transparent, completely secure, and completely decentralized method to never allow this kind of tampering. Any fraudulent activity can be immediately tracked and tackled, by preventing it from even becoming part of the blockchain. This is done by including miners who verify the voting transactions.
How we built it
We started the structure of the blockchain by studying papers and Github projects. We then began to implement known methods using Python3 programming language. While implementing the _ entire _ blockchain initially seemed like a mammoth task (and it was!), we immediately ran into a bigger problem - The Decentralization. We tackled this by hosting our chain on the server using Flask, and we used many types and levels of encryption algorithms(SHA 256, key generation, signing algorithms to name a few) to ensure security and anonymity. To show all of this in a user-friendly manner, we used HTML, CSS, JavaScript, Bootstrap, etc to design intuitive front-end interfaces to allow the user to sign in, vote for his/her candidate, and check the live stats of the results.
Challenges we ran into
- Difficulty in transferring between data interfaces (DB and local)
- The theory and algorithm behind blockchain technology are really complicated, so it took a lot of effort to study that first.
- Time management was a challenge, while we tried to balance between rest and maximum productivity.
- Learning new skills, lack of experience.
- UI tools are very time taking to develop right.
Accomplishments that we're proud of
- One of us was from a non-Computer Science background, so for him to build his first UI page was a big deal for all of us.
- Working with blockchain was completely new to all of us, so it was very rewarding to have a perfectly functioning blockchain system.
- Not only are our services available via a website, but we can also provide these via APIs that other developers can use in their own way for their own applications.
- None of us in the team knew each other before the hackathon. We are all international student from completely different countries. But we cam together and worked with an amazing synergy, and were able to perform and deliver.
What we learned
- Blockchain technology
- Having a good team can make a big difference.
- Learning how to host servers using Flask
- Learning encryption techniques
- Good food is a great mood uplifter!
What's next for VoteChain
- Improved security by different types and levels of encryption
- Designing and developing the VoteCoin wallet
- Implementation and integration with campuses’ systems to provide a system of incentive and money
- Increased capacity for handling heavy user traffic
- Better UI experience and design
Built With
- blockchain
- cryptography
- css
- flask
- html
- javascript
- python
Log in or sign up for Devpost to join the conversation.