aboutsummaryrefslogtreecommitdiff
path: root/zkvms/jolt/host
diff options
context:
space:
mode:
authorKamen Mladenov <kamen@syndamia.com>2025-01-17 17:08:11 +0200
committerKamen Mladenov <kamen@syndamia.com>2025-01-17 17:08:11 +0200
commitef57244d034b714709bb566c16819d54e3d33d6b (patch)
tree2463dfbcb3658b79405de81d0260a7e553818750 /zkvms/jolt/host
parent6874b8cbd027da0e1c06eb36b218bd6868660358 (diff)
downloadzkVMs-benchmarks-ef57244d034b714709bb566c16819d54e3d33d6b.tar
zkVMs-benchmarks-ef57244d034b714709bb566c16819d54e3d33d6b.tar.gz
zkVMs-benchmarks-ef57244d034b714709bb566c16819d54e3d33d6b.zip
feat(zkvms): Add jolt host
It expects certain custom funcitonality from guest
Diffstat (limited to 'zkvms/jolt/host')
-rw-r--r--zkvms/jolt/host/Cargo.toml14
-rw-r--r--zkvms/jolt/host/src/main.rs23
2 files changed, 37 insertions, 0 deletions
diff --git a/zkvms/jolt/host/Cargo.toml b/zkvms/jolt/host/Cargo.toml
new file mode 100644
index 0000000..aae636f
--- /dev/null
+++ b/zkvms/jolt/host/Cargo.toml
@@ -0,0 +1,14 @@
+[package]
+name = "host-jolt"
+version = "0.1.0"
+edition = "2021"
+
+[lib]
+path = "/nix/store/q8ix3vj7dw6w57zhjc9wa38vicymql0g-jolt-unstable-2024-12-18/src/lib.rs"
+
+[dependencies]
+jolt-sdk = { path = "/nix/store/q8ix3vj7dw6w57zhjc9wa38vicymql0g-jolt-unstable-2024-12-18/jolt-sdk", features = ["host"] }
+jolt-core = { path = "/nix/store/q8ix3vj7dw6w57zhjc9wa38vicymql0g-jolt-unstable-2024-12-18/jolt-core" }
+
+guest = { path = "../guest" }
+zkvms_host_io = { path = "../../../zkvms_host_io" }
diff --git a/zkvms/jolt/host/src/main.rs b/zkvms/jolt/host/src/main.rs
new file mode 100644
index 0000000..66d52a9
--- /dev/null
+++ b/zkvms/jolt/host/src/main.rs
@@ -0,0 +1,23 @@
+use zkvms_host_io::{read_args, RunType::{ Execute, Prove, Verify }};
+
+type Input = (Vec<Vec<bool>>, u32, Vec<Vec<u32>>);
+
+pub fn main() {
+ let run_info = read_args();
+
+ let elf_path = std::env::var("ELF_PATH").expect("ELF PATH is missing");
+ let (prove_guest, verify_guest) = guest::guest_closures(elf_path);
+
+ match run_info.run_type {
+ Execute => unreachable!(),
+ Prove => {
+ let (output, _) = prove_guest(run_info.input);
+ println!("Prove output: {}", output);
+ },
+ Verify => {
+ let (_, proof) = prove_guest(run_info.input);
+ let is_valid = verify_guest(proof);
+ println!("Verify is valid: {}", is_valid);
+ },
+ }
+}