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

docs: enhance README with comprehensive project documentation #425

Open
wants to merge 1 commit into
base: develop
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
80 changes: 70 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,26 +6,86 @@ ZKP2P is a trustless and privacy-preserving fiat-to-crypto onramp powered by ZK

![X-blob-background-1500x500px](https://github.com/zkp2p/zk-p2p/assets/6797244/65e8ae36-eb8b-4b53-85e9-fa0801bafcf0)

## Overview

The network leverages zero-knowledge proofs to verify DKIM signatures in payment confirmation emails, enabling secure and private fiat-to-crypto transactions. Key features include:

## Overview
The network is powered by ZK proofs of DKIM signatures in payment confirmation emails, proving the SHA256, email regex, and RSA without revealing sensitive contents in the email. We are working with the Privacy and Scaling Exploration ([PSE](https://pse.dev/projects/zkp2p)) group to explore applications for zero-knowledge proving systems
- **Privacy-First**: Proves SHA256, email regex, and RSA without revealing sensitive email contents
- **Trustless**: No intermediaries or centralized authorities needed
- **Venmo Integration**: Currently supports Venmo for US-based transactions
- **Actively Developed**: Working on reducing proving times and adding more payment rails

We are collaborating with the Privacy and Scaling Exploration ([PSE](https://pse.dev/projects/zkp2p)) group to advance zero-knowledge proving systems.

Follow us on our [Twitter](https://twitter.com/zkp2p) and our [Telegram](https://t.me/+XDj9FNnW-xs5ODNl) for announcements and updates!
## Quick Start

After the launch of V2, we will continue experimenting with new infrastructure to improve the UX by bringing down proving times and integrating other payment rails such as Paypal and Transferwise.
### Prerequisites
- Node.js v16+
- Yarn
- A Venmo account (for testing)

If you're interested in collaborating, please reach out to us on our [Telegram](https://t.me/+XDj9FNnW-xs5ODNl).
### Installation
```bash
git clone https://github.com/zkp2p/zkp2p-v1-monorepo.git
cd zkp2p-v1-monorepo
yarn install
```

## How To:
### Development
```bash
yarn dev
```

## How To Use

### Fetch Your Venmo ID
ZKP2P off-ramping requires submitting Venmo IDs on chain so the on-rampers knows where to send the payment. A Venmo ID is unique identifier (e.g. 1234567891011121314 up to 19 digits) for your Venmo account that is separate from your handle (@Venmo-User). You can look up your Venmo ID using one of the following methods:
ZKP2P off-ramping requires submitting Venmo IDs on chain so the on-rampers knows where to send the payment. A Venmo ID is unique identifier (e.g. 1234567891011121314 up to 19 digits) for your Venmo account that is separate from your handle (@Venmo-User).

Methods to find your Venmo ID:

1. **Email Method**:
- Open any Venmo payment receipt email
- Click on 'Show original'
- Search for `user_id`
- Note: You may need to remove the `3D` encoding prefix

2. **Command Line Method**:
```bash
curl https://account.venmo.com/u/[YOUR_VENMO_HANDLE] | grep -o '"user":{"displayName":"[^"]*","id":"[0-9]*"' | sed 's/.*"id":"\([0-9]*\).*/\1/'
```
Replace `[YOUR_VENMO_HANDLE]` with your Venmo username (without `@`)

To verify your ID, visit: `https://venmo.com/code?user_id=[YOUR_VENMO_ID]`

## Contributing

- Open any Venmo payment receipt email and click on 'Show original' and search for `user_id`. As of writing these instructions [4/30/2023], you should be able to locate your id in multiple places but may need to splice the `3D` encoding in front of the id.
- Paste `curl https://account.venmo.com/u/[YOUR_VENMO_HANDLE] | grep -o '"user":{"displayName":"[^"]*","id":"[0-9]*"' | sed 's/.*"id":"\([0-9]*\).*/\1/'` into the command line, replacing YOUR_VENMO_HANDLE with your Venmo username without the `@` e.g. `Alex-Soong`.
We welcome contributions! Here's how you can help:

To verify your id, you can go to https://venmo.com/code?user_id=[YOUR_VENMO_ID] and the page should resolve to a profile for your account.
1. Fork the repository
2. Create your feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'Add amazing feature'`)
4. Push to the branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request

For major changes, please open an issue first to discuss what you would like to change.

## Roadmap

- [x] Alpha release with Venmo support
- [ ] Reduce proving times
- [ ] Integration with PayPal
- [ ] Integration with Transferwise
- [ ] Additional payment rail integrations

## Community

- [Twitter](https://twitter.com/zkp2p)
- [Telegram](https://t.me/+XDj9FNnW-xs5ODNl)

## Acknowledgements

This project has been supported by a grant from EF and PSE. Find our [grant proposal here](https://hackmd.io/R0QW7X4UQCSsZ4X8pFergg). We thank them for their generous support.

## License

This project is licensed under the MIT License - see the LICENSE file for details.