Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

docs: update semaphore wiki page #216

Merged
merged 2 commits into from
Oct 29, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
66 changes: 57 additions & 9 deletions data/projects/semaphore.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,25 +5,37 @@ const content: ProjectContent = {
tldr: "A zero-knowledge protocol for anonymous interactions.",
description: `### Overview

[Semaphore](https://github.com/semaphore-protocol/semaphore/tree/main) is a [zero-knowledge](https://z.cash/learn/what-are-zk-snarks/) protocol that allows you to cast a message (for example, a vote or endorsement) as a provable group member without revealing your identity. Additionally, it provides a simple mechanism to prevent double-signaling. Use cases include private voting, whistleblowing, anonymous DAOs and mixers.
[Semaphore](https://semaphore.pse.dev/) 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. Use cases include private voting, whistleblowing, anonymous DAOs, and mixers.

Semaphore is designed to be a simple and generic privacy layer for decentralized applications (dApps) on Ethereum. It encourages modular application design, allowing dApp developers to choose and customize the on-chain and off-chain components they need.
Semaphore is designed to be a simple and generic privacy layer for decentralized applications (dApps). It encourages modular application design, allowing
dApp developers to choose and customize the on-chain and off-chain components they need.

The core of the protocol is the circuit logic. In addition to circuits, Semaphore provides [Solidity contracts](https://github.com/semaphore-protocol/semaphore/tree/main/packages/contracts) and [JavaScript libraries](https://github.com/semaphore-protocol/semaphore/tree/main#-packages) that allow developers to generate zero-knowledge proofs and verify them with minimal effort.
The core of the protocol is the circuit logic. In addition to circuits, Semaphore provides [Solidity contracts](https://github.com/semaphore-protocol/semaphore/tree/main/packages/contracts) and
[JavaScript libraries](https://github.com/semaphore-protocol/semaphore/tree/main#-packages) that allow developers to generate zero-knowledge proofs and verify them with minimal effort.

### Features

With Semaphore, you can allow your users to do the following:

1. [Create a Semaphore identity](https://docs.semaphore.pse.dev/guides/identities)
2. [Add their Semaphore identity to a group (i.e. Merkle tree)](https://docs.semaphore.pse.dev/guides/groups)
3. [Send a verifiable, anonymous message (e.g., a vote or endorsement)](https://docs.semaphore.pse.dev/guides/proofs)
3. [Send a verifiable, anonymous message (e.g. a vote or endorsement)](https://docs.semaphore.pse.dev/guides/proofs)

When a user broadcasts a message, Semaphore zero-knowledge proofs can ensure that the user has joined the group and hasn't already cast a message with their nullifier.
Semaphore uses on-chain Solidity contracts and off-chain JavaScript libraries that work in tandem.
When a user broadcasts a message, Semaphore zero-knowledge proofs can ensure that the user has joined the group and hasn't already cast a message with a nullifier.

* Off chain, JavaScript libraries can be used to create identities, manage groups, and generate proofs.
* On chain, Solidity contracts can be used to manage groups and verify proofs.`,
### Ways to contribute

* Submit your idea to PSE's [acceleration program](https://github.com/privacy-scaling-explorations/acceleration-program) (check out this [discussion](https://github.com/orgs/semaphore-protocol/discussions/463) for potential ideas).
* Work on [open issues](https://github.com/semaphore-protocol/semaphore/contribute)
* Suggest new terms for our [glossary](https://semaphore.pse.dev/docs/glossary) ([website-issue](https://github.com/semaphore-protocol/website/issues/new?assignees=&labels=documentation&template=---glossary-term.md&title=))
* Propose new networks for our [deployed contracts](https://semaphore.pse.dev/docs/deployed-contracts) ([semaphore-issue](https://github.com/semaphore-protocol/semaphore/issues/new?assignees=&labels=&template=----network.md&title=))
* Suggest new developer tools ([semaphore-issue](https://github.com/semaphore-protocol/semaphore/issues/new?assignees=&labels=feature+%3Arocket%3A&template=---package.md&title=))
* Share your Semaphore project with us ([semaphore-issue](https://github.com/semaphore-protocol/semaphore/issues/new?assignees=&labels=documentation++%F0%9F%93%96&template=----project.md&title=))
* Share ideas for new features ([semaphore-issue](https://github.com/semaphore-protocol/semaphore/issues/new?assignees=&labels=feature+%3Arocket%3A&template=---feature.md&title=))
* Create a report if you find any bugs in the code ([semaphore-issue](https://github.com/semaphore-protocol/semaphore/issues/new?assignees=&labels=bug+%F0%9F%90%9B&template=---bug.md&title=))

As a Semaphore contributor, you'll be able to claim a special GitPOAP per year 🏅`,
},
}

Expand All @@ -40,7 +52,7 @@ export const semaphore: ProjectInterface = {
github: "https://github.com/semaphore-protocol",
website: "https://semaphore.pse.dev/",
telegram: "https://semaphore.pse.dev/telegram",
twitter: "https://twitter.com/SemaphoreDevs",
twitter: "https://semaphore.pse.dev/x",
},
tags: {
keywords: [
Expand All @@ -59,4 +71,40 @@ export const semaphore: ProjectInterface = {
types: ["Legos/dev tools", "Lego sets/toolkits", "Infrastructure/protocol"],
builtWith: ["zk-kit", "circom", "snarkjs"],
},
extraLinks: {
play: [
{
label: "Semaphore Demo",
url: "https://demo.semaphore.pse.dev/",
},
],
buildWith: [
{
label: "Semaphore CLI (Getting Started)",
url: "https://docs.semaphore.pse.dev/getting-started",
},
{
label: "Semaphore JS libraries",
url: "https://docs.semaphore.pse.dev/guides/identities",
},
{
label: "Semaphore Boilerplate",
url: "https://github.com/semaphore-protocol/boilerplate",
},
],
learn: [
{
label: "Semaphore Website",
url: "https://semaphore.pse.dev",
},
{
label: "Semaphore Documentation",
url: "https://docs.semaphore.pse.dev",
},
{
label: "Semaphore Board",
url: "https://github.com/orgs/semaphore-protocol/projects/10/views/1",
},
],
},
}