mirror of
https://github.com/privacy-scaling-explorations/zk-kit.git
synced 2026-04-22 03:00:15 -04:00
Former-commit-id: e9db2029e385dda99b2eaaab945088815fa75dea [formerly b31d320823e3ce0ed2e485aa3dc9d03e444613d7] [formerly c16e4798475d36bbe8629bb58c0849b5f64214da [formerly f029a3a140a77b26b71caac1db059cc82ee99796]] [formerly 29c1a8238c78761762c0d32b894e463c36e7ee24 [formerly d322f5204b8a695e3c97eacd19cd5c0c6ead983e] [formerly 0bf5849652a12bf6696f36b9114a5dfd84c18d9a [formerly 773c106e66]]]
Former-commit-id: 40eb48cab23773574ef354a40eea1e985c04c873 [formerly 9826b69d66170b75056f232585a4139a9cebb158] [formerly 9a154aee752e463c59f9f53b6c48a86758d2ddaf [formerly 12f65e19afdb4180a12137adf840f52012e1609d]]
Former-commit-id: 976caa77ca486d00bd0f8b494cc9419df7a317d1 [formerly 247214cf2f1e273f5867b9c40f1e6b8b18de1c4b]
Former-commit-id: f5b857e70059280a94bbe9f8362fc7bfa68489df
ZK protocols
Client library for generating and verifying Semaphore & RLN ZK proofs.
🛠 Install
npm or yarn
Install the @zk-kit/protocols package with npm:
npm i @zk-kit/protocols
or yarn:
yarn add @zk-kit/protocols
📜 Usage
Generating Merkle proofs
import { ZkIdentity } from "@zk-kit/identity"
import { generateMerkleProof } from "@zk-kit/protocols"
const depth = 20
const zeroValue= BigInt(0)
const arity = 5
const identityCommitments = [...];
const identity = new ZkIdentity();
const identityCommitment = identity.genIdentityCommitment();
const merkleProof = generateMerkleProof(depth, zeroValue, arity, identityCommitments, identityCommitment);
Creating Semaphore proofs
import { Semaphore, genExternalNullifier } from "@zk-kit/protocols"
const signal = "0x111"
const externalNullifier = genExternalNullifier("voting_1")
const witness = Semaphore.genWitness(identity, merkleProof, externalNullifier, signal)
const fullProof = await Semaphore.genProof(witness, "./semaphore.wasm", "./semaphore.zkey")