Skip to content

fix: remove Result from hash to field functions for v2.0.1 patch#398

Merged
vinhtc27 merged 6 commits intomasterfrom
fix/remove-result-from-hash-to-field-functions
Mar 27, 2026
Merged

fix: remove Result from hash to field functions for v2.0.1 patch#398
vinhtc27 merged 6 commits intomasterfrom
fix/remove-result-from-hash-to-field-functions

Conversation

@vinhtc27
Copy link
Copy Markdown
Contributor

@vinhtc27 vinhtc27 commented Mar 24, 2026

Changes

  • Remove Result from has from hash_to_field_le and hash_to_field_le functions
  • Seperated poseidon_hash, poseidon_hash_try_from, poseidon_hash_pair in rln module
  • Simplify ZerokitMerkleProof and Hasher trait in utils module
  • Added RecoverSecretError wrapper enum
  • Updated all related examples, testcases
  • Added 2 new //TODO for pmtree

@vinhtc27 vinhtc27 requested a review from seemenkina March 24, 2026 07:29
@vinhtc27 vinhtc27 changed the title fix: remove Result from hash to field functions fix: remove Result from hash to field functions for v2.0.1 patch Mar 24, 2026
@vinhtc27 vinhtc27 force-pushed the fix/remove-result-from-hash-to-field-functions branch from a49b65f to 7c43a6a Compare March 24, 2026 07:36
@github-actions
Copy link
Copy Markdown

Benchmark for 251c1b9

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_depth_gen 11.9±0.20ms 11.9±0.20ms 0.00%
OptimalMerkleTree::::full_depth_gen 686.9±9.65µs 687.2±6.35µs +0.04%
Pmtree::delete 50.8±0.39µs 50.7±0.56µs -0.20%
Pmtree::get 287.0±5.64ns 291.7±8.54ns +1.64%
Pmtree::get_empty_leaves_indices 8.4±0.13ns 8.4±0.14ns 0.00%
Pmtree::get_subtree_root 382.0±6.36ns 364.6±8.98ns -4.55%
Pmtree::override_range 103.4±0.53µs 103.8±2.72µs +0.39%
Pmtree::set 50.8±0.80µs 50.7±0.71µs -0.20%
Set/FullMerkleTree::::set/1 523.9±5.46µs 522.7±27.91µs -0.23%
Set/FullMerkleTree::::set/10 5.2±0.02ms 5.2±0.02ms 0.00%
Set/FullMerkleTree::::set/100 52.7±0.29ms 52.1±0.16ms -1.14%
Set/FullMerkleTree::::set_range/1 521.5±5.55µs 518.1±5.72µs -0.65%
Set/FullMerkleTree::::set_range/10 714.3±9.73µs 709.1±11.93µs -0.73%
Set/FullMerkleTree::::set_range/100 1866.4±34.92µs 1866.1±34.41µs -0.02%
Set/OptimalMerkleTree::::set/1 517.7±5.69µs 518.7±5.26µs +0.19%
Set/OptimalMerkleTree::::set/10 5.2±0.02ms 5.2±0.01ms 0.00%
Set/OptimalMerkleTree::::set/100 52.2±0.10ms 52.1±0.15ms -0.19%
Set/OptimalMerkleTree::::set_range/1 519.3±3.81µs 518.7±5.76µs -0.12%
Set/OptimalMerkleTree::::set_range/10 723.3±7.68µs 727.1±16.34µs +0.53%
Set/OptimalMerkleTree::::set_range/100 1815.0±27.82µs 1826.9±50.39µs +0.66%
rln_finish_partial_proof 67.6±1.12ms 67.5±0.87ms -0.15%
rln_full_proof 184.9±2.89ms 183.9±1.64ms -0.54%
rln_partial_proof_generation 127.7±1.10ms 127.9±2.96ms +0.16%

@github-actions
Copy link
Copy Markdown

Benchmark for 251c1b9

