{
  "slug": "underconstrained-circuit",
  "term": "Underconstrained circuit",
  "tools": [
    "picus",
    "civer",
    "circomspect",
    "zkfuzz",
    "nave"
  ],
  "definition": "A circuit whose constraints admit witnesses outside the specification, typically because a value computed during witness generation is never pinned down by a constraint. It is the dominant class of exploitable ZK bug.",
  "detail": [
    "In Circom the classic form is a `<--` assignment without a matching `===` constraint; in Halo2 it is a cell that is assigned but not gated; in any system it is a missing range check, a missing boolean check or a division by a possibly-zero value. Automatic tools (Picus, CIVER, NAVe) detect many instances by checking that outputs are uniquely determined by inputs; a soundness proof rules out all of them."
  ],
  "page": "https://sorryfree.com/glossary/underconstrained-circuit/",
  "updated": "2026-09-13"
}