or
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up
Syntax | Example | Reference | |
---|---|---|---|
# Header | Header | 基本排版 | |
- Unordered List |
|
||
1. Ordered List |
|
||
- [ ] Todo List |
|
||
> Blockquote | Blockquote |
||
**Bold font** | Bold font | ||
*Italics font* | Italics font | ||
~~Strikethrough~~ | |||
19^th^ | 19th | ||
H~2~O | H2O | ||
++Inserted text++ | Inserted text | ||
==Marked text== | Marked text | ||
[link text](https:// "title") | Link | ||
 | Image | ||
`Code` | Code |
在筆記中貼入程式碼 | |
```javascript var i = 0; ``` |
|
||
:smile: | ![]() |
Emoji list | |
{%youtube youtube_id %} | Externals | ||
$L^aT_eX$ | LaTeX | ||
:::info This is a alert area. ::: |
This is a alert area. |
On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?
Please give us some advice and help us improve HackMD.
Syncing
xxxxxxxxxx
Multi-Party Trusted Setup Ceremony for clr.fund
Kirill Goncharov, Koh Wei Jie
Goals and context
Minimal Anti-Collusion Infrastructure (MACI) requires a trusted setup ceremony to be secure. For clr.fund to use MACI's zk-SNARK circuits, it must first generate a proving key and verifying key per circuit via a process known as a trusted setup. The process by which these keys are generated involves the generation of toxic waste, which is data that must be securely discarded so that no-one can generate proofs that are fake but pass verification.
If clr.fund performs this trusted setup by themselves, users have no way to know that they have retained or discarded the toxic waste, which will reduce trust in the system. As such, it is necessary to perform the trusted setup in a way that convinces as many external parties as possible that the toxic waste is discarded. The best way to do this is to use a multi-party trusted setup ceremony. Such a ceremony involves multiple participants. Each participant receives a challenge file from a coordinator, uses it to create a response file, and submits it to the coordinator, who then creates a new challenge file for the next participant in line. As long as just one participant discards their toxic waste, then the proving and verifying keys generated from the final challenge file are secure.
The more participants in the ceremony, the lower the probability that all of them collude to retain and share their toxic waste. As such, clr.fund needs to attract as many participants as possible. Moreover, to minimise the chance of collusion, these participants should be as diverse as possible. Ideally, at least one participant should use an alternative implementation of the trusted setup ceremony software, to reduce the risk of compromised tooling.
All the response files should be public, and anyone may verify that they are valid. The coordinator is therefore unable to alter any contributions, and only needs to be trusted to not censor them.
Ultimately, the goals of the multi-party trusted ceremony is to convince an informed public of the security of the zk-SNARK proving and verifying keys generated for clr.fund.
Future version of MACI may use zero-knowledge proving systems that do not require a trusted setup, but this is contingent on the availability of developer tools for said systems.
Ceremony phases
zk-SNARK trusted setups involve two phases. Phase 1 applies to all circuits, and phase 2 is circuit-specific. This document refers to phase 2 only. This is a circuit-specific trusted setup. clr.fund needs to perform one trusted setup per circuit, and there are two circuits. Fortunately, phase 1 has already been taken care of.
Hermez Network selected the 54th contribution of the Perpetual Powers of Tau Ceremony (PPOT) for their zk-rollup circuits, and ran the prepare-phase-2 process on it. clr.fund can reuse the output of this process as the starting point of its own phase 2 ceremony.
If clr.fund chooses not to use Hermez Network's phase 1 output, then they have to do the following:
The easier method is to verify and use Hermez Network's phase 1 output.
clr.fund's phase 2 ceremony
clr.fund needs the following the run a phase 2 ceremony:
setup-mpc-server
. Currently, each server supports a single circuit, but MACI uses two circuits. If the server does not support multiple circuits by the time that the ceremony begins, the easiest way to proceed is to have two servers.A user needs to do the following to participate in the ceremony:
For reference: Semaphore's phase 2 ceremony
Please refer to this participant guide to learn about Semaphore's phase 2 ceremony.
Also read the instructions for ceremony providers and general instructions for participants.