CryptoCast is Ethereum Blockchain based decentralized application which ensures secure and transparent voting scheme for organizing public and private elections.
- Ballots can be internally tampered before or after vote casting
- Election system does not ensure transparency and security
- Voters need to trust election authority
- Double voting issue can occur
CryptoCast, being a blockchain based E-Voting solution, addresses these issues by adpoting following schemes -
- Each ballot is cryptographically signed using election authority's private key
- Ballots are tamper-proof as those are digitally signed and verified by smart contract on the blockchain.
- Double voting is addressed by keeping registered voters' data on Blockchain
- Election authority does not have access to voter's ballot
- Elligible voters can only register for the election with their National Identification Number.
- Blockchain Tools
- Smart Contract Programming
- Front End
- Dev Servers
- Truffle
= v5.1.10
- Node.js
>= v12.18.2
- Solidity (Solc-js)
= v0.4.23
- Node.js
>= v12.18.2
- Web3
>= v1.2.11
-
Install Node JS
- Head into the website & download.
- Tip: Use NVM version manager to flexibly install NodeJS)
-
$ npm install -g truffle
-
Install Ganache GUI
- Head into the website & download.
-
- Download the repo to your local machine using
$ git clone
.
- Download the repo to your local machine using
-
- Change directory into the project root by
$ cd CryptoCast/
and run$ npm install
- Change directory into the project root by
-
Install MetaMax extension
- Install the extension based on your preferred web browser (Chrome/Edge/Firefox)
-
Install Solidity Syntax Highlighter Package (Optional)
- Based on your favorite text editor (Atom/Sublime Text/VSCode), install Solidity Syntax Highlighter Package to properly highlight the solidity sources.
-
-
Run '$ truffle compile' and make sure the source is successfully compiled.
-
Tip: Remove 'build/' folder and then compile for generating fresh new compilation artifacts of the sources.
-
-
- Open Ganace and start local blockchain workspace
- Make sure the Ganache port ID is same as the port specified under 'development' network in truffle-config.js.
- Copy the deployed 'contract address' and paste it on contractAddress variable on 'src/js/app.js' script
-
- Run
$ truffle migrate --reset
and wait for successful deployment of the contracts on the local blockchain.
- Run
-
- Start Lite-Server using
$ npm run dev
on project root.
- Start Lite-Server using
- Open your preferred browser in
http://localhost:3000
, with MetaMask activated and logged in - Connect MetaMax with running Ganache using 'Local RPC Server'option in settings.
- Take any fake account from ganache.
- Register as a voter with NID, wait for transaction to be mined, and then refresh the page
- Now you can vote and interact with the contract.
If you wish, you can enable dependency version updates on fork. For that, follow this guide to enable dependabot on your fork.
Contributions are welcome!
Feel free to submit a pull request, with anything from small fixes, to full new sections. See the issues for topics that need to be covered or updated. If you have an idea you'd like to discuss, please open up an issue.
Name ποΈ | Social Media π± | GitHub |
---|---|---|
Anjum Rashid |
π¦ Twitter π LinkedIn π» Commits |
@bijoy26 |
Manasir Jisam |
π¦ Twitter π LinkedIn |
@manasir66 |
Student Code-In is a global program that helps students grow with Open Source. It is a 2 months long Open-Source initiative which provides you the best platform to improve your skills and abilities by contributing to vast variety of Open Source Projects. In this, all the registered participants would get an exquisite opportunity to interact with the mentors and the Organizing Team.