來到第7天,繼續介紹PLONK,讓大家可以深入地認識PLONK的基礎。
昨天講了PLONK的特點,而它的特點可以在計算速度及控制SRS大小有明顯幫助。
圖表來源: PlonK: Permutations over Lagrange-bases for Oecumenical Noninteractive arguments of Knowledge
在圖表中,大家可以看到其他類型在各項細節上的差別。
圖表來源: PlonK: Permutations over Lagrange-bases for Oecumenical Noninteractive arguments of Knowledge
在圖表中,大家可以看到其他類型在各項細節上的差別。
在圖表中的基準測試,可以看到令人信服的結果。廣泛的基準測試展示了 PLONK 的卓越性能,在 23 秒內為一組包含超過一百萬道門的電路創建了證明。而這些數據可以反映出 PLONK 的效率及處理複雜運算的能力。
說到效能,當然要跟Groth16比較一下:
P(z)=Ui(z).Vi(z)-Wi(z)
在對所有乘法門方程式進行編碼時,其中多項式Ui、Vi 和Wi 分別代表左,右,及第 i 道門在 (a1,…,am) 上的事出,它們都是代表電路的線值。
現在我們定義一個目標多項式
T(z)=(z-r1)(z-r2)…(z-rn)
其中 r1、…、rn 是隨機變量,n 表示電路中乘法門的數量。而多項式 P(z)是已定義為可被 T(z) 整除。這意味著存在一個多項式
H(z),P(z)=H(z)T(z)
所以如果有一個可信任方在隨機點s評估這些多項式(U(z), V(z), W(z)),將它們放入CRS中,然後證明者就做出證明,最後驗證者只需基於收到的證明進行驗證就可以。
其實Plonk與Groth16相似,在Plonk中,每個程式都轉換為乘法門和加法門的算術電路。另外,Plonk證明電路的正確性和一致性的方式都是有所不同的。為了證明Plonk電路的正確性,需要證明每道門的約束以及口之間的關係的有效性。除了多項式方程式的驗證之外,更採用置換證明的數學方法來驗證門之間的複製約束的關係。
效率比較
PlonK 提供兩種變體,一種具有 9(n+a) 組合多項式次數,另一種具有 11(n+a)。前者有較大的證明大小,但與後者相比,證明者計算量減少了約 10%。這裡,n代表乘法門,「a」代表電路中的加法門。
以下是針對Groth16 和 Plonk 的兩個變體的性能和安全性比較:
證明複雜度的分析
在一般電路中,加法門和乘法門的比例為2:1。在這個比例的電路下,這表示PlonK在證明時間上比 Groth16 會差 2.25 倍。當然,如果是具離線、鏈下情形下可以執行證明產生的能力,就不用擔心證明產生的時間計算。所以集中考慮證明大小,因為它的大小是會影響交易的效率和成本。如果每個群元素都是 F 中的一對 x 和 y 點。
Groth16 證明大小:2G1.(2 F) + 1 G2(計算 4F 元素)= 6F
Plonk 證明大小:9G1+ 7F = 16F
假設每個元素佔用 256 位元。Groth16 證明大小在估計 128 位元安全等級下需要 200 字節,而 PLonk 需要大約 500-1000 字節才能達到同樣的安全水平。
參考: