簡介
零知識證明,特別是zk-SNARK(SuccinctNon-interactiveArgumentsofKnowledge)可能是Web3前沿最重要的技術之一。雖然該子領域的大多數媒體和投資的關注都集中在zk-Rollup上,這種擴展解決方案為以太坊等L1區塊鏈提供了巨大的可擴展性,但這絕不是zk-SNARK的唯一應用。在這篇文章中,我們將深入分析零知識匯編代碼(或zkASM)的概念,評估它在zk-Rollup和其他領域的用例,探索它在重新發明我們所知道的互聯網方面的理論可能性。
技術原理
zk-ASM,顧名思義,主要包含兩個技術部分:zk和ASM。zk部分指的是zk-SNARK,而ASM部分指的是匯編代碼。要理解zk-ASM的潛力,我們必須首先理解這兩個看似神秘的概念的理論基礎。
zk-SNARK
zk-SNARK是zk-Proof皇冠上的寶石:它們是一種簡潔的證明,證明某個陳述是正確的,在證明時沒有透露任何關于被證明數據的信息。例如,假設某人斷言“我知道一個m使得C(m)=0”,其中m是一個千兆字節長的消息,C是一個函數。zk-SNARK將是一個非常簡短的證明(<1GB),可以快速驗證,并且不會透露任何關于m的信息(除了公開可用的信息)。
那么C(m)到底是什么?它有什么用?這個函數實際上是一個算數電路,或者是我們想要執行的特定函數的有向無環圖(DAG)表示,如圖所示。“m”本質上是進入電路的輸入數據,電路中的特定“節點”是單獨的邏輯門或算數運算。例如,“+”節點可能有“2”和“3”作為輸入,并將“5”輸出到下一個運算符。因此,可以在“算數電路”中對任意算數或邏輯運算進行編碼。
Brave發布其搜索引擎API,向開發人員開放測試:5月31日消息,隱私瀏覽器 Brave 發布其搜索 API,Brave Search API 支持開發人員通過 API 調用集成來自自數十億頁面的搜索結果,包含 Web 結果、豐富的元數據、實體搜索、新聞、視頻結果等。目前開發人員可在創建賬戶后開始測試 Brave Search API。
Brave Search 是 Brave 瀏覽器的默認搜索引擎,該瀏覽器在全球擁有近 6000 萬用戶。Brave Search API 包含免費方案和付費方案,免費方案中用戶每月最多查詢 2000 次。付費方案中每 1000 次查詢 3 美元起。[2023/5/31 11:49:56]
算數電路的例子。資料來源:https://cs251.stanford.edu/lectures/lecture14.pdf
一旦我們有了這個算數電路作為我們想要運行zk-SNARK的代碼的表示,我們就可以開始構建這個zk-SNARK了。從根本上說,因為“代數基本定理”,使得zk-SNARK是可能的,該定理指出,一個“d”次多項式最多有“d”個根。數學技巧分為兩個步驟:(1)以某種方式將我們想要證明的函數“f(m)”轉換為一個多項式(并堅持下去),(2)使用“代數基本定理”與多項式相互作用,并提供一個簡潔的證明。在技術術語中,第一部分被稱為“PolynomialCommittmentScheme”(PCS:多項式承諾方案),第二部分被稱為“PolynomialInteractiveOracleProof”(PIOP)。
當前加密貨幣總市值為1.2萬億美元:金色財經報道,據CoinGecko數據顯示,當前加密貨幣總市值為1.20萬億美元,24小時漲幅達0.4%,24小時交易量為417.97億美元,當前比特幣市值占比為44.7%,以太坊市值占比為17.7%。[2023/3/27 13:27:58]
通用電路的有效SNARK的組成部分。資料來源:https://cs251.stanford.edu/lectures/lecture15.pdf
雖然PCS和PIOP的具體實現超出了本文的范圍,但到目前為止,我們已經獲得了zk-SNARK核心步驟的粗略草圖:
想運行zk-SNARK,就需要有一個函數的選擇(代碼函數,數學方程等);將此函數編碼為算數電路C(m);運行PCS得到該算數電路的多項式表示;運行PIOP以獲得原始“m”大小的對數的簡潔證明。我們有一個定制的zk-SNARK可以證明某人知道某個信息而不用透露信息是什么。
匯編代碼
zk-ASM的第二個難題是匯編代碼的思想。匯編代碼是一種包含非常低級語言指令的類語言,機器很容易閱讀,但人類很難破譯。與Python、Java等高級語言不同,匯編語言包含非常原始的函數,例如會在處理器和硬編碼內存位置上的一系列數據寄存器上移動、比較、添加和跳轉。例如,在屏幕上打印數字1到9的Python代碼為123456789:
MakerDAO:當前抵押率為154%,PSM儲備金為31.5億美元:3月11日消息,MakerDAO在社交媒體發布最新數據顯示,當前Maker系統抵押率為154%,即53.8億枚DAI由價值82.6億美元的抵押品支持。過去一周MakerDAO沒有觸發清算,系統按預期運作。此外,當前PSM按預期順利運作,儲備金為31.5億美元,以100%抵押支持31.5億 DAI。[2023/3/11 12:57:23]
下面是它的x86匯編版本:
對這么簡單的操作來說,其實變得更麻煩了。那么為什么還要使用匯編語言呢?如上所述,雖然這些指令對人類來說可能不容易閱讀,但它們很容易“組裝”到110011001字節碼中,供機器讀取和執行(這稱為匯編程序)。相對而言,Python和Java等高級語言更易于閱讀,但用這些語言編寫的程序不能直接由處理器執行。相反,我們需要依賴于一個“編譯器”,它咀嚼我們編寫的Python或Java代碼,并吐出一堆匯編代碼,然后由機器組裝和執行。我們可以期望同一段Python或Java在不同的處理器和不同的操作系統上平穩運行,因為編譯器完成了繁重的工作,將源代碼編譯為特定于該處理器或操作系統的匯編語言。
Anchorage推出加密貨幣集成平臺:金色財經報道,加密平臺Anchorage Digital推出了一項新的基礎設施產品,以將企業與加密貨幣聯系起來。該服務將允許金融科技公司通過參與市場、導航加密支付網關和推出金融產品,使用API向加密行業之外擴展。采用新產品的公司包括AngelList和Series Financial。[2022/10/24 16:37:11]
因為所有語言都可以編譯成匯編代碼(匯編代碼本身可以編譯成可執行的二進制代碼),所以匯編程序本質上就像“所有語言之母”。現在假設我們能夠將匯編語言(如x86或RISC-V)中的所有操作數轉換為一種算數電路表示,這樣我們就能夠提供這種匯編語言中所有操作數的zk-SNARK證明。這意味著理論上我們能夠提供任何用任意高級語言(如Python或Java)編寫的程序的zk-SNARK,這些程序可以編譯成匯編語言。這就是為什么我們需要考慮zk-ASM。
實際應用
zk-EVMRollup:Polygonzk-ASM
zk-ASM最重要的應用之一是創建與以太坊虛擬機兼容的zk-Rollup,或zk-EVM。zk-EVM對于區塊鏈的可擴展性非常重要,因為它允許程序員部署在基于zk-Rollup的L2鏈上,而無需修改太多(如果有的話)他們的代碼]。在這個領域,Polygon的zk-EVM是一個典型的案例研究,它展示了如何使用zk-ASM來實現這一目標。
重慶交通開投軌道集團發布軌道系列數字藏品:金色財經消息,6月1日,由重慶交通開投軌道集團、重慶軌道傳媒聯合臭氧層文化推出的重慶軌道首個“軌道連接元宇宙”系列數字藏品《穿梭》,在阿里拍賣平臺上線發行。
據介紹,“軌道連接元宇宙”系列數字藏品,總量為1000份。,以重慶軌道交通為載體,用不同的藝術表現形式,創作了《穿梭》《云端》《山間》《星辰》《橋梁》《元宇宙》六個主題,展現了山城重慶軌道交通的獨特魅力,遇樓穿樓、遇水上橋、云中暢游和花海中游弋的神奇之處,體現了現代軌道交通與自然和城市完美結合的風韻之美。[2022/6/2 3:57:42]
EVM和Polygonzk-EVM技術棧的比較。來源:OriginalContent
當程序員在以太坊L1區塊鏈上開發時,他們通常使用Solidity進行編碼。這種Solidity代碼在執行前會被編譯成一系列EVM操作碼,如ADD、SLOAD和EQ。默認情況下,這個過程顯然不會創建任何類型的zk-Proof。Polygon的訣竅是創建一個方法,將每個EVM操作碼解釋為它們自定義編寫的zk-ASM,這對zk-SNARK非常友好。然后,他們的L2zk-EVM將執行zk-ASM,同時還創建ASM的zk-SNARK電路,以創建zk-SNARK證明。例如,EVM中的ADD操作碼將被翻譯成Polygon的zk-ASM,如下圖:
EVMADD操作碼的Polygonzk-ASM解釋示例。資料來源:https://wiki.polygon.technology/docs/zkEVM/zkASM/some-examples
因為Polygonzk-EVM的招數在匯編級別上,它從普通以太坊程序員接觸的代碼中刪除了兩個級別,即“Solidity”級別。這就是為什么大多數開發人員可以將他們為以太坊主網構建的EVM代碼直接移植到Polygonzk-EVM的原因。此外,由于Polygonzk-EVM將以太坊的技術堆棧“保持”到操作碼級別,所有依賴于分析編譯的操作碼的調試基礎設施都將保持可用和完整。這與其他一些zk-EVM設計不同,例如zkSync,后者不提供操作碼級別的zk-Proof。因此,即使Polygon發明并證明了自己的匯編語言,Vitalik寫道:“它仍然可以驗證EVM代碼,它只是使用了一些不同的內部邏輯來完成它。”
超越Rollup:zk-WASM
zk-EVM絕不是zk-ASM的唯一應用程序。回想一下我們之前的斷言,匯編語言本質上是“所有語言之母”,并且zk-ASM的創建將為用任何編譯成該匯編語言的語言編寫的通用程序解鎖zk-Proof。WebAssembly,或稱WASM,是最重要的新興匯編語言之一。WASM于2018年首次發布,其目的是創建一種匯編語言,以提高Web應用程序的執行速度,并為Javascript(Web背后的主要編碼語言)提供執行補充。
從本質上講,隨著Web多年來的發展,Web應用程序的規模和復雜性不斷增長,這意味著瀏覽器編譯用Javascript編寫的所有內容的速度通常非常慢,并且必須依賴復雜的編譯-優化-重新加載周期。另一方面,WebAssembly通過提供可移植的、模塊化的、易于執行的匯編語言,消除了對復雜瀏覽器執行引擎的依賴。此外,作為一種匯編語言,WASM允許程序員直接用C語言、C++、Rust、Java或Ruby編寫在瀏覽器中本機運行的代碼片段。因此WASM已成為“提供分布式無服務器功能”的首選技術。
那么zk-SNARK為什么會出現,又是如何出現的呢?WASM的獨特之處在于它是一種客戶端技術,能夠直接與用戶輸入和數據交互。因為這通常包括敏感數據,如密碼和個人信息,我們需要一種技術:(1)確保程序正確執行,(2)我們的敏感信息不會被泄露。如上所述,zk-SNARK是解決這兩個問題的完美解決方案,因此是確保WASM安全的重要拼圖。
雖然開發zk-WASM的工作仍處于早期階段,但最近已經有一些項目發布了用于WebAssembly的zk-SNARK電路原型。例如,DelphinusLab的“ZAWA”zk-SNARKEmulator提出了一種將WASM虛擬機的操作數和語義編碼到算數電路中的方法,從而使其能夠進行zk-SNARK證明。隨著時間的推移,zk-WASM電路無疑會不斷優化,從而允許用通用語言(如C語言、C++、Rust和Ruby)編寫的程序采用zk-Proof的范例。
結論
在這篇文章中,我們探索了zk-ASM的理論基礎,并研究了zk-ASM的兩個范例:Polygon使用zk-ASM創建一個操作碼級別的zk-EVM,以及zk-SNARK在WebAssembly上的應用以創建zk-WASM。最終,zk-ASM的承諾是將Web2的互操作性和規模與Web3的可靠性和安全性結合在一起。
一方面,區塊鏈越來越多地尋求超越當前吞吐量瓶頸的擴展,并有可能支持執行,而另一方面,Web2方法因未能充分保護用戶數據和隱私而越來越受到攻擊。由于程序員能夠在他們的Web2代碼中使用Web3設計范例,并在區塊鏈上引入Web2語言和代碼,通用的zk-ASM可能代表Web2和Web3世界中的一個匯合點。正是在這個意義上,zk-ASM可以讓我們重新想象一個安全、無需信任的互聯網。
近期,7upDAO邀請了MaskNetworkFounder@suji_yan、NothingResearchPartner@0x_Todd、SkySagaCapitalFoundingPart.
1900/1/1 0:00:00圖片來源:由MazeAI工具生成2022年馬上過去了,在這不平靜的一年,Web3和crypto有太多的事情值得回味.
1900/1/1 0:00:00*本報告由Beosin、BuidlerDAO、LegalDAO、FootprintAnalytics聯合出品.
1900/1/1 0:00:00文章重點:? 雖然Web3浪潮興起于歐美地區、又在亞洲和中東等地區得到了極大關注,但相比于這些「供大于求」的市場,真正自下而上地從需求端擁抱Web3的是拉美地區.
1900/1/1 0:00:00圖片來源:由無界AI繪畫工具生成2023年1月1日,一款名為《巽風數字世界》的APP登錄AppStore,這是由茅臺和網易聯合推出的虛擬世界APP.
1900/1/1 0:00:002022年是最混亂、最動蕩、金融最殘酷的年份之一,不僅對數字資產行業,對更廣泛的金融市場也是如此.
1900/1/1 0:00:00