Transparent Zero-Knowledge Proofs With Zilch

Deploying STARKs easier

Overview of the Zilch Framework: Using the ZeroJava compiler, the Prover provides the assembly code to Zilch along with the private and public inputs. The Prover and the Verifier interact over a limited number of rounds and the verifier either accepts the proof (i.e., she is convinced) or rejects it.

1) Zilch Front-End

ZeroJava Language & Compiler

ZeroJava is a custom subset of Java tailored to zero-knowledge proofs. It is possible to compile ZeroJava programs to byte code with a Java compiler if the ZK-specific instructions are omitted. ZeroJava abstains from features of Java that complicate the run-time system, such as exceptions and multi-threading.

ZeroJava Examples

ZeroJava Example 1: In code-snippet 1, we demonstrate a ZeroJava program that implements Wegner’s efficient algorithm to compute the Hamming weight of a secret number and then compares it with a public threshold.

Code-snippet 1: ZeroJava program to prove that a secret number has a Hamming weight that is greater than a public threshold.
Code-snippet 2: Zero-knowledge range query implemented in ZeroJava.
Code-snippet 3: Object-oriented zero-knowledge range query implemented in ZeroJava.

2) Zilch Back-End

zMIPS Instruction Set Architecture

zMIPS is our extension to the MIPS ISA to support programming ZKPs. The front-end of Zilch translates ZeroJava programs into zMIPS instructions, which are in turn consumed by the Zilch back-end to generate the final proof.

  1. Vitalik Buterin’s blog series on zk-STARKs:
D. Mouris and N. G. Tsoutsos, “Zilch: A Framework for Deploying Transparent Zero-Knowledge Proofs,” in IEEE Transactions on Information Forensics and Security (TIFS), 2021, DOI: 10.1109/TIFS.2021.3074869



Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store