All Projects → GottfriedCP → Blockchain-based-E-Voting-Simulation

GottfriedCP / Blockchain-based-E-Voting-Simulation

Licence: MIT license
A web application to simulate blockchain-based e-voting protocol

Programming Languages

python
139335 projects - #7 most used programming language
HTML
75241 projects
CSS
56736 projects

Projects that are alternatives of or similar to Blockchain-based-E-Voting-Simulation

haal
Hääl - Anonymous Electronic Voting System on Public Blockchains
Stars: ✭ 96 (+54.84%)
Mutual labels:  e-voting
E-Voting-App
A simple E-voting Decentralised App using the Ethereum Blockchain, Solidity and the MERN(MongoDB, Express.js, ReactJS, Node.js) stack
Stars: ✭ 84 (+35.48%)
Mutual labels:  e-voting
zeus
Zeus server
Stars: ✭ 49 (-20.97%)
Mutual labels:  e-voting
e-voting-with-django
The Voting System web application using Django is a project that serves as the automated voting system of an organization or school. This system works like the common manual system of election voting system whereas this system must be populated by the list of the positions, candidates, and voters. This system can help a certain organization or s…
Stars: ✭ 54 (-12.9%)
Mutual labels:  e-voting

Blockchain-based E-voting Simulation

Description

This is a Python-based Django project to simulate a concept of blockchain-based e-voting protocol. This project should be run only on the development server with Debug mode on. The simulation comprises two sections: "Block" and "Chain".

"Block"

Scenario: a potential voter has to present himself to the voting organizer, showing his ID and other legal documents. Finally, he has to submit a public key i.e., ECC. Assume that he has successfully registered the public key.

Via the ballot page (see screenshot below), the voter needs to enter his pseudonym (UUID 4) and candidate number. The ballot is then signed using a private key. If the submitted ballot is proven to be valid, it will be sealed (mined). In this section, one block contains only the aforementioned ballot. You can examine the whole process in detail using the console.

(The public-private key pair is hard coded and generated externally. See Technical Details below.)

Ballot page

"Chain"

In this section, transactions (ballots) with valid data will be generated. They are then sealed into blocks. After that, you can explore the transactions and blocks, try to tamper the records, and verify them.

Sealed ballot

Block

The screenshot above shows that a node's database (i.e., your node) has been tampered. You will not see this in real blockchain explorer, but this should give you a glimpse of why tampering immutable ledger is futile.

How to run

  1. Get your virtual environment ready (recommended).
  2. Locate the 'requirements.txt' file. Install necessary packages: pip install -r requirements.txt.
  3. Locate the 'manage.py' file. Run python manage.py runserver. Then access http://localhost:8000.
  4. From the homepage, either run 'Block' or 'Chain' section by clicking 'Start'.

Technical Details

The private key used in this demo is located in 'bbevoting_project' folder ('demo_private.pem' file), while the corresponding public key is hard coded in 'settings.py' (look for PUBLIC_KEY). You may also set some config vars such as N_TRANSACTIONS, N_TX_PER_BLOCK, and the puzzle difficulty (PUZZLE and PLENGTH).

Screenshots

See the 'screenshots' folder.

Acknowledgement

For Prof. ABM.

This project uses a modified version of "pymerkletools" by Tierion for creating merkle root using SHA3.

License

See included MIT License.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].