Skip to content

Initial impl for IdSecret#320

Merged
sydhds merged 15 commits into
masterfrom
secret-hash-zeroize_2
Jul 8, 2025
Merged

Initial impl for IdSecret#320
sydhds merged 15 commits into
masterfrom
secret-hash-zeroize_2

Conversation

@sydhds

@sydhds sydhds commented Jun 17, 2025

Copy link
Copy Markdown
Contributor

No description provided.

@github-actions

Copy link
Copy Markdown

Benchmark for d44204a

Click to view benchmark
Test Base PR %
FullMerkleTree::delete 17.2±0.27µs 17.2±0.21µs 0.00%
FullMerkleTree::get 0.8±0.00ns 0.8±0.01ns 0.00%
FullMerkleTree::get_empty_leaves_indices 980.8±3.72µs 981.1±6.74µs +0.03%
FullMerkleTree::get_subtree_root 11.7±0.07ns 11.6±0.11ns -0.85%
FullMerkleTree::override_range 2.0±0.07ms 2.0±0.12ms 0.00%
FullMerkleTree::set 8.6±0.10µs 8.6±0.09µs 0.00%
OptimalMerkleTree::delete 19.5±0.22µs 19.6±0.20µs +0.51%
OptimalMerkleTree::get 50.4±0.18ns 50.7±0.46ns +0.60%
OptimalMerkleTree::get_empty_leaves_indices 981.5±4.55µs 981.1±4.22µs -0.04%
OptimalMerkleTree::get_subtree_root 25.0±0.19ns 25.2±0.86ns +0.80%
OptimalMerkleTree::override_range 3.6±0.15ms 3.6±0.18ms 0.00%
OptimalMerkleTree::set 9.8±0.15µs 9.8±0.09µs 0.00%
poseidon Fr/Array hash/10 138.5±2.77µs 70.5 KElem/sec N/A N/A
poseidon Fr/Array hash/100 1484.8±3.20µs 65.8 KElem/sec N/A N/A
poseidon Fr/Array hash/1000 15.0±0.02ms 65.3 KElem/sec N/A N/A
poseidon Fr/Single hash 13.6±0.11µs 70.2 MElem/sec N/A N/A

@github-actions

Copy link
Copy Markdown

Benchmark for 8250efd

Click to view benchmark
Test Base PR %
FullMerkleTree::delete 17.2±0.19µs 17.2±0.16µs 0.00%
FullMerkleTree::get 0.8±0.01ns 0.8±0.01ns 0.00%
FullMerkleTree::get_empty_leaves_indices 983.1±14.92µs 982.0±8.87µs -0.11%
FullMerkleTree::get_subtree_root 11.6±0.10ns 11.6±0.08ns 0.00%
FullMerkleTree::override_range 2.0±0.07ms 2.1±0.07ms +5.00%
FullMerkleTree::set 8.6±0.09µs 8.6±0.11µs 0.00%
OptimalMerkleTree::delete 19.8±0.21µs 19.8±0.37µs 0.00%
OptimalMerkleTree::get 50.3±0.33ns 50.5±1.12ns +0.40%
OptimalMerkleTree::get_empty_leaves_indices 981.5±8.74µs 981.7±7.66µs +0.02%
OptimalMerkleTree::get_subtree_root 25.3±0.36ns 25.1±0.34ns -0.79%
OptimalMerkleTree::override_range 3.9±0.35ms 3.8±0.32ms -2.56%
OptimalMerkleTree::set 9.9±0.31µs 10.0±0.48µs +1.01%
poseidon Fr/Array hash/10 137.7±0.21µs 70.9 KElem/sec N/A N/A
poseidon Fr/Array hash/100 1483.5±2.46µs 65.8 KElem/sec N/A N/A
poseidon Fr/Array hash/1000 15.0±0.22ms 65.1 KElem/sec N/A N/A
poseidon Fr/Single hash 13.6±0.11µs 69.9 MElem/sec N/A N/A

@github-actions

Copy link
Copy Markdown

Benchmark for 8250efd

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 12.9±0.13ms 13.0±0.15ms +0.78%
OptimalMerkleTree::::full_height_gen 773.3±7.99µs 777.1±19.20µs +0.49%
Pmtree::get 380.8±5.61ns 368.5±4.77ns -3.23%
Pmtree::get_empty_leaves_indices 8.7±0.12ns 4.7±0.02ns -45.98%
Pmtree::get_subtree_root 521.9±7.32ns 519.2±9.35ns -0.52%
Pmtree::override_range 226.1±12.25µs 226.6±4.07µs +0.22%
Pmtree::set 50.4±0.52µs 50.4±0.98µs 0.00%
Pmtree:delete 50.5±0.46µs 50.5±1.02µs 0.00%
Set/FullMerkleTree::::set/1 515.7±4.18µs 510.6±2.90µs -0.99%
Set/FullMerkleTree::::set/10 5.2±0.01ms 5.1±0.03ms -1.92%
Set/FullMerkleTree::::set/100 51.9±0.12ms 51.4±0.13ms -0.96%
Set/FullMerkleTree::::set_range/1 516.4±4.41µs 510.0±3.12µs -1.24%
Set/FullMerkleTree::::set_range/10 700.9±3.63µs 694.3±6.32µs -0.94%
Set/FullMerkleTree::::set_range/100 1861.2±23.34µs 1858.4±30.76µs -0.15%
Set/OptimalMerkleTree::::set/1 514.8±3.39µs 513.3±5.56µs -0.29%
Set/OptimalMerkleTree::::set/10 5.2±0.17ms 5.1±0.01ms -1.92%
Set/OptimalMerkleTree::::set/100 51.5±0.20ms 51.6±0.14ms +0.19%
Set/OptimalMerkleTree::::set_range/1 512.6±3.30µs 513.4±5.34µs +0.16%
Set/OptimalMerkleTree::::set_range/10 708.0±7.03µs 708.2±8.23µs +0.03%
Set/OptimalMerkleTree::::set_range/100 1822.5±36.62µs 1822.2±31.13µs -0.02%
zkey::zkey_from_raw 653.9±1.04ms 655.1±2.34ms +0.18%

@github-actions

Copy link
Copy Markdown

Benchmark for 8250efd

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 13.0±0.12ms 12.0±0.11ms -7.69%
OptimalMerkleTree::::full_height_gen 780.6±9.35µs 778.9±6.82µs -0.22%
Pmtree::get 367.8±5.43ns 380.7±3.85ns +3.51%
Pmtree::get_empty_leaves_indices 8.7±0.08ns 4.7±0.14ns -45.98%
Pmtree::get_subtree_root 518.0±7.55ns 545.7±6.08ns +5.35%
Pmtree::override_range 226.3±3.56µs 225.1±4.53µs -0.53%
Pmtree::set 49.7±0.46µs 50.1±0.39µs +0.80%
Pmtree:delete 49.9±0.55µs 50.3±0.65µs +0.80%
Set/FullMerkleTree::::set/1 513.7±3.10µs 512.3±3.41µs -0.27%
Set/FullMerkleTree::::set/10 5.1±0.03ms 5.1±0.08ms 0.00%
Set/FullMerkleTree::::set/100 51.7±0.16ms 51.5±0.21ms -0.39%
Set/FullMerkleTree::::set_range/1 513.6±4.27µs 512.3±2.77µs -0.25%
Set/FullMerkleTree::::set_range/10 702.5±6.23µs 699.5±3.58µs -0.43%
Set/FullMerkleTree::::set_range/100 1845.8±16.72µs 1853.3±24.96µs +0.41%
Set/OptimalMerkleTree::::set/1 517.6±3.25µs 516.5±5.00µs -0.21%
Set/OptimalMerkleTree::::set/10 5.2±0.01ms 5.2±0.01ms 0.00%
Set/OptimalMerkleTree::::set/100 52.0±0.14ms 51.9±0.53ms -0.19%
Set/OptimalMerkleTree::::set_range/1 517.3±7.21µs 515.0±4.96µs -0.44%
Set/OptimalMerkleTree::::set_range/10 706.0±9.75µs 703.3±8.96µs -0.38%
Set/OptimalMerkleTree::::set_range/100 1811.5±31.19µs 1823.5±53.53µs +0.66%
arkzkey::arkzkey_from_raw_uncompressed 6.0±0.00ms 5.8±0.01ms -3.33%
zkey::zkey_from_raw 655.1±0.47ms 655.3±0.65ms +0.03%

