時(shí)間:2023-05-14|瀏覽:301
作者:?RISC Zero 高級工程師 Erik Kaneda??譯者:Maxlion
本文將對比 zkEVM 和 zkVM 在技術(shù)上的差異,并介紹 RISC Zero zkVM 及其即將推出的 Bonsai 網(wǎng)絡(luò)。關(guān)于 RISC Zero,它是一個(gè)通用 zkVM,RISC Zero zkVM 是一臺(tái)可驗(yàn)證的計(jì)算機(jī),其工作方式類似于真正的嵌入式 RISC-V 微處理器,使程序員能夠像編寫任何其他代碼一樣編寫 ZK 證明。支持 Rust 和 C++ 編寫 ZK 證明,并支持任何編譯為 RISC-V 的語言。
隨著當(dāng)前智能合約的復(fù)雜性增加,dapp 越來越先進(jìn),區(qū)塊空間越來越稀缺,運(yùn)行鏈上代碼的成本也在增加。換句話說,如果你的 DeFi 邏輯變得計(jì)算昂貴,或者你的鏈上游戲邏輯需要額外的計(jì)算能力,你應(yīng)該考慮使用 zkVM 或 zkEVM,將復(fù)雜的應(yīng)用邏輯移到鏈外。
在這篇博文中,我想解釋在這種情況下,一個(gè)字母所能帶來的不同。我將從 EVM 的概述開始,然后是 zkEVM,再接著是 zkVM。zkEVM 允許你在鏈外傳輸 Solidity 應(yīng)用程序,而 RISC Zero 的 zkVM 和即將推出的 Bonsai 網(wǎng)絡(luò)允許你使用 Rust 編寫可擴(kuò)展的、與鏈無關(guān)的代碼。
EVM 是 Ethereum Virtual Machine(以太坊虛擬機(jī))的縮寫,你可以把它看作是執(zhí)行 Ethereum 上所有交易的軟件。
每個(gè)節(jié)點(diǎn)通過運(yùn)行這個(gè)軟件(如geth等實(shí)現(xiàn))來參與以太坊網(wǎng)絡(luò)。在以太坊中,交易是由代碼表示的,其格式稱為 EVM 字節(jié)碼,代表 EVM 的指令。大體上,這些指令面向數(shù)學(xué)計(jì)算,來獲取區(qū)塊鏈信息,以及交換金錢。世界上有許多虛擬機(jī),每一個(gè)都有自己的專長。以太坊的虛擬機(jī)很關(guān)鍵,因?yàn)樗m合應(yīng)用于去中心化的金融(DeFi)。
最近最酷的趨勢之一是把 "zk "放在單詞的前面,這兩個(gè)字母代表零知識(shí)證明。維基百科上有很多例子(我最喜歡的是 "兩個(gè)球和色盲的朋友 "問題)。如果你對它們不熟悉,我建議此時(shí)花幾分鐘時(shí)間讀一讀零知識(shí)證明的例子。
長話短說,零知識(shí)證明能夠?qū)崿F(xiàn)可驗(yàn)證的計(jì)算。你可以把它看作是一種確保哪些計(jì)算被完成,以及計(jì)算結(jié)果是正確的方法。計(jì)算機(jī)就計(jì)算結(jié)果達(dá)成一致的一種方式是讓每臺(tái)機(jī)器運(yùn)行相同的代碼并比較結(jié)果。根據(jù)不同的計(jì)算,這對資源有限的系統(tǒng)來說可能很昂貴。通過使用像 RISC Zero 這樣的零知識(shí)證明框架,機(jī)器可以通過檢查證明的數(shù)學(xué)有效性來確保計(jì)算的正確執(zhí)行,而不是重復(fù)運(yùn)行相同的代碼(如EVM)。
在 RISC Zero,我們把這些證明稱為 "收據(jù)"(receipts),在博客的其余部分,我將使用這個(gè)術(shù)語。每張收據(jù)都包括一個(gè)加密標(biāo)識(shí)符,表明進(jìn)行了哪項(xiàng)計(jì)算,以及計(jì)算的任何公共輸出的日志。雖然這可能看起來是一個(gè)簡單的概念,但它意味著機(jī)器可以生成收據(jù)來 "證明 "計(jì)算已經(jīng)完成。
術(shù)語 zkEVM 是用來描述在 EVM 字節(jié)碼引擎上運(yùn)行智能合約的軟件,并為特定的計(jì)算(或交易)生成收據(jù)。這個(gè)軟件通??梢宰C明兩個(gè)或多個(gè)收據(jù)是有效的,并生成另一個(gè)收據(jù)。通過使用這種機(jī)制,zkEVM 可以運(yùn)行許多交易,并使用一個(gè)收據(jù)來表示它,這被稱為 "Rollup"。用 Solidity 編寫的項(xiàng)目可以使用 zkEVMs 來擴(kuò)展交易,而不是在鏈上進(jìn)行所有計(jì)算,在區(qū)塊鏈上發(fā)布一個(gè)單一的收據(jù)來代表許多發(fā)生在鏈外的交易。zkEVM 有很多類型,如果你想了解它們,你可以在這篇文章中閱讀更多。
在 RISC Zero,我們實(shí)現(xiàn)了一個(gè)零知識(shí)虛擬機(jī)(zkVM),而不是一個(gè) zkEVM。兩者之間的區(qū)別在于,"VM",即 "虛擬機(jī)",比 EVM 更通用。
在 zkVM 上,你可以運(yùn)行幾乎所有在計(jì)算機(jī)上運(yùn)行的軟件,而不是任何可以在以太坊上運(yùn)行的軟件。這種計(jì)算機(jī)使用 RISC-V 架構(gòu),這是一套用于通用計(jì)算的指令。這意味著 RISC-V 并沒有內(nèi)置錢包地址或其他區(qū)塊鏈結(jié)構(gòu)的概念。該指令集主要由在內(nèi)存位置之間移動(dòng)數(shù)據(jù)和對數(shù)據(jù)進(jìn)行數(shù)學(xué)運(yùn)算的運(yùn)算符組成。雖然這個(gè)指令集可能看起來過于籠統(tǒng),但并不要求程序員知道如何用匯編語言編程,以便為這個(gè) zkVM 編寫程序。
與 EVM 相比,這個(gè)底層的 RISC-V 模擬器允許程序員用 Rust、C/C++和 Go 等語言為 zkVM 編寫程序(注意,我們目前支持Rust,我們對C/C++和Go的支持目前正在進(jìn)行中)。這意味著 zkVM 的程序員可以使用別人在該語言的生態(tài)系統(tǒng)中開發(fā)的相關(guān)庫。一個(gè)例子是,我們可以運(yùn)行玩 Wordle 或 Where's Waldo 等游戲的程序。然而,我們并不局限于簡單的游戲:你可以運(yùn)行許多其他編譯為 RISC-V 的程序。
如果你想了解更多幫助你寫出更好的 DeFi 應(yīng)用的框架,你可能會(huì)想知道為什么我們正在研究 RISC Zero 這樣一個(gè)通用的計(jì)算框架。
**通過允許用戶使用通用語言編寫程序,我們打開了在 Solidity 庫之外編寫代碼的可能性。**這意味著應(yīng)用邏輯不需要局限于可以用 Solidity 表達(dá)的內(nèi)容,并允許你寫出與鏈無關(guān)的代碼。像 Rust 這樣的通用語言允許開發(fā)者比那些為特定目的而設(shè)計(jì)的語言更容易編寫不同類型的程序。例如,你可以用 Rust 編寫一個(gè)簡單的算術(shù)計(jì)算器,它接受一個(gè)數(shù)學(xué)表達(dá)式作為輸入,運(yùn)行數(shù)學(xué)計(jì)算,并將解決方案作為輸出返回。如果你增加這個(gè)計(jì)算器的復(fù)雜性,以支持常見的編程語言結(jié)構(gòu),如變量、循環(huán)和函數(shù),你就實(shí)現(xiàn)了一個(gè)簡單的語言解釋器,將程序作為輸入,運(yùn)行程序,并將解決方案作為輸出返回。這些程序可以被編譯成 RISC-V 并在 RISC Zero 的 zkVM 上運(yùn)行。有了 Rust,你可以使用現(xiàn)有的 crates 來為你的應(yīng)用程序編程,而不是從頭開始編寫一切。
一個(gè)這樣的庫是 Rust 上的 revm crate。這個(gè) crate 是用 Rust 編寫的 EVM 的一個(gè)實(shí)現(xiàn)。通過使用這個(gè) crate,我們可以在 zkVM 上運(yùn)行一個(gè) EVM 字節(jié)碼解釋器。這意味著你可以在運(yùn)行在 zkVM 上的 EVM 字節(jié)碼解釋器上運(yùn)行 solidity 合約! 通過這樣做,zkVM 會(huì)產(chǎn)生一個(gè)收據(jù),代表運(yùn)行智能合約的 EVM 的執(zhí)行。這在 Odra 的這篇博文中已經(jīng)進(jìn)行了探討,并被 zkPoEx 團(tuán)隊(duì)用來提高 bug 賞金。
隨著當(dāng)前智能合約的復(fù)雜性增加,許多人發(fā)現(xiàn)他們維護(hù)的鏈上代碼只會(huì)隨著他們的開發(fā)而增加成本。換句話說,如果你的 DeFi 邏輯逐漸變得計(jì)算昂貴,或者你的鏈上游戲邏輯需要額外的計(jì)算能力,RISC Zero 的 zkVM 和即將推出的 Bonsai 網(wǎng)絡(luò)允許你使用通用編程語言編寫可擴(kuò)展的鏈上代碼。我在這篇博文中列舉了幾個(gè)例子,我們正處于真正可擴(kuò)展的計(jì)算網(wǎng)絡(luò)的最開始。如果你想看看這是怎么回事,今天就開始吧,加入我們的社區(qū),注冊 Bonsai,幫助建立一個(gè)去中心化和可擴(kuò)展的全民互聯(lián)網(wǎng)。
熱點(diǎn):kvb外匯 okex網(wǎng) okex token CAKE幣