Skip to content

Conversation

@vinhtc27
Copy link
Contributor

@vinhtc27 vinhtc27 commented Dec 9, 2025

No description provided.

… error types and propagate errors in calc_witness function
This was linked to issues Dec 9, 2025
@vinhtc27 vinhtc27 marked this pull request as ready for review December 9, 2025 17:50
@github-actions
Copy link

github-actions bot commented Dec 9, 2025

Benchmark for 4d261f4

Click to view benchmark
Test Base PR %
FullMerkleTree::delete 17.0±0.20µs 17.0±0.19µs 0.00%
FullMerkleTree::get 0.8±0.01ns 0.8±0.01ns 0.00%
FullMerkleTree::get_empty_leaves_indices 981.5±5.05µs 982.3±5.83µs +0.08%
FullMerkleTree::get_subtree_root 9.9±0.07ns 9.9±0.07ns 0.00%
FullMerkleTree::override_range 1999.4±70.02µs 2.0±0.08ms +0.03%
FullMerkleTree::set 8.5±0.07µs 8.5±0.07µs 0.00%
OptimalMerkleTree::delete 19.6±0.24µs 19.6±0.22µs 0.00%
OptimalMerkleTree::get 50.3±0.91ns 50.0±0.59ns -0.60%
OptimalMerkleTree::get_empty_leaves_indices 981.2±5.83µs 981.5±7.82µs +0.03%
OptimalMerkleTree::get_subtree_root 24.8±0.25ns 25.0±0.37ns +0.81%
OptimalMerkleTree::override_range 4.7±0.66ms 4.5±0.73ms -4.26%
OptimalMerkleTree::set 10.0±0.15µs 9.8±0.15µs -2.00%
poseidon Fr/Array hash/10 136.9±0.14µs 71.3 KElem/sec N/A N/A
poseidon Fr/Array hash/100 1472.5±1.07µs 66.3 KElem/sec N/A N/A
poseidon Fr/Array hash/1000 14.8±0.02ms 65.8 KElem/sec N/A N/A
poseidon Fr/Single hash 13.6±0.01µs 70.3 MElem/sec N/A N/A

@github-actions
Copy link

github-actions bot commented Dec 9, 2025

Benchmark for 4d261f4

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_depth_gen 13.0±0.44ms 13.1±0.59ms +0.77%
OptimalMerkleTree::::full_depth_gen 769.0±6.96µs 793.1±21.29µs +3.13%
Pmtree::delete 49.4±0.53µs 49.5±0.45µs +0.20%
Pmtree::get 355.0±9.48ns 345.5±5.02ns -2.68%
Pmtree::get_empty_leaves_indices 4.7±0.07ns 5.0±0.05ns +6.38%
Pmtree::get_subtree_root 500.0±9.83ns 488.5±5.08ns -2.30%
Pmtree::override_range 98.1±1.80µs 97.9±1.19µs -0.20%
Pmtree::set 49.4±0.38µs 49.6±0.55µs +0.40%
Set/FullMerkleTree::::set/1 505.8±2.88µs 511.9±22.02µs +1.21%
Set/FullMerkleTree::::set/10 5.1±0.01ms 5.1±0.02ms 0.00%
Set/FullMerkleTree::::set/100 50.9±1.35ms 51.2±0.09ms +0.59%
Set/FullMerkleTree::::set_range/1 501.0±2.73µs 509.0±6.01µs +1.60%
Set/FullMerkleTree::::set_range/10 693.1±5.31µs 693.3±3.38µs +0.03%
Set/FullMerkleTree::::set_range/100 1831.2±26.83µs 1835.7±19.08µs +0.25%
Set/OptimalMerkleTree::::set/1 501.6±2.40µs 508.7±4.34µs +1.42%
Set/OptimalMerkleTree::::set/10 5.0±0.03ms 5.1±0.01ms +2.00%
Set/OptimalMerkleTree::::set/100 50.8±0.22ms 51.3±0.09ms +0.98%
Set/OptimalMerkleTree::::set_range/1 503.0±1.98µs 508.1±2.48µs +1.01%
Set/OptimalMerkleTree::::set_range/10 697.3±6.40µs 702.3±22.03µs +0.72%
Set/OptimalMerkleTree::::set_range/100 1809.3±47.97µs 1805.5±30.87µs -0.21%

