Client library for generating and verifying Semaphore & Rln ZK proofs.
npm install @libsem/protocols
Client library for generating and verifying Semaphore & Rln ZK proofs.
---
Install the @libsem/protocols package with npm:
``bash`
npm i @libsem/protocols
or yarn:
`bash`
yarn add @libsem/protocols
Import
`typescript`
import { ZkIdentity, Identity } from "@libsem/identity"
import {
Semaphore,
MerkleProof,
IProof,
generateMerkleProof,
genExternalNullifier,
genSignalHash
} from "@libsem/protocols"
`javascript`
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
`typescript
const identityCommitments: Array
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
`typescript``
const witness = Semaphore.genWitness(identity, merkleProof, externalNullifier, signal)
const fullProof = await Semaphore.genProof(witness, wasmFilePath, finalZkeyPath)
For full examples of how to integrate with contracts check https://github.com/appliedzkp/semaphore repository.
For additional info check tests directory.