Click to view benchmark
Test Base PR %
FullMerkleTree::delete 17.0±0.22µs 17.0±0.24µs 0.00%
FullMerkleTree::get 0.8±0.01ns 0.8±0.02ns 0.00%
FullMerkleTree::get_empty_leaves_indices 983.0±9.65µs 983.4±8.93µs +0.04%
FullMerkleTree::get_subtree_root 11.6±0.14ns 11.6±0.14ns 0.00%
FullMerkleTree::override_range 2.3±0.07ms 2.3±0.09ms 0.00%
FullMerkleTree::set 8.5±0.11µs 8.5±0.12µs 0.00%
OptimalMerkleTree::delete 19.9±0.31µs 20.3±0.29µs +2.01%
OptimalMerkleTree::get 50.5±0.34ns 50.7±0.53ns +0.40%
OptimalMerkleTree::get_empty_leaves_indices 981.9±6.77µs 985.1±19.15µs +0.33%
OptimalMerkleTree::get_subtree_root 25.9±0.56ns 26.5±0.74ns +2.32%
OptimalMerkleTree::override_range 4.8±0.28ms 4.9±0.17ms +2.08%
OptimalMerkleTree::set 10.0±0.18µs 10.2±0.24µs +2.00%
poseidon Fr/Array hash/10 139.0±0.18µs 70.3 KElem/sec N/A N/A
poseidon Fr/Array hash/100 1496.7±2.09µs 65.2 KElem/sec N/A N/A
poseidon Fr/Array hash/1000 15.1±0.02ms 64.8 KElem/sec N/A N/A
poseidon Fr/Single hash 13.8±0.02µs 69.3 MElem/sec N/A N/A
validate_override_range/FullMerkleTree/override_range/1024 606.7±32.26µs 600.5±22.92µs -1.02%
validate_override_range/FullMerkleTree/override_range/64 103.8±19.09µs 96.8±13.91µs -6.74%
validate_override_range/FullMerkleTree/override_range/65536 438.5±3.12ms 440.0±2.23ms +0.34%
validate_override_range/FullMerkleTree/override_range/8192 8.9±0.08ms 8.9±0.05ms 0.00%
validate_override_range/OptimalMerkleTree/override_range/1024 789.8±42.04µs 795.1±41.43µs +0.67%
validate_override_range/OptimalMerkleTree/override_range/64 121.8±14.25µs 133.6±23.35µs +9.69%
validate_override_range/OptimalMerkleTree/override_range/65536 464.1±1.65ms 465.4±2.30ms +0.28%
validate_override_range/OptimalMerkleTree/override_range/8192 10.4±0.46ms 10.2±0.11ms -1.92%
validate_override_range/validate_only/1024 8.0±0.05µs 10.6±0.16µs +32.50%
validate_override_range/validate_only/64 348.8±4.42ns 351.2±4.34ns +0.69%
validate_override_range/validate_only/65536 843.6±5.87µs 845.5±9.56µs +0.23%
validate_override_range/validate_only/8192 102.7±1.41µs 113.4±5.78µs +10.42%

@github-actions
Copy link
Copy Markdown

Benchmark for 362ad45

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_depth_gen 12.3±0.18ms 13.3±0.23ms +8.13%
OptimalMerkleTree::::full_depth_gen 698.4±7.86µs 706.8±6.60µs +1.20%
Pmtree::delete 51.0±1.82µs 50.7±0.35µs -0.59%
Pmtree::get 289.0±4.33ns 286.0±4.19ns -1.04%
Pmtree::get_empty_leaves_indices 8.4±0.13ns 8.4±0.13ns 0.00%
Pmtree::get_subtree_root 365.7±7.92ns 367.1±3.40ns +0.38%
Pmtree::override_range 100.1±1.63µs 100.8±1.03µs +0.70%
Pmtree::set 50.7±0.74µs 50.7±0.70µs 0.00%
Set/FullMerkleTree::::set/1 518.9±5.26µs 518.7±5.41µs -0.04%
Set/FullMerkleTree::::set/10 5.2±0.02ms 5.2±0.11ms 0.00%
Set/FullMerkleTree::::set/100 51.9±0.10ms 52.0±0.12ms +0.19%
Set/FullMerkleTree::::set_range/1 518.7±5.65µs 519.0±6.74µs +0.06%
Set/FullMerkleTree::::set_range/10 707.6±4.94µs 709.0±6.24µs +0.20%
Set/FullMerkleTree::::set_range/100 1858.4±30.92µs 1858.2±43.65µs -0.01%
Set/OptimalMerkleTree::::set/1 519.2±3.47µs 522.7±15.96µs +0.67%
Set/OptimalMerkleTree::::set/10 5.2±0.02ms 5.3±0.07ms +1.92%
Set/OptimalMerkleTree::::set/100 52.2±0.08ms 52.3±0.26ms +0.19%
Set/OptimalMerkleTree::::set_range/1 518.6±4.74µs 520.6±5.31µs +0.39%
Set/OptimalMerkleTree::::set_range/10 722.5±8.40µs 722.3±7.42µs -0.03%
Set/OptimalMerkleTree::::set_range/100 1815.7±48.78µs 1820.2±54.85µs +0.25%
rln_finish_partial_proof 67.7±0.83ms 67.4±0.80ms -0.44%
rln_full_proof 184.6±2.47ms 184.4±2.46ms -0.11%
rln_partial_proof_generation 128.1±1.29ms 128.7±5.04ms +0.47%

