From c7a0a23f5c6dfacc933526d02e8da59384898758 Mon Sep 17 00:00:00 2001 From: Kamen Mladenov Date: Fri, 21 Mar 2025 13:01:52 +0200 Subject: feat(zkvms/zkm): Remove SDK override, Go lib build, update SDK usage Update SDK usage, according to their new methods. ZKM moved their Go library to the zkVM repo. Their updated SDK also don't require the patch. --- zkvms/zkm/host/Cargo.toml | 2 ++ zkvms/zkm/host/src/main.rs | 16 ++++++++-------- 2 files changed, 10 insertions(+), 8 deletions(-) (limited to 'zkvms/zkm/host') 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. -- cgit v1.2.3