mirror of
https://github.com/privacy-scaling-explorations/zk-kit.git
synced 2026-04-22 03:00:15 -04:00
Former-commit-id: 994d41e08627c54e23c9daf98cdbdcf9e9a1fdeb [formerly 4d70bef85dffe4c926ba0c1dc9559f04ffd13377] [formerly 7de378a9d0adf109bb1a149d767c935f840190d3 [formerly 66ab261c4c6e62a99c9283c8e124d23eb28751de]] [formerly 39e90270cdece607df9ab24482951b2d856f43da [formerly 8dcd0277319db2ae04eb093457d06e7f62a916a9] [formerly 8d45a8e7e383087eb3330357eaafb7f39e183470 [formerly f781c7c585]]]
Former-commit-id: 062fc589c434e3f22e4b69580fb02e58921a66e6 [formerly eb333a9ee64f32bf6876bcfa3db1b41148c8e517] [formerly f7a2e76c9cef5a4333ca850ac1482c753f99328f [formerly 63e543246759a69d580089fee1657d11b73649c9]]
Former-commit-id: f5a2a62ee3d5eb79c2515b120ce469aaa0af32e0 [formerly 2a7847a4acc85a404eec73df159b9666c557be38]
Former-commit-id: 53c88726f1f431e6790728e6d2ed1a77bbe5dd5d
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")