…it, and hasher modules, add PoseidonError type
@github-actions
Copy link

Benchmark for 1f7375d

Click to view benchmark
Test Base PR %
FullMerkleTree::delete 17.0±0.13µs 17.5±0.27µs +2.94%
FullMerkleTree::get 0.8±0.01ns 0.8±0.01ns 0.00%
FullMerkleTree::get_empty_leaves_indices 982.6±12.61µs 981.7±4.58µs -0.09%
FullMerkleTree::get_subtree_root 9.9±0.07ns 11.6±0.28ns +17.17%
FullMerkleTree::override_range 2.0±0.08ms 2.3±0.08ms +15.00%
FullMerkleTree::set 8.5±0.05µs 8.7±0.16µs +2.35%
OptimalMerkleTree::delete 19.6±0.23µs 20.7±1.64µs +5.61%
OptimalMerkleTree::get 49.9±0.50ns 52.4±0.65ns +5.01%
OptimalMerkleTree::get_empty_leaves_indices 981.3±6.70µs 988.4±34.19µs +0.72%
OptimalMerkleTree::get_subtree_root 24.8±0.24ns 25.3±0.74ns +2.02%
OptimalMerkleTree::override_range 4.6±0.30ms 5.4±0.38ms +17.39%
OptimalMerkleTree::set 9.9±0.20µs 10.2±0.29µs +3.03%
poseidon Fr/Array hash/10 137.3±0.78µs 71.1 KElem/sec N/A N/A
poseidon Fr/Array hash/100 1474.5±2.10µs 66.2 KElem/sec N/A N/A
poseidon Fr/Array hash/1000 14.9±0.08ms 65.7 KElem/sec N/A N/A
poseidon Fr/Single hash 13.6±0.04µs 70.2 MElem/sec N/A N/A

@github-actions
Copy link

Benchmark for 1f7375d

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_depth_gen 12.9±0.15ms 12.5±0.15ms -3.10%
OptimalMerkleTree::::full_depth_gen 839.8±7.56µs 795.3±5.36µs -5.30%
Pmtree::delete 49.4±0.39µs 50.2±1.63µs +1.62%
Pmtree::get 344.1±5.85ns 350.6±4.56ns +1.89%
Pmtree::get_empty_leaves_indices 4.7±0.06ns 5.0±0.07ns +6.38%
Pmtree::get_subtree_root 485.5±7.90ns 499.8±10.34ns +2.95%
Pmtree::override_range 98.3±0.83µs 98.2±1.76µs -0.10%
Pmtree::set 49.4±0.46µs 50.2±0.67µs +1.62%
Set/FullMerkleTree::::set/1 508.8±5.03µs 512.9±4.96µs +0.81%
Set/FullMerkleTree::::set/10 5.1±0.01ms 5.1±0.01ms 0.00%
Set/FullMerkleTree::::set/100 51.1±0.26ms 51.5±0.14ms +0.78%
Set/FullMerkleTree::::set_range/1 505.9±5.83µs 511.0±3.18µs +1.01%
Set/FullMerkleTree::::set_range/10 706.7±3.33µs 700.0±2.73µs -0.95%
Set/FullMerkleTree::::set_range/100 1846.4±25.65µs 1888.7±98.09µs +2.29%
Set/OptimalMerkleTree::::set/1 552.6±9.47µs 513.9±4.83µs -7.00%
Set/OptimalMerkleTree::::set/10 5.5±0.08ms 5.1±0.02ms -7.27%
Set/OptimalMerkleTree::::set/100 55.1±0.76ms 51.7±0.07ms -6.17%
Set/OptimalMerkleTree::::set_range/1 536.0±10.49µs 514.3±6.11µs -4.05%
Set/OptimalMerkleTree::::set_range/10 731.8±12.15µs 707.5±14.56µs -3.32%
Set/OptimalMerkleTree::::set_range/100 1827.8±28.38µs 1841.8±55.71µs +0.77%

