零知識證明
遞迴證明
遞迴證明是「關於證明的證明」。一個遞迴證明不只證明「這項計算是正確的」,還能證明「我驗證過另一個有效的證明」。這個自我指涉的把戲解鎖了兩項超能力:聚合(把數千個各自獨立的證明,合併成一個能為它們全體背書的小證明)與增量可驗證計算(IVC)(逐步證明一個長時間執行的流程,其中每一步的證明也為先前所有步驟擔保,於是最終的證明以固定大小,認證了整段歷史)。
技術障礙在於:驗證一個證明本身就是一項計算,而要證明你跑過驗證程序,你就得把驗證者表達成一個電路——但驗證者在某個有限體上做算術,證明卻活在另一個有限體上,造成有限體不匹配。經典的解法是一個「橢圓曲線循環」(例如 Pasta 曲線 Pallas 與 Vesta,或較早的 MNT4/MNT6 配對),其中每條曲線的純量體正是另一條的基體,使兩套證明系統得以在一個迴圈裡互相驗證。較新的做法——像 Nova 這類折疊方案——則繞過了電路內的完整驗證:它廉價地把兩個實例「折疊」成一個,把沉重的證明拖到最末了才做,使每一個遞迴步驟便宜許多。
正是遞迴讓 ZK 彙整得以在經濟上擴展。證明者並行地為一批批交易產生許多小證明,再遞迴地把它們聚合成單一一個證明,讓鏈上驗證器只檢查這一次——把驗證成本攤平到龐大的工作量上。它也促成了證明的「包裝」:把一個龐大的透明 STARK,在一個小型 SNARK 內證明其正確性,於是只有那個精巧的 SNARK 會碰到鏈。
遞迴並不會讓證明變免費——每多一層都增添證明者的工作量。它的價值在於把成本移到鏈下、移進可平行化的批次裡,於是那項稀缺資源(鏈上驗證),對整棵計算之樹只需付一次。
另见