diff --git a/Cargo.lock b/Cargo.lock index 9e5b321..bc9b96a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -350,6 +350,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c481bdbf0ed3b892f6f806287d72acd515b352a4ec27a208489b8c1bc839633a" dependencies = [ "find-msvc-tools", + "jobserver", + "libc", "shlex", ] @@ -785,6 +787,16 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" +[[package]] +name = "jobserver" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" +dependencies = [ + "getrandom 0.3.4", + "libc", +] + [[package]] name = "js-sys" version = "0.3.83" @@ -1427,6 +1439,7 @@ dependencies = [ "libc", "log", "parking_lot", + "zstd", ] [[package]] @@ -1891,3 +1904,32 @@ dependencies = [ "tiny-keccak", "vacp2p_pmtree", ] + +[[package]] +name = "zstd" +version = "0.9.2+zstd.1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2390ea1bf6c038c39674f22d95f0564725fc06034a47129179810b2fc58caa54" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "4.1.3+zstd.1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e99d81b99fb3c2c2c794e3fe56c305c63d5173a16a46b5850b07c935ffc7db79" +dependencies = [ + "libc", + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "1.6.2+zstd.1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2daf2f248d9ea44454bfcb2516534e8b8ad2fc91bf818a1885495fc42bc8ac9f" +dependencies = [ + "cc", + "libc", +] diff --git a/rln-cli/Cargo.lock b/rln-cli/Cargo.lock index 52a97a0..9c90c13 100644 --- a/rln-cli/Cargo.lock +++ b/rln-cli/Cargo.lock @@ -351,6 +351,18 @@ version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" +[[package]] +name = "cc" +version = "1.2.55" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47b26a0954ae34af09b50f0de26458fa95369a0d478d8236d3f93082b219bd29" +dependencies = [ + "find-msvc-tools", + "jobserver", + "libc", + "shlex", +] + [[package]] name = "cfg-if" version = "1.0.4" @@ -579,6 +591,12 @@ version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" +[[package]] +name = "find-msvc-tools" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" + [[package]] name = "fnv" version = "1.0.7" @@ -707,6 +725,16 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" +[[package]] +name = "jobserver" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" +dependencies = [ + "getrandom 0.3.4", + "libc", +] + [[package]] name = "keccak" version = "0.1.5" @@ -1245,6 +1273,12 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5f179d4e11094a893b82fff208f74d448a7512f99f5a0acbd5c679b705f83ed9" +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + [[package]] name = "sled" version = "0.34.7" @@ -1259,6 +1293,7 @@ dependencies = [ "libc", "log", "parking_lot", + "zstd", ] [[package]] @@ -1645,3 +1680,32 @@ dependencies = [ "thiserror", "vacp2p_pmtree", ] + +[[package]] +name = "zstd" +version = "0.9.2+zstd.1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2390ea1bf6c038c39674f22d95f0564725fc06034a47129179810b2fc58caa54" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "4.1.3+zstd.1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e99d81b99fb3c2c2c794e3fe56c305c63d5173a16a46b5850b07c935ffc7db79" +dependencies = [ + "libc", + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "1.6.2+zstd.1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2daf2f248d9ea44454bfcb2516534e8b8ad2fc91bf818a1885495fc42bc8ac9f" +dependencies = [ + "cc", + "libc", +] diff --git a/rln-wasm/Cargo.lock b/rln-wasm/Cargo.lock index 69199d2..b9c9054 100644 --- a/rln-wasm/Cargo.lock +++ b/rln-wasm/Cargo.lock @@ -331,6 +331,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c481bdbf0ed3b892f6f806287d72acd515b352a4ec27a208489b8c1bc839633a" dependencies = [ "find-msvc-tools", + "jobserver", + "libc", "shlex", ] @@ -659,6 +661,16 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" +[[package]] +name = "jobserver" +version = "0.1.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" +dependencies = [ + "getrandom 0.3.4", + "libc", +] + [[package]] name = "js-sys" version = "0.3.83" @@ -1281,6 +1293,7 @@ dependencies = [ "libc", "log", "parking_lot", + "zstd", ] [[package]] @@ -1790,3 +1803,32 @@ dependencies = [ "sled", "thiserror", ] + +[[package]] +name = "zstd" +version = "0.9.2+zstd.1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2390ea1bf6c038c39674f22d95f0564725fc06034a47129179810b2fc58caa54" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "4.1.3+zstd.1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e99d81b99fb3c2c2c794e3fe56c305c63d5173a16a46b5850b07c935ffc7db79" +dependencies = [ + "libc", + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "1.6.2+zstd.1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2daf2f248d9ea44454bfcb2516534e8b8ad2fc91bf818a1885495fc42bc8ac9f" +dependencies = [ + "cc", + "libc", +] diff --git a/rln-wasm/tests/utils.rs b/rln-wasm/tests/utils.rs index 1d00f9e..3f8dee6 100644 --- a/rln-wasm/tests/utils.rs +++ b/rln-wasm/tests/utils.rs @@ -147,11 +147,11 @@ mod test { } let bytes_le = vec_wasmfr.to_bytes_le(); - let expected_le = rln::utils::vec_fr_to_bytes_le(&vec_fr); + let expected_le = vec_fr_to_bytes_le(&vec_fr); assert_eq!(bytes_le.to_vec(), expected_le); let bytes_be = vec_wasmfr.to_bytes_be(); - let expected_be = rln::utils::vec_fr_to_bytes_be(&vec_fr); + let expected_be = vec_fr_to_bytes_be(&vec_fr); assert_eq!(bytes_be.to_vec(), expected_be); let vec_wasmfr_from_le = match VecWasmFr::from_bytes_le(&bytes_le) { diff --git a/rln/README.md b/rln/README.md index f90ecb2..7c80e2c 100644 --- a/rln/README.md +++ b/rln/README.md @@ -37,7 +37,7 @@ The RLN object constructor requires the following files: Additionally, `rln.wasm` is used for testing in the rln-wasm module. ```rust -use rln::prelude::{keygen, poseidon_hash, hash_to_field_le, RLN, RLNWitnessInput, Fr, IdSecret}; +use rln::prelude::{hash_to_field_le, keygen, poseidon_hash, Fr, RLNWitnessInput, RLN}; fn main() { // 1. Initialize RLN with parameters: @@ -47,12 +47,12 @@ fn main() { let mut rln = RLN::new(tree_depth, "").unwrap(); // 2. Generate an identity keypair - let (identity_secret, id_commitment) = keygen(); + let (identity_secret, id_commitment) = keygen().unwrap(); // 3. Add a rate commitment to the Merkle tree let leaf_index = 10; let user_message_limit = Fr::from(10); - let rate_commitment = poseidon_hash(&[id_commitment, user_message_limit]); + let rate_commitment = poseidon_hash(&[id_commitment, user_message_limit]).unwrap(); rln.set_leaf(leaf_index, rate_commitment).unwrap(); // 4. Get the Merkle proof for the added commitment @@ -61,12 +61,12 @@ fn main() { // 5. Set up external nullifier (epoch + app identifier) // We generate epoch from a date seed and we ensure is // mapped to a field element by hashing-to-field its content - let epoch = hash_to_field_le(b"Today at noon, this year"); + let epoch = hash_to_field_le(b"Today at noon, this year").unwrap(); // We generate rln_identifier from an application identifier and // we ensure is mapped to a field element by hashing-to-field its content - let rln_identifier = hash_to_field_le(b"test-rln-identifier"); + let rln_identifier = hash_to_field_le(b"test-rln-identifier").unwrap(); // We generate a external nullifier - let external_nullifier = poseidon_hash(&[epoch, rln_identifier]); + let external_nullifier = poseidon_hash(&[epoch, rln_identifier]).unwrap(); // We choose a message_id satisfy 0 <= message_id < user_message_limit let message_id = Fr::from(1); @@ -74,7 +74,7 @@ fn main() { let signal = b"RLN is awesome"; // 7. Compute x from the signal - let x = hash_to_field_le(signal); + let x = hash_to_field_le(signal).unwrap(); // 8. Create witness input for RLN proof generation let witness = RLNWitnessInput::new( diff --git a/rln/ffi_c_examples/Readme.md b/rln/ffi_c_examples/Readme.md index fc3c7b2..1f1f92e 100644 --- a/rln/ffi_c_examples/Readme.md +++ b/rln/ffi_c_examples/Readme.md @@ -7,7 +7,7 @@ This example demonstrates how to use the RLN C FFI in both stateless and non-sta ### Compile lib non-stateless ```bash -cargo build -p rln +cargo build -p rln --release cargo run --features headers --bin generate-headers mv -v rln.h rln/ffi_c_examples/ ``` @@ -25,7 +25,7 @@ gcc -Wall main.c -o main -lrln -L../../target/debug ### Compile lib stateless ```bash -cargo build -p rln --no-default-features --features stateless +cargo build -p rln --release --no-default-features --features stateless cargo run --no-default-features --features stateless,headers --bin generate-headers mv -v rln.h rln/ffi_c_examples/ ``` diff --git a/rln/src/error.rs b/rln/src/error.rs index d00e3ce..a99b09d 100644 --- a/rln/src/error.rs +++ b/rln/src/error.rs @@ -2,7 +2,6 @@ use std::{array::TryFromSliceError, num::TryFromIntError}; use ark_relations::r1cs::SynthesisError; use num_bigint::{BigInt, ParseBigIntError}; -use thiserror::Error; use zerokit_utils::error::{FromConfigError, HashError, ZerokitMerkleTreeError}; use crate::circuit::{ @@ -57,7 +56,7 @@ pub enum ProtocolError { } /// Errors that can occur during proof verification -#[derive(Error, Debug)] +#[derive(Debug, thiserror::Error)] pub enum VerifyError { #[error("Invalid proof provided")] InvalidProof, diff --git a/rln/tests/ffi_utils.rs b/rln/tests/ffi_utils.rs index fd06c7b..1e0d32f 100644 --- a/rln/tests/ffi_utils.rs +++ b/rln/tests/ffi_utils.rs @@ -91,15 +91,15 @@ mod test { // Test CFr FFI functions fn test_cfr_ffi() { let cfr_zero = ffi_cfr_zero(); - let fr_zero = rln::circuit::Fr::from(0u8); + let fr_zero = Fr::from(0u8); assert_eq!(*cfr_zero, fr_zero); let cfr_one = ffi_cfr_one(); - let fr_one = rln::circuit::Fr::from(1u8); + let fr_one = Fr::from(1u8); assert_eq!(*cfr_one, fr_one); let cfr_int = ffi_uint_to_cfr(42); - let fr_int = rln::circuit::Fr::from(42u8); + let fr_int = Fr::from(42u8); assert_eq!(*cfr_int, fr_int); let cfr_debug_str = ffi_cfr_debug(Some(&cfr_int)); diff --git a/rln/tests/pm_tree.rs b/rln/tests/pm_tree.rs index 3d45939..205b30d 100644 --- a/rln/tests/pm_tree.rs +++ b/rln/tests/pm_tree.rs @@ -5,13 +5,15 @@ mod test { use std::path::PathBuf; use num_traits::identities::Zero; - use rln::pm_tree_adapter::{PmTree, PmTreeProof, PmtreeConfig}; - use rln::prelude::*; - use tempfile::TempDir; - use zerokit_utils::merkle_tree::{ - ZerokitMerkleProof, ZerokitMerkleTree, ZerokitMerkleTreeError, + use rln::{ + pm_tree_adapter::{PmTree, PmTreeProof, PmtreeConfig}, + prelude::*, + }; + use tempfile::TempDir; + use zerokit_utils::{ + merkle_tree::{ZerokitMerkleProof, ZerokitMerkleTree, ZerokitMerkleTreeError}, + pm_tree::Mode, }; - use zerokit_utils::pm_tree::Mode; const TEST_DEPTH: usize = 10; diff --git a/rln/tests/public.rs b/rln/tests/public.rs index 8ab256a..3518a7e 100644 --- a/rln/tests/public.rs +++ b/rln/tests/public.rs @@ -4,7 +4,6 @@ mod test { use rand::{thread_rng, Rng}; use rln::prelude::*; - use serde_json::{json, Value}; fn fq_from_str(s: &str) -> Fq {