{
  "type": "failure-mode",
  "name": "Circuit and verifier version drift",
  "slug": "circuit-and-verifier-version-drift",
  "section": {
    "id": "audit",
    "number": "03",
    "title": "Auditing a ZK protocol",
    "url": "https://zkpick.com/audit/"
  },
  "url": "https://zkpick.com/audit/failure-modes/circuit-and-verifier-version-drift/",
  "markdown": "https://zkpick.com/md/audit/failure-modes/circuit-and-verifier-version-drift.md",
  "detail": "The deployed verifying key no longer corresponds to the audited circuit, because of a recompilation, a toolchain upgrade, or a manual key copy. Nothing detects the mismatch until proofs fail — or worse, until they succeed against the wrong relation.",
  "mitigation": "Pin the hash of circuit artefacts and verifying keys in CI and on-chain, fail the build on mismatch, and make the deployed key hash publicly checkable against the audited commit.",
  "relatedOptions": [
    {
      "name": "Manual circuit and constraint review",
      "url": "https://zkpick.com/audit/manual-circuit-review/"
    },
    {
      "name": "Verifier and integration review",
      "url": "https://zkpick.com/audit/verifier-review/"
    },
    {
      "name": "Audit contests",
      "url": "https://zkpick.com/audit/audit-contests/"
    }
  ],
  "updated": "2026-09-12",
  "version": "1.3",
  "canonical": "https://zkpick.com/audit/failure-modes/circuit-and-verifier-version-drift/",
  "license": "https://creativecommons.org/licenses/by/4.0/",
  "authors": [
    "MarketComp"
  ]
}