# General Grant Proposal
* **Project:** ZK Proof of Humanity - zk-poh
## Project Overview :page_facing_up:
### Overview
The main idea of this project is to bring Proof of Humanity (PoH) the availability to prove humanity without doxing.
### Project Details
Proof of Humanity (PoH) bis a system combining social verification with video submission to create a Sybil-proof list of humansb .The problem to be tackled is that the user is doxed (at least biometric data, voice and video) when it transacts on/off chain.
https://blog.kleros.io/proof-of-humanity-a-building-block-for-the-internet-of-the-future/
A solution for this problem could be using Semaphore. The user, after registering and being accepted as human in PoH, may register in our system, before generating the offchain identity (using Semaphore) our system checks if registered and approved in PoH and adds it to the merkle tree. Then the user can prove (through the proof generated off-chain using semaphore) that it is human and unique (avoid double-signalling) through our captcha gadget.
## Team :busts_in_silhouette:
### Team members
Itbs an individual short project and it will be carried forward by me, at least in this first approach. It may be necessary to form an interdisciplinary team as the last milestones are reached.
* name: Elias Molini (elmol)
* email: eliasmolini@gmail.com
* telegram: @elm0l
* discord: elmol#0775
### Team's experience
Ibm senior software engineer with more than 20 years of experience, and last 3 years I've been learning and working freelance on web3 technologies like: solidity, ether.js, web3.js, hardhat, ganache, zk proofs, angular, react, javascript, typescript, node.js, etc.
#### Relevant Past Projects
* zk Guess Who Game b
https://github.com/elmol/zk-guess-who
zkGuessWho is an on-chain traditional bguess whob game. A two player game where
they try to identify the otherbs chosen character. Zk proofs are used to keep
the characters and the game privacy.
Technologies: Solidity, Hardhat, React, Ether.js, Typescript, Circom,
Blockchain: Harmony
* Idle CDO Cards b https://github.com/elmol/idle-cdo-cards
Idle CDO Cards NFT contract allows to mint Idle CDO cards balancing the risk
exposure between the trenches AA and BB.
Technologies: Solidity, Hardhat, Angular, Ether.js, web3.js, Typescript and
Javascript
Blockchain: Ethereum
### Team Code Repos
* https://github.com/elmol
## Development Roadmap :nut_and_bolt:
### Overview
* **Total Estimated Duration:** 3 months
* **Full-time equivalent (FTE):** 2
* **Total Costs:** $20.000.
### Milestone 1 - Semaphore - PoH integration in testnet
* **Estimated Duration:** 1 month
* **FTE:** 0.5
* **Costs:** $5,000
* **Estimated delivery date**: Mar 6th 2023
* **Objective**: technically validate the solution / test community outreach / learning
In order to accomplish the objective, a public GitHub repository containing all source code, tests, scripts, and clear documentation should be provided. Additionally, a blog post describing the tests performed should be published for the PoH community, and all required smart contracts should be deployed on Goerli.
| Number | Deliverable | Specification |
| ------------- | ------------- | ------------- |
|0|Documentation| In the Readme file, we will provide a project description, an overview of the problem and solution, instructions on how to start up and run the project, information on quality conventions and technical evaluation/cost analysis.|
|1|Blog publication|We will publish a blog post that gives an overall overview of the project, describes the problem and technical solution, and includes a call to action.|
|2|Functionality: Register|As a human already registered in PoH, users will be able to register in zk-poh to avoid doxing.|
|3|Functionality: Proof|As a human already registered in zk-poh, users will be able to prove their humanity without doxing.|
### Milestone 2 - ZK-PoH dapp to register / validate humanity
* **Estimated Duration:** 1 month
* **FTE:** 0.5
* **Costs:** $5,000
* **Estimated delivery date**: Apr 3rd 2023
* **Objective**: facilitate to non-technical users the access to zk-poh through a dapp
The main objective of this milestone is to create a dapp with a simple user experience that allows non-technically users who are not registered to register and validate that they are indeed human. The dapp should also allow users who are already registered to validate their humanity.
To accomplish the objective, a public GitHub repository (same as milestone 1) containing all source code, tests, scripts, and clear documentation should be provided. Additionally, the front-end app should be deployed on Versel (using Next.js) and a public demo video demonstrating the app's use should be delivered.
| Number | Deliverable | Specification |
| ------------- | ------------- | ------------- |
|4|Documentation|In the Readme file, we will provide a project description, technical details, instructions on how to start up and run the project, and information on quality conventions.|
|5|Demo video|A demo video showing the complete dapp functionality will be provided.|
|6|zk-poh UI app|The zk-poh front-end app will be deployed on Versel and will bring access to the register and proof functionality detailed in milestone 1.|
### Milestone 3 - ZK-PoH proof widget
* **Estimated Duration:** 1 month
* **FTE:** 1
* **Costs:** $10,000
* **Estimated delivery date**: May 2nd 2023
* **Objective**: Facilitate the integration of dapps with zk-poh
To accomplish the objective, a public GitHub repository (same as milestone 1) containing all source code, tests, scripts, and clear documentation should be provided. Additionally, a simple voting dapp that uses zk-poh as an example will be deployed on Versel, and a public blog post with step-by-step instructions on how to integrate and use zk-poh will be published. A demo video demonstrating the use of the voting app will also be provided.
| Number | Deliverable | Specification |
| ------------- | ------------- | ------------- |
|7|Documentation| In the Readme file, we will provide a project description, technical details, instructions on how to start up and run the project, information on quality conventions, and step-by-step instructions on how to integrate zk-poh.|
|8|Demo video|A demo video showing the example app (zk-voting) with the zk-poh widget integration will be provided.|
|9|zk-poh widget|An UI react component library (widget) that allows for easy integration with the zk-poh protocol will be provided in a public repository.|
|10|Blog publication| A public blog post with step-by-step instructions on how to integrate and use zk-poh will be published.|