# Semaphore

> Generic Ethereum zero-knowledge privacy layer for anonymous group membership proofs, anonymous signaling, double-signaling prevention, and private identity use cases.

- Readiness score: **85/100** (score.v2)
- Integration difficulty: medium
- Chains: ethereum
- Categories: privacy, identity, zero-knowledge, signaling
- Last verified: 2026-06-04 by composewith.eth research (Semaphore docs live-verified via WebFetch 2026-06-04) (confidence: high)

## Resources

- docs: https://docs.semaphore.pse.dev/
- sdk: https://github.com/semaphore-protocol/semaphore
- template: https://docs.semaphore.pse.dev/getting-started
- support: https://semaphore.pse.dev/telegram

## Good for

- anonymous group membership proofs
- private endorsements, whistleblowing, and DAO signaling
- apps that need nullifier-based double-action prevention

## Avoid for

- private token transfers, private DeFi, or wallet balance privacy
- full voting systems that need anti-collusion tally infrastructure; use MACI instead

## Capabilities

### Anonymous group membership proofs (production-ready)
Best for: proving a user belongs to a group without revealing which member they are, anonymous endorsements or private access control
- The app must design group admission, group updates, and nullifier scope correctly.

### Double-signaling prevention (production-ready)
Best for: anonymous one-vote/one-action systems, whistleblowing or DAO signaling where identity should remain private
- Semaphore is not a full tally/coordinator voting protocol by itself.

## Composes with

- **maci** (governance_and_voting; supports) — MACI adds a full private voting and tally workflow when anonymous signaling is not enough.
- **the-graph** (indexing_and_data; supports) — The Graph can index group, signal, and nullifier events for application state and auditability.

## Known issues

- **Semaphore is a primitive, not a complete governance stack** (low, confirmed) — workaround: Use Semaphore for anonymous membership/signaling primitives; use MACI when the product needs private, coercion-resistant voting with verifiable tally proofs.
  - source: https://docs.semaphore.pse.dev/ (retrieved 2026-06-04, high)

---
Canonical: https://composewith.eth/protocols/semaphore · JSON: https://composewith.eth/protocols/semaphore.json
