Maru
  • Introduction
  • Volume use cases
  • Architecture overview
  • Maru Roadmap
  • ZK IMPLEMENTATION
    • Schema
      • Sum proof
      • Search proof
      • Data proof
      • Keccak proof
      • KeccakSponge proof
      • Logic proof
      • Arithmetic proof
    • Plonky2 verifier in Circom
  • user guide
    • Maru Demo FAQ
      • Why event proofs?
      • Why starky?
    • Deployed contracts
  • Maru ZKVM
    • Computer architecture
    • Memory model
    • Instruction set architecture
      • Instructions Execution
      • Instruction set
      • Instruction encoding
    • High-level frontend
    • Domain Specific Language
      • Unary map
      • Zip and binary map
      • Filter for all ETH-USDC swap prices on Uniswap
      • Calculate a 24-hour block-by-block moving average of the ETH-USDC pair on Uniswap
      • Compiler optimizations
Powered by GitBook
On this page
  1. Maru ZKVM

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.

PreviousInstruction encodingNextDomain Specific Language

Last updated 1 year ago