Skip to content

Latest commit

 

History

History
504 lines (455 loc) · 17.4 KB

README.md

File metadata and controls

504 lines (455 loc) · 17.4 KB

Semaphore icon Semaphore

Github license GitHub Workflow test Coveralls DeepScan grade Linter eslint Code style prettier Repository top language

Semaphore is a protocol, designed to be a simple and generic privacy layer for Ethereum DApps. Using zero knowledge, Ethereum users can prove their membership of a group and send signals such as votes or endorsements without revealing their original identity.

The core of the Semaphore protocol is in the circuit logic. However Semaphore also provides Solidity contracts and JavaScript libraries to make the steps for offchain proof creation and onchain verification easier. To learn more about Semaphore visit semaphore.pse.dev.

📦 Packages

Package Version Downloads
@semaphore-protocol/contracts NPM version Downloads
@semaphore-protocol/identity (docs) NPM version Downloads
@semaphore-protocol/group (docs) NPM version Downloads
@semaphore-protocol/proof (docs) NPM version Downloads
@semaphore-protocol/data (docs) NPM version Downloads
@semaphore-protocol/hardhat NPM version Downloads
@semaphore-protocol/cli NPM version Downloads
@semaphore-protocol/heyauthn (docs) NPM version Downloads

💡 Projects

The following are some of the internal and external projects that use Semaphore. If you want to include your project, open an issue or create a PR by adding the project information to the projects.json file.

Project Description Links
Bandada An open-source system for managing privacy-preserving groups of anonymous individuals. Create and manage onchain and offchain Semaphore groups using UI or API. Github | Discord
Semaphore Explorer Semaphore explorer for on-chain groups. Github | Discord
Semaphore Discord Bot A Discord bot for Semaphore. Github | Discord
Unirep Private and nonrepudiable reputation system based on ZKP. Github | Discord
ZK Proof of Humanity A project to allows humans, registered in Proof of Humanity, to prove their humanity without doxing. Github
Plurality An Identity Lego Building Block for dapp creators that lets them identify their users without
using any third-party KYC provider or other middlemen, whilst preserving the privacy of users.
Github
ZeroTherapy AMA privacy application built with Semaphore. Github
Block Qualified On-chain and privacy preserving education platform built on Semaphore. Github
StealthComms A project that allows users to prove their membership in a group and send messages/signals without revealing their original identity. Github

🛠 Install

Clone this repository:

git clone https://github.com/semaphore-protocol/semaphore.git

And install the dependencies:

cd semaphore && yarn

📜 Usage

Copy the .env.example file as .env:

cp .env.example .env

And add your environment variables.

Code quality and formatting

Run ESLint to analyze the code and catch bugs:

yarn lint

Run Prettier to check formatting rules:

yarn prettier

Or to automatically format the code:

yarn prettier:write

Conventional commits

Semaphore uses conventional commits. A command line utility to commit using the correct syntax can be used by running:

yarn commit

It will also automatically check that the modified files comply with ESLint and Prettier rules.

Snark artifacts

Download the Semaphore snark artifacts needed to generate and verify proofs:

yarn download:snark-artifacts

Testing

Run Jest to test the JS libraries:

yarn test:libraries

Run Mocha to test the contracts:

yarn test:contracts

Or test everything with:

yarn test

Build libraries & compile contracts

Run Rollup to build all the packages:

yarn build:libraries

Compile the smart contracts with Hardhat:

yarn compile:contracts

Documentation (JS libraries)

Run TypeDoc to generate a documentation website for each package:

yarn docs

The output will be placed on the docs folder.