Decentralized intelligent voting application.

Related tags

MiscellaneousDiVA
Overview

DiVA

Decentralized intelligent voting application. Hack the North 2021. Logo

Inspiration

Following the previous US election, many voters were fearful that their ballots had been miscounted in favour of one particular party. Following this scepticism, the world saw disturbing riots taking place at the nations capital. With countries around the world becoming more divided, we ultimately trust one another less and less—especially when coming to counting ballots. Furthermore, due to the COVID-19 pandemic, people are more fearful of leaving their homes. With the upcoming Canadian election, many Canadians are forced to risk their health and safety just to exercise their basic voting rights. This why we created DiVA (Decentralized intelligence voting automation), a decentralized voting system which uses blockchain technology to store ballots, while allowing users to cast their ballot using SMS messaging.

What it does

DiVA is a decentralized voting system which uses blockchain technology to store ballots, while allowing users to cast their ballot using SMS messaging. Everything starts with a message to DiVA's central phone number. DiVA then sends the user a link to authenticate them selves. Authentication starts by validating the user is a real person using facial recognition technology for anti-spoofing detection. Then, they undergo an identity validation system powered by Azure Cognitive solutions, by taking a photo of themselves as well as of their Government issued photo ID. If verified, they then get another SMS message with a list of potential candidates to choose from. Final step is to send their choice back to the block chain along with their phone number. This information then gets added as one block on the block chain.

How we built it

We build the blockchain using Solidity's smart contracts where each election is a new smart contract on the blockchain and each vote updates the contracts state on the blockchain. To test the blockchain we used Ganache and Truffle which emulates the Ethereum network locally.

The user verification is done by leveraging Mediapipe solutions for liveliness verification of eye blinking as well as using Azure's face verification API for face matching for identification and validation.

The web-application is made using a Flask/Python backend which connects to the blockchain using Web3.py and can create new elections, add candidates, cast votes for verified voters, show results and show all ballots casted with hashed userIDs for privacy so each ballot is anonymous but anyone can recount the ballots themselves.

Challenges we ran into

One of our most difficult challenges was coming up with a secure verification system that integrated with Twilio's API. Our team was able to create a fully functional algorithm which verifies a person using facial recognition software, however, we were unable to develop a system which connected the person with their phone number. Moving forward, we hope to spend more time working with the Twilio API to be able to match a person with their phone number to increase the systems security measures.

Accomplishments that we're proud of

Prior to starting this project our team had no experience with developing a blockchain network. However, fuelled by a passion to learn about this new technology, our team was able to leverage prior technical experiences to create a fully functional blockchain system. This process of learning a new technology required extensive time and effort. Our ability to learn all this information in such a short period of time was extremely difficult, however, through persistence and perseverance we were able to successfully complete our initial goal.

What we learned

The process of coming up with the idea to developing the entire infrastructure and final product has allowed us to discover the potential of decentralized system on improving many aspects of our daily life especially when combined by Artificial Intelligence Solutions. We learned that one can leverage the blockchain to create a system which is free of any external party intervention while maintain a sophisticated and seamless process for the end user. This idea has inspired us to think about other potential applications of a decentralized systems, and more specifically a blockchain structure.

What's next for DiVA

DiVA's blockchain system currently has the ability to scale to an extremely large scale. However, for DiVA to be used on a mass scale, it must be further optimized from a verification perspective. Through further development on improving the integration between the SMS messaging and the verification system, we can make DiVA a more seamless system. DiVA's main purpose was to be used in an election system. However, DiVA has the potential to be used in many different areas. In recent years we have seen more attention towards ensuring everyones voice is heard and that we engage in processes which promote equality. With DiVA, we are able to offer a platform for groups people to share their thoughts and ideas in an impactful way, while ensuring their voice is heard. A prominent application of DiVA could be in within companies to gain valuable insights from their employees in a seamless manner.

Owner
Ali Shariatmadari
@UWaterloo Software Engineering, Fashion Design, Cinematography
Ali Shariatmadari
Repositorio com arquivos processados da CPI da COVID para facilitar analise

cpi4all Repositorio com arquivos processados da CPI da COVID para facilitar analise Organização No site do senado é possivel encontrar a lista de todo

Breno Rodrigues Guimarães 12 Aug 16, 2021
Buildium-to-stessa - Automation to assist in converting Buildium transactions into Stessa format

