Skip to content

refactor: serialize trait for all RLN types#396

Open
vinhtc27 wants to merge 4 commits intomasterfrom
refactor/serialize-trait-for-rln-types
Open

refactor: serialize trait for all RLN types#396
vinhtc27 wants to merge 4 commits intomasterfrom
refactor/serialize-trait-for-rln-types

Conversation

@vinhtc27
Copy link
Contributor

Changes

  • Added Serialize trait and implemented for all RLN types.
  • Cleanup cargo doc --open warning.
  • Replaced em dashes with en dashes.

@github-actions
Copy link

Benchmark for 741af8f

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_depth_gen 12.9±0.12ms 11.7±0.20ms -9.30%
OptimalMerkleTree::::full_depth_gen 689.6±10.74µs 686.4±10.37µs -0.46%
Pmtree::delete 50.9±0.69µs 50.4±0.53µs -0.98%
Pmtree::get 290.0±8.33ns 293.0±4.46ns +1.03%
Pmtree::get_empty_leaves_indices 8.4±0.14ns 8.4±0.09ns 0.00%
Pmtree::get_subtree_root 374.4±8.73ns 371.7±6.45ns -0.72%
Pmtree::override_range 103.5±1.63µs 103.7±0.51µs +0.19%
Pmtree::set 50.8±0.53µs 50.5±0.62µs -0.59%
Set/FullMerkleTree::::set/1 518.0±4.61µs 516.1±11.76µs -0.37%
Set/FullMerkleTree::::set/10 5.2±0.01ms 5.2±0.12ms 0.00%
Set/FullMerkleTree::::set/100 52.3±0.80ms 52.0±0.08ms -0.57%
Set/FullMerkleTree::::set_range/1 515.5±3.93µs 517.7±5.51µs +0.43%
Set/FullMerkleTree::::set_range/10 708.5±4.72µs 707.0±3.91µs -0.21%
Set/FullMerkleTree::::set_range/100 1862.9±34.25µs 1865.0±35.83µs +0.11%
Set/OptimalMerkleTree::::set/1 519.3±5.18µs 518.7±7.18µs -0.12%
Set/OptimalMerkleTree::::set/10 5.2±0.01ms 5.2±0.08ms 0.00%
Set/OptimalMerkleTree::::set/100 52.3±0.13ms 52.2±0.16ms -0.19%
Set/OptimalMerkleTree::::set_range/1 519.4±5.80µs 518.7±5.54µs -0.13%
Set/OptimalMerkleTree::::set_range/10 725.9±13.91µs 737.3±35.65µs +1.57%
Set/OptimalMerkleTree::::set_range/100 1822.0±37.80µs 1821.9±42.20µs -0.01%
rln_finish_partial_proof 67.7±0.83ms 67.5±0.74ms -0.30%
rln_full_proof 184.7±1.73ms 184.5±1.57ms -0.11%
rln_partial_proof_generation 128.0±1.17ms 128.8±3.99ms +0.62%

@github-actions
Copy link

Benchmark for 741af8f

Click to view benchmark
Test Base PR %
FullMerkleTree::delete 16.9±0.26µs 17.0±0.46µs +0.59%
FullMerkleTree::get 0.8±0.01ns 0.8±0.01ns 0.00%
FullMerkleTree::get_empty_leaves_indices 981.5±3.95µs 981.8±8.29µs +0.03%
FullMerkleTree::get_subtree_root 11.6±0.09ns 11.6±0.11ns 0.00%
FullMerkleTree::override_range 2.2±0.07ms 2.3±0.08ms +4.55%
FullMerkleTree::set 8.5±0.14µs 8.5±0.12µs 0.00%
OptimalMerkleTree::delete 19.7±0.28µs 19.8±0.28µs +0.51%
OptimalMerkleTree::get 50.7±0.26ns 51.1±0.47ns +0.79%
OptimalMerkleTree::get_empty_leaves_indices 984.2±18.72µs 984.6±17.17µs +0.04%
OptimalMerkleTree::get_subtree_root 25.9±0.41ns 25.9±0.67ns 0.00%
OptimalMerkleTree::override_range 4.5±0.22ms 4.9±0.33ms +8.89%
OptimalMerkleTree::set 10.0±0.54µs 10.0±0.20µs 0.00%
poseidon Fr/Array hash/10 139.1±0.16µs 70.2 KElem/sec N/A N/A
poseidon Fr/Array hash/100 1499.5±3.31µs 65.1 KElem/sec N/A N/A
poseidon Fr/Array hash/1000 15.1±0.03ms 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 612.4±36.35µs 616.7±58.25µs +0.70%
validate_override_range/FullMerkleTree/override_range/64 93.9±10.52µs 100.7±16.70µs +7.24%
validate_override_range/FullMerkleTree/override_range/65536 439.2±1.63ms 435.6±2.23ms -0.82%
validate_override_range/FullMerkleTree/override_range/8192 8.9±0.10ms 8.9±0.19ms 0.00%
validate_override_range/OptimalMerkleTree/override_range/1024 789.8±35.64µs 828.2±98.69µs +4.86%
validate_override_range/OptimalMerkleTree/override_range/64 125.5±19.51µs 144.3±25.36µs +14.98%
validate_override_range/OptimalMerkleTree/override_range/65536 462.0±3.45ms 462.5±3.24ms +0.11%
validate_override_range/OptimalMerkleTree/override_range/8192 10.2±0.36ms 10.2±0.28ms 0.00%
validate_override_range/validate_only/1024 8.0±0.12µs 10.7±0.32µs +33.75%
validate_override_range/validate_only/64 353.2±18.63ns 348.8±1.92ns -1.25%
validate_override_range/validate_only/65536 842.3±7.23µs 847.0±8.39µs +0.56%
validate_override_range/validate_only/8192 103.7±0.82µs 103.0±5.79µs -0.68%