@github-actions
Copy link
Copy Markdown

Benchmark for 362ad45

Click to view benchmark
Test Base PR %
FullMerkleTree::delete 17.0±0.27µs 17.0±0.20µs 0.00%
FullMerkleTree::get 0.8±0.01ns 0.8±0.01ns 0.00%
FullMerkleTree::get_empty_leaves_indices 982.7±9.37µs 982.6±6.72µs -0.01%
FullMerkleTree::get_subtree_root 11.6±0.13ns 11.6±0.12ns 0.00%
FullMerkleTree::override_range 2.3±0.07ms 2.3±0.08ms 0.00%
FullMerkleTree::set 8.5±0.07µs 8.5±0.06µs 0.00%
OptimalMerkleTree::delete 19.7±0.30µs 19.6±0.19µs -0.51%
OptimalMerkleTree::get 50.6±0.51ns 50.4±0.58ns -0.40%
OptimalMerkleTree::get_empty_leaves_indices 981.6±3.77µs 982.5±6.50µs +0.09%
OptimalMerkleTree::get_subtree_root 25.8±0.49ns 26.0±0.35ns +0.78%
OptimalMerkleTree::override_range 4.4±0.26ms 4.1±0.51ms -6.82%
OptimalMerkleTree::set 9.9±0.12µs 9.8±0.10µs -1.01%
poseidon Fr/Array hash/10 138.7±0.29µs 70.4 KElem/sec N/A N/A
poseidon Fr/Array hash/100 1494.5±1.58µs 65.3 KElem/sec N/A N/A
poseidon Fr/Array hash/1000 15.1±0.02ms 64.8 KElem/sec N/A N/A
poseidon Fr/Single hash 13.8±0.04µs 69.4 MElem/sec N/A N/A
validate_override_range/FullMerkleTree/override_range/1024 605.2±34.91µs 597.0±26.87µs -1.35%
validate_override_range/FullMerkleTree/override_range/64 108.8±20.52µs 109.1±20.23µs +0.28%
validate_override_range/FullMerkleTree/override_range/65536 436.0±0.87ms 434.7±0.43ms -0.30%
validate_override_range/FullMerkleTree/override_range/8192 8.9±0.03ms 8.9±0.04ms 0.00%
validate_override_range/OptimalMerkleTree/override_range/1024 787.5±32.30µs 812.7±77.18µs +3.20%
validate_override_range/OptimalMerkleTree/override_range/64 134.7±27.05µs 123.9±16.28µs -8.02%
validate_override_range/OptimalMerkleTree/override_range/65536 463.0±2.65ms 461.0±1.56ms -0.43%
validate_override_range/OptimalMerkleTree/override_range/8192 10.2±0.10ms 10.2±0.04ms 0.00%
validate_override_range/validate_only/1024 7.9±0.10µs 8.0±0.13µs +1.27%
validate_override_range/validate_only/64 349.4±8.14ns 348.5±3.85ns -0.26%
validate_override_range/validate_only/65536 845.9±7.24µs 849.9±6.54µs +0.47%
validate_override_range/validate_only/8192 110.0±0.99µs 102.2±0.73µs -7.09%

…sh_pair in rln module, simplify ZerokitMerkleProof and Hasher trait in utils module, updated all related examples, testcases
@github-actions
Copy link
Copy Markdown

