The next phase of Union’s Roadmap to Mainnet has begun. The Trusted Setup Ceremony is an opportunity for everyone to contribute to Union, and ensure Union’s ZK-based interoperability is secure and decentralized.
• Visit ceremony.union.build to contribute to the ceremony.
Read on to learn about multi-party computation (MPC), Union’s Trusted Setup Ceremony, and how to contribute.
What Is a Trusted Setup Ceremony?
A Trusted Setup Ceremony, also known as multi-party computation (MPC), is a cryptographic process required for zero-knowledge proving systems like Groth16 (used by Union) to function securely. It generates public parameters that are used to create and verify proofs without revealing sensitive data. This ceremony involves multiple participants to ensure no-one can compromise the system’s security. It only takes one honest contributor for the proving system to be secure.
Why Is This Important?
The Trusted Setup Ceremony is crucial because it ensures the integrity and security of the zero-knowledge proofs used in the system. If the setup is compromised, malicious actors could potentially generate a fraudulent proof, undermining the protocol. By involving many unrelated and geographically distributed parties in the ceremony, it minimizes the risk of the entire ceremony consisting of bad actors.
How Does the Ceremony Work?
The ceremony involves multiple participants contributing randomness to generate the system’s public parameters. Each participant adds randomness, and after their contribution, their part of the randomness is securely discarded. As long as at least one participant remains honest and their contribution is kept secret, the parameters are considered secure for use in the proving system.
The contribution is done through ceremony.union.build, where contributors will be guided through running a dockerized application in their terminal that generates and submits the randomness. Both the ceremony website and docker app are fully open source and reproducible.
As part of the contribution, a GPG key is generated by the MPC client. The client uses this GPG key to sign the contribution before sending it to the MPC Coordinator. Contributors store their private GPG key, so that after the ceremony they can prove that they are the ones who generated their contribution.
After completing the ceremony, participants will have the option to publicly attest to their contribution. Please tweet your attestation to let the world know that Union’s ZK-enabled interoperability is decentralized, trustless, and secure.
Two Phases: Private & Public
The Union Trusted Setup Ceremony will have two phases.
First will be the private phase. The purpose of the private phase is to allow protocols and contributors who are building with Union to participate. This aligns our builder community with Union by allowing them to contribute directly to the system’s security. It also allows the core team to thoroughly test the ceremony’s user flow ahead of the second phase.
If you’re not part of the private phase, you can join the waitlist at ceremony.union.build. Anyone on the waitlist will receive an email 12-18 hours before the start of the second phase, also known as the public phase. This phase will be open to anyone, and will be first come, first serve. Those on the waitlist will have advanced notice of when phase two will start, but they won’t have priority. Make sure you’re online when the queue opens up. It will fill up quickly.
Only one person is able to perform the ceremony at a time, which means there are a finite number of contribution slots. Not everyone in the queue will get the opportunity to contribute.
Explainer – How To Contribute to the Ceremony
Full steps for contributing to the Union Trusted Setup Ceremony are below. If you have any issues, join the Union Discord and create a support ticket.
NOTE: This guide is for users running macOS and Chrome or Firefox. Linux and Brave users can contribute as well, though different or additional steps may be required. Streamlined instructions for all supported operating systems and browsers are included in the ceremony—this is intended to be a more detailed guide. Windows, Windows Subsystem for Linux (WSL), and mobile devices are not supported.
You will need to leave your computer online and awake, with OrbStack and Terminal running, and the ceremony webpage open for the entire time you are in queue or actively contributing to the ceremony. Follow @union_build for updates on the public phase.
Update: A video tutorial is now available.
Go to ceremony.union.build.
Click “GitHub” or “Google” to log in with your GitHub or Google account.
Click Authorize.
Click your operating system, Linux or macOS.
If you selected Linux, cease reading this guide and follow the instructions on the ceremony pages. If you selected macOS, continue with this guide.
Go to orbstack.dev.
Click “Get OrbStack” or “Download”.
Select Apple Silicon or Intel.
If you don’t know which one you have, click the Apple logo in the menu bar, then click “About This Mac”.
Check “Chip”. If it starts with “Apple”, then you have Apple Silicon. If not, you have Intel.
Wait for the download to complete.
Double click on the .dmg file in your Downloads folder.
Drag OrbStack > Applications
Open Launchpad (or press Cmd + Space) and type OrbStack. Press Enter.
When it prompts you that OrbStack is an app downloaded from the Internet, select “Open”.
A screen will pop up. Input your Mac password to install Helper.
On the Welcome to OrbStack screen, select “Next”.
Select Docker.
Leave OrbStack running.
When you’re ready, click “Copy command” at the bottom of the screen.
Open Launchpad (or press Cmd + Space) and type Terminal. Press Enter.
Paste (Cmd + V) the command into the terminal. Press Enter.
Leave Terminal running.
Return to the browser window.
Click “Generate Code”.
Save the code somewhere, such as in your password manager. Click “I’ve generated and stored my secret” when you’ve done so.
Optional: Input your Union or Cosmos wallet address in the field provided.
If the second phase (the public phase) has already begun, skip this step.
During the first phase, a code is required to contribute. If you have a code, click “Redeem Code” and input your code.
If you don’t have a code, click “Join the waitlist”. You will be emailed at the address you signed in with (Google or GitHub) 12-18 hours before the public phase begins.
You will now enter the queue. If you’re first in the queue, you’ll immediately start contributing and move to the following step.
While you’re in the queue, make sure your computer is on and awake, OrbStack is running, Terminal is running, and the logged-in ceremony.union.build browser tab remains open until after your computer has contributed to the Trusted Setup Ceremony. If you don’t follow all of these steps, you could lose your spot in the queue.
Wait for your computer to contribute to the ceremony. As long as the terminal shows “Awaiting orders…”, you’re still in queue.
Once your computer begins contributing, the browser will switch to “starting contribution”, followed by “contributing”, and finally “verifying”. As long as all necessary programs are running, and the browser tab shows one of these messages, your computer is contributing.
The average time for all phases is 5-30 minutes, and can take as long as 1 hour.
Once you see the Thank You page, you’ve successfully contributed. Congratulations! To publicly attest to your contribution, press the “Tweet your attestation” button to publish your contribution on Twitter/X.
Expand the Union
The Trusted Setup Ceremony is an important step on Union’s road to mainnet. That’s why it’s important to spread the word, so that everyone knows that Union is coming to an ecosystem near them—to every ecosystem.
Be sure to amplify the announcement on Twitter/X.
As you complete your contributions, tweet your attestation to show that Union’s ZK circuit is both secure and decentralized. Union is changing the game with interoperability that’s trustless and decentralized, without compromising on security, speed, or cost. Let’s make sure everyone learns what the Union community is building.