@vinhtc27 vinhtc27 requested a review from seemenkina March 23, 2026 08:20
@github-actions
Copy link

Benchmark for 46e9d82

Click to view benchmark
Test Base PR %
FullMerkleTree::::full_depth_gen 12.8±0.09ms 11.9±0.13ms -7.03%
OptimalMerkleTree::::full_depth_gen 697.3±8.66µs 701.4±9.27µs +0.59%
Pmtree::delete 50.7±0.50µs 50.5±0.26µs -0.39%
Pmtree::get 286.5±4.83ns 299.9±6.06ns +4.68%
Pmtree::get_empty_leaves_indices 8.4±0.15ns 8.4±0.12ns 0.00%
Pmtree::get_subtree_root 361.6±7.40ns 382.0±8.35ns +5.64%
Pmtree::override_range 100.4±0.64µs 100.4±1.18µs 0.00%
Pmtree::set 50.7±0.54µs 50.4±0.26µs -0.59%
Set/FullMerkleTree::::set/1 518.5±5.65µs 518.6±4.99µs +0.02%
Set/FullMerkleTree::::set/10 5.2±0.01ms 5.2±0.01ms 0.00%
Set/FullMerkleTree::::set/100 52.1±0.15ms 52.1±0.11ms 0.00%
Set/FullMerkleTree::::set_range/1 518.0±5.35µs 518.7±6.12µs +0.14%
Set/FullMerkleTree::::set_range/10 707.7±3.77µs 709.3±14.67µs +0.23%
Set/FullMerkleTree::::set_range/100 1857.3±40.82µs 1858.9±35.32µs +0.09%
Set/OptimalMerkleTree::::set/1 519.6±4.26µs 519.9±6.63µs +0.06%
Set/OptimalMerkleTree::::set/10 5.2±0.20ms 5.2±0.01ms 0.00%
Set/OptimalMerkleTree::::set/100 52.2±0.15ms 52.1±0.29ms -0.19%
Set/OptimalMerkleTree::::set_range/1 518.9±2.97µs 519.0±3.90µs +0.02%
Set/OptimalMerkleTree::::set_range/10 718.1±6.07µs 720.0±7.71µs +0.26%
Set/OptimalMerkleTree::::set_range/100 1808.3±39.88µs 1825.3±52.02µs +0.94%
rln_finish_partial_proof 67.5±0.92ms 67.8±0.84ms +0.44%
rln_full_proof 186.0±8.41ms 186.5±7.00ms +0.27%
rln_partial_proof_generation 128.1±1.12ms 128.5±3.01ms +0.31%

@github-actions
Copy link

Benchmark for 46e9d82

Click to view benchmark
Test Base PR %
FullMerkleTree::delete 16.9±0.23µs 17.0±0.22µs +0.59%
FullMerkleTree::get 0.8±0.01ns 0.8±0.02ns 0.00%
FullMerkleTree::get_empty_leaves_indices 991.8±48.39µs 981.5±6.17µs -1.04%
FullMerkleTree::get_subtree_root 11.7±0.89ns 11.7±0.38ns 0.00%
FullMerkleTree::override_range 2.2±0.06ms 2.3±0.06ms +4.55%
FullMerkleTree::set 8.5±0.54µs 8.5±0.10µs 0.00%
OptimalMerkleTree::delete 19.7±0.28µs 20.1±0.57µs +2.03%
OptimalMerkleTree::get 51.0±0.26ns 50.3±0.30ns -1.37%
OptimalMerkleTree::get_empty_leaves_indices 981.8±5.87µs 982.5±8.34µs +0.07%
OptimalMerkleTree::get_subtree_root 26.1±1.34ns 26.2±0.46ns +0.38%
OptimalMerkleTree::override_range 4.1±0.25ms 4.4±0.47ms +7.32%
OptimalMerkleTree::set 9.9±0.38µs 10.1±0.14µs +2.02%
poseidon Fr/Array hash/10 138.5±0.27µs 70.5 KElem/sec N/A N/A
poseidon Fr/Array hash/100 1494.3±1.34µs 65.4 KElem/sec N/A N/A
poseidon Fr/Array hash/1000 15.3±0.81ms 63.9 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 608.6±30.07µs 623.2±69.42µs +2.40%
validate_override_range/FullMerkleTree/override_range/64 95.2±12.21µs 95.7±14.12µs +0.53%
validate_override_range/FullMerkleTree/override_range/65536 437.4±4.94ms 436.1±1.69ms -0.30%
validate_override_range/FullMerkleTree/override_range/8192 8.9±0.05ms 8.9±0.06ms 0.00%
validate_override_range/OptimalMerkleTree/override_range/1024 796.1±40.34µs 796.6±29.15µs +0.06%
validate_override_range/OptimalMerkleTree/override_range/64 123.6±15.65µs 127.1±20.10µs +2.83%
validate_override_range/OptimalMerkleTree/override_range/65536 457.5±3.99ms 453.9±3.51ms -0.79%
validate_override_range/OptimalMerkleTree/override_range/8192 10.2±0.03ms 10.2±0.11ms 0.00%
validate_override_range/validate_only/1024 8.0±0.11µs 8.0±0.13µs 0.00%
validate_override_range/validate_only/64 355.0±3.81ns 348.2±4.99ns -1.92%
validate_override_range/validate_only/65536 842.5±8.75µs 842.2±8.61µs -0.04%
validate_override_range/validate_only/8192 102.8±2.75µs 113.0±1.65µs +9.92%

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.

1 participant