# Self Protocol

Verify real users while preserving privacy.

## Overview

Self is a **privacy-first, open-source identity protocol** that uses **zero-knowledge proofs** for secure identity verification.

It enables **Sybil resistance** and **selective disclosure** using real-world attestations like passports, national IDs, Aadhaar, and KYC attestations. With a few lines of code, developers can easily check if their users are humans, while preserving their privacy.

### All you need for building on Self

* [Workshop (ETHGlobal Buenos Aires)](https://www.loom.com/share/8a6d116a5f66415998a496f06fefdc23) - Essential workshop for getting started
* [Self Builder Group](https://t.me/+d2TGsbkSDmgzODVi)
* [Celo Testnet Faucet](https://faucet.celo.org/celo-sepolia)

### How it Works

Self Protocol simplifies **digital identity verification** with **zero-knowledge proofs** in three steps:

1. **Scan or Verify Your Document:** Use your supported document flow in the Self app (passport, ID card, Aadhaar, or KYC).
2. **Generate a Proof:** Generate a zk proof over your attestation, selecting only what you want to disclose.
3. **Share Your Proof:** Share your zk proof with the selected application.

### Common use cases for Self:

* **Airdrop protection:** Protect a token distribution from bots
* **Social media:** Add humanity checks to user's profiles
* **Quadratic funding:** Prevent farmers from skewing rewards
* **Wallet recovery:** Safeguard assets using IDs as recovery sources
* **Sanction list checking:** Check users are not on sanctioned entity lists
