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

Anonymous Proof of Builder Status via GitHub Contributions #5

Open
wants to merge 2 commits into
base: main
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
66 changes: 66 additions & 0 deletions Proof-of-Builder/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
# Anonymous Proof of Builder Status via GitHub Contributions

**Description:**

This projects enables developers to prove their builder status, verifying their contributions to various GitHub repositories, without showing their GitHub username or any other personal information. Thanks to **zkEmail** and the privacy enabled by the **Aztec**, it's possible to create zero-knowledge proofs using emails notifications from GitHub, for example, commit confirmations or pull request merges which in turn, would enable developers to claim airdrops or access exclusive events or perks on a completely anonymous basis using just their github contributions.
Copy link
Collaborator

Choose a reason for hiding this comment

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

Absolutely love this idea. I think it can be very powerful.


## Challenge Selection

- [x] ZKEmail Guardian
- [ ] Social Cipher

**Note**: You can change which challenges you've selected during the competition if you'd like. You are not bound by your choices or descriptions entered during the one-week check-in.

## Team Information

- **Author:** @joaolago1113
- **Role:** Solo Developer

## Technical Approach

- **High-Level Outline of Main Components:**

1. **zkEmail Integration:**
- **Email Verification:**
- Review GitHub emails, such as commit confirmations or pull request merges.
- Verify that it is indeed a valid email from GitHub.
- **Zero-Knowledge Proof Generation:**
- Creating of proof that actually attests a user contributed to any particular repository.

2. **Regex Parsing of Email Content:**
- **Extract Relevant Information:**
- Employ zkRegex parsing the email body and extract commit hashes, repository names, or contribution details.
Copy link
Collaborator

Choose a reason for hiding this comment

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

If things are straightforward, you might be able to get away with just using string search (rather than full regex).

- **Custom Circuits:**
- Implement custom circuits to handle the peculiar patterns of GitHub emails.

3. **Smart Contracts on Aztec Network:**
- **Proof Verification Contract:**
- A smart contract should be developed for verification of zero-knowledge proofs created by users.
- **Airdrop Contract:**
- A smart contract for giving out the airdrop.

4. **User Interface:**
- **Frontend Application:**
- Front-end web interface or integrate into existing wallet UI to have user upload emails and generate proofs.

- **Specific Aztec Tools or Features Used:**
- **Aztec Tools:** Nargo, Sandbox, etc...
- **ZK Email ecosystem**

## Expected Outcomes

A working application that allows developers to anonymously prove their GitHub contributions and claim airdrops or rewards.
Copy link
Collaborator

Choose a reason for hiding this comment

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

Stretch goals might include other things present in github email: stars, orgs, ...
These might be small tweaks to the zkemail component (after the first part is working)

Copy link
Author

Choose a reason for hiding this comment

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

Good idea 🤔

Copy link
Collaborator

Choose a reason for hiding this comment

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

@joaolago1113 were you able to add any code?


## Lessons Learned (For Submission)

- What are the most important takeaways from your project?
- Are there any patterns or best practices that you've learned that would be useful for other projects?
- Highlight reusable code patterns, key code snippets, and best practices - what are some of the ‘lego bricks’ you’ve built, and how could someone else best use them?

## Project Links (For Submission)

Please provide links to any relevant documentation, code, or other resources that you've used in your project.

## Video Demo (For Submission)

Please provide a link to a video demo of your project. The demo should be no longer than 5 minutes and should include a brief intro to your team and your project.