From 4335f28dc7541de85c9ed306b3b36682cf84d4ec Mon Sep 17 00:00:00 2001 From: Manish Kumar Date: Thu, 29 Aug 2024 17:35:37 +0530 Subject: [PATCH] readme and cfg files added --- hash/jolt/bench/README.md | 12 ++++++++++++ hash/jolt/bench/bench.cfg | 11 +++++++++++ hash/jolt/bench/bench_tree.cfg | 10 ++++++++++ hash/jolt/bench/guest/src/lib.rs | 1 - hash/jolt/bench/guest/src/poseidon2_bn256.rs | 3 ++- 5 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 hash/jolt/bench/README.md create mode 100644 hash/jolt/bench/bench.cfg create mode 100644 hash/jolt/bench/bench_tree.cfg diff --git a/hash/jolt/bench/README.md b/hash/jolt/bench/README.md new file mode 100644 index 0000000..7b6a482 --- /dev/null +++ b/hash/jolt/bench/README.md @@ -0,0 +1,12 @@ +Benchmarking different hashes inside Jolt zkvm +----------------------------------------------- + +The benchmark is defined by the following shell scripts: + +- `build.sh` - build the code. + +- `run.sh` and `run_tree.sh` - run the benchmark itself (`run.sh` for sha256, keccak, blake2b, blake3 and `run2.sh` for poseidon2 over bn254 and babybear) + +Benchmarks can be parameterized using environment variables. By convention, we start the names of these environment variables with the `ZKBENCH_` prefix(See `run.sh` and `run_tree.sh` files). + +Additional files `bench.cfg` and `bench_tree.cfg` specifies the configurations and parameters. \ No newline at end of file diff --git a/hash/jolt/bench/bench.cfg b/hash/jolt/bench/bench.cfg new file mode 100644 index 0000000..4970815 --- /dev/null +++ b/hash/jolt/bench/bench.cfg @@ -0,0 +1,11 @@ +name: "Hashes benchmarking using jolt zkvm prover" +author: +timeout: 200 +params: + [ HASH_TYPE: [ "sha256", "keccak", "blake2b", "blake3"] + , INPUT_SIZE_BYTES: [ 256, 512, 1024, 2048 ] + ] +tags: jolt, $HASH_TYPE +comments: + The benchmarks includes for sha256, keccak, blake2b, blake3. + the hashing is done inside the guest. \ No newline at end of file diff --git a/hash/jolt/bench/bench_tree.cfg b/hash/jolt/bench/bench_tree.cfg new file mode 100644 index 0000000..1ff1ee5 --- /dev/null +++ b/hash/jolt/bench/bench_tree.cfg @@ -0,0 +1,10 @@ +name: "Hashes benchmarking using jolt zkvm prover" +author: +timeout: 1000 +params: + [ HASH_TYPE_TREE: [ "poseidon2_babybear", "poseidon2_bn256"] + , TREE_DEPTH: [ 2, 4, 8 ] + ] +tags: jolt, $HASH_TYPE_TREE +comments: + The benchmarks includes for poseidon2(merkle hashing) over bn254 and babybear. \ No newline at end of file diff --git a/hash/jolt/bench/guest/src/lib.rs b/hash/jolt/bench/guest/src/lib.rs index 30ecf16..386a558 100644 --- a/hash/jolt/bench/guest/src/lib.rs +++ b/hash/jolt/bench/guest/src/lib.rs @@ -68,7 +68,6 @@ fn poseidon2_babybear(input: Vec) -> Vec { } -//TODO: too slow!! need to do some optimizations // poseidon2 over BN256 #[jolt::provable(stack_size = 1000000, memory_size = 10000000)] pub fn poseidon2_bn256(input: Vec>) -> Vec { diff --git a/hash/jolt/bench/guest/src/poseidon2_bn256.rs b/hash/jolt/bench/guest/src/poseidon2_bn256.rs index 02746db..84676a1 100644 --- a/hash/jolt/bench/guest/src/poseidon2_bn256.rs +++ b/hash/jolt/bench/guest/src/poseidon2_bn256.rs @@ -9,7 +9,7 @@ use alloc::vec::Vec; extern crate core; use core::marker::PhantomData; -pub type Scalar = ark_bn254::fr::Fr; +pub type Scalar = ark_bn254::Fr; #[derive(Clone, Debug)] pub struct Poseidon2Params { @@ -633,5 +633,6 @@ impl MerkleTreeHash for Poseidon2 { pub fn from_hex(s: &str) -> F { let a = Vec::from_hex(&s[2..]).expect("Invalid Hex String"); + F::from_be_bytes_mod_order(&a as &[u8]) } \ No newline at end of file