@github-actions
Copy link

Benchmark for d9ce2d9

Click to view benchmark
Test Base PR %
FullMerkleTree::delete 16.9±0.16µs 17.5±0.24µs +3.55%
FullMerkleTree::get 0.8±0.01ns 0.8±0.01ns 0.00%
FullMerkleTree::get_empty_leaves_indices 982.7±13.81µs 981.7±5.24µs -0.10%
FullMerkleTree::get_subtree_root 9.9±0.07ns 11.6±0.12ns +17.17%
FullMerkleTree::override_range 1999.6±66.44µs 2.3±0.09ms +15.02%
FullMerkleTree::set 8.5±0.10µs 8.8±0.76µs +3.53%
OptimalMerkleTree::delete 19.8±0.29µs 20.3±0.55µs +2.53%
OptimalMerkleTree::get 50.9±0.52ns 50.3±0.45ns -1.18%
OptimalMerkleTree::get_empty_leaves_indices 981.7±11.07µs 981.6±7.99µs -0.01%
OptimalMerkleTree::get_subtree_root 24.8±0.30ns 25.1±0.30ns +1.21%
OptimalMerkleTree::override_range 5.5±0.25ms 5.1±0.40ms -7.27%
OptimalMerkleTree::set 10.0±0.18µs 10.3±0.20µs +3.00%
poseidon Fr/Array hash/10 137.4±0.77µs 71.1 KElem/sec N/A N/A
poseidon Fr/Array hash/100 1474.2±2.01µs 66.2 KElem/sec N/A N/A
poseidon Fr/Array hash/1000 14.8±0.01ms 65.8 KElem/sec N/A N/A
poseidon Fr/Single hash 13.6±0.01µs 70.2 MElem/sec N/A N/A

@github-actions
Copy link

Benchmark for d9ce2d9

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_depth_gen 12.6±0.17ms 12.6±0.16ms 0.00%
OptimalMerkleTree::::full_depth_gen 772.5±8.43µs 784.0±7.10µs +1.49%
Pmtree::delete 49.4±0.21µs 49.8±0.33µs +0.81%
Pmtree::get 353.4±6.79ns 353.2±15.22ns -0.06%
Pmtree::get_empty_leaves_indices 4.7±0.07ns 5.0±0.08ns +6.38%
Pmtree::get_subtree_root 483.2±6.60ns 493.6±14.76ns +2.15%
Pmtree::override_range 97.3±0.80µs 98.6±2.97µs +1.34%
Pmtree::set 49.4±0.56µs 49.9±1.45µs +1.01%
Set/FullMerkleTree::::set/1 504.6±4.76µs 510.1±2.49µs +1.09%
Set/FullMerkleTree::::set/10 5.1±0.12ms 5.1±0.02ms 0.00%
Set/FullMerkleTree::::set/100 50.9±0.28ms 51.9±0.94ms +1.96%
Set/FullMerkleTree::::set_range/1 505.6±2.88µs 515.0±12.75µs +1.86%
Set/FullMerkleTree::::set_range/10 689.5±4.39µs 703.1±24.55µs +1.97%
Set/FullMerkleTree::::set_range/100 1833.3±17.94µs 1864.6±44.42µs +1.71%
Set/OptimalMerkleTree::::set/1 503.1±3.03µs 511.6±5.08µs +1.69%
Set/OptimalMerkleTree::::set/10 5.1±0.03ms 5.2±0.02ms +1.96%
Set/OptimalMerkleTree::::set/100 50.9±1.31ms 52.0±1.77ms +2.16%
Set/OptimalMerkleTree::::set_range/1 504.8±5.59µs 514.2±7.35µs +1.86%
Set/OptimalMerkleTree::::set_range/10 699.5±9.47µs 706.4±14.43µs +0.99%
Set/OptimalMerkleTree::::set_range/100 1805.6±42.79µs 1829.9±32.68µs +1.35%

