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.
Clone this repository:
git clone https://github.com/semaphore-protocol/semaphore.git
And install the dependencies:
cd semaphore && yarn
Copy the .env.example
file as .env
:
cp .env.example .env
And add your environment variables.
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
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.
Download the Semaphore snark artifacts needed to generate and verify proofs:
yarn download:snark-artifacts
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
Run Rollup to build all the packages:
yarn build:libraries
Compile the smart contracts with Hardhat:
yarn compile:contracts
Run TypeDoc to generate a documentation website for each package:
yarn docs
The output will be placed on the docs
folder.