menu-icon
anue logo
熱門時事鉅亨號鉅亨買幣
search icon

區塊鏈

ArkStream Capital: 詳解zk在擴容和隱私保護賽道的投資機會(一)

BlockBeats 律動財經 2022-08-24 19:01

cover image of news article
律動財經圖片

序言

當前的比特幣網路或者以太坊網路,全網都會有不少等待區塊打包確定的交易。這種交易等待確認機制,極大地打擊用戶使用的體驗,交易擁堵是整個行業現在亟待解決的問題。另外,由於區塊鏈自身的公開透明,一旦地址被標記,我們的所有交易行為就毫無隱私可言。隨著 DeFi 的發展,在這加密貨幣的黑暗森林裡,隱私保護的需求從來沒有比現在更加迫切。在 DeFi 積木瀕臨倒塌的時候,鏈上清晰可見的清算線和定點爆倉成了價格止不住下跌的重要推手。

對於網路並發容量和隱私兩大難題,極客和開發者們進行了數年的探索。零知識證明技術,憑藉其自身獨特的性質,如同透明、去中心化和不可篡改對於區塊鏈技術那般重要,自成體系地帶來了擴容和隱私問題的解決方案。本文將從零知識證明的定義和實現方案出發,以市場上的眾多熱門項目為例,探討它在擴容和隱私保護兩大領域的探索,從投資機構的角度,去思考這其中的投資機會。

零知識證明的定義


人們在生活交往過程中會傾向於相信自己的所見所聞,但是,對於有價值的資訊,或者說是知識,它的擁有者都會想在不泄露核心機密的同時,讓其他人相信自己對知識是具有所有權的。為了解決這樣的需求,零知識證明應運而生。換用更加學術化的表達,零知識證明是兩方針對"知識為真"進行的證明和驗證,其中知識的所有方也即證明方,另一方則對應是驗證方。

我們用一張草圖,直觀地解釋零知識證明能夠實現什麼。

Figure 1: Proof without ZKP and with ZKP

從這張圖中,我們可以提煉出零知識證明的三個性質:

完備性(Complete):誠實的證明方,對「知識為真 」這一論斷進行證明,肯定可以讓驗證方信服。

合理性(Sound):證明方無法將「 知識為假 」證明成「知識為真」。

零知識性(Zero Knowledge):整個證明,驗證方除了「 知識為真」這一論斷,不會獲得其他與知識相關的機密。

這三個性質用大白話講,那就是:真的假不了;假的真不了;未知是真的,未知依然未知。第三個性質換一種更加通俗的說法,我說了「什麼是真的」,你驗證了「什麼是真的「,但是你不知道什麼是什麼。

Figure 2: 零知識證明三個性質和兩個特性

前面兩個性質相對第三個性質容易理解和注意,而第三個性質非常容易混淆和忽略。

當證明和驗證雙方都知道知識的內容時候,是可以很容易地驗證「知識為真」的,但是,卻再也無法滿足證明要求的零知識性。反之,如果滿足了零知識性,我們又很難驗證。試想一想,我們怎麼判斷證明和驗證的過程中,沒有泄露到任何知識內容呢?如果沒有泄露到知識內容,那麼驗證者會相信知識是真的呢?畢竟,他連知識是什麼都不知道,甚至於,可能連知識是否存在都無意識無感知!但事實是,知識必然要存在,反則,證明的「知識為真」根本無從發起!

我們用更具體的例子講講,例如,我們都相信中本聰肯定是存在世界的,不然,比特幣就無從出現了,但是,這麼多年以後,我們並不知道中本聰是否存活在世界。假如中本聰依然存活,並且,他想告訴世人他還活着。那麼,中本聰可以使用零知識證明向世人傳遞」我依然活着」,此時世界按照零知識證明驗證得知這個資訊,但是並不會知道中本聰是否有使用到私鑰,是否登陸當年 BitcoinTalk 的賬號自證等。另一種場景是,中本聰在發明比特幣的時候,創世地址是擁有第一筆比特幣,當這個地址使用對應私鑰進行活動的時候,同樣可以傳遞中本聰依然活着的資訊,但是這卻不再滿足了零知識性,因為,世人都知道中本聰依然活着,是因為他的私鑰發生活動。

簡單地說,零知識證明不僅可以保證知識的隱私性,也可以保證知識的有效性。這兩點直接決定了零知識證明在加密世界裡的兩大類應用場景:隱私和擴容。當然,隱私場景會有更多細分應用,例如隱私支付、匿名投票甚至於隱私公鏈等,也可以通用地理解為資產支付型隱私和邏輯通用型隱私。至於擴容場景,使用的是零知識證明的完備性和合理性,以及其他技術手段共同實現的。