@github-actions
Copy link

Benchmark for 38bb2d9

Click to view benchmark
Test Base PR %
FullMerkleTree::delete 17.0±0.14µs 17.0±0.17µs 0.00%
FullMerkleTree::get 0.8±0.00ns 0.8±0.01ns 0.00%
FullMerkleTree::get_empty_leaves_indices 981.8±7.98µs 981.4±6.89µs -0.04%
FullMerkleTree::get_subtree_root 9.9±0.05ns 11.6±0.14ns +17.17%
FullMerkleTree::override_range 2.0±0.06ms 2.2±0.09ms +10.00%
FullMerkleTree::set 8.5±0.08µs 8.5±0.10µs 0.00%
OptimalMerkleTree::delete 19.5±0.27µs 20.1±0.38µs +3.08%
OptimalMerkleTree::get 51.2±0.41ns 51.7±0.76ns +0.98%
OptimalMerkleTree::get_empty_leaves_indices 981.5±8.64µs 981.8±8.35µs +0.03%
OptimalMerkleTree::get_subtree_root 24.8±0.30ns 25.4±0.30ns +2.42%
OptimalMerkleTree::override_range 4.3±0.29ms 4.4±0.31ms +2.33%
OptimalMerkleTree::set 9.8±0.09µs 10.1±0.20µs +3.06%
poseidon Fr/Array hash/10 137.2±0.39µs 71.2 KElem/sec N/A N/A
poseidon Fr/Array hash/100 1477.8±7.99µs 66.1 KElem/sec N/A N/A
poseidon Fr/Array hash/1000 14.9±0.03ms 65.7 KElem/sec N/A N/A
poseidon Fr/Single hash 13.6±0.06µs 70.3 MElem/sec N/A N/A

@vinhtc27 vinhtc27 requested a review from seemenkina December 10, 2025 15:02
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR extends error handling throughout the RLN module by converting hash and witness calculation functions from panic-based error handling to proper Result types. The key changes include introducing structured error types (PoseidonError, HashError, WitnessCalcError), updating all hash function signatures to return Result, and propagating errors through the call chain.

Key Changes:

  • Introduced structured error types for Poseidon hashing, general hashing, and witness calculation operations
  • Converted poseidon_hash, hash_to_field_le, hash_to_field_be, and keygen functions to return Result instead of panicking
  • Updated the Hasher trait to include an associated Error type and modified the hash method to return Result
  • Propagated error handling changes through Merkle tree operations, proof generation/verification, and FFI interfaces
  • Restructured module exports in utils crate, removing wildcard re-exports (breaking API change)
  • Updated error messages for consistency and capitalization
  • Made several internal modules public (rln/src/protocol submodules, rln-wasm/src modules)

Reviewed changes

Copilot reviewed 47 out of 47 changed files in this pull request and generated 7 comments.

