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
Ergonomic option parser on top of dataclasses, inspired by structopt.

oppapī Ergonomic option parser on top of dataclasses, inspired by structopt. Usage from typing import Optional from oppapi import from_args, oppapi @

yukinarit 4 Jul 19, 2022
Painel simples com consulta de cep,CNPJ,placa e ip

Painel mpm Um painel simples com consultas de IP, CNPJ, CEP, PLACA, TELEFONE, CPF e NOME Início 🌐 apt update && apt upgrade -y pkg i python git pip i

8 Feb 27, 2022
Aero is an open source airplane intelligence tool. Aero supports more than 13,000 airlines and 250 countries. Any flight worldwide at your fingertips.

Aero Aero supports more than 13,000 airlines and 250 countries. Any flight worldwide at your fingertips. Features Main : Flight lookup Aircraft lookup

Vickey 비키 4 Oct 27, 2021
Paintbot - Forward & Inverse Kinematics

PAINTBOT - FORWARD & INVERSE KINEMATICS: Overview: We built a simulation of a RRR robot shown in the figure below. The robot has 3 links and is connec

Alex Lin 1 Oct 21, 2021
addons to the turtle package that help you drew stuff more quickly

TurtlePlus addons to the turtle package that help you drew stuff more quickly --------------

1 Nov 18, 2021
More granular intermediaries for legacy Minecraft versions

Orinthe/Intermediary mappings This repository contains the match information between different versions of Minecraft created by the Orinthe project, a

4 Jan 11, 2022
A Red Team tool for exfiltrating sensitive data from Jira tickets.

Jir-thief This Module will connect to Jira's API using an access token, export to a word .doc, and download the Jira issues that the target has access

Antonio Piazza 82 Dec 12, 2022
easy_sbatch - Batch submitting Slurm jobs with script templates

easy_sbatch - Batch submitting Slurm jobs with script templates

Wei Shen 13 Oct 11, 2022
FindUncommonShares.py is a Python equivalent of PowerView's Invoke-ShareFinder.ps1 allowing to quickly find uncommon shares in vast Windows Domains.

FindUncommonShares The script FindUncommonShares.py is a Python equivalent of PowerView's Invoke-ShareFinder.ps1 allowing to quickly find uncommon sha

Podalirius 184 Jan 03, 2023
Blender addon that simplifies access to useful operators and adds missing functionality

Quick Menu is a Blender addon that simplifies common tasks Compatible with Blender 3.x.x Install through Edit - Preferences - Addons - Install... -

passivestar 94 Dec 27, 2022
Converts a base copy of Pokemon BDSP's masterdatas into a more readable and editable Pokemon Showdown Format.

Showdown-BDSP-Converter Converts a base copy of Pokemon BDSP's masterdatas into a more readable and editable Pokemon Showdown Format. Download the lat

Alden Mo 2 Jan 02, 2022
LOL英雄联盟云顶之弈挂机刷代币脚本,全自动操作,智能逻辑,功能齐全。

LOL云顶之弈挂机刷代币脚本 这是2019年全球总决赛写的一个云顶挂机脚本,python完成的。 功能: 自动拿牌卖牌 策略是高星策略,非固定阵容 自动登陆账号、打码、异常重启 战利品截图上传百度云 web中控发号,改密码,查看信息等 代码是三天赶出来的,所以有点混乱,WEB中控代码也不知道扔哪去了

77 Oct 10, 2022
Metal Gear Rising: Revengeance's DAT archive (un)packer

DOOMP Metal Gear Rising: Revengeance's DAT archive (un)packer

Christopher Holzmann Pérez 5 Sep 02, 2022
A student information management system in Python

Student-information-management-system 本项目是一个学生信息管理系统,这个项目是用Python语言实现的,也实现了图形化界面的显示,同时也实现了管理员端,学生端两个登陆入口,同时底层使用的是Redis做的数据持久化。 This project is a stude

liuyunfei 7 Nov 15, 2022
Auto-ropper is a tool that aims to automate the exploitation of ROP.

Auto-ropper is a tool that aims to automate the exploitation of ROP. Its goal is to become a tool that no longer requires user interaction.

Zerotistic 16 Nov 13, 2022
Test for using pyIIIFpres for rara magnetica project

raramagnetica_pyIIIFpres Test for using pyIIIFpres for rara magnetica project. This test show how to use pyIIIFpres for creating mannifest compliant t

Giacomo Marchioro 1 Dec 03, 2021
Simple AoC helper program you can use to develop your own solutions in python.

AoC-Compabion Simple AoC helper program you can use to develop your own solutions in python. Simply install it in your python environment using pip fr

Alexander Vollmer 1 Dec 20, 2021
Python DSL for writing PDDL

PDDL in Python – Python DSL for writing a PDDL A minimal implementation of a DSL which allows people to write PDDL in python. Based on parsing python’

International Business Machines 21 Nov 22, 2022
Zotero references script (and app)

A little script (and PyInstaller build) for a very specific, somewhat hack-ish purpose: managing and exporting project references with Zotero and its API.

Marius Rödder 0 Dec 05, 2021
Sudo type me a payload

payloadSecretary Sudo type me a payload Have you ever found yourself having to perform a test, and a client has provided you with a VM inside a VDI in

7 Jul 21, 2022