GithubHelp home page GithubHelp logo

cryptocast---blockchain-based-secure-voting-system's Introduction

CryptoCast - Blockchain Based Secure Voting System

CryptoCast is Ethereum Blockchain based decentralized application which ensures secure and transparent voting scheme for organizing public and private elections.

๐Ÿ’ก Features

โ–ถ๏ธ Secure Voter Registration
โ–ถ๏ธ Ballot Signing Support For Election Authority
โ–ถ๏ธ Tamper-proof Ballots
โ–ถ๏ธ Double Voting Prevention
โ–ถ๏ธ Blind Signature Support using ECDSA

๐ŸŽฏ Purpose of Blockchain Based E-Voting

Physical election systems that are prevalent have several drawbacks -

  • 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.

๐Ÿ”จ Technology Stack

  1. Blockchain Tools
    1. Truffle
    2. Web3 JS
    3. Ganache
  2. Smart Contract Programming
    1. Solidity
  3. Front End
    1. HTML
    2. CSS
    3. Bootstrap
    4. JavaScript
  4. Dev Servers
    1. Node
    2. Lite-Server

๐Ÿ’ผ Pre-requisites

  • Truffle = v5.1.10
  • Node.js >= v12.18.2
  • Solidity (Solc-js) = v0.4.23
  • Node.js >= v12.18.2
  • Web3 >= v1.2.11

๐Ÿ“ฃ How to Build

Step-1 : Prepare Development Environment

  1. Install Node JS

    • Head into the website & download.
    • Tip: Use NVM version manager to flexibly install NodeJS)
    • $ npm install -g truffle
  2. Install Ganache GUI

    • Head into the website & download.
  3. Clone the repository

    • Download the repo to your local machine using $ git clone.
  4. Install Project Dependencies using NPM

    • Change directory into the project root by $ cd CryptoCast/ and run $ npm install
    • Install the extension based on your preferred web browser (Chrome/Edge/Firefox)
    • Based on your favorite text editor (Atom/Sublime Text/VSCode), install Solidity Syntax Highlighter Package to properly highlight the solidity sources.

Step-2 : Run the Project

  1. Compile & Test

    • 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.

  2. Fire Up Ganache

    • 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
  3. Smart Contract Migration

    • Run $ truffle migrate --reset and wait for successful deployment of the contracts on the local blockchain.
  4. Start Dev Server

    • Start Lite-Server using $ npm run dev on project root.

Step-3 : Interact with the Dapp

  1. Open your preferred browser in http://localhost:3000, with MetaMask activated and logged in
  2. Connect MetaMax with running Ganache using 'Local RPC Server'option in settings.
  3. Take any fake account from ganache.
  4. Register as a voter with NID, wait for transaction to be mined, and then refresh the page
  5. Now you can vote and interact with the contract.

Enabling version updates on your fork

If you wish, you can enable dependency version updates on fork. For that, follow this guide to enable dependabot on your fork.

๐Ÿค Contribution

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.

๐Ÿ† Contributors

Name ๐ŸŽ–๏ธ Social Media ๐Ÿ“ฑ GitHub :octocat:

Anjum Rashid
๐Ÿฆ Twitter
๐ŸŽ“ LinkedIn
๐Ÿ’ป Commits
@bijoy26

Manasir Jisam
๐Ÿฆ Twitter
๐ŸŽ“ LinkedIn
@manasir66

โญ โญ This project is a part of SCI-2020 โญ โญ

OPEN SOURCE CONTEST - STUDENT CODE-IN

About SCI

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.