序言
二級標題
序言
目錄:
零知識證明的投資方向
目錄:
零知識證明和隱私
零知識證明和擴容
零知識證明和隱私
零知識證明的投資方向
零知識證明的投資方向
二級標題"二級標題"零知識證明的投資方向
零知識證明的定義

Figure 1: Proof without ZKP and with ZKP
進行的證明和驗證,其中知識的所有方也即證明方,另一方則對應是驗證方。
圖片描述圖片描述"我們用一張草圖,直觀地解釋零知識證明能夠實現什麼。"圖片描述
從這張圖中,我們可以提煉出零知識證明的三個性質::誠實的證明方,對
合理性(Sound)知識為真
合理性(Sound)

:整個證明,驗證方除了”知識為真“這一論斷,不會獲得其他與知識相關的機密。
圖片描述
圖片描述
這三個性質用大白話講,那就是:真的假不了;假的真不了;未知是真的,未知依然未知。第三個性質換一種更加通俗的說法,我說了“什麼是真的”,你驗證了“什麼是真的“,但是你不知道什麼是什麼。
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。3,李四用自己最樸素的加法檢驗結果是否正確,若正確,張三懂高斯算法。和為了實現非交互式證明的模擬器/圖靈機核心功能,現在的技術方案大概有:和
和
隨機預言(Random Oracle)和
,而其中公共參考串是廣泛使用的方案。我們認為,隨機預言和公共參考串沒有太大本質的差別。公共參考串CRS 必須由一個受信任的第三方進行生成,然後共享給證明方和驗證方。這裡,CRS的生成必須保證隨機可信,因此,產生CRS的環節也稱為可信設置,Trusted Setup。

至於QAP/QSP,布爾電路和算數電路,我們都簡單粗暴地將它歸為非交互式證明過程中的具體步驟即可。世間數學證明題千千萬,解題證明的時候,都需要編寫對應的解題步驟。同理,對於不同知識下面的零知識證明,電路也是需要專門編寫的。當然,也有某類知識的證明可以通過共用電路框架簡化編寫的過程。對於不同的數學證明題,我們要寫出單獨的答題步驟(專用電路),而某一類數學證明題,我們可以寫出通用的答題步驟(通用電路),甚至,有一類題目,我們可以直接引用另一類題目已經寫好的答題步驟/結論。 (電路的可組合性/交互性)。
圖片描述
圖片描述
順著前面的數學證明題講講電路的位置
圖片描述
Figure 3: 電路的類比
至於其他的概念或者術語,例如一階約束系統R1CS、NP問題、多項式、多項式的知識、因式分解、模糊計算、信息、知識、電路可滿足性、完全安全、語義安全、不可區分性、映射、同態、有限域、循環群、Fiat-Shamir 變換、ECDSA簽名......由於涉及到太過概念和數學計算,除非是數學和密碼學專家,不建議花費過多腦力和精力在這方面。我們只需要知道的關鍵信息是:不同的零知識證明實現方案在於可信設置的引入與否、可信設置的適用性以及電路的編寫難易。
對於不同的零知識證明實現方案而言,我們可以用證明方和驗證方的時間開銷和空間開銷,以及安全性,這五個維度是判定實現方案的優劣。
證明方的時間開銷:也即計算時間,決定證明的快慢;
驗證方的時間開銷:也即驗證時間;
安全性:由於部分的協議需要引入可信設置,對應的實現方案在安全性方面會依賴可新設置。另外,可信設置也存在適用性的差異,也就是“永久型”和“一次型”之分。
實現方案的不同,最終分成了零知識證明的兩大派系協議:zk-SNARK零知識簡潔非交互式知識論證和zk-STARK零知識可擴展透明知識論證。
二級標題

Figure 4:Polygon Miden Deep Dive zkVM
零知識證明的虛擬機圖片描述。
圖片描述
在探討實現方案的不同後,我們接下來探討方案落地的關鍵。現在互聯網的應用和產品都是採用高級編程語言(C++,Java,Rust,Solidity......)實現的程序。虛擬機/解釋器是程序執行的黑盒子,可以將程序轉換成為機器可以識別和理解的語言,然後代替機器運行程序。如果沒有零知識證明的虛擬機,我們在使用零知識證明技術編寫程序的時候,需要專門為程序編寫對應的實現電路。這類電路的編寫、測試和生產使用是非常困難和低效的。為此,要讓零知識技術的使用更加廣泛和高效,可以為程序生成證明的提交和驗證的零知識證明版虛擬機(zkVM)就是必然需要的。至於zkVM採納的高級編程語言到底是C++、Java還是專門設計的電路編程高級語言(Stareware的Cairo、zkSync的Zinc),這些取決於zkVM的設計和能力。需要強調的是,zkVM是沒有硬性使用區塊鏈的要求的。
圖片描述
1+2=3,3+3=6,6+4=10,...,4950+100=5050
對於zkVM而言,可以通用地支持程序是非常重要的,如果只能完成某類程序的虛擬機化,那這種zkVM的通用性將大打折扣。除了通用性以外,
簡潔性、遞歸可用性、可組合性和易用性都是其他需要考量的指標
1+2+3+...+99+100
這裡主要舉例說明下遞歸可用性:問題:假設計算機只支持兩位數相加,不支持多位數相加和相乘,計算1+2+3+...+99+100?。
非遞歸版解決:
總共執行了99次相加。 (這裡不引入迭代的概念,感興趣的自行搜索學習)
遞歸版解決:
圖片描述

Figure 5: ETHEREUM VIRTUAL MACHINE (EVM)

Figure 6: ETHEREUM VIRTUAL MACHINE (EVM)
圖片描述

Figure 7: The different types of ZK-EVMs

Figure 8

Figure 9
圖片描述

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


