Bachelor's Thesis - Implementation of an e-voting system based on blockchain technology
The system consists of the following components:
- User Interface (included in a separate repository) - enables the end users to submit new votes and verify the existing ones.
- Blockchain - all blockchain nodes.
- Blockchain Connector - a broker which enables communication between the web application and the blockchain.
- Node Registry - contains information about the blockchain network.
The running system is using the PBFT consensus mechanism. It works according to the following scheme:
The key logic revolves around the following classes (i.e. Golang structs):
The vote casting procedure uses the system in the following manner:
After a user successfully casts a vote, a UUID token is returned. The token is bound to the corresponding user's vote (to avoid disclosing information such as the relation between particular users and votes). The tokens allow users to verify if their vote was submitted correctly and whether it has not been altered after the submission. The verification procedure is presented graphically below: