feat: added poseidon hash

This commit is contained in:
yogesh0509
2024-11-21 22:15:56 +05:30
committed by tanmoy
parent 16943c5401
commit 992bbf786b
15 changed files with 318 additions and 230 deletions

View File

@@ -6,79 +6,14 @@
"results": [
{
"metrics": {
"compressed_proof_size_bytes": 210597,
"cycles": 65536,
"memory_usage_bytes": 0,
"proof_size_bytes": 215822
},
"name": "1",
"time": {
"nanos": 56063,
"secs": 0
}
},
{
"metrics": {
"compressed_proof_size_bytes": 205826,
"cycles": 65536,
"memory_usage_bytes": 0,
"proof_size_bytes": 215822
},
"name": "10",
"time": {
"nanos": 69325,
"secs": 0
}
},
{
"metrics": {
"compressed_proof_size_bytes": 210327,
"cycles": 65536,
"memory_usage_bytes": 0,
"proof_size_bytes": 215822
},
"name": "100",
"time": {
"nanos": 103846,
"secs": 0
}
},
{
"metrics": {
"compressed_proof_size_bytes": 208315,
"cycles": 65536,
"memory_usage_bytes": 0,
"proof_size_bytes": 215822
},
"name": "1000",
"time": {
"nanos": 70053,
"secs": 0
}
},
{
"metrics": {
"compressed_proof_size_bytes": 206182,
"cycles": 65536,
"memory_usage_bytes": 0,
"proof_size_bytes": 215822
},
"name": "10000",
"time": {
"nanos": 63687,
"secs": 0
}
},
{
"metrics": {
"compressed_proof_size_bytes": 209783,
"compressed_proof_size_bytes": 209571,
"cycles": 65536,
"memory_usage_bytes": 0,
"proof_size_bytes": 215822
},
"name": "100000",
"time": {
"nanos": 264947,
"nanos": 113886,
"secs": 0
}
}
@@ -89,58 +24,32 @@
"results": [
{
"metrics": {
"compressed_proof_size_bytes": 210157,
"compressed_proof_size_bytes": 210321,
"cycles": 65536,
"memory_usage_bytes": 0,
"proof_size_bytes": 215822
},
"name": "1k bytes",
"time": {
"nanos": 25095,
"secs": 0
}
},
{
"metrics": {
"compressed_proof_size_bytes": 229677,
"cycles": 131072,
"memory_usage_bytes": 0,
"proof_size_bytes": 238862
},
"name": "10k bytes",
"time": {
"nanos": 15865,
"secs": 0
}
},
{
"metrics": {
"compressed_proof_size_bytes": 240952,
"cycles": 262144,
"memory_usage_bytes": 0,
"proof_size_bytes": 250574
},
"name": "100k bytes",
"time": {
"nanos": 11226,
"nanos": 16558,
"secs": 0
}
}
]
},
{
"name": "Merkle Membership",
"name": "Poseidon",
"results": [
{
"metrics": {
"compressed_proof_size_bytes": 208862,
"cycles": 65536,
"compressed_proof_size_bytes": 256742,
"cycles": 524288,
"memory_usage_bytes": 0,
"proof_size_bytes": 215822
"proof_size_bytes": 262798
},
"name": "Merkle Membership",
"name": "Poseidon",
"time": {
"nanos": 14052,
"nanos": 54732,
"secs": 0
}
}

View File

@@ -1,7 +1,7 @@
extern crate host;
use benchy::{benchmark, BenchmarkRun};
use host::{fib::fib, merkle, sha::sha};
use host::{fib::fib, poseidon::poseidon, sha::sha};
use risc0_zkvm::{Receipt, SessionStats};
// #[benchmark]
@@ -11,11 +11,11 @@ use risc0_zkvm::{Receipt, SessionStats};
// }
#[benchmark("Fibonacci", [
("1", 1),
("10", 10),
("100", 100),
("1000", 1000),
("10000", 10000),
// ("1", 1),
// ("10", 10),
// ("100", 100),
// ("1000", 1000),
// ("10000", 10000),
("100000", 100000),
])]
fn fibonacci(b: &mut BenchmarkRun, n: u32) {
@@ -25,8 +25,8 @@ fn fibonacci(b: &mut BenchmarkRun, n: u32) {
#[benchmark("SHA256", [
("1k bytes", 1),
("10k bytes", 10),
("100k bytes", 100),
// ("10k bytes", 10),
// ("100k bytes", 100),
])]
fn sha256(b: &mut BenchmarkRun, n: usize) {
let prove = sha(n);
@@ -54,9 +54,10 @@ fn sha256(b: &mut BenchmarkRun, n: usize) {
// log_session(&b.run(prove), b);
// }
#[benchmark("Merkle Membership")]
fn merkle_membership(b: &mut BenchmarkRun) {
let prove = merkle::merkle_membership(10);
#[benchmark("Poseidon")]
fn poseidon_hash(b: &mut BenchmarkRun) {
let n: u32 = 1;
let prove = poseidon(n);
log_session(&b.run(prove), b);
}
@@ -89,5 +90,5 @@ benchy::main!(
sha256,
// blake3_bench,
// merkle_merge,
merkle_membership,
poseidon_hash,
);

View File

@@ -1,5 +1,6 @@
// pub mod assert;
// pub mod blake3;
pub mod fib;
pub mod merkle;
// pub mod merkle;
pub mod sha;
pub mod poseidon;

View File

@@ -0,0 +1,24 @@
use methods::POSEIDON_ELF;
use risc0_zkvm::{default_prover, ExecutorEnv, Receipt, SessionStats};
pub fn poseidon(n: u32) -> impl FnMut() -> (Receipt, SessionStats) {
let env = ExecutorEnv::builder()
.write(&[n])
.expect("Failed to write numbers")
.build()
.expect("Failed to build env");
let prover = default_prover();
let prove_info = prover.prove(env, POSEIDON_ELF).expect("Proving failed");
move || {
let session = &prove_info.stats;
let receipt = &prove_info.receipt;
let session_stats = SessionStats {
segments: session.segments,
total_cycles: session.total_cycles,
user_cycles: session.user_cycles,
};
(receipt.clone(), session_stats)
}
}

1
risc-zero/methods/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
/target/

View File

@@ -11,7 +11,7 @@ methods = [
"sha",
"fib",
"merkle",
"merkle_membership",
"poseidon",
]
[profile.release]

1
risc-zero/methods/fib/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
/target/

1
risc-zero/methods/merkle/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
/target/

View File

@@ -1,14 +0,0 @@
[package]
name = "merkle_membership"
version = "0.1.0"
edition = "2021"
[workspace]
[dependencies]
risc0-zkvm = { version = "1.1.2", default-features = false }
shared = { path = "../../shared" }
[profile.release]
lto = true
opt-level = 3

View File

@@ -1,28 +0,0 @@
#![no_main]
#![no_std]
extern crate alloc;
use alloc::vec::Vec;
use core::hint::black_box;
use risc0_zkvm::{
guest::{env, sha::Impl},
sha::{Digest, Sha256},
};
risc0_zkvm::guest::entry!(main);
fn main() {
let hash_bytes: Vec<u8> = env::read();
let hash_words: Vec<u32> = hash_bytes
.chunks(4)
.map(|slice| u32::from_be_bytes(slice.try_into().unwrap()))
.collect();
let hash = hash_words
.chunks(8)
.map(|words| Digest::new(words.try_into().unwrap()))
.reduce(|a, b| *<Impl as Sha256>::hash_pair(&a, &b))
.unwrap();
black_box(hash);
}

1
risc-zero/methods/poseidon/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
/target/

View File

@@ -16,9 +16,9 @@ dependencies = [
[[package]]
name = "anyhow"
version = "1.0.75"
version = "1.0.93"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6"
checksum = "4c95c10ba0b00a02636238b814946408b1322d5ac4760326e6fb8ec956d85775"
[[package]]
name = "ark-bn254"
@@ -146,6 +146,7 @@ dependencies = [
"ark-ff",
"ark-std",
"tracing",
"tracing-subscriber",
]
[[package]]
@@ -207,9 +208,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
[[package]]
name = "bitflags"
version = "2.4.0"
version = "2.6.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635"
checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de"
[[package]]
name = "blake2"
@@ -255,27 +256,27 @@ dependencies = [
"proc-macro-crate",
"proc-macro2",
"quote",
"syn 2.0.87",
"syn 2.0.89",
]
[[package]]
name = "bytemuck"
version = "1.14.0"
version = "1.20.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "374d28ec25809ee0e23827c2ab573d729e293f281dfe393500e7ad618baa61c6"
checksum = "8b37c88a63ffd85d15b406896cc343916d7cf57838a847b3a6f2ca5d39a5695a"
dependencies = [
"bytemuck_derive",
]
[[package]]
name = "bytemuck_derive"
version = "1.5.0"
version = "1.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "965ab7eb5f8f97d2a083c799f3a1b994fc397b2fe2da5d1da1626ce15a39f2b1"
checksum = "bcfcc3cd946cb52f0bbfdbbcfa2f4e24f75ebb6c0e1002f7c25904fada18b9ec"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.87",
"syn 2.0.89",
]
[[package]]
@@ -298,9 +299,9 @@ checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724"
[[package]]
name = "const-oid"
version = "0.9.5"
version = "0.9.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "28c122c3980598d243d63d9a704629a2d748d101f278052ff068be5a4423ab6f"
checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8"
[[package]]
name = "core-foundation"
@@ -331,13 +332,24 @@ dependencies = [
[[package]]
name = "cpufeatures"
version = "0.2.9"
version = "0.2.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a17b76ff3a4162b0b27f354a0c87015ddad39d35f9c0c36607a3bdd175dde1f1"
checksum = "0ca741a962e1b0bff6d724a1a0958b686406e853bb14061f218562e1896f95e6"
dependencies = [
"libc",
]
[[package]]
name = "crypto-bigint"
version = "0.5.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76"
dependencies = [
"generic-array",
"subtle",
"zeroize",
]
[[package]]
name = "crypto-common"
version = "0.1.6"
@@ -385,9 +397,9 @@ checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0"
[[package]]
name = "elf"
version = "0.7.2"
version = "0.7.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e2b183d6ce6ca4cf30e3db37abf5b52568b5f9015c97d9fbdd7026aa5dcdd758"
checksum = "4445909572dbd556c457c849c4ca58623d84b27c8fff1e74b0b4227d8b90d17b"
[[package]]
name = "equivalent"
@@ -413,7 +425,7 @@ checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.87",
"syn 2.0.89",
]
[[package]]
@@ -434,9 +446,9 @@ dependencies = [
[[package]]
name = "getrandom"
version = "0.2.10"
version = "0.2.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427"
checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
dependencies = [
"cfg-if",
"libc",
@@ -470,6 +482,15 @@ version = "0.4.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6fe2267d4ed49bc07b63801559be28c718ea06c4738b7a03c94df7386d2cde46"
[[package]]
name = "hmac"
version = "0.12.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e"
dependencies = [
"digest",
]
[[package]]
name = "indexmap"
version = "2.6.0"
@@ -491,27 +512,58 @@ dependencies = [
[[package]]
name = "itoa"
version = "1.0.9"
version = "1.0.13"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38"
checksum = "540654e97a3f4470a492cd30ff187bc95d89557a903a2bbf112e2fae98104ef2"
[[package]]
name = "keccak"
version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ecc2af9a1119c51f12a14607e783cb977bde58bc069ff0c3da1095e635d70654"
dependencies = [
"cpufeatures",
]
[[package]]
name = "lambdaworks-crypto"
version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bbc2a4da0d9e52ccfe6306801a112e81a8fc0c76aa3e4449fefeda7fef72bb34"
dependencies = [
"lambdaworks-math",
"serde",
"sha2",
"sha3",
]
[[package]]
name = "lambdaworks-math"
version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d1bd2632acbd9957afc5aeec07ad39f078ae38656654043bf16e046fa2730e23"
dependencies = [
"serde",
"serde_json",
]
[[package]]
name = "libc"
version = "0.2.148"
version = "0.2.164"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9cdc71e17332e86d2e1d38c1f99edcb6288ee11b815fb1a4b049eaa2114d369b"
checksum = "433bfe06b8c75da9b2e3fbea6e5329ff87748f0b144ef75306e674c3f6f7c13f"
[[package]]
name = "libm"
version = "0.2.7"
version = "0.2.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f7012b1bbb0719e1097c47611d3898568c546d597c2e74d66f6087edd5233ff4"
checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa"
[[package]]
name = "log"
version = "0.4.20"
version = "0.4.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24"
[[package]]
name = "malloc_buf"
@@ -528,21 +580,13 @@ version = "2.7.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3"
[[package]]
name = "merkle_membership"
version = "0.1.0"
dependencies = [
"risc0-zkvm",
"shared",
]
[[package]]
name = "metal"
version = "0.29.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7ecfd3296f8c56b7c1f6fbac3c71cefa9d78ce009850c45000015f206dc7fa21"
dependencies = [
"bitflags 2.4.0",
"bitflags 2.6.0",
"block",
"core-graphics-types",
"foreign-types",
@@ -596,15 +640,25 @@ checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775"
[[package]]
name = "paste"
version = "1.0.14"
version = "1.0.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c"
checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a"
[[package]]
name = "pin-project-lite"
version = "0.2.13"
version = "0.2.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58"
checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff"
[[package]]
name = "poseidon"
version = "0.1.0"
dependencies = [
"risc0-zkvm",
"shared",
"starknet-crypto",
"starknet-types-core",
]
[[package]]
name = "ppv-lite86"
@@ -626,9 +680,9 @@ dependencies = [
[[package]]
name = "proc-macro2"
version = "1.0.89"
version = "1.0.91"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f139b0662de085916d1fb67d2b4169d1addddda1919e696f3252b740b629986e"
checksum = "307e3004becf10f5a6e0d59d20f3cd28231b0e0827a96cd3e0ce6d14bc1e4bb3"
dependencies = [
"unicode-ident",
]
@@ -668,6 +722,16 @@ version = "0.6.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
[[package]]
name = "rfc6979"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f8dd2a808d456c4a54e300a23e9f5a67e122c3024119acbfd73e3bf664491cb2"
dependencies = [
"hmac",
"subtle",
]
[[package]]
name = "risc0-binfmt"
version = "1.1.3"
@@ -680,7 +744,7 @@ dependencies = [
"risc0-zkp",
"risc0-zkvm-platform",
"serde",
"syn 2.0.87",
"syn 2.0.89",
"tracing",
]
@@ -739,6 +803,7 @@ dependencies = [
"bytemuck",
"hex",
"num-bigint",
"num-traits",
"risc0-binfmt",
"risc0-zkp",
"serde",
@@ -827,9 +892,9 @@ dependencies = [
[[package]]
name = "ryu"
version = "1.0.15"
version = "1.0.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741"
checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f"
[[package]]
name = "semver"
@@ -839,46 +904,57 @@ checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b"
[[package]]
name = "serde"
version = "1.0.188"
version = "1.0.215"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e"
checksum = "6513c1ad0b11a9376da888e3e0baa0077f1aed55c17f50e7b2397136129fb88f"
dependencies = [
"serde_derive",
]
[[package]]
name = "serde_derive"
version = "1.0.188"
version = "1.0.215"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2"
checksum = "ad1e866f866923f252f05c889987993144fb74e722403468a4ebd70c3cd756c0"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.87",
"syn 2.0.89",
]
[[package]]
name = "serde_json"
version = "1.0.107"
version = "1.0.133"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65"
checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377"
dependencies = [
"itoa",
"memchr",
"ryu",
"serde",
]
[[package]]
name = "sha2"
version = "0.10.7"
version = "0.10.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "479fb9d862239e610720565ca91403019f2f00410f1864c5aa7479b950a76ed8"
checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8"
dependencies = [
"cfg-if",
"cpufeatures",
"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 = "shared"
version = "0.1.0"
@@ -895,14 +971,56 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d904e7009df136af5297832a3ace3370cd14ff1546a232f4f185036c2736fcac"
dependencies = [
"quote",
"syn 2.0.87",
"syn 2.0.89",
]
[[package]]
name = "starknet-crypto"
version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ded22ccf4cb9e572ce3f77de6066af53560cd2520d508876c83bb1e6b29d5cbc"
dependencies = [
"crypto-bigint",
"hex",
"hmac",
"num-bigint",
"num-integer",
"num-traits",
"rfc6979",
"sha2",
"starknet-curve",
"starknet-types-core",
"zeroize",
]
[[package]]
name = "starknet-curve"
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bcde6bd74269b8161948190ace6cf069ef20ac6e79cd2ba09b320efa7500b6de"
dependencies = [
"starknet-types-core",
]
[[package]]
name = "starknet-types-core"
version = "0.1.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fa1b9e01ccb217ab6d475c5cda05dbb22c30029f7bb52b192a010a00d77a3d74"
dependencies = [
"lambdaworks-crypto",
"lambdaworks-math",
"num-bigint",
"num-integer",
"num-traits",
"serde",
]
[[package]]
name = "subtle"
version = "2.5.0"
version = "2.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc"
checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
[[package]]
name = "syn"
@@ -917,9 +1035,9 @@ dependencies = [
[[package]]
name = "syn"
version = "2.0.87"
version = "2.0.89"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "25aa4ce346d03a6dcd68dd8b4010bcb74e54e62c90c573f394c46eae99aba32d"
checksum = "44d46482f1c1c87acd84dea20c1bf5ebff4c757009ed6bf19cfd36fb10e92c4e"
dependencies = [
"proc-macro2",
"quote",
@@ -945,11 +1063,11 @@ dependencies = [
[[package]]
name = "tracing"
version = "0.1.37"
version = "0.1.40"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8"
checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef"
dependencies = [
"cfg-if",
"log",
"pin-project-lite",
"tracing-attributes",
"tracing-core",
@@ -957,20 +1075,33 @@ dependencies = [
[[package]]
name = "tracing-attributes"
version = "0.1.26"
version = "0.1.27"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5f4f31f56159e98206da9efd823404b79b6ef3143b4a7ab76e67b1751b25a4ab"
checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.87",
"syn 2.0.89",
]
[[package]]
name = "tracing-core"
version = "0.1.31"
version = "0.1.32"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0955b8137a1df6f1a2e9a37d8a6656291ff0297c1a97c24e0d8425fe2312f79a"
checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54"
dependencies = [
"once_cell",
"valuable",
]
[[package]]
name = "tracing-subscriber"
version = "0.2.25"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0e0d2eaa99c3c2e41547cfa109e910a68ea03823cccad4a0525dcbc9b01e8c71"
dependencies = [
"tracing-core",
]
[[package]]
name = "typenum"
@@ -980,15 +1111,21 @@ checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825"
[[package]]
name = "unicode-ident"
version = "1.0.12"
version = "1.0.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b"
checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83"
[[package]]
name = "valuable"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d"
[[package]]
name = "version_check"
version = "0.9.4"
version = "0.9.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a"
[[package]]
name = "wasi"
@@ -1023,7 +1160,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.87",
"syn 2.0.89",
]
[[package]]
@@ -1043,5 +1180,5 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.87",
"syn 2.0.89",
]

View File

@@ -0,0 +1,24 @@
[package]
name = "poseidon"
version = "0.1.0"
edition = "2021"
[workspace]
[dependencies]
risc0-zkvm = { version = "1.1.2", default-features = false }
shared = { path = "../../shared" }
starknet-crypto = "0.7.3"
starknet-types-core = "0.1.7"
[features]
default = ["std"]
std = [
"risc0-zkvm/std",
"starknet-crypto/std",
"starknet-types-core/std"
]
[profile.release]
lto = true
opt-level = 3

View File

@@ -0,0 +1,29 @@
#![no_main]
#![no_std]
extern crate alloc;
use core::hint::black_box;
use alloc::str::FromStr;
use risc0_zkvm::guest::env;
use starknet_crypto::poseidon_hash_single;
use starknet_types_core::felt::Felt;
risc0_zkvm::guest::entry!(main);
pub fn main() {
let n: u32 = env::read();
black_box(bench_poseidon_n(n));
}
fn bench_poseidon_n(n_thousands: u32) -> Felt {
let felt = Felt::from_str("1").unwrap();
let mut last_hash = felt;
for _ in 0..(n_thousands * 1) {
last_hash = poseidon_hash_single(felt);
}
last_hash
}

1
risc-zero/methods/sha/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
/target/