Show a summary per file
File Description
utils/src/error.rs Introduced new HashError enum wrapping Poseidon and generic hash errors
utils/src/poseidon/error.rs Added PoseidonError enum for input validation errors
utils/src/poseidon/poseidon_hash.rs Updated hash() to return Result<F, PoseidonError> with improved error handling
utils/src/merkle_tree/merkle_tree.rs Extended Hasher trait with Error associated type and fallible hash() method
utils/src/merkle_tree/error.rs Added HashError variant to ZerokitMerkleTreeError
utils/src/merkle_tree/optimal_merkle_tree.rs Propagated hash errors through tree operations and proof computation
utils/src/merkle_tree/full_merkle_tree.rs Updated hash operations to handle errors with parallel processing support
rln/src/hashers.rs Converted hash functions to return Result types with proper error handling
rln/src/protocol/keygen.rs Updated all keygen functions to return Result types
rln/src/protocol/witness.rs Propagated errors through witness and tree root computation
rln/src/protocol/proof.rs Added error handling for witness calculation
rln/src/circuit/error.rs Added WitnessCalcError enum for witness calculation failures
rln/src/circuit/iden3calc.rs Converted witness calculation to proper error handling
rln/src/error.rs Enhanced error types with better documentation and error message formatting
rln/src/ffi/ffi_utils.rs Updated FFI functions to return CResult for proper error propagation to C/foreign interfaces
rln/src/pm_tree_adapter.rs Added TODOs for pmtree error handling limitations
utils/src/lib.rs Removed wildcard re-exports (breaking change)
rln/src/protocol/mod.rs Made submodules public (API surface expansion)
rln/src/prelude.rs Changed to wildcard import (potential naming conflicts)
Tests and examples Updated all call sites to handle new Result types with .unwrap() or proper error handling
FFI examples (C/Nim) Updated to handle new CResult return types
WASM bindings Updated functions to return Result<T, String>

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@github-actions
Copy link

Benchmark for 38bb2d9

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_depth_gen 13.5±0.31ms 13.1±0.70ms -2.96%
OptimalMerkleTree::::full_depth_gen 791.5±6.11µs 795.3±9.70µs +0.48%
Pmtree::delete 49.4±0.45µs 49.5±0.55µs +0.20%
Pmtree::get 344.4±3.60ns 348.5±5.20ns +1.19%
Pmtree::get_empty_leaves_indices 4.7±0.06ns 5.0±0.06ns +6.38%
Pmtree::get_subtree_root 483.9±7.19ns 507.0±4.93ns +4.77%
Pmtree::override_range 101.0±1.00µs 101.6±0.86µs +0.59%
Pmtree::set 49.4±0.50µs 49.9±1.58µs +1.01%
Set/FullMerkleTree::::set/1 506.1±8.80µs 513.8±28.83µs +1.52%
Set/FullMerkleTree::::set/10 5.0±0.04ms 5.1±0.02ms +2.00%
Set/FullMerkleTree::::set/100 50.5±0.14ms 51.2±0.29ms +1.39%
Set/FullMerkleTree::::set_range/1 506.0±2.60µs 511.8±24.42µs +1.15%
Set/FullMerkleTree::::set_range/10 691.3±12.67µs 695.6±4.24µs +0.62%
Set/FullMerkleTree::::set_range/100 1850.5±22.25µs 1871.0±22.53µs +1.11%
Set/OptimalMerkleTree::::set/1 506.1±3.58µs 510.5±3.30µs +0.87%
Set/OptimalMerkleTree::::set/10 5.1±0.12ms 5.1±0.22ms 0.00%
Set/OptimalMerkleTree::::set/100 51.0±0.15ms 51.1±0.21ms +0.20%
Set/OptimalMerkleTree::::set_range/1 505.3±2.40µs 519.3±43.84µs +2.77%
Set/OptimalMerkleTree::::set_range/10 702.2±6.37µs 713.5±9.72µs +1.61%
Set/OptimalMerkleTree::::set_range/100 1817.2±39.99µs 1846.5±48.45µs +1.61%

@github-actions
Copy link

Benchmark for 99963c3

