Prove you solved the puzzle without revealing the solution — KZG polynomial commitments over BN254, running as WebAssembly in your browser. Nothing leaves the page.
The clues everyone sees. Empty = hidden cell.
Known only to the prover. Highlighted cells are pinned by clues. “Solve puzzle” finds one if your instance is solvable.
The verifier only ever sees the puzzle and the ~0.6–1 KiB proof; the solution polynomial is blinded, so its openings reveal nothing. Toy caveat: the KZG trusted setup is derived in-page from a fixed seed (so proofs are shareable across reloads) — that means τ is public and proofs are forgeable by anyone who reads the source. Real deployments use a setup ceremony.