零知識證明
多項式承諾
多項式承諾方案讓證明者得以用一個短短的指紋,把一個多項式「鎖定」起來,之後再就驗證者所挑的任何一點,證明該多項式在那裡的取值——而這一切都不洩漏多項式的係數。可以把它想成把一個複雜函數封進信封裡:承諾具有約束性(你日後無法偷換成另一個多項式),而求值證明具有簡潔性(遠比多項式本身小)。這單一個基本元件,幾乎是每一套現代簡潔證明系統的主力。
它之所以重要,在於 SNARK 與 STARK 核心的那個歸約:證明一項龐大的計算,被轉化為證明關於多項式的若干陳述(它們的次數、它們的取值、它們的整除性)。有了多項式承諾,證明者對那些多項式做承諾,驗證者用一個或幾個隨機點來挑戰,證明者再以微小的求值證明作答。由於兩個相異的低次多項式只可能在寥寥幾點上相等,在一個隨機點上做檢查便極具說服力——這正是 Schwartz-Zippel 引理在挑大樑。
不同方案在各方面有著耐人尋味的取捨。KZG 承諾是固定大小、且求值證明也是固定大小,但需要可信設置與配對。FRI(STARK 所用)以雜湊為基礎、透明,但產出較大的多對數級證明。內積論證型承諾(Bulletproofs、Halo)透明、無需設置,但證明為對數大小且驗證較慢。在它們之間做選擇,大致就決定了一套證明系統的設置需求、證明大小,以及它對抗量子的立場。
對一個多項式做承諾,跟把它加密並不一樣。承諾具約束性(且帶有一定的隱藏性),但它真正的職責是:讓驗證者能在所選的點上盤問該多項式,並確信證明者無法作弊——求值約束性才是真正擔保證明安全的那項性質。
另見