LLZK 0.1.0
Veridise's ZK Language IR
Loading...
Searching...
No Matches
Architecture

Project Overview

The LLZK project consists of three main components:

  1. Frontends, which translate a source ZK language to LLZK.
  2. Passes, which analyze or transform the IR.
  3. Backends, which process LLZK into another destination format (e.g., R1CS constraints) or analyze the IR to identify bugs or verify properties of the source language.

The general workflow of using LLZK is therefore as follows:

  1. Translate the source language into LLZK using a frontend tool.
  2. Use the llzk-opt tool to perform any transformations using LLZK's pass infrastructure.
  3. Provide the transformed IR to a backend for further analysis or use.

Frontends

Frontends are currently not contained within the LLZK repository, but are rather maintained in separate repositories, using LLZK-lib as a dependency.

Veridise currently maintains the following frontends:

For information on how to create a new frontend, please refer to the Translation Guidelines.

Passes

LLZK provides three types of passes:

  1. Analysis passes, which compute useful information about the IR used to implement other passes or backends.
  2. Transformation passes, which restructure or optimize the IR.
  3. Validation passes, which ensure the IR has certain required properties.

User documentation about how to use these passes is provided in Tool Guides.

Developer documentation can be found:

Backends

Built-in backends will be added to the llzk-opt tool as they are developed. Currently, LLZK provides no built-in backends, but an R1CS backend is current in the works. Veridise also plans to release several analysis backends based on prior tooling (namely Picus and ZK Vanguard), which will allow Veridise to provide automated verification and analysis for any ZK language that has an LLZK frontend.

Previous Next
Overview Setup