Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

World ID 4.0 Trusted Setup

How a trusted setup works

World ID 4.0 uses a Groth16 Phase 2 trusted setup ceremony for its zk-SNARK circuits. In this process, multiple participants each add their own randomness contribution (often called “toxic waste”) to circuit-specific setup artifacts (.zkey), and each contribution is publicly verifiable as part of a transcript. Security relies on at least one participant contributing honestly and permanently deleting their secret randomness.

Why we are doing this for World ID 4.0

The World ID 4.0 ceremony is for the Circom circuits part of the oprf-service stack:

  • OPRFQueryProof
  • OPRFNullifierProof
  • OPRFKeyGenProof13
  • OPRFKeyGenProof25
  • OPRFKeyGenProof37

These circuits require Groth16 proving keys, which are produced via a Phase 2 setup. The trusted setup is therefore a required part of preparing production-grade proving artifacts for the World ID 4.0 protocol.

How to contribute

Note

The World ID 4.0 trusted setup ceremony is closed. New contributions are no longer accepted.

The @worldcoin/world-id-trusted-setup-cli package was built as a fork of PSE’s p0tion for organizing a trusted setup ceremony with minimum work needed to be done by the contributors. During the active ceremony, contributors used the following flow:

  1. Authenticate with GitHub device-flow OAuth (used by the CLI and for ceremony identity/attestation flow):
npx @worldcoin/world-id-trusted-setup-cli auth
  1. Run the contribution command to join an open ceremony and compute/upload your contribution (<10 min on average):
npx @worldcoin/world-id-trusted-setup-cli contribute

If you had any issues contributing to the ceremony, please contact our ceremony coordinator dcbuilder on Telegram.

How it was

Note

If you want to learn more about the trusted setup, watch the rendered explainer video: World Chain post.

Contribution totals (excluding the coordinator finalization contribution) are documented in this summary tweet by @dcbuilder:

  • OPRFKeyGenProof13: 113
  • OPRFKeyGenProof25: 111
  • OPRFKeyGenProof37: 105
  • OPRFNullifierProof: 104
  • OPRFQueryProof: 104

Full ceremony artifacts, verification transcripts, the explainer video, manim source, and contribution attestations are stored on the trusted-setup orphan branch to keep the main branch lightweight.