From 08f34e79cc7b859f8eaf9dc3835c8598cdbd520a Mon Sep 17 00:00:00 2001 From: Mihai Date: Tue, 7 Jan 2025 16:52:15 +0200 Subject: [PATCH] rename, remove elf --- is_prime/Cargo.lock | 62 +++++++++++------------ is_prime/README.md | 2 +- is_prime/elf/riscv32im-succinct-zkvm-elf | Bin 120820 -> 0 bytes is_prime/lib/Cargo.toml | 2 +- is_prime/program/Cargo.lock | 2 +- is_prime/program/Cargo.toml | 4 +- is_prime/program/src/main.rs | 2 +- is_prime/script/Cargo.lock | 2 +- is_prime/script/Cargo.toml | 8 +-- is_prime/script/src/bin/evm.rs | 10 ++-- is_prime/script/src/bin/main.rs | 8 +-- 11 files changed, 51 insertions(+), 51 deletions(-) delete mode 100755 is_prime/elf/riscv32im-succinct-zkvm-elf diff --git a/is_prime/Cargo.lock b/is_prime/Cargo.lock index 9159014b5..61cc7b3f1 100644 --- a/is_prime/Cargo.lock +++ b/is_prime/Cargo.lock @@ -1672,37 +1672,6 @@ version = "0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" -[[package]] -name = "fibonacci-lib" -version = "0.1.0" -dependencies = [ - "alloy-sol-types", -] - -[[package]] -name = "fibonacci-program" -version = "0.1.0" -dependencies = [ - "alloy-sol-types", - "fibonacci-lib", - "sp1-zkvm", -] - -[[package]] -name = "fibonacci-script" -version = "0.1.0" -dependencies = [ - "alloy-sol-types", - "clap", - "fibonacci-lib", - "hex", - "serde", - "serde_json", - "sp1-helper", - "sp1-sdk", - "tracing", -] - [[package]] name = "fixed-hash" version = "0.8.0" @@ -2402,6 +2371,37 @@ version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" +[[package]] +name = "is_prime-lib" +version = "0.1.0" +dependencies = [ + "alloy-sol-types", +] + +[[package]] +name = "is_prime-program" +version = "0.1.0" +dependencies = [ + "alloy-sol-types", + "is_prime-lib", + "sp1-zkvm", +] + +[[package]] +name = "is_prime-script" +version = "0.1.0" +dependencies = [ + "alloy-sol-types", + "clap", + "hex", + "is_prime-lib", + "serde", + "serde_json", + "sp1-helper", + "sp1-sdk", + "tracing", +] + [[package]] name = "is_terminal_polyfill" version = "1.70.1" diff --git a/is_prime/README.md b/is_prime/README.md index c662baf2f..085b46924 100644 --- a/is_prime/README.md +++ b/is_prime/README.md @@ -68,7 +68,7 @@ inside Solidity. To retrieve your `programVKey` for your on-chain contract, run the following command: ```sh -cargo prove vkey --program fibonacci-program +cargo prove vkey --program is_prime-program ``` ## Using the Prover Network diff --git a/is_prime/elf/riscv32im-succinct-zkvm-elf b/is_prime/elf/riscv32im-succinct-zkvm-elf deleted file mode 100755 index 3938e57cfba3d2f791461852dd2288a3042cb7e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 120820 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

3wQ?my>b$B-ap_Omp+-# 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

