Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Social Cipher] Profile.io proof personal information with NFT (age-verification) #17

Open
wants to merge 17 commits into
base: main
Choose a base branch
from

Conversation

tabledK
Copy link

@tabledK tabledK commented Oct 23, 2024

Social Cipher with Profile.io

This is about user's identity verification KYC results to prove user's adult verification and/or nationality, gender, any other user's personal information without revealing personal data by using.
Please check more details in profile.io-social-cipher/README.md.

  • It consists of two parts. frontend for UI and aztec for the Aztec contract
  • The frontend has the minimum implementation. And you can watch a demo here

@@ -0,0 +1,55 @@
# Profile.io: privacy preserving identity, nationality and age verification

Using a profile.io user's indentity verification KYC results to prove user's adult verification and/or nationality without revealing personal data by using ~~Aztec Connect~~ Noir circuit ZKP. Scoping service for third parties to verify such information privately, either through profile.io/verify or their own user flows (eg. exploring potentially using Frames.js).
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it just using the Noir DSL (Domain Specific Language) and tooling, or also the aztec.network?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is for end-users who interact with UI that uses aztec tech behind scene.

We'd like to use Aztec ZKP for proving adult verification (or any other user info) on our app.
~~We have already smart contract that mints NFTs on Polygon mainnet~~

The plan is to use ZKP and Aztec Note when user inputs his/her identity including age then the user can use it when the age verification is required without revealing details.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Will be worth digging a little deeper into what you want to be public/private in terms of inputs and state.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I discovered that using Aztec Connect is not recommended. Therefore, I had to change the plan. I will update the readme.

1. The FE has a "verify" button and when verifier clicks that button -> Calling Aztec contract to process target user's age verification -> FE shows whether the user is an adult or not on the UI.


## Some technical questions
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For (a) and (b) below, you should be able to find relevant information in the docs. For (a), I think you could even just "Ask Aztec AI" (appears in the bottom right corner of the docs).

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I could find the answers although I have many other questions still. I will update the readme.


## Technical Approach

We'd like to use Aztec ZKP for proving adult verification (or any other user info) on our app.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would be worth understand where the assumptions begin. Eg, are you assuming a public NFT has a verified age indication, and you want to use that? That is, proof of possession of that NFT, without revealing which NFT?
Or maybe the assumptions start somewhere else

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

My idea is user has a private NFT that contains user's personal info such as age, nationalities, eye colour, etc as a note.
So only the user can see the note by default.

When a verifier (another user) requests user's info (ex: isEuropean? isAdult? isFemale?), the NFT holder sends to the verifier by encrypting with verifier's address without revealing other sensitive info.

The verifier is the only one who can open and see the info.

But that's my theory and I am on the way to figuring out how to implement with Aztec tech.

README.md Outdated
@@ -1,3 +1,6 @@
# Profile.io
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

could you please remove this change from the PR?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

@0xrafi
Copy link
Collaborator

0xrafi commented Oct 31, 2024

love what you guys have done here! could you please update the PR title and description with a quick summary of your project? also would love if you could add all your code, esp relevant frontend code if possible. You'll need it for submission and would love to take a look beforehand 🙏🏽

@tabledK tabledK changed the title Update readme with user + technical flow [Social Cipher] Profile.io proof personal information with NFT (age-verification) Nov 1, 2024
@tabledK
Copy link
Author

tabledK commented Nov 1, 2024

@0xrafi I added a simplified version of the frontend. Feel free to check :)

@0xrafi
Copy link
Collaborator

0xrafi commented Nov 4, 2024

could you please add a relevant description to the PR? also ensure all code is inside of your named project directory and move the .gitignore file into your project folder

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants