A comprehensive implementation of zkMPA (Zero-Knowledge Multi-Party Approval) for verifiable credentials using Semaphore zero-knowledge proofs.
.
├── docs/ # Protocol documentation and specifications
├── examples/ # Example implementations
│ └── zkmpa-demo/ # Full-stack zkMPA demo application
└── packages/ # Core zkMPA packages
├── @zkmpa/core # Main protocol implementation
├── @zkmpa/identity # Identity management
├── @zkmpa/group # Group management
├── @zkmpa/proposal # Proposal and voting
├── @zkmpa/credential # VC issuance/verification
├── @zkmpa/proof # ZK proof generation
└── @zkmpa/storage # Storage adapters
# Install dependencies
pnpm install
# Run the full-stack demo
pnpm dev:example
# Or navigate to the example directly
cd examples/zkmpa-demo
pnpm dev:all
- Zero-knowledge proofs via Semaphore protocol
- Privacy-preserving member participation
- Cryptographic nullifier prevention of double voting
- Per-credential approval thresholds
- Flexible governance models
- Context-aware policy application
- Collective entity representation
- W3C DID standard compliance
- Veramo integration
- W3C VC standard
- Cryptographic evidence of approval
- JWT-based proof format
- Frontend: Next.js, React, TypeScript
- Backend: NestJS, TypeScript
- Cryptography: Semaphore Protocol, snarkjs
- Identity: Veramo, DIDs
- Database: MongoDB
- Blockchain: Ethereum (Sepolia testnet)
This repository provides a reference implementation of zkMPA (Zero-Knowledge Multi-Party Approval), including core packages to make it easier to implement this protocol:
- Core packages (
@zkmpa/*
) provide reusable components and protocol implementation - Protocol specification documented in
./docs/README.md
- Working demo available in
./examples/zkmpa-demo/
The zkMPA packages are designed to simplify the implementation of the protocol by handling complex cryptographic operations, DID document management, and verification workflows.
Contributions are welcome! Please read our contributing guidelines and submit PRs.
MIT License - see LICENSE file for details.
This project builds upon the work of:
- Semaphore Protocol team
- Veramo Framework team
- W3C DID and VC Working Groups