• It generates a Semaphore proof, i.e. a zero-knowledge proof that an identity that is part of a group has shared an anonymous message. The message may be any arbitrary user-defined value (e.g. a vote), or the hash of that value. The scope is a value used like a topic on which users can generate a valid proof only once, for example the id of an election in which voters can only vote once. The hash of the identity's scope and secret scalar is called a nullifier and can be used to verify whether that identity has already generated a valid proof in that scope. The depth of the tree determines which zero-knowledge artifacts to use to generate the proof. If it is not defined, it will be inferred from the group or Merkle proof passed as the second parameter. Finally, the artifacts themselves can be passed manually with file paths, or they will be automatically fetched. Please keep in mind that groups with 1 member or 2 members cannot be considered anonymous.

    Parameters

    • identity: Identity

      The Semaphore identity.

    • groupOrMerkleProof: Group | MerkleProof

      The Semaphore group or its Merkle proof.

    • message: Uint8Array | BigNumberish

      The Semaphore message.

    • scope: Uint8Array | BigNumberish

      The Semaphore scope.

    • Optional merkleTreeDepth: number

      The depth of the tree with which the circuit was compiled.

    • Optional snarkArtifacts: SnarkArtifacts

    Returns Promise<SemaphoreProof>

    The Semaphore proof ready to be verified.