Prerequisites for the project

The project requires:

  • Rust (language of the codebase): I am using the following book for Rust.
  • Understanding zkVMs: Virtual Machine (VM) is a program that allows the execution of other programs in it. A zero-knowledge (zk) VM proves the execution of a VM. I am reading the moonmath manual to learn more about SNARKs.
  • Understanding Consensus Client: Tests will run on ream’s codebase that implements the beacon chain. Knowledge related to the beam chain is also important.

Benchmarking zkVMs in the Ream client

The full title of the project is Ream Client - A Beam client in Rust: Benchmark zkVM performance on Ream’s Beacon state transition functions By Unnawut

There will be many iterations of benchmarking because every few rounds the results will be used to modify and improve ream’s codebase. Additionally, tests should be SNARK-friendly in order to align with the beam chain in the future. Currently, the implementation covers the zkVMs SP1 and RISC Zero. They are tested on transition functions of the ream client. The goal is to extend the tests to other zkVMs such as OpenVM, Zisk, Jolt, Brevis Pico, Valida. The code for the project is found here. It is well and clearly written, various code parts are easy to identify. For example, the test on state transition functions for risc0 is in the directory methods/guest/src/main.rs where the program is split into inputs and the main logic.

General overview of the project

The project is very educational because it involves optimising the beacon chain implementation, developing code for the beam chain, learning about zkVMs. Moreover, the programming language is Rust which is widely used and thus worthwhile to learn.