Verify once. Prove forever. Stay private.
ZeroKlue enables students to cryptographically prove their university status without revealing personal data. Built with Noir ZK circuits and verified on-chain.
Windows Users: This project requires a Unix environment. Use WSL 2.
# In PowerShell (Admin) wsl --install -d Ubuntu # Then open Ubuntu from Start Menu and continue below
| Requirement | Install Command |
|---|---|
| Node.js 18+ | nodejs.org or curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - && sudo apt install -y nodejs |
| Foundry | curl -L https://foundry.paradigm.xyz | bash && foundryup |
| Yarn | npm install -g yarn |
# Clone and enter
git clone https://github.com/Prajwal-k-tech/Code-kal.git
cd Code-kal
# One command to rule them all
chmod +x start-demo.sh
./start-demo.shThis starts:
- Local Anvil blockchain
- Deploys ZeroKlue contracts
- Funds test wallets
- Opens http://localhost:3000
The Problem: Traditional verification services (SheerID, UNiDAYS) collect your personal data just to confirm you're a student. In Web3, this is even worse - associating your email with your wallet makes you a target.
Our Solution: ZK proofs + Google OAuth. No backend. No database. No data collection.
Sign in with Google → ZK proof generated in browser → Submit to contract → Done
-
DAO Governance: DAOs give away millions in grants. One person with 1,000 wallets can rig votes. ZeroKlue provides Sybil resistance without KYC.
-
Sybil-Resistant Airdrops: Projects want to airdrop to future builders (students), not bot farms.
-
Token-Gated Communities: University alumni groups, company channels - all verifiable without doxxing.
codekal/
├── zeroklue-app/ # Main app (Scaffold-ETH 2)
│ └── packages/
│ ├── foundry/ # Smart contracts (ZeroKlue.sol)
│ └── nextjs/ # Frontend (React + RainbowKit)
├── packages/circuits/ # Noir ZK circuit source
└── start-demo.sh # One-click demo
- Connect wallet (MetaMask)
- Click "Verify with Google"
- Sign in with @university.edu
- Wait ~30s for ZK proof generation
- Soulbound NFT minted!
// Check if wallet is verified
bool isStudent = zeroKlue.isVerified(walletAddress);
if (isStudent) applyDiscount();cd zeroklue-app/packages/foundry
forge test -vvvAll 14 tests passing.
- Trustless: Google signs JWT, we verify cryptographically
- Zero-Knowledge: Merchants never see email/name/institution
- Soulbound: NFT cannot be transferred
- Sybil Resistant: Nullifiers prevent reuse of same email
| Layer | Technology |
|---|---|
| ZK Circuits | Noir 1.0.0-beta |
| Proving Backend | Barretenberg (UltraHonk) |
| Smart Contracts | Solidity 0.8.21 (Foundry) |
| Frontend | Next.js 15 + RainbowKit + wagmi |
- StealthNote - ZK circuit architecture (our circuit is adapted from their MIT-licensed JWT verification)
- noir-jwt - JWT verification in Noir
- Scaffold-ETH 2 - Frontend framework
Verify once. Prove forever. Stay private.