zkVC

A privacy-preserving digital identity system that enables trust verification through DIDs and VCs with zero-knowledge proofs.

Websitegithub
  • 0 Raised
  • 319 Views
  • 0 Judges

Tags

  • cypherpunks anonymoous

Gallery

Description

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:

  1. DID Management: Create, resolve, and manage Ethereum-based decentralized identifiers
  2. VC Processing: Handle W3C-standard Verifiable Credentials with privacy controls
  3. Zero-Knowledge Age Verification: Prove age ≥ 20 using ZK-SNARKs without revealing exact birthdate
  4. 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. 1. User interacts with the React frontend
  2. 2. Frontend calls NestJS API endpoints
  3. 3. API server resolves DIDs from blockchain
  4. 4. API server reads VCs from local storage
  5. 5. ZK circuits generate proofs for sensitive claims
  6. 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.

Attachments