add basic compile test for Jolt

This commit is contained in:
Kevaundray Wedderburn
2025-05-13 17:21:59 +01:00
parent cf078f170b
commit 810471711f
7 changed files with 75 additions and 0 deletions

1
tests/jolt/compile/basic/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
target

View File

@@ -0,0 +1,25 @@
[package]
name = "basic"
version = "0.1.0"
edition = "2021"
[workspace]
members = ["guest"]
[profile.release]
debug = 1
codegen-units = 1
lto = "fat"
[dependencies]
jolt-sdk = { git = "https://github.com/a16z/jolt", features = ["host"] }
guest = { path = "./guest" }
ark-serialize = "0.5.0"
[features]
icicle = ["jolt-sdk/icicle"]
[patch.crates-io]
ark-ff = { git = "https://github.com/a16z/arkworks-algebra", branch = "v0.5.0-optimize-mul-u64" }
ark-ec = { git = "https://github.com/a16z/arkworks-algebra", branch = "v0.5.0-optimize-mul-u64" }
ark-serialize = { git = "https://github.com/a16z/arkworks-algebra", branch = "v0.5.0-optimize-mul-u64" }

View File

@@ -0,0 +1,10 @@
[package]
name = "guest"
version = "0.1.0"
edition = "2021"
[features]
guest = []
[dependencies]
jolt = { package = "jolt-sdk", git = "https://github.com/a16z/jolt" }

View File

@@ -0,0 +1,15 @@
#![cfg_attr(feature = "guest", no_std)]
#[jolt::provable]
fn fib(n: u32) -> u128 {
let mut a: u128 = 0;
let mut b: u128 = 1;
let mut sum: u128;
for _ in 1..n {
sum = a + b;
a = b;
b = sum;
}
// b
}

View File

@@ -0,0 +1,5 @@
#![cfg_attr(feature = "guest", no_std)]
#![no_main]
#[allow(unused_imports)]
use guest::*;

View File

@@ -0,0 +1,3 @@
[toolchain]
channel = "nightly"
targets = ["riscv32im-unknown-none-elf"]

View File

@@ -0,0 +1,16 @@
pub fn main() {
let target_dir = "/tmp/jolt-guest-targets";
let program = guest::compile_fib(target_dir);
let prover_preprocessing = guest::preprocess_prover_fib(&program);
let verifier_preprocessing = guest::preprocess_verifier_fib(&program);
let prove_fib = guest::build_prover_fib(program, prover_preprocessing);
let verify_fib = guest::build_verifier_fib(verifier_preprocessing);
let (output, proof) = prove_fib(50);
let is_valid = verify_fib(50, output, proof);
println!("output: {output}");
println!("valid: {is_valid}");
}