A blockchain-based voting system that preserves voter privacy and increases accessibility, while keeping the voting system transparent, secure, and cost-effective. The system implements a voting framework that utilizes ethereum’s blockchain and smart contracts to achieve voter administration and auditable voting records. The implementation was deployed on ethereum’s test network to demonstrate usability, scalability, and efficiency.
Pre requisites:
- Node JS
- Ganache Gui
- Metamask extension in the browser, preferably chrome.
Open ganache and select quick start ethereum.
Open your browser and configure metamask. Create a wallet and store yourSecret Recovery Phrase
in a safe place.
- In metamask, go to settings > networks > add network. You can also get to this by clicking the metamask extension pinned on your browser > clicking the profile picture > settings > networks > add network
- Give your network any name of choice.
- For New RPC URL go to ganache where you'll copy the RPC server url and paste in Metamask.
- Chain ID for ganache is 1337.
- You can name currency symbol as "ETH" and save.
- Open ganache and select show keys on any account. The show keys button is the key icon.( Index-0 accound will be of admin by default i.e of 99.90 ETH)
- Copy the private key and click done.
- Open the metamask menu which can be accessed by clicking the profile picture and select import account.
- Paste the private key copied from ganache and click import.
- Web3.js:
npm i web3
- Solidity (solc-js):
npm i solc
- Trufflejs:
npm install -g truffle
git clone https://github.com/shrinivask007/E-Voting_System_Blockchain
cd E-Voting_System_Blockchain
- Frontend
cd client
npm i
npm start
- open another terminal for Backend
cd server
npm i
npm start
- open another terminal
truffle compile
truffle migrate
or ( truffle migrate --reset
for subsequent runs)
Check out the detailed implementation at https://medium.com/coinmonks/e-voting-system-based-on-blockchain-75570ef92c4
The project will open in the browser and metamask will ask you to select an account. Select the account we had imported earlier.