Skip to main content
Version: Next

About PLONK and PLOOKUP

The PLONK paper introduced an efficient technique for enforcing the validity of memory operations in arguments of computational integrity. Building on top of PLONK, the PLOOKUP paper introduced a method of enforcing the validity of lookup operations.

Relevance in RISC Zero

RISC Zero's zkVM makes use of both PLONK and PLOOKUP in the process of generating a receipt. PLONK is used to generate constraints that authenticate re-ordering of RISC-V memory data. PLOOKUP is used to generate constraints that enforce a bytes-based range-check.

Note: RISC Zero uses an AIR-based arithmetization and not a PLONK-based arithmetization.

Documentation

Implementation and documentation for RISC Zero's use of PLONK and PLOOKUP are in plonk.rs and accum.rs.

Basic Function

PLONK makes uses of accumulators in order to ensure that one list is a permutation of another. PLOOKUP uses PLONK to ensure that one list is contained in another list.

Suggested Reading and Videos

For more on how these ideas fit into RISC Zero's system, we recommend our talk from zk Summit 7: Encoding Von-Neumann Architectures in Zero-Knowledge Proof Systems. For general references, we recommend the following:

Less Technical

Moderately Technical

Very Technical