From 23e5a2701a01c0069fba47d17f6dcc7cc1595d56 Mon Sep 17 00:00:00 2001 From: M Alghazwi Date: Tue, 15 Oct 2024 14:33:02 +0200 Subject: [PATCH] add bench --- codex-plonky2-circuits/README.md | 54 +++++++++++++++++++++++++++++++- 1 file changed, 53 insertions(+), 1 deletion(-) diff --git a/codex-plonky2-circuits/README.md b/codex-plonky2-circuits/README.md index 1058a84..2c951bf 100644 --- a/codex-plonky2-circuits/README.md +++ b/codex-plonky2-circuits/README.md @@ -3,5 +3,57 @@ WARNING: This is a work-in-progress prototype, and has not received careful code This crate is an implementation of the [codex storage proofs circuits](https://github.com/codex-storage/codex-storage-proofs-circuits) for the plonky2 proof system. +## Code organization + +- [`capped_tree`](./src/merkle_tree/capped_tree.rs) is an adapted implementation of Merkle tree based on the original plonky2 merkle tree implementation. + +- [`capped_tree_circuit`](./src/circuits/capped_tree_circuit.rs) is the circuit implementation for regular merkle tree implementation (non-safe version) based on the above merkle tree implementation. + +- [`merkle_safe`](./src/merkle_tree/merkle_safe.rs) is the implementation of "safe" merkle tree used in codex, consistent with the one [here](https://github.com/codex-storage/nim-codex/blob/master/codex/merkletree/merkletree.nim). + +- [`safe_tree_circuit`](./src/circuits/safe_tree_circuit.rs) is the Plonky2 Circuit implementation of "safe" merkle tree above. + +- [`prove_single_cell`](./src/circuits/prove_single_cell.rs) is the Plonky2 Circuit implementation for proving a single cell in slot merkle tree. + +## Usage +TODO! + ## Benchmarks -TODO ... \ No newline at end of file +In here we show the preliminary benchmarks of codex storage proofs circuits. + +### Running benchmarks +To run the benchmarks for safe merkle tree circuit, you can use the following command: + +```bash +cargo bench --bench safe_circuit +``` +To run the benchmarks for proving cells circuit, you can use the following command: +Note: make sure to asjust the parameters as need in [`prove_single_cell`](./src/circuits/prove_single_cell.rs) + +```bash +cargo bench --bench safe_circuit +``` + +### Results +Benchmark results for safe Merkle Tree depth 16 with and 5 samples + +| Operation | Time (ms) | +|-----------|------------------| +| **Build** | 19.353 ms | +| **Prove** | 29.699 ms | +| **Verify**| 2.0137 ms | + +Circuit size: 29 gates +Proof size: 103,372 bytes + +Benchmark results for proving 5 cells in a Merkle tree with max depth 16 with and 5 samples +Note: the small tree (block tree) is of depth 5 so 32 cells in each block + +| Operation | Time (ms) | +|-----------|------------------| +| **Build** | 17.835 ms | +| **Prove** | 28.743 ms | +| **Verify**| 1.9792 ms | + +Circuit size: 29 gates +Proof size: 103,372 bytes