Benchmark for 4785838

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_depth_gen 11.9±0.17ms 12.8±0.15ms +7.56%
OptimalMerkleTree::::full_depth_gen 687.9±8.28µs 688.6±6.18µs +0.10%
Pmtree::delete 50.8±0.45µs 51.6±1.14µs +1.57%
Pmtree::get 287.6±4.16ns 317.9±13.33ns +10.54%
Pmtree::get_empty_leaves_indices 8.4±0.17ns 8.4±0.14ns 0.00%
Pmtree::get_subtree_root 369.0±8.38ns 409.3±16.76ns +10.92%
Pmtree::override_range 99.7±1.00µs 101.5±1.09µs +1.81%
Pmtree::set 50.8±0.92µs 50.9±1.04µs +0.20%
Set/FullMerkleTree::::set/1 517.7±4.74µs 518.9±5.45µs +0.23%
Set/FullMerkleTree::::set/10 5.2±0.02ms 5.2±0.02ms 0.00%
Set/FullMerkleTree::::set/100 52.1±0.15ms 52.1±0.06ms 0.00%
Set/FullMerkleTree::::set_range/1 519.1±8.01µs 518.6±5.64µs -0.10%
Set/FullMerkleTree::::set_range/10 708.6±8.25µs 708.0±5.83µs -0.08%
Set/FullMerkleTree::::set_range/100 1856.7±57.00µs 1846.2±24.33µs -0.57%
Set/OptimalMerkleTree::::set/1 518.1±3.73µs 518.9±15.37µs +0.15%
Set/OptimalMerkleTree::::set/10 5.2±0.02ms 5.2±0.03ms 0.00%
Set/OptimalMerkleTree::::set/100 52.3±0.14ms 52.4±1.77ms +0.19%
Set/OptimalMerkleTree::::set_range/1 521.6±16.18µs 519.1±4.08µs -0.48%
Set/OptimalMerkleTree::::set_range/10 720.8±6.00µs 720.3±8.18µs -0.07%
Set/OptimalMerkleTree::::set_range/100 1819.0±50.97µs 1812.5±44.44µs -0.36%
rln_finish_partial_proof 67.5±0.83ms 67.6±0.78ms +0.15%
rln_full_proof 186.2±9.07ms 187.3±11.13ms +0.59%
rln_partial_proof_generation 128.1±1.37ms 128.2±1.25ms +0.08%

@github-actions
Copy link
Copy Markdown

Benchmark for 4785838

Click to view benchmark
Test Base PR %
FullMerkleTree::delete 17.0±0.15µs 18.5±0.61µs +8.82%
FullMerkleTree::get 0.8±0.01ns 0.8±0.01ns 0.00%
FullMerkleTree::get_empty_leaves_indices 983.1±7.87µs 986.1±21.23µs +0.31%
FullMerkleTree::get_subtree_root 11.6±0.14ns 9.9±0.06ns -14.66%
FullMerkleTree::override_range 2.3±0.08ms 2.1±0.06ms -8.70%
FullMerkleTree::set 8.5±0.14µs 9.3±0.61µs +9.41%
OptimalMerkleTree::delete 19.9±0.28µs 21.1±0.35µs +6.03%
OptimalMerkleTree::get 51.7±1.31ns 52.0±1.68ns +0.58%
OptimalMerkleTree::get_empty_leaves_indices 982.1±6.76µs 983.9±10.74µs +0.18%
OptimalMerkleTree::get_subtree_root 25.8±0.18ns 26.1±0.50ns +1.16%
OptimalMerkleTree::override_range 5.0±0.18ms 5.1±0.33ms +2.00%
OptimalMerkleTree::set 10.0±0.16µs 10.6±0.23µs +6.00%
poseidon Fr/Array hash/10 138.8±0.14µs 70.4 KElem/sec N/A N/A
poseidon Fr/Array hash/100 1494.9±1.89µs 65.3 KElem/sec N/A N/A
poseidon Fr/Array hash/1000 15.1±0.04ms 64.7 KElem/sec N/A N/A
poseidon Fr/Single hash 13.8±0.02µs 69.3 MElem/sec N/A N/A
validate_override_range/FullMerkleTree/override_range/1024 602.9±26.12µs 558.4±42.99µs -7.38%
validate_override_range/FullMerkleTree/override_range/64 95.4±12.96µs 86.1±6.99µs -9.75%
validate_override_range/FullMerkleTree/override_range/65536 437.9±1.43ms 434.7±2.23ms -0.73%
validate_override_range/FullMerkleTree/override_range/8192 8.9±0.08ms 8.8±0.07ms -1.12%
validate_override_range/OptimalMerkleTree/override_range/1024 806.8±46.59µs 758.6±37.40µs -5.97%
validate_override_range/OptimalMerkleTree/override_range/64 133.7±27.58µs 131.4±24.84µs -1.72%
validate_override_range/OptimalMerkleTree/override_range/65536 464.1±1.82ms 461.0±3.50ms -0.67%
validate_override_range/OptimalMerkleTree/override_range/8192 10.2±0.10ms 12.8±0.39ms +25.49%
validate_override_range/validate_only/1024 10.6±0.15µs 8.0±0.06µs -24.53%
validate_override_range/validate_only/64 347.9±5.05ns 351.1±7.00ns +0.92%
validate_override_range/validate_only/65536 845.1±7.24µs 851.2±6.40µs +0.72%
validate_override_range/validate_only/8192 102.3±1.10µs 102.9±1.53µs +0.59%

