sonobe-playground/README.md
README.mdRaw
1# sonobe-playground
2
3## Current state
4
5- ✅ Nova folding
6- ✅ HyperNova without multifolding (μ = ν = 0)
7- ✅ HyperNova multifolding (μ, ν ≥ 1)
8
9## Reproduce
10
11```bash
12make prepare-circuit
13make run
14```
15
16### Setting
17
18- Use BN254-Grumpkin curves
19- Use Circom-defined circuit with 256 step inputs and state width of 2.
20The circuit just copies old state to the new one.
21- There are 360 steps in total (although, for multifolding there will be less)
22
23### Machine used for benchmarks
24
25AWS EC2 type `c6a.8xlarge` (32 vCPU, 64 GiB RAM)
26
27### Benchmarked schemes:
28
29- `Nova`
30- `HyperNova<M, N>` with `M`, `N` from `{1, 2, 3, 4, 5, 6}`, excluding few configurations (those batching steps by either 7 or 11, which wouldn't cover all 360 inputs - technical detail)
31
32### Results
33
34```
35Elapsed (wall clock) time (h:mm:ss or m:ss): 4:57:40
36Maximum resident set size (kbytes): 2 072 392
37```
38
39<img src="hn-grid.png">
40
41```
42Prepare input: 0.014000 seconds
43Prepare circuit: 0.000064 seconds
44Nova total time: 110.000000 seconds
45HyperNova<1,1> total time: 428.000000 seconds
46HyperNova<1,2> total time: 434.000000 seconds
47HyperNova<1,3> total time: 496.000000 seconds
48HyperNova<1,4> total time: 517.000000 seconds
49HyperNova<1,5> total time: 537.000000 seconds
50HyperNova<1,6> total time: 562.000000 seconds
51HyperNova<2,1> total time: 499.000000 seconds
52HyperNova<2,2> total time: 514.000000 seconds
53HyperNova<2,3> total time: 535.000000 seconds
54HyperNova<2,4> total time: 555.000000 seconds
55HyperNova<2,5> total time: 579.000000 seconds
56HyperNova<3,1> total time: 534.000000 seconds
57HyperNova<3,2> total time: 551.000000 seconds
58HyperNova<3,3> total time: 576.000000 seconds
59HyperNova<3,4> total time: 594.000000 seconds
60HyperNova<3,6> total time: 640.000000 seconds
61HyperNova<4,1> total time: 567.000000 seconds
62HyperNova<4,2> total time: 589.000000 seconds
63HyperNova<4,3> total time: 609.000000 seconds
64HyperNova<4,5> total time: 657.000000 seconds
65HyperNova<4,6> total time: 681.000000 seconds
66HyperNova<5,1> total time: 604.000000 seconds
67HyperNova<5,2> total time: 627.000000 seconds
68HyperNova<5,4> total time: 673.000000 seconds
69HyperNova<5,5> total time: 696.000000 seconds
70HyperNova<5,6> total time: 719.000000 seconds
71HyperNova<6,1> total time: 643.000000 seconds
72HyperNova<6,3> total time: 690.000000 seconds
73HyperNova<6,4> total time: 710.000000 seconds
74HyperNova<6,5> total time: 734.000000 seconds
75
76--------------------------------------------------------------------------------
77Scenario: Nova
78 Prepare folding: 1.440000 seconds
79 Transform input: 0.000000 seconds
80 Folding verification: 0.019500 seconds
81 Folding Steps:
82 Input preparation
83 Avg: 0.000139 seconds
84 Min: 0.000001 seconds
85 Max: 0.000294 seconds
86 Proving
87 Avg: 0.302000 seconds
88 Min: 0.234000 seconds
89 Max: 0.312000 seconds
90--------------------------------------------------------------------------------
91Scenario: HyperNova<1,1>
92 Prepare folding: 2.950000 seconds
93 Transform input: 0.000000 seconds
94 Folding verification: 0.031900 seconds
95 Folding Steps:
96 Input preparation
97 Avg: 0.000013 seconds
98 Min: 0.000002 seconds
99 Max: 0.000365 seconds
100 Proving
101 Avg: 1.179806 seconds
102 Min: 1.070000 seconds
103 Max: 1.200000 seconds
104--------------------------------------------------------------------------------
105Scenario: HyperNova<1,2>
106 Prepare folding: 3.220000 seconds
107 Transform input: 0.000000 seconds
108 Folding verification: 0.032700 seconds
109 Folding Steps:
110 Input preparation
111 Avg: 1.115444 seconds
112 Min: 1.110000 seconds
113 Max: 1.130000 seconds
114 Proving
115 Avg: 1.278167 seconds
116 Min: 1.130000 seconds
117 Max: 1.300000 seconds
118--------------------------------------------------------------------------------
119Scenario: HyperNova<1,3>
120 Prepare folding: 3.690000 seconds
121 Transform input: 0.000000 seconds
122 Folding verification: 0.045900 seconds
123 Folding Steps:
124 Input preparation
125 Avg: 2.554167 seconds
126 Min: 2.540000 seconds
127 Max: 2.590000 seconds
128 Proving
129 Avg: 1.546583 seconds
130 Min: 1.290000 seconds
131 Max: 1.570000 seconds
132--------------------------------------------------------------------------------
133Scenario: HyperNova<1,4>
134 Prepare folding: 4.080000 seconds
135 Transform input: 0.000000 seconds
136 Folding verification: 0.044400 seconds
137 Folding Steps:
138 Input preparation
139 Avg: 4.033000 seconds
140 Min: 4.010000 seconds
141 Max: 4.060000 seconds
142 Proving
143 Avg: 1.665222 seconds
144 Min: 1.350000 seconds
145 Max: 1.680000 seconds
146--------------------------------------------------------------------------------
147Scenario: HyperNova<1,5>
148 Prepare folding: 4.350000 seconds
149 Transform input: 0.000000 seconds
150 Folding verification: 0.047000 seconds
151 Folding Steps:
152 Input preparation
153 Avg: 5.621528 seconds
154 Min: 5.600000 seconds
155 Max: 5.650000 seconds
156 Proving
157 Avg: 1.777222 seconds
158 Min: 1.400000 seconds
159 Max: 1.800000 seconds
160--------------------------------------------------------------------------------
161Scenario: HyperNova<1,6>
162 Prepare folding: 4.830000 seconds
163 Transform input: 0.000000 seconds
164 Folding verification: 0.051500 seconds
165 Folding Steps:
166 Input preparation
167 Avg: 7.383000 seconds
168 Min: 7.360000 seconds
169 Max: 7.410000 seconds
170 Proving
171 Avg: 1.905667 seconds
172 Min: 1.490000 seconds
173 Max: 1.940000 seconds
174--------------------------------------------------------------------------------
175Scenario: HyperNova<2,1>
176 Prepare folding: 3.480000 seconds
177 Transform input: 0.000000 seconds
178 Folding verification: 0.039800 seconds
179 Folding Steps:
180 Input preparation
181 Avg: 1.270000 seconds
182 Min: 1.260000 seconds
183 Max: 1.290000 seconds
184 Proving
185 Avg: 1.480500 seconds
186 Min: 1.260000 seconds
187 Max: 1.490000 seconds
188--------------------------------------------------------------------------------
189Scenario: HyperNova<2,2>
190 Prepare folding: 3.760000 seconds
191 Transform input: 0.000000 seconds
192 Folding verification: 0.041700 seconds
193 Folding Steps:
194 Input preparation
195 Avg: 2.651750 seconds
196 Min: 2.630000 seconds
197 Max: 2.680000 seconds
198 Proving
199 Avg: 1.595167 seconds
200 Min: 1.310000 seconds
201 Max: 1.620000 seconds
202--------------------------------------------------------------------------------
203Scenario: HyperNova<2,3>
204 Prepare folding: 4.180000 seconds
205 Transform input: 0.000000 seconds
206 Folding verification: 0.045100 seconds
207 Folding Steps:
208 Input preparation
209 Avg: 4.177667 seconds
210 Min: 4.150000 seconds
211 Max: 4.220000 seconds
212 Proving
213 Avg: 1.719333 seconds
214 Min: 1.400000 seconds
215 Max: 1.740000 seconds
216--------------------------------------------------------------------------------
217Scenario: HyperNova<2,4>
218 Prepare folding: 4.480000 seconds
219 Transform input: 0.000000 seconds
220 Folding verification: 0.046900 seconds
221 Folding Steps:
222 Input preparation
223 Avg: 5.813194 seconds
224 Min: 5.780000 seconds
225 Max: 5.850000 seconds
226 Proving
227 Avg: 1.830694 seconds
228 Min: 1.460000 seconds
229 Max: 1.850000 seconds
230--------------------------------------------------------------------------------
231Scenario: HyperNova<2,5>
232 Prepare folding: 4.950000 seconds
233 Transform input: 0.000000 seconds
234 Folding verification: 0.049800 seconds
235 Folding Steps:
236 Input preparation
237 Avg: 7.599833 seconds
238 Min: 7.560000 seconds
239 Max: 7.650000 seconds
240 Proving
241 Avg: 1.960333 seconds
242 Min: 1.530000 seconds
243 Max: 2.000000 seconds
244--------------------------------------------------------------------------------
245Scenario: HyperNova<3,1>
246 Prepare folding: 3.870000 seconds
247 Transform input: 0.000000 seconds
248 Folding verification: 0.043300 seconds
249 Folding Steps:
250 Input preparation
251 Avg: 2.761000 seconds
252 Min: 2.740000 seconds
253 Max: 2.790000 seconds
254 Proving
255 Avg: 1.653917 seconds
256 Min: 1.360000 seconds
257 Max: 1.680000 seconds
258--------------------------------------------------------------------------------
259Scenario: HyperNova<3,2>
260 Prepare folding: 4.270000 seconds
261 Transform input: 0.000000 seconds
262 Folding verification: 0.046000 seconds
263 Folding Steps:
264 Input preparation
265 Avg: 4.308778 seconds
266 Min: 4.280000 seconds
267 Max: 4.360000 seconds
268 Proving
269 Avg: 1.769889 seconds
270 Min: 1.420000 seconds
271 Max: 1.810000 seconds
272--------------------------------------------------------------------------------
273Scenario: HyperNova<3,3>
274 Prepare folding: 4.600000 seconds
275 Transform input: 0.000000 seconds
276 Folding verification: 0.048500 seconds
277 Folding Steps:
278 Input preparation
279 Avg: 6.028472 seconds
280 Min: 6.000000 seconds
281 Max: 6.080000 seconds
282 Proving
283 Avg: 1.900278 seconds
284 Min: 1.500000 seconds
285 Max: 1.930000 seconds
286--------------------------------------------------------------------------------
287Scenario: HyperNova<3,4>
288 Prepare folding: 5.050000 seconds
289 Transform input: 0.000000 seconds
290 Folding verification: 0.049700 seconds
291 Folding Steps:
292 Input preparation
293 Avg: 7.806833 seconds
294 Min: 7.760000 seconds
295 Max: 7.850000 seconds
296 Proving
297 Avg: 2.010500 seconds
298 Min: 1.560000 seconds
299 Max: 2.050000 seconds
300--------------------------------------------------------------------------------
301Scenario: HyperNova<3,6>
302 Prepare folding: 5.890000 seconds
303 Transform input: 0.000000 seconds
304 Folding verification: 0.055100 seconds
305 Folding Steps:
306 Input preparation
307 Avg: 11.815556 seconds
308 Min: 11.800000 seconds
309 Max: 11.900000 seconds
310 Proving
311 Avg: 2.272444 seconds
312 Min: 1.680000 seconds
313 Max: 2.310000 seconds
314--------------------------------------------------------------------------------
315Scenario: HyperNova<4,1>
316 Prepare folding: 4.390000 seconds
317 Transform input: 0.000000 seconds
318 Folding verification: 0.047000 seconds
319 Folding Steps:
320 Input preparation
321 Avg: 4.431778 seconds
322 Min: 4.400000 seconds
323 Max: 4.460000 seconds
324 Proving
325 Avg: 1.813444 seconds
326 Min: 1.450000 seconds
327 Max: 1.840000 seconds
328--------------------------------------------------------------------------------
329Scenario: HyperNova<4,2>
330 Prepare folding: 4.680000 seconds
331 Transform input: 0.000000 seconds
332 Folding verification: 0.049800 seconds
333 Folding Steps:
334 Input preparation
335 Avg: 6.173333 seconds
336 Min: 6.130000 seconds
337 Max: 6.220000 seconds
338 Proving
339 Avg: 1.937778 seconds
340 Min: 1.540000 seconds
341 Max: 1.960000 seconds
342--------------------------------------------------------------------------------
343Scenario: HyperNova<4,3>
344 Prepare folding: 5.130000 seconds
345 Transform input: 0.000000 seconds
346 Folding verification: 0.052500 seconds
347 Folding Steps:
348 Input preparation
349 Avg: 8.005333 seconds
350 Min: 7.970000 seconds
351 Max: 8.040000 seconds
352 Proving
353 Avg: 2.053833 seconds
354 Min: 1.590000 seconds
355 Max: 2.090000 seconds
356--------------------------------------------------------------------------------
357Scenario: HyperNova<4,5>
358 Prepare folding: 6.010000 seconds
359 Transform input: 0.000000 seconds
360 Folding verification: 0.056800 seconds
361 Folding Steps:
362 Input preparation
363 Avg: 12.133333 seconds
364 Min: 12.100000 seconds
365 Max: 12.200000 seconds
366 Proving
367 Avg: 2.320222 seconds
368 Min: 1.720000 seconds
369 Max: 2.370000 seconds
370--------------------------------------------------------------------------------
371Scenario: HyperNova<4,6>
372 Prepare folding: 6.320000 seconds
373 Transform input: 0.000000 seconds
374 Folding verification: 0.057600 seconds
375 Folding Steps:
376 Input preparation
377 Avg: 14.390000 seconds
378 Min: 14.300000 seconds
379 Max: 14.500000 seconds
380 Proving
381 Avg: 2.462750 seconds
382 Min: 1.810000 seconds
383 Max: 2.510000 seconds
384--------------------------------------------------------------------------------
385Scenario: HyperNova<5,1>
386 Prepare folding: 4.930000 seconds
387 Transform input: 0.000000 seconds
388 Folding verification: 0.049600 seconds
389 Folding Steps:
390 Input preparation
391 Avg: 6.337500 seconds
392 Min: 6.300000 seconds
393 Max: 6.380000 seconds
394 Proving
395 Avg: 1.988333 seconds
396 Min: 1.560000 seconds
397 Max: 2.010000 seconds
398--------------------------------------------------------------------------------
399Scenario: HyperNova<5,2>
400 Prepare folding: 5.270000 seconds
401 Transform input: 0.000000 seconds
402 Folding verification: 0.051400 seconds
403 Folding Steps:
404 Input preparation
405 Avg: 8.257000 seconds
406 Min: 8.210000 seconds
407 Max: 8.320000 seconds
408 Proving
409 Avg: 2.111000 seconds
410 Min: 1.630000 seconds
411 Max: 2.140000 seconds
412--------------------------------------------------------------------------------
413Scenario: HyperNova<5,4>
414 Prepare folding: 6.110000 seconds
415 Transform input: 0.000000 seconds
416 Folding verification: 0.059200 seconds
417 Folding Steps:
418 Input preparation
419 Avg: 12.437778 seconds
420 Min: 12.400000 seconds
421 Max: 12.500000 seconds
422 Proving
423 Avg: 2.382667 seconds
424 Min: 1.770000 seconds
425 Max: 2.430000 seconds
426--------------------------------------------------------------------------------
427Scenario: HyperNova<5,5>
428 Prepare folding: 6.440000 seconds
429 Transform input: 0.000000 seconds
430 Folding verification: 0.058500 seconds
431 Folding Steps:
432 Input preparation
433 Avg: 14.712500 seconds
434 Min: 14.700000 seconds
435 Max: 14.800000 seconds
436 Proving
437 Avg: 2.513000 seconds
438 Min: 1.830000 seconds
439 Max: 2.550000 seconds
440--------------------------------------------------------------------------------
441Scenario: HyperNova<5,6>
442 Prepare folding: 6.750000 seconds
443 Transform input: 0.000000 seconds
444 Folding verification: 0.062700 seconds
445 Folding Steps:
446 Input preparation
447 Avg: 17.125000 seconds
448 Min: 17.100000 seconds
449 Max: 17.200000 seconds
450 Proving
451 Avg: 2.643889 seconds
452 Min: 1.900000 seconds
453 Max: 2.690000 seconds
454--------------------------------------------------------------------------------
455Scenario: HyperNova<6,1>
456 Prepare folding: 5.360000 seconds
457 Transform input: 0.000000 seconds
458 Folding verification: 0.051300 seconds
459 Folding Steps:
460 Input preparation
461 Avg: 8.461167 seconds
462 Min: 8.420000 seconds
463 Max: 8.500000 seconds
464 Proving
465 Avg: 2.161333 seconds
466 Min: 1.680000 seconds
467 Max: 2.190000 seconds
468--------------------------------------------------------------------------------
469Scenario: HyperNova<6,3>
470 Prepare folding: 6.250000 seconds
471 Transform input: 0.000000 seconds
472 Folding verification: 0.057400 seconds
473 Folding Steps:
474 Input preparation
475 Avg: 12.748889 seconds
476 Min: 12.700000 seconds
477 Max: 12.800000 seconds
478 Proving
479 Avg: 2.433111 seconds
480 Min: 1.820000 seconds
481 Max: 2.470000 seconds
482--------------------------------------------------------------------------------
483Scenario: HyperNova<6,4>
484 Prepare folding: 6.530000 seconds
485 Transform input: 0.000000 seconds
486 Folding verification: 0.058700 seconds
487 Folding Steps:
488 Input preparation
489 Avg: 15.055000 seconds
490 Min: 15.000000 seconds
491 Max: 15.100000 seconds
492 Proving
493 Avg: 2.555500 seconds
494 Min: 1.880000 seconds
495 Max: 2.590000 seconds
496--------------------------------------------------------------------------------
497Scenario: HyperNova<6,5>
498 Prepare folding: 6.890000 seconds
499 Transform input: 0.000000 seconds
500 Folding verification: 0.060100 seconds
501 Folding Steps:
502 Input preparation
503 Avg: 17.511111 seconds
504 Min: 17.400000 seconds
505 Max: 17.600000 seconds
506 Proving
507 Avg: 2.689167 seconds
508 Min: 1.940000 seconds
509 Max: 2.730000 seconds
510```