@github-actions

Copy link
Copy Markdown

Benchmark for 4055cae

Click to view benchmark
Test Base PR %
FullMerkleTree::delete 17.2±0.23µs 17.3±0.44µs +0.58%
FullMerkleTree::get 0.8±0.01ns 0.8±0.01ns 0.00%
FullMerkleTree::get_empty_leaves_indices 981.2±6.90µs 981.2±7.41µs 0.00%
FullMerkleTree::get_subtree_root 11.6±0.14ns 11.6±0.10ns 0.00%
FullMerkleTree::override_range 2.1±0.08ms 2.0±0.07ms -4.76%
FullMerkleTree::set 8.6±0.10µs 8.6±0.11µs 0.00%
OptimalMerkleTree::delete 19.8±0.23µs 20.1±0.27µs +1.52%
OptimalMerkleTree::get 50.7±0.41ns 51.0±0.46ns +0.59%
OptimalMerkleTree::get_empty_leaves_indices 982.6±12.97µs 982.3±10.72µs -0.03%
OptimalMerkleTree::get_subtree_root 25.0±0.34ns 25.0±0.48ns 0.00%
OptimalMerkleTree::override_range 4.6±0.12ms 4.8±0.29ms +4.35%
OptimalMerkleTree::set 10.0±0.18µs 10.2±0.57µs +2.00%
poseidon Fr/Array hash/10 138.0±0.38µs 70.8 KElem/sec N/A N/A
poseidon Fr/Array hash/100 1483.6±2.20µs 65.8 KElem/sec N/A N/A
poseidon Fr/Array hash/1000 15.0±0.07ms 65.2 KElem/sec N/A N/A
poseidon Fr/Single hash 13.6±0.02µs 70.0 MElem/sec N/A N/A

@github-actions

Copy link
Copy Markdown

Benchmark for 4055cae

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 12.7±0.08ms 11.8±0.18ms -7.09%
OptimalMerkleTree::::full_height_gen 783.9±5.27µs 789.2±6.01µs +0.68%
Pmtree::get 389.3±4.42ns 371.5±13.94ns -4.57%
Pmtree::get_empty_leaves_indices 8.7±0.11ns 4.7±0.07ns -45.98%
Pmtree::get_subtree_root 515.5±4.60ns 522.0±4.63ns +1.26%
Pmtree::override_range 220.7±2.92µs 225.0±5.20µs +1.95%
Pmtree::set 50.4±0.39µs 50.4±0.43µs 0.00%
Pmtree:delete 50.5±0.52µs 50.7±0.76µs +0.40%
Set/FullMerkleTree::::set/1 510.4±3.30µs 511.6±1.81µs +0.24%
Set/FullMerkleTree::::set/10 5.1±0.05ms 5.1±0.02ms 0.00%
Set/FullMerkleTree::::set/100 51.4±0.12ms 51.3±0.10ms -0.19%
Set/FullMerkleTree::::set_range/1 510.2±3.48µs 510.2±2.13µs 0.00%
Set/FullMerkleTree::::set_range/10 694.5±3.87µs 694.3±6.78µs -0.03%
Set/FullMerkleTree::::set_range/100 1854.8±44.25µs 1851.3±25.15µs -0.19%
Set/OptimalMerkleTree::::set/1 509.3±2.71µs 513.0±2.59µs +0.73%
Set/OptimalMerkleTree::::set/10 5.1±0.02ms 5.1±0.03ms 0.00%
Set/OptimalMerkleTree::::set/100 51.7±0.36ms 51.8±0.29ms +0.19%
Set/OptimalMerkleTree::::set_range/1 513.4±3.48µs 513.0±3.87µs -0.08%
Set/OptimalMerkleTree::::set_range/10 709.5±6.09µs 710.7±7.41µs +0.17%
Set/OptimalMerkleTree::::set_range/100 1826.6±36.94µs 1818.9±37.33µs -0.42%
zkey::zkey_from_raw 654.3±0.56ms 659.4±11.50ms +0.78%

@github-actions

Copy link
Copy Markdown

Benchmark for 4055cae

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 12.2±0.15ms 12.0±0.09ms -1.64%
OptimalMerkleTree::::full_height_gen 789.8±9.22µs 783.8±17.92µs -0.76%
Pmtree::get 370.6±5.69ns 369.5±4.65ns -0.30%
Pmtree::get_empty_leaves_indices 8.7±0.08ns 4.7±0.20ns -45.98%
Pmtree::get_subtree_root 522.6±6.61ns 527.3±4.88ns +0.90%
Pmtree::override_range 228.1±2.90µs 229.2±6.08µs +0.48%
Pmtree::set 49.8±0.52µs 50.2±0.51µs +0.80%
Pmtree:delete 49.8±0.41µs 50.5±2.68µs +1.41%
Set/FullMerkleTree::::set/1 512.2±4.70µs 512.9±6.30µs +0.14%
Set/FullMerkleTree::::set/10 5.1±0.01ms 5.1±0.04ms 0.00%
Set/FullMerkleTree::::set/100 51.7±1.55ms 51.6±0.08ms -0.19%
Set/FullMerkleTree::::set_range/1 512.4±4.66µs 511.8±5.07µs -0.12%
Set/FullMerkleTree::::set_range/10 698.8±5.49µs 700.2±3.80µs +0.20%
Set/FullMerkleTree::::set_range/100 1847.4±35.59µs 1863.6±78.24µs +0.88%
Set/OptimalMerkleTree::::set/1 514.8±3.40µs 517.7±5.68µs +0.56%
Set/OptimalMerkleTree::::set/10 5.2±0.01ms 5.1±0.01ms -1.92%
Set/OptimalMerkleTree::::set/100 51.8±0.06ms 51.6±0.15ms -0.39%
Set/OptimalMerkleTree::::set_range/1 514.2±2.42µs 518.2±16.64µs +0.78%
Set/OptimalMerkleTree::::set_range/10 707.5±5.94µs 713.0±18.27µs +0.78%
Set/OptimalMerkleTree::::set_range/100 1821.2±49.53µs 1837.1±36.14µs +0.87%
arkzkey::arkzkey_from_raw_uncompressed 5.8±0.06ms 5.8±0.05ms 0.00%
zkey::zkey_from_raw 655.6±0.69ms 654.8±0.25ms -0.12%

