2022-02-10 13:21:07 +01:00
2022-01-28 16:53:59 +01:00
2022-02-10 11:32:27 +01:00
2022-02-03 10:38:51 +01:00
2022-02-10 11:35:04 +01:00
2022-02-10 13:21:07 +01:00
2022-02-08 11:51:47 +01:00
2022-01-27 11:24:48 +01:00
2022-01-27 11:21:56 +01:00
2022-01-27 16:36:27 +01:00
2022-01-27 11:50:09 +01:00
2022-01-27 11:50:09 +01:00
2022-01-27 11:21:56 +01:00
2022-02-07 11:04:45 +01:00
2020-03-03 23:37:13 +02:00
2022-01-28 20:06:04 +01:00
2022-01-27 13:34:26 +01:00

Semaphore

A privacy gadget for creating anonymous proof of membership on Ethereum.

Github license GitHub Workflow docs GitHub Workflow test Coveralls Linter eslint Code style prettier

Semaphore is a zero-knowledge gadget which allows Ethereum users to prove their membership of a set without revealing their original identity. At the same time, it allows users to signal their endorsement of an arbitrary string. It is designed to be a simple and generic privacy layer for Ethereum DApps. Use cases include private voting, whistleblowing, mixers, and anonymous authentication.

The core of the Semaphore protocol is in the circuit logic, however Semaphore provides Solidity contracts and JavaScript libraries to make the steps for offchain proof creation and onchain verification simple.

🛠 Install

You can install our Semaphore packages with npm:

npm i @zk-kit/identity @zk-kit/protocols @semaphore/contracts --save

or yarn:

yarn add @zk-kit/identity @zk-kit/protocols @semaphore/contracts

📜 Usage

Contracts

When using Semaphore contracts keep in mind that there are two types of contracts:

  • Base contracts: they allow you to use the main fatures of the protocol (i.e. verify a proof or manage Merkle trees/groups).
  • Extension contracts: they contain application logic and could be used for specific use-cases (e.g. anonymous voting).

Our current available extension contracts can be a good example of how base contracts can be used.

ZK-kit libraries

When using Semaphore each user will need to create their own identity, which will then be added to a group. @zk-kit/identity allows users to create and manage their identities, while @zk-kit/protocols allows users to create Semaphore proofs to prove their group membership and signal their endorsement of an arbitrary string anonymously.

Description
No description provided
Readme MIT 139 MiB
Languages
TypeScript 71.1%
MDX 13.4%
Solidity 10.7%
SCSS 1.9%
CSS 1.8%
Other 1.1%