ZK Examples

For a peek at the math behind ZKPs

Example: PLONK

There are various options of what kind of front-end to use to design a ZK circuit. The PLONK system is one such way. We will describe it below, and it will be a good way of preparing us for the full PLONKish arithmetization used in halo2, which is what Axiom uses in production.

A PLONK circuit consists of a table/matrix with the following fixed columns and nearly arbitrary number of rows:

Summary

To summarize, creating a ZK proof involves the following steps:

Once and for all, specify the circuit itself:

  • Specify any equality constraints between cells.

  • The verifier receives the above information in a compressed form.

  • The prover holds onto a copy of the above information itself.

To submit a proof:

Backend

While circuit design involves just filling out a table using some front end, to actually create a proof there is a backend that takes the PLONK table above and does a bunch of computations involving polynomial commitment schemes. This part is largely independent of the circuit design, but different backends lead to different performance characteristics, which become important to understand for production use cases.

Last updated