# 🎠[ZK Proof of Humanity](https://github.com/elmol/zk-proof-of-humanity)
[ZK Proof of Humanity](https://github.com/elmol/zk-proof-of-humanity) is a privacy-focused solution that allows individuals, registered in [Proof of Humanity](https://proofofhumanity.id/), to prove their humanity without compromising their personal information. It addresses the issue of doxing, which occurs when biometric data, voice, and video are exposed during transactions using an account registered in Proof of Humanity.

## Project Stages
The project went through several stages from developing a proof of concept to smart contracts and a backend API, as well as a web-app application and a React library.
In the first stage of the project, a general proof of concept was developed, which resulted in a [published post](https://hackmd.io/iIb9J1rkS6Wnf5BLJGH3pA). This stage also included the development of smart contracts and backend APIs in Hardhat. Two main functions were created: "Register," which allows users who are already registered in Proof of Humanity to register in zk-poh, and "Proof," which enables registered users to prove their humanity without doxing. More information on the smart contracts can be found here: [Contracts](https://github.com/elmol/zk-proof-of-humanity#-smart-contracts).
In the second part of the project, a web3 application was created with a simple UI to allow non-technical users to register and validate their humanity. The dapp is deployed at [Versel](https://zk-proof-of-humanity.vercel.app/) and a demo with a detailed explanation is available on YouTube at [link](https://www.youtube.com/watch?v=m0w-q3HPVbg). More information on the web application can be found here: [Web3 UI](https://github.com/elmol/zk-proof-of-humanity#%EF%B8%8F-web-application).
The third part of the project focused on creating a React library called [zk proof of humanity widget](https://www.npmjs.com/package/zkpoh-widget), that simplifies the integration of zk-poh into other projects. This library provides an easy-to-use UI component that can be used to build applications requiring proof of humanity without revealing the users' identity. More information on the widget can be found here: [Widget](https://github.com/elmol/zk-proof-of-humanity#-zk-proof-of-humanity-widget). Also a step by step guide about how to use this library can be found here: [step-by-step guide](https://github.com/elmol/zk-proof-of-humanity-vote/blob/main/step-by-step-guide.md)
Finally, a video demo of the voting application was created and uploaded to [YouTube](https://youtu.be/gfzxjjJZqB4) for educational purposes. The video provides a detailed overview of the widget and the example voting application, and it walks through the steps required to use the zk-poh widget to build an anonymous voting system which is deployed in [Versel](https://zk-proof-of-humanity-vote.vercel.app/) . More information on the example voting application can be found here: [GitHub Repo](https://github.com/elmol/zk-proof-of-humanity-vote).
Overall, these stages provide developers with tools and resources to integrate zk-poh into their projects easily and build secure and anonymous applications that require integration with Proof of Humanity.
## Links
* Github Repository: https://github.com/elmol/zk-proof-of-humanity
* Proof of Concept Post: https://hackmd.io/iIb9J1rkS6Wnf5BLJGH3pA
* Contracts Information: https://github.com/elmol/zk-proof-of-humanity#-smart-contracts
* ZK Proof of Humanity Web3: https://zk-proof-of-humanity.vercel.app/
* Youtube Web3 Demo: https://www.youtube.com/watch?v=m0w-q3HPVbg
* Web3 UI Information: https://github.com/elmol/zk-proof-of-humanity#%EF%B8%8F-web-application
* zkpoh-widget npmjs: https://www.npmjs.com/package/zkpoh-widget
* Widget Information: https://github.com/elmol/zk-proof-of-humanity#-zk-proof-of-humanity-widget
* Widget Step by Step Guide: https://github.com/elmol/zk-proof-of-humanity-vote/blob/main/step-by-step-guide.md
* Youtube zkpoh-widget demo: https://youtu.be/gfzxjjJZqB4
* ZK Proof of Humanity Vote Web3: https://zk-proof-of-humanity-vote.vercel.app/
* ZK Proof of Humanity Vote Github Repo: https://github.com/elmol/zk-proof-of-humanity-vote
## Next Steps
Currently ZK Proof of Humanity is available on the Goerli testnet with the Proof of Humanity V1. On the other hand, the Proof of Humanity community is currently divided and awaiting the upcoming fork. It may be prudent to wait for a more concrete definition of what the new versions will look like after the fork before determining the next steps.
In the meantime, it is worth noting that migrating Proof of Humanity to a side-chain or layer 2 could potentially address the challenges of reducing costs and maintaining consistency with Proof of Humanity. If the new versions of Proof of Humanity migrate to lower cost chains, this could be a promising next step for ZK Proof of Humanity.
Explore the shared resources to learn more about integrating ZK Proof of Humanity into your project.
Let's collaborate towards a more secure, private, and equitable digital future.