短期與長期。

作者: Chloe

Crypto 行業被廣泛關注的零知識證明(Zero—Knowledge Proof)技術,並非是這幾年剛冒出來的新技術,而是在 1980 年就被數學家 S.Goldwasser、S.Micali 及 C.Rackoff 提出。

零知識證明涉及一系列步驟,可以實現密碼學中的「可用而不可知」。

而區塊鏈有著公開透明、不可篡改等特徵,意味著加密投資者的鏈上資產及交易記錄是沒有隱私可言的,於是零知識證明技術被引入了區塊鏈,當中以 zk-SNARK 和 zk-STARK 最為關注。

zk-SNARK 被項目方採用得最多,zk-STARK 則被密碼學專家認為優於 ZK-SNARK。那麼綜合技術與實際應用,二者誰更優?

zk-SNARK:簡潔+ 非交互性

Alessandro Chiesa 等人在 2012 年開發了 zk-SNARK 協議,這是一種簡潔化、非交互式的零知識證明技術,全稱是 zero-knowledge succinct non-interactive arguments of knowledge,可以拆解成三部分來理解:

zero-knowledge:

零知識證明,在不暴露隱私情況下向對方證明一件事情,讓數據「可用而不可知」。

succinct:

簡潔性,要證明的東西佔用的空間很小,而且可以快速驗證(幾毫秒)。

non-interactive:

非交互性,意味著證明者和驗證者之間不需要有交集即可快速地得到驗證結果。

zk-SNARK 的簡潔性和非交互性,是相對於傳統的零知識證明方案而言的。

簡單來說,傳統方案是交互式證明,即示證者(宣稱某一命題為真)和驗證者(確認該命題確實為真)之間反复確認,你可以理解為示證者不斷向驗證者詢問 “是或不是?”,然後驗證者不斷給出回答,直到最後碰出一個正確答案來,所以效率很低。

zk-SNARK 的解決方案則不需要雙方反复確認 “是或不是”,而是提前先搞一個「可信初始化」,從而生成公共參考字符串(CRS),然後所有的示證者都可以直接訪問它。

打一個通俗的比方。交互式證明相當於老師要批改每一個考生的每一道考題,效率很低,但正確答案只掌握在老師這邊,基本不存在有人偷答案的情況。

但 zk-SNARK 直接上傳了正確答案,然後讓考生自己對答案(把自己解的某道題發送給後台系統,就會直接得到正確與否的最終結果),非常高效,代價是答案有可能被洩露,雖然這個答案系統是經過加密的。

因此針對 zk-SNARK 容易被洩露的問題,有很多圍繞著提高「答案系統」安全性的解決方案,不同採用 zk-SNARK 的項目方的方案各有不同。如 zCloak 錢包是直接把算法以純文本的形式發給用戶,用戶下載到本地去做計算(所以即使斷網也依舊能完成工作)。

zk-STARK:概率證明+緩衝時間

zk-STARK 是成立於 2017 年 12 月的 StarkWare 團隊開發的,它是針對 zk-SNARK 的替代解決方案。研發歷時一年多,經過無數次迭代才徹底搞定,已經到 2019 年了。

zk-SNARK 是提前生成公共參考字符串,用非交互式證明的方式提高了證明效率,但也留下了隱患。zk-STARK 雖然是交互式證明,但它是一種巧妙的交互式證明——通過哈希函數碰撞(一種概率證明的方式)來保證安全性,因此也實現了高效證明。

這個思路直接借鑒自 2015 年推出的交互式預言機證明(IOP)技術,簡單來說是先把問題用密碼學的方式打碎,然後驗證者隨機向示證者提出幾個的問題,如果幾輪下來,示證者都給出準確的回答,那麼驗證就通過了。

所以 zk-STARK 同樣也只需要極少的計算資源就可以完成證明,但是它更安全,不存在答案洩露的風險。並且為了進一步確保安全性,還設置了爭議時間延遲(DTD)來作為緩衝。

zk-SNARK 和 zk-STARK 的區別

1. 透明度

zk-SNARK 的公共參考字符串通常由一個小團體來保管,因此有洩露的可能性,從而被惡意利用,如創建虛假證明。

zk-STARK 則直接利用生成隨機性的參數來驗證,不需要任何第三方的「答案系統」,因此透明度大幅提高。

2. 抗量子計算機攻擊

zk-SNARK 未來會輕易被量子計算機暴力破解(通過分解計算從公鑰中提取私鑰)。當然,量子計算何時到來還是個問題。

zk-STARK 採用的是哈希函數碰撞的方法來證明,理論上量子計算機的暴力破解是無效的。

3. 可擴展性

zk-SNARK 的證明在鏈上更具可擴展性(生成的證明的字節數更小),zk-STARK 在純鏈上似乎沒有優勢。

StarkWare 官網宣稱是最快的,可能是因為 zk-STARK 允許鏈下進行大規模計算和存儲,然後在鏈上完成驗證,因此可擴展性顯著提升(甚至可以提高 10 倍),而成本顯著降低。

  總結

zk-SNARK 技術被採用得最多,尤其是在以太坊擴容場景中。zk-SNARK 主要是圍繞「隱私保護」去做身份、支付、DeFi、資產證明等各種應用。

zk-STARK 雖然也在發展之中,但技術尚不成熟,至少在通用性上受限,所以我們看到大多是圍繞著「可擴展性」去做各種應用。

不過據 StarkWare 團隊在 2022 年的說法,已經解決了可擴展性,該把目標瞄準「隱私保護」了,而方式是通過 StarkNet 的 Layer3 以及 Layer4 中以分形分層的方式解決,這似乎與 zk-STARK 證明系統本身沒有直接關係。

至少就目前而言,大多數以太坊 Layer2 項目 (zkSync、Aztec、Loopring、Scroll 等) 都採用的是 zk-SNARK 技術路線,除了通用性上受限,還有一個原因是普遍反饋說 zk-STARK 的開發難度過大……

當然長遠來看,zk-STARK 可承載的運算量更大,可能更有前景。

總的來說,zk-SNARK 和 zk-STARK 的關係,有些像 Optimistic rollups 和 ZK rollups 的關係,前者短期利好,後者長期利好。

免責聲明:作為區塊鏈信息平台,本站所發布文章僅代表作者及嘉賓個人觀點,與 Web3Caff 立場無關。文章內的信息僅供參考,均不構成任何投資建議及要約,並請您遵守所在國家或地區的相關法律法規。