{
  "type": "option",
  "name": "Halo2",
  "slug": "halo2",
  "section": {
    "id": "frameworks",
    "number": "02",
    "title": "Choosing a framework",
    "url": "https://zkpick.com/frameworks/"
  },
  "url": "https://zkpick.com/frameworks/halo2/",
  "markdown": "https://zkpick.com/md/frameworks/halo2.md",
  "category": "Rust eDSL (PLONKish)",
  "summary": "Halo2: Rust eDSL (PLONKish). As Halo2 (upstream) — Kind: Rust eDSL. Arithmetisation / backend: PLONKish + IPA. Setup: None. Maintained by: Electric Coin Company (Zcash). Licence: MIT / Apache-2.0. Status: Production in its home ecosystem. As Halo2 (KZG fork) — Kind: Rust eDSL. Arithmetisation / backend: PLONKish + KZG. Setup: Yes (universal). Maintained by: Ethereum Foundation PSE. Licence: MIT / Apache-2.0. Status: Maintenance mode. Choose it when: Teams needing trusted-setup-free proving with a non-EVM or off-chain verifier, who have cryptography-capable engineers.",
  "description": "PLONKish arithmetisation with custom gates, lookup arguments and explicit region and column layout under developer control. The upstream implementation uses an inner-product argument and needs no trusted setup; a widely used fork swaps in KZG for constant-size, cheaply verifiable proofs.",
  "notes": [],
  "sections": [],
  "strengths": [
    "The upstream IPA instantiation needs no trusted setup, and is deployed in a long-running production shielded protocol",
    "Custom gates and lookups allow far more efficient hashing and range-check circuits than R1CS",
    "Permissive dual licence"
  ],
  "tradeoffs": [
    "The steepest learning curve of any mainstream option — correct circuits require manual reasoning about regions, rotations and selectors",
    "Very easy to underconstrain, in library gadgets as well as user circuits: a query-collision bug affected edge-case circuits across multiple forks, and in 2026 a counterfeiting bug in the ECC gadget of the upstream library prompted an emergency response in its flagship deployment — verify the current status of any Halo2 deployment you are citing as evidence of maturity",
    "IPA proofs are logarithmic in size but the verifier's work is linear in circuit size, so direct L1 verification is impractical without a wrapper",
    "The ecosystem is fragmented across forks with divergent maintenance postures — choose deliberately"
  ],
  "bestFit": "Teams needing trusted-setup-free proving with a non-EVM or off-chain verifier, who have cryptography-capable engineers.",
  "maintainers": "Electric Coin Company (upstream); Ethereum Foundation PSE (KZG fork, maintenance mode); Axiom (halo2-lib)",
  "maturity": "Long production history; verify current status",
  "license": "https://creativecommons.org/licenses/by/4.0/",
  "source": "https://github.com/zcash/halo2",
  "facts": [
    {
      "table": "Framework selection matrix",
      "url": "https://zkpick.com/frameworks/#frameworks-matrix-halo2-upstream",
      "name": "Halo2 (upstream)",
      "kind": "Rust eDSL",
      "arith": "PLONKish + IPA",
      "setup": "None",
      "by": "Electric Coin Company (Zcash)",
      "license": "MIT / Apache-2.0",
      "status": "Production in its home ecosystem"
    },
    {
      "table": "Framework selection matrix",
      "url": "https://zkpick.com/frameworks/#frameworks-matrix-halo2-kzg-fork",
      "name": "Halo2 (KZG fork)",
      "kind": "Rust eDSL",
      "arith": "PLONKish + KZG",
      "setup": "Yes (universal)",
      "by": "Ethereum Foundation PSE",
      "license": "MIT / Apache-2.0",
      "status": "Maintenance mode"
    }
  ],
  "relatedFailureModes": [],
  "sources": [
    {
      "title": "Halo2 — upstream implementation (IPA, no trusted setup)",
      "url": "https://github.com/zcash/halo2",
      "kind": "project"
    },
    {
      "title": "Halo2 — KZG fork",
      "url": "https://github.com/privacy-ethereum/halo2",
      "kind": "project"
    },
    {
      "title": "halo2-lib — gadget library for Halo2 circuits",
      "url": "https://github.com/axiom-crypto/halo2-lib",
      "kind": "project"
    }
  ],
  "updated": "2026-09-12",
  "version": "1.3",
  "canonical": "https://zkpick.com/frameworks/halo2/",
  "authors": [
    "MarketComp"
  ]
}