@cryptkeeperzk/semaphore-group
v3.10.3
Published
A library to create and manage Semaphore groups.
Downloads
6
Readme
| This library is an abstraction of @zk-kit/incremental-merkle-tree
. The main goal is to make it easier to create offchain groups, which are also used to generate Semaphore proofs. Semaphore groups are actually incremental Merkle trees, and the group members are tree leaves. Since the Merkle tree implementation we are using is a binary tree, the maximum number of members of a group is equal to 2^treeDepth
. |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
🛠 Install
npm or yarn
Install the @cryptkeeperzk/semaphore-group
package with npm:
npm i@cryptkeeperzk/semaphore-group
or yarn:
yarn add@cryptkeeperzk/semaphore-group
📜 Usage
# new Group(groupId: Member, treeDepth = 20): Group
import { Group } from "@cryptkeeperzk/semaphore-group"
import { Identity } from "@cryptkeeperzk/semaphore-identity"
// Group with max 1048576 members (20^²).
const group1 = new Group(1)
// Group with max 65536 members (16^²).
const group2 = new Group(1, 16)
// Group with max 16777216 members (24^²).
const group3 = new Group(1, 24)
// Group with a list of predefined members.
const identity1 = new Identity()
const identity2 = new Identity()
const identity3 = new Identity()
const group3 = new Group(1, 16, [identity1.commitment, identity2.commitment, identity3.commitment])
# addMember(identityCommitment: Member)
import { Identity } from "@cryptkeeperzk/semaphore-identity"
const identity = new Identity()
const commitment = identity.generateCommitment()
group.addMember(commitment)
# removeMember(index: number)
group.removeMember(0)
# indexOf(member: Member): number
group.indexOf(commitment) // 0
# generateMerkleProof(index: number): MerkleProof
const proof = group.generateMerkleProof(0)