Skip to content

TURING-V2/decentralized_voting_system

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

                                               DECENTRALIZED VOTING SYSTEM

DESCRIPTION
	Current voting systems like ballot box voting or electronic voting suffer from various security threats such as DDoS attacks, polling booth capturing, vote alteration and manipulation, malware attacks, etc, and also require huge amounts of paperwork, human resources, and time. This creates a sense of distrust among existing systems.
	The solution is using blockchain voting process can be made more secure, transparent, immutable, and reliable. Suppose you are an eligible voter who goes to polling booth and cast vote using EVM (Electronic Voting Machine). But since it’s a circuitry after all and if someone tampers with microchip, you may never know that did your vote reach to person for whom you voted or was diverted into another candidate’s account?
	Since there’s no tracing back of your vote. But, if you use blockchain- it stores everything as a transaction that will be explained soon below; and hence gives you a receipt of your vote (in a form of a transaction ID) and you can use it to ensure that your vote has been counted securely.

INSTALL
	git clone >> 
	mkdir build/ >> 
	cmake .. -DPRECOMPILE=1 >>
	make dvsClient dvsNode -j$(nproc)
	openssl generate rsa private and public key or use given
	Install the necessary third-party libs
	Use this to format
	find decentralized_voting_system/ -iname *.hpp | xargs clang-format -i
	
WORKING
	Project contains two main executables dvsClient for client side and dvsNode for server side. The block in the blockchain contains (unique id hash ,vote ,timestamp ,public key hash). Every hash here means sha256 ,uniqueid hash is generated using > your gov id hash + priv key hash =total hash ,unique id hash prevent voting from same id again and gives privacy. Public key hash acts as a EVM identity which is assumed to be stored first which is fixed can't be changed. Block is then encrypted using private key then hex coded then passed to all nodes with. On node side matches the pub key hash with stored one's first, if it contains then decrypted ,this proves the authenticity of the block and added to the chain the request to add block is forwarded to other nodes . Tracker here maintains in providing host port of the nodes connnected. The added block is written in ledger file ,and its hash added to the Merkle tree.
	On connecting of new node genesis block is asked or if not a new node then Merkle root of other node is asked and majority occurrence is choosen, then ledger of that node is downloaded and used next.

WHAT'S NOT IMPLEMENTED YET
	It's not made for casual app voting from home without pole booth cause , people in rural area still not familiar and voting can be affected or biased. Therefore voting on EVM is preferred under supervision ,this method only resolves the true count,authenticity that can't be altered as its decentralized and majority decides.
	A simple Tracking system to keep track of node is to be implemented in the future, or u can try manually adding node address to the file.
	No GUI as it is a simple POC project dont expect working without bugs

LICENSE
	GPLv3

About

A blockchain based voting system.

Resources

License

Stars

Watchers

Forks