mirror of
https://github.com/privacy-scaling-explorations/zk-kit.git
synced 2026-04-22 03:00:15 -04:00
Former-commit-id: 1f31dc31af8675a796a6a1ce126a41295e1742ba [formerly 297c49da6bb2b4382d80a3caef576bbfff4ee2e7] [formerly 210e714e41c0866d612735f9e11cfcadb9b1c50c [formerly c1a08238cd19bad93b3ce150f6a0843ec2a83f75]] [formerly ff11bc8e638512d9c3da6fd504b58cbad602c52a [formerly 048e5bf52b1ddd2dcc1729c013c30b93ef1177c5] [formerly bd3816f6e1a9b41469dac15b9ddb618d5b7ca877 [formerly eb37ae1276]]]
Former-commit-id: 2191500e81b6b70da451256d3d10043c0c0c2a31 [formerly 0b5745eac7b387508c8d7b6294e43652c7ae3e7f] [formerly e3d190dc5933c11bb8c37be4e8efdf30ae3e06d5 [formerly 6b7271fb4cd2cbdfc5a7d9af79a2b91c8e640bc9]]
Former-commit-id: 9be71b4f0f0674fe087e5fd300d84d91824363bd [formerly de3d46f7b2368f60654f7247bf36bb823662c397]
Former-commit-id: 5f58a42660cb71958181c2f3f5bc092614778245
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")