Ceremony Infrastructure
To facilitate a secure, transparent, and accessible trusted setup ceremony, we use a suite of open-source tools developed and battle-tested by the Ethereum community.
P0tion: The Ceremony Engine
The backbone of our ceremony is P0tion, a project developed by the Ethereum Foundation's Privacy & Scaling Explorations (PSE) team. P0tion is an open-source, audited, and maintained suite of tools specifically designed for coordinating Phase 2 trusted setup ceremonies. Its use by other high-profile projects in the ecosystem gives us confidence in its security and reliability.
P0tion's role is to manage the sequential and logistical aspects of the ceremony. Since each contribution must build upon the previous one in a strict sequence, P0tion's coordinator software handles:
Contributor Queue: It manages a queue to give each participant a turn to contribute.
Scheduling and Storage: It schedules contributions, provides temporary web storage for sharing the intermediate states, and gives the latest set of parameters to the current contributor.
Verification: After a contribution is uploaded, P0tion runs a verification step to ensure it was computed correctly and is not corrupt before passing it to the next person in the queue.
It is important to note that the most critical part of the process—the generation of your secret randomness—happens entirely on your own machine. P0tion facilitates the ceremony, but it never has access to your secret.
snarkjs: The Core Cryptographic Library
Under the hood, both the web-based and command-line contribution tools utilize snarkjs. Developed by Iden3 as a core component of the Circom 2 framework, snarkjs
is a foundational JavaScript library for all things related to zk-SNARKs. It contains the necessary cryptographic functions to take the latest parameters, apply your secret randomness, and generate your contribution to the ceremony. While you may not interact with snarkjs
directly, it is the engine performing the critical cryptographic computations on your machine.
How to Contribute: Two Paths for Participation
We want to make contributing as easy as possible for everyone, regardless of technical skill. To that end, you can participate through two primary methods:
DefinitelySetup (Web Interface): For most users, this is the simplest way to contribute. DefinitelySetup provides a user-friendly web-based frontend that guides you through the process of generating your randomness and submitting your contribution directly in your browser.
phase2cli (Command-Line Tool): For more technical users who prefer a command-line environment, the
phase2cli
tool offers a direct way to participate. This allows for more control and transparency over the contribution process.
Authentication, Verification, and Sybil Resistance
To ensure the integrity of the ceremony and that each contribution is publicly attributable, we use the following mechanisms:
GitHub Authentication: To participate, you will need to authenticate with your GitHub account. This serves as our initial method for sybil resistance, helping to prevent a single user from making an excessive number of contributions and providing a basic level of identity.
Public Attestation: After you submit your contribution, a hash of it will be posted publicly. This allows you and others to verify that your specific contribution was included in the final parameters.
Future Enhancements: While GitHub provides a solid foundation, we are committed to leveraging Galactica's native capabilities. In the future, we plan to enhance our sybil resistance mechanisms by integrating on-chain Galactica Network accounts and a reputation system based on Soul-Bound Tokens (SBTs). This will tie participation more closely to genuine identity and engagement within the Galactica ecosystem.
Last updated
Was this helpful?