Skip to content

Blockchain and IoT based voting system πŸ—³οΈ

Notifications You must be signed in to change notification settings

mibrah42/electionblock

Repository files navigation

Electionblock

Screen Shot 2021-03-21 at 11 36 48 AM

Mohamed Ibrahim, Kajan Ravindran, Hyon Lee, Omair Farooqui

Introduction

ElectionBlock is a permissioned blockchain voting system, running on a centralized network of nodes, with the integration of a biometric scanner to allow for vote integrity and distinguishing between registered and unregistered voters. This design allows for data immutability while providing the user with security and control over their ballot. Experimental results demonstrate the potential for scalability of the system to handle a high volume of votes from multiple servers while maintaining data integrity, performance, and security.

Folder structure

.
β”œβ”€β”€ README.md
β”œβ”€β”€ app.py
β”œβ”€β”€ block.py
β”œβ”€β”€ blockchain.py
β”œβ”€β”€ blockchainViewer.gif
β”œβ”€β”€ client
β”œβ”€β”€ constants.py
β”œβ”€β”€ detect_finger.py
β”œβ”€β”€ file_manager.py
β”œβ”€β”€ fingerprint.gif
β”œβ”€β”€ fingerprint_search.py
β”œβ”€β”€ fingerprint_sensor.py
β”œβ”€β”€ helpers.py
β”œβ”€β”€ landing.png
β”œβ”€β”€ locustfile.py
β”œβ”€β”€ requirements.txt
β”œβ”€β”€ run.sh
β”œβ”€β”€ seed.py
β”œβ”€β”€ shard.py
β”œβ”€β”€ shard_broker.py
└── statistics.png

Instructions to run

Install dependencies

pip3 install -r requirements.txt

Run main blockchain server

python3 app.py

If you want to run secondary nodes (slaves). Pass in a port number argument. You can run as many nodes as you want.

python3 app.py <port number>

Run client (React application)

Change directory to client

cd client

Install node packages

npm install

Run client server

npm start

React app will run on http://localhost:3000

Seed blockchain

python3 seed.py

Run fingerprint sensor

In our example, we use a fpm10a fingerprint sensor with a model 4b raspberry pi. In order to run the application, you need to do the following.

  1. ssh into raspberry pi
ssh pi@<ip address>
  1. Change directory to server location
cd /var/www/electionblock_server
  1. Start python virtual environment
. /venv/bin/activate
  1. Run fingerprint server
python3 fingerprint_sensor.py

Screenshots

Screen Shot 2021-03-21 at 11 36 48 AM

About

Blockchain and IoT based voting system πŸ—³οΈ

Resources

Stars

Watchers

Forks