Skip to content

Conversation

@ggwpez
Copy link
Member

@ggwpez ggwpez commented Jan 16, 2026

To measure the impact of optimizing the proof batching more precisely.

Changes:

  • Remove small-ring feature gate but instead use Rust generics
  • Run benchmarks repetitively to get more accurate results
  • Add benchmark script for Parity ref hardware for comparable numbers

Finding: Commitment encoding for the full ring is very slow; 2572 ms on reference hardware 😢

Small ring on reference hardware:

* PCS params decode (1000 reps): 13 ms
* Open (10 reps): 20 ms
  Commitment size: 386867 bytes
* Commitment encode (100 reps): 0 ms
* Commitment decode (5 reps): 96 ms
* Create: 68 ms
  Proof size: 788 bytes
* Start members (1000 reps): 0 ms
* Push members (1000 reps): 13 ms
* Finish members (100 reps): 0 ms
* Validate (100 reps): 12 ms
* Alias (1000 reps): 0 ms

Big ring:

* PCS params decode (1000 reps): 40 ms
* Open (10 reps): 195 ms
  Commitment size: 12322611 bytes
* Commitment encode (100 reps): 13 ms
* Commitment decode (5 reps): 2572 ms
* Create: 790 ms
  Proof size: 788 bytes
* Start members (1000 reps): 0 ms
* Push members (1000 reps): 12 ms
* Finish members (100 reps): 0 ms
* Validate (100 reps): 29 ms
* Alias (1000 reps): 0 ms

Signed-off-by: Oliver Tale-Yazdi <[email protected]>
# Small ring 255, default to 16127
small-ring = []
# Prover for no-std environments with deterministic ring-proof.
# Not for production, may be useful for testing.
Copy link
Member Author

Choose a reason for hiding this comment

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

Why? FRAME is single threaded so a spin lock wont slow us down.

Signed-off-by: Oliver Tale-Yazdi <[email protected]>
Signed-off-by: Oliver Tale-Yazdi <[email protected]>
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