Skip to content
 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 

Repository files navigation

Semaphore Trusted Setup Ceremony

Semaphore is a zero-knowledge protocol for anonymous signaling on Ethereum, enabling users to prove membership in a group and broadcast signals. Such as votes, endorsements, or messages. Without revealing their identity.

image

The latest ceremony’s running until August 18th 2025.

Contribute

You can contribute to the ceremony using either a web browser or the command-line interface (CLI).

  • Web-browser: Simply connect your github in ceremoy.pse.dev, press on Contribute and wait for your contribution to finish.
  • CLI: Follow the below guide to install and participate the ceremony in a terminal using command-line. This method is way more stable than the web version.

Requirements

Operating System

You need one of these to join the ceremony:

GitHub Account

Your GitHub account must meet the following criteria:

  • At least a month old.
  • At least one public repository.
  • At least following 5 GitHub accounts and have at least 1 follower.
  • Must allow the ceremony tools to read and write GitHub Gists on your account.

Internet Connection

You need a stable internet connection on your local system or a VPS to stay in the ceremony queue for hours, waiting for your turn.


Install Dependecies

  1. Packages:
sudo apt-get update && sudo apt-get upgrade -y

sudo apt install curl screen iptables build-essential git wget lz4 jq make gcc nano automake autoconf tmux htop nvme-cli libgbm1 pkg-config libssl-dev libleveldb-dev tar clang bsdmainutils ncdu unzip libleveldb-dev ca-certificates  -y
  1. Install NVM
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source .bashrc
  1. Install Node.js 18
nvm install 18 
nvm use 18
source ~/.bashrc

Install Ceremony

Step 1. Create a directory in your home folder to run the ceremony from:

mkdir ~/trusted-setup && cd ~/trusted-setup

Step 2: Install CLI:

npm install -g @p0tion/phase2cli

Step 3: Authenticate with GitHub:

To contribute to the ceremony, you’ll need a legit GitHub account.

Run this command in your terminal:

phase2cli auth
  • This will prompt you to open a browser and visit https://github.com/login/device
  • Copy the provided auth code in terminal and paste in the auth page . Click "Authorize" to continue.

Contribute Ceremony

Open a screen

Open a screen so the ceremony keeps going in the background—might take hours before it’s your turn.

  • Screen is useful for VPS, not WSL. If you close the terminal in WSL, your screen session is killed
screen -S semaphore

Contribute to the ceremony

phase2cli contribute -c semaphore-binary-merkle-root-fix
  • You can either hit enter for randomly, or pick manually and type any letter or number yourself.
image

Screen commands

  • Minimize screen: Ctrl+A+D
  • Return to screen: screen -r semaphore
  • Kill ceremony when inside screen: Ctrl+C
  • Kill screen when inside screen: Ctrl+D
  • Kill screen when outside screen: screen -XS semaphore quit
  • screens list: screen -ls

Notes:

  • Contributing may take some time, depending on the number of circuits (32 in this run) and the 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 X or your preferred social platform! 🎉


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

Delete the ceremony folder too if you don’t need it:

rm -rf ~/trusted-setup

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? image

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:

image image

Q: I received the message “The waiting time (timeout) to retry the contribution has not yet expired.” What should I do?

image

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.

About

Detailed guide to contribute to Semaphore trusted setup ceremony

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors