Files
pse.dev/data/projects/semaphore.ts
2024-10-21 00:44:12 +01:00

63 lines
2.9 KiB
TypeScript

import { ProjectContent, ProjectInterface, ProjectStatus } from "@/lib/types"
const content: ProjectContent = {
en: {
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 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.
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)
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.
* 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.`,
},
}
export const semaphore: ProjectInterface = {
id: "semaphore",
section: "pse",
projectStatus: ProjectStatus.ACTIVE,
content,
image: "semaphore.webp",
previousBrandImage: "semaphorePrevious.jpg",
license: "MIT",
name: "Semaphore",
links: {
github: "https://github.com/semaphore-protocol",
website: "https://semaphore.pse.dev/",
telegram: "https://semaphore.pse.dev/telegram",
twitter: "https://twitter.com/SemaphoreDevs",
},
tags: {
keywords: [
"Anonymity/privacy",
"Social",
"Identity",
"Transaction privacy",
"Voting/governance",
"Reputation",
"Education",
"Scaling",
"Key management",
"Other (group membership)",
],
themes: ["build"],
types: ["Legos/dev tools", "Lego sets/toolkits", "Infrastructure/protocol"],
builtWith: ["zk-kit", "circom", "snarkjs"],
},
}