Skip to content

Commit

Permalink
Announce Trusted Setup V4 ceremony (#794)
Browse files Browse the repository at this point in the history
* chore(website): add trusted setup ceremony on the website

* docs(docs): add trusted setup ceremony instructions on documentation

* chore(docs): add candidate plan for prod ceremony

re n

* fix(docs): rename file to avoid mismatching hyphens

* style(website): follow style guide for hover

* fix(website): wrong link to ceremony

* fix(docs): switch emoji
  • Loading branch information
0xjei authored Jun 11, 2024
1 parent 5d513f9 commit 62b6b17
Show file tree
Hide file tree
Showing 12 changed files with 110 additions and 10 deletions.
2 changes: 1 addition & 1 deletion apps/docs/docusaurus.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ const config: Config = {
announcementBar: {
id: "semaphore-v4-beta",
content:
'<b>Semaphore V4-beta is out 🎉 <a href="/getting-started">Try it out</a> and let us know for any feedback on <a href="https://semaphore.pse.dev/discord" target="_blank">Discord</a> or <a href="https://github.com/orgs/semaphore-protocol/discussions" target="_blank">Github</a>!</b>',
'<b>Semaphore V4-beta is out 🎉 <a href="/getting-started">Try it out</a> and contribute to the <a href="/trusted-setup">Trusted Setup ceremony</a>. Let us know for any feedback on <a href="https://semaphore.pse.dev/discord" target="_blank">Discord</a> or <a href="https://github.com/orgs/semaphore-protocol/discussions" target="_blank">Github</a>!</b>',
backgroundColor: "#dde6fc",
textColor: "#000000"
},
Expand Down
2 changes: 1 addition & 1 deletion apps/docs/versioned_docs/version-V4-beta/credits.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
sidebar_position: 11
sidebar_position: 12
---

# Credits
Expand Down
2 changes: 1 addition & 1 deletion apps/docs/versioned_docs/version-V4-beta/faq.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
sidebar_position: 10
sidebar_position: 11
---

# FAQ
Expand Down
2 changes: 1 addition & 1 deletion apps/docs/versioned_docs/version-V4-beta/glossary.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
sidebar_position: 7
sidebar_position: 8
---

# Glossary
Expand Down
2 changes: 1 addition & 1 deletion apps/docs/versioned_docs/version-V4-beta/resources.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
sidebar_position: 8
sidebar_position: 9
---

import Articles from '@site/src/components/Articles';
Expand Down
2 changes: 1 addition & 1 deletion apps/docs/versioned_docs/version-V4-beta/subgraph.mdx
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
sidebar_position: 6
sidebar_position: 7
---

import RemoteCode from '@site/src/components/RemoteCode';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
---
sidebar_position: 9
sidebar_position: 10
---

import Tabs from "@theme/Tabs"
Expand Down
50 changes: 50 additions & 0 deletions apps/docs/versioned_docs/version-V4-beta/trusted-setup.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
---
sidebar_position: 6
---

# Trusted Setup

gm, everyone 😎 we are excited to announce the upcoming Multi-Party Computation (MPC) Phase 2 Trusted Setup ceremony for the Semaphore V4 circuit - this is crucial for establishing a robust security foundation for the cryptographic protocol 🎉

The ceremony will take place from **June 10** to **July 10**. If all goes to plan, finalization should take place on **July 15** with the announcement of the final beacon on **July 12**.

## Securing Semaphore V4

To contribute to this ceremony, you will just need your browser!

1. Visit [ceremony.pse.dev](https://ceremony.pse.dev/projects/Semaphore%20V4%20Ceremony).
2. Login and associate your **Github** account.
3. Hit the `contribute` button and wait for your turn.

nb. you will find your contribution certificate on your GitHub gists - and, if all goes wrong or you feel lost, there are instructions on site or post a message on Semaphore / PSE discord.

## What You Need to Know About the Ceremony

### Your Role

Many zero-knowledge proof systems, including those based on the Groth16 scheme, require this layer of randomness, often referred to as "toxic waste” which must remain unknown to anyone to maintain the integrity of the zero-knowledge proof system. Trusted setups rely on a 1 of N honest participant assumption. As long as just one participant actually discards their “toxic waste”, the proof system will be secure. You can be that one participant by providing your unique entropy with your contribution, making the ceremony unpredictable and unbiased, safeguarding the entire process against potential vulnerabilities.

### Why It Matters

Trusted setups are crucial as they generate a set of parameters necessary to initiate SNARK-based systems. Through a series of computations performed by various participants. This sequence involves downloading previous contributions, adding generated randomness, and uploading the results of your contribution. These contributions are then integrated into the final artifacts crucial for proof generation/verification.

### Semaphore Circuit

The [Semaphore circuit](https://github.com/semaphore-protocol/semaphore/blob/main/packages/circuits/src/semaphore.circom) centered around the creation of the _Semaphore identity_ and _identity commitment_, includes verification processes, and facilitates the generation of the _nullifier_. We are going to support `MAX_DEPTH` from 1 to 32 - therefore you will have to contribute to 32 variants of the same circuit. Since the constraints will range from 2k to less than 10k with very small artifacts size (≤ 8mb x contribution), the waiting and contribution time shouldn’t be much!

### Transparency and Fairness

We are committed to transparency on ceremony setup, execution, finalization, and later verification. Our primary goal is to **engage as many contributors as possible** to ensure the circuit is **secure** and **production-ready**. To this end, the ceremony is designed to _maximize contributor inclusion_, monitor & troubleshoot whenever is needed, _lower the entry barriers_, _making contributiong as effortless as possible_. A key step towards achieving these goals is running the ceremony w/ [p0tion](https://github.com/privacy-scaling-explorations/p0tion): an in-house developed, open-source, battle-tested tool that is fully equipped to meet our needs.

### Ceremony Settings

To protect the ceremony from sybils, in order to contribute you must have a GitHub account such that you have: 1 public repository, at least 1 follower, following at least 5 other accounts and, your account is at least 1 month old. While to protect from fake contributors or people hanging due to connection/machine resources, we are going to set a 10 minutes time-window on contributions (+ 1 hour verification) - after this amount of time, you will be kicked out and will have to wait **1 day** before you can contribute again.

## Troubleshooting

- If you have been idle longer than expected, it may be that the current contributor has been blocked for some reason. Do not worry, the maximum wait in this case is one hour, after which you will be able to continue contributing.

### Learn more about Trusted Setups

- [How Do Trusted Setups Work? - Vitalik](https://vitalik.eth.limo/general/2022/03/14/trustedsetup.html)
- [p0tion FAQs](https://p0tion.super.site/faqs#block-cebca23ebb514c2ea096ad44d4833356)
20 changes: 18 additions & 2 deletions apps/website/src/app/layout.tsx
Original file line number Diff line number Diff line change
@@ -1,9 +1,10 @@
import { Box, Container } from "@chakra-ui/react"
import { Box, Container, Link } from "@chakra-ui/react"
import type { Metadata } from "next"
import Script from "next/script"
import Footer from "../components/Footer"
import Navbar from "../components/Navbar"
import Providers from "./providers"
import Banner from "@/components/Banner"

export const metadata: Metadata = {
title: "Semaphore",
Expand All @@ -30,9 +31,24 @@ export default function RootLayout({ children }: { children: React.ReactNode })
<html lang="en" suppressHydrationWarning>
<body suppressHydrationWarning>
<Providers>
<Banner>
Semaphore V4
<Link
_hover={{
textDecoration: "underline",
textDecorationColor: "primary.600"
}}
href="https://ceremony.pse.dev/projects/Semaphore%20V4%20Ceremony"
ml="1"
isExternal
>
<b>Trusted Setup</b>
</Link>{" "}
ceremony is open for contributions until <b>July 10</b>.
</Banner>
<Navbar />
<Container maxW="1440px" px={{ base: "5", md: "10" }}>
<Box h="96px" />
<Box h="146px" /> {/* Adjusted to account for TopBanner and Navbar */}
{children}
<Footer />
</Container>
Expand Down
28 changes: 28 additions & 0 deletions apps/website/src/components/Banner.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
import { Box, Text } from "@chakra-ui/react"

interface BannerProps {
children: React.ReactNode
}

export default function Banner({ children }: BannerProps) {
return (
<Box
bg="darkBlueBg"
py="3"
textAlign="center"
borderBottom="1px solid"
color="text"
fontSize="sm"
position="fixed"
top="0"
left="0"
right="0"
zIndex="2"
display="flex"
justifyContent="center"
alignItems="center"
>
<Text>{children}</Text>
</Box>
)
}
2 changes: 1 addition & 1 deletion apps/website/src/components/Navbar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ export default function Navbar() {
const { isOpen, onOpen, onClose } = useDisclosure()

return (
<HStack zIndex="1" py="7" top="0" left="0" right="0" position="fixed" bgColor="darkBlueBg">
<HStack zIndex="1" py="7" top="42px" left="0" right="0" position="fixed" bgColor="darkBlueBg">
<Container maxW="1440px" px={{ base: "5", md: "10" }}>
<HStack justify="space-between">
<Link as={NextLink} href="/">
Expand Down
6 changes: 6 additions & 0 deletions apps/website/src/data/events.json
Original file line number Diff line number Diff line change
@@ -1,4 +1,10 @@
[
{
"name": "Trusted Setup ceremony",
"date": "June 10 - July 10, 2024",
"description": "The Semaphore team will perform the Phase 2 MPC Trusted Setup ceremony to secure V4 circuit variants from 1 to 32 tree depths.",
"link": "https://docs.semaphore.pse.dev/trusted-setup"
},
{
"name": "ETHRome",
"date": "Oct 4-6, 2024",
Expand Down

0 comments on commit 62b6b17

Please sign in to comment.