# VRS Benchmarks ## New Results Multi-threaded: ``` ℹ️ VID Benchmark 🔔 FRIDA l, k, n, prover (ms), communication (byte), verifier (ms) 2048, 64, 128, 431, 2960961, 5 4096, 64, 128, 699, 5844545, 7 8192, 64, 128, 1188, 11611713, 9 16384, 64, 128, 2455, 23146049, 16 32768, 64, 128, 4954, 46214721, 27 🔔 Advz l, k, n, prover (ms), communication (byte), verifier (ms) 2048, 64, 128, 1097, 131480, 10 4096, 64, 128, 1784, 262552, 16 8192, 64, 128, 3479, 524696, 32 16384, 64, 128, 7262, 1048984, 42 32768, 64, 128, 11342, 2097560, 103 🔔 KzgNNT l, k, n, prover (ms), communication (byte), verifier (ms) 2048, 64, 128, 150, 4104, 9 4096, 64, 128, 274, 4104, 16 8192, 64, 128, 350, 4104, 15 16384, 64, 128, 703, 4104, 29 32768, 64, 128, 1330, 4104, 66 🔔 PedersenNNT l, k, n, prover (ms), communication (byte), verifier (ms) 2048, 64, 128, 220, 4104, 7 4096, 64, 128, 267, 4104, 11 8192, 64, 128, 559, 4104, 17 16384, 64, 128, 869, 4104, 28 32768, 64, 128, 1449, 4104, 58 🔔 Gxz + PST l, k, n, prover (ms), communication (byte), verifier (ms) 2048, 64, 128, 829, 3048, 22 4096, 64, 128, 1289, 3144, 22 8192, 64, 128, 2231, 3240, 20 16384, 64, 128, 3934, 3336, 20 32768, 64, 128, 7684, 3432, 25 🔔 BkzgGxz l, k, n, prover (ms), communication (byte), verifier (ms) 2048, 64, 128, 1222, 128, 13 4096, 64, 128, 2447, 128, 13 8192, 64, 128, 3865, 128, 25 16384, 64, 128, 7059, 128, 55 32768, 64, 128, 13336, 128, 93 ℹ️ DAS Benchmark 🔔 FRIDA l, k, n, prover (ms), communication (byte), verifier (ms) 64, 4096, 8192, 911, 301793, 15 64, 8192, 16384, 1350, 330337, 36 64, 16384, 32768, 2818, 360641, 40 64, 32768, 65536, 5568, 392705, 117 64, 65536, 131072, 10387, 426529, 118 🔔 Advz l, k, n, prover (ms), communication (byte), verifier (ms) 64, 4096, 8192, 1822, 4744, 4 64, 8192, 16384, 2202, 4784, 5 64, 16384, 32768, 3648, 4824, 6 64, 32768, 65536, 5954, 4864, 6 64, 65536, 131072, 10752, 4904, 6 🔔 PeerDAS l, k, n, prover (ms), communication (byte), verifier (ms) 64, 4096, 8192, 23987, 8208, 8 64, 8192, 16384, 44610, 8208, 7 64, 16384, 32768, 80938, 8208, 8 64, 32768, 65536, 121488, 8208, 6 64, 65536, 131072, 237152, 8208, 8 🔔 KzgNNT l, k, n, prover (ms), communication (byte), verifier (ms) 64, 4096, 8192, 257, 262152, 7 64, 8192, 16384, 485, 524296, 14 64, 16384, 32768, 881, 1048584, 16 64, 32768, 65536, 1691, 2097160, 25 64, 65536, 131072, 3357, 4194312, 40 🔔 PedersenNNT l, k, n, prover (ms), communication (byte), verifier (ms) 64, 4096, 8192, 199, 262152, 8 64, 8192, 16384, 433, 524296, 11 64, 16384, 32768, 716, 1048584, 17 64, 32768, 65536, 1482, 2097160, 26 64, 65536, 131072, 3011, 4194312, 52 🔔 Gxz + PST l, k, n, prover (ms), communication (byte), verifier (ms) 64, 4096, 8192, 1115, 5016, 16 64, 16384, 32768, 3623, 5992, 15 64, 65536, 131072, 13598, 7048, 17 🔔 BkzgGxz l, k, n, prover (ms), communication (byte), verifier (ms) 64, 4096, 8192, 8918, 128, 3 64, 8192, 16384, 16001, 128, 3 64, 16384, 32768, 26771, 128, 3 64, 32768, 65536, 39469, 128, 3 64, 65536, 131072, 77043, 128, 3 ``` ``` Start: GxzVRS::compute shares (k=1024, n=2048, L=8) ··Start: commit twin MLE ····Start: commit ······End: commit ..............................................................13.456ms ····End: commit twin MLE .......................................................14.764ms ··Start: encode data ····End: encode data ...........................................................1.577ms ··Start: merkle commit symbols ····End: merkle commit symbols .................................................5.064ms ··Start: eval consolidate ····End: eval consolidate ......................................................3.236ms ··Start: mlpc eval ····End: mlpc eval .............................................................21.771ms ··End: GxzVRS::compute shares (k=1024, n=2048, L=8) ............................48.679ms test gxz::transparent::tests::test_gxz_vrs_with_pst ... ok ``` ## Our bKZG v.s. ADVZ v.s. NNT ### DAS regimes (small $L$, increasing $k$) Multi-threaded (32 threads): ``` TrustedSetup takes 16020 ms MultiPartialEval/Fast deg_x, deg_y, domain_size, commit(ms), prover(ms), communication(byte) 64, 1024, 2048, 36, 959, 128 64, 2048, 4096, 116, 1108, 128 64, 4096, 8192, 215, 1609, 128 64, 8192, 16384, 240, 2094, 128 64, 16384, 32768, 370, 3582, 128 64, 32768, 65536, 670, 7021, 128 64, 65536, 131072, 1160, 14562, 128 MultiEval/Advz deg_x, deg_y, domain_size, commit+prover(ms), communication(byte) 64, 1024, 2048, 1607, 4728 64, 2048, 4096, 1757, 4768 64, 4096, 8192, 2134, 4808 64, 8192, 16384, 3037, 4848 64, 16384, 32768, 4885, 4888 64, 32768, 65536, 8698, 4928 64, 65536, 131072, 15330, 4968 KZG-NNT deg_x, deg_y, domain_size, commit(ms), verify(ms), communication(byte) 64, 1024, 2048, 143, 2, 65608 64, 2048, 4096, 182, 3, 131144 64, 4096, 8192, 308, 7, 262216 64, 8192, 16384, 570, 8, 524360 64, 16384, 32768, 1219, 21, 1048648 64, 32768, 65536, 2404, 38, 2097224 64, 65536, 131072, 4751, 85, 4194376 ``` Single-threaded ``` TrustedSetup takes 442969 ms MultiPartialEval/Fast deg_x, deg_y, domain_size, commit(ms), prover(ms), communication(byte) 64, 1024, 2048, 514, 5183, 128 64, 2048, 4096, 1085, 10469, 128 64, 4096, 8192, 1822, 22647, 128 64, 8192, 16384, 3451, 45624, 128 64, 16384, 32768, 6429, 95898, 128 64, 32768, 65536, 12206, 191615, 128 64, 65536, 131072, 23572, 392299, 128 MultiEval/Advz deg_x, deg_y, domain_size, commit+prover(ms), communication(byte) 64, 1024, 2048, 4128, 4728 64, 2048, 4096, 8599, 4768 64, 4096, 8192, 17837, 4808 64, 8192, 16384, 39121, 4848 64, 16384, 32768, 76362, 4888 64, 32768, 65536, 159465, 4928 64, 65536, 131072, 337270, 4968 KZG-NNT deg_x, deg_y, domain_size, commit(ms), verify(ms), communication(byte) 64, 1024, 2048, 1453, 16, 65608 64, 2048, 4096, 2970, 24, 131144 64, 4096, 8192, 6244, 42, 262216 64, 8192, 16384, 11591, 69, 524360 64, 16384, 32768, 23196, 133, 1048648 64, 32768, 65536, 46422, 261, 2097224 64, 65536, 131072, 92079, 463, 4194376 ``` ### VID regimes (moderate $k$, increasing $L$) Multi-threaded (32 threads): ``` TrustedSetup takes 7733 ms MultiPartialEval/Fast deg_x, deg_y, domain_size, commit(ms), prover(ms), communication(byte) 256, 256, 512, 46, 475, 128 512, 256, 512, 156, 427, 128 1024, 256, 512, 233, 633, 128 2048, 256, 512, 380, 726, 128 4096, 256, 512, 701, 1263, 128 8192, 256, 512, 1423, 1782, 128 MultiEval/Advz deg_x, deg_y, domain_size, commit+prover(ms), communication(byte) 256, 256, 512, 749, 16936 512, 256, 512, 820, 33320 1024, 256, 512, 1117, 66088 2048, 256, 512, 1563, 131624 4096, 256, 512, 2505, 262696 8192, 256, 512, 4503, 524840 KZG-NNT deg_x, deg_y, domain_size, commit(ms), verify(ms), communication(byte) 256, 256, 512, 111, 2, 16456 512, 256, 512, 160, 3, 16456 1024, 256, 512, 286, 3, 16456 2048, 256, 512, 519, 5, 16456 4096, 256, 512, 931, 6, 16456 8192, 256, 512, 1834, 13, 16456 ``` <details> <summary>Breakdownn of Advz & NNT Cost</summary> ``` Start: AdvzVRS::compute shares (k=257, n=512, L=4097) ··Start: encode data ··End: encode data .............................................................141.219ms ··Start: aggregate poly ··End: aggregate poly ..........................................................841.822ms ··Start: commit row_poly ··End: commit row_poly .........................................................877.784ms ··Start: multi-eval on agg_poly ··End: multi-eval on agg_poly ..................................................884.534ms End: AdvzVRS::compute shares (k=257, n=512, L=4097) ............................2.745s ====== Start: KzgNntVRS::compute shares (k=257, n=512, L=4097) Start: encode data End: encode data ...............................................................117.211ms Start: commit col_poly End: commit col_poly ...........................................................466.776ms End: KzgNntVRS::compute shares (k=257, n=512, L=4097) 4096, 256, 512, 818, 10, 16456 ``` </details> Single-threaded: ``` TrustedSetup takes 194907 ms MultiPartialEval/Fast deg_x, deg_y, domain_size, commit(ms), prover(ms), communication(byte) 256, 256, 512, 454, 2484, 128 512, 256, 512, 940, 3621, 128 1024, 256, 512, 1769, 6523, 128 2048, 256, 512, 4507, 10658, 128 4096, 256, 512, 8014, 18422, 128 8192, 256, 512, 12148, 34084, 128 MultiEval/Advz deg_x, deg_y, domain_size, commit+prover(ms), communication(byte) 256, 256, 512, 1798, 16936 512, 256, 512, 2822, 33320 1024, 256, 512, 4821, 66088 2048, 256, 512, 8805, 131624 4096, 256, 512, 17717, 262696 8192, 256, 512, 32795, 524840 KZG-NNT deg_x, deg_y, domain_size, commit(ms), verify(ms), communication(byte) 256, 256, 512, 969, 7, 16456 512, 256, 512, 1573, 11, 16456 1024, 256, 512, 2779, 18, 16456 2048, 256, 512, 5072, 25, 16456 4096, 256, 512, 8922, 39, 16456 8192, 256, 512, 16346, 70, 16456 ``` ## Auxiliary <details> <summary>Hyperplonk PST on Mac M1</summary> ``` Variables,Commit (ms),Open (ms),Verify (ms) 4,416.404,1153.950,4377.812 5,568.337,1647.862,4404.954 6,799.970,2206.016,4578.862 7,1158.545,3073.854,4973.125 8,1807.720,4209.100,4878.687 9,2760.254,5908.054,5253.408 10,5000.208,9872.716,5512.441 11,7777.350,14534.000,5455.500 12,14038.450,20789.658,5497.175 13,25255.433,34812.616,5648.091 14,45133.875,59521.841,5718.000 15,82943.466,110527.916,6165.308 16,151415.858,201583.800,6203.800 17,299628.700,349609.908,6446.908 18,574171.683,648265.383,6888.983 19,1169633.475,1223891.008,7087.250 20,2242165.562,2377528.562,7677.542 21,4185713.333,4776341.916,7194.437 22,7639503.208,8568359.250,7354.958 23,15347376.041,16793795.812,7370.395 24,34434604.896,35856089.958,9392.187 ``` </details> <details> <summary>Example toggle</summary> ``` CODE! ``` </details>