mirror of
https://github.com/privacy-scaling-explorations/zk-kit.git
synced 2026-04-22 03:00:15 -04:00
Former-commit-id: 79bdca7a50ae8bed43d30292cba9750768c26748 [formerly 63fcb2b425b44429155b5197188f551c975622be] [formerly edbdc59d92792b73e239a249f1912a12401c0d34 [formerly 1d1bf58433787d94813358a2dcdcd0178027adba]] [formerly bfd5146e4680c61b448d60ff8facba554a8b1d4b [formerly 79d07901f4fbf9cd45cfd246c352cb4e6faa7443] [formerly 388550803ae834c038afb62bccf1b975d233d0a3 [formerly 87fcdf2810]]]
Former-commit-id: 2b3cda8c28ba3b4faa6008f9c99ee498b1f6b3b0 [formerly 497c5d149c5ed1d1840e0065680178edfa5614ac] [formerly 15266c6c05ec15dd1795a6145ca61aef2a8dd088 [formerly 61c7b7aa121d893a2a18550218d0b6398a96a7aa]]
Former-commit-id: 0495b6a580cb084dc4e79d28b3e29ae0a74dadda [formerly 827e68c7729b53aedd116b8c426738193d0557f8]
Former-commit-id: b855182b594a4e9739a066149b08ee2b9d6b309c
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")