From 0318e180329f61fb02316c9e6979c4aa9819d592 Mon Sep 17 00:00:00 2001 From: Manish Kumar Date: Mon, 11 Dec 2023 18:26:36 +0530 Subject: [PATCH] benchmark for sha256 and keccak --- hash/risc0/bench/Cargo.lock | 475 ++++-------------- hash/risc0/bench/Cargo.toml | 17 +- hash/risc0/bench/host/Cargo.toml | 13 - hash/risc0/bench/methods/guest/Cargo.lock | 20 + hash/risc0/bench/methods/guest/Cargo.toml | 5 +- .../bench/methods/guest/src/bin/blake2b.rs | 15 + .../bench/methods/guest/src/bin/blake3.rs | 15 + .../bench/methods/guest/src/bin/keccak.rs | 15 + .../guest/src/{main.rs => bin/sha256.rs} | 1 - hash/risc0/bench/run.sh | 5 +- hash/risc0/bench/src/benches/blake2b.rs | 33 ++ hash/risc0/bench/src/benches/blake3.rs | 33 ++ hash/risc0/bench/src/benches/keccak.rs | 33 ++ hash/risc0/bench/src/benches/mod.rs | 2 + .../src/main.rs => src/benches/sha256.rs} | 24 +- hash/risc0/bench/src/main.rs | 44 ++ 16 files changed, 327 insertions(+), 423 deletions(-) delete mode 100644 hash/risc0/bench/host/Cargo.toml create mode 100644 hash/risc0/bench/methods/guest/src/bin/blake2b.rs create mode 100644 hash/risc0/bench/methods/guest/src/bin/blake3.rs create mode 100644 hash/risc0/bench/methods/guest/src/bin/keccak.rs rename hash/risc0/bench/methods/guest/src/{main.rs => bin/sha256.rs} (99%) create mode 100644 hash/risc0/bench/src/benches/blake2b.rs create mode 100644 hash/risc0/bench/src/benches/blake3.rs create mode 100644 hash/risc0/bench/src/benches/keccak.rs create mode 100644 hash/risc0/bench/src/benches/mod.rs rename hash/risc0/bench/{host/src/main.rs => src/benches/sha256.rs} (55%) create mode 100644 hash/risc0/bench/src/main.rs diff --git a/hash/risc0/bench/Cargo.lock b/hash/risc0/bench/Cargo.lock index e6179f9..e6430ca 100644 --- a/hash/risc0/bench/Cargo.lock +++ b/hash/risc0/bench/Cargo.lock @@ -26,18 +26,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "anes" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" - -[[package]] -name = "anstyle" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87" - [[package]] name = "anyhow" version = "1.0.75" @@ -80,6 +68,16 @@ version = "0.21.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" +[[package]] +name = "benchmark" +version = "0.1.0" +dependencies = [ + "methods", + "rand", + "risc0-zkvm", + "serde", +] + [[package]] name = "bincode" version = "1.3.3" @@ -121,9 +119,9 @@ dependencies = [ [[package]] name = "bonsai-sdk" -version = "0.5.0" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "296de0c044ff3207f2252415ca3b5789de384e5d9a64185a003416bf11096ceb" +checksum = "441d1092e11977985946b6564251df91d80ae36982128e53be52a32548ad8762" dependencies = [ "reqwest", "serde", @@ -176,9 +174,9 @@ dependencies = [ [[package]] name = "cargo-platform" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12024c4645c97566567129c204f65d5815a8c9aecf30fcbe682b2fe034996d36" +checksum = "e34637b3140142bdf929fb439e8aa4ebad7651ebf7b1080b3930aa16ac1459ff" dependencies = [ "serde", ] @@ -197,12 +195,6 @@ dependencies = [ "thiserror", ] -[[package]] -name = "cast" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" - [[package]] name = "cc" version = "1.0.83" @@ -218,58 +210,6 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" -[[package]] -name = "ciborium" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "effd91f6c78e5a4ace8a5d3c0b6bfaec9e2baaef55f3efc00e45fb2e477ee926" -dependencies = [ - "ciborium-io", - "ciborium-ll", - "serde", -] - -[[package]] -name = "ciborium-io" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cdf919175532b369853f5d5e20b26b43112613fd6fe7aee757e35f7a44642656" - -[[package]] -name = "ciborium-ll" -version = "0.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "defaa24ecc093c77630e6c15e17c51f5e187bf35ee514f4e2d67baaa96dae22b" -dependencies = [ - "ciborium-io", - "half", -] - -[[package]] -name = "clap" -version = "4.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac495e00dcec98c83465d5ad66c5c4fabd652fd6686e7c6269b117e729a6f17b" -dependencies = [ - "clap_builder", -] - -[[package]] -name = "clap_builder" -version = "4.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c77ed9a32a62e6ca27175d00d29d05ca32e396ea1eb5fb01d8256b669cec7663" -dependencies = [ - "anstyle", - "clap_lex", -] - -[[package]] -name = "clap_lex" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" - [[package]] name = "const-oid" version = "0.9.5" @@ -278,9 +218,9 @@ checksum = "28c122c3980598d243d63d9a704629a2d748d101f278052ff068be5a4423ab6f" [[package]] name = "core-foundation" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" dependencies = [ "core-foundation-sys", "libc", @@ -288,9 +228,9 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.4" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e496a50fda8aacccc86d7529e2c1e0892dbd0f898a6b5645b5561b89c3210efa" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" [[package]] name = "cpufeatures" @@ -301,75 +241,6 @@ dependencies = [ "libc", ] -[[package]] -name = "criterion" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2b12d017a929603d80db1831cd3a24082f8137ce19c69e6447f54f5fc8d692f" -dependencies = [ - "anes", - "cast", - "ciborium", - "clap", - "criterion-plot", - "is-terminal", - "itertools 0.10.5", - "num-traits", - "once_cell", - "oorandom", - "plotters", - "rayon", - "regex", - "serde", - "serde_derive", - "serde_json", - "tinytemplate", - "walkdir", -] - -[[package]] -name = "criterion-plot" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1" -dependencies = [ - "cast", - "itertools 0.10.5", -] - -[[package]] -name = "crossbeam-deque" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" -dependencies = [ - "cfg-if", - "crossbeam-epoch", - "crossbeam-utils", -] - -[[package]] -name = "crossbeam-epoch" -version = "0.9.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" -dependencies = [ - "autocfg", - "cfg-if", - "crossbeam-utils", - "memoffset", - "scopeguard", -] - -[[package]] -name = "crossbeam-utils" -version = "0.8.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" -dependencies = [ - "cfg-if", -] - [[package]] name = "crypto-common" version = "0.1.6" @@ -476,9 +347,9 @@ checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" [[package]] name = "form_urlencoded" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" dependencies = [ "percent-encoding", ] @@ -554,15 +425,15 @@ dependencies = [ [[package]] name = "gimli" -version = "0.28.0" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" [[package]] name = "h2" -version = "0.3.21" +version = "0.3.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91fc23aa11be92976ef4729127f1a74adf36d8436f7816b185d18df956790833" +checksum = "4d6250322ef6e60f93f9a2162799302cd6f68f79f6e5d85c8c16f14d1d958178" dependencies = [ "bytes", "fnv", @@ -570,30 +441,18 @@ dependencies = [ "futures-sink", "futures-util", "http", - "indexmap 1.9.3", + "indexmap", "slab", "tokio", "tokio-util", "tracing", ] -[[package]] -name = "half" -version = "1.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" - [[package]] name = "hashbrown" -version = "0.12.3" +version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - -[[package]] -name = "hashbrown" -version = "0.14.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93e7192158dbcda357bdec5fb5788eebf8bbac027f3f33e719d29135ae84156" +checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" [[package]] name = "heck" @@ -622,22 +481,11 @@ dependencies = [ "windows-sys", ] -[[package]] -name = "host" -version = "0.1.0" -dependencies = [ - "criterion", - "methods", - "rand", - "risc0-zkvm", - "serde", -] - [[package]] name = "http" -version = "0.2.9" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd6effc99afb63425aff9b05836f029929e345a6148a14b7ecd5ab67af944482" +checksum = "8947b1a6fad4393052c7ba1f4cd97bed3e953a95c79c92ad9b051a04611d9fbb" dependencies = [ "bytes", "fnv", @@ -706,24 +554,14 @@ dependencies = [ [[package]] name = "idna" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" dependencies = [ "unicode-bidi", "unicode-normalization", ] -[[package]] -name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", -] - [[package]] name = "indexmap" version = "2.1.0" @@ -731,7 +569,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" dependencies = [ "equivalent", - "hashbrown 0.14.2", + "hashbrown", ] [[package]] @@ -740,26 +578,6 @@ version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" -[[package]] -name = "is-terminal" -version = "0.4.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" -dependencies = [ - "hermit-abi", - "rustix", - "windows-sys", -] - -[[package]] -name = "itertools" -version = "0.10.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" -dependencies = [ - "either", -] - [[package]] name = "itertools" version = "0.11.0" @@ -777,9 +595,9 @@ checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" [[package]] name = "js-sys" -version = "0.3.65" +version = "0.3.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54c0c35952f67de54bb584e9fd912b3023117cbafc0a77d8f3dee1fb5f572fe8" +checksum = "cee9c64da59eae3b50095c18d3e74f8b73c0b86d2792824ff01bbce68ba229ca" dependencies = [ "wasm-bindgen", ] @@ -820,15 +638,6 @@ version = "2.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" -[[package]] -name = "memoffset" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" -dependencies = [ - "autocfg", -] - [[package]] name = "methods" version = "0.1.0" @@ -853,9 +662,9 @@ dependencies = [ [[package]] name = "mio" -version = "0.8.9" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dce281c5e46beae905d4de1870d8b1509a9142b62eedf18b443b011ca8343d0" +checksum = "8f3d0b296e374a4e6f3c7b0a1f5a51d748a0d34c85e7dc48fc3fa9a87657fe09" dependencies = [ "libc", "wasi", @@ -927,21 +736,15 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.18.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" - -[[package]] -name = "oorandom" -version = "11.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "openssl" -version = "0.10.59" +version = "0.10.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a257ad03cd8fb16ad4172fedf8094451e1af1c4b70097636ef2eac9a5f0cc33" +checksum = "6b8419dc8cc6d866deb801274bba2e6f8f6108c1bb7fcc10ee5ab864931dbb45" dependencies = [ "bitflags 2.4.1", "cfg-if", @@ -971,9 +774,9 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.95" +version = "0.9.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "40a4130519a360279579c2053038317e40eff64d13fd3f004f9e1b72b8a6aaf9" +checksum = "c3eaad34cdd97d81de97964fc7f29e2d104f483840d906ef56daa1912338460b" dependencies = [ "cc", "libc", @@ -989,9 +792,9 @@ checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" [[package]] name = "percent-encoding" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "petgraph" @@ -1000,7 +803,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" dependencies = [ "fixedbitset", - "indexmap 2.1.0", + "indexmap", ] [[package]] @@ -1021,34 +824,6 @@ version = "0.3.27" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" -[[package]] -name = "plotters" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2c224ba00d7cadd4d5c660deaf2098e5e80e07846537c51f9cfa4be50c1fd45" -dependencies = [ - "num-traits", - "plotters-backend", - "plotters-svg", - "wasm-bindgen", - "web-sys", -] - -[[package]] -name = "plotters-backend" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e76628b4d3a7581389a35d5b6e2139607ad7c75b17aed325f210aa91f4a9609" - -[[package]] -name = "plotters-svg" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38f6d39893cca0701371e3c27294f09797214b86f1fb951b89ade8ec04e2abab" -dependencies = [ - "plotters-backend", -] - [[package]] name = "ppv-lite86" version = "0.2.17" @@ -1076,9 +851,9 @@ dependencies = [ [[package]] name = "prost" -version = "0.12.1" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4fdd22f3b9c31b53c060df4a0613a1c7f062d4115a2b984dd15b1858f7e340d" +checksum = "146c289cda302b98a28d40c8b3b90498d6e526dd24ac2ecea73e4e491685b94a" dependencies = [ "bytes", "prost-derive", @@ -1086,13 +861,13 @@ dependencies = [ [[package]] name = "prost-build" -version = "0.12.1" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bdf592881d821b83d471f8af290226c8d51402259e9bb5be7f9f8bdebbb11ac" +checksum = "c55e02e35260070b6f716a2423c2ff1c3bb1642ddca6f99e1f26d06268a0e2d2" dependencies = [ "bytes", "heck", - "itertools 0.11.0", + "itertools", "log", "multimap", "once_cell", @@ -1108,12 +883,12 @@ dependencies = [ [[package]] name = "prost-derive" -version = "0.12.1" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "265baba7fabd416cf5078179f7d2cbeca4ce7a9041111900675ea7c4cb8a4c32" +checksum = "efb6c9a1dd1def8e2124d17e83a20af56f1570d6c2d2bd9e266ccb768df3840e" dependencies = [ "anyhow", - "itertools 0.11.0", + "itertools", "proc-macro2", "quote", "syn", @@ -1121,9 +896,9 @@ dependencies = [ [[package]] name = "prost-types" -version = "0.12.1" +version = "0.12.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e081b29f63d83a4bc75cfc9f3fe424f9156cf92d8a4f0c9407cce9a1b67327cf" +checksum = "193898f59edcf43c26227dcd4c8427f00d99d61e95dcde58dabd49fa291d470e" dependencies = [ "prost", ] @@ -1176,26 +951,6 @@ dependencies = [ "getrandom", ] -[[package]] -name = "rayon" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1" -dependencies = [ - "either", - "rayon-core", -] - -[[package]] -name = "rayon-core" -version = "1.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed" -dependencies = [ - "crossbeam-deque", - "crossbeam-utils", -] - [[package]] name = "redox_syscall" version = "0.4.1" @@ -1274,9 +1029,9 @@ dependencies = [ [[package]] name = "risc0-binfmt" -version = "0.19.0" +version = "0.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73b008c7506a6acb15f14a87e7e57797fd901cdf2f4eb560a032df4e1fc12790" +checksum = "923c85a23cb9a9475b8cd4479ad3a06252604a361626e9ae7dc0dc635af22c22" dependencies = [ "anyhow", "elf", @@ -1288,9 +1043,9 @@ dependencies = [ [[package]] name = "risc0-build" -version = "0.19.0" +version = "0.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c44fdc4ad18c946a26dc42ed95ffc1cfa09a18973e68e394b83840724a5ca7ab" +checksum = "e58d4cc25e243e52d1ccd75d357b0aa55081736bf3052c65a823fdf169586843" dependencies = [ "anyhow", "cargo_metadata", @@ -1305,9 +1060,9 @@ dependencies = [ [[package]] name = "risc0-circuit-recursion" -version = "0.19.0" +version = "0.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "924bbd4f27070f04556e10565441fbf64e399763a3f244819f84dc645590bca1" +checksum = "97547e10e9fdaaab8b64ffb45dc158b31f023b1a68015c6ce9f12fe3e403012a" dependencies = [ "anyhow", "bytemuck", @@ -1319,9 +1074,9 @@ dependencies = [ [[package]] name = "risc0-circuit-rv32im" -version = "0.19.0" +version = "0.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ac44b6493d73638018d62eccec93f2797795d286c6201e2a79d842a16bbb43f" +checksum = "1a269d01b18cba24ee1a08f68726fc3623e8705ed79d158377d12e9129dcde2e" dependencies = [ "anyhow", "log", @@ -1333,9 +1088,9 @@ dependencies = [ [[package]] name = "risc0-core" -version = "0.19.0" +version = "0.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f8d9ff7ca4b8a9ecf63e4567dfc5ab73ea4c4c20618cdd36d5c0eb69be80cb2" +checksum = "477e0bb8d2ec0b7955088b521eb596901e652d0faa2ea73bda0b77e05af5c07d" dependencies = [ "bytemuck", "rand_core", @@ -1343,9 +1098,9 @@ dependencies = [ [[package]] name = "risc0-zkp" -version = "0.19.0" +version = "0.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1b8f047ec52f645e5e1c46f69303658f9cca96f0a2dcb78b4e7cadef5c2ac3d" +checksum = "d5abb1a0cf847d3f9aed1e563b76c358107e7ba66dbfab28f7144252c990bd82" dependencies = [ "anyhow", "blake2", @@ -1364,9 +1119,9 @@ dependencies = [ [[package]] name = "risc0-zkvm" -version = "0.19.0" +version = "0.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4b51d8aa8a4b0a350cca2deb9ead841989ed601ca3091e33a8ee8e6f2453048" +checksum = "3cf80df202c038efc2199be34fda8114b38bfc5b2b51c60cbbdf1f425b07b384" dependencies = [ "anyhow", "bincode", @@ -1396,9 +1151,9 @@ dependencies = [ [[package]] name = "risc0-zkvm-platform" -version = "0.19.0" +version = "0.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59e9d18c75958239e91213a181e836e28dfbede913e4de66fa36e2ad1d70fcdc" +checksum = "2dcd6b66f7a4972001db0acf3f06d99b7851c8d9f0de1f7e0fb4496c66c5cd02" dependencies = [ "bytemuck", "getrandom", @@ -1440,15 +1195,6 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" -[[package]] -name = "same-file" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" -dependencies = [ - "winapi-util", -] - [[package]] name = "schannel" version = "0.1.22" @@ -1458,12 +1204,6 @@ dependencies = [ "windows-sys", ] -[[package]] -name = "scopeguard" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" - [[package]] name = "security-framework" version = "2.9.2" @@ -1650,16 +1390,6 @@ dependencies = [ "syn", ] -[[package]] -name = "tinytemplate" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc" -dependencies = [ - "serde", - "serde_json", -] - [[package]] name = "tinyvec" version = "1.6.0" @@ -1677,9 +1407,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.33.0" +version = "1.34.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f38200e3ef7995e5ef13baec2f432a6da0aa9ac495b2c0e8f3b7eec2c92d653" +checksum = "d0c014766411e834f7af5b8f4cf46257aab4036ca95e9d2c144a10f59ad6f5b9" dependencies = [ "backtrace", "bytes", @@ -1754,9 +1484,9 @@ dependencies = [ [[package]] name = "try-lock" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "typenum" @@ -1766,9 +1496,9 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" [[package]] name = "unicode-bidi" -version = "0.3.13" +version = "0.3.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" +checksum = "6f2528f27a9eb2b21e69c95319b30bd0efd85d09c379741b0f78ea1d86be2416" [[package]] name = "unicode-ident" @@ -1787,9 +1517,9 @@ dependencies = [ [[package]] name = "url" -version = "2.4.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" +checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" dependencies = [ "form_urlencoded", "idna", @@ -1808,16 +1538,6 @@ version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" -[[package]] -name = "walkdir" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" -dependencies = [ - "same-file", - "winapi-util", -] - [[package]] name = "want" version = "0.3.1" @@ -1835,9 +1555,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.88" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7daec296f25a1bae309c0cd5c29c4b260e510e6d813c286b19eaadf409d40fce" +checksum = "0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064e" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -1845,9 +1565,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.88" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e397f4664c0e4e428e8313a469aaa58310d302159845980fd23b0f22a847f217" +checksum = "1b56f625e64f3a1084ded111c4d5f477df9f8c92df113852fa5a374dbda78826" dependencies = [ "bumpalo", "log", @@ -1860,9 +1580,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-futures" -version = "0.4.38" +version = "0.4.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9afec9963e3d0994cac82455b2b3502b81a7f40f9a0d32181f7528d9f4b43e02" +checksum = "ac36a15a220124ac510204aec1c3e5db8a22ab06fd6706d881dc6149f8ed9a12" dependencies = [ "cfg-if", "js-sys", @@ -1872,9 +1592,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.88" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5961017b3b08ad5f3fe39f1e79877f8ee7c23c5e5fd5eb80de95abc41f1f16b2" +checksum = "0162dbf37223cd2afce98f3d0785506dcb8d266223983e4b5b525859e6e182b2" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1882,9 +1602,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.88" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5353b8dab669f5e10f5bd76df26a9360c748f054f862ff5f3f8aae0c7fb3907" +checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283" dependencies = [ "proc-macro2", "quote", @@ -1895,15 +1615,15 @@ dependencies = [ [[package]] name = "wasm-bindgen-shared" -version = "0.2.88" +version = "0.2.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d046c5d029ba91a1ed14da14dca44b68bf2f124cfbaf741c54151fdb3e0750b" +checksum = "7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f" [[package]] name = "web-sys" -version = "0.3.65" +version = "0.3.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5db499c5f66323272151db0e666cd34f78617522fb0c1604d31a27c50c206a85" +checksum = "50c24a44ec86bb68fbecd1b3efed7e85ea5621b39b35ef2766b66cd984f8010f" dependencies = [ "js-sys", "wasm-bindgen", @@ -1937,15 +1657,6 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" -[[package]] -name = "winapi-util" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" -dependencies = [ - "winapi", -] - [[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" diff --git a/hash/risc0/bench/Cargo.toml b/hash/risc0/bench/Cargo.toml index 5363877..6299669 100644 --- a/hash/risc0/bench/Cargo.toml +++ b/hash/risc0/bench/Cargo.toml @@ -1,6 +1,13 @@ +[package] +name = "benchmark" +version = "0.1.0" +edition = "2021" + [workspace] -resolver = "2" -members = ["host", "methods"] +members = ["methods"] + +[workspace.dependencies] +methods = { path = "methods" } # Always optimize; building and running the guest takes much longer without optimization. [profile.dev] @@ -15,3 +22,9 @@ lto = true [profile.release.build-override] opt-level = 3 + +[dependencies] +risc0-zkvm = { version = "0.19.0" } +serde = "1.0" +rand = "0.8.3" +methods = { workspace = true } \ No newline at end of file diff --git a/hash/risc0/bench/host/Cargo.toml b/hash/risc0/bench/host/Cargo.toml deleted file mode 100644 index 22fd27f..0000000 --- a/hash/risc0/bench/host/Cargo.toml +++ /dev/null @@ -1,13 +0,0 @@ -[package] -name = "host" -version = "0.1.0" -edition = "2021" - -[dependencies] -methods = { path = "../methods" } -risc0-zkvm = { version = "0.19.0" } -serde = "1.0" -rand = "0.8.3" - -[dev-dependencies] -criterion = "0.5.1" diff --git a/hash/risc0/bench/methods/guest/Cargo.lock b/hash/risc0/bench/methods/guest/Cargo.lock index b817f44..bbf6d2f 100644 --- a/hash/risc0/bench/methods/guest/Cargo.lock +++ b/hash/risc0/bench/methods/guest/Cargo.lock @@ -134,6 +134,15 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +[[package]] +name = "keccak" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f6d5ed8676d904364de097082f4e7d240b571b67989ced0240f08b7f966f940" +dependencies = [ + "cpufeatures", +] + [[package]] name = "libc" version = "0.2.150" @@ -157,6 +166,7 @@ name = "method" version = "0.1.0" dependencies = [ "risc0-zkvm", + "sha3", ] [[package]] @@ -372,6 +382,16 @@ dependencies = [ "digest", ] +[[package]] +name = "sha3" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75872d278a8f37ef87fa0ddbda7802605cb18344497949862c0d4dcb291eba60" +dependencies = [ + "digest", + "keccak", +] + [[package]] name = "subtle" version = "2.5.0" diff --git a/hash/risc0/bench/methods/guest/Cargo.toml b/hash/risc0/bench/methods/guest/Cargo.toml index 8bcb40f..fb613e6 100644 --- a/hash/risc0/bench/methods/guest/Cargo.toml +++ b/hash/risc0/bench/methods/guest/Cargo.toml @@ -8,7 +8,4 @@ edition = "2021" [dependencies] # If you want to try (experimental) std support, add `features = [ "std" ]` to risc0-zkvm risc0-zkvm = { version = "0.19.0", default-features = false, features = [ "std" ] } - -# [lib] -# name = "guest" -# path = "src/mod.rs" \ No newline at end of file +sha3 = "0.10.8" \ No newline at end of file diff --git a/hash/risc0/bench/methods/guest/src/bin/blake2b.rs b/hash/risc0/bench/methods/guest/src/bin/blake2b.rs new file mode 100644 index 0000000..c28e7e0 --- /dev/null +++ b/hash/risc0/bench/methods/guest/src/bin/blake2b.rs @@ -0,0 +1,15 @@ +#![no_main] + +use risc0_zkvm::{guest::env, sha::Digest}; +use sha3::{Digest as _, Keccak256}; + +risc0_zkvm::guest::entry!(main); + +pub fn main() { + + let data: Vec = env::read(); + let hash: [u8;32] = Keccak256::digest(data).into(); + let digest = Digest::try_from(hash).unwrap(); + env::commit(&digest) + +} diff --git a/hash/risc0/bench/methods/guest/src/bin/blake3.rs b/hash/risc0/bench/methods/guest/src/bin/blake3.rs new file mode 100644 index 0000000..c28e7e0 --- /dev/null +++ b/hash/risc0/bench/methods/guest/src/bin/blake3.rs @@ -0,0 +1,15 @@ +#![no_main] + +use risc0_zkvm::{guest::env, sha::Digest}; +use sha3::{Digest as _, Keccak256}; + +risc0_zkvm::guest::entry!(main); + +pub fn main() { + + let data: Vec = env::read(); + let hash: [u8;32] = Keccak256::digest(data).into(); + let digest = Digest::try_from(hash).unwrap(); + env::commit(&digest) + +} diff --git a/hash/risc0/bench/methods/guest/src/bin/keccak.rs b/hash/risc0/bench/methods/guest/src/bin/keccak.rs new file mode 100644 index 0000000..c28e7e0 --- /dev/null +++ b/hash/risc0/bench/methods/guest/src/bin/keccak.rs @@ -0,0 +1,15 @@ +#![no_main] + +use risc0_zkvm::{guest::env, sha::Digest}; +use sha3::{Digest as _, Keccak256}; + +risc0_zkvm::guest::entry!(main); + +pub fn main() { + + let data: Vec = env::read(); + let hash: [u8;32] = Keccak256::digest(data).into(); + let digest = Digest::try_from(hash).unwrap(); + env::commit(&digest) + +} diff --git a/hash/risc0/bench/methods/guest/src/main.rs b/hash/risc0/bench/methods/guest/src/bin/sha256.rs similarity index 99% rename from hash/risc0/bench/methods/guest/src/main.rs rename to hash/risc0/bench/methods/guest/src/bin/sha256.rs index aa4473f..9b47e39 100644 --- a/hash/risc0/bench/methods/guest/src/main.rs +++ b/hash/risc0/bench/methods/guest/src/bin/sha256.rs @@ -1,7 +1,6 @@ #![no_main] use risc0_zkvm::{guest::env, sha, sha::Sha256}; - risc0_zkvm::guest::entry!(main); pub fn main() { diff --git a/hash/risc0/bench/run.sh b/hash/risc0/bench/run.sh index 03e2842..35ba62a 100755 --- a/hash/risc0/bench/run.sh +++ b/hash/risc0/bench/run.sh @@ -3,5 +3,8 @@ # Set a default value if ZKBENCH_INPUT_SIZE_KB is not set : ${ZKBENCH_INPUT_SIZE_KB:=1024} +# Set a default value if ZKBENCH_INPUT_SIZE_KB is not set +: ${WHICH:="all"} + # Run cargo run with the specified environment variable -cargo run $ZKBENCH_INPUT_SIZE_KB +cargo run $WHICH $ZKBENCH_INPUT_SIZE_KB diff --git a/hash/risc0/bench/src/benches/blake2b.rs b/hash/risc0/bench/src/benches/blake2b.rs new file mode 100644 index 0000000..71c6ff5 --- /dev/null +++ b/hash/risc0/bench/src/benches/blake2b.rs @@ -0,0 +1,33 @@ +use methods::{ + KECCAK_ELF, KECCAK_ID +}; +use risc0_zkvm::{default_prover, ExecutorEnv}; +use risc0_zkvm::{ sha}; +// use rand::RngCore; +use std::time::Instant; + +pub fn keccak_bench(input: Vec) { + + let start_time = Instant::now(); + + let env = ExecutorEnv::builder().write(&input).unwrap().build().unwrap(); + + // Obtain the default prover. + let prover = default_prover(); + + // Produce a receipt by proving the specified ELF binary. + let receipt = prover.prove_elf(env, KECCAK_ELF).unwrap(); + + // For example: + let _output: sha::Digest = receipt.journal.decode().unwrap(); + + let elapsed_time1 = start_time.elapsed(); + // verify your receipt + receipt.verify(KECCAK_ID).unwrap(); + + let elapsed_time2 = start_time.elapsed(); + + eprintln!("Total time: {:?}", elapsed_time2); + eprintln!("verification time: {:?}", elapsed_time2 - elapsed_time1); + +} \ No newline at end of file diff --git a/hash/risc0/bench/src/benches/blake3.rs b/hash/risc0/bench/src/benches/blake3.rs new file mode 100644 index 0000000..71c6ff5 --- /dev/null +++ b/hash/risc0/bench/src/benches/blake3.rs @@ -0,0 +1,33 @@ +use methods::{ + KECCAK_ELF, KECCAK_ID +}; +use risc0_zkvm::{default_prover, ExecutorEnv}; +use risc0_zkvm::{ sha}; +// use rand::RngCore; +use std::time::Instant; + +pub fn keccak_bench(input: Vec) { + + let start_time = Instant::now(); + + let env = ExecutorEnv::builder().write(&input).unwrap().build().unwrap(); + + // Obtain the default prover. + let prover = default_prover(); + + // Produce a receipt by proving the specified ELF binary. + let receipt = prover.prove_elf(env, KECCAK_ELF).unwrap(); + + // For example: + let _output: sha::Digest = receipt.journal.decode().unwrap(); + + let elapsed_time1 = start_time.elapsed(); + // verify your receipt + receipt.verify(KECCAK_ID).unwrap(); + + let elapsed_time2 = start_time.elapsed(); + + eprintln!("Total time: {:?}", elapsed_time2); + eprintln!("verification time: {:?}", elapsed_time2 - elapsed_time1); + +} \ No newline at end of file diff --git a/hash/risc0/bench/src/benches/keccak.rs b/hash/risc0/bench/src/benches/keccak.rs new file mode 100644 index 0000000..71c6ff5 --- /dev/null +++ b/hash/risc0/bench/src/benches/keccak.rs @@ -0,0 +1,33 @@ +use methods::{ + KECCAK_ELF, KECCAK_ID +}; +use risc0_zkvm::{default_prover, ExecutorEnv}; +use risc0_zkvm::{ sha}; +// use rand::RngCore; +use std::time::Instant; + +pub fn keccak_bench(input: Vec) { + + let start_time = Instant::now(); + + let env = ExecutorEnv::builder().write(&input).unwrap().build().unwrap(); + + // Obtain the default prover. + let prover = default_prover(); + + // Produce a receipt by proving the specified ELF binary. + let receipt = prover.prove_elf(env, KECCAK_ELF).unwrap(); + + // For example: + let _output: sha::Digest = receipt.journal.decode().unwrap(); + + let elapsed_time1 = start_time.elapsed(); + // verify your receipt + receipt.verify(KECCAK_ID).unwrap(); + + let elapsed_time2 = start_time.elapsed(); + + eprintln!("Total time: {:?}", elapsed_time2); + eprintln!("verification time: {:?}", elapsed_time2 - elapsed_time1); + +} \ No newline at end of file diff --git a/hash/risc0/bench/src/benches/mod.rs b/hash/risc0/bench/src/benches/mod.rs new file mode 100644 index 0000000..3007ce6 --- /dev/null +++ b/hash/risc0/bench/src/benches/mod.rs @@ -0,0 +1,2 @@ +pub mod sha256; +pub mod keccak; \ No newline at end of file diff --git a/hash/risc0/bench/host/src/main.rs b/hash/risc0/bench/src/benches/sha256.rs similarity index 55% rename from hash/risc0/bench/host/src/main.rs rename to hash/risc0/bench/src/benches/sha256.rs index afab626..169244a 100644 --- a/hash/risc0/bench/host/src/main.rs +++ b/hash/risc0/bench/src/benches/sha256.rs @@ -1,17 +1,11 @@ use methods::{ - METHOD_ELF, METHOD_ID + SHA256_ELF, SHA256_ID }; use risc0_zkvm::{default_prover, ExecutorEnv}; use risc0_zkvm::{ sha}; // use rand::RngCore; -use rand::Rng; use std::time::Instant; -fn generate_bytes(size: usize) -> Vec { - let mut rng = rand::thread_rng(); - (0..size).map(|_| rng.gen()).collect() -} - pub fn sha_bench(input: Vec) { let start_time = Instant::now(); @@ -22,7 +16,7 @@ pub fn sha_bench(input: Vec) { let prover = default_prover(); // Produce a receipt by proving the specified ELF binary. - let receipt = prover.prove_elf(env, METHOD_ELF).unwrap(); + let receipt = prover.prove_elf(env, SHA256_ELF).unwrap(); // TODO: Implement code for retrieving receipt journal here. @@ -30,18 +24,8 @@ pub fn sha_bench(input: Vec) { let _output: sha::Digest = receipt.journal.decode().unwrap(); // verify your receipt - receipt.verify(METHOD_ID).unwrap(); + receipt.verify(SHA256_ID).unwrap(); let elapsed_time = start_time.elapsed(); eprintln!("Total time: {:?}", elapsed_time); -} - -fn main() { - let args: Vec = std::env::args().collect(); - eprintln!("{:?}", &args[1]); - // eprintln!("{:?}", &args[2]); - let size_kb = args[1].parse::().unwrap(); - eprintln!("{:?}", size_kb); - let input = generate_bytes(size_kb); - sha_bench(input); -} +} \ No newline at end of file diff --git a/hash/risc0/bench/src/main.rs b/hash/risc0/bench/src/main.rs new file mode 100644 index 0000000..8a64580 --- /dev/null +++ b/hash/risc0/bench/src/main.rs @@ -0,0 +1,44 @@ +mod benches; +use benches::sha256::sha_bench; +use benches::keccak::keccak_bench; +use rand::Rng; + + +fn generate_bytes(size: usize) -> Vec { + let mut rng = rand::thread_rng(); + (0..size).map(|_| rng.gen()).collect() +} + + + +fn main() { + let args: Vec = std::env::args().collect(); + + let mut flag = 0; + + let hash_type = &args[1]; + let size_kb = args[2].parse::().unwrap(); + + eprintln!("data size(bytes): {:?}", size_kb); + let input = generate_bytes(size_kb); + + if hash_type == "all" || hash_type == "sha256" { + println!("SHA256 Benchmarking: "); + sha_bench(input.clone()); + println!(""); + flag = 1; + } + + if hash_type == "all" || hash_type == "keccak" { + println!("KECCAK Benchmarking: "); + keccak_bench(input.clone()); + println!(""); + flag = 1; + } + + if flag == 0 { + println!("Wrong Benchmarking Name"); + } + println!("All Done!"); + +}