Veridicus: A Zero-Knowledge Proof System for Digital Identity
proof.itis a robust platform for generating and verifying privacy-preserving digital proofs. It leverages Zero-Knowledge (ZK) cryptography to enable users to prove statements about their identity without revealing sensitive underlying data.
- proof.it - Veridicus
proof.it (codename Veridicus) is an advanced verification system designed for digital identity. It uses ZK-SNARKs (specifically PLONK with Circom) to create a trustless environment where identity attributes like age, authenticity, or sybil resistance can be verified without compromising user privacy.
The system is composed of a Python backend providing a secure API, a vanilla JS frontend for user interaction and proof generation, and a suite of Circom circuits that define the logic for the ZK proofs. The entire environment is containerized with Docker for consistent and straightforward deployment.
- Backend: Python, FastAPI, Neo4j (Graph DB), Redis, PyJWT
- Frontend: Vanilla JavaScript, HTML5, CSS3,
@noble/cryptolibraries - ZK Proofs: Circom, PLONK,
snarkjs - DevOps: Docker, Docker Compose, Make, GitHub Actions
- Privacy-Preserving Proofs: Utilizes ZK-PLONK circuits for verifications like age, authenticity, and sybil resistance.
- Secure Backend API: A robust Python/FastAPI backend manages verification requests and serves data.
- Graph-Based Identity: Leverages a Neo4j database to model complex identity relationships and social recovery paths.
- Containerized Environment: Docker-compose setup for one-command startup of all services (backend, database, etc.).
- Automated Workflows: Cross-platform
Makefilefor streamlined installation, testing, and development. - Security-Focused Design: Pinned dependencies, security scanners (
safety,bandit), and a hardened build process. - Identity Management: Includes concepts for social recovery and cross-chain identity bridges.
proof.it/
βββ backend-python/ # Python FastAPI backend, ZK runners, and identity logic
β βββ api/ # API endpoints
β βββ auth/ # JWT and security handling
β βββ identity/ # Social recovery and identity logic
β βββ zkp/ # ZK circuit artifacts and JS runners
β βββ circuits/ # Circom source files
β βββ artifacts/ # Compiled circuits and verification keys
βββ frontend/ # Vanilla JS frontend application
βββ docker/ # Docker Compose configuration
βββ docs/ # Project documentation
βββ Makefile # Automation for build, test, and run commands
βββ refresh-circuits.ps1 # Script for rebuilding ZK circuits
This project is designed for a simple, one-command startup using make.
- Docker and Docker Compose
- Make (On Windows, install via
choco install makeor use Git Bash/WSL) - Node.js (v18+)
- Python (v3.9+)
- OpenSSL
You can validate your environment by running:
make checkThe make install command handles everything: installing dependencies, building ZK circuits, and pulling Docker images.
# 1. Clone the repository
git clone https://github.com/bonapart3/proof.it.git
cd proof.it
# 2. Install all dependencies and build artifacts
make install
# 3. Start all services in detached mode
make startOnce started, the frontend should be accessible at http://localhost:3000 and the backend API at http://localhost:8000.
The Makefile provides a comprehensive set of commands for development.
# See all available commands
make help
# Start all services (with hot-reloading for the backend)
make start
# Stop all services
make stop
# View logs for all running containers
make logs
# Run the primary security test suite
make test
# Rebuild ZK circuits quickly
make circuits
# Clean the environment (removes containers, volumes, and artifacts)
make cleanPOST /vault/upload- Upload and verify documentsGET /share/{token}- View proof detailsGET /share/{token}/bundle- Get proof bundle with ZK data
GET /health- Service health checkGET /capabilities- API capabilities and ZK proof types
GET /docs- Interactive API documentationGET /openapi.json- OpenAPI specification
The project includes several measures to ensure code quality and security:
- Dependency Pinning: All Python and Node.js dependencies are pinned to specific, audited versions in
requirements-secure.txtandpackage-secure.json. - Vulnerability Scanning: The
make testcommand runssafetyandbanditto scan for vulnerabilities and bad practices. - Secure Dependencies: Uses
@noble/cryptolibraries, which are audited and have zero dependencies. - Automated Security Checks: A dedicated GitHub Actions workflow runs security scans on every push.
Contributions are welcome! Please fork the repository, create a feature branch, and open a pull request. Ensure your changes pass the linting and testing checks.
- Fork the repository.
- Create a feature branch:
git checkout -b feature/your-feature-name - Commit your changes:
git commit -m 'Add some feature' - Push to the branch:
git push origin feature/your-feature-name - Open a pull request.
This project is licensed under the MIT License. See the LICENSE file for details.