Notes from the SNARKonomicon: Techniques for Writing SNARK Programs
summary
Concrete recipes for SNARK programs using the Snarky-style model and Coda/Kota-style recursion: implement division by guessing a quotient with an exists and checking one multiplication instead of exponentiating to p−2 (exponentiation costs ~log p multiplies), pack bits by summing then testing nonzero to make OR cost one constraint regardless of bitcount, and apply risky-but-safe micro‑optimizations like skipping expensive curve checks when security reduces to discrete log, saving roughly ~33% per curve op.
AI-written summary · about
chapters (12)
- 0:00Start
- 1:13Background
- 9:55Example: division
- 11:31What about checking division?
- 12:59Division, diagramatically
- 14:55What to do
- 15:50Revisiting our earlier example
- 16:15Non-determinism: Takeaways
- 17:04Taking advantage of arithmetic
- 21:56Globally sound optimizations: Pedersen hash let div_unsafe (x, y)
- 24:24Reflections on defining a language
- 25:02Faster SNARKS
related talks
54mSnarky: Algebraic effects in the Coda cryptocurrency
25mThe Next 700 ZKP Programming Languages
19mZK Tutorial: An Introduction to SNARK Development with arkworks
20mSNARKs from the sum-check protocol
34mSNARKs and their Practical Applications
01h 00mRinocchio: SNARKs for Ring Arithmetic
48mzkSNARKs — Cryptographic Proofs for Scaling and Security Challenges
58mFramework for Snarky Ceremonies
