Skip to content

Latest commit

 

History

History
108 lines (69 loc) · 5.48 KB

File metadata and controls

108 lines (69 loc) · 5.48 KB

Decentralized Blockchain-based Voting System

This is a decentralized blockchain-based voting system built on Ethereum smart contracts. The system uses web3.js for verifying the KYC of the user using face matching. All the photos and documents are stored on IPFS, and Twilio is used to send confirmation messages.

Overview of the App

  • The app is a secure and transparent way of conducting elections.
  • Ethereum smart contracts are used for vote counting and verification.
  • This app has mainly two sides one is admin side one is normal voter side.
  • The system ensures that only registered users can cast their votes.
  • Each user can cast only one vote to prevent fraud.
  • KYC verification is done using face matching to ensure that only eligible users can participate in the elections.
  • All the photos and documents related to KYC verification are stored on IPFS to ensure that they cannot be tampered with.
  • Twilio is used to send confirmation messages to the users after they cast their votes, adding an additional layer of security.

Structure of the Project

The project consists of two main components: the smart contract and the front-end application. The smart contract is responsible for vote counting and verification. The front-end application is responsible for user authentication, KYC verification, and vote casting.

This project has two sides one is the admin side one is the normal voter side, only the admin side has the ability to verify the add candidate, and verify voter.

The project uses Truffle for compiling and deploying the smart contract. Ganache or any other Ethereum-compatible blockchain can be used for running the local blockchain network.

The front-end application uses web3.js for interacting with the smart contract. The application is built using React. The application uses the face matching API for KYC verification. The photos and documents related to KYC verification are stored on IPFS.

Tech Stack

The tech stack used in the decentralized blockchain-based voting system is as follows:

  • Ethereum: Ethereum is used to build the smart contracts that handle the vote counting and verification.
  • Web3.js: Web3.js is used to interact with the smart contracts from the front-end application.
  • React: React is used to build the front-end application.
  • IPFS: IPFS is used to store the photos and documents related to KYC verification.
  • Twilio: Twilio is used to send confirmation messages to the users after they cast their votes.
  • Face Matching API: Face Matching API is used for KYC verification.
  • Truffle: Truffle is used to compile and deploy the smart contracts to the local blockchain network.
  • Ganache: Ganache is used as the local blockchain network for testing the smart contracts.

Model Deployment

  1. Clone the repository.
bashCopy code
git clone https://github.com/sukhendu2002/decentralizedVotingUsingBlockchain.git
  1. Install the dependencies.
npm install
cd server 
npm install 
cd ..
cd client
npm install
cd ..

  1. Start the local blockchain network using Ganache or any other Ethereum-compatible blockchain.
  2. Compile and deploy the smart contract to the local blockchain network.
truffle migrate --reset --netwok mumbai
cd server 
npm start

open a new terminal

cd client
npm start

Demo Screenshots

Landing Page

1677394651676

Add a new candidate

1677394929645

Initialize Voting

1677394973442

Voter Registration page

1677395069893

Verification page from the Admin side

1677395387524

Voting page

1677395441904

Result Page

1677395513220

Conclusion

The decentralized blockchain-based voting system is a secure and transparent way of conducting elections. The system ensures that only eligible users can participate in the elections and that each user can cast only one vote. The use of face matching for KYC verification and IPFS for storing photos and documents ensures that the system is secure and tamper-proof. The integration of Twilio for sending confirmation messages adds an additional layer of security. The system can be used for conducting elections at various levels, including local, national, and international.