Skip to content

Plonk Script is a specialized scripting language specifically designed for Plonkish arithmetic. It serves as a domain-specific language (DSL) with the ability to interface with a variety of systems that utilize Plonkish arithmetic, including halo2. Built on the Rhai programming language, Plonk Script adopts a syntax similar to Rust but without explicit typing, thereby reducing code redundancy.


Our motivation for developing Plonk Script stems from three main issues:

  1. Poor descriptiveness: The use of the raw halo2 API often leads to verbose and unclear code, making debugging and analysis difficult.
  2. Lack of metaprogramming support: Existing solutions such as AirScript and Vamp-IR lack basic witness computation capabilities, necessitating the use of external scripts for secondary generation of scripts or input values.
  3. Absence of analysis tools: Verifying the correctness of business logic constraints is often challenging.


Plonk Script significantly improves code readability. For instance, a simple Fibonacci sequence coded in halo2 API spans over 200 lines. The equivalent Plonk Script, however, is a mere 31 lines, making it instantly comprehensible.


Plonk Script supports regular programming constructs like loops and conditionals for witness generation. It also allows for assignment and constraint notation using symbols like <==.