04 — Trusted setup · Ceremony approach

gnark mpcsetup

Phase 1 and phase 2 tooling

In one paragraph

gnark mpcsetup: Phase 1 and phase 2 tooling. Go implementation of the two-phase Groth16 MPC setup inside the gnark proving library, exposing contribution, verification and sealing as ordinary library calls. Maturity: Maintained; smaller ceremony track record. Maintained by: Consensys (gnark team). Choose it when: Teams whose circuits are written in gnark and who want the ceremony in the same toolchain as the prover.

What it is

Go implementation of the two-phase Groth16 MPC setup inside the gnark proving library, exposing contribution, verification and sealing as ordinary library calls. Phase 2 initialises from a phase-1 file plus the circuit's constraint system.

Strengths and tradeoffs

Strengths
  • Native to a Go proving stack, avoiding cross-language artefact conversion
  • Ceremony automation and per-contribution verification are straightforward to script
  • Part of an actively maintained general proving library rather than a single-purpose script
Tradeoffs
  • Far fewer public ceremonies have been run with it, so less community-tested operational guidance
  • Interoperating with snarkjs .ptau files requires a converter
  • BN254-focused; check curve coverage before assuming parity with snarkjs

Choose it whenTeams whose circuits are written in gnark and who want the ceremony in the same toolchain as the prover.

Sources cited on this page · 2

  1. gnark mpcsetup — Groth16 BN254 phase 1 and phase 2tool
  2. ptau-deserializer — converts snarkjs phase-1 output for use with gnarktool
Cite this page
MarketComp (2026). gnark mpcsetup. The ZK Field Manual (Version 1.3). MarketComp. https://zkpick.com/ceremony/gnark-mpcsetup/
@misc{zkfieldmanual-gnark-mpcsetup,
  title        = {gnark mpcsetup — The ZK Field Manual},
  author       = {MarketComp},
  year         = {2026},
  version      = {1.3},
  howpublished = {\url{https://zkpick.com/ceremony/gnark-mpcsetup/}},
  note         = {Accessed: YYYY-MM-DD}
}