Click to view benchmark
Test Base PR %
FullMerkleTree::delete 17.1±0.19µs 16.9±0.17µs -1.17%
FullMerkleTree::get 0.8±0.01ns 0.8±0.01ns 0.00%
FullMerkleTree::get_empty_leaves_indices 981.6±8.65µs 982.0±7.78µs +0.04%
FullMerkleTree::get_subtree_root 9.9±0.06ns 11.6±0.13ns +17.17%
FullMerkleTree::override_range 1997.1±47.82µs 2.3±0.14ms +15.17%
FullMerkleTree::set 8.5±0.10µs 8.5±0.11µs 0.00%
OptimalMerkleTree::delete 19.9±0.27µs 20.2±1.51µs +1.51%
OptimalMerkleTree::get 50.4±0.43ns 51.0±0.87ns +1.19%
OptimalMerkleTree::get_empty_leaves_indices 981.8±5.72µs 983.1±10.98µs +0.13%
OptimalMerkleTree::get_subtree_root 24.9±0.20ns 25.3±0.36ns +1.61%
OptimalMerkleTree::override_range 5.3±0.22ms 5.6±0.47ms +5.66%
OptimalMerkleTree::set 10.1±0.17µs 10.3±0.87µs +1.98%
poseidon Fr/Array hash/10 137.1±0.22µs 71.2 KElem/sec N/A N/A
poseidon Fr/Array hash/100 1473.9±5.17µs 66.3 KElem/sec N/A N/A
poseidon Fr/Array hash/1000 14.8±0.01ms 65.8 KElem/sec N/A N/A
poseidon Fr/Single hash 13.7±0.08µs 69.9 MElem/sec N/A N/A

@github-actions
Copy link

Benchmark for 99963c3

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_depth_gen 13.7±0.32ms 12.9±0.11ms -5.84%
OptimalMerkleTree::::full_depth_gen 777.5±7.93µs 782.5±10.57µs +0.64%
Pmtree::delete 50.3±1.71µs 49.8±0.77µs -0.99%
Pmtree::get 350.5±9.71ns 355.7±11.56ns +1.48%
Pmtree::get_empty_leaves_indices 4.7±0.05ns 5.0±0.14ns +6.38%
Pmtree::get_subtree_root 490.8±4.35ns 510.2±7.64ns +3.95%
Pmtree::override_range 97.7±0.95µs 99.2±1.29µs +1.54%
Pmtree::set 49.6±0.70µs 49.5±0.81µs -0.20%
Set/FullMerkleTree::::set/1 506.5±7.03µs 507.1±4.03µs +0.12%
Set/FullMerkleTree::::set/10 5.0±0.03ms 5.1±0.02ms +2.00%
Set/FullMerkleTree::::set/100 50.9±0.20ms 51.3±0.81ms +0.79%
Set/FullMerkleTree::::set_range/1 505.2±6.14µs 504.9±5.25µs -0.06%
Set/FullMerkleTree::::set_range/10 688.3±3.35µs 693.7±5.49µs +0.78%
Set/FullMerkleTree::::set_range/100 1833.5±19.26µs 1863.0±21.80µs +1.61%
Set/OptimalMerkleTree::::set/1 507.2±4.17µs 510.6±4.94µs +0.67%
Set/OptimalMerkleTree::::set/10 5.1±0.26ms 5.1±0.02ms 0.00%
Set/OptimalMerkleTree::::set/100 51.4±0.30ms 51.1±0.24ms -0.58%
Set/OptimalMerkleTree::::set_range/1 510.9±16.24µs 510.9±5.01µs 0.00%
Set/OptimalMerkleTree::::set_range/10 698.7±7.62µs 705.3±6.85µs +0.94%
Set/OptimalMerkleTree::::set_range/100 1810.4±46.73µs 1834.8±28.56µs +1.35%

@vacp2p vacp2p deleted a comment from Copilot AI Dec 10, 2025
@vacp2p vacp2p deleted a comment from Copilot AI Dec 10, 2025
@vacp2p vacp2p deleted a comment from Copilot AI Dec 10, 2025
@vacp2p vacp2p deleted a comment from Copilot AI Dec 10, 2025
@vacp2p vacp2p deleted a comment from Copilot AI Dec 10, 2025
@vacp2p vacp2p deleted a comment from Copilot AI Dec 10, 2025
@vacp2p vacp2p deleted a comment from Copilot AI Dec 10, 2025
@github-actions
Copy link

Benchmark for 6e359ec

