diff options
Diffstat (limited to 'zkvms')
| -rw-r--r-- | zkvms/zkm/0001-chore-Increase-DEGREE_BITS_RANGE.patch | 42 | ||||
| -rw-r--r-- | zkvms/zkm/default.nix | 36 | ||||
| -rw-r--r-- | zkvms/zkm/host/Cargo.toml | 2 | ||||
| -rw-r--r-- | zkvms/zkm/host/src/main.rs | 16 |
4 files changed, 12 insertions, 84 deletions
diff --git a/zkvms/zkm/0001-chore-Increase-DEGREE_BITS_RANGE.patch b/zkvms/zkm/0001-chore-Increase-DEGREE_BITS_RANGE.patch deleted file mode 100644 index a8d0a8a..0000000 --- a/zkvms/zkm/0001-chore-Increase-DEGREE_BITS_RANGE.patch +++ /dev/null @@ -1,42 +0,0 @@ -From 1ad671fc0694f28c3c8fe224d33b403bc6be0952 Mon Sep 17 00:00:00 2001 -From: Kamen Mladenov <kamen@syndamia.com> -Date: Fri, 21 Feb 2025 11:33:26 +0200 -Subject: [PATCH] chore: Increase DEGREE_BITS_RANGE - -After SHA256 precompile was introduced, the DEGREE_BITS_RANGE value was -increased to 12 elements. -https://github.com/zkMIPS/zkm/pull/222 ---- - sdk/src/local/util.rs | 16 ++++++++++++++-- - 1 file changed, 14 insertions(+), 2 deletions(-) - -diff --git a/sdk/src/local/util.rs b/sdk/src/local/util.rs -index 702ae8b..e389f1e 100644 ---- a/sdk/src/local/util.rs -+++ b/sdk/src/local/util.rs -@@ -16,8 +16,20 @@ use zkm_prover::cpu::kernel::assembler::segment_kernel; - use zkm_prover::fixed_recursive_verifier::AllRecursiveCircuits; - use zkm_prover::generation::state::{AssumptionReceipts, Receipt}; - --const DEGREE_BITS_RANGE: [Range<usize>; 8] = -- [10..21, 12..22, 11..21, 8..21, 6..21, 6..21, 6..21, 13..23]; -+const DEGREE_BITS_RANGE: [Range<usize>; 12] = [ -+ 10..21, -+ 12..22, -+ 11..21, -+ 8..21, -+ 6..10, -+ 6..10, -+ 6..16, -+ 6..16, -+ 6..16, -+ 6..16, -+ 6..21, -+ 13..23, -+]; - - const D: usize = 2; - type C = PoseidonGoldilocksConfig; --- -2.47.0 - diff --git a/zkvms/zkm/default.nix b/zkvms/zkm/default.nix index 4b4cfe2..c6c2230 100644 --- a/zkvms/zkm/default.nix +++ b/zkvms/zkm/default.nix @@ -1,30 +1,6 @@ { zkvmLib, lib, just, metacraft-labs, metacraft-labs-old, protobuf , pkg-config, openssl, buildGoModule, fetchFromGitHub, craneLib-default, }: let - zkm_libsnark = buildGoModule rec { - pname = "zkm_libsnark"; - version = "0.1.0"; - - src = fetchFromGitHub { - owner = "zkMIPS"; - repo = "zkm-project-template"; - sparseCheckout = [ "sdk/src/local/libsnark" ]; - rev = "155221dfa05daf31d7bfe6b601116ef5a03b82c9"; - hash = "sha256-6hT7cMD3iXN65SFFgMHIPKzzQ212/uhZNIpjJNZ0Dek="; - }; - - sourceRoot = "${src.name}/sdk/src/local/libsnark"; - - vendorHash = "sha256-tGajRfJ8G4M89QSiJnjpTzQ3+VA2RLkavD1ipANeOSI="; - - buildPhase = "sh ./compile.sh"; - - installPhase = '' - mkdir -p "$out"/lib - mv libsnark.so "$out"/lib/ - ''; - }; - commonArgs = { pname = "zkm"; inherit (metacraft-labs.zkm) version; @@ -37,14 +13,6 @@ let }; nativeBuildInputs = [ pkg-config openssl protobuf metacraft-labs.zkm ]; - - overrideVendorGitCheckout = ps: drv: - if drv.src.shortRev == "155221d" - && builtins.any (p: p.name == "zkm-sdk") ps then - drv.overrideAttrs - (_: { patches = [ ./0001-chore-Increase-DEGREE_BITS_RANGE.patch ]; }) - else - drv; }; craneLib = craneLib-default.overrideToolchain metacraft-labs.zkm; @@ -60,12 +28,12 @@ in zkvmLib.buildPackage craneLib (commonArgs // { ''; preBuild = '' - export RUSTFLAGS="-L ${zkm_libsnark}/lib" + export RUSTFLAGS="-L ${metacraft-labs.zkm}/lib" ''; hostToolchain = metacraft-labs-old.zkm; - preRunLibraries = [ openssl zkm_libsnark ]; + preRunLibraries = [ openssl metacraft-labs.zkm ]; preRun = '' export ELF_PATH="$out/bin/guest" 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. |