@sydhds
sydhds marked this pull request as ready for review June 18, 2025 10:05
@sydhds
sydhds requested a review from seemenkina June 18, 2025 10:05
@github-actions

Copy link
Copy Markdown

Benchmark for 81859a3

Click to view benchmark
Test Base PR %
FullMerkleTree::delete 17.7±0.19µs 17.2±0.23µs -2.82%
FullMerkleTree::get 0.8±0.02ns 0.8±0.01ns 0.00%
FullMerkleTree::get_empty_leaves_indices 981.6±8.64µs 981.9±8.74µs +0.03%
FullMerkleTree::get_subtree_root 11.6±0.07ns 11.6±0.07ns 0.00%
FullMerkleTree::override_range 2.0±0.06ms 2.0±0.06ms 0.00%
FullMerkleTree::set 8.9±0.11µs 8.6±0.10µs -3.37%
OptimalMerkleTree::delete 19.9±0.30µs 19.9±0.73µs 0.00%
OptimalMerkleTree::get 51.5±3.64ns 51.1±0.43ns -0.78%
OptimalMerkleTree::get_empty_leaves_indices 982.0±7.15µs 982.6±7.91µs +0.06%
OptimalMerkleTree::get_subtree_root 25.0±0.33ns 25.2±0.37ns +0.80%
OptimalMerkleTree::override_range 5.4±0.37ms 4.9±0.16ms -9.26%
OptimalMerkleTree::set 10.1±0.18µs 10.2±0.41µs +0.99%
poseidon Fr/Array hash/10 138.0±0.55µs 70.8 KElem/sec N/A N/A
poseidon Fr/Array hash/100 1497.9±46.88µs 65.2 KElem/sec N/A N/A
poseidon Fr/Array hash/1000 15.0±0.01ms 65.2 KElem/sec N/A N/A
poseidon Fr/Single hash 13.6±0.02µs 70.0 MElem/sec N/A N/A

@github-actions

Copy link
Copy Markdown

Benchmark for b132459

Click to view benchmark
Test Base PR %
FullMerkleTree::delete 17.3±0.22µs 17.3±0.20µs 0.00%
FullMerkleTree::get 0.8±0.01ns 0.8±0.02ns 0.00%
FullMerkleTree::get_empty_leaves_indices 982.2±5.57µs 981.6±7.57µs -0.06%
FullMerkleTree::get_subtree_root 11.7±0.11ns 11.6±0.10ns -0.85%
FullMerkleTree::override_range 2.0±0.07ms 2.0±0.07ms 0.00%
FullMerkleTree::set 8.6±0.07µs 8.6±0.11µs 0.00%
OptimalMerkleTree::delete 19.7±0.20µs 19.6±0.34µs -0.51%
OptimalMerkleTree::get 51.5±0.30ns 52.3±0.62ns +1.55%
OptimalMerkleTree::get_empty_leaves_indices 982.3±7.75µs 982.1±8.76µs -0.02%
OptimalMerkleTree::get_subtree_root 25.1±0.55ns 24.9±0.33ns -0.80%
OptimalMerkleTree::override_range 4.6±0.20ms 4.6±0.21ms 0.00%
OptimalMerkleTree::set 10.0±0.19µs 9.9±0.15µs -1.00%
poseidon Fr/Array hash/10 138.0±0.24µs 70.7 KElem/sec N/A N/A
poseidon Fr/Array hash/100 1487.5±3.10µs 65.7 KElem/sec N/A N/A
poseidon Fr/Array hash/1000 15.0±0.03ms 65.1 KElem/sec N/A N/A
poseidon Fr/Single hash 13.7±0.02µs 69.7 MElem/sec N/A N/A

@github-actions

Copy link
Copy Markdown

Benchmark for 81859a3

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 11.9±0.07ms 11.8±0.06ms -0.84%
OptimalMerkleTree::::full_height_gen 786.8±3.92µs 777.2±9.62µs -1.22%
Pmtree::get 383.3±6.17ns 377.0±6.26ns -1.64%
Pmtree::get_empty_leaves_indices 8.7±0.09ns 4.7±0.07ns -45.98%
Pmtree::get_subtree_root 520.4±2.90ns 521.4±4.86ns +0.19%
Pmtree::override_range 227.0±3.85µs 238.4±6.58µs +5.02%
Pmtree::set 50.5±0.51µs 50.4±0.42µs -0.20%
Pmtree:delete 50.5±0.67µs 50.7±1.16µs +0.40%
Set/FullMerkleTree::::set/1 510.5±3.00µs 511.0±4.55µs +0.10%
Set/FullMerkleTree::::set/10 5.1±0.02ms 5.1±0.02ms 0.00%
Set/FullMerkleTree::::set/100 51.3±0.05ms 51.3±0.06ms 0.00%
Set/FullMerkleTree::::set_range/1 510.7±2.81µs 512.1±13.67µs +0.27%
Set/FullMerkleTree::::set_range/10 695.2±3.13µs 695.6±6.86µs +0.06%
Set/FullMerkleTree::::set_range/100 1849.6±21.37µs 1846.6±18.75µs -0.16%
Set/OptimalMerkleTree::::set/1 515.2±3.85µs 512.8±3.20µs -0.47%
Set/OptimalMerkleTree::::set/10 5.2±0.07ms 5.1±0.03ms -1.92%
Set/OptimalMerkleTree::::set/100 51.8±0.18ms 51.5±0.26ms -0.58%
Set/OptimalMerkleTree::::set_range/1 515.1±4.64µs 513.1±3.98µs -0.39%
Set/OptimalMerkleTree::::set_range/10 706.3±5.72µs 703.0±8.49µs -0.47%
Set/OptimalMerkleTree::::set_range/100 1816.7±29.86µs 1816.7±39.46µs 0.00%
zkey::zkey_from_raw 654.6±2.03ms 657.5±7.43ms +0.44%

@github-actions

Copy link
Copy Markdown

Benchmark for b132459

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 11.6±0.06ms 12.6±0.22ms +8.62%
OptimalMerkleTree::::full_height_gen 775.8±5.96µs 777.4±6.02µs +0.21%
Pmtree::get 380.5±4.56ns 369.2±3.21ns -2.97%
Pmtree::get_empty_leaves_indices 8.7±0.22ns 4.7±0.06ns -45.98%
Pmtree::get_subtree_root 516.0±6.58ns 517.8±5.30ns +0.35%
Pmtree::override_range 223.5±4.31µs 236.1±15.66µs +5.64%
Pmtree::set 50.4±0.55µs 50.3±0.58µs -0.20%
Pmtree:delete 50.4±0.29µs 50.4±0.71µs 0.00%
Set/FullMerkleTree::::set/1 512.2±5.03µs 506.5±5.13µs -1.11%
Set/FullMerkleTree::::set/10 5.1±0.05ms 5.1±0.02ms 0.00%
Set/FullMerkleTree::::set/100 51.6±0.10ms 51.4±0.55ms -0.39%
Set/FullMerkleTree::::set_range/1 512.1±4.60µs 510.9±5.13µs -0.23%
Set/FullMerkleTree::::set_range/10 697.1±4.61µs 695.3±5.75µs -0.26%
Set/FullMerkleTree::::set_range/100 1852.9±57.34µs 1847.0±25.69µs -0.32%
Set/OptimalMerkleTree::::set/1 512.7±2.87µs 508.3±5.14µs -0.86%
Set/OptimalMerkleTree::::set/10 5.1±0.01ms 5.1±0.01ms 0.00%
Set/OptimalMerkleTree::::set/100 51.7±0.68ms 51.6±0.15ms -0.19%
Set/OptimalMerkleTree::::set_range/1 513.5±3.74µs 512.8±5.79µs -0.14%
Set/OptimalMerkleTree::::set_range/10 703.2±6.31µs 703.3±8.65µs +0.01%
Set/OptimalMerkleTree::::set_range/100 1826.7±53.05µs 1815.9±33.77µs -0.59%
zkey::zkey_from_raw 653.0±0.20ms 655.8±5.66ms +0.43%

