Files
zk-kit/packages/protocols
Andrija ef25af8e86 bump version
Former-commit-id: 47bb16e6cbc3b985103ac96fad969f294bd41015 [formerly 6e6c4e1abe1ef37770ec601b3092bf03336f4d84] [formerly 47c87dc14899083220c29745dfa1725f1c1c2733 [formerly 339af2bb48]]
Former-commit-id: 255c72679e652d62ddb0907afe9d5c8c2a36e310 [formerly c8eaac09ffeab7a44055c6fba8bc3aa669c04784]
Former-commit-id: 7f12bad91af24037812a23f5d6d50d00d13ddb10
2022-01-03 20:11:20 +01:00
..
2021-10-25 19:35:07 +02:00
2021-12-03 00:57:32 +01:00
2022-01-03 20:11:20 +01:00
2021-10-22 22:13:48 +02:00
2021-10-25 19:35:07 +02:00

Semaphore 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 @libsem/protocols package with npm:

npm i @libsem/protocols

or yarn:

yarn add @libsem/protocols

📜 Usage

Import

import { ZkIdentity, Identity } from "@libsem/identity"
import {
  Semaphore,
  MerkleProof,
  IProof,
  generateMerkleProof,
  genExternalNullifier,
  genSignalHash
} from "@libsem/protocols"
const { ZkIdentity } = require("@libsem/identity")
const { Semaphore, Rln, NRln, generateMerkleProof, genExternalNullifier, genSignalHash } = require("@libsem/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.