aboutsummaryrefslogtreecommitdiff
path: root/zkvms/zkm/host
diff options
context:
space:
mode:
Diffstat (limited to 'zkvms/zkm/host')
-rw-r--r--zkvms/zkm/host/Cargo.toml2
-rw-r--r--zkvms/zkm/host/src/main.rs16
2 files changed, 10 insertions, 8 deletions
diff --git a/zkvms/zkm/host/Cargo.toml b/zkvms/zkm/host/Cargo.toml
index 0b45ccb..dce7bd6 100644
--- a/zkvms/zkm/host/Cargo.toml
+++ b/zkvms/zkm/host/Cargo.toml
@@ -5,6 +5,7 @@ edition = "2021"
[dependencies]
zkm-sdk = { git = "https://github.com/zkMIPS/zkm-project-template", features = ["snark"] }
+zkm-recursion = { git = "https://github.com/zkMIPS/zkm", branch = "main", default-features = false }
bincode = "1.3.3"
tokio = { version = "1.21.0", features = ["macros", "rt-multi-thread", "signal"] }
anyhow = "1.0.75"
@@ -14,3 +15,4 @@ zkvms_host_io = { path = "../../../zkvms_host_io" }
[patch."https://github.com/zkMIPS/zkm"]
zkm-emulator = { path = "/nix/store/71c0b7qyjy9zbaa5gkz5qcxpz46i0h0r-zkm-unstable-2025-03-11/emulator" }
zkm-prover = { path = "/nix/store/71c0b7qyjy9zbaa5gkz5qcxpz46i0h0r-zkm-unstable-2025-03-11/prover" }
+zkm-recursion = { path = "/nix/store/71c0b7qyjy9zbaa5gkz5qcxpz46i0h0r-zkm-unstable-2025-03-11/recursion" }
diff --git a/zkvms/zkm/host/src/main.rs b/zkvms/zkm/host/src/main.rs
index db1a5cb..f608746 100644
--- a/zkvms/zkm/host/src/main.rs
+++ b/zkvms/zkm/host/src/main.rs
@@ -12,13 +12,9 @@ use zkvms_host_io::{
};
async fn setup(
- prover_client: &mut ProverClient,
- prover_input: &mut ProverInput,
client_cfg: &mut ClientCfg,
) {
- let generation = prover_client
- .setup_and_generate_sol_verifier(&client_cfg.zkm_prover, &client_cfg.vk_path, &prover_input)
- .await;
+ let generation = zkm_recursion::groth16_setup(&client_cfg.vk_path);
if let Err(e) = generation {
panic!("Failed setup! Error: {e}");
@@ -55,7 +51,7 @@ async fn prove(
let prover_result = get_proof(prover_client, prover_input).await;
prover_client
- .process_proof_results(&prover_result, &prover_input, &proof_results_path, "local")
+ .process_proof_results(&prover_result, &prover_input, &proof_results_path)
.expect("process proof results error");
}
@@ -73,7 +69,11 @@ async fn main() -> Result<()> {
let proof_results_path = run_info.env_or("PROOF_RESULTS_PATH", "/tmp/contracts");
let vk_path = run_info.env_or("VERIFYING_KEY_PATH", "/tmp/input");
- let mut client_config = ClientCfg::new("local".to_string(), vk_path.to_owned());
+ let mut client_config = ClientCfg {
+ zkm_prover_type: "local".to_string(),
+ vk_path: vk_path.to_owned(),
+ ..Default::default()
+ };
let mut prover_client = ProverClient::new(&client_config).await;
@@ -96,7 +96,7 @@ async fn main() -> Result<()> {
};
let start = Instant::now();
- setup(&mut prover_client, &mut prover_input, &mut client_config).await;
+ setup(&mut client_config).await;
match run_info.run_type {
// only excute the guest program without generating the proof.