๐Trusted Setup Ceremony
What is a Trusted Setup?
Many zero-knowledge proof systems, including Groth16, require a layer of entropy (randomness) to be applied to circuits in order for the proofs to be secure. ZKP2P uses Groth16, therefore, requires this randomness. The catch, however, is that nobody can know that randomness, which is referred to as โtoxic wasteโ. We must ensure that no one person holds onto the randomness, otherwise the zero-knowledge proof scheme will be broken.
Trusted Setups are those events or ceremonies that one needs to perform to generate the parameters that can kick off SNARK based systems. It is an MPC โ or multiparty computation โ that involves a number of participants sequentially downloading software, running a computation that includes some randomness that they generate and re-uploading their result to be folded into the next participants computation. At the end of this process, there is a hidden parameter that is used to create the keys that are used to create and verify proofs. 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.
Prerequisites
We assume a base level of technical background. In particular, we assume youโve used Node.js /
npm
before and you know your way around a terminal.You are running Mac or Linux. The contributor CLI tool does not natively work on Windows, so if you are on Windows, you will need to run it using WSL. The tool does not support being run inside VMs and Docker containers at the moment.
As a sybil-resistance mechanism, you must have a GitHub account such that:
You have 1 public repository
You have at least 1 follower
You are following at least 5 other GitHub accounts
The account is at least 1 month old
Check your internet connection. Since one of our circuits is somewhat large, we recommend contributors have an upload bandwidth of at least 1 Megabytes per second (~1Mbps).
If youโd like, take a look at the circuits and protocol code here: https://github.com/zkp2p/zk-p2p/
How to Contribute
๐คContributeContributors
We thank the following people for contributing to our trusted setup ceremony so far.
๐ContributorsDisclaimer
The tool weโre using (p0tion) is pretty new, so you may experience issues that prevent your contribution from being completed. While weโll do our best to provide support, we canโt guarantee that it will work for everyone their contribution since most of our bandwidth is being spent on getting the protocol ready for mainnet.
In many cases, if the CLI fails or gets stuck, you can re-run the command and it will fix itself.
Further Reading
Last updated