diff --git a/hash/risc0/bench/bench_tree.cfg b/hash/risc0/bench/bench_tree.cfg index 529f0fb..f6d767e 100644 --- a/hash/risc0/bench/bench_tree.cfg +++ b/hash/risc0/bench/bench_tree.cfg @@ -2,10 +2,10 @@ name: "Hashes benchmarking using risc0 prover" author: timeout: 1000 params: - [ HASH_TYPE: [ "poseidon2_babybear", "poseidon2_babybear_native", "poseidon2_bn128"] + [ HASH_TYPE_TREE: [ "poseidon2_babybear", "poseidon2_babybear_native", "poseidon2_bn128"] , TREE_DEPTH: [ 2, 4, 8, 16 ] ] -tags: risc0, $HASH_TYPE +tags: risc0, $HASH_TYPE_TREE comments: The benchmarks includes for poseidon2(merkle hashing) over bn128 and babybear. the hashing is done inside the guest and receipt is received which is verified. diff --git a/hash/risc0/bench/run_tree.sh b/hash/risc0/bench/run_tree.sh index cdd865e..81a0750 100755 --- a/hash/risc0/bench/run_tree.sh +++ b/hash/risc0/bench/run_tree.sh @@ -1,6 +1,6 @@ #!/bin/bash -if [ -z ${ZKBENCH_HASH_TYPE} ]; then -ZKBENCH_HASH_TYPE="poseidon2_babybear_native" +if [ -z ${ZKBENCH_HASH_TYPE_TREE} ]; then +ZKBENCH_HASH_TYPE_TREE="poseidon2_babybear_native" fi if [ -z ${ZKBENCH_TREE_DEPTH} ]; then @@ -8,8 +8,8 @@ ZKBENCH_TREE_DEPTH=2 fi echo "Running benchmarks with the following configurations:" -echo "HASH = $ZKBENCH_HASH_TYPE" +echo "HASH = $ZKBENCH_HASH_TYPE_TREE" echo "Tree Depth = $ZKBENCH_TREE_DEPTH" # Run the benchmarks -./target/release/benchmark $ZKBENCH_HASH_TYPE $ZKBENCH_TREE_DEPTH \ No newline at end of file +./target/release/benchmark $ZKBENCH_HASH_TYPE_TREE $ZKBENCH_TREE_DEPTH \ No newline at end of file diff --git a/hash/risc0/bench/src/benches/mod.rs b/hash/risc0/bench/src/benches/mod.rs index c5bbdea..adeeccf 100644 --- a/hash/risc0/bench/src/benches/mod.rs +++ b/hash/risc0/bench/src/benches/mod.rs @@ -1,4 +1,5 @@ pub mod sha256; +pub mod sha256_accelerated; pub mod keccak; pub mod blake2b; pub mod blake3; diff --git a/hash/risc0/bench/src/benches/sha256.rs b/hash/risc0/bench/src/benches/sha256.rs index cae5b79..1777f56 100644 --- a/hash/risc0/bench/src/benches/sha256.rs +++ b/hash/risc0/bench/src/benches/sha256.rs @@ -1,10 +1,9 @@ use benchmark_methods::{ - SHA256_ELF, SHA256_ID, SHA256_ACCELERATED_ELF, SHA256_ACCELERATED_ID + SHA256_ELF, SHA256_ID }; use risc0_zkvm::{default_prover, ExecutorEnv}; use risc0_zkvm::{ sha}; use std::time::Instant; -use hex::encode; pub fn sha_bench(input: Vec) { let env = ExecutorEnv::builder().write(&input).unwrap().build().unwrap(); @@ -30,25 +29,4 @@ pub fn sha_bench(input: Vec) { eprintln!("Hash: {:?}", _output); - let env = ExecutorEnv::builder().write(&input).unwrap().build().unwrap(); - eprintln!("\n------RustCrypto sha hashing(accelerated)------\n"); - // Obtain the default prover. - let prover = default_prover(); - - let start_time = Instant::now(); - // Produce a receipt by proving the specified ELF binary. - let receipt = prover.prove(env, SHA256_ACCELERATED_ELF).unwrap(); - let elapsed_time = start_time.elapsed(); - - // verify your receipt - receipt.verify(SHA256_ACCELERATED_ID).unwrap(); - - let elapsed_time2 = start_time.elapsed(); - - let _output: [u8;32] = receipt.journal.decode().unwrap(); - let hash = encode(_output); - eprintln!("Total time: {:?}", elapsed_time2); - eprintln!("Verification time: {:?}", elapsed_time2 - elapsed_time); - - eprintln!("Hash: {:?}", hash); } \ No newline at end of file diff --git a/hash/risc0/bench/src/benches/sha256_accelerated.rs b/hash/risc0/bench/src/benches/sha256_accelerated.rs new file mode 100644 index 0000000..6233cae --- /dev/null +++ b/hash/risc0/bench/src/benches/sha256_accelerated.rs @@ -0,0 +1,30 @@ +use benchmark_methods::{ + SHA256_ACCELERATED_ELF, SHA256_ACCELERATED_ID +}; +use risc0_zkvm::{default_prover, ExecutorEnv}; +use std::time::Instant; +use hex::encode; +pub fn sha_accelerated_bench(input: Vec) { + + let env = ExecutorEnv::builder().write(&input).unwrap().build().unwrap(); + eprintln!("\n------RustCrypto sha hashing(accelerated)------\n"); + // Obtain the default prover. + let prover = default_prover(); + + let start_time = Instant::now(); + // Produce a receipt by proving the specified ELF binary. + let receipt = prover.prove(env, SHA256_ACCELERATED_ELF).unwrap(); + let elapsed_time = start_time.elapsed(); + + // verify your receipt + receipt.verify(SHA256_ACCELERATED_ID).unwrap(); + + let elapsed_time2 = start_time.elapsed(); + + let _output: [u8;32] = receipt.journal.decode().unwrap(); + let hash = encode(_output); + eprintln!("Total time: {:?}", elapsed_time2); + eprintln!("Verification time: {:?}", elapsed_time2 - elapsed_time); + + eprintln!("Hash: {:?}", hash); +} \ No newline at end of file diff --git a/hash/risc0/bench/src/main.rs b/hash/risc0/bench/src/main.rs index bee3f3a..c5ba0f7 100644 --- a/hash/risc0/bench/src/main.rs +++ b/hash/risc0/bench/src/main.rs @@ -1,6 +1,7 @@ mod benches; use benches::{ sha256::sha_bench, + sha256_accelerated::sha_accelerated_bench, keccak::keccak_bench, blake2b::blake2b_bench, blake3::blake3_bench, @@ -22,7 +23,7 @@ fn main() { let args: Vec = std::env::args().collect(); if args.len() != 3 { - println!("Wrong number of arguments"); + println!("Wrong number of arguments! The program expects two arguments: and "); // Exit the program with a non-zero exit code process::exit(1); } @@ -37,6 +38,12 @@ fn main() { let input = generate_bytes(size); sha_bench(input.clone()); } + "sha256_accelerated" => { + println!("Accelerated SHA256 Benchmarking: "); + eprintln!("data size(bytes): {:?}", size); + let input = generate_bytes(size); + sha_accelerated_bench(input.clone()); + } "keccak" => { println!("KECCAK Benchmarking: "); eprintln!("data size(bytes): {:?}", size);