Why Rust Makes Zero Knowledge Proofs Less Painful

By Adam Smolarek

Talk - Wednesday, 16 September
14:30

Zero-knowledge proofs have a reputation for being math-heavy and hard to debug. In frameworks like circom (JavaScript toolchain), the lack of static typing means type confusion bugs pass silently.

halo2 is a ZK proving system written in Rust. I’ve been working with production halo2 circuits for three years. In this talk I’ll show what building ZK circuits in Rust actually looks like: how the type system enforces circuit structure (typed columns, region APIs, the Circuit trait), how MockProver catches constraint bugs before you waste time on full proving, and where Rust’s strictness helps versus where it gets in the way.

I’ll walk through a minimal circuit (a range check: proving a number is between 0 and 255 without revealing it), show the execution trace, the constraints, and the proof, then connect it to a real use case: age verification with a digital ID, where you prove you’re over 18 without revealing your birth date. Live demo: I’ll run this on stage. No heavy math, just Rust and finite field basics.

Speaker

speaker.name

Adam Smolarek

Adam is a Rust developer based in Kraków. He has been building blockchain infrastructure since 2016 and writing zero-knowledge proof circuits in halo2 for the past three years. Adam runs rustarians.com where he publishes interactive ZK tutorials with runnable Rust code.