From c2f760fdb44b9743fa0058155fcab987f3019391 Mon Sep 17 00:00:00 2001 From: Artem Storozhuk Date: Fri, 21 Jun 2024 13:01:58 +0100 Subject: [PATCH 1/2] chore: Add e2e test for checking newly installed Plonk parameters --- prover/src/lib.rs | 40 +++++++++++++++++++++++++++++----------- 1 file changed, 29 insertions(+), 11 deletions(-) diff --git a/prover/src/lib.rs b/prover/src/lib.rs index 9f87ce551..34ad13453 100644 --- a/prover/src/lib.rs +++ b/prover/src/lib.rs @@ -713,6 +713,7 @@ mod tests { use self::build::try_build_plonk_bn254_artifacts_dev; use super::*; + use crate::build::try_install_plonk_bn254_artifacts; use anyhow::Result; use p3_field::PrimeField32; use serial_test::serial; @@ -720,15 +721,7 @@ mod tests { use sphinx_core::utils::setup_logger; use types::HashableKey; - /// Tests an end-to-end workflow of proving a program across the entire proof generation - /// pipeline. - /// - /// Add `FRI_QUERIES`=1 to your environment for faster execution. Should only take a few minutes - /// on a Mac M2. Note: This test always re-builds the plonk bn254 artifacts, so setting SP1_DEV is - /// not needed. - #[test] - #[serial] - fn test_e2e() -> Result<()> { + fn test_e2e_inner(build_artifacts: bool) -> Result<()> { setup_logger(); let elf = include_bytes!("../../tests/fibonacci/elf/riscv32im-succinct-zkvm-elf"); @@ -785,8 +778,12 @@ mod tests { assert_eq!(vk_digest_bn254, vk.hash_bn254()); tracing::info!("generate plonk bn254 proof"); - let artifacts_dir = - try_build_plonk_bn254_artifacts_dev(&prover.wrap_vk, &wrapped_bn254_proof.proof); + let artifacts_dir = if build_artifacts { + try_build_plonk_bn254_artifacts_dev(&prover.wrap_vk, &wrapped_bn254_proof.proof) + } else { + try_install_plonk_bn254_artifacts(true) + }; + let plonk_bn254_proof = prover.wrap_plonk_bn254(wrapped_bn254_proof, &artifacts_dir); println!("{:?}", plonk_bn254_proof); @@ -795,6 +792,27 @@ mod tests { Ok(()) } + /// Tests an end-to-end workflow of proving a program across the entire proof generation + /// pipeline. + /// + /// Add `FRI_QUERIES`=1 to your environment for faster execution. Should only take a few minutes + /// on a Mac M2. Note: This test always re-builds the plonk bn254 artifacts, so setting SP1_DEV is + /// not needed. + #[test] + #[serial] + fn test_e2e() -> Result<()> { + test_e2e_inner(true) + } + + /// Tests an end-to-end workflow of proving a program across the entire proof generation + /// pipeline. This test tries to install plonk artifacts, so it is useful to run in in order to check if + /// newly installed parameters work + #[test] + #[ignore] + fn test_e2e_check_parameters() -> Result<()> { + test_e2e_inner(false) + } + /// Tests an end-to-end workflow of proving a program across the entire proof generation /// pipeline in addition to verifying deferred proofs. #[test] From 32b8d85865bff81d72f4a3c08e54bde7dcc66b6f Mon Sep 17 00:00:00 2001 From: Artem Storozhuk Date: Fri, 21 Jun 2024 16:46:43 +0100 Subject: [PATCH 2/2] chore: Use public address of AWS bucket --- prover/src/install.rs | 2 +- prover/src/lib.rs | 2 +- sdk/src/artifacts.rs | 2 +- sdk/src/provers/local.rs | 2 +- sdk/src/provers/mod.rs | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/prover/src/install.rs b/prover/src/install.rs index dd9a9ae71..4c1ce7578 100644 --- a/prover/src/install.rs +++ b/prover/src/install.rs @@ -12,7 +12,7 @@ use reqwest::Client; use crate::utils::block_on; /// The base URL for the S3 bucket containing the plonk bn254 artifacts. -pub const PLONK_BN254_ARTIFACTS_URL_BASE: &str = "s3://sphinx-plonk-params"; +pub const PLONK_BN254_ARTIFACTS_URL_BASE: &str = "https://sphinx-plonk-params.s3.amazonaws.com"; /// The current version of the plonk bn254 artifacts. pub const PLONK_BN254_ARTIFACTS_COMMIT: &str = "4a525e9f"; diff --git a/prover/src/lib.rs b/prover/src/lib.rs index 34ad13453..e538da87f 100644 --- a/prover/src/lib.rs +++ b/prover/src/lib.rs @@ -781,7 +781,7 @@ mod tests { let artifacts_dir = if build_artifacts { try_build_plonk_bn254_artifacts_dev(&prover.wrap_vk, &wrapped_bn254_proof.proof) } else { - try_install_plonk_bn254_artifacts(true) + try_install_plonk_bn254_artifacts(false) }; let plonk_bn254_proof = prover.wrap_plonk_bn254(wrapped_bn254_proof, &artifacts_dir); diff --git a/sdk/src/artifacts.rs b/sdk/src/artifacts.rs index a858d6267..6e7fcec4e 100644 --- a/sdk/src/artifacts.rs +++ b/sdk/src/artifacts.rs @@ -17,7 +17,7 @@ pub fn export_solidity_plonk_bn254_verifier(output_dir: impl Into) -> R let artifacts_dir = if sphinx_prover::build::sphinx_dev_mode() { sphinx_prover::build::plonk_bn254_artifacts_dev_dir() } else { - try_install_plonk_bn254_artifacts(true) + try_install_plonk_bn254_artifacts(false) }; let verifier_path = artifacts_dir.join("SphinxVerifier.sol"); diff --git a/sdk/src/provers/local.rs b/sdk/src/provers/local.rs index 4d5cb53b5..b9134c386 100644 --- a/sdk/src/provers/local.rs +++ b/sdk/src/provers/local.rs @@ -82,7 +82,7 @@ impl Prover for LocalProver { &outer_proof.proof, ) } else { - sphinx_prover::build::try_install_plonk_bn254_artifacts(true) + sphinx_prover::build::try_install_plonk_bn254_artifacts(false) }; let proof = self.prover.wrap_plonk_bn254(outer_proof, &plonk_bn254_aritfacts); Ok(SphinxProofWithPublicValues { diff --git a/sdk/src/provers/mod.rs b/sdk/src/provers/mod.rs index 565ef5527..a6660b9fc 100644 --- a/sdk/src/provers/mod.rs +++ b/sdk/src/provers/mod.rs @@ -80,7 +80,7 @@ pub trait Prover: Send + Sync { let plonk_bn254_aritfacts = if sphinx_prover::build::sphinx_dev_mode() { sphinx_prover::build::plonk_bn254_artifacts_dev_dir() } else { - sphinx_prover::build::try_install_plonk_bn254_artifacts(true) + sphinx_prover::build::try_install_plonk_bn254_artifacts(false) }; sphinx_prover.verify_plonk_bn254( &proof.proof,