Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/semaphore-protocol/semaphore
A zero-knowledge protocol for anonymous signaling on Ethereum.
https://github.com/semaphore-protocol/semaphore
circom ethereum javascript monorepo proof-of-membership semaphore solidity typescript zero-knowledge zero-knowledge-proofs zk-snarks
Last synced: 4 months ago
JSON representation
A zero-knowledge protocol for anonymous signaling on Ethereum.
- Host: GitHub
- URL: https://github.com/semaphore-protocol/semaphore
- Owner: semaphore-protocol
- License: mit
- Created: 2019-04-05T14:42:26.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2024-03-21T15:55:57.000Z (4 months ago)
- Last Synced: 2024-03-21T17:01:17.698Z (4 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: 92.5 MB
- Stars: 824
- Watchers: 22
- Forks: 157
- Open Issues: 59
-
Metadata Files:
- Readme: README.md
- Changelog: changelogithub.config.json
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Lists
- awesome-circom - appliedzkp/semaphore - A privacy gadget for creating anonymous proof of membership on Ethereum (Projects using Circom / Cryptographic primitives in other languages)
- awesome-stars - semaphore-protocol/semaphore - `★870` A zero-knowledge protocol for anonymous interactions. (TypeScript)
- awesome-zero-knowledge-proofs - Semaphore
- awesome-stars - semaphore-protocol/semaphore - A zero-knowledge protocol for anonymous interactions. (typescript)
README
![]()
| 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](/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 verification easier. To learn more about Semaphore visit [semaphore.pse.dev](https://semaphore.pse.dev).
## 📦 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)
![]()
![]()
@semaphore-protocol/heyauthn
(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 prettier
```Or to automatically format the code:
```bash
yarn prettier: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
yarn 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.