Skip to main content
Version: V2

Glossary

identity commitment

The public Semaphore identity value used in Semaphore groups.

Semaphore uses the Poseidon hash function to create the identity commitment from the Semaphore identity secret values. For more information, see the Poseidon website.

Merkle tree

A tree in which every leaf (i.e., a node that doesn't have children) is labelled with the cryptographic hash of a data block, and every node that isn't a leaf is labelled with the cryptographic hash of its child node labels. In zero-knowledge protocols, Merkle trees can be used to efficiently summarize and validate large data sets. To validate that a tree contains a specific leaf, a verifier only needs a portion of the complete data structure.

For more information, see Merkle tree in Wikipedia.

nullifier

A value used to prevent double entry or double signalling.

See Circuit nullifier hash

Semaphore group

A group is a binary incremental Merkle tree in which each leaf contains an identity commitment for a user. The identity commitment proves that the user is a group member without revealing the Semaphore identity of the user.

Semaphore uses the Poseidon hash function to create Merkle trees. For more information, see the Poseidon website.

Semaphore identity

The identity of a user in the Semaphore protocol. An identity contains the following three values:

  • Identity commitment: the public value.
  • Identity trapdoor and identity nullifier: secret values known only by the user.

trusted setup files

The secure, verifiable parameters generated by Semaphore's trusted setup ceremony. Semaphore uses the trusted setup files to generate and verify valid zero-knowledge proofs. To generate or verify valid zero-knowledge proofs with Semaphore, applications must include the following Semaphore trusted setup files:

  • semaphore.zkey
  • semaphore.wasm
  • semaphore.json

For a complete list of ready-to-use files, see http://www.trusted-setup-pse.org. To learn more, see the trusted setup ceremony.