{
  "slug": "zk-golf",
  "name": "zk.golf",
  "tagline": "Competition for the cheapest ZK circuits proven sound and complete in Lean 4",
  "title": "zk.golf: circuit optimisation challenges with Lean 4 proofs of soundness and completeness",
  "maintainer": "zkSecurity",
  "url": "https://zk.golf",
  "repo": "https://github.com/zksecurity/zk-golf-challenges",
  "category": "challenges",
  "targets": [
    "R1CS over BN254",
    "GF(2) hash compression track",
    "Clean circuits"
  ],
  "approach": "Fixed Lean interface and specification per challenge; submissions are Clean circuits plus kernel-checked proofs; score = allocations + constraints",
  "license": "Open challenge; challenges repository public",
  "status": "Active (launched 2026-07-02)",
  "since": "2026-07-02",
  "summary": "zk.golf is zkSecurity's competition to build the cheapest zero-knowledge circuits that are proven correct in Lean 4. Each challenge fixes a Lean specification; a submission is a Clean circuit plus a proof that it is sound and complete against it, kernel-checked in a sandbox (20-minute timeout, no native_decide, axiom allowlist). Challenges include SHA-256, Keccak-f[1600], RSA PKCS#1 v1.5 verification, secp256k1 scalar multiplication and GF(2) BLAKE3 and KangarooTwelve compression.",
  "details": [
    "Because completeness is required alongside soundness, the specification pins the circuit down exactly, so aggressive optimisation, including by LLM agents (an agent API is documented at zk.golf/llms.txt), cannot silently break correctness. Score is allocations plus constraints, lower is better, and each challenge lists comparison points against existing libraries such as circomlib, zk-email, gnark and circom-ecdsa.",
    "For a team considering formal verification, zk.golf is the fastest way to see what a sound-and-complete deliverable looks like and how much circuit cost verified optimisation can remove. A challenge submission establishes only the challenge's required properties, not the security of any surrounding system."
  ],
  "strengths": [
    "Every leaderboard entry is a kernel-checked proof, not a claim.",
    "Realistic targets: SHA-256, Keccak, RSA, secp256k1.",
    "Designed for AI-agent participation under a fixed spec."
  ],
  "limits": [
    "Challenge scope only; not an audit of your code.",
    "Clean and Lean 4 required.",
    "Young platform (July 2026)."
  ],
  "fit": [
    "Use zk.golf to learn Clean, benchmark a gadget, or recruit verified-circuit engineers. The operator, [zkSecurity](/firms/zksecurity/), runs it alongside its verification practice."
  ],
  "references": [
    [
      "zk.golf",
      "https://zk.golf"
    ],
    [
      "Announcing zk.golf (2026-07-02)",
      "https://blog.zksecurity.xyz/posts/zkgolf/"
    ],
    [
      "Challenge registry",
      "https://github.com/zksecurity/zk-golf-challenges"
    ]
  ],
  "category_name": "Challenges and programs",
  "page": "https://sorryfree.com/frameworks/zk-golf/",
  "updated": "2026-09-13"
}