Files
zk-kit/packages/protocols
cedoor c8a85df511 test: add tests to create proofs and verify them
Former-commit-id: f45d926275bd734185edfd1fa323e399fbc505cc [formerly 6a412ac4324d0bc65fadd31ef4952beb6b41c552] [formerly 4f9ad62e0aca23775e65b8e8bb9c2eb615ec8aca [formerly c920365e83a601a73401609bedca3542779ce6c8]] [formerly e73de9b0c0a262c979c1d17882ea3c4dd31aa59e [formerly 2a175fb199795e94a2e14e7e6774d611d72cf9de] [formerly 84f49553d22b1c51f4bd15f0f5e92c6f5ff0438e [formerly 865c5bb174]]]
Former-commit-id: 46e1332a4a2fbbdcc34fd4dbf5b98d04da3d52df [formerly 83b1530c98aef832277c838cd7714cfbb84d83c1] [formerly 1541c9c435e024eb0012f19e655ecb01804e4a47 [formerly 55eb157e1bfa9916887fb3a331dabcc3268cf62b]]
Former-commit-id: d8385e49a2f06264e525e2ce83f75746fd1b57dd [formerly dd8f63c8d306064f9f5163e9f2a6f841634e8b96]
Former-commit-id: ab49c153a92a66dfee8741a94529b7dd91ac74d2
2022-01-24 15:39:23 +01:00
..
2022-01-24 15:38:45 +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.