@github-actions

Copy link
Copy Markdown

Benchmark for 81859a3

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 11.9±0.16ms 13.1±0.42ms +10.08%
OptimalMerkleTree::::full_height_gen 780.0±6.78µs 798.8±15.74µs +2.41%
Pmtree::get 367.2±6.37ns 380.0±3.04ns +3.49%
Pmtree::get_empty_leaves_indices 8.8±0.25ns 4.7±0.09ns -46.59%
Pmtree::get_subtree_root 521.9±7.45ns 535.5±27.11ns +2.61%
Pmtree::override_range 229.0±3.34µs 226.1±4.49µs -1.27%
Pmtree::set 49.9±0.58µs 50.1±0.36µs +0.40%
Pmtree:delete 49.9±0.62µs 50.1±0.54µs +0.40%
Set/FullMerkleTree::::set/1 512.2±2.96µs 513.3±2.43µs +0.21%
Set/FullMerkleTree::::set/10 5.1±0.01ms 5.1±0.01ms 0.00%
Set/FullMerkleTree::::set/100 51.5±0.10ms 51.4±0.12ms -0.19%
Set/FullMerkleTree::::set_range/1 511.7±2.56µs 513.4±3.11µs +0.33%
Set/FullMerkleTree::::set_range/10 698.4±5.98µs 700.8±6.40µs +0.34%
Set/FullMerkleTree::::set_range/100 1851.2±38.22µs 1856.5±28.91µs +0.29%
Set/OptimalMerkleTree::::set/1 514.7±3.36µs 514.3±2.12µs -0.08%
Set/OptimalMerkleTree::::set/10 5.2±0.01ms 5.1±0.02ms -1.92%
Set/OptimalMerkleTree::::set/100 51.8±0.07ms 51.7±0.14ms -0.19%
Set/OptimalMerkleTree::::set_range/1 515.4±3.34µs 514.6±5.33µs -0.16%
Set/OptimalMerkleTree::::set_range/10 707.7±4.26µs 708.4±7.56µs +0.10%
Set/OptimalMerkleTree::::set_range/100 1816.1±34.46µs 1824.4±33.95µs +0.46%
arkzkey::arkzkey_from_raw_uncompressed 5.8±0.01ms 5.8±0.03ms 0.00%
zkey::zkey_from_raw 656.4±2.51ms 655.7±0.97ms -0.11%

@github-actions

Copy link
Copy Markdown

Benchmark for b132459

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 12.9±0.11ms 12.6±0.11ms -2.33%
OptimalMerkleTree::::full_height_gen 780.7±9.62µs 781.6±14.05µs +0.12%
Pmtree::get 382.7±10.70ns 371.1±5.29ns -3.03%
Pmtree::get_empty_leaves_indices 8.7±0.15ns 4.7±0.27ns -45.98%
Pmtree::get_subtree_root 528.0±8.57ns 526.6±3.81ns -0.27%
Pmtree::override_range 229.0±4.15µs 230.2±2.64µs +0.52%
Pmtree::set 50.1±0.69µs 50.3±0.80µs +0.40%
Pmtree:delete 49.8±0.30µs 50.3±0.63µs +1.00%
Set/FullMerkleTree::::set/1 513.6±5.86µs 512.5±4.79µs -0.21%
Set/FullMerkleTree::::set/10 5.1±0.01ms 5.1±0.02ms 0.00%
Set/FullMerkleTree::::set/100 51.6±0.33ms 51.4±0.21ms -0.39%
Set/FullMerkleTree::::set_range/1 511.5±2.24µs 512.8±4.04µs +0.25%
Set/FullMerkleTree::::set_range/10 697.8±4.66µs 700.0±6.48µs +0.32%
Set/FullMerkleTree::::set_range/100 1849.6±44.08µs 1851.0±20.06µs +0.08%
Set/OptimalMerkleTree::::set/1 514.0±4.71µs 515.0±3.18µs +0.19%
Set/OptimalMerkleTree::::set/10 5.2±0.01ms 5.2±0.09ms 0.00%
Set/OptimalMerkleTree::::set/100 51.8±0.24ms 51.6±0.16ms -0.39%
Set/OptimalMerkleTree::::set_range/1 515.0±5.31µs 514.6±4.29µs -0.08%
Set/OptimalMerkleTree::::set_range/10 704.6±4.68µs 710.1±18.52µs +0.78%
Set/OptimalMerkleTree::::set_range/100 1817.7±33.39µs 1820.9±32.83µs +0.18%
arkzkey::arkzkey_from_raw_uncompressed 5.8±0.02ms 5.9±0.02ms +1.72%
zkey::zkey_from_raw 655.3±0.92ms 655.9±2.12ms +0.09%

@github-actions

Copy link
Copy Markdown

Benchmark for e0fcd15

Click to view benchmark
Test Base PR %
FullMerkleTree::delete 17.3±0.12µs 17.2±0.28µs -0.58%
FullMerkleTree::get 0.8±0.02ns 0.8±0.03ns 0.00%
FullMerkleTree::get_empty_leaves_indices 981.7±7.91µs 981.4±5.77µs -0.03%
FullMerkleTree::get_subtree_root 11.7±0.26ns 11.6±0.16ns -0.85%
FullMerkleTree::override_range 2.0±0.07ms 2.0±0.07ms 0.00%
FullMerkleTree::set 8.6±0.10µs 8.6±0.08µs 0.00%
OptimalMerkleTree::delete 20.2±0.21µs 19.6±0.23µs -2.97%
OptimalMerkleTree::get 51.0±0.27ns 50.9±0.74ns -0.20%
OptimalMerkleTree::get_empty_leaves_indices 981.0±4.08µs 981.9±7.24µs +0.09%
OptimalMerkleTree::get_subtree_root 24.9±0.20ns 25.2±0.87ns +1.20%
OptimalMerkleTree::override_range 4.4±0.30ms 4.6±0.41ms +4.55%
OptimalMerkleTree::set 10.2±0.20µs 9.9±0.18µs -2.94%
poseidon Fr/Array hash/10 137.8±0.26µs 70.9 KElem/sec N/A N/A
poseidon Fr/Array hash/100 1483.4±2.11µs 65.8 KElem/sec N/A N/A
poseidon Fr/Array hash/1000 14.9±0.01ms 65.4 KElem/sec N/A N/A
poseidon Fr/Single hash 13.6±0.03µs 69.9 MElem/sec N/A N/A

@github-actions

Copy link
Copy Markdown