Buildium Transactions - Stessa Transactions There is currently no third-party i

Austin Comstock 4 Apr 17, 2022
Script to automate the scanning of "old printed photos"

photoscanner Script to automate the scanning of "old printed photos" Just run: ./scan_photos.py The script is prepared to be run by fades. Otherw

Facundo Batista 2 Jan 21, 2022
Python Project For Beginner

Basic-Vitrual-AI-Assistant Python Project For Beginner Hey There, I had manipulated Selenium WebDriver to make this assistant. I hope, It will be help

Maruf Billah 13 Dec 12, 2022
Example platform plugin that fixes fentry calls in Binja

Example Binja Platform Plugin This is an example Binja platform plugin which fixes up linux kernel module calls to __fentry__. __fentry__ is the linux

_yrp 2 Oct 07, 2021
Generate Openbox Menus from a easy to write configuration file.

openbox-menu-generator Generate Openbox Menus from a easy to write configuration file. Example Configuration: ('#' indicate comments but not implement

3 Jul 14, 2022
A Python module for decorators, wrappers and monkey patching.

wrapt The aim of the wrapt module is to provide a transparent object proxy for Python, which can be used as the basis for the construction of function

Graham Dumpleton 1.8k Jan 06, 2023
Python binding to rust zw-fast-quantile

zw_fast_quantile_py zw-fast-quantile python binding Installation pip install zw_fast_quantile_py Usage import zw_fast_quantile_py

Paul Meng 1 Dec 30, 2021
A webdav demo using a virtual filesystem that serves a random status of whether a cat in a box is dead or alive.

A webdav demo using a virtual filesystem that serves a random status of whether a cat in a box is dead or alive.

Marshall Conover 2 Jan 12, 2022
Final project in KAIST AI class

mmodal_mixer MLP-Mixer based Multi-modal image-text retrieval Image: Original image is cropped with 16 x 16 patch size without overlap. Then, it is re

SuperSuperMoon 5 May 30, 2022
Shai-Hulud - A qtile configuration for the (spice) masses

Shai-Hulud - A qtile configuration for the (spice) masses Installation Notes These dotfiles are set up to use GNU stow for installation. To install, f

16 Dec 30, 2022
Your missing PO formatter and linter

pofmt Your missing PO formatter and linter Features Wrap msgid and msgstr with a constant max width. Can act as a pre-commit hook. Display lint errors

Frost Ming 5 Mar 22, 2022
Simple macOS StatusBar app to remind you to unplug your laptop when sufficiently charged

ChargeMon Simple macOS StatusBar app to monitor battery charge status and remind you to unplug your Mac when the battery is sufficiently charged Overv

Rhet Turnbull 5 Jan 25, 2022
Simple web application, which has a single endpoint, dedicated to annotation parsing and convertion.

Simple web application, which has a single endpoint, dedicated to annotation parsing and conversion.

Pavel Paranin 1 Nov 01, 2021
Live tracking, flight database and competition framework

SkyLines SkyLines is a web platform where pilots can share their flights with others after, or even during flight via live tracking. SkyLines is a sor

SkyLines 367 Dec 27, 2022
Plugin to manage site, circuit and device diagrams and documents in Netbox

Netbox Documents Plugin A plugin designed to faciliate the storage of site, circuit and device specific documents within NetBox Note: Netbox v3.2+ is

Jason Yates 38 Dec 24, 2022
Run CodeServer on Google Colab using Inlets in less than 60 secs using your own domain.

Inlets Colab Run CodeServer on Colab using Inlets in less than 60 secs using your own domain. Features Optimized for Inlets/InletsPro Use your own Cus

2 Dec 30, 2021
sfgp is a package that aggregates individual scripts and notebooks, primarily written for the basic analysis tasks of genetics and pharmacogenomics data.

sfgp is a package that aggregates individual scripts and notebooks, primarily written for the basic analysis tasks of genetics and pharmacogenomics data.

Vishal Sarsani 1 Mar 31, 2022
Airplane reservation system python 2

airplane-reservation-system-python-2 Announcement 🔊 : 🔴 IMPORTANT 🔴 : Few new things have been added into the code [16/05/2021] different names is

voyager2005 1 Dec 06, 2021
A python package template that can be adapted for RAP projects

Warning - this repository is a snapshot of a repository internal to NHS Digital. This means that links to videos and some URLs may not work. Repositor

NHS Digital 3 Nov 08, 2022