Skip to content

Anonymous voting system based on ethereum blockchain.

Notifications You must be signed in to change notification settings

lbandlish/DeepVote

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

67 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DeepVote

Anonymous faculty voting system developed by:

Name Roll No Email
Chaman Agrawal 160205 [email protected]
Lakshay Bandlish 160360 [email protected]
Raghukul Raman 160538 [email protected]
Yash Mahajan 160822 [email protected]
Yasharth Bajpai 170822 [email protected]

Introduction

DeepVote is an Ethereum based online voting system for faculty members. It allow faculty members of any institution to vote on any matter. With the help of blockchain, out voting system provides anonymity to the users and the votes can not be tampered once casted.

Description

Admin

The admin can take the public keys of all the faculty through the faculty e-mail. The admin can create an poll with the choices he wants and can select the end of poll date which is time till which one can vote. The admin will then go to poll page and publish the ethereum contract.

Voter

The voter can generate a key pair and can send it to admin while registering though e-mail . The voter will click on the fetch link to get all the current polls available. He will then go to poll page select an option and can vote till the end of the voting period. After that the voter must click on the reveal button on the pole to get his vote counted before the end of the voting period.

Results

The final results will be viewable on the admin webpage.

How it works

Preserving Anonymity

The Two Stage Commit-Reveal Voting & Linkable One Time Ring Signature logics used in our app takes care of keeping the voter anonymous even in a closed voting group. The admin contract needs to verify if the voter is a valid one i.e. In the list of eligible voters & has not voted before,which is accomplished by the Linkable-OTRS. Thereafter,the TSCRV aids in making the vote hash/vote verifiable on the blockchain without giving a hint away about the users identity.

Verifying Correct Voting

The voter can use his transaction id to access the hash of his committed vote and a randomly generated nonce on the blockchain which is as well saved as a local copy on the disk.The user can hash his vote and nonce manually and compare it with one uploaded on the blockchain to ensure the integrity of the poll.

Keeping Private Information Secure/Taking Impersonation out of Question

Assuming that the voter's device is password protected, the architecture of the app ensures that user's private information doesn't go out from his device i.e. private key,vote,nonce etc. are saved on voter's PC and all manipulation using them are done locally.

Setup

Prerequisites:

  • Web3.py
  • Solc 0.4.24 (Install from binaries)
  • Django
  • Php
  • Ganache CLI
  • python3
  • python3 modules- hashlib,pysha3,pickle

Running the Project

Run the ethereum blockchain network

sudo ganache-cli

For the admin server, goto admin directory and run

python3 manage.py runserver

The admin will create a new poll from the admin page with the commit and reveal period specified.

The voters will vote by runing the php local server in the local directory.

php -S localhost:8080

About

Anonymous voting system based on ethereum blockchain.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 96.4%
  • HTML 2.4%
  • Other 1.2%