Benchmark for e0fcd15

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 12.4±0.61ms 12.9±0.14ms +4.03%
OptimalMerkleTree::::full_height_gen 773.9±4.88µs 790.0±6.09µs +2.08%
Pmtree::get 378.9±5.22ns 365.9±3.30ns -3.43%
Pmtree::get_empty_leaves_indices 8.7±0.07ns 4.7±0.04ns -45.98%
Pmtree::get_subtree_root 520.7±9.15ns 522.1±20.94ns +0.27%
Pmtree::override_range 224.0±3.34µs 222.7±5.88µs -0.58%
Pmtree::set 50.8±1.32µs 50.8±3.20µs 0.00%
Pmtree:delete 50.8±0.31µs 50.9±2.18µs +0.20%
Set/FullMerkleTree::::set/1 510.3±4.50µs 511.2±3.62µs +0.18%
Set/FullMerkleTree::::set/10 5.1±0.03ms 5.1±0.01ms 0.00%
Set/FullMerkleTree::::set/100 51.3±0.31ms 51.4±0.14ms +0.19%
Set/FullMerkleTree::::set_range/1 510.7±4.23µs 511.1±3.42µs +0.08%
Set/FullMerkleTree::::set_range/10 697.3±2.94µs 695.0±3.64µs -0.33%
Set/FullMerkleTree::::set_range/100 1853.5±38.64µs 1846.2±22.25µs -0.39%
Set/OptimalMerkleTree::::set/1 515.1±3.78µs 513.8±4.94µs -0.25%
Set/OptimalMerkleTree::::set/10 5.2±0.02ms 5.1±0.01ms -1.92%
Set/OptimalMerkleTree::::set/100 51.9±0.13ms 51.6±0.12ms -0.58%
Set/OptimalMerkleTree::::set_range/1 515.3±3.13µs 516.7±21.07µs +0.27%
Set/OptimalMerkleTree::::set_range/10 707.3±6.25µs 705.8±5.02µs -0.21%
Set/OptimalMerkleTree::::set_range/100 1823.4±41.65µs 1817.2±37.07µs -0.34%
zkey::zkey_from_raw 653.8±0.25ms 657.4±8.10ms +0.55%

@github-actions

Copy link
Copy Markdown

Benchmark for e0fcd15

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 12.8±0.07ms 11.9±0.08ms -7.03%
OptimalMerkleTree::::full_height_gen 789.2±5.48µs 790.6±6.96µs +0.18%
Pmtree::get 371.9±4.80ns 388.7±4.31ns +4.52%
Pmtree::get_empty_leaves_indices 8.7±0.11ns 4.7±0.33ns -45.98%
Pmtree::get_subtree_root 521.7±6.43ns 538.5±10.73ns +3.22%
Pmtree::override_range 224.0±2.87µs 221.9±2.54µs -0.94%
Pmtree::set 49.8±0.33µs 50.3±1.16µs +1.00%
Pmtree:delete 49.7±0.29µs 50.2±0.26µs +1.01%
Set/FullMerkleTree::::set/1 513.0±2.73µs 512.7±2.56µs -0.06%
Set/FullMerkleTree::::set/10 5.1±0.00ms 5.1±0.03ms 0.00%
Set/FullMerkleTree::::set/100 51.6±0.11ms 51.4±0.09ms -0.39%
Set/FullMerkleTree::::set_range/1 513.0±1.97µs 513.7±6.35µs +0.14%
Set/FullMerkleTree::::set_range/10 700.3±4.13µs 699.6±4.54µs -0.10%
Set/FullMerkleTree::::set_range/100 1847.6±31.87µs 1851.7±29.27µs +0.22%
Set/OptimalMerkleTree::::set/1 520.5±4.92µs 512.8±3.95µs -1.48%
Set/OptimalMerkleTree::::set/10 5.2±0.01ms 5.2±0.01ms 0.00%
Set/OptimalMerkleTree::::set/100 52.3±0.10ms 51.9±1.37ms -0.76%
Set/OptimalMerkleTree::::set_range/1 517.2±5.20µs 513.9±3.37µs -0.64%
Set/OptimalMerkleTree::::set_range/10 707.5±6.88µs 708.2±9.29µs +0.10%
Set/OptimalMerkleTree::::set_range/100 1817.9±33.52µs 1819.9±36.44µs +0.11%
arkzkey::arkzkey_from_raw_uncompressed 5.8±0.01ms 5.8±0.04ms 0.00%
zkey::zkey_from_raw 656.9±3.50ms 656.1±2.05ms -0.12%

@github-actions

Copy link
Copy Markdown

Benchmark for 70a484f

Click to view benchmark
Test Base PR %
FullMerkleTree::delete 17.2±0.21µs 17.2±0.21µs 0.00%
FullMerkleTree::get 0.8±0.01ns 0.8±0.02ns 0.00%
FullMerkleTree::get_empty_leaves_indices 981.3±5.48µs 981.9±5.66µs +0.06%
FullMerkleTree::get_subtree_root 11.7±0.21ns 11.7±0.10ns 0.00%
FullMerkleTree::override_range 2.0±0.07ms 2.0±0.07ms 0.00%
FullMerkleTree::set 8.6±0.10µs 8.6±0.06µs 0.00%
OptimalMerkleTree::delete 19.5±0.16µs 19.7±0.46µs +1.03%
OptimalMerkleTree::get 50.2±0.40ns 50.7±0.63ns +1.00%
OptimalMerkleTree::get_empty_leaves_indices 984.2±12.42µs 982.2±7.29µs -0.20%
OptimalMerkleTree::get_subtree_root 25.1±0.28ns 25.1±0.24ns 0.00%
OptimalMerkleTree::override_range 3.5±0.15ms 3.5±0.17ms 0.00%
OptimalMerkleTree::set 9.8±0.10µs 10.0±0.94µs +2.04%
poseidon Fr/Array hash/10 137.7±0.26µs 70.9 KElem/sec N/A N/A
poseidon Fr/Array hash/100 1485.6±7.38µs 65.7 KElem/sec N/A N/A
poseidon Fr/Array hash/1000 15.0±0.02ms 65.3 KElem/sec N/A N/A
poseidon Fr/Single hash 13.6±0.01µs 70.0 MElem/sec N/A N/A

@github-actions

Copy link
Copy Markdown

Benchmark for 70a484f

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 11.8±0.06ms 12.1±0.07ms +2.54%
OptimalMerkleTree::::full_height_gen 796.4±8.09µs 778.8±5.93µs -2.21%
Pmtree::get 366.6±4.61ns 372.8±4.52ns +1.69%
Pmtree::get_empty_leaves_indices 8.7±0.08ns 4.7±0.07ns -45.98%
Pmtree::get_subtree_root 515.8±5.11ns 524.5±4.01ns +1.69%
Pmtree::override_range 225.0±6.77µs 223.8±6.38µs -0.53%
Pmtree::set 49.8±0.57µs 50.2±0.57µs +0.80%
Pmtree:delete 49.8±0.49µs 50.2±0.41µs +0.80%
Set/FullMerkleTree::::set/1 516.0±3.59µs 510.0±2.86µs -1.16%
Set/FullMerkleTree::::set/10 5.2±0.01ms 5.1±0.02ms -1.92%
Set/FullMerkleTree::::set/100 51.8±0.14ms 51.5±0.74ms -0.58%
Set/FullMerkleTree::::set_range/1 515.3±5.09µs 513.6±4.98µs -0.33%
Set/FullMerkleTree::::set_range/10 710.0±2.70µs 699.8±4.72µs -1.44%
Set/FullMerkleTree::::set_range/100 1848.0±34.73µs 1852.5±19.90µs +0.24%
Set/OptimalMerkleTree::::set/1 540.3±2.60µs 516.8±4.21µs -4.35%
Set/OptimalMerkleTree::::set/10 5.4±0.00ms 5.2±0.01ms -3.70%
Set/OptimalMerkleTree::::set/100 54.3±0.22ms 51.8±0.16ms -4.60%
Set/OptimalMerkleTree::::set_range/1 564.0±4.23µs 514.8±5.58µs -8.72%
Set/OptimalMerkleTree::::set_range/10 759.1±7.74µs 713.6±10.76µs -5.99%
Set/OptimalMerkleTree::::set_range/100 1851.6±35.70µs 1824.9±42.11µs -1.44%
arkzkey::arkzkey_from_raw_uncompressed 5.8±0.01ms 5.8±0.07ms 0.00%
zkey::zkey_from_raw 656.7±3.41ms 655.8±0.65ms -0.14%

