簡介
零知識證明,特別是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”輸出到下一個運算符。因此,可以在“算數電路”中對任意算數或邏輯運算進行編碼。
加拿大金融管理局發布加密資產風險監管指導方針草案:金色財經報道,加拿大金融管理局宣布了兩份關于加密資產風險監管資本處理的指導方針草案。加拿大金融管理局表示,將發布新的指導方針,以取代2022年8月發布的有關加密資產風險監管處理的臨時咨詢意見。[2023/7/26 16:00:41]
算數電路的例子。資料來源:https://cs251.stanford.edu/lectures/lecture14.pdf
一旦我們有了這個算數電路作為我們想要運行zk-SNARK的代碼的表示,我們就可以開始構建這個zk-SNARK了。從根本上說,因為“代數基本定理”,使得zk-SNARK是可能的,該定理指出,一個“d”次多項式最多有“d”個根。數學技巧分為兩個步驟:(1)以某種方式將我們想要證明的函數“f(m)”轉換為一個多項式(并堅持下去),(2)使用“代數基本定理”與多項式相互作用,并提供一個簡潔的證明。在技術術語中,第一部分被稱為“PolynomialCommittmentScheme”(PCS:多項式承諾方案),第二部分被稱為“PolynomialInteractiveOracleProof”(PIOP)。
Mysten Labs推出積極貢獻者和早期支持者ACES計劃:金色財經報道,Sui Network背后開發公司Mysten Labs宣布推出積極貢獻者和早期支持者ACES計劃,如果在5月3日Sui主網啟動之前就加入Sui Discord,可于5月18日凌晨2點(UTC+8)之前注冊成為Mysten ACES的一員。本次使用Discord驗證在Sui主網上線前加入的會員資格以及加入日期,在法律認可范圍內,每位社區成員均有資格成為參加ACES計劃的申請人,部分法律不適用的國家和地區可能無法參加。[2023/5/12 14:58:51]
通用電路的有效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:
BlockTower Capital于8小時前將650萬枚YGG解鎖代幣轉至幣安:金色財經報道,據推特用戶余燼監測,8 小時前,BlockTower Capital( MetaDockTeam區塊瀏覽器插件上標簽顯示)從 YGG 解鎖合約領取了 981 萬 $YGG ,然后將 650 萬枚 YGG(約 150 萬美元)轉入了 Binance。
據悉,BlockTower 是 YGG 的種子輪投資機構,自 2021 年 7 月 28 以來,BlockTower 已累計解鎖領取了 1529 萬枚 YGG 。BlockTower 解鎖領取的 1529 萬枚 $YGG 中 100 萬枚 YGG 通過 Uniswap 出售,1098 萬枚 YGG 則轉入了 Binance。按轉入交易所時價格計算,1529 萬 YGG 共計可以售得資金 3244 萬美元,均價為 2.12 美元。其中 390 萬枚 YGG 是在 2021年11月18至22日期間轉入的 Binance ,那幾天正是 YGG 歷史最高點(價格約在8-11美元)。[2023/3/16 13:07:30]
下面是它的x86匯編版本:
10月1日至今,ARK基金共買入33763股灰度GBTC:金色財經報道,ARK方舟基金持倉數據顯示,10月1日至今,ARK基金共買入33763股灰度GBTC。截止周五收盤,GBTC收盤報11.16美元。[2022/10/16 14:29:14]
對這么簡單的操作來說,其實變得更麻煩了。那么為什么還要使用匯編語言呢?如上所述,雖然這些指令對人類來說可能不容易閱讀,但它們很容易“組裝”到110011001字節碼中,供機器讀取和執行(這稱為匯編程序)。相對而言,Python和Java等高級語言更易于閱讀,但用這些語言編寫的程序不能直接由處理器執行。相反,我們需要依賴于一個“編譯器”,它咀嚼我們編寫的Python或Java代碼,并吐出一堆匯編代碼,然后由機器組裝和執行。我們可以期望同一段Python或Java在不同的處理器和不同的操作系統上平穩運行,因為編譯器完成了繁重的工作,將源代碼編譯為特定于該處理器或操作系統的匯編語言。
因為所有語言都可以編譯成匯編代碼(匯編代碼本身可以編譯成可執行的二進制代碼),所以匯編程序本質上就像“所有語言之母”。現在假設我們能夠將匯編語言(如x86或RISC-V)中的所有操作數轉換為一種算數電路表示,這樣我們就能夠提供這種匯編語言中所有操作數的zk-SNARK證明。這意味著理論上我們能夠提供任何用任意高級語言(如Python或Java)編寫的程序的zk-SNARK,這些程序可以編譯成匯編語言。這就是為什么我們需要考慮zk-ASM。
NFT訂閱平臺MintStars獲Polygon Studios投資:8月22日消息,NFT訂閱平臺MintStars宣布獲得了Polygon Studios投資,投資金額未披露。MintStars建立在Polygon上,可以幫助創作者與粉絲更好地互動。[2022/8/22 12:41:31]
實際應用
zk-EVMRollup:Polygonzk-ASM
zk-ASM最重要的應用之一是創建與以太坊虛擬機兼容的zk-Rollup,或zk-EVM。zk-EVM對于區塊鏈的可擴展性非常重要,因為它允許程序員部署在基于zk-Rollup的L2鏈上,而無需修改太多(如果有的話)他們的代碼]。在這個領域,Polygon的zk-EVM是一個典型的案例研究,它展示了如何使用zk-ASM來實現這一目標。
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可以讓我們重新想象一個安全、無需信任的互聯網。
Tags:ASMARKNARPOLjasmy幣下架IcoCryptoMarketCapLunariumApollo Inu
隨著?GameFi?的不斷演進,投資者和玩家已經不再滿足于單調的?PlaytoEarn,各種?XtoEarn?層出不窮。而?TwitFi?則是最近異軍突起的?XtoEarn?機制產品.
1900/1/1 0:00:00摘要 隨著2020年DefiSummer和2021年NFTSummer的狂歡過去,最近越來越多的人將目光開始投射在NFTFi上.
1900/1/1 0:00:00對于Solana來說,2022年是非常重要的一年,既有高峰也有低谷。隨著2023年即將到來,我們將探索明年Solana生態系統中最值得關注的10件事.
1900/1/1 0:00:00緊接著臺北區塊鏈周,NFTTaipei在今日于三創生活園區盛大展開。活動首個節目便邀請到以太坊創辦人VitalikButerin及MaskNetwork創辦人SujiYan進行爐邊談話,談及了零.
1900/1/1 0:00:00「POW’ER香港Web3創新者峰會」將于1月9-10日舉行。峰會由MarsBit主辦,?香港創新產業園區數碼港、G-Rocket高諾國際加速器、element協辦.
1900/1/1 0:00:00前兩天有用英文寫一篇帖子,介紹我認為的GMX現存的一些問題,但那是基于量化交易的角度來看.這兩天又想了下,其實GMX的經濟模型非常有意思,而基于這個經濟模型,也給她帶來了一些.
1900/1/1 0:00:00