6!W1d|py<(!0wD<8r3tG&=1$ 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 B$>sn6 diff --git a/is_prime/lib/Cargo.toml b/is_prime/lib/Cargo.toml index 11f9527b7..7229ce6a9 100644 --- a/is_prime/lib/Cargo.toml +++ b/is_prime/lib/Cargo.toml @@ -1,5 +1,5 @@ [package] -name = "fibonacci-lib" +name = "is_prime-lib" version = "0.1.0" edition = "2021" diff --git a/is_prime/program/Cargo.lock b/is_prime/program/Cargo.lock index dd66e5b9a..3d50d7791 100644 --- a/is_prime/program/Cargo.lock +++ b/is_prime/program/Cargo.lock @@ -545,7 +545,7 @@ dependencies = [ ] [[package]] -name = "fibonacci-program" +name = "is_prime-program" version = "0.1.0" dependencies = [ "alloy-sol-types", diff --git a/is_prime/program/Cargo.toml b/is_prime/program/Cargo.toml index cf178d92a..edbaa0bcd 100644 --- a/is_prime/program/Cargo.toml +++ b/is_prime/program/Cargo.toml @@ -1,9 +1,9 @@ [package] version = "0.1.0" -name = "fibonacci-program" +name = "is_prime-program" edition = "2021" [dependencies] alloy-sol-types = { workspace = true } sp1-zkvm = "3.0.0-rc4" -fibonacci-lib = { path = "../lib" } +is_prime-lib = { path = "../lib" } diff --git a/is_prime/program/src/main.rs b/is_prime/program/src/main.rs index 044e32b89..e24aab848 100644 --- a/is_prime/program/src/main.rs +++ b/is_prime/program/src/main.rs @@ -9,7 +9,7 @@ sp1_zkvm::entrypoint!(main); use alloy_sol_types::SolType; -use fibonacci_lib::{is_prime, PublicValuesStruct}; +use is_prime_lib::{is_prime, PublicValuesStruct}; pub fn main() { // Read an input to the program. diff --git a/is_prime/script/Cargo.lock b/is_prime/script/Cargo.lock index 730721958..1bc3c9834 100644 --- a/is_prime/script/Cargo.lock +++ b/is_prime/script/Cargo.lock @@ -1627,7 +1627,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "28dea519a9695b9977216879a3ebfddf92f1c08c05d984f8996aecd6ecdc811d" [[package]] -name = "fibonacci-script" +name = "is_prime-script" version = "0.1.0" dependencies = [ "alloy-sol-types", diff --git a/is_prime/script/Cargo.toml b/is_prime/script/Cargo.toml index 1bc334b7a..8baf03869 100644 --- a/is_prime/script/Cargo.toml +++ b/is_prime/script/Cargo.toml @@ -1,11 +1,11 @@ [package] version = "0.1.0" -name = "fibonacci-script" +name = "is_prime-script" edition = "2021" -default-run = "fibonacci" +default-run = "is_prime" [[bin]] -name = "fibonacci" +name = "is_prime" path = "src/bin/main.rs" [[bin]] @@ -20,7 +20,7 @@ clap = { version = "4.0", features = ["derive", "env"] } tracing = "0.1.40" hex = "0.4.3" alloy-sol-types = { workspace = true } -fibonacci-lib = { path = "../lib" } +is_prime-lib = { path = "../lib" } [build-dependencies] sp1-helper = "3.0.0" diff --git a/is_prime/script/src/bin/evm.rs b/is_prime/script/src/bin/evm.rs index 3f48bbc8a..389259fd9 100644 --- a/is_prime/script/src/bin/evm.rs +++ b/is_prime/script/src/bin/evm.rs @@ -12,7 +12,7 @@ use alloy_sol_types::SolType; use clap::{Parser, ValueEnum}; -use fibonacci_lib::PublicValuesStruct; +use is_prime_lib::PublicValuesStruct; use serde::{Deserialize, Serialize}; use sp1_sdk::{ include_elf, HashableKey, ProverClient, SP1ProofWithPublicValues, SP1Stdin, SP1VerifyingKey, @@ -20,7 +20,7 @@ use sp1_sdk::{ use std::path::PathBuf; /// The ELF (executable and linkable format) file for the Succinct RISC-V zkVM. -pub const FIBONACCI_ELF: &[u8] = include_elf!("fibonacci-program"); +pub const is_prime_ELF: &[u8] = include_elf!("is_prime-program"); /// The arguments for the EVM command. #[derive(Parser, Debug)] @@ -42,7 +42,7 @@ enum ProofSystem { /// A fixture that can be used to test the verification of SP1 zkVM proofs inside Solidity. #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] -struct SP1FibonacciProofFixture { +struct SP1is_primeProofFixture { cnt_primes: u32, n: u32, vkey: String, @@ -61,7 +61,7 @@ fn main() { let client = ProverClient::new(); // Setup the program. - let (pk, vk) = client.setup(FIBONACCI_ELF); + let (pk, vk) = client.setup(is_prime_ELF); // Setup the inputs. let mut stdin = SP1Stdin::new(); @@ -92,7 +92,7 @@ fn create_proof_fixture( PublicValuesStruct::abi_decode(bytes, false).unwrap(); // Create the testing fixture so we can test things end-to-end. - let fixture = SP1FibonacciProofFixture { + let fixture = SP1is_primeProofFixture { cnt_primes, n, vkey: vk.bytes32().to_string(), diff --git a/is_prime/script/src/bin/main.rs b/is_prime/script/src/bin/main.rs index c5eb23650..4b3e8456e 100644 --- a/is_prime/script/src/bin/main.rs +++ b/is_prime/script/src/bin/main.rs @@ -12,11 +12,11 @@ use alloy_sol_types::SolType; use clap::Parser; -use fibonacci_lib::PublicValuesStruct; +use is_prime_lib::PublicValuesStruct; use sp1_sdk::{include_elf, ProverClient, SP1Stdin}; /// The ELF (executable and linkable format) file for the Succinct RISC-V zkVM. -pub const FIBONACCI_ELF: &[u8] = include_elf!("fibonacci-program"); +pub const is_prime_ELF: &[u8] = include_elf!("is_prime-program"); /// The arguments for the command. #[derive(Parser, Debug)] @@ -55,7 +55,7 @@ fn main() { if args.execute { // Execute the program - let (output, report) = client.execute(FIBONACCI_ELF, stdin).run().unwrap(); + let (output, report) = client.execute(is_prime_ELF, stdin).run().unwrap(); println!("Program executed successfully."); // Read the output. @@ -72,7 +72,7 @@ fn main() { println!("Number of cycles: {}", report.total_instruction_count()); } else { // Setup the program for proving. - let (pk, vk) = client.setup(FIBONACCI_ELF); + let (pk, vk) = client.setup(is_prime_ELF); // Generate the proof let proof = client