{
  "type": "option",
  "name": "Bug bounties",
  "slug": "bug-bounties",
  "section": {
    "id": "audit",
    "number": "03",
    "title": "Auditing a ZK protocol",
    "url": "https://zkpick.com/audit/"
  },
  "url": "https://zkpick.com/audit/bug-bounties/",
  "markdown": "https://zkpick.com/md/audit/bug-bounties.md",
  "category": "Crowdsourced review",
  "summary": "Bug bounties: Crowdsourced review. Layer: Deployed system. Characteristic finds: Whatever survived everything else, on the code actually running. Blind to: Everything, until someone looks — no pre-launch assurance. Coverage claim: None. Cost profile: Contingent; needs credible max payout. Maintained by: Run by the deploying team, usually on a bounty platform; the linked ZKsync Era programme is one example of a published ZK scope, not a recommendation. Choose it when: Every production system, funded proportionally to value at risk and live from mainnet day one. State explicitly whether circuits, prover, verifier contract and setup artefacts are in scope.",
  "description": "An open-ended funded programme covering deployed code, with published severity classification and reward scale. The better ZK programmes state explicitly whether circuits, prover, verifier contract and setup artefacts are in scope, whether completeness failures (valid inputs rejected, funds stuck) count alongside soundness failures, and what proof of concept is required at each severity.",
  "notes": [],
  "sections": [],
  "strengths": [
    "The only mechanism covering the code you actually run, indefinitely, after every deployment",
    "Attracts specialists, including tool authors running new techniques against live targets",
    "Cost is contingent on findings rather than fixed",
    "Establishes a legitimate disclosure channel, reducing the chance a finder goes public instead"
  ],
  "tradeoffs": [
    "No assurance before launch and no coverage guarantee ever",
    "An underfunded maximum payout is a negative signal for a system securing large value",
    "Scope must be drafted carefully: proof forgery for arbitrary statements must be unambiguously critical",
    "Demands 24/7 triage and a rehearsed emergency response"
  ],
  "bestFit": "Every production system, funded proportionally to value at risk and live from mainnet day one. State explicitly whether circuits, prover, verifier contract and setup artefacts are in scope.",
  "maintainers": "Run by the deploying team, usually on a bounty platform; the linked ZKsync Era programme is one example of a published ZK scope, not a recommendation",
  "maturity": "Production standard",
  "license": "https://creativecommons.org/licenses/by/4.0/",
  "source": "https://immunefi.com/bug-bounty/zksyncera/",
  "facts": [
    {
      "table": "What each assurance technique can and cannot find",
      "url": "https://zkpick.com/audit/#audit-matrix-bug-bounty",
      "tech": "Bug bounty",
      "layer": "Deployed system",
      "catches": "Whatever survived everything else, on the code actually running",
      "blind": "Everything, until someone looks — no pre-launch assurance",
      "coverage": "None",
      "cost": "Contingent; needs credible max payout"
    }
  ],
  "relatedFailureModes": [
    {
      "name": "Over-constrained circuits and completeness failures",
      "url": "https://zkpick.com/audit/failure-modes/over-constrained-circuits-and-completeness-failures/"
    },
    {
      "name": "Cross-table lookup and multiplicity bugs",
      "url": "https://zkpick.com/audit/failure-modes/cross-table-lookup-and-multiplicity-bugs/"
    }
  ],
  "sources": [
    {
      "title": "0xPARC ZK Bug Tracker — bug taxonomy (frozen since late 2024; Circom/application-circuit skew)",
      "url": "https://github.com/0xPARC/zk-bug-tracker",
      "kind": "reference"
    },
    {
      "title": "On formal verification and a bug in SP1 Hypercube — a JALR conformance bug found by RISC-V architecture tests outside the verified scope (EF zkEVM)",
      "url": "https://zkevm.ethereum.foundation/blog/sp1-fv",
      "kind": "analysis"
    },
    {
      "title": "Missing subfield membership check in OpenVM pairing — CVE-2026-46669",
      "url": "https://blog.zksecurity.xyz/posts/openvm-bugs/",
      "kind": "disclosure"
    },
    {
      "title": "It pays to be Circomspect — motivation and bug classes (Trail of Bits)",
      "url": "https://blog.trailofbits.com/2022/09/15/it-pays-to-be-circomspect/",
      "kind": "analysis"
    },
    {
      "title": "Arguzz — testing zkVMs for soundness and completeness bugs (USENIX Security '26)",
      "url": "https://arxiv.org/abs/2509.10819",
      "kind": "paper"
    }
  ],
  "updated": "2026-09-12",
  "version": "1.3",
  "canonical": "https://zkpick.com/audit/bug-bounties/",
  "authors": [
    "MarketComp"
  ]
}