GreenSalamanderCS's post
Project Idea: Blockchain-based Voting System
A Blockchain-based voting system ensures secure & transparent voting, reduces the risk of voter fraud & improves democratic voting processes via the use of blockchain technology. For this project, you would need to know Ethereum, React, Node.js, Express.js & MongoDB, as well as Solidity & JavaScript.
Frameworks
- Ethereum is used to build smart contracts using Solidity & decentralized applications. This framework is geared towards transparency & security. It is extremely popular.
- React, Node & Express are used for developing client & server-side interactive web applications which can be updated in real time from user-input.
- MongoDB is used for storing unstructured data as it is not a relational database model. This database management system is a NoSQL (not only SQL) system which is often used in web apps requiring scalability & flexibility.
Algorithms
You will need to know four algorithms to create this application.
- The Proof of Work algorithm uses a majority-agreement consensus algorithm solving a complex mathematical problem, hoarding computational resources. Ethereum uses this algorithm. All nodes in the blockchain must agree in order for the new node to be added to the blockchain. All it takes is one disagreement for the new data to be rejected.
- The Proof of Stake algorithm gives the individual nodes in the blockchain autonomy to decide their own criteria for accepting nodes into the blockchain. Ethereum uses this algorithm. This differs from the Proof of Work algorithm as not all nodes must agree on the decision to accept or reject a node. However, favoritism can self-perpetuate, driving the blockchain to a more centralized stance.
- The Zero-Knowledge Proofs algorithm ensures privacy & confidentiality in a transaction by allowing parties to prove a transaction's validity without revealing additional information. This algorithm is used in various payment processing systems which rely on blockchain.
- The Ring Signature algorithm ensures anonymity by allowing a user to sign a message with a group of other users without revealing which user signed it.
Resources
If this project piques your interest, you can consult the following resources to get started. If you get stuck, you can use ChatGPT to help you devise new ideas to solve programming issues which may happen along the way.