Thanks to visit codestin.com
Credit goes to github.com

Skip to content

varun-doshi/ere

 
 

Repository files navigation

Ere logo

Ere – Unified zkVM Interface & Toolkit

Compile. Execute. Prove. Verify.
One ergonomic Rust API, multiple zero‑knowledge virtual machines.


Table of Contents

Features

  • Unified Rust API for compiling, executing, proving & verifying zkVM programs
  • Pluggable back‑ends – easily switch between different zkVMs
  • SDK bootstrap scripts for every supported zkVM
  • End‑to‑end test suite covering compilation → proof → verification for each backend

Supported zkVMs

  • SP1
  • OpenVM
  • Risc Zero
  • Jolt
  • Pico
  • Zisk

Quick Start

1. Install SDKs

bash scripts/sdk_installers/install_sp1_sdk.sh
bash scripts/sdk_installers/install_jolt_sdk.sh

2. Add Dependencies

# Cargo.toml
[dependencies]
zkvm-interface = { path = "crates/zkvm-interface" }
ere-sp1        = { path = "crates/ere-sp1" }

3. Compile & Prove Example

use zkvm_interface::{Compiler, zkVM, Input};
use ere_sp1::{EreSP1, RV32_IM_SUCCINCT_ZKVM_ELF};

let guest = std::path::Path::new("guest/hello");
let elf    = RV32_IM_SUCCINCT_ZKVM_ELF::compile(guest)?;      // compile
let mut io = Input::new();
io.write(&42u32)?;
let zkvm = EreSP1::new(elf);
let (proof, _report) = zkvm.prove(&io)?;             // prove
zkvm.verify(&elf, &proof)?;                                // verify

4. Run the Test Suite

cargo test --workspace

Tip Use the provided Dockerfiles for a ready‑made toolchain.

Directory Layout

crates/
  zkvm-interface/     ← core traits & types
  ere-{backend}/      ← backend adapters (sp1, openvm, …)
tests/                ← guest programs & integration tests
scripts/sdk_installers/ ← SDK install helpers
docker/               ← Dockerfiles & build contexts

Architecture

The Interface

zkvm-interface exposes two core traits:

  • Compiler – compile a guest project into the correct zkVM artifact. For most this will be a RISCV ELF binary or some type that wraps it and includes extra metadata such as a proving and verifying key.
  • zkVM – execute, prove & verify that artifact

Backend Crates

Each ere-{backend} crate implements the above traits for its zkVM.

Input Handling

The Input type supports both chunked (Vec<Vec<u8>>) and contiguous (Vec<u8>) modes to satisfy differing backend APIs.

Contributing

PRs and issues are welcome!

Disclaimer

zkVMs evolve quickly; expect breaking changes. Although the API is generic, its primary target is zkEVMs, which may for example, guide the default set of precompiles.

License

Licensed under either of

at your option.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Rust 83.6%
  • Shell 10.3%
  • Dockerfile 6.1%