來源:Vaish Puri @TheTieLabs
“我只知道一件事,那就是我一無所知”——蘇格拉底
最近圍繞L2擴容解決方案有很多明顯的熱情,這是理所當然的。隨著Optimism發布治理代幣、對ETH主網降低gas費用的需求,以及在背靠背的黑客馬拉松中產生的一連串新想法,可以肯定地說,L2在2022正如火如荼地進行。
在今天文章中,我將剖析有史以來最強大但經常被誤解的加密工具之一:零知識證明。此外,我將重點介紹未來實施的用例和建議,並展示為什麼零知識證明是加密未來的關鍵。
為什麼零知識證明很重要
簡單地說,零知識證明是證明者在不實際透露任何信息的情況下說服驗證者某事是真的一種方式。讓我們用一個類比來說明這一點:假設我們有兩個人,Alice和Bob。 Alice有一副密封的52張撲克牌。 Alice偷偷拿了一張紅牌,想向Bob證明她有一張紅牌,但實際上並沒有出示紅牌。為了做到這一點,Alice需要將所有的黑牌從牌堆中分離出來,然後將它們展示給Bob。 Bob計算所有26張黑牌,驗證它們的存在,並確定Alice擁有的卡牌必然是紅色的。因此,Alice能夠向Bob證明她有紅牌,而無需實際出示。這個比喻非常簡化並沒有描繪全貌,但技術背後的核心理念保持不變。
零知識證明對於這十年甚至幾千年來說並不新鮮。事實上,這個想法是在1980年代由抽像數學研究人員首次提出的。該解決方案旨在解決當時與證明者和驗證者之間的理論系統相關的問題——交互式證明。
但是如果驗證者被證明是惡意的怎麼辦?除了驗證陳述的真實性之外,Prover還透露了多少額外信息?讓我們看看中心化服務器上密碼的哈希是如何存儲的。傳統上,在與服務器交互時,服務器會得到明文密碼。這是進行“身份證明”的一種糟糕的方式,因此研究人員轉向了一種系統,該系統可以在不洩露任何無關信息的情況下證明聲明。
更具體地說,假設我們有一些函數C,有兩個輸入C(x,y)。令x為公開輸入,y為秘密見證,讓函數的輸出為真或假。給定一個特定的公共輸入x,證明者必須證明他們知道一個秘密見證y使得C(x,y) == true。從證明者的角度來看,實現零知識需要隨機性。在驗證者方面,需要隨機性來產生對證明者的查詢。第一個被廣泛展示的應用是在NP中——完成一類複雜性稱為圖的三著色問題。這是一個巨大的突破,因為這個應用程序可以應用於NP類中的任何問題。這可以一舉多得。
在區塊鏈領域,由於零知識證明能夠提供可擴展性以及在隱私模型中的實用性,因此有許多實現。具體來說,與沒有零知識證明系統的情況相比,驗證者執行的計算工作呈指數級減少。另一方面,證明者需要相當多的計算開銷來執行證明。我稍後會詳細討論這個問題。
ZK協議
雖然目前存在大量的zk協議,但對於這篇文章,我將重點關注SNARK和STARK,並在後面的文章中深入探討其他協議。
簡潔非交互式知識論證(SNARK)是一種流行的證明機制,它結合了2011年首次引入的零知識證明。在底層,zk-SNARK使用橢圓曲線來保證安全並依賴於可信設置。最初,創建密鑰以開發交易所需的證明和驗證所述證明。這些秘鑰包含一個參考字符串鏈接驗證密鑰和發送私人信息的密鑰。為此,必須刪除創建密鑰的方法,並且密鑰的創建者是可信賴的(因此稱為可信設置)。這種在創建階段對信任的依賴仍然是zk-SNARKs的一大批評點。此外,參考字符串是不可升級的,這意味著如果程序需要更新,則需要重新運行可信設置階段。
然而,在實際實踐中,zk-SNARK很難自行實現。在計算中需要檢查許多步驟,但是單獨檢查每個步驟的工作花費的時間是不可行的。解決方案以多項式的形式出現。將計算編碼為多項式可以節省大量信息和時間。我們可以用“代替“它們的多項式表達式代替它們,而不是在數字之間有無數個方程。
但是等等,還有更多!通常,通過檢查每個係數來使用多項式驗證方程,但這又需要太長時間。多項式承諾在這裡發揮作用。多項式承諾可以被視為“哈希”多項式的獨特方法。這允許在更短的時間內進行驗證,無論多項式有多大。此外,多項式承諾本質上是隱私保護,因為證明比多項式本身小得多。儘管可以添加隨機性,但多項式承諾不會顯示多項式的少量信息。
多項式承諾使用三種主要協議之一:bulletproof、KZG和FRI(Fast Reed-Solomon Interactive Oracle Proof of Proximity)。比較和對比它們超出了本篇文章的範圍,因為每個都值得自己深入研究。
2018 年,一群研究人員試圖在zk系統中加入透明度。透明度意味著不必依賴受信任方進行初始設置,從而消除了開放後門的威脅。這導致創建了可擴展的透明知識論據,或STARKs。 STARK使用哈希函數作為其安全來源,這與SNARK使用的雙線性實現不同。可擴展性方面指的是兩件事:
1、與SNARK相比,證明者的運行時間在復雜性上要小得多。
2、驗證時間的大小是多對數。 STARKs利用FRI,提升信息存儲量和效能。
當前應用
儘管像Zcash這樣的zk-SNARK先驅已經存在了一段時間,但zk-STARK的創建卻迎來了爆炸式增長。 zk協議中的工作不僅限於Rollup。事實上,一些L1已經基於zk proof構建,以及萌芽中的遊戲項目。
StarkWare是zk-STARK的先驅,開發了兩個核心產品:StarkNet,一個無需許可的去中心化zk rollup,以及StarkEx,一個獨立的zk rollup SaaS。此外,StarkWare開發了名為Cairo的生產級zk虛擬機(zkVM) 。 Cairo聲稱可以實現圖靈完備的馮諾依曼結構。每個程序與它處理的數據一起駐留在VM 的內存中。今天任何人都可以訪問開羅,目前正被著名的StarkEx客戶使用,如dydx、Immutable和DeversiFi。其他使用他們自己版本的zkVM的新應用程序包括Polygon Miden和RiscZero,後者正在嘗試構建通用zkVM。
與zkVM意識形態相反的是zkEVM。 zkVMs從頭開始作為針對zk優化的新區塊鏈VM,或者只是適應Solidity工具和兼容性。另一方面,zkEVM實現了完整的EVM操作碼集。使用EVM 操作碼有幾個好處:
-
實現與EVM生態系統和工具的完全兼容
-
繼承以太坊安全模型
-
效率可能類似於基於編譯器的方法
不出所料,zkVM和zkEVM陣營之間似乎存在很大的分歧。
zkEVM相對於zkVM的最大優勢是EVM等效性。歷史證明,通過低gas費激勵和為開發人員提供輕鬆的開發體驗來瞄準龐大的現有dApp社區是卓有成效的,這正是zkEVM建設者所指望的。
目前最流行的zkEVM項目是zkSync,它使用zk-SNARKs作為2層解決方案進行驗證和擴展。此外,zkSync選擇將數據可用性置於鏈下,並由zkSync代幣質押者使用權益證明(zkPorter) 進行保護(這意味著空投可能迫在眉睫)。此實現的設計基於StarkWare開發的名為Volition的解決方案。
最後,一個相當新的參與者,Scroll正在開發一個通用的L2 zkEVM。 Scroll採用了一種新方法來使用GPU能力在鏈下生成zk證明。最近在Poseidon哈希、Plookup和PLONK等zk證明方面的突破已經將成本降低到足以使zkEVM成為現實。此外,GPU和ASIC/FPGA加速器的進步正在改善硬件條件,進一步降低成本。 Scroll仍處於開發階段,計劃在未來幾個月內推出他們的zkEVM測試網。
未來的應用
Zk Proof最初是為了維護隱私而開發的。儘管大眾媒體可能會將當前的用例集中在“更大的TPS 允許”上,但事實仍然是zk Proof具有更廣泛的應用範圍。
一個這樣的應用程序是工具zk-ID,它通過zk電路匿名檢查錢包中的資產或鏈上交易來驗證用戶的身份。
Zk身份具有極其強大的潛力,並且在現實世界中可以立即使用用例。例如,假設我是一名債務人,試圖證明自己的信譽,同時仍將銀行信息和活動保密。我會證明我已經從多家受信任的銀行償還了大筆貸款,但不會透露銀行或這些貸款的規格。
支持未來zk-identity的四個關鍵組件
zk領域的另一個重大發展是zk-SNARK證明者的高效私人委託。如前所述,證明的時間相當緩慢。使用SHA2 哈希10kb需要140秒,而不是所需的幾毫秒。解決這個問題的方法是外包證明。不幸的是,這帶來了另一個困境:秘密總是洩露。需要的是:外包隱私證明。通過仔細實施,可以將證明委託給手機等設備,其速度比本地計算快26倍。這個新穎的框架由Pratyush Mishra在2022年4月的zkSummit上首次提出。
結語
我們在開發基於應用程序的zk Proof方面處於非常早期的階段。儘管如此,進展的步伐還是很快的。社區之間仍然存在很多衝突,因為陣營正在形成,意見正在被政治化。只有時間會證明哪一方是正確的。可以肯定的是,當歷史學家回顧過去時,他們會將這一時期的zk實施視為加密貨幣壯觀歷史中的開創性部分。