Ceremony
Union’s Ceremony has the following components:
- Web app ceremony.union.build
- MPC client, running in the terminal
- The coordinator, managing the queue and aggregating uploads.
We use Nix to create fully reproducible builds of all components and provide commands so that you can build them yourself.
Web App
Deployed on ceremony.union.build, Handles auth and shows queue status. Also shows all contributions.
You can build it locally like this:
GIT_LFS_SKIP_SMUDGE=true nix build github:unionlabs/union/release/ceremony#ceremony
MPC Client
Image published here, handles the generation of the contribution, generation of the gpg key, and signs/uploads the contributions.
You can build it locally like this on a x86_64-linux
machine:
GIT_LFS_SKIP_SMUDGE=true nix build github:unionlabs/union/bbfaa2f39d0183c2fd6c1d2505fad6c64ddb39e1#packages.x86_64-linux.mpc-client -L
and load the image like this on a x86_64-linux
machine::
docker load -i ./result
MPC Coordinator
The coordinator has two components:
- Postgres, managing the queue and contributions. Hosted by Supabase.
- The
mpc-coordinator
service, verifying incoming contributions. Hosted by Hetzner.
You can see the database schema here, and you can build the service locally like this on a x86_64-linux
machine:
GIT_LFS_SKIP_SMUDGE=true nix build github:unionlabs/union/bbfaa2f39d0183c2fd6c1d2505fad6c64ddb39e1#packages.x86_64-linux.mpc-coordinator -L
There are no trust assumptions on the database, as at the end of the ceremony all contributions will be published and verifiable by all.