mirror of
https://github.com/vacp2p/zerokit.git
synced 2026-01-07 21:04:02 -05:00
# Changes - Unified the `RLN` struct and core protocol types across public, FFI, and WASM so everything works consistently. - Fully refactored `protocol.rs` and `public.rs` to clean up the API surface and make the flow easier to work with. - Added (de)serialization for `RLN_Proof` and `RLN_ProofValues`, and matched all C, Nim, WASM, and Node.js examples. - Aligned FFI and WASM behavior, added missing APIs, and standardized how witness are created and passed around. - Reworked the error types, added clearer verification messages, and simplified the overall error structure. - Updated variable names, README, Rust docs, and examples across the repo, updated outdated RLN RFC link. - Refactored `rln-cli` to use the new public API, removed serialize-based cli example, and dropped the `eyre` crate. - Bumped dependencies, fixed CI, fixed `+atomic` flags for latest nightly Rust and added `Clippy.toml` for better fmt. - Added a `prelude.rs` file for easier use, cleaned up public access for types and types import across zerokit modules. - Separated keygen, proof handling, slashing logic, and witness into protocol folder.
51 lines
1.3 KiB
Rust
51 lines
1.3 KiB
Rust
use criterion::{criterion_group, criterion_main, Criterion};
|
|
use rln::prelude::*;
|
|
use utils::ZerokitMerkleTree;
|
|
|
|
pub fn pmtree_benchmark(c: &mut Criterion) {
|
|
let mut tree = PmTree::default(2).unwrap();
|
|
|
|
let leaves: Vec<Fr> = (0..4).map(Fr::from).collect();
|
|
|
|
c.bench_function("Pmtree::set", |b| {
|
|
b.iter(|| {
|
|
tree.set(0, leaves[0]).unwrap();
|
|
})
|
|
});
|
|
|
|
c.bench_function("Pmtree::delete", |b| {
|
|
b.iter(|| {
|
|
tree.delete(0).unwrap();
|
|
})
|
|
});
|
|
|
|
c.bench_function("Pmtree::override_range", |b| {
|
|
b.iter(|| {
|
|
tree.override_range(0, leaves.clone().into_iter(), [0, 1, 2, 3].into_iter())
|
|
.unwrap();
|
|
})
|
|
});
|
|
|
|
c.bench_function("Pmtree::get", |b| {
|
|
b.iter(|| {
|
|
tree.get(0).unwrap();
|
|
})
|
|
});
|
|
|
|
// check intermediate node getter which required additional computation of sub root index
|
|
c.bench_function("Pmtree::get_subtree_root", |b| {
|
|
b.iter(|| {
|
|
tree.get_subtree_root(1, 0).unwrap();
|
|
})
|
|
});
|
|
|
|
c.bench_function("Pmtree::get_empty_leaves_indices", |b| {
|
|
b.iter(|| {
|
|
tree.get_empty_leaves_indices();
|
|
})
|
|
});
|
|
}
|
|
|
|
criterion_group!(benches, pmtree_benchmark);
|
|
criterion_main!(benches);
|