Zcash’s next major upgrade, codenamed Sapling, will be activated later this year. One of our final goals before activation is the completion of a multi-party computation ceremony which produces the public parameters that our shielded transactions depend on.

We’re happy to announce the completion of this ceremony! In total, nearly 200 people contributed either directly to the ceremony or to its development, coordination and review. We’re including the final parameters in our 2.0.0 release of Zcash later this week.

Images from three Powers of Tau participants: (from left) Neal Jayu, Hudson Jameson and Andrew Miller and Ryan Pierce

Ceremonies

Zcash’s underlying zero-knowledge proofs require some system parameters to be constructed. If these parameters are compromised, an adversary could create counterfeit Zcash coins. In our original launch of Zcash, we defended against this by deploying a multi-party computation protocol. The protocol has the property that only one of its participants must be honest in order for the final parameters to be secure.

In the original ceremony, we only had six participants due to scalability issues of the protocol. In addition, due to the sensitivity of the process to protocol aborts, participants did not apply a wide diversity of individual countermeasures to defend against compromise.

Last year, we published a new protocol for constructing the parameters which is designed to scale to a large number of participants. Unlike the original protocol, a participant can contribute to the ceremony at any time, and they do not need to be in custody of secrets during the entire duration of the ceremony.

Additionally, the new protocol is split into two pieces: a circuit-agnostic phase called the Powers of Tau, and a circuit-specific phase that we announced several months ago. This allows the broader public to take advantage of the parameters we produced in order to build their own zk-SNARK protocols with scalable MPCs.

Powers of Tau

The Zcash Foundation facilitated and hosted the Powers of Tau ceremony, which took place between November 2017 and April 2018. It accepted 87 contributions from cryptographers and members of the community. Only one of these contributions needs to be honestly constructed for the parameters in this phase to be secure.

The diversity of this ceremony was significant. Participants used a wide variety of hardware and operating systems, and many destroyed their hardware afterward. Anyone was allowed to participate either by asking directly or publicly requesting to participate via a mailing list.

Most of the participants wrote about their experience and the unique countermeasures they deployed. Andrew Miller and Ryan Pierce famously flew in a plane with radioactive material to seed their random number generator. Filippo Valsorda wrote an independent implementation of the ceremony code in Go. Devrandom developed a trusted build environment for the Rust code.

You can read more about this ceremony here, along with instructions for how to verify its results.

Sapling MPC

The Zcash Company hosted the MPC for constructing Sapling’s final zk-SNARK parameters. We announced the ceremony in May and accepted contributions through early August. In all, this ceremony accepted over 90 contributions, of which only one must be honestly constructed for the success of this phase.

The final parameters are now available here. You can verify the parameters using the verify utility in the sapling-mpc repository. Just as in the Powers of Tau ceremony, we applied a random beacon which you can read about in the zapps-wg mailing list.

All of the participants can run this verifier and check that it outputs a hash that their software produced when they contributed to the ceremony. This allows them to confirm that the final parameters include their contribution. These hashes are also listed, along with the participants, here.

Conclusion

We’re now ready to move ahead with the Sapling upgrade. The parameters produced by these ceremonies are historic: The Powers of Tau and the Sapling MPC are the largest multi-party computations ever performed.

We’d like to thank the community for participating and improving the quality and security of Zcash and all protocols that build on top of zk-SNARKs.

We’d also like to thank Jason Davies and Ian Munoz for their efforts in coordinating the ceremonies, and the Zcash Foundation for hosting the Powers of Tau.