@github-actions
Copy link
Copy Markdown

Benchmark for b269e64

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_depth_gen 13.0±0.47ms 13.3±0.56ms +2.31%
OptimalMerkleTree::::full_depth_gen 689.4±8.79µs 691.8±11.87µs +0.35%
Pmtree::delete 50.7±0.54µs 50.8±0.56µs +0.20%
Pmtree::get 287.0±6.36ns 295.2±6.30ns +2.86%
Pmtree::get_empty_leaves_indices 8.5±0.52ns 8.5±0.45ns 0.00%
Pmtree::get_subtree_root 366.0±4.63ns 382.1±6.40ns +4.40%
Pmtree::override_range 100.7±2.49µs 101.0±3.09µs +0.30%
Pmtree::set 50.7±0.44µs 50.7±0.54µs 0.00%
Set/FullMerkleTree::::set/1 518.2±5.52µs 519.9±4.81µs +0.33%
Set/FullMerkleTree::::set/10 5.2±0.06ms 5.2±0.19ms 0.00%
Set/FullMerkleTree::::set/100 52.0±0.13ms 52.4±1.65ms +0.77%
Set/FullMerkleTree::::set_range/1 517.5±4.26µs 519.6±3.54µs +0.41%
Set/FullMerkleTree::::set_range/10 707.6±5.09µs 708.6±5.36µs +0.14%
Set/FullMerkleTree::::set_range/100 1855.3±27.21µs 1851.0±32.89µs -0.23%
Set/OptimalMerkleTree::::set/1 519.0±2.32µs 520.2±5.53µs +0.23%
Set/OptimalMerkleTree::::set/10 5.2±0.01ms 5.2±0.02ms 0.00%
Set/OptimalMerkleTree::::set/100 52.3±0.24ms 52.3±0.24ms 0.00%
Set/OptimalMerkleTree::::set_range/1 519.0±4.39µs 518.0±7.05µs -0.19%
Set/OptimalMerkleTree::::set_range/10 721.6±5.45µs 721.1±5.21µs -0.07%
Set/OptimalMerkleTree::::set_range/100 1814.8±39.71µs 1814.2±50.02µs -0.03%
rln_finish_partial_proof 67.5±0.72ms 67.7±0.94ms +0.30%
rln_full_proof 185.4±3.96ms 186.9±8.29ms +0.81%
rln_partial_proof_generation 127.9±1.16ms 129.0±2.54ms +0.86%

@github-actions
Copy link
Copy Markdown

Benchmark for b269e64

