mirror of
https://github.com/privacy-scaling-explorations/zk-kit.git
synced 2026-04-22 03:00:15 -04:00
Former-commit-id: dfb2878e859af75bc3e61b64751aff1e3a050dcb [formerly 3b5cfc5a3483b84b241b9683a4396953f126eaf9] [formerly 373ce91cab5dc3e5115bf2f98dbc792434789b30 [formerly 05a9303d020d72c65197ed635de95a6936e86b4a]] [formerly 1564503938bc65d935991a29c5db6950c7f89e64 [formerly 05c68d6c91ba15bf30e08fa76d747143bd18a269] [formerly 901a7d19556c40e8a0208a7e81f462397ff41d57 [formerly e6e49453e0]]]
Former-commit-id: 6be98aebfc50ec77dc8d010a9fa6c5680a160519 [formerly cae2d5c36eabac31ab2aca1f84d2741ca218679e] [formerly b5f396c6e6fbe23ea02795140b6f5e39f6495258 [formerly 9c7b308017b67537bcab1e8612a738ddafd96382]]
Former-commit-id: 6fa08777005fdfa154bfa6c469a7bf995ff442b1 [formerly b35985cf47581d6c8e7c1e7afbc5b1fbc2a3df86]
Former-commit-id: 48ba611e0702324f7197fadd6f7fb404e598ce6e
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")