Files
zk-kit/packages/protocols
cedoor 486f3cdb02 chore: update incremental-merkle-tree dependency
Former-commit-id: d6a3fc62e292a3c1e0b7908691fbb61a51401c40 [formerly 8b5d7f19bf5bdbcdf0e6c1bcc3969214bdf3c999] [formerly 427005986aec68fb0badf5afd2a837e926c73dce [formerly e8f276992162c650ab1ab129803b98bc0cb3b183]] [formerly 6ec1ee44e7fc569b7d612a3cf76edf1741a2c218 [formerly 3162d98af4bca15be9523ae42fd4329fbe67a311] [formerly 613f9a22f998e12bad981d2298fe2ab33158bf07 [formerly d12b44147b]]]
Former-commit-id: 7c392d2e72debf7ac778fbd9596c0c3946b90482 [formerly ef9bc66efadffb00f1751826802908100789d1dc] [formerly d1bff937e68caaec598a701f8cfd8ac6d230e810 [formerly 1ee5addfcb64a2554997179e07d0d964c05aee22]]
Former-commit-id: 79ab8de1561da441d0feabef5881be1117d74a62 [formerly eb3355097780e00f47c206851ba1807abeb52603]
Former-commit-id: cf862a8563565d078e08a76e22ff8d3bbaf806ff
2022-01-24 17:36:03 +01:00
..
2022-01-21 22:43:14 +01:00
2022-01-24 15:38:45 +01:00

ZK protocols

Client library for generating and verifying Semaphore & RLN ZK proofs.

Github license NPM version Downloads npm bundle size (scoped) Linter eslint Code style prettier


🛠 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

Import

import { ZkIdentity, Identity } from "@zk-kit/identity"
import {
  Semaphore,
  MerkleProof,
  IProof,
  generateMerkleProof,
  genExternalNullifier,
  genSignalHash
} from "@zk-kit/protocols"
const { ZkIdentity } = require("@zk-kit/identity")
const { Semaphore, Rln, NRln, generateMerkleProof, genExternalNullifier, genSignalHash } = require("@zk-kit/protocols")

Merkle Proofs Generate merkle proof for your identity given the array of registered identity commitments

const identityCommitments: Array<bigint> = [...];
const identity: ZkIdentity = new ZkIdentity();
const identityCommitment: bigint = identity.genIdentityCommitment();

const merkleProof: MerkleProof = generateMerkleProof(TREE_DEPTH, ZERO_VALUE, NUMBER_OF_LEAVES_PER_NODE, identityCommitments, identityCommitment);

Semaphore

In order to create semaphore proof, make sure to

const witness = Semaphore.genWitness(identity, merkleProof, externalNullifier, signal)
const fullProof = await Semaphore.genProof(witness, wasmFilePath, finalZkeyPath)

📜 Final Note

For full examples of how to integrate with contracts check https://github.com/appliedzkp/semaphore repository.

For additional info check tests directory.