{
  "type": "option",
  "name": "gnark mpcsetup",
  "slug": "gnark-mpcsetup",
  "section": {
    "id": "ceremony",
    "number": "04",
    "title": "Running or reusing a trusted setup",
    "url": "https://zkpick.com/ceremony/"
  },
  "url": "https://zkpick.com/ceremony/gnark-mpcsetup/",
  "markdown": "https://zkpick.com/md/ceremony/gnark-mpcsetup.md",
  "category": "Phase 1 and phase 2 tooling",
  "summary": "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.",
  "description": "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.",
  "notes": [],
  "sections": [],
  "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"
  ],
  "bestFit": "Teams whose circuits are written in gnark and who want the ceremony in the same toolchain as the prover.",
  "maintainers": "Consensys (gnark team)",
  "maturity": "Maintained; smaller ceremony track record",
  "license": "https://creativecommons.org/licenses/by/4.0/",
  "source": "https://pkg.go.dev/github.com/consensys/gnark/backend/groth16/bn254/mpcsetup",
  "facts": [],
  "relatedFailureModes": [],
  "sources": [
    {
      "title": "gnark mpcsetup — Groth16 BN254 phase 1 and phase 2",
      "url": "https://pkg.go.dev/github.com/consensys/gnark/backend/groth16/bn254/mpcsetup",
      "kind": "tool"
    },
    {
      "title": "ptau-deserializer — converts snarkjs phase-1 output for use with gnark",
      "url": "https://github.com/worldcoin/ptau-deserializer",
      "kind": "tool"
    }
  ],
  "updated": "2026-09-12",
  "version": "1.3",
  "canonical": "https://zkpick.com/ceremony/gnark-mpcsetup/",
  "authors": [
    "MarketComp"
  ]
}