Join the EthStorage V1 Trusted Setup Ceremony

Welcome to the EthStorage V1 Trusted Setup Ceremony!
This ceremony is conducted for our Groth16 zk-SNARK circuits, which are integral to EthStorage’s proof-of-storage algorithm.
Every participant makes the network stronger; your contribution helps safeguard the transparency, decentralization, and long-term security of EthStorage for the entire community.
This guide provides step-by-step instructions to help you contribute to the ceremony, which will take place from August 13 to 22, 2025 (UTC).
Introduction
EthStorage is a modular and decentralized storage Layer 2 that offers programmable key-value storage powered by DA. It enables long-term DA solutions for Rollups and opens up new possibilities for fully on-chain applications like games, social networks, AI, etc.
In EthStorage, each data replica must be uniquely encoded using the storage provider’s Ethereum address. This prevents malicious actors from pretending to store multiple replicas by reusing the same replica. The encoding must be SNARK-friendly so that the on-chain verifier can efficiently validate sampling proofs on encoded BLOBs. To generate secure and auditable zk-SNARK parameters for these circuits, we run a trusted setup ceremony using p0tion, a decentralized and auditable trusted setup coordination tool.
Why Is a Trusted Setup Necessary?
EthStorage leverages zk-SNARKs to prove that off-chain blob data is correctly encoded and stored. To make these proofs trustworthy, we need to generate specific cryptographic parameters through a process called a trusted setup.
The risk in any trusted setup lies in the private randomness ("toxic waste") used during generation. If this secret is not properly discarded, someone could potentially forge proofs. To mitigate this risk, we run a multi-party trusted setup using p0tion: as long as one participant is honest and destroys their secret, the entire system remains secure.
The trusted setup ensures that:
- No single participant has full control over the randomness used in the setup.
- The entire process is transparent and can be independently audited.
- The ceremony was specifically designed for the circuits used by EthStorage.
If you'd like to dive deeper or explore examples of trusted setup ceremonies, here are some helpful resources:
- How do trusted setups work? – A great overview by Vitalik Buterin
- On-Chain Trusted Setup Ceremony – Explains how trusted setup ceremonies can be performed on Ethereum using smart contracts for decentralized, permissionless coordination.
- Announcing the Perpetual Powers of Tau Ceremony – We used this for the Phase 1 portion of our setup
- The Power of Tau or: How I Learned to Stop Worrying and Love the Setup – A podcast episode that explains the background and importance of Powers of Tau ceremonies in a fun and approachable way
Requirements for Participation
- Operating System
A Linux or macOS system, or Windows Subsystem for Linux 2 (WSL2) if you are on Windows.
- GitHub Account
Your GitHub account must be active and meet the following criteria:
- Your account must be at least a month old.
- Your account must have at least one public repository.
- Your account must follow at least 5 GitHub accounts and have at least 1 follower.
- You must allow the ceremony tools to read and write GitHub Gists on your account.
- Internet Connection
A stable and reliable internet connection is required. The most common cause of failure is a timeout due to slow or unstable uploads. To avoid this, ensure you have a good upload bandwidth while participating in the ceremony.
- Global Dependencies
- Node.js version 18 or higher.
- NPM version 9.2.0 or higher.
Dependency Installation
To run the CLI application and contribute to the ceremony, you’ll need Node.js version 18 or higher.
The recommended way to install and manage Node.js versions is by using Node Version Manager (NVM).
You can install nvm by running the following command in your terminal:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source .bashrc
Then use the following commands to install and switch to Node.js 18.
nvm install 18
nvm use 18
Contributing to the Ceremony
Step 1: Create a Temporary Working Directory
First, create a temporary directory to run the ceremony from (for example, in your home directory). This keeps your working environment clean and isolated from other projects.
mkdir ~/trusted-setup-tmp && cd ~/trusted-setup-tmp
Step 2: Install the Phase2 CLI
To participate in the ceremony, you’ll need to install the Phase2 CLI, a command-line tool used for contributing. Installing it globally using npm will make the phase2 command available from anywhere in your terminal.4
npm install -g @p0tion/phase2cli
Step 3: Authenticate with GitHub
To contribute to the ceremony, you’ll need to authenticate with a valid GitHub account. Make sure your account meets the requirements. Run the following command in your terminal:
phase2cli auth
This will prompt you to open a browser and visit https://github.com/login/device like the following.
Copy and paste the provided authentication code into the page. You’ll be asked to authorize the p0tion application to access your GitHub account’s Gists feature. Click "Authorize ethstorage" to continue.
Once GitHub confirms with a "Congratulations, you're all set!" message, return to the terminal to proceed with your contribution.
Step 4: Contribute to the Ceremony
You're now ready to contribute! Run the following command in your terminal:
phase2cli contribute -c ethstorage-v1-trusted-setup-ceremony
During this step, you’ll be asked to provide entropy (also called “toxic waste”) — a random secret used to ensure the security of the setup. You can either:
- Let the CLI generate it automatically, or
- Enter it manually: type any combination of letters, numbers, or symbols — of any length.
⚠️ This entropy should never be reused or saved. It's meant to be forgotten immediately after use.
Notes:
- This step may take some time, depending on your internet speed and the current queue of contributors.
- If your connection is interrupted or an error occurs, simply re-run the same command — it will pick up from where it left off.
After completing your contribution, you will be invited to share a message on Twitter/X or your preferred social platform. We appreciate your support! 🎉
Step 5: Cleanup & Logout
After completing your contribution to the ceremony, it’s recommended to clean up your local files and revoke GitHub authorization for security:
phase2cli clean
phase2cli logout
Additionally, you can delete the temporary working directory you created earlier if you no longer need it. This helps keep your system tidy and protects your credentials.
rm -rf ~/trusted-setup-tmp
FAQs
Q: I received the message “Your contribution took longer than the estimated time and you were removed as the current contributor.” What should I do?
A: If your connection is slow, some contribution steps may take longer than expected, which can lead to a timeout, often during file download and upload. When this happens, you are automatically removed as the current contributor. You will need to wait for the predefined timeout period to expire before you can rejoin and continue your contribution. Once the timeout has passed, you may restart from the same circuit. To avoid repeated timeouts, we recommend switching to a machine with a faster and more stable internet connection before attempting to try again.
Here are some timeout examples:
Q: I received the message “The waiting time (timeout) to retry the contribution has not yet expired.” What should I do?
A: After a timeout occurs—usually due to a slow or unstable connection, or disk availability issues—you must wait for the predefined timeout period to expire before you can retry your contribution. Attempting to rejoin before this period ends will result in this message. Please wait until the timeout has fully passed, then try again. To improve your chances of a successful contribution, we recommend switching to a machine with a faster and more stable internet connection and ensuring there is sufficient free disk space for the process to complete successfully.
Links and Resources
Our Ceremony: https://ceremony.pse.dev/projects/EthStorage%20V1%20Trusted%20Setup%20Ceremony
p0tion Ceremony Portal: https://p0tion.super.site/ce8f7047468b41239dc512919644535c
EthStorage Receives Ethereum Foundation Grant: https://blog.ethereum.org/2023/02/14/layer-2-grants-roundup#-cryptography-and-zero-knowledge-proofs
If you have any questions or need help, feel free to reach out to us on Discord — we're happy to support you!
To learn more about EthStorage and connect with our community, visit our community channels:
- EthStorage Website: https://ethstorage.io/
- Twitter: https://x.com/EthStorage
- Discord: https://discord.com/invite/xhCwaMp7ps
- Telegram: https://t.me/ethstorage