Semaphore
Semaphore is a zero-knowledge protocol that allows you to cast a signal (for example, a vote or endorsement) as a provable group member without revealing your identity. Additionally, it provides a simple mechanism to prevent double-signaling. Use cases include private voting, whistleblowing, anonymous DAOs and mixers. Using zero knowledge, Semaphore allows Ethereum users to prove their membership of a group and send signals such as votes or endorsements without revealing their original identity. Trapdoor and nullifier values are the private values of the Semaphore identity. To avoid fraud, the owner must keep both values secret. Semaphore uses the Poseidon hash function to create the identity commitment from the identity private values. Identity commitments can be made public, similarly to Ethereum addresses. Semaphore identities can be generated deterministically or randomly. Deterministic identities can be generated from the hash of a secret message.