From b39555b28d1a7d04973e31a13d92f79638278cb0 Mon Sep 17 00:00:00 2001 From: Daehyun Paik Date: Tue, 24 Jan 2023 19:44:00 +0100 Subject: [PATCH 1/2] docs: add CI status badge to README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index fd5992ce..aa49c0e1 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # MPC Phase2 Suite +[![CI](https://img.shields.io/github/actions/workflow/status/quadratic-funding/mpc-phase2-suite/test-ci-prod.yaml?label=CI)](https://github.com/quadratic-funding/mpc-phase2-suite/actions/workflows/test-ci-prod.yaml) + The Multi-Party Computation suite of tools for conducting zkSNARK Phase 2 Trusted Setup ceremonies. ## Problem Statement From 6faa0fc03302ad881ce574475f4f19f111e0444b Mon Sep 17 00:00:00 2001 From: omahs <73983677+omahs@users.noreply.github.com> Date: Thu, 9 Feb 2023 09:51:44 +0100 Subject: [PATCH 2/2] Fix: typos Fix: typos --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index aa49c0e1..e124444f 100644 --- a/README.md +++ b/README.md @@ -5,15 +5,15 @@ The Multi-Party Computation suite of tools for conducting zkSNARK Phase 2 Trusted Setup ceremonies. ## Problem Statement -For production use, Groth16 zk-SNARK circuits require a MPC (Multi-Party Computation) Trusted Setup ceremony to generate the parameters that can kick-off zkSNARKs-based systems. Any Trusted Setup is organized in two subsequent steps: Phase 1 and Phase 2. The Phase 1 is universally reusable in any point of contribution as input for any zkSNARKs Phase 2 which must be done for each individual circuit. +For production use, Groth16 zk-SNARK circuits require a MPC (Multi-Party Computation) Trusted Setup ceremony to generate the parameters that can kick off zkSNARKs-based systems. Any Trusted Setup is organized in two subsequent steps: Phase 1 and Phase 2. The Phase 1 is universally reusable in any point of contribution as input for any zkSNARKs Phase 2 which must be done for each individual circuit. -The process of conducting Phase 1 and 2 is more or less similar. There always be a coordinator and multiple participants alternating in sequential rounds. Each participant performs one or more rounds at a time where the coordinator decides the order of the participants. Ipotetically, there can be an indefinite number of rounds, but at a certain point of time the ceremony ends and the proving/verifying keys are extracted for the specific circuit. +The process of conducting Phase 1 and 2 is more or less similar. There always be a coordinator and multiple participants alternating in sequential rounds. Each participant performs one or more rounds at a time where the coordinator decides the order of the participants. Hypothetically, there can be an indefinite number of rounds, but at a certain point in time the ceremony ends and the proving/verifying keys are extracted for the specific circuit. -Basically, the ceremony starts when the coordinator generates and publish in a public accessible repository a challenge file. The first participant downloads the `challenge` file, generate some entropy (_toxic waste_), runs a computation to produce a response file. Then, the participant publish the contribution file and notifies the coordinator. After that, the coordinator produces a `new_challenge` file based on the first participant contribution result and pass the baton to the next participant. The process repeats indefinitely until the coordinator decides to stop the ceremony. +Basically, the ceremony starts when the coordinator generates and publishes in a publicly accessible repository a challenge file. The first participant downloads the `challenge` file, generates some entropy (_toxic waste_), runs a computation to produce a response file. Then, the participant publishes the contribution file and notifies the coordinator. After that, the coordinator produces a `new_challenge` file based on the first participant contribution result and pass the baton to the next participant. The process repeats indefinitely until the coordinator decides to stop the ceremony. The go-to goal of the ceremony is to have at least one party behaving honestly, because as long as he/she is not compromised (i.e., discards the toxic waste), the entire ceremony must be considered trustworthy. This is one of the main reasons why we need a trusted MPC setup: as the number of participants increases, the more you can be sure that at least one is honest! 😇 -In last few years different ceremonies have been performed with different tools that automate processes and simplify ceremony coordination and verification. Previous ceremonies were conducted mainly in browser-based ecosystems,taking advantage of third-party services for authentication and hosted DB solutions to get rid of the Coordinator role. Despite this, circuits are now becoming larger and larger in size. Therefore, the key issue lies in the different configurations with several orders of magnitude in size (i.e., constraints) of the circuits. In fact, some new versions of protocols (e.g., MACI) easily exceed one million constraints per circuit for different input variations. +In last few years different ceremonies have been performed with different tools that automate processes and simplify ceremony coordination and verification. Previous ceremonies were conducted mainly in browser-based ecosystems, taking advantage of third-party services for authentication and hosted DB solutions to get rid of the Coordinator role. Despite this, circuits are now becoming larger and larger in size. Therefore, the key issue lies in the different configurations with several orders of magnitude in size (i.e., constraints) of the circuits. In fact, some new versions of protocols (e.g., MACI) easily exceed one million constraints per circuit for different input variations. Consequently, Our solution attempts to be a ready-to-use solution for performing a single ceremony for multiple large circuits in a non browser-based environment while maintaining all the advantages in terms of simplicity and coordination automation. @@ -24,7 +24,7 @@ The idea is to have a NodeJS CLI published as NPM package and use Firebase Cloud ![alt text](https://i.imgur.com/CqYHWto.jpg) ### Actors -* __Coordinator__: an individual responsible for conducting and monitoring the ceremony. Basically, the coordinator have to prepare and conduct each step of the Phase 2 ceremony, from beginning to end. +* __Coordinator__: an individual responsible for conducting and monitoring the ceremony. Basically, the coordinator has to prepare and conduct each step of the Phase 2 ceremony, from beginning to end. * __Participant__: an individual who wants to contribute to the ceremony. The participant computes the contribution locally on their machine, generates an attestation, and makes it publicly available to everyone. ### Components @@ -33,7 +33,7 @@ The idea is to have a NodeJS CLI published as NPM package and use Firebase Cloud ## Getting Started -### Prerequisities +### Prerequisites You need to have the following installed: git >= 2.25.1