Petizio - a blockchain-based petition platform
Tags: blockchain, hackathon, petitions, egovernance
Published: 2020-05-21 12:40:49

Last year I had the chance to win one of the largest blockchain hacks in Europe - [SBHACK19](https://hackathon.trustsquare.ch). In a 42-​hour intensive hacking marathon my team managed to produce a working MVP for the eGovernment vertical, originally proposed by the [Canton of Zürich](https://www.zh.ch/internet/en/home.html), the [b2Lab](https://www.b2lab.ch/) of ETH, as well as the blockchain startups [procivis](https://procivis.ch/de/) and [KILT](https://kiltprotocol.com/).

Our dAPP - Petizio - allows users to vote pseudo-anonymously after verifying themselves through government identification. Citizens can then create new petitions and vote through the app without the need of exposing their identity in a way that each vote gets count once.

## Official Problem Statement: 

> While the past years have seen significant efforts in the area of eGovernment, Public Services yet lack powerful solutions for many of the new challenges such as Digital ID, E-​Voting and the Management and Registration of Documents. This challenge deals with the questions of how a government body can ensure that information can be updated flexibly while also being accurately and truthfully replicable and how it can prove that the information has not been manipulated.

The key areas here are:

1. How can centralized public registries be protected, making official documents and credentials tamper-​proof and easily verifiable, and easing the burden of the individual to aggregate and share his information between governmental bodies as well as other stakeholders, such as employers, banks or insurances?

2. How can we ensure trusted and secure standards, to solve the current issues around e-​Voting and in order to digitize the fundamental democratic process of voting.

3. Finally, how can institutions give their own representatives the temporary right to make legally binding signatures? 

---
*Our team decided to narrow down the challenge to the problem of petitions.*

---


## Old Solutions:

<img src="https://files.ondemandhosting.info/imagecache/cropfit@w=806@qa=85/data/www.youthforhumanrights.org/files/petition-milano-yhri-banner_en.jpg"  width="220" height="220">

>how petitions were signed in the old days

Until recently, there were three main approaches to gathering signatures for petitions:

- Physical: Petitions where signatures are gathered on the street through physical copies. This approach has multiple limitations ranging from signature consolidation to information dissemination.
- Private Entities: Websites such as change.org digitizes the process of voting and allows users to gather votes and make their issues heard. But the lack of identification creates the problem of a single person signing the petition multiple times.
- State Owned Websites: There are solutions provided by the state such as in Germany overcomes the problem of identification of citizens, however they are still vulnerable to attacks and they do not provide full anonymity.


---
*None of these solutions have identity verification nor provide anonymity for citizens.*

---


## Our Solution: 

If you prefer audio-visual info more, here's a video presentation of our solution:

{% youtube Slk-9oNCw5w %}

Otherwise, here's the text version: :D

Our solution is to use governmental facilities to verify the citizens and then register the verified citizens on a private blockchain. The citizens are given pseudo-anonymous IDs ~~that can be identified by the government~~. Based on this premise:

- The list of verified pseudo-anonyms are publicly displayed on the blockchain,
- Verified citizens can create and vote on petitions on the blockchain.
- When a citizen votes they use their anonymised pseudo ID.
- Petitioner can then compare the pseudo id published by the government and then count the votes.
- The counting of the signatures, creation of signature, and petitions are handled by a smart contract.

The entry process to the blockchain is depicted below:

![petition-process](https://github.com/ssoima/petizio/blob/master/web-app/src/assets/Solution_Explanation.png?raw=true)

The development of the project was done as follows:

- A [GitHub](https://github.com/ssoima/petizio) repository was used to coordinate.
- The repository was then moved into AWS CodeCommit
- A Rest API and Composer was used in an EC2 instance
- This EC2 instance was used between AWS Managed BlockChain and Angular.Js using REST:API

![dev-process](https://github.com/ssoima/petizio/blob/master/web-app/src/assets/TechnicalArchitecture.png?raw=true)

## Why is this a good solution?

Petizio's main strengths:

- One vote is one vote: The confirmation method prevents a single agent to vote multiple times.
- Immutability: Nobody can tamper with votes once they have been written to the blockchain.
- Anonymity: When the issues are being voted for, it is not known who supports the ideas, people can vote without revealing their identity.

## Why was this a great project?

---
*For my team, this was a serious topic, dealing with current issues around trust, security and transparency.*

---

> Our main goal was to contribute to resolve these issues and perhaps make a step in the right direction and help establishing a new era in the relationship between governments and individuals.

---
*For me personally, this hack was one of the most fulfilling and rewarding experiences ever. I managed to pick up Angular in less than 4h, did an all-nighter to get the front-end done in time and also helped with deployment on AWS. In the end, we won our vertical challenge and received 18.000 CHF in cash, crypto and sponsor services.*

---

![egov-winners](https://mtec.ethz.ch/news/d-mtec-news/2019/07/eth-team-wins-at-switzerlands-largest-blockchain-hackathon/_jcr_content/news_content/fullwidthimage/image.imageformat.lightbox.535187449.jpg)

The Epic Aftermovie:
{% youtube anLx-ik-_d4 %}