High-level frontend

LLVM is a collection of compiler and toolchain technologies that can be used to develop frontend for any programming language and backend for any instruction set architecture. It is designed around a language-independent intermediate representation that serves as a portable, high-level assembly language that can be optimized with a variety of transformations over multiple passes. We can use LLVM to let developers write code for zkVM using any high-level language, for example C.

As noted earlier, our instruction set is pretty uncommon and a number of intermediate-level optimisations may be beneficial in addition to just plain backend. Also lack of common-use registers pose an unusual challenge to LLVM but we are focused on solving this issue in an efficient manner. Additionally with a good enough toolchain we can achieve language-level compatibility with EVM.

While general-purpose programming for zkVM could yield some benefits, we mostly counting on LLVM as fixture to implement our Domain Specific Language, as for us most useful aspect of creating zkVM is ability to manipulate dataflows in user-defined, zk-proven manner, allowing users to create universally-trusted oracles on blockchains.

Last updated