update bench jolt

This commit is contained in:
tanmoy
2024-11-24 17:55:28 +06:00
parent c44f97c629
commit c81f687c78
21 changed files with 530 additions and 535 deletions

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +1,5 @@
[package]
name = "nth_prime-native_jolt"
name = "fib"
version = "0.1.0"
edition = "2021"
@@ -12,7 +12,7 @@ codegen-units = 1
lto = "fat"
[dependencies]
jolt = { package = "jolt-sdk", git = "https://github.com/a16z/jolt", rev = "dd9e5c4bcf36ffeb75a576351807f8d86c33ec66", features = ["host"] }
jolt = { package = "jolt-sdk", git = "https://github.com/a16z/jolt", features = ["host"] }
guest = { path = "./guest" }
serde_json = "1.0.128"

View File

@@ -1,11 +0,0 @@
Input n read from JSON: 10
Trace length: 369
Prover Time 21.068039375s
Proof Size 281060
Verify Time 40.597584ms
result: 55
valid: true
Total Time elapsed: 21.249532792s

View File

@@ -11,4 +11,4 @@ path = "./src/lib.rs"
guest = []
[dependencies]
jolt = { package = "jolt-sdk", git = "https://github.com/a16z/jolt", rev = "dd9e5c4bcf36ffeb75a576351807f8d86c33ec66", features = ["guest-std"] }
jolt = { package = "jolt-sdk", git = "https://github.com/a16z/jolt", features = ["guest-std"] }

View File

@@ -10,6 +10,5 @@ fn fib(n: u64) -> u128 {
a = b;
b = sum;
}
b
}

1
jolt/algos/fib/input Normal file
View File

@@ -0,0 +1 @@
50000

Binary file not shown.

View File

@@ -1,3 +1,3 @@
[toolchain]
channel = "nightly-2024-09-30"
channel = "nightly-2024-08-01"
targets = ["riscv32im-unknown-none-elf"]

View File

@@ -1,41 +1,32 @@
use jolt::Serializable;
use serde_json::Value;
use std::fs::File;
use std::io::BufReader;
use std::io::{self, Read};
use std::num::ParseIntError;
pub fn main() {
let file = File::open("../../inputs/data.json").expect("Failed to open input file");
let reader = BufReader::new(file);
let json: Value = serde_json::from_reader(reader).expect("Failed to parse JSON");
let n = json["n"].as_u64().expect("Failed to parse n from JSON");
println!("Input n read from JSON: {}", n);
pub fn main() -> Result<(), Box<dyn std::error::Error>> {
let mut file = File::open("input")?;
let mut contents = String::new();
file.read_to_string(&mut contents)?;
let n: u64 = contents.trim().parse()?;
println!("n: {}", n);
let start = std::time::Instant::now();
// let prover_execution_trace = guest::analyze_fib(n);
// prover_execution_trace.clone().write_to_file("trace.txt".into()).expect("should write");
// let prover_execution_trace_duration = start.elapsed();
// println!("Trace length: {:?}", prover_execution_trace.trace_len());
// println!("Prover Execution Time {:?}", prover_execution_trace_duration);
println!();
let (prove_fib, verify_fib) = guest::build_fib();
let total = std::time::Instant::now();
let (prove, verify) = guest::build_fib();
println!("SRS Compute and Guest Program Compile Time: {:?}", total.elapsed());
let proving_time = std::time::Instant::now();
let (output, proof) = prove_fib(n);
let (output, proof) = prove(n);
println!("Prover Time {:?}", proving_time.elapsed());
proof
.save_to_file("proof.bin")
.expect("Failed to save proof to file");
println!("Proof Size {:?}", proof.size().unwrap());
println!();
let verify_time = std::time::Instant::now();
let is_valid = verify_fib(proof);
let is_valid = verify(proof);
println!("Verify Time {:?}", verify_time.elapsed());
println!();
println!("result: {:?}", output);
println!("valid: {}", is_valid);
println!("Total Time elapsed: {:?}", start.elapsed());
}
println!("isProofValid: {}", is_valid);
println!("Total Time Elapsed: (build + prove + verify): {:?}", total.elapsed());
Ok(())
}