Click to view benchmark
Test Base PR %
FullMerkleTree::delete 17.1±1.12µs 17.0±0.33µs -0.58%
FullMerkleTree::get 0.8±0.01ns 0.8±0.01ns 0.00%
FullMerkleTree::get_empty_leaves_indices 1021.4±9.66µs 1131.8±26.18µs +10.81%
FullMerkleTree::get_subtree_root 11.1±0.05ns 12.5±0.22ns +12.61%
FullMerkleTree::override_range 2.4±0.04ms 2.6±0.04ms +8.33%
FullMerkleTree::set 8.5±0.09µs 8.4±0.15µs -1.18%
OptimalMerkleTree::delete 19.7±0.48µs 19.6±0.41µs -0.51%
OptimalMerkleTree::get 34.7±0.84ns 36.8±0.99ns +6.05%
OptimalMerkleTree::get_empty_leaves_indices 1020.9±9.30µs 1125.8±32.33µs +10.28%
OptimalMerkleTree::get_subtree_root 26.4±0.59ns 26.8±0.46ns +1.52%
OptimalMerkleTree::override_range 4.4±0.11ms 5.0±0.21ms +13.64%
OptimalMerkleTree::set 10.1±0.15µs 10.0±0.17µs -0.99%
poseidon Fr/Array hash/10 138.3±1.35µs 70.6 KElem/sec N/A N/A
poseidon Fr/Array hash/100 1476.5±7.98µs 66.1 KElem/sec N/A N/A
poseidon Fr/Array hash/1000 14.9±0.07ms 65.6 KElem/sec N/A N/A
poseidon Fr/Single hash 13.6±0.07µs 69.9 MElem/sec N/A N/A

@github-actions
Copy link

Benchmark for 6e359ec

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_depth_gen 12.7±0.15ms 13.7±0.17ms +7.87%
OptimalMerkleTree::::full_depth_gen 785.8±8.19µs 793.1±17.65µs +0.93%
Pmtree::delete 49.8±1.04µs 49.6±1.00µs -0.40%
Pmtree::get 351.7±7.08ns 351.6±4.92ns -0.03%
Pmtree::get_empty_leaves_indices 4.7±0.04ns 5.0±0.06ns +6.38%
Pmtree::get_subtree_root 491.5±12.28ns 499.7±5.04ns +1.67%
Pmtree::override_range 98.3±0.94µs 99.0±1.28µs +0.71%
Pmtree::set 49.5±0.73µs 49.5±0.68µs 0.00%
Set/FullMerkleTree::::set/1 505.0±4.96µs 510.5±5.20µs +1.09%
Set/FullMerkleTree::::set/10 5.1±0.02ms 5.1±0.02ms 0.00%
Set/FullMerkleTree::::set/100 50.8±0.18ms 51.3±0.06ms +0.98%
Set/FullMerkleTree::::set_range/1 504.5±4.99µs 507.4±3.14µs +0.57%
Set/FullMerkleTree::::set_range/10 689.9±2.69µs 695.7±3.32µs +0.84%
Set/FullMerkleTree::::set_range/100 1839.3±22.99µs 1871.0±24.33µs +1.72%
Set/OptimalMerkleTree::::set/1 506.7±5.18µs 511.5±4.90µs +0.95%
Set/OptimalMerkleTree::::set/10 5.1±0.01ms 5.1±0.03ms 0.00%
Set/OptimalMerkleTree::::set/100 51.0±0.14ms 51.6±0.33ms +1.18%
Set/OptimalMerkleTree::::set_range/1 506.5±2.96µs 510.5±3.59µs +0.79%
Set/OptimalMerkleTree::::set_range/10 702.9±7.72µs 709.9±10.63µs +1.00%
Set/OptimalMerkleTree::::set_range/100 1810.7±40.57µs 1844.7±39.11µs +1.88%

@seemenkina
Copy link
Collaborator

@vinhtc27 could you please also change expect to proper error handle? Because expect return panic if something going wrong

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Error handling in tree module unwrap in Iden3calc lib

3 participants