A Decentralised digital Voting System based on Blockchain architecture.
A research paper has also been written on this project click here
- Front-End Development: HTML,CSS,Bootstrap,Vanilla JS,Jquery
- Data-Processing and Blockchain Development: Python 3.6.5
- Back-End Development: Django-Python Framework
- Database management: DB SQLite
- The voter authentication is carried out in two steps and it is implemented using Aadhaar API services.
- A voter has to provide his Thumb impression ID and Aadhaar ID to the system which will serve as an input to Aadhaar API.
- Aadhaar API will provide the result as a basic detail of the voter if he/her has been successfully authenticated.
- Here system will create a unique voter ID for the voter.
- Again the voter will cast a vote for any one of the candidate.
- After vote casting there are six different steps are carried out for which we have designed a special REST API:
- Transaction Verification
- Proof of Work Algorithm
- Block creation and Serialization
- Block Broadcasting and validation
- Consensus Algorithm
- Byzantine Fault Tolerance
- A peer to peer distributed network on which the blockchain architecture works.
- A Web Socket request API for broadcasting the all the requests into P2P network.
- Handling concurrency by using a mutex lock mechanism.
- A relational DB SQLite is used as a database for the project.
- Many cryptographic and encryption algorithms are used to store the data securely in the database (SHA-256, CSPRNG, salt-hashing, etc).
- Complete normalization is also achieved in different relations of the database.
- This panel is only reserved for the governing body of an election.
- Every admin is assigned a unique Election Commission ID for authentication.
- Result analysis of election is carried out in this section.
- Clone this repository.
- Change this to working directory.
- Hit command: "docker-compose up --build"
- Go to http://localhost:5000/auth/ in your browser.