Skip to content

ceremony: run an open multi-party Groth16 phase-2 ceremony with independent external participants #158

Description

@akash-mondal

Tracker: #154

Context

The verifiers backing mainnet come from a single-coordinator, 3-machine Groth16 phase-2 ceremony (drand quicknet round 30261477) — see docs/ceremony/transcript.md and the build: "ceremony" marker in contracts/scripts/ceremony/ceremony-marker.json. Both the transcript and README state plainly this is not a substitute for an open multi-party ceremony with independent external participants; its soundness rests on the honest-machine assumption plus the unbiasable beacon. Closing that gap is the honest next step for a mainnet holding real value. (The completed single-coordinator run is #121; this issue supersedes its trust model, it does not reopen it.)

Scope

  • Design an open ceremony: participant recruitment/onboarding, contribution coordinator, attestation collection, and a final public beacon.
  • Reuse scripts/ceremony/run-ceremony.ts; extend it for external contributions + a public contribution feed.
  • Regenerate the five verifiers + browser proving keys (packages/config/public/circuits/*) from the new final zkeys; keep on-chain verifier and in-browser .zkey byte-identical (same sha256), as today.
  • Republish docs/ceremony/transcript.md, bump ceremony-marker.json, and plan the verifier redeploy/upgrade path — note the deploy:mainnet guardrail asserts the ceremony marker (guardrail Build wallet export, import, and local account deletion #4 / ceremony_build_required).

Acceptance criteria

  • A ceremony plan (participants, tooling, beacon, verification instructions) reviewed and agreed.
  • A Fuji/testnet dry-run regenerating verifiers end-to-end with the new tooling.
  • A defined path to swap mainnet verifiers to the open-ceremony build (redeploy vs upgrade) with the guardrail marker updated.

Dependencies

  • Verifier swap coordinates with the Ownable admin-custody transfer and the external-audit timing.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions