Project Library

Semaphore

A zero-knowledge protocol for anonymous interactions.

Overview

Semaphore is a generic privacy layer. Leveraging zero-knowledge technology, users can prove their membership in groups and send messages (extending from votes to endorsements) off-chain or across EVM-compatible blockchains, all without revealing their personal identity. Use cases include private voting, whistleblowing, anonymous DAOs, and mixers.

Semaphore is designed to be a simple and generic privacy layer for decentralized applications (dApps). It encourages modular application design, allowing dApp developers to choose and customize the on-chain and off-chain components they need.

The core of the protocol is the circuit logic. In addition to circuits, Semaphore provides Solidity contracts and JavaScript libraries that allow developers to generate zero-knowledge proofs and verify them with minimal effort.

Features

With Semaphore, you can allow your users to do the following:

  1. Create a Semaphore identity
  2. Add their Semaphore identity to a group (i.e. Merkle tree)
  3. Send a verifiable, anonymous message (e.g. a vote or endorsement)

When a user broadcasts a message, Semaphore zero-knowledge proofs can ensure that the user has joined the group and hasn't already cast a message with a nullifier.

Ways to contribute

As a Semaphore contributor, you'll be able to claim a special GitPOAP per year 🏅

Semaphore banner
Project status
Active
Funding
PSE projects
License
MIT
Semaphore banner
Previous branding

Discover more

Bandada

An open-source tool for managing privacy-preserving groups of anonymous individuals.

jubmoji.quest

Users of Jubmoji.quest tap NFC cards to collect signatures. By collecting these signatures, they complete quests.

Back to project library