Binary file not shown.

View File

@@ -1,9 +0,0 @@
Trace length: 141
Prover Time 31.297901583s
Proof Size 266277
Verify Time 45.633542ms
result: 30
valid: true
Total Time elapsed: 31.505612833s

Binary file not shown.

View File

@@ -1,15 +1,14 @@
use jolt::Serializable;
pub fn main() {
let start = std::time::Instant::now();
let total = std::time::Instant::now();
let (prove, verify) = guest::build_pos();
println!("SRS Compute and Guest Program Compile Time: {:?}", total.elapsed());
let proving_time = std::time::Instant::now();
let (output, proof) = prove();
let input = &[5u8; 10000];
let (output, proof) = prove(input);
println!("Prover Time {:?}", proving_time.elapsed());
proof
.save_to_file("proof.bin")
.expect("Failed to save proof to file");
println!("Proof Size {:?}", proof.size().unwrap());
println!();
@@ -18,8 +17,6 @@ pub fn main() {
println!("Verify Time {:?}", verify_time.elapsed());
println!();
println!("result: {:?}", output);
println!("valid: {}", is_valid);
println!("Total Time elapsed: {:?}", start.elapsed());
println!("isProofValid: {}", is_valid);
println!("Total Time Elapsed: (build + prove + verify): {:?}", total.elapsed());
}

View File

@@ -1868,15 +1868,6 @@ dependencies = [
"libc",
]
[[package]]
name = "nth_prime-native_jolt"
version = "0.1.0"
dependencies = [
"guest",
"jolt-sdk",
"serde_json",
]
[[package]]
name = "nu-ansi-term"
version = "0.46.0"
@@ -2758,6 +2749,15 @@ dependencies = [
"serde",
]
[[package]]
name = "sha"
version = "0.1.0"
dependencies = [
"guest",
"jolt-sdk",
"serde_json",
]
[[package]]
name = "sha2"
version = "0.10.8"

View File

@@ -1,5 +1,5 @@
[package]
name = "nth_prime-native_jolt"
name = "sha"
version = "0.1.0"
edition = "2021"

View File

@@ -3,7 +3,7 @@
use sha2::{Sha256, Digest};
#[jolt::provable]
#[jolt::provable(max_input_size = 20000, max_output_size = 20000)]
fn sha2(input: &[u8]) -> [u8; 32] {
let mut hasher = Sha256::new();
hasher.update(input);

Binary file not shown.

View File

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

View File

@@ -1,27 +1,22 @@
use jolt::Serializable;
pub fn main() {
let start = std::time::Instant::now();
let (prove_sha2, verify_sha2) = guest::build_sha2();
let total = std::time::Instant::now();
let (prove, verify) = guest::build_sha2();
println!("SRS Compute and Guest Program Compile Time: {:?}", total.elapsed());
let proving_time = std::time::Instant::now();
let input = &[5u8; 4000];
let (output, proof) = prove_sha2(input);
let input = &[5u8; 10000];
let (output, proof) = prove(input);
println!("Prover Time {:?}", proving_time.elapsed());
proof
.save_to_file("proof.bin")
.expect("Failed to save proof to file");
println!("Proof Size {:?}", proof.size().unwrap());
println!();
let verify_time = std::time::Instant::now();
let is_valid = verify_sha2(proof);
let is_valid = verify(proof);
println!("Verify Time {:?}", verify_time.elapsed());
println!();
println!("result: {:?}", output);
println!("valid: {}", is_valid);
println!("Total Time elapsed: {:?}", start.elapsed());
}
println!("isProofValid: {}", is_valid);
println!("Total Time Elapsed: (build + prove + verify): {:?}", total.elapsed());
}

View File

@@ -1,4 +0,0 @@
{
"n": 37500,
"expected": 541
}