Click to view benchmark
Test Base PR %
FullMerkleTree::delete 17.0±0.23µs 18.2±0.29µs +7.06%
FullMerkleTree::get 0.8±0.01ns 0.8±0.01ns 0.00%
FullMerkleTree::get_empty_leaves_indices 982.5±6.18µs 982.9±8.20µs +0.04%
FullMerkleTree::get_subtree_root 11.6±0.17ns 10.0±0.32ns -13.79%
FullMerkleTree::override_range 2.3±0.07ms 2.0±0.08ms -13.04%
FullMerkleTree::set 8.5±0.09µs 9.0±0.27µs +5.88%
OptimalMerkleTree::delete 19.8±0.19µs 20.7±0.31µs +4.55%
OptimalMerkleTree::get 51.0±0.40ns 51.1±0.34ns +0.20%
OptimalMerkleTree::get_empty_leaves_indices 983.2±13.41µs 985.6±21.50µs +0.24%
OptimalMerkleTree::get_subtree_root 25.9±0.38ns 25.9±0.39ns 0.00%
OptimalMerkleTree::override_range 5.1±0.29ms 3.8±0.28ms -25.49%
OptimalMerkleTree::set 9.9±0.25µs 10.7±0.46µs +8.08%
poseidon Fr/Array hash/10 138.8±0.33µs 70.3 KElem/sec N/A N/A
poseidon Fr/Array hash/100 1494.0±1.74µs 65.4 KElem/sec N/A N/A
poseidon Fr/Array hash/1000 15.1±0.01ms 64.8 KElem/sec N/A N/A
poseidon Fr/Single hash 13.8±0.01µs 69.4 MElem/sec N/A N/A
validate_override_range/FullMerkleTree/override_range/1024 610.1±29.22µs 550.8±27.66µs -9.72%
validate_override_range/FullMerkleTree/override_range/64 95.8±13.19µs 86.9±8.75µs -9.29%
validate_override_range/FullMerkleTree/override_range/65536 438.1±2.57ms 438.2±2.39ms +0.02%
validate_override_range/FullMerkleTree/override_range/8192 9.0±0.23ms 8.8±0.46ms -2.22%
validate_override_range/OptimalMerkleTree/override_range/1024 794.1±37.78µs 794.5±63.93µs +0.05%
validate_override_range/OptimalMerkleTree/override_range/64 128.7±21.87µs 135.7±23.69µs +5.44%
validate_override_range/OptimalMerkleTree/override_range/65536 463.8±3.07ms 457.8±4.26ms -1.29%
validate_override_range/OptimalMerkleTree/override_range/8192 13.1±0.42ms 10.0±0.03ms -23.66%
validate_override_range/validate_only/1024 8.0±0.16µs 10.6±0.28µs +32.50%
validate_override_range/validate_only/64 354.7±5.55ns 356.2±3.16ns +0.42%
validate_override_range/validate_only/65536 847.0±5.08µs 842.0±8.56µs -0.59%
validate_override_range/validate_only/8192 112.6±1.65µs 103.7±1.61µs -7.90%

@github-actions
Copy link
Copy Markdown

Benchmark for 1e259f5

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_depth_gen 11.7±0.14ms 11.6±0.13ms -0.85%
OptimalMerkleTree::::full_depth_gen 689.0±7.67µs 689.3±19.50µs +0.04%
Pmtree::delete 50.7±0.33µs 50.7±0.51µs 0.00%
Pmtree::get 287.7±4.16ns 299.7±5.36ns +4.17%
Pmtree::get_empty_leaves_indices 8.4±0.14ns 8.4±0.15ns 0.00%
Pmtree::get_subtree_root 373.5±5.36ns 376.8±7.23ns +0.88%
Pmtree::override_range 100.2±0.69µs 100.2±0.80µs 0.00%
Pmtree::set 50.7±0.83µs 50.9±1.05µs +0.39%
Set/FullMerkleTree::::set/1 515.8±5.08µs 518.4±5.79µs +0.50%
Set/FullMerkleTree::::set/10 5.2±0.01ms 5.2±0.02ms 0.00%
Set/FullMerkleTree::::set/100 51.9±0.11ms 52.1±0.07ms +0.39%
Set/FullMerkleTree::::set_range/1 518.2±2.10µs 516.4±4.18µs -0.35%
Set/FullMerkleTree::::set_range/10 712.6±26.41µs 708.6±2.31µs -0.56%
Set/FullMerkleTree::::set_range/100 1854.3±39.54µs 1846.6±33.94µs -0.42%
Set/OptimalMerkleTree::::set/1 521.0±4.80µs 519.2±4.22µs -0.35%
Set/OptimalMerkleTree::::set/10 5.2±0.01ms 5.2±0.37ms 0.00%
Set/OptimalMerkleTree::::set/100 52.3±0.08ms 52.2±0.16ms -0.19%
Set/OptimalMerkleTree::::set_range/1 520.9±3.24µs 517.3±2.24µs -0.69%
Set/OptimalMerkleTree::::set_range/10 715.4±4.94µs 715.9±7.58µs +0.07%
Set/OptimalMerkleTree::::set_range/100 1818.7±53.16µs 1805.5±38.00µs -0.73%
rln_finish_partial_proof 67.5±1.16ms 67.5±0.88ms 0.00%
rln_full_proof 185.8±7.71ms 185.3±1.81ms -0.27%
rln_partial_proof_generation 127.7±1.47ms 128.9±3.39ms +0.94%