@github-actions

Copy link
Copy Markdown

Benchmark for 70a484f

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 12.5±0.31ms 12.1±0.12ms -3.20%
OptimalMerkleTree::::full_height_gen 794.5±17.64µs 771.6±6.47µs -2.88%
Pmtree::get 383.6±10.76ns 374.7±7.63ns -2.32%
Pmtree::get_empty_leaves_indices 8.7±0.11ns 4.7±0.03ns -45.98%
Pmtree::get_subtree_root 517.9±8.35ns 536.4±7.20ns +3.57%
Pmtree::override_range 229.7±3.74µs 226.9±3.00µs -1.22%
Pmtree::set 50.5±1.23µs 50.5±0.80µs 0.00%
Pmtree:delete 50.5±0.80µs 50.7±0.60µs +0.40%
Set/FullMerkleTree::::set/1 513.7±7.32µs 510.5±3.01µs -0.62%
Set/FullMerkleTree::::set/10 5.1±0.01ms 5.1±0.02ms 0.00%
Set/FullMerkleTree::::set/100 51.6±0.30ms 51.3±0.22ms -0.58%
Set/FullMerkleTree::::set_range/1 511.6±4.82µs 510.3±2.97µs -0.25%
Set/FullMerkleTree::::set_range/10 697.1±9.01µs 695.1±8.33µs -0.29%
Set/FullMerkleTree::::set_range/100 1850.8±35.16µs 1853.5±63.28µs +0.15%
Set/OptimalMerkleTree::::set/1 512.9±5.24µs 513.3±5.72µs +0.08%
Set/OptimalMerkleTree::::set/10 5.1±0.04ms 5.1±0.01ms 0.00%
Set/OptimalMerkleTree::::set/100 51.6±0.16ms 51.8±1.17ms +0.39%
Set/OptimalMerkleTree::::set_range/1 513.7±6.61µs 509.0±3.99µs -0.91%
Set/OptimalMerkleTree::::set_range/10 700.8±8.53µs 704.2±9.32µs +0.49%
Set/OptimalMerkleTree::::set_range/100 1819.7±35.31µs 1819.6±34.22µs -0.01%
zkey::zkey_from_raw 656.2±5.95ms 654.6±3.55ms -0.24%

@github-actions

Copy link
Copy Markdown

Benchmark for b3c12e9

Click to view benchmark
Test Base PR %
FullMerkleTree::delete 17.3±0.13µs 17.2±0.20µs -0.58%
FullMerkleTree::get 0.8±0.01ns 0.8±0.01ns 0.00%
FullMerkleTree::get_empty_leaves_indices 981.6±6.85µs 982.3±7.80µs +0.07%
FullMerkleTree::get_subtree_root 12.2±0.10ns 11.6±0.11ns -4.92%
FullMerkleTree::override_range 2.0±0.06ms 2.0±0.06ms 0.00%
FullMerkleTree::set 8.6±0.07µs 8.6±0.07µs 0.00%
OptimalMerkleTree::delete 19.8±0.72µs 19.7±0.25µs -0.51%
OptimalMerkleTree::get 51.3±0.36ns 51.3±0.40ns 0.00%
OptimalMerkleTree::get_empty_leaves_indices 989.2±52.25µs 981.5±5.83µs -0.78%
OptimalMerkleTree::get_subtree_root 25.4±0.16ns 25.3±1.22ns -0.39%
OptimalMerkleTree::override_range 3.7±0.23ms 3.8±0.20ms +2.70%
OptimalMerkleTree::set 9.9±0.14µs 9.9±0.21µs 0.00%
poseidon Fr/Array hash/10 137.8±0.17µs 70.8 KElem/sec N/A N/A
poseidon Fr/Array hash/100 1490.0±7.75µs 65.5 KElem/sec N/A N/A
poseidon Fr/Array hash/1000 15.0±0.03ms 65.2 KElem/sec N/A N/A
poseidon Fr/Single hash 13.6±0.01µs 70.0 MElem/sec N/A N/A

@github-actions

Copy link
Copy Markdown

Benchmark for b3c12e9

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 12.8±0.26ms 11.6±0.09ms -9.38%
OptimalMerkleTree::::full_height_gen 774.4±6.15µs 774.9±13.55µs +0.06%
Pmtree::get 382.3±8.12ns 375.4±5.38ns -1.80%
Pmtree::get_empty_leaves_indices 8.7±0.08ns 4.7±0.04ns -45.98%
Pmtree::get_subtree_root 512.0±5.10ns 528.0±6.70ns +3.12%
Pmtree::override_range 221.5±2.66µs 224.5±4.30µs +1.35%
Pmtree::set 50.4±0.37µs 51.0±2.80µs +1.19%
Pmtree:delete 50.4±0.45µs 50.7±0.33µs +0.60%
Set/FullMerkleTree::::set/1 510.5±3.41µs 513.2±9.60µs +0.53%
Set/FullMerkleTree::::set/10 5.1±0.01ms 5.1±0.01ms 0.00%
Set/FullMerkleTree::::set/100 51.3±0.11ms 51.6±0.12ms +0.58%
Set/FullMerkleTree::::set_range/1 510.5±4.16µs 512.7±5.36µs +0.43%
Set/FullMerkleTree::::set_range/10 695.3±2.94µs 699.2±1.77µs +0.56%
Set/FullMerkleTree::::set_range/100 1848.9±28.04µs 1847.8±18.18µs -0.06%
Set/OptimalMerkleTree::::set/1 515.6±5.22µs 520.0±2.73µs +0.85%
Set/OptimalMerkleTree::::set/10 5.1±0.02ms 5.1±0.01ms 0.00%
Set/OptimalMerkleTree::::set/100 51.7±0.10ms 51.6±0.47ms -0.19%
Set/OptimalMerkleTree::::set_range/1 514.7±3.00µs 522.1±4.22µs +1.44%
Set/OptimalMerkleTree::::set_range/10 704.1±5.90µs 704.5±9.97µs +0.06%
Set/OptimalMerkleTree::::set_range/100 1821.0±51.52µs 1823.8±37.71µs +0.15%
zkey::zkey_from_raw 657.0±9.62ms 656.6±5.64ms -0.06%

@github-actions

Copy link
Copy Markdown

