03 — Auditing · Failure mode

Unconstrained hints not re-checked by the caller

Modern DSLs let you compute a value outside the constraint system for efficiency — an unconstrained function, an unsafe block, a witness hint — on the understanding that the caller will constrain the result afterwards. Nothing in the language enforces that obligation, and the comment conventions surrounding it are advisory. A hint that is used but never re-constrained is an underconstrained circuit with a friendlier syntax.

Mitigation

Treat every unconstrained or unsafe block as a review checkpoint with an explicit written obligation: what the caller must verify, and where that verification happens. Grep for them and enumerate them in the audit scope rather than trusting the accompanying comment.

Cite this page
MarketComp (2026). Unconstrained hints not re-checked by the caller. The ZK Field Manual (Version 1.3). MarketComp. https://zkpick.com/audit/failure-modes/unconstrained-hints-not-re-checked-by-the-caller/
@misc{zkfieldmanual-unconstrained-hints-not-re-checked-by-th,
  title        = {Unconstrained hints not re-checked by the caller — The ZK Field Manual},
  author       = {MarketComp},
  year         = {2026},
  version      = {1.3},
  howpublished = {\url{https://zkpick.com/audit/failure-modes/unconstrained-hints-not-re-checked-by-the-caller/}},
  note         = {Accessed: YYYY-MM-DD}
}