Vocdoni Logo

Anonymous voting zk Ceremony

About Vocdoni

Vocdoni is a groundbreaking protocol offering universally verifiable, censorship-resistant, and anonymous self-sovereign governance. Designed for scalability and ease-of-use, Vocdoni caters to a wide range of voting needs.

Our mission is to facilitate a trustless voting system where every voice can be heard and every vote audited. We are committed to building the foundational blocks for a permissionless, private, and censorship-resistant democracy.

Utilizing zkSNARKS - a cutting-edge privacy technology - the Vocdoni protocol ensures secure and private voting within a distributed network. To enhance this security, we invite you to participate in our ZK ceremony.

The zk Ceremony

The zk ceremony, also known as a trusted ceremony, is a multi-party computation process crucial for securely and reliably generating the inputs needed for a zk snark circuit. This process results in two keys:

  • The Proving Key: Enables the generation of zk proofs for the specific circuit.
  • The Verifying Key: Allows for the verification of these proofs.

This ceremony also produces 'toxic waste' - data that must be discarded to prevent the creation of false proofs. The multi-party computation approach minimizes risks by involving multiple participants.

Each participant contributes sequentially, starting from an initial contribution made at the ceremony's inception.

Security is assured as long as at least one participant remains honest.

Participation Guidelines

To take part in the zk ceremony, ensure you have:

  1. An active GitHub account.
  2. Docker installed and operational on your system.

Begin by running the following command in your terminal:

docker run --rm -it vocdoni/zk-voceremony

Then, simply follow the on-screen instructions.

Alternatively, it is possible to build the image directly from the dockerfile and run the same command using the locally built image:

Clone the repository
git clone https://github.com/vocdoni/zk-voceremony.git && cd zk-voceremony
Build the image locally
docker build . --target zk-voceremony --tag vocdoni/zk-voceremony
Run it
docker run --rm -it vocdoni/zk-voceremony

The steps executed by the process are the following:

  1. Download the docker image that contains all required software.
  2. Get the last contribution from the remote repository.
  3. Create a new contribution with some random entropy.
  4. Ask for a Github code to authenticate.
  5. Fork and create a pull-request to the ceremony repository.
  6. An automatic CI action will verify your contribution and merge it.
  7. You are done! Thanks for your support.

You can follow the ceremony process and review the code in its branch.

If you encounter an error on the final merge step [rejected] failed to push some refs...., please start the process anew. This indicates that someone else has contributed before you. To proceed, you need to update your information and contribute again.

demo