在zk-SNARK 中,最近幾年也出現了不少類型,當中PLONK的出現就受到比較大的關注,這是由於它是:
PLONK 是由 Ariel Gabizon、Zac Williamson 和 Oana Ciobotaru 提出的一種通用零知識證明方案。 PLONK是代表“Permutations over Lagrange-bases for Oecumenical Noninteractive arguments of Knowledge”。
簡單回顧一下,零知識證明是一種加密協議,允許證明者向驗證者證明對某一資訊的認知,而不用透露資訊本身的任何細節或個人資訊。這就可以進一步保障個人私隱及其他敏感的資訊。
通用的可信任設定
PLONK 和其他zk-SNARK的方案一樣依然需要可信任設定,但它可以做到通用的可信任設定。
在所有的可信任設定中,都會產生一組初始的參數,而方案的安全性是取決於對參數的保密程度。
不過PLONK 的可信任設定是通用及可以進行更新。這就表示不需要為每個要驗證的程序提供特定的可信任設定,而是可以與其他程序一起使用一個的可信任設定。另外,可信任設定可以涉及多個參與者,只要至少其中一個是誠實,就可以維持到安全性。而這個程序是具連續性的,允許參與者隨時加入,從而這提高了安全性。
條件約束
在 PLONK 中,還有另一特色就是門的約束和複製約束的目的是用於將電腦程式表示的問題轉換為一組多項式方程式,而多項式方程式是可以用於零知識證明進行有效驗證。
2.1. 門的約束:
門的約束是與連接到電路中同一門的電線值相關的方程式。
在 PLONK 中,問題被轉換為由用於加法和乘法的邏輯門組成的電路表示。每個門接受輸入線及根據指定操作產生輸出線。
例如: 考慮一個具有兩條輸入線(A 和 B)和一條輸出線(C)的乘法門。此乘法門的門約束將是以下形式的方程式:
C = A * B
同樣地,對於具有輸入線(X 和 Y)和輸出線(Z)的加法門,門的約束為:
Z = X + Y
這些門的約束確保電路中執行的操作由多項式方程式準確表示,從而允許驗證者在不知道證明者提供的指定輸入的情況下確認計算的正確性。
2.2. 複製約束:
複製約束是關於電路中任何地方的不同電線相等的聲明。它們強制一個門的輸出與另一個門的輸入相同,從而保留電路內的資料流。複製約束對於保持電路表示的一致性和連貫性是很重要的。
例如:考慮兩條輸入線 A 和 B,它們必須具有相同的值。此場景的複製限制將是一個等式:
A=B
複製約束確保資料在電路中正確傳播。
PLONK 依靠門的約束和複製約束將電腦程式表示的問題轉換為一組結構化的多項式方程式。然後將這些方程式用作產生零知識證明的基礎。透過採用這些約束,PLONK 實現了問題的緊湊和能夠以高效的形式表示,使其對於需要零知識證明的各種應用程式具有實用性和可擴展性。
參考: