Mohamed Ibrahim, Kajan Ravindran, Hyon Lee, Omair Farooqui
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.
.
βββ 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
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.
- ssh into raspberry pi
ssh pi@<ip address>
- Change directory to server location
cd /var/www/electionblock_server
- Start python virtual environment
. /venv/bin/activate
- Run fingerprint server
python3 fingerprint_sensor.py