@github-actions
Copy link
Copy Markdown

Benchmark for 1e259f5

Click to view benchmark
Test Base PR %
FullMerkleTree::delete 17.1±0.35µs 18.3±0.40µs +7.02%
FullMerkleTree::get 0.8±0.01ns 0.8±0.02ns 0.00%
FullMerkleTree::get_empty_leaves_indices 982.1±8.00µs 982.0±5.00µs -0.01%
FullMerkleTree::get_subtree_root 11.6±0.07ns 9.9±0.04ns -14.66%
FullMerkleTree::override_range 2.3±0.12ms 2.1±0.07ms -8.70%
FullMerkleTree::set 8.5±0.14µs 9.1±0.21µs +7.06%
OptimalMerkleTree::delete 19.9±0.59µs 21.0±0.68µs +5.53%
OptimalMerkleTree::get 50.7±0.51ns 50.3±0.40ns -0.79%
OptimalMerkleTree::get_empty_leaves_indices 982.5±6.47µs 983.1±10.18µs +0.06%
OptimalMerkleTree::get_subtree_root 25.9±0.33ns 25.8±0.34ns -0.39%
OptimalMerkleTree::override_range 4.7±0.24ms 4.4±0.34ms -6.38%
OptimalMerkleTree::set 10.0±0.38µs 10.6±0.23µs +6.00%
poseidon Fr/Array hash/10 138.8±0.20µs 70.3 KElem/sec N/A N/A
poseidon Fr/Array hash/100 1497.0±2.28µs 65.2 KElem/sec N/A N/A
poseidon Fr/Array hash/1000 15.1±0.05ms 64.7 KElem/sec N/A N/A
poseidon Fr/Single hash 13.8±0.03µs 69.3 MElem/sec N/A N/A
validate_override_range/FullMerkleTree/override_range/1024 609.6±32.86µs 556.2±31.57µs -8.76%
validate_override_range/FullMerkleTree/override_range/64 100.1±17.55µs 93.7±17.04µs -6.39%
validate_override_range/FullMerkleTree/override_range/65536 437.0±1.05ms 437.8±1.56ms +0.18%
validate_override_range/FullMerkleTree/override_range/8192 8.9±0.03ms 8.8±0.03ms -1.12%
validate_override_range/OptimalMerkleTree/override_range/1024 801.1±46.06µs 762.4±42.88µs -4.83%
validate_override_range/OptimalMerkleTree/override_range/64 133.1±25.98µs 129.7±21.58µs -2.55%
validate_override_range/OptimalMerkleTree/override_range/65536 460.6±1.44ms 458.9±1.65ms -0.37%
validate_override_range/OptimalMerkleTree/override_range/8192 10.2±0.15ms 10.0±0.09ms -1.96%
validate_override_range/validate_only/1024 11.1±0.18µs 10.6±0.11µs -4.50%
validate_override_range/validate_only/64 349.6±5.51ns 353.9±5.59ns +1.23%
validate_override_range/validate_only/65536 845.4±6.27µs 841.4±12.24µs -0.47%
validate_override_range/validate_only/8192 102.3±1.68µs 104.6±1.53µs +2.25%

@vinhtc27 vinhtc27 requested a review from sydhds March 25, 2026 14:31
@vinhtc27 vinhtc27 merged commit 4ef0d41 into master Mar 27, 2026
21 checks passed
@vinhtc27 vinhtc27 deleted the fix/remove-result-from-hash-to-field-functions branch March 27, 2026 07:54
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.

2 participants