零知識證明的實現

零知識證明是使用很多數學和密碼學知識共同協作配合發明和實現的。在整個證明的實現上面,按照交互與否,可以分為交互式證明和非交互式證明。交互式證明是證明過程需要證明方和驗證方按照某種順序和規則交替進行,然後通過隨機機率完成證明。非交互式證明是證明方按照證明規則或證明過程,完整的一次性自行計算和提交所有證明資料,然後,驗證方可以直接用這些證明資料進行驗證。換一種極端的理解,非交互式證明是將交互式證明的多個步驟壓縮到一步交互即可。另外,非交互證明可以看作將整個實現拆分成為證明過程和驗證過程。

下面,我們用兩個不同的場景模擬交互式證明和非交互式證明的差異。

簡化場景一,假設中本聰的創世私鑰重現人間,現在,要證明這個私鑰依然活動。

交互式證明的流程:

1,驗證方喊話創世私鑰證明方,你在某個區塊高度之後寫下一句話:Hello World。

2,創世私鑰證明方按照要求,等待某個區塊高度之後,向全網留言:Hello World。

3,驗證方在網路裡面驗證創世私鑰是否按照要求在某個區塊高度之後留言:Hello World。

4,重複 1、2、3 這三個步驟,當次數達到一定程度,從機率學角度可以判定,這個私鑰基本是活動的。

非交互式證明的流程:

1,某個設備/模擬器/圖靈機生成一個共享的、隨機的字符串 xyz,然後將這個字符串公開,並且要求創世私鑰證明方以「xyz,Hello World」的形式,向全網留言。

2,創世私鑰證明方,按照設備/模擬器/圖靈機的規則,使用這個字符串 xyz,加上自己的 Hello World,向全網留言:「xyz,Hello World」。

3,驗證方拿着這個字符串 xyz,看到創世私鑰的留言之後,直接判定這個私鑰是活動的。

簡化場景二,假設張三懂高斯算法,李四不懂。

交互式證明的流程:

1,李四喊話張三,30 秒內計算 1+2+3+...+8887+8888。

2,張三拿着高斯算法,30 秒算出結果,並告訴李四。

3,李四用自己最樸素的加法檢驗結果是否正確。

4,重複 1、2、3 這三個步驟,當次數達到一定程度,從機率學角度可以判定,張三懂高斯算法。

非交互式證明的流程:

1,某個設備/模擬器/圖靈機生成一個共享的隨機的整數 x。

2,張三拿着高斯算法,直接計算 1+2+3+...+(x-1)+x 的結果。

3,李四用自己最樸素的加法檢驗結果是否正確,若正確,張三懂高斯算法。

通過上面的例子,我們可以發現,非交互式證明比交互式證明有明顯的優勢:1,不依賴於特定的交互驗證方,是 1 個證明方對 N 個驗證方的極佳方案;2,不侷限於交互時刻,可以隨時進行。但是,我們也注意到非交互式證明裡面多了模擬器/圖靈機的存在!

這裡,就引出了零知識證明的核心概念:模擬器/圖靈機。模擬器/圖靈機可以隱藏知識,但是依然保證「知識是真」可以順利進行證明和驗證。

為了實現非交互式證明的模擬器/圖靈機核心功能,現在的技術方案大概有:隨機預言(Random Oracle)和公共參考串(Common Reference String、CRS),而其中公共參考串是廣泛使用的方案。我們認為,隨機預言和公共參考串沒有太大本質的差別。公共參考串 CRS 必須由一個受信任的第三方進行生成,然後共享給證明方和驗證方。這裡,CRS 的生成必須保證隨機可信,因此,產生 CRS 的環節也稱為可信設置,Trusted Setup。

我們可以用神來比喻模擬器/圖靈機,神是公立的,不僅可以幫助證明者隱藏知識,協助證明者完成證明,也可以辨識證明者是否偽造知識,協助驗證者順利驗證。神是完美無缺的,但終歸需要人去創造神,創造神的過程可以對應為:可信設置。另外,神是存在適用性的,也不一定是通用的,就像耶穌是西方的神,如來是東方的神(可信設置的適用性)。再往深的想,神也有可能不靠譜。(可信設置的安全性)

一切的證明始終得回到具體步驟。正如我們在解答數學證明題一樣,也有答題步驟。對於零知識證明來說,這個具體步驟有專業的術語:電路(Circuit)。至於 QAP/QSP,布爾電路和算數電路,我們都簡單粗暴地將它歸為非交互式證明過程中的具體步驟即可。世間數學證明題千千萬,解題證明的時候,都需要編寫對應的解題步驟。同理,對於不同知識下面的零知識證明,電路也是需要專門編寫的。當然,也有某類知識的證明可以通過共用電路框架簡化編寫的過程。對於不同的數學證明題,我們要寫出單獨的答題步驟(專用電路),而某一類數學證明題,我們可以寫出通用的答題步驟(通用電路),甚至,有一類題目,我們可以直接引用另一類題目已經寫好的答題步驟/結論。(電路的可組合性/交互性)。

