Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/appliedzkp/semaphore
A zero-knowledge protocol for anonymous interactions.
https://github.com/appliedzkp/semaphore
circom ethereum javascript monorepo proof-of-membership semaphore solidity typescript zero-knowledge zero-knowledge-proofs zk-snarks
Last synced: 3 months ago
JSON representation
A zero-knowledge protocol for anonymous interactions.
- Host: GitHub
- URL: https://github.com/appliedzkp/semaphore
- Owner: semaphore-protocol
- License: mit
- Created: 2019-04-05T14:42:26.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2024-04-25T13:59:10.000Z (7 months ago)
- Last Synced: 2024-04-25T15:05:54.377Z (7 months ago)
- Topics: circom, ethereum, javascript, monorepo, proof-of-membership, semaphore, solidity, typescript, zero-knowledge, zero-knowledge-proofs, zk-snarks
- Language: TypeScript
- Homepage: https://semaphore.pse.dev
- Size: 6.6 MB
- Stars: 836
- Watchers: 23
- Forks: 167
- Open Issues: 50
-
Metadata Files:
- Readme: README.md
- Changelog: changelogithub.config.json
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
- awesome-circom - appliedzkp/semaphore - A privacy gadget for creating anonymous proof of membership on Ethereum (Projects using Circom / Cryptographic primitives in other languages)
README
| 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. |
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |The core of the Semaphore protocol is in the [circuit logic](/packages/circuits/scheme.png). However, Semaphore also provides [Solidity contracts](/packages/contracts) and JavaScript libraries to make the steps for offchain proof creation and onchain/offchain verification easier. To learn more about Semaphore visit [semaphore.pse.dev](https://semaphore.pse.dev).
> [!IMPORTANT]
> Help Semaphore prosper by sharing your ideas with the PSE [acceleration program](https://github.com/privacy-scaling-explorations/acceleration-program).## 📦 Packages
Package
Version
Downloads
@semaphore-protocol/core
@semaphore-protocol/contracts
@semaphore-protocol/identity
(docs)
@semaphore-protocol/group
(docs)
@semaphore-protocol/proof
(docs)
@semaphore-protocol/data
(docs)
@semaphore-protocol/hardhat
@semaphore-protocol/cli
@semaphore-protocol/utils
(docs)
## 🛠 Install
Clone this repository:
```bash
git clone https://github.com/semaphore-protocol/semaphore.git
```And install the dependencies:
```bash
cd semaphore && yarn
```## 📜 Usage
Copy the `.env.example` file as `.env`:
```bash
cp .env.example .env
```And add your environment variables.
### Code quality and formatting
Run [ESLint](https://eslint.org/) to analyze the code and catch bugs:
```bash
yarn lint
```Run [Prettier](https://prettier.io/) to check formatting rules:
```bash
yarn format
```Or to automatically format the code:
```bash
yarn format:write
```### Conventional commits
Semaphore uses [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/). A [command line utility](https://github.com/commitizen/cz-cli) to commit using the correct syntax can be used by running:
```bash
git commit
```It will also automatically check that the modified files comply with ESLint and Prettier rules.
### Testing
Run [Jest](https://jestjs.io/) to test the JS libraries:
```bash
yarn test:libraries
```Run [Mocha](https://mochajs.org/) to test the contracts:
```bash
yarn test:contracts
```Or test everything with:
```bash
yarn test
```### Build libraries & compile contracts
Run [Rollup](https://www.rollupjs.org) and [TheGraph](https://www.npmjs.com/package/@graphprotocol/graph-cli) to build all the packages and the subgraph:
```bash
yarn build
```Compile the smart contracts with [Hardhat](https://hardhat.org/):
```bash
yarn compile:contracts
```### Documentation (JS libraries)
Run [TypeDoc](https://typedoc.org/) to generate a documentation website for each package:
```bash
yarn docs
```The output will be placed on the `docs` folder.
### Releases
Bump a new version with:
```bash
yarn version:bump
# e.g. yarn version:bump 2.0.0
```It will create a commit and a git tag that will need to pushed on the main branch. A workflow will be triggered and will
publish the Semaphore packages on [npm](https://www.npmjs.com/) and release a new version on Github with its changelogs automatically.