Skip to content

Commit

Permalink
feat: update README
Browse files Browse the repository at this point in the history
  • Loading branch information
gitaalekhyapaul committed Feb 19, 2023
1 parent 9c35877 commit 6ec6dd7
Show file tree
Hide file tree
Showing 6 changed files with 84 additions and 22 deletions.
103 changes: 82 additions & 21 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,20 +25,49 @@ During the creation of this platform, [`@iden3/js-iden3-auth`](https://github.co

# 💡 **Problem Statement**

The problem with the current networking platform is that it allows individuals to register under an organization, claiming a specific tenure without any platform verification or proof from the said organization. This lack of validation leads to inaccurate and misleading information being presented on the platform, making it difficult for users to trust the platform and make informed decisions based on the information available.
The problem with the current networking platforms are that there is no surety in the work experience which users claim to have. The users can also fake their way through, having forged certificates or even having certificates from pseudo-companies, which do not even exist. This is why recruiters resort to using different B2B credential verifiers, which not only charge an absurd amount of money, but also extract a lot of PII (Personal Identifiable Information) from the applicants who apply to these organizations.

So, there was a need to find a platform which could have credential-verification in-built, and take as less PII from the applicants.

### 🥁🥁 **Drumroll, please...enter deLinZK 🔥🔥**

deLinZK is a Zero-Knowledge solution to the above problem, providing a platform both for organizations and employees or users of the platform, to accurately issue Verifiable Credentials which serve as Proof-of-Employments, and for employees it also serves as a proof of work experience after they finish tenure in their current company. deLinZK also provides a comprehensive job board which allows organizations to post jobs, and the employees to apply to them. The organizations do not need to spend additional time verifying the work experience of the applicants, since all of them are already verified by deLinZK through a ZKP way.

# 🧠 **Knowledge Primer**

- An _Employee_ is an individual who is working, or has worked for an organization.
- An _Organization_ is an entity that is either looking for an _Employee_ or has some employed.
- An _Admin_ is an envoy of **deLinZK**.
- An _Admin_ is an envoy of **deLinZK**. They have the duty to verify the PII of the organizations, and on verification of their business details, grant them access to the organizer portal.
- The only authentication the web application uses is _Zero Knowledge Proofs_, which are a type of cryptographic proofs generated based on the claims the application users hold. No personal data is shared while proving any claim, and e-mails are used merely for communication.
- There are two types of claims issued by deLinZK:
- _deLinZK Verified Organization_: This claim holder can verify that they are an admin of an organization verified by deLinZK. This claim can only be issued by the deLinZK admin team, on verification of business documents.
- _deLinZK Proof-of-Employment_: This claim is issued by an organization to it's employees, either retiring or existing employees. The claim data contains a 48-bit **SHAKE128** hash of the tenure of the Employee and the organization ID which issued the claim.

# 💪 **Challenges Faced (and WAGMI!)**

- Lorem
- Lorem
- One of the main challenges we faced was the novelty of the implementation, and the experimental phase of the technologies it uses:
- While developing, PolygonID and Iden3 were under active development, hence often introduced major breaking changes. Although we could fix some, we ended up version locking certain dependencies to make the web application work within the deadline of the hackathon. The team will continue to adapt the codebase change from the dependent technologies, so that deLinZK continues to provide its users the safety and security of disclosing their employments.
- Some of the specification changes do break the initial users of the applications. For example, the current users are being issued Polygon ID proprietary schemas, but after the update they will be provided with W3C Verifiable Credentials, which won't be compatible with the current claims. The Iden3 circuits have also changed their specifications, which also changes the query structure which the newer versions of the PolygonID mobile app have, but the older ones cannot.
- Handling real-time data and callbacks was another challenge we faced while making the application. Due to the nature of verification, we had to incorporate complicated Websocket and REST API logic in the same server. In order to maintain the request state between the different callback requests, Redis caching was implemented.
- Encryption was also at the top-most priority while building the application. Since, no PII is shared in the application, but we needed to authenticate different users of the application, we resorted to scrap traditional JWTs for much more advanced JWEs having JWSs inside their payload.
- One of the most interesting challenges we faced was while building the Proof-of-Employment schema:
- We wanted to pass the data in the format to the claim schema:
```bash
Format suggested: <STARTDATE><ENDDATE><ORGID>
Example format: YYYYMMDDYYYYMMYYYYORGID
Example value: 2000123120230526125
- Start Date: 31-12-2000
- End Date: 26-05-2023
- Organization ID: 125
```
- The issue was the number generated with this method, was exceeding the limit imposed by the PolygonID platform. The maximum it could parse was a 15-digit integer.
- The initial search started with finding hash algorithms which returned decimals as outputs, which we quickly realized was not possible directly. So the 'bit calculation' game started. Idea was to get some Hexadecimal string, and then converting it to decimal, but we needed something less than 50-bits.
- Hence, we came across **SHAKE-128**, which could give us a 48-bit Hexadecimal string.
- So we hashed the PoE value, converted the Hash into Hexadecimal, and then change the radix of the bits to 10, hence getting a decimal number less than 15-digits.
- **Ingenious, isn't it?** 🤯
# 📺 **Previews**
# 📺 **Preview**
<div align="center">
<div align="center">
<h2><b>Home Screen 🏠</b></h2>
Expand All @@ -58,19 +87,19 @@ The problem with the current networking platform is that it allows individuals t
</div>
<div align="center">
<h2><b>Employee Claiming the Proof-of-Employment 👑</b></h2>
<img alt="Preview Images" src="docs/preview3.png" />
<img alt="Preview Images" src="./client/public/preview-3.png" />
</div>
<div align="center">
<h2><b>Employee Profile Page 🫂</b></h2>
<img alt="Preview Images" src="docs/preview4.png" />
<img alt="Preview Images" src="./client/public/preview-4.png" />
</div>
<div align="center">
<h2><b>Employee Adding new Proof-of-Employments</b></h2>
<img alt="Preview Images" src="docs/preview5.png" />
<img alt="Preview Images" src="./client/public/preview-5.png" />
</div>
<div align="center">
<h2><b>Organization Creating Proof-of-Employment 🛠️</b></h2>
<img alt="Preview Images" src="docs/preview6.png" />
<h2><b>Organization Creating Jobs ⚙️</b></h2>
<img alt="Preview Images" src="./client/public/preview-6.png" />
</div>
# 💻 **Tech Stack**
Expand All @@ -88,23 +117,55 @@ The problem with the current networking platform is that it allows individuals t
# 📦 **Inside the box**
deLinZK is a platform that specializes in providing advanced verification services to organizations and their employees. The platform uses Zero-Knowledge Proofs using PolygonID and its Self-Sovereign Identity policies to allow
deLinZK is a platform that specializes in providing advanced verification services to organizations and their employees. The platform uses Zero Knowledge Proofs using PolygonID and its Self-Sovereign Identity policies to allow:
- Organizations to verify their legitimacy.
- Employees to verify their tenure in an organization.
It has an extensive system architecture to support such actions, as well as a comprehensive user flow through the web application. The following diagrams explain the flow:
### 1. **System Architecture Diagram**
### 2. **Flow Diagram**
# 👀 **How do you get started contributing to deLinZK?**
- Clone the project, and open it in your editor of choice.
- Setup Redis, Supabase.
- Create schemas for Proof-of-Employment and Verified Organization on the Polygon ID platform.
- Create an AWS account.
- Create Alchemy RPC URL.
- Rename and fill all the relevant values in the [**`.env`**](./server/.env.example) file.
- Rename and fill the frontend [**`.env`**](./client/.env.example) file as well.
- To start the server and the client:
```bash
# Install dependencies
yarn
# For production server
yarn build:server
yarn production:server
- organizations to verify their legitimacy
- employees to verify their tenure in an organization.
# For development server
yarn dev:server
deLinZK acts as an issuer of the claims made by an organization for them being verified on deLinZK and a verifier of the claims made by an employee for their tenure at an organization. This ensures a more reliable and **trusted networking** application.
# For production client
yarn build:client
yarn production:client
## 1. **System Architecture Diagram**
# For development client
yarn dev:client
```
# ⏭️ **What's next for deLinZK?**

- Add more types of nudges, with more customizing options
- Dynamic drag and drop to get IDs of elements
- Analytics for the nudges and how the user responds to them; tracking user engagement
- Using a DLQ (Dead Letter Queue) for nudges that were not able to be received; cases of failure of delivery
- Adding support for more platforms
- Adding user specific nudges
- One of the major aim of deLinZK is to migrate to W3C VC and Iden3 V2 circuits in the next major launch.
- We need to also figure out a more secure way of storing metadata of the organizations and users.
- Code cleanup and documentation never leaves the chat.
- Shifting from communicating with e-mail to some Web3 native solution.
- Integrating token gating services with deLinZK, to allow organizations to maintain gated communities, maybe even DAOs of their employees.
- If you, the reader have any suggestions, feel free to create an [**Issue 🚀!**](https://github.com/jagnani73/ethforall-delinzk/issues/new)

# 📜 **License**

Expand Down
Binary file added client/public/preview-3.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added client/public/preview-4.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added client/public/preview-5.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added client/public/preview-6.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 2 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@
"build": "yarn build:server && yarn build:client",
"prettier:fix": "npx prettier --write .",
"prettier:check": "npx prettier --check .",
"production:server": "cd server && yarn start"
"production:server": "cd server && yarn start",
"production:client": "cd client && yarn start"
},
"dependencies": {
"prettier": "^2.8.4"
Expand Down

0 comments on commit 6ec6dd7

Please sign in to comment.