zk-SNARK被專案方採用得最多,zk-STARK則被密碼學專家認為優於zk-SNARK。
Crypto 行業被廣泛關注的零知識證明(Zero—Knowledge Proof)技術,並非是這幾年剛冒出來的新技術,而是在 1980 年就被數學家 S.Goldwasser、S.Micali 及 C.Rackoff 提出。
零知識證明涉及一系列步驟,可以實現密碼學中的「可用而不可知」。
而區塊鏈有著公開透明、不可篡改等特徵,意味著加密投資者的鏈上資產及交易記錄是沒有隱私可言的,於是零知識證明技術被引入了區塊鏈,當中以 zk-SNARK 和 zk-STARK 最為關注。
zk-SNARK 被專案方採用得最多,zk-STARK 則被密碼學專家認為優於 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 是成立於 2017 年 12 月的 StarkWare 團隊開發的,它是針對 zk-SNARK 的替代解決方案。研發歷時一年多,經過無數次反覆運算才徹底搞定,已經到 2019 年了。
zk-SNARK 是提前生成公共參考字串,用非互動式證明的方式提高了證明效率,但也留下了隱患。zk-STARK 雖然是互動式證明,但它是一種巧妙的互動式證明——通過雜湊函數碰撞(一種概率證明的方式)來保證安全性,因此也實現了高效證明。
這個思路直接借鑒自 2015 年推出的互動式預言機證明(IOP)技術,簡單來說是先把問題用密碼學的方式打碎,然後驗證者隨機向示證者提出幾個的問題,如果幾輪下來,示證者都給出準確的回答,那麼驗證就通過了。
所以 zk-STARK 同樣也只需要極少的計算資源就可以完成證明,但是它更安全,不存在答案洩露的風險。並且為了進一步確保安全性,還設置了爭議時間延遲(DTD)來作為緩衝。
zk-SNARK 的公共參考字元串通常由一個小團體來保管,因此有洩露的可能性,從而被惡意利用,如創建虛假證明。
zk-STARK 則直接利用生成隨機性的參數來驗證,不需要任何協力廠商的「答案系統」,因此透明度大幅提高。
zk-SNARK 未來會輕易被量子電腦暴力破解(通過分解計算從公開金鑰中提取私密金鑰)。當然,量子計算何時到來還是個問題。
zk-STARK 採用的是雜湊函數碰撞的方法來證明,理論上量子電腦的暴力破解是無效的。
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 的關係,前者短期利好,後者長期利好。
免責聲明:
本文觀點僅代表作者個人觀點,不構成本平台的投資建議,本平台不對文章信息準確性、完整性和及時性作出任何保證,亦不對因使用或信賴文章信息引發的任何損失承擔責任
0.00