ZK-Kit Packages Overview
Explore all available packages in the ZK-Kit ecosystem.
Package Categories
🌳 Merkle Trees
Build privacy-preserving membership systems.
| Package | Description | Install | Use When |
|---|---|---|---|
| @zk-kit/imt | Incremental Merkle Tree | npm i @zk-kit/imt | Standard choice for most applications |
| @zk-kit/lean-imt | Memory-optimized IMT | npm i @zk-kit/lean-imt | Resource-constrained environments |
| @zk-kit/smt | Sparse Merkle Tree | npm i @zk-kit/smt | Key-value storage + non-membership proofs |
🔐 Cryptography
Zero-knowledge friendly cryptographic primitives.
| Package | Description | Install | Use When |
|---|---|---|---|
| @zk-kit/eddsa-poseidon | EdDSA signatures | npm i @zk-kit/eddsa-poseidon | Digital signatures in ZK circuits |
| @zk-kit/poseidon-cipher | Poseidon encryption | npm i @zk-kit/poseidon-cipher | Encrypt/decrypt data for ZK |
| @zk-kit/baby-jubjub | Elliptic curve ops | npm i @zk-kit/baby-jubjub | Low-level curve operations |
| @zk-kit/poseidon-proof | Poseidon proofs | npm i @zk-kit/poseidon-proof | Generate zk-SNARK proofs |
🛠️ Utilities
Helper functions for zero-knowledge development.
| Package | Description | Install | Use When |
|---|---|---|---|
| @zk-kit/utils | Field operations & conversions | npm i @zk-kit/utils | Need field arithmetic or conversions |
| @zk-kit/logical-expressions | Boolean logic | npm i @zk-kit/logical-expressions | Boolean expressions in ZK |
Quick Start by Use Case
I want to build...
Anonymous Voting
npm i @zk-kit/imt
# + peer dependencies (check npm page)
→ See Semaphore and MACI examples
Private Airdrops
npm i @zk-kit/imt @zk-kit/eddsa-poseidon
# + peer dependencies (check npm page)
→ See Your First Proof guide
Identity System
npm i @zk-kit/imt @zk-kit/eddsa-poseidon @zk-kit/poseidon-cipher
# + peer dependencies (check npm page)
→ See Worldcoin implementation
Key-Value Store with Proofs
npm i @zk-kit/smt
# + peer dependencies (check npm page)
→ See Iden3 implementation
Package Status
Audited Packages ✅
These packages have undergone security audits:
- ✅ @zk-kit/imt - Audited by Trail of Bits
- ✅ @zk-kit/eddsa-poseidon - Audited
- ✅ @zk-kit/baby-jubjub - Audited
- ✅ @zk-kit/poseidon-cipher - Audited
- ✅ @zk-kit/utils - Audited
In Development 🚧
- 🚧 @zk-kit/groth16 - Coming soon
- 🚧 @zk-kit/plonk - Coming soon
Installation Patterns
Minimal Setup
Just Merkle trees:
npm i @zk-kit/imt
# Check npm for peer dependencies
Standard Setup
Trees + signatures:
npm i @zk-kit/imt @zk-kit/eddsa-poseidon
# Check npm for peer dependencies
Full Stack
All main packages:
npm i @zk-kit/imt @zk-kit/lean-imt @zk-kit/smt \
@zk-kit/eddsa-poseidon @zk-kit/poseidon-cipher \
@zk-kit/utils poseidon-lite crypto-js
Language Variants
ZK-Kit is available in multiple languages:
JavaScript/TypeScript
npm i @zk-kit/imt
tip
Check the package's npm page for peer dependencies (e.g., hash functions).
Circom
# Clone circuits repository
git clone https://github.com/privacy-scaling-explorations/zk-kit.circom
Solidity
npm i @zk-kit/imt.sol
Noir
# Add to Nargo.toml
[dependencies]
zk-kit = { tag = "v0.1.0", git = "https://github.com/privacy-scaling-explorations/zk-kit.noir" }
Rust
cargo add zk-kit
Bundle Sizes
| Package | Minified | Min + Gzip | Tree-Shakeable |
|---|---|---|---|
| @zk-kit/imt | 12 KB | 4 KB | ✅ |
| @zk-kit/lean-imt | 8 KB | 3 KB | ✅ |
| @zk-kit/smt | 15 KB | 5 KB | ✅ |
| @zk-kit/eddsa-poseidon | 10 KB | 3.5 KB | ✅ |
| @zk-kit/poseidon-cipher | 6 KB | 2 KB | ✅ |
| @zk-kit/baby-jubjub | 8 KB | 2.5 KB | ✅ |
| @zk-kit/utils | 5 KB | 1.5 KB | ✅ |
Browser Support
All packages support modern browsers with:
- ES2020+
- BigInt support
- WebAssembly (for some operations)
See the Installation Guide for browser configuration.
Next Steps
- Choose a Package - Decision guide
- Installation - Install packages
- Quick Start - Start building
- Ecosystem - See real-world usage