Benchmark for b3c12e9

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 12.6±0.17ms 13.1±0.17ms +3.97%
OptimalMerkleTree::::full_height_gen 794.7±7.48µs 797.0±5.12µs +0.29%
Pmtree::get 367.7±3.84ns 368.9±5.60ns +0.33%
Pmtree::get_empty_leaves_indices 8.7±0.09ns 4.7±0.09ns -45.98%
Pmtree::get_subtree_root 517.0±7.47ns 526.1±6.05ns +1.76%
Pmtree::override_range 235.2±4.20µs 226.8±4.90µs -3.57%
Pmtree::set 49.8±0.71µs 50.3±1.17µs +1.00%
Pmtree:delete 49.9±0.69µs 50.1±0.53µs +0.40%
Set/FullMerkleTree::::set/1 513.1±6.11µs 512.6±2.64µs -0.10%
Set/FullMerkleTree::::set/10 5.1±0.02ms 5.1±0.02ms 0.00%
Set/FullMerkleTree::::set/100 51.5±0.16ms 51.4±0.16ms -0.19%
Set/FullMerkleTree::::set_range/1 512.2±3.54µs 512.6±4.17µs +0.08%
Set/FullMerkleTree::::set_range/10 699.6±3.25µs 699.8±5.71µs +0.03%
Set/FullMerkleTree::::set_range/100 1853.9±26.39µs 1850.7±21.21µs -0.17%
Set/OptimalMerkleTree::::set/1 516.5±3.12µs 513.3±17.45µs -0.62%
Set/OptimalMerkleTree::::set/10 5.2±0.02ms 5.2±0.02ms 0.00%
Set/OptimalMerkleTree::::set/100 52.0±0.37ms 51.6±0.15ms -0.77%
Set/OptimalMerkleTree::::set_range/1 515.7±3.49µs 514.5±4.82µs -0.23%
Set/OptimalMerkleTree::::set_range/10 711.3±6.24µs 714.5±6.82µs +0.45%
Set/OptimalMerkleTree::::set_range/100 1819.4±35.39µs 1821.0±32.94µs +0.09%
arkzkey::arkzkey_from_raw_uncompressed 5.8±0.01ms 5.8±0.01ms 0.00%
zkey::zkey_from_raw 655.9±1.51ms 658.2±5.33ms +0.35%

