/evoting

Bachelor's Thesis - Implementation of an e-voting system based on blockchain technology

Primary LanguageGo

E-Voting

Bachelor's Thesis - Implementation of an e-voting system based on blockchain technology

Architecture

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.

System Overview

Practical Byzantine Fault Tolerance (PBFT)

The running system is using the PBFT consensus mechanism. It works according to the following scheme:

pbft

Implementation Overview

The key logic revolves around the following classes (i.e. Golang structs):

class diagrams (1)

Vote Casting and Verification

The vote casting procedure uses the system in the following manner:

vote casting upscaled

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:

vote verification upscaled (1)