zkVC: Zero-Knowledge Verifiable Credentials
A privacy-preserving digital identity system that enables trust verification through DIDs and VCs with zero-knowledge proofs.

Project description
zkVC is a comprehensive digital identity and trust verification platform designed to address critical issues in social media, such as fake news and fake accounts. The system leverages Web3 technologies to create a privacy-first approach to identity verification and trust assessment. The system was developed using the UX design process.
Key Problem Solved:
In digital spaces like social media, it's difficult to assess the trustworthiness of information publishers due to anonymous accounts and a lack of verifiable identity. This leads to the spread of misinformation and erosion of trust in digital communications.
Our Solution:
zkVC provides a decentralized identity system where users can:
- Create and manage Ethereum-based DIDs (Decentralized Identifiers) using EIP-1056
- Store and present Verifiable Credentials (VCs) in JSON-LD format
- Prove specific claims (like being over 20 years old) using zero-knowledge proofs without revealing sensitive private information
- Build trust networks through verifiable digital identities
Core Features:
- DID Management: Create, resolve, and manage Ethereum-based decentralized identifiers
- VC Processing: Handle W3C-standard Verifiable Credentials with privacy controls
- Zero-Knowledge Age Verification: Prove age ≥ 20 using ZK-SNARKs without revealing exact birthdate
- Privacy Protection: Users maintain full control over personal data disclosure
Technical Innovation:
- Uses Circom and SnarkJS with PLONK proving system for efficient zero-knowledge proofs
- Integrates EIP-1056 for lightweight Ethereum identity management
- Combines Web2 UI/UX patterns with Web3 infrastructure for mainstream adoption
- Human-centered design approach prioritizing usability and trust communication
The system serves as a foundation for building trust networks in digital spaces while preserving individual privacy and autonomy through cryptographic guarantees.
Technologies used
Frontend:
- React 18 with TypeScript
- Vite for development tooling
- Tailwind CSS for styling
- Axios for HTTP communications
- Exact same design as the Figma prototype
Backend (API server):
- NestJS framework
- Express server
- TypeScript
- Node.js
Blockchain:
- EIP-1056 (Ethereum Lightweight Identity)
- ethers.js v6
- Ethereum Sepolia Testnet
- Solidity smart contracts
Zero-Knowledge Proofs:
- Circom for arithmetic circuits
- SnarkJS for proof generation/verification
- PLONK proving system
- Custom age verification circuits
Identity & Credentials:
- W3C DID specification
- W3C Verifiable Credentials
- JSON-LD format
- did-resolver libraries
- ethr-did-resolver
Development Tools:
- Foundry for smart contract development
- Git version control
- npm/yarn package management
Basic architecture
The zkVC system follows a multi-layered architecture that separates concerns while maintaining security and privacy:
Layer 1: Frontend (Web)
- React-based user interface with TypeScript
- Responsive design using Tailwind CSS
- Three main interfaces: Dashboard (topPage.tsx), Profile (myPage.tsx), VC Verification (verifyVC.tsx)
Layer 2: API Server
- NestJS application providing REST endpoints
- Core services: DID resolution, VC verification, ZK proof generation
- Handles business logic and data processing
- Serves as middleware between frontend and blockchain/ZK layers
Layer 3: Blockchain Layer
- EIP-1056 implementation on Ethereum Sepolia
- Smart contracts for identity management
- Optional on-chain verification (Verifier.sol for ZK proof verification)
- Decentralized identity registry
Layer 4: Zero-Knowledge Circuit Layer
- Circom circuits for privacy-preserving computations
- Age verification circuit (ageCheck.circom)
- PLONK-based proof generation using SnarkJS
- Maintains privacy while proving claims
Data Flow:
- 1. User interacts with the React frontend
- 2. Frontend calls NestJS API endpoints
- 3. API server resolves DIDs from blockchain
- 4. API server reads VCs from local storage
- 5. ZK circuits generate proofs for sensitive claims
- 6. Results are displayed in a user-friendly interface
Security Model:
- Private keys managed securely
- Sensitive data never leaves the user's control
- Zero-knowledge proofs prevent data leakage
- Decentralized architecture eliminates single points of failure
Source code
GitHub
Deployment
I don't have time to deploy both the frontend and api servers.