Ethereum blockchain web application for open voting scenarios (built using Solidity/Truffle/React.JS)
===== Ethereum BlockChain web application for transparent/open voting scenarios (with some degree of optional privacy) =====
- Ethereum key pair based authentication
- Node.JS/Javascript & React.JS frontend
- Smart Contract based backed (using Solidity language)
- Uses Truffle JS & MetaMask for interaction
Required: Node.JS, Ganache (to emulate a local blockchain)
Capabiltiies:
- Unique vote is enforced
- Encrypted voter authentication data using xsalsa20-poly1305
- Role-based authorization (two roles - voter and election administrator)
- Manual approval of the voters
- Distributed data storage (specific to BlockChain)
- Uses homomorphic encryption (Paillier) to hide the vote count
- All the roles are constrained to follow the mutually estabilished rules of the smart contract
- Backend and frontend validation of the form received data
How to run:
- Install node modules
- Start Ganache (CLI or GUI)
- truffle migrate --reset (to do migration & contract compilation)
- npm run start (to run the frontend side of the web app)
Screenshots