From 6f2fb4d8144b66b4e96fec71b0ff92a92562bab3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Fri, 21 Nov 2025 17:21:27 -0300 Subject: [PATCH 01/12] implement for other zkvms --- crates/l2/prover/src/backend/risc0.rs | 51 ++++++++++++++++++++++----- crates/l2/prover/src/backend/sp1.rs | 47 ++++++++++++++++++------ 2 files changed, 79 insertions(+), 19 deletions(-) diff --git a/crates/l2/prover/src/backend/risc0.rs b/crates/l2/prover/src/backend/risc0.rs index 3e9c7897074..d6ffc166a5d 100644 --- a/crates/l2/prover/src/backend/risc0.rs +++ b/crates/l2/prover/src/backend/risc0.rs @@ -12,7 +12,7 @@ use risc0_zkvm::{ serde::Error as Risc0SerdeError, }; use rkyv::rancor::Error as RkyvError; -use std::time::Instant; +use std::time::{Duration, Instant}; use tracing::info; #[derive(thiserror::Error, Debug)] @@ -39,15 +39,26 @@ pub fn execute(input: ProgramInput) -> Result<(), Box> { let executor = default_executor(); - let now = Instant::now(); let _session_info = executor.execute(env, ZKVM_RISC0_PROGRAM_ELF)?; - let elapsed = now.elapsed(); - - info!("Successfully executed RISC0 program in {elapsed:.2?}"); Ok(()) } +pub fn execute_timed(input: ProgramInput) -> Result> { + let bytes = rkyv::to_bytes::(&input)?; + let env = ExecutorEnv::builder() + .write_slice(bytes.as_slice()) + .build()?; + + let executor = default_executor(); + + let start = Instant::now(); + let _session_info = executor.execute(env, ZKVM_RISC0_PROGRAM_ELF)?; + let duration = start.elapsed(); + + Ok(duration) +} + pub fn prove( input: ProgramInput, format: ProofFormat, @@ -67,15 +78,37 @@ pub fn prove( ProofFormat::Groth16 => ProverOpts::groth16(), }; - let now = Instant::now(); let prove_info = prover.prove_with_opts(env, ZKVM_RISC0_PROGRAM_ELF, &prover_opts)?; - let elapsed = now.elapsed(); - - info!("Successfully proved RISC0 program in {elapsed:.2?}"); Ok(prove_info.receipt) } +pub fn prove_timed( + input: ProgramInput, + format: ProofFormat, +) -> Result<(Receipt, Duration), Box> { + let mut stdout = Vec::new(); + + let bytes = rkyv::to_bytes::(&input)?; + let env = ExecutorEnv::builder() + .stdout(&mut stdout) + .write_slice(bytes.as_slice()) + .build()?; + + let prover = default_prover(); + + let prover_opts = match format { + ProofFormat::Compressed => ProverOpts::succinct(), + ProofFormat::Groth16 => ProverOpts::groth16(), + }; + + let start = Instant::now(); + let prove_info = prover.prove_with_opts(env, ZKVM_RISC0_PROGRAM_ELF, &prover_opts)?; + let duration = start.elapsed(); + + Ok((prove_info.receipt, duration)) +} + pub fn verify(receipt: &Receipt) -> Result<(), Error> { receipt.verify(ZKVM_RISC0_PROGRAM_ID)?; Ok(()) diff --git a/crates/l2/prover/src/backend/sp1.rs b/crates/l2/prover/src/backend/sp1.rs index b336ffb9139..0d26238b849 100644 --- a/crates/l2/prover/src/backend/sp1.rs +++ b/crates/l2/prover/src/backend/sp1.rs @@ -13,7 +13,7 @@ use sp1_sdk::{ HashableKey, Prover, SP1ProofMode, SP1ProofWithPublicValues, SP1ProvingKey, SP1Stdin, SP1VerifyingKey, }; -use std::{fmt::Debug, sync::OnceLock, time::Instant}; +use std::{fmt::Debug, sync::OnceLock, time::{Duration, Instant}}; use tracing::info; use url::Url; @@ -84,15 +84,25 @@ pub fn execute(input: ProgramInput) -> Result<(), Box> { let setup = PROVER_SETUP.get_or_init(|| init_prover_setup(None)); - let now = Instant::now(); setup.client.execute(ZKVM_SP1_PROGRAM_ELF, &stdin)?; - let elapsed = now.elapsed(); - - info!("Successfully executed SP1 program in {elapsed:.2?}"); Ok(()) } +pub fn execute_timed(input: ProgramInput) -> Result> { + let mut stdin = SP1Stdin::new(); + let bytes = rkyv::to_bytes::(&input)?; + stdin.write_slice(bytes.as_slice()); + + let setup = PROVER_SETUP.get_or_init(|| init_prover_setup(None)); + + let start = Instant::now(); + setup.client.execute(ZKVM_SP1_PROGRAM_ELF, &stdin)?; + let duration = start.elapsed(); + + Ok(duration) +} + pub fn prove( input: ProgramInput, format: ProofFormat, @@ -103,21 +113,38 @@ pub fn prove( let setup = PROVER_SETUP.get_or_init(|| init_prover_setup(None)); - // contains the receipt along with statistics about execution of the guest let format = match format { ProofFormat::Compressed => SP1ProofMode::Compressed, ProofFormat::Groth16 => SP1ProofMode::Groth16, }; - let now = Instant::now(); let proof = setup.client.prove(&setup.pk, &stdin, format)?; - let elapsed = now.elapsed(); - - info!("Successfully proved SP1 program in {elapsed:.2?}"); Ok(ProveOutput::new(proof, setup.vk.clone())) } +pub fn prove_timed( + input: ProgramInput, + format: ProofFormat, +) -> Result<(ProveOutput, Duration), Box> { + let mut stdin = SP1Stdin::new(); + let bytes = rkyv::to_bytes::(&input)?; + stdin.write_slice(bytes.as_slice()); + + let setup = PROVER_SETUP.get_or_init(|| init_prover_setup(None)); + + let format = match format { + ProofFormat::Compressed => SP1ProofMode::Compressed, + ProofFormat::Groth16 => SP1ProofMode::Groth16, + }; + + let start = Instant::now(); + let proof = setup.client.prove(&setup.pk, &stdin, format)?; + let duration = start.elapsed(); + + Ok((ProveOutput::new(proof, setup.vk.clone()), duration)) +} + pub fn verify(output: &ProveOutput) -> Result<(), Box> { let setup = PROVER_SETUP.get_or_init(|| init_prover_setup(None)); setup.client.verify(&output.proof, &output.vk)?; From 048bcf85477cc9ba7edadc1e1a651fa19e4a7bf9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Fri, 21 Nov 2025 17:27:03 -0300 Subject: [PATCH 02/12] also exec --- crates/l2/prover/src/backend/exec.rs | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/crates/l2/prover/src/backend/exec.rs b/crates/l2/prover/src/backend/exec.rs index 31d10b93b30..4f31e3a950f 100644 --- a/crates/l2/prover/src/backend/exec.rs +++ b/crates/l2/prover/src/backend/exec.rs @@ -1,4 +1,4 @@ -use std::time::Instant; +use std::time::{Duration, Instant}; use tracing::{info, warn}; use ethrex_l2_common::{ @@ -16,6 +16,14 @@ pub fn execute(input: ProgramInput) -> Result<(), Box> { Ok(()) } +pub fn execute_timed(input: ProgramInput) -> Result> { + let now = Instant::now(); + execution_program(input)?; + let duration = now.elapsed(); + + Ok(duration) +} + pub fn prove( input: ProgramInput, _format: ProofFormat, @@ -25,6 +33,18 @@ pub fn prove( Ok(output) } +pub fn prove_timed( + input: ProgramInput, + _format: ProofFormat, +) -> Result<(ProgramOutput, Duration), Box> { + warn!("\"exec\" prover backend generates no proof, only executes"); + let now = Instant::now(); + let output = execution_program(input)?; + let duration = now.elapsed(); + + Ok((output, duration)) +} + pub fn verify(_proof: &ProgramOutput) -> Result<(), Box> { warn!("\"exec\" prover backend generates no proof, verification always succeeds"); Ok(()) From e45d96e5e93a77f7f2c80de7bea65a41680096ff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Fri, 21 Nov 2025 17:32:51 -0300 Subject: [PATCH 03/12] add functions --- crates/l2/prover/src/lib.rs | 38 +++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/crates/l2/prover/src/lib.rs b/crates/l2/prover/src/lib.rs index c76ee586b0c..9588ef39ba5 100644 --- a/crates/l2/prover/src/lib.rs +++ b/crates/l2/prover/src/lib.rs @@ -5,6 +5,7 @@ pub mod config; use config::ProverConfig; use ethrex_l2_common::prover::{BatchProof, ProofFormat}; use guest_program::input::ProgramInput; +use std::time::Duration; use tracing::warn; use crate::backend::{Backend, ProveOutput}; @@ -29,6 +30,22 @@ pub fn execute(backend: Backend, input: ProgramInput) -> Result<(), Box Result> { + match backend { + Backend::Exec => backend::exec::execute_timed(input), + #[cfg(feature = "sp1")] + Backend::SP1 => backend::sp1::execute_timed(input), + #[cfg(feature = "risc0")] + Backend::RISC0 => backend::risc0::execute_timed(input), + #[cfg(feature = "zisk")] + Backend::ZisK => backend::zisk::execute_timed(input), + } +} + /// Generate a proof using the specified backend. pub fn prove( backend: Backend, @@ -48,6 +65,27 @@ pub fn prove( } } +/// Generate a proof using the specified backend and measure the duration. +pub fn prove_timed( + backend: Backend, + input: ProgramInput, + format: ProofFormat, +) -> Result<(ProveOutput, Duration), Box> { + match backend { + Backend::Exec => backend::exec::prove_timed(input, format) + .map(|(output, duration)| (ProveOutput::Exec(output), duration)), + #[cfg(feature = "sp1")] + Backend::SP1 => backend::sp1::prove_timed(input, format) + .map(|(output, duration)| (ProveOutput::SP1(output), duration)), + #[cfg(feature = "risc0")] + Backend::RISC0 => backend::risc0::prove_timed(input, format) + .map(|(receipt, duration)| (ProveOutput::RISC0(receipt), duration)), + #[cfg(feature = "zisk")] + Backend::ZisK => backend::zisk::prove_timed(input, format) + .map(|(proof, duration)| (ProveOutput::ZisK(proof), duration)), + } +} + pub fn to_batch_proof( proof: ProveOutput, format: ProofFormat, From 7f0d34513e093f983371c9a59df5bedc00012047 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Fri, 21 Nov 2025 18:22:51 -0300 Subject: [PATCH 04/12] partialeq for backend --- crates/l2/prover/src/backend/mod.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/l2/prover/src/backend/mod.rs b/crates/l2/prover/src/backend/mod.rs index 13b21093a9f..6a77a432c06 100644 --- a/crates/l2/prover/src/backend/mod.rs +++ b/crates/l2/prover/src/backend/mod.rs @@ -18,7 +18,7 @@ pub mod zisk; #[cfg(feature = "openvm")] pub mod openvm; -#[derive(Default, Debug, Deserialize, Serialize, Copy, Clone, ValueEnum)] +#[derive(Default, Debug, Deserialize, Serialize, Copy, Clone, ValueEnum, PartialEq)] pub enum Backend { #[default] Exec, From 1ac9b3a918fb7d2cebee3b032e2c0e6f035246c0 Mon Sep 17 00:00:00 2001 From: ilitteri Date: Mon, 1 Dec 2025 13:12:01 -0300 Subject: [PATCH 05/12] Impl timed api for zisk --- crates/l2/prover/src/backend/zisk.rs | 50 ++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/crates/l2/prover/src/backend/zisk.rs b/crates/l2/prover/src/backend/zisk.rs index 1d18b0c50da..3f38049b5f4 100644 --- a/crates/l2/prover/src/backend/zisk.rs +++ b/crates/l2/prover/src/backend/zisk.rs @@ -36,6 +36,34 @@ pub fn execute(input: ProgramInput) -> Result<(), Box> { Ok(()) } +pub fn execute_timed( + input: ProgramInput, +) -> Result> { + write_elf_file()?; + + let input_bytes = rkyv::to_bytes::(&input)?; + std::fs::write(INPUT_PATH, input_bytes.as_slice())?; + + let start = std::time::Instant::now(); + let args = vec!["--elf", ELF_PATH, "--inputs", INPUT_PATH]; + let output = Command::new("ziskemu") + .args(args) + .stdin(Stdio::inherit()) + .stderr(Stdio::inherit()) + .output()?; + + if !output.status.success() { + return Err(format!( + "ZisK execution failed: {}", + String::from_utf8_lossy(&output.stderr) + ) + .into()); + } + let duration = start.elapsed(); + + Ok(duration) +} + pub fn prove( input: ProgramInput, format: ProofFormat, @@ -84,6 +112,28 @@ pub fn prove( Ok(output) } +pub fn prove_timed( + input: ProgramInput, + format: ProofFormat, +) -> Result<(ProveOutput, std::time::Duration), Box> { + let proof = prove(input, format)?; + + #[derive(serde::Deserialize)] + struct ZisKResult { + cycles: u64, + id: String, + time: f64, + } + + let zisk_result_bytes = std::fs::read(format!("{OUTPUT_DIR_PATH}/result.json"))?; + + let zisk_result: ZisKResult = serde_json::from_slice(&zisk_result_bytes)?; + + let duration = std::time::Duration::from_secs_f64(zisk_result.time); + + Ok((proof, duration)) +} + pub fn verify(_output: &ProgramOutput) -> Result<(), Box> { unimplemented!("verify is not implemented for ZisK backend") } From 76eff4ec7e23f1b15a91b1903da1d8578a7fb72b Mon Sep 17 00:00:00 2001 From: ilitteri Date: Mon, 1 Dec 2025 13:12:11 -0300 Subject: [PATCH 06/12] Impl timed api for openvm --- crates/l2/prover/src/backend/openvm.rs | 42 ++++++++++++++++++++++++++ crates/l2/prover/src/lib.rs | 3 ++ 2 files changed, 45 insertions(+) diff --git a/crates/l2/prover/src/backend/openvm.rs b/crates/l2/prover/src/backend/openvm.rs index 401ec2e26e9..23db855e9e4 100644 --- a/crates/l2/prover/src/backend/openvm.rs +++ b/crates/l2/prover/src/backend/openvm.rs @@ -24,6 +24,22 @@ pub fn execute(input: ProgramInput) -> Result<(), Box> { Ok(()) } +pub fn execute_timed( + input: ProgramInput, +) -> Result> { + let sdk = Sdk::standard(); + + let mut stdin = StdIn::default(); + let bytes = rkyv::to_bytes::(&input)?; + stdin.write_bytes(bytes.as_slice()); + + let start = std::time::Instant::now(); + sdk.execute(PROGRAM_ELF, stdin.clone())?; + let duration = start.elapsed(); + + Ok(duration) +} + pub fn prove( input: ProgramInput, format: ProofFormat, @@ -48,6 +64,32 @@ pub fn prove( Ok(proof) } +pub fn prove_timed( + input: ProgramInput, + format: ProofFormat, +) -> Result<(ProveOutput, std::time::Duration), Box> { + let sdk = Sdk::standard(); + + let mut stdin = StdIn::default(); + let bytes = rkyv::to_bytes::(&input)?; + stdin.write_bytes(bytes.as_slice()); + + let start = std::time::Instant::now(); + let proof = match format { + ProofFormat::Compressed => { + let (proof, _) = sdk.prove(PROGRAM_ELF, stdin.clone())?; + ProveOutput::Compressed(proof) + } + ProofFormat::Groth16 => { + let proof = sdk.prove_evm(PROGRAM_ELF, stdin.clone())?; + ProveOutput::Groth16(proof) + } + }; + let duration = start.elapsed(); + + Ok((proof, duration)) +} + pub fn to_batch_proof( _proof: ProveOutput, _format: ProofFormat, diff --git a/crates/l2/prover/src/lib.rs b/crates/l2/prover/src/lib.rs index 9588ef39ba5..811ee49d884 100644 --- a/crates/l2/prover/src/lib.rs +++ b/crates/l2/prover/src/lib.rs @@ -83,6 +83,9 @@ pub fn prove_timed( #[cfg(feature = "zisk")] Backend::ZisK => backend::zisk::prove_timed(input, format) .map(|(proof, duration)| (ProveOutput::ZisK(proof), duration)), + #[cfg(feature = "openvm")] + Backend::OpenVM => backend::openvm::prove_timed(input, format) + .map(|(proof, duration)| (ProveOutput::OpenVM(proof), duration)), } } From 4cc807036250e91a25e1ea9c89b9e442456c67c5 Mon Sep 17 00:00:00 2001 From: ilitteri Date: Mon, 1 Dec 2025 14:01:58 -0300 Subject: [PATCH 07/12] Underscore unused fields --- crates/l2/prover/src/backend/zisk.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/crates/l2/prover/src/backend/zisk.rs b/crates/l2/prover/src/backend/zisk.rs index 3f38049b5f4..68dbfe4fcfb 100644 --- a/crates/l2/prover/src/backend/zisk.rs +++ b/crates/l2/prover/src/backend/zisk.rs @@ -120,8 +120,8 @@ pub fn prove_timed( #[derive(serde::Deserialize)] struct ZisKResult { - cycles: u64, - id: String, + _cycles: u64, + _id: String, time: f64, } From d3e0bbe2c046560d59846c6a528476ede98efb39 Mon Sep 17 00:00:00 2001 From: ilitteri Date: Mon, 1 Dec 2025 14:02:30 -0300 Subject: [PATCH 08/12] fmt --- crates/l2/prover/Cargo.toml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/crates/l2/prover/Cargo.toml b/crates/l2/prover/Cargo.toml index 159c5b71099..fe537e70152 100644 --- a/crates/l2/prover/Cargo.toml +++ b/crates/l2/prover/Cargo.toml @@ -79,10 +79,7 @@ openvm = [ profiling = ["sp1-sdk?/profiling"] gpu = ["risc0-zkvm?/cuda", "sp1-sdk?/cuda", "openvm-sdk?/cuda"] -l2 = [ - "guest_program/l2", - "ethrex-l2/l2", -] +l2 = ["guest_program/l2", "ethrex-l2/l2"] # temporary feature until we fix cargo-zisk setup-rom from failing in the CI ci = ["guest_program/ci"] From f1bd0d7535b27043d8e783841e0b758a68ca1e9d Mon Sep 17 00:00:00 2001 From: ilitteri Date: Mon, 1 Dec 2025 14:33:55 -0300 Subject: [PATCH 09/12] fix --- crates/l2/prover/src/backend/zisk.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/crates/l2/prover/src/backend/zisk.rs b/crates/l2/prover/src/backend/zisk.rs index 68dbfe4fcfb..b0627a9b4a9 100644 --- a/crates/l2/prover/src/backend/zisk.rs +++ b/crates/l2/prover/src/backend/zisk.rs @@ -120,7 +120,9 @@ pub fn prove_timed( #[derive(serde::Deserialize)] struct ZisKResult { + #[serde(rename = "cycles")] _cycles: u64, + #[serde(rename = "id")] _id: String, time: f64, } From ba19428aa83546d0c0ece85dc6c2b1a5e26554e9 Mon Sep 17 00:00:00 2001 From: ilitteri Date: Mon, 1 Dec 2025 14:51:10 -0300 Subject: [PATCH 10/12] Implement missing variant --- crates/l2/prover/src/lib.rs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/crates/l2/prover/src/lib.rs b/crates/l2/prover/src/lib.rs index 811ee49d884..04eaddd3930 100644 --- a/crates/l2/prover/src/lib.rs +++ b/crates/l2/prover/src/lib.rs @@ -43,6 +43,8 @@ pub fn execute_timed( Backend::RISC0 => backend::risc0::execute_timed(input), #[cfg(feature = "zisk")] Backend::ZisK => backend::zisk::execute_timed(input), + #[cfg(feature = "openvm")] + Backend::OpenVM => backend::openvm::execute_timed(input), } } From 97e6a423aee86f19cfb51cf76cb26e93df7c38aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Est=C3=A9fano=20Bargas?= Date: Mon, 1 Dec 2025 20:40:31 -0300 Subject: [PATCH 11/12] chore(l2): add kzg-rs patch to ZisK guest (#5484) Adds a couple of patches to use ZisK's bls12_381 precompiles **Benchmarks:** ZisK backend, GPU proving with a RTX 4090 | **Block (mainnet)** | **Gas Used** | **ethrex** | **ethrex (kzg-rs patch)** | | --------- | ------------ | ---------- | ------------------------- | | 23919400 | 41,075,722 | 3m 59s | 3m 19s | | 23919500 | 40,237,085 | 4m 13s | 4m 12s | | 23919600 | 24,064,259 | 2m 48s | 2m 48s | | 23919700 | 20,862,238 | 2m 26s | 2m 27s | | 23919800 | 31,813,109 | 3m 18s | 3m 18s | | 23919900 | 22,917,739 | 2m 32s | 2m 31s | | 23920000 | 37,256,487 | 3m 42s | 3m 42s | | 23920100 | 33,542,307 | 3m 25s | 3m 14s | | 23920200 | 22,994,047 | 2m 21s | 2m 21s | | 23920300 | 53,950,967 | 5m 21s | 5m 21s | --- .../src/guest_program/src/zisk/Cargo.lock | 52 ++++++++++--------- .../src/guest_program/src/zisk/Cargo.toml | 3 +- 2 files changed, 29 insertions(+), 26 deletions(-) diff --git a/crates/l2/prover/src/guest_program/src/zisk/Cargo.lock b/crates/l2/prover/src/guest_program/src/zisk/Cargo.lock index 06ce46ad95a..e4c6f529566 100644 --- a/crates/l2/prover/src/guest_program/src/zisk/Cargo.lock +++ b/crates/l2/prover/src/guest_program/src/zisk/Cargo.lock @@ -1605,15 +1605,16 @@ dependencies = [ [[package]] name = "kzg-rs" version = "0.2.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9201effeea3fcc93b587904ae2df9ce97e433184b9d6d299e9ebc9830a546636" +source = "git+https://github.com/0xPolygonHermez/zisk-patch-kzg/?tag=patch-0.2.7-zisk-0.14.0#e1554d6708338a8a0296522ffb5355669c37a4ab" dependencies = [ + "cfg-if", "ff", "hex", "serde_arrays", "sha2", "sp1_bls12_381", "spin", + "ziskos", ] [[package]] @@ -1865,9 +1866,9 @@ dependencies = [ [[package]] name = "p3-baby-bear" -version = "0.2.3-succinct" +version = "0.2.2-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7521838ecab2ddf4f7bc4ceebad06ec02414729598485c1ada516c39900820e8" +checksum = "49ecc3edc6fb8186268e05031c26a8b2b1e567957d63adcae1026d55d6bb189b" dependencies = [ "num-bigint 0.4.6", "p3-field", @@ -1880,9 +1881,9 @@ dependencies = [ [[package]] name = "p3-dft" -version = "0.2.3-succinct" +version = "0.2.2-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46414daedd796f1eefcdc1811c0484e4bced5729486b6eaba9521c572c76761a" +checksum = "eece7b035978976138622b116fefe6c4cc372b1ce70739c40e7a351a9bb68f1f" dependencies = [ "p3-field", "p3-matrix", @@ -1893,9 +1894,9 @@ dependencies = [ [[package]] name = "p3-field" -version = "0.2.3-succinct" +version = "0.2.2-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48948a0516b349e9d1cdb95e7236a6ee010c44e68c5cc78b4b92bf1c4022a0d9" +checksum = "b6f0edf3fde4fd0d1455e901fc871c558010ae18db6e68f1b0fa111391855316" dependencies = [ "itertools 0.12.1", "num-bigint 0.4.6", @@ -1907,9 +1908,9 @@ dependencies = [ [[package]] name = "p3-matrix" -version = "0.2.3-succinct" +version = "0.2.2-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e4de3f373589477cb735ea58e125898ed20935e03664b4614c7fac258b3c42f" +checksum = "60961b4d7ffd2e8412ce4e66e213de610356df71cc4e396519c856a664138a27" dependencies = [ "itertools 0.12.1", "p3-field", @@ -1922,15 +1923,15 @@ dependencies = [ [[package]] name = "p3-maybe-rayon" -version = "0.2.3-succinct" +version = "0.2.2-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3968ad1160310296eb04f91a5f4edfa38fe1d6b2b8cd6b5c64e6f9b7370979e" +checksum = "7bbe762738c382c9483410f52348ab9de41bb42c391e8171643a71486cf1ef8f" [[package]] name = "p3-mds" -version = "0.2.3-succinct" +version = "0.2.2-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2356b1ed0add6d5dfbf7a338ce534a6fde827374394a52cec16a0840af6e97c9" +checksum = "4127956cc6c783b7d021c5c42d5d89456d5f3bda4a7b165fcc2a3fd4e78fbede" dependencies = [ "itertools 0.12.1", "p3-dft", @@ -1943,9 +1944,9 @@ dependencies = [ [[package]] name = "p3-poseidon2" -version = "0.2.3-succinct" +version = "0.2.2-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7da1eec7e1b6900581bedd95e76e1ef4975608dd55be9872c9d257a8a9651c3a" +checksum = "be09497da406a98e89dc05c1ce539eeef29541bad61a5b2108a44ffe94dd0b4c" dependencies = [ "gcd", "p3-field", @@ -1957,9 +1958,9 @@ dependencies = [ [[package]] name = "p3-symmetric" -version = "0.2.3-succinct" +version = "0.2.2-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edb439bea1d822623b41ff4b51e3309e80d13cadf8b86d16ffd5e6efb9fdc360" +checksum = "6e7d954033f657d48490344ca4b3dbcc054962a0e92831b736666bb2f5e5820b" dependencies = [ "itertools 0.12.1", "p3-field", @@ -1968,9 +1969,9 @@ dependencies = [ [[package]] name = "p3-util" -version = "0.2.3-succinct" +version = "0.2.2-succinct" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c2c2010678b9332b563eaa38364915b585c1a94b5ca61e2c7541c087ddda5c" +checksum = "4a6ce0b6bee23fd54e05306f6752ae80b0b71a91166553ab39d7899801497237" dependencies = [ "serde", ] @@ -2561,9 +2562,9 @@ checksum = "1b6b67fb9a61334225b5b790716f609cd58395f895b3fe8b328786812a40bc3b" [[package]] name = "sp1-lib" -version = "5.2.3" +version = "4.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb1a9935d58cb1dcd757a1b10d727090f5b718f1f03b512d48f0c1952e6ead00" +checksum = "e166e94b13146c65de433cf29acc1030f021414fbebfc24cd4eeaeb787ba3443" dependencies = [ "bincode 1.3.3", "serde", @@ -2572,9 +2573,9 @@ dependencies = [ [[package]] name = "sp1-primitives" -version = "5.2.3" +version = "4.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7d2a6187e394c30097ea7a975a4832f172918690dc89a979f0fad67422d3a8b" +checksum = "3a85ffe9606bd2cc93575ce608f063ca08521cee9bdebf611914c5b2d90d7412" dependencies = [ "bincode 1.3.3", "blake3", @@ -2593,7 +2594,7 @@ dependencies = [ [[package]] name = "sp1_bls12_381" version = "0.8.0-sp1-5.0.0" -source = "git+https://github.com/han0110/bls12_381.git?branch=zisk-patch%2Fv0.8.0-upgrade-sp1-lib#22ea7cde224b60114a0408c3b7bab2902f53922e" +source = "git+https://github.com/0xPolygonHermez/zisk-patch-bls12-381?tag=patch-0.8.0-zisk-0.14.0#01266152eae5559b483bd773fbeca0f7fa58037b" dependencies = [ "cfg-if", "ff", @@ -2602,6 +2603,7 @@ dependencies = [ "rand_core", "sp1-lib", "subtle", + "ziskos", ] [[package]] diff --git a/crates/l2/prover/src/guest_program/src/zisk/Cargo.toml b/crates/l2/prover/src/guest_program/src/zisk/Cargo.toml index d06e14cba64..d196a537517 100644 --- a/crates/l2/prover/src/guest_program/src/zisk/Cargo.toml +++ b/crates/l2/prover/src/guest_program/src/zisk/Cargo.toml @@ -26,8 +26,9 @@ sha2 = { git = "https://github.com/0xPolygonHermez/zisk-patch-hashes.git", tag = sha3 = { git = "https://github.com/0xPolygonHermez/zisk-patch-hashes.git", tag = "patch-sha3-0.10.8-zisk-0.14.0" } k256 = { git = "https://github.com/0xPolygonHermez/zisk-patch-elliptic-curves.git", tag = "patch-k256-0.13.4-zisk-0.14.0" } substrate-bn = { git = "https://github.com/0xPolygonHermez/zisk-patch-bn.git", tag = "patch-0.6.0-zisk-0.14.0" } -sp1_bls12_381 = { git = "https://github.com/han0110/bls12_381.git", branch = "zisk-patch/v0.8.0-upgrade-sp1-lib" } +sp1_bls12_381 = { git = "https://github.com/0xPolygonHermez/zisk-patch-bls12-381", tag = "patch-0.8.0-zisk-0.14.0" } tiny-keccak = { git = "https://github.com/0xPolygonHermez/zisk-patch-tiny-keccak/", branch = "zisk" } +kzg-rs = { git = "https://github.com/0xPolygonHermez/zisk-patch-kzg/", tag = "patch-0.2.7-zisk-0.14.0" } [features] l2 = ["guest_program/l2"] From ad40119c3870c979a6ad325dc18b29fccc1c755a Mon Sep 17 00:00:00 2001 From: ilitteri Date: Tue, 2 Dec 2025 08:46:02 -0300 Subject: [PATCH 12/12] cargo fmt --- crates/l2/prover/src/backend/sp1.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/crates/l2/prover/src/backend/sp1.rs b/crates/l2/prover/src/backend/sp1.rs index 0d26238b849..de364846620 100644 --- a/crates/l2/prover/src/backend/sp1.rs +++ b/crates/l2/prover/src/backend/sp1.rs @@ -13,7 +13,11 @@ use sp1_sdk::{ HashableKey, Prover, SP1ProofMode, SP1ProofWithPublicValues, SP1ProvingKey, SP1Stdin, SP1VerifyingKey, }; -use std::{fmt::Debug, sync::OnceLock, time::{Duration, Instant}}; +use std::{ + fmt::Debug, + sync::OnceLock, + time::{Duration, Instant}, +}; use tracing::info; use url::Url;