零知識證明

非互動式零知識

非互動式零知識證明(NIZK)把整場來回對話壓縮成單一一則訊息。證明者產生一個字串——也就是證明——交出去,任何人之後都能檢驗它,完全不需要回話。這正是區塊鏈所需要的:智能合約不是一個能在協議中途送出隨機挑戰的即時參與者,而張貼在交易裡的證明,必須能獨立自足,並讓每一個節點都能各自且一致地驗證。

去除互動並非免費;你必須用某種證明者無法操縱的東西,來取代驗證者的隨機挑戰。標準上有兩條路。第一條是共同參考字串(CRS):一個只產生一次、由證明者與驗證者共享的可信公開字串——這正是 Groth16 與 PLONK 這類 SNARK 的基礎。第二條是 Fiat-Shamir 啟發法:把目前為止的協議紀錄雜湊一下,藉此導出「隨機」挑戰;當雜湊被理想化為隨機預言機時這是安全的,也是 STARK 與 Bulletproofs 得以在毫無設置之下變成非互動式的方法。

「零知識」這部分意味著這單一證明除了陳述為真之外,不洩漏任何東西——不洩漏見證,也不洩漏任何中間值。形式上,這由一個「模擬器」來刻畫:它能在不知道祕密的情況下偽造出看起來很有說服力的證明,這顯示證明本身無法包含可被抽取的見證資訊。NIZK 同時是鏈上隱私(Zcash 屏蔽交易)與鏈上擴容(ZK 彙整)的基礎:兩者皆是由一份驗證合約讀取一個短短的證明,便相信了一項龐大的、隱藏或昂貴的計算。

「非互動式」不等於「無需設置」。許多 NIZK 仍需要一次性的 CRS 或可信設置;以 Fiat-Shamir 為基礎者雖避開了這點,卻改為仰賴隨機預言機假設。總會有某個假設,用來取代即時驗證者所擲的硬幣。

又称
NIZK