Comment thread rln-cli/src/examples/relay.rs Outdated
} else {
println!("DUPLICATE message ID detected! Reveal identity secret hash: {leaked_identity_secret_hash}");
println!(
"DUPLICATE message ID detected! Reveal identity secret hash: ********"

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I think it makes sense to print the secret in the example, because we mostly use it for display, and if we can't show the secret on the screen, it would be weird.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

@sydhds
I think it's fine to keep the code as-is and use the Display macro for IdSecret, since the secret key is just a random value in this example.

Zeroize only clears memory after it's no longer in use—it doesn't protect data while it's active. So keeping the example simple is better, and printing the secret isn't a problem here.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Re added

Comment thread rln/src/protocol.rs Outdated

Ok([
("identitySecret", vec![rln_witness.identity_secret]),
// FIXME

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

what's wrong here?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Pb here is that we are creating a copy of IdSecret (because *rln_witness.identity_secret create a copy of the underlying Fr) so it "leaks" the secret key here. Problem here is the return type of the function [(_, Vec)] as we ideally should return the IdSecret here. Any idea of how to fix this?

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

I'm not sure we can change anything.

the function is used just before the start of the witness calculation and there we need a field element already, not another type

I guess it makes sense to leave a comment here?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

I've added an enum and added some zeroize in iden3calc code. Let me know what you think about this :)

Comment thread rln/src/utils.rs Outdated
Comment thread rln/src/utils.rs Outdated
@sydhds
sydhds requested a review from vinhtc27 June 20, 2025 08:35
Comment thread rln-cli/src/examples/stateless.rs Outdated
for (index, identity) in &self.local_identities {
println!("User Index: {index}");
println!("+ Identity Secret Hash: {}", identity.identity_secret_hash);
println!("+ Identity Secret Hash: ********");

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Same goes for this example

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Re added

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

And re added here too

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Sorry should be good now

Comment thread rln/src/public.rs

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

There are a few Clippy warnings in this file when using the stateless feature, such as with cargo make test_stateless on rln module or in the rln-wasm module.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Should be fixed

Comment thread rln/Cargo.toml Outdated
@github-actions

github-actions Bot commented Jul 7, 2025

Copy link
Copy Markdown

Benchmark for 799be5a

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 11.1±0.06ms 11.9±0.07ms +7.21%
OptimalMerkleTree::::full_height_gen 794.6±21.79µs 792.8±4.56µs -0.23%
Pmtree::get 366.9±3.55ns 371.0±4.58ns +1.12%
Pmtree::get_empty_leaves_indices 8.7±0.12ns 8.7±0.10ns 0.00%
Pmtree::get_subtree_root 522.4±4.51ns 513.7±6.31ns -1.67%
Pmtree::override_range 227.6±3.10µs 224.1±3.90µs -1.54%
Pmtree::set 49.7±0.26µs 50.4±0.72µs +1.41%
Pmtree:delete 49.7±0.32µs 50.3±0.47µs +1.21%
Set/FullMerkleTree::::set/1 511.6±4.72µs 514.2±5.02µs +0.51%
Set/FullMerkleTree::::set/10 5.1±0.07ms 5.2±0.01ms +1.96%
Set/FullMerkleTree::::set/100 51.4±0.18ms 51.7±0.08ms +0.58%
Set/FullMerkleTree::::set_range/1 512.5±3.78µs 515.1±7.70µs +0.51%
Set/FullMerkleTree::::set_range/10 697.8±2.62µs 700.9±4.99µs +0.44%
Set/FullMerkleTree::::set_range/100 1845.8±25.36µs 1845.5±33.38µs -0.02%
Set/OptimalMerkleTree::::set/1 513.6±3.69µs 515.4±3.68µs +0.35%
Set/OptimalMerkleTree::::set/10 5.2±0.02ms 5.2±0.03ms 0.00%
Set/OptimalMerkleTree::::set/100 51.8±0.21ms 51.8±0.22ms 0.00%
Set/OptimalMerkleTree::::set_range/1 513.8±3.21µs 515.5±5.33µs +0.33%
Set/OptimalMerkleTree::::set_range/10 706.5±7.20µs 706.7±9.34µs +0.03%
Set/OptimalMerkleTree::::set_range/100 1819.3±37.14µs 1807.4±43.07µs -0.65%
arkzkey::arkzkey_from_raw_uncompressed 5.9±0.00ms 5.8±0.01ms -1.69%
zkey::zkey_from_raw 654.8±0.27ms 655.4±0.90ms +0.09%

@vinhtc27

vinhtc27 commented Jul 7, 2025

Copy link
Copy Markdown
Contributor

The clippy warnings are about inlining the format args but not sure if we should follow this or not... Wdyt @seemenkina ?

Or you can leave it and merge this PR, I'll resolve it later this week while doing the update CI task for zerokit.
It's similar to the CI workflow from de-mls, where I need to resolve all Clippy warnings to pass CI.

@sydhds
sydhds requested a review from vinhtc27 July 7, 2025 12:22
@seemenkina

Copy link
Copy Markdown
Collaborator

@sydhds There are also some Clippy warning introduced by the latest Rust 1.88 version at:

  • rln-cli/src/main.rs
  • rln/src/circuit/iden3calc.rs

Since they're minor, i think we could address them in this PR as well.

The clippy warnings are about inlining the format args but not sure if we should follow this or not... Wdyt @seemenkina ?

I think it makes sense to follow it. it's not so much to change

@seemenkina

seemenkina commented Jul 7, 2025

Copy link
Copy Markdown
Collaborator

@sydhds just understand that current CI on previous rust version

so let's not change cargo clippy error on this PR

@vinhtc27 you can create separate PR with changes and lint fixes

@sydhds
sydhds force-pushed the secret-hash-zeroize_2 branch from 1aa7cf8 to 503b760 Compare July 8, 2025 07:30
@github-actions

github-actions Bot commented Jul 8, 2025

Copy link
Copy Markdown

Benchmark for 7940167

Click to view benchmark
Test Base PR %
FullMerkleTree::delete 17.2±0.12µs 17.2±0.14µs 0.00%
FullMerkleTree::get 0.8±0.01ns 0.8±0.01ns 0.00%
FullMerkleTree::get_empty_leaves_indices 982.0±7.27µs 981.0±6.69µs -0.10%
FullMerkleTree::get_subtree_root 11.7±0.10ns 11.7±0.10ns 0.00%
FullMerkleTree::override_range 2.0±0.06ms 2.0±0.11ms 0.00%
FullMerkleTree::set 8.6±0.12µs 8.6±0.10µs 0.00%
OptimalMerkleTree::delete 19.8±0.28µs 19.6±0.20µs -1.01%
OptimalMerkleTree::get 51.5±0.40ns 51.0±0.38ns -0.97%
OptimalMerkleTree::get_empty_leaves_indices 982.4±7.80µs 981.0±4.75µs -0.14%
OptimalMerkleTree::get_subtree_root 25.1±0.34ns 25.0±0.41ns -0.40%
OptimalMerkleTree::override_range 5.2±0.21ms 3.8±0.35ms -26.92%
OptimalMerkleTree::set 9.9±0.18µs 9.8±0.09µs -1.01%
poseidon Fr/Array hash/10 137.7±0.25µs 70.9 KElem/sec N/A N/A
poseidon Fr/Array hash/100 1482.1±1.80µs 65.9 KElem/sec N/A N/A
poseidon Fr/Array hash/1000 14.9±0.02ms 65.3 KElem/sec N/A N/A
poseidon Fr/Single hash 14.1±1.94µs 67.8 MElem/sec N/A N/A

@github-actions

github-actions Bot commented Jul 8, 2025

Copy link
Copy Markdown

Benchmark for 7940167

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 12.8±0.29ms 12.7±0.11ms -0.78%
OptimalMerkleTree::::full_height_gen 778.2±6.47µs 778.5±4.00µs +0.04%
Pmtree::get 378.7±4.89ns 379.5±3.46ns +0.21%
Pmtree::get_empty_leaves_indices 8.7±0.07ns 8.7±0.13ns 0.00%
Pmtree::get_subtree_root 509.6±6.52ns 543.0±6.54ns +6.55%
Pmtree::override_range 227.3±3.57µs 228.8±4.26µs +0.66%
Pmtree::set 50.4±0.46µs 50.1±0.74µs -0.60%
Pmtree:delete 50.3±0.39µs 50.1±0.39µs -0.40%
Set/FullMerkleTree::::set/1 510.9±2.73µs 510.2±5.58µs -0.14%
Set/FullMerkleTree::::set/10 5.1±0.06ms 5.1±0.01ms 0.00%
Set/FullMerkleTree::::set/100 51.5±0.67ms 51.3±0.20ms -0.39%
Set/FullMerkleTree::::set_range/1 511.0±4.93µs 512.6±14.33µs +0.31%
Set/FullMerkleTree::::set_range/10 696.1±1.78µs 696.7±2.72µs +0.09%
Set/FullMerkleTree::::set_range/100 1849.0±24.69µs 1847.8±18.87µs -0.06%
Set/OptimalMerkleTree::::set/1 512.7±3.21µs 512.2±3.07µs -0.10%
Set/OptimalMerkleTree::::set/10 5.1±0.02ms 5.1±0.05ms 0.00%
Set/OptimalMerkleTree::::set/100 51.7±0.91ms 51.6±0.11ms -0.19%
Set/OptimalMerkleTree::::set_range/1 513.0±3.11µs 514.5±9.71µs +0.29%
Set/OptimalMerkleTree::::set_range/10 704.7±6.79µs 705.0±5.12µs +0.04%
Set/OptimalMerkleTree::::set_range/100 1818.5±39.58µs 1816.1±29.78µs -0.13%
zkey::zkey_from_raw 654.7±2.65ms 654.7±1.53ms 0.00%

@github-actions

github-actions Bot commented Jul 8, 2025

Copy link
Copy Markdown

Benchmark for 7940167

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_height_gen 12.5±0.11ms 12.5±0.10ms 0.00%
OptimalMerkleTree::::full_height_gen 777.9±5.53µs 778.2±3.92µs +0.04%
Pmtree::get 367.7±4.30ns 368.5±5.62ns +0.22%
Pmtree::get_empty_leaves_indices 8.7±0.05ns 8.7±0.12ns 0.00%
Pmtree::get_subtree_root 523.8±18.62ns 515.0±4.71ns -1.68%
Pmtree::override_range 232.1±4.61µs 221.9±2.95µs -4.39%
Pmtree::set 50.0±1.94µs 50.4±0.80µs +0.80%
Pmtree:delete 49.8±0.49µs 50.4±0.90µs +1.20%
Set/FullMerkleTree::::set/1 512.1±3.99µs 513.1±4.21µs +0.20%
Set/FullMerkleTree::::set/10 5.1±0.01ms 5.1±0.01ms 0.00%
Set/FullMerkleTree::::set/100 51.5±0.11ms 51.6±0.07ms +0.19%
Set/FullMerkleTree::::set_range/1 518.3±29.29µs 513.2±3.00µs -0.98%
Set/FullMerkleTree::::set_range/10 699.9±2.99µs 701.4±4.10µs +0.21%
Set/FullMerkleTree::::set_range/100 1842.5±27.24µs 1844.3±26.11µs +0.10%
Set/OptimalMerkleTree::::set/1 514.6±4.40µs 517.2±14.60µs +0.51%
Set/OptimalMerkleTree::::set/10 5.2±0.01ms 5.2±0.01ms 0.00%
Set/OptimalMerkleTree::::set/100 52.2±2.74ms 51.9±0.15ms -0.57%
Set/OptimalMerkleTree::::set_range/1 515.1±4.51µs 515.2±2.98µs +0.02%
Set/OptimalMerkleTree::::set_range/10 705.6±8.82µs 703.0±7.57µs -0.37%
Set/OptimalMerkleTree::::set_range/100 1813.2±36.07µs 1809.6±35.10µs -0.20%
arkzkey::arkzkey_from_raw_uncompressed 5.8±0.00ms 5.8±0.00ms 0.00%
zkey::zkey_from_raw 655.4±2.05ms 655.4±1.94ms 0.00%

@seemenkina
seemenkina self-requested a review July 8, 2025 07:40
@sydhds
sydhds merged commit 65f53e3 into master Jul 8, 2025
18 checks passed
@sydhds
sydhds deleted the secret-hash-zeroize_2 branch July 8, 2025 07:48
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.

3 participants