0.0.1-4 • Published 2 years ago

@webb-tools/semaphore-group v0.0.1-4

Weekly downloads
-
License
GPL-3.0-or-later
Repository
github
Last release
2 years ago
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 @semaphore-protocol/group package with npm:

npm i @semaphore-protocol/group

or yarn:

yarn add @semaphore-protocol/group

📜 Usage

# new Group(treeDepth = 20, zeroValue = BigInt(0)): Group

import { Group } from "@semaphore-protocol/group"

// Group with max 1048576 members (20^²).
const group1 = new Group()

// Group with max 65536 members (16^²).
const group2 = new Group(16)

// Group with max 16777216 members (24^²).
const group3 = new Group(24)

# addMember(identityCommitment: Member)

import { Identity } from "@semaphore-protocol/identity"

const identity = new Identity()
const commitment = identity.generateCommitment()

group.addMember(commitment)

# addMembers(identityCommitments: Member[])

let identityCommitments: bigint[]

for (let i = 0; i < 10; i++) {
    const identity = new Identity()
    const commitment = identity.generateCommitment()

    identityCommitments.push(commitment)
}

group.addMember(identityCommitments)

# removeMember(index: number)

group.removeMember(0)

# indexOf(member: Member): number

group.indexOf(commitment) // 0

# generateProofOfMembership(index: number): MerkleProof

const proof = group.generateProofOfMembership(0)