BitVote
In a world where trust and transparency is almost non existent, voting plays a crucial role in shaping our societies. Organizations, governments, and communities rely on voting systems to make critical decisions. However, ensuring the integrity of the voting process has been a challenge over the years. That's where BitVote comes in—a voting platform that uses the power of blockchain technology to provide secure and transparent voting solutions.
1. Data and Transaction Model
The BitVote platform effectively models various entities to ensure a smooth voting experience. These entities include:
- Participants: This entity encompasses different individuals and organizations involved in the voting process, including registered voters, organizations hosting elections, and administrators responsible for managing the platform. Each participant is uniquely identified within the blockchain network through a specific address with Google authentication.
- Assets: BitVote has multiple assets, the most important being:
- Vote: Each vote is associated with a specific voter and a particular voting poll, displaying the voter's decision and the selected poll. Additionally, other assets may exist within the system to facilitate authorization or access control.
- Poll: A poll contains an array of options that voters can choose from and includes an opening date and closing date, which determines the voting timeframe.
- Transactions: Transactions are actions that occur within the platform, and they include:
- Vote: Registered voters submit their votes to specific voting pools. This transaction registers and processes votes securely and transparently.
- CreatePoll: Allows organizations to create new voting pools and define the poll's opening and closing dates.
- GetResults: This transaction allows organizations to retrieve the results of a poll, including which option won and the votes cast for each option.
2. Logic (Smart Contracts)
The BitVote platform adheres to several business rules to ensure fairness and accuracy. These rules include:
- Each user can participate in multiple voting pools.
- A user can submit only one vote per voting pool.
- Only authorized administrators can create and manage voting pools.
- Only voters can vote in a poll, and only organizers can create polls.
- Voters can only vote within the defined timeframe set by the organizers. The platform also has the potential to implement event types and consumers to notify users about the opening of new polls, although this functionality is not yet developed.
3. Technology
In developing BitVote, we utilized the following technologies: Hyperledger for the contract layer, ensuring secure and transparent transactions on the blockchain. Express was used for the server, providing a fast and flexible Node.js web application framework to handle API requests. Lastly, Angular powered the frontend, offering a user-friendly and responsive interface for a seamless voting experience. Together, these technologies enabled us to create a robust and efficient voting platform.
4. Architecture Organization
BitVote employs a multi-peer and multi-organization network organization. Peers play a crucial role in storing voting records and verifying votes before adding them to the system. In this proof-of-concept application, there are two organizations, each operating its own peer. However, in a real-world scenario, there would likely be more organizations and peers to reach a majority consensus before transactions are included in blocks. This decentralized approach ensures the integrity and reliability of the voting process, making BitVote a robust and trustworthy platform for secure and transparent voting.