零知識證明

二次算術程式

二次算術程式(QAP)是把整串 R1CS 約束化為單一一個多項式方程式的巧妙代數技法。其洞見在於內插:給每一條約束指派一個指標點(比方說 1、2、3……),再為每個變數建構出「在那些指標處剛好穿過該變數係數」的多項式。R1CS 矩陣 A、B、C 的各欄遂變成多項式 A(x)、B(x)、C(x);於是「每一條約束都成立」就等價於說:單一多項式 A(x)·B(x) − C(x) 在每一個約束指標上都為零。

一個在 r1, …, rm 這些點上都為零的多項式,恰恰是消失多項式 Z(x) = (x − r1)(x − r2)…(x − rm) 的倍式。於是整個約束系統便塌縮成一句話:存在一個商多項式 H(x),使得 A(x)·B(x) − C(x) = H(x)·Z(x)。檢查數千條約束,變成了檢查一個整除關係。這威力驚人,因為單一多項式恆等式可以在一個隨機點上以機率方式驗證——根據 Schwartz-Zippel 引理,兩個相異的低次多項式在隨機求值處幾乎絕不會相等。

QAP 正是讓 Groth16 變得簡潔的關鍵。可信設置把驗證者的祕密隨機點 τ 編碼進群元素的「指數裡」;證明者藉由這些元素,盲目地在 τ 處求值那些 QAP 多項式,再用一個配對方程式,在無人得知 τ 的情況下,於 τ 處檢查整除關係 A·B − C = H·Z。驗證者從頭到尾都看不到那些多項式或見證——只看到一個固定大小的證明與寥寥幾次配對。

A(x)·B(x) − C(x) = H(x)·Z(x), where Z(x) = (x−r1)(x−r2)…(x−rm)

安全性仰賴證明者不知道祕密求值點 τ。若 τ(也就是「有毒廢料」)外洩,作弊者就能捏造一個假的商多項式 H(x),並偽造出假陳述的證明——這正是可信設置必須被銷毀的原因。

又称
QAP