順着前面的數學證明題講講電路的位置

Figure 3: 電路的類比

至於其他的概念或者術語,例如一階約束系統 R1CS、NP 問題、多項式、多項式的知識、因式分解、模糊計算、資訊、知識、電路可滿足性、完全安全、語義安全、不可區分性、映射、同態、有限域、循環群、Fiat-Shamir 變換、ECDSA 簽名...... 由於涉及到太過概念和數學計算,除非是數學和密碼學專家,不建議花費過多腦力和精力在這方面。我們只需要知道的關鍵資訊是:不同的零知識證明實現方案在於可信設置的引入與否、可信設置的適用性以及電路的編寫難易。

對於不同的零知識證明實現方案而言,我們可以用證明方和驗證方的時間開銷和空間開銷,以及安全性,這五個維度是判定實現方案的優劣。

證明方的時間開銷:也即計算時間,決定證明的快慢;

驗證方的時間開銷:也即驗證時間;

證明方和驗證方的空間開銷:存在證明大小的概念,決定儲存的空間使用要求,也是常說的簡潔性所指; 

安全性:由於部分的協議需要引入可信設置,對應的實現方案在安全性方面會依賴可新設置。另外,可信設置也存在適用性的差異,也就是「永久型」和「一次型」之分。

實現方案的不同,最終分成了零知識證明的兩大派系協議:zk-SNARK 零知識簡潔非交互式知識論證和 zk-STARK 零知識可擴展透明知識論證。

zk-SNARK:Zero-Knowledge Succint Non-interactive Arguments of Knowledge。非交互式證明、需要可信設置,不同的實現方案在可信設置方面要求和效果也不一樣。從 ZCash 開始採用發展多年,並且有很多細分的優化實現方案,知名的項目有:ZCash、zkSync、Aztec 等,因為時間較長,又誕生出大量的衍生協議:Schnorr 協議,Pinocchio 協議、Marlin 協議,Sonic 協議,Libra 協議,PLONK 協議、Spartan 協議、BullteProof 協議等。

zk-STARK:Zero-Knowledge Scalable Transparent Argument of Knowledge。非交互式證明、不需要可信設置,抗量子計算、證明大小開銷很大。Starkware 團隊發明和提出,有一些專用型的項目在應用,dYdX(近期宣布遷移到 Cosmos)、Immutable 和 Deversifi。

參考區塊鏈不可能三角的說法,零知識證明的實現方案可以說是不完美三角,所有的實現方案雖然可以同時實現完備性、合理性和零知識性,但因為應用場景的要求,都是有某方面的取捨。或者更明顯的情況是,側重完備性和合理性時,零知識性的實現會弱化,甚至可能忽略(擴容 Layer2)。另外,零知識證明本身是沒有去中心化的屬性,如果這方面有要求,需要結合去中心化的設計(難上加難)。

零知識證明的虛擬機

在探討實現方案的不同後,我們接下來探討方案落地的關鍵。現在網路的應用和產品都是採用高級編程語言(C++,Java,Rust,Solidity......)實現的程序。虛擬機/解釋器是程序執行的黑盒子,可以將程序轉換成為機器可以識別和理解的語言,然後代替機器運行程序。如果沒有零知識證明的虛擬機,我們在使用零知識證明技術編寫程序的時候,需要專門為程序編寫對應的實現電路。這類電路的編寫、測試和生產使用是非常困難和低效的。為此,要讓零知識技術的使用更加廣泛和高效,可以為程序生成證明的提交和驗證的零知識證明版虛擬機(zkVM)就是必然需要的。至於 zkVM 採納的高級編程語言到底是 C++、Java 還是專門設計的電路編程高級語言(Stareware 的 Cairo、zkSync 的 Zinc),這些取決於 zkVM 的設計和能力。需要強調的是,zkVM 是沒有硬性使用區塊鏈的要求的。

Figure 4:Polygon Miden Deep Dive zkVM

對於 zkVM 而言,可以通用地支持程序是非常重要的,如果只能完成某類程序的虛擬機化,那這種 zkVM 的通用性將大打折扣。除了通用性以外,簡潔性、遞歸可用性、可組合性和易用性都是其他需要考量的指標。

這裡主要舉例說明下遞歸可用性:

問題:假設計算機只支持兩位數相加,不支持多位數相加和相乘,計算 1+2+3+...+99+100?

非遞歸版解決:

1+2=3,3+3=6,6+4=10,...,4950+100=5050

總共執行了 99 次相加。(這裡不引入迭代的概念,感興趣的自行搜尋學習)

遞歸版解決:

1+2+3+...+99+100

計算 1 和(2+3+...+99+100) 的和即可,至於(2+3+…+99+100)的計算可以重新使用這種方法去解決,也就是 (2+3+...+99+100) 轉換為計算 2 和 (3+...+99+100),如此循環以至符合兩位數相加的限制條件,即 99+100 = 199,然後用 199 去結束遞歸,算出結果。

遞歸可用性可以在解決問題的時候,直接重複使用解決問題的方案。這可以大大簡化實際問題的解決思路。

前面我們提到 zkVM 的使用和區塊鏈沒有硬性關聯,所以,接下來,我們會嘗試探索 zkVM 和區塊鏈的結合。首先,讓我們回到以太坊,這台創新性提出智能合約的世界計算機,或者更技術范地說,分布式的虛擬機。廣義的 EVM(Ethereum Virtual Machine),可以等同於以太坊,包含的模塊有可變的機器狀態、只讀的 EVM 代碼、儲存的帳戶數據。狹義的 EVM,可以指代以太坊虛擬機的只讀 EVM 代碼和 EVM 操作碼。

對於以太坊而言,全網在任何時刻都維護達成共識狀態的主鏈,這條主鏈由最長區塊進行決定。區塊裡面的交易將會驅動以太坊的世界狀態發生變化。我們在抱怨網路的交易吞吐量不夠以及隱私不足的時候,實際根源正是以太坊內部組件自身的瓶頸和缺陷。此刻,讓我們進行無比美好的憧憬,如果整個以太坊的所有模塊都可以進行零知識證明化,那麼交易的執行計算不再需要由以太坊進行處理,以太坊單純只需要完成交易有效性的驗證即可,並且,以太坊內部賬號數據,可以根據需要選擇性地公開透明。這樣一來,以太坊的交易處理能力可以得到大大地釋放,鏈上數據的隱私能力也得以保證。配合當下零知識證明實現的多樣性,以太坊不用侷限於某一類零知識證明的實現,可以兼容性地支持各個主流零知識證明的實現,保持自身的開放性和擴展性。

理想是美好的,但是事實總是骨感,甚至是殘酷的。以太坊在創立時候,是沒有考慮引入零知識證明的,所以,如果以太坊直接零知識證明化,將帶來最大的問題是,以太坊協議的大部分組成將會導致大量的零知識證明計算,這在本質上面並沒有發揮零知識證明的優勢。當然,以太坊協議本身是可以隨著時間和技術的發展發生迭代更新的。如同 PoW 轉成 PoS 這種劃時代性的共識機制變化,以太坊協議的零知識證明化在未來是有可能通過以太坊升級達成的。

  Figure 5: ETHEREUM VIRTUAL MACHINE (EVM)  

Figure 6: ETHEREUM VIRTUAL MACHINE (EVM)

2022 年 8 月 4 日,以太坊創始人 Vitalik 發布文章:《The different types of ZK-EVMs》。該篇文章與此前 Scroll 團隊、以太坊研究員 Justin Drake 提出的以太坊 EVM 分類有異曲同工之妙。我們可以從下面幾張圖更清晰地理解這些 zkEVMs/zkVMs 的設計和優缺點。

Figure 7: The different types of ZK-EVMs

  Figure 8  

Figure 9  

現在,讓我們簡單匯總整個 zkVMs/zkEVMs 技術的團隊或項目的進展。

Figure 10

zkVM 和 zkEVM 的研究和實現,面臨的實現難題不盡相同,也沒有先後依賴順序,因此是可以同步並行推進。具體到設計挑戰和解決方案,可以參考各家項目的資料和文檔。不同項目的對於 zkVM/zkEVM 選擇肯定有自己的考量,目前看來,大部分都會傾向優先 zkEVM 道路,畢竟以太坊擴容的剛需場景一直存在。另外,以太坊本身終極 ZK 目標是,全部兼容。這麼一想,基於 zkEVM 進行研發的項目,未來或許都會進化成多樣的以太坊輕節點客戶端。至於 zkVM,我們只能說,區塊鏈必然是它行進的夥伴,但它遠方的夢想也不止於區塊鏈。

原文連結

暢行幣圈交易全攻略,專家駐群實戰交流

▌立即加入鉅亨買幣實戰交流 LINE 社群(點此入群
不管是新手發問,還是老手交流,只要你想參與虛擬貨幣現貨交易、合約跟單、合約網格、量化交易、理財產品的投資,都歡迎入群討論學習!

前往鉅亨買幣找交易所優惠

文章標籤


Empty