以太幣交易所 以太幣交易所
Ctrl+D 以太幣交易所
ads
首頁 > 火星幣 > Info

Scroll 研究:zkEVM 的設計挑戰和解決方案_ROL

Author:

Time:1900/1/1 0:00:00

zk-Rollup 是一種非常便宜且安全的以太坊二層擴展解決方案。然而,現有的 zk-Rollup 只限于特定應用程序使用,這使得開發人員在 zk-Rollup 中構建通用的可組合 DApp 和遷移現有應用程序變得困難。我們通過引入 zkEVM 生成 zk 證明用于 EVM 驗證來構建完全兼容 EVM 的 zk-Rollup,任何以太坊應用程序都可以輕松遷移到該 zk-Rollup。

本文介紹 zkEVM 的設計挑戰以及可行性,并提出了從零開始構建 zkEVM 的詳細方案。

zk-Rollup是公認的以太坊最佳擴容解決方案。不僅具有以太坊 Layer 1 的安全性,并且與所有其他 Layer 2 解決方案相比,交易速度最快。

從中長期來看,隨著 ZK-SNARK 技術的改進,ZK rollups 將在所有用例中勝出。— Vitalik Buterin

zk-Rollup 的基本理念是將大量交易聚合到一個 Rollup 塊中,并為鏈下的塊生成簡潔的證明。然后 Layer 1 上的智能合約只需要驗證zk-Rollup的證明并直接更新狀態,無需重新執行那些交易。證明驗證狀態比重新執行計算的 gas 費用便宜很多,另外數據壓縮(即只保留最少的鏈上數據進行驗證)利于降低 gas 費用,這樣的交易流程節省一個數量級的 gas 費用。

盡管 zk-Rollup 安全高效,但很難構建通用 DApp,其應用仍僅限于支付和互換(swap),主要是以下兩個原因:

首先,在 zk-Rollup 中開發 DApp 需要使用特殊的編程語言(即 R1CS )來編寫智能合約的邏輯。該編程語言的語法復雜,而且要求開發者精通零知識證明。

其次,當前的 zk-Rollup 不支持可組合性。這意味著多個的 zk-Rollup 應用程序不能在 Layer 2 內相互交互,極大地降低了 DeFi 應用程序的可組合性。

簡而言之,目前 zk-Rollup 對開發人員不友好并且功能有限。 我們希望解決這些問題,通過直接支持原生 EVM 驗證,為開發人員提供快速開發體驗,支持 Layer 2 內應用程序的可組合性,以便現有的以太坊應用程序可以輕松遷移到 zk-Rollup 上。

Scroll聯合創始人Sandy Peng:Scroll將在未來三到四個月上線主網:4月10日消息,在《華人之光|世界矚目的華人Web3項目》圓桌論壇中,基于ZK Rollup的以太坊擴容網絡Scroll聯合創始人Sandy Peng表示,Scroll正在以二層網絡的方式解決以太坊網絡相對擁堵的需求,為開發者提供EVM等效性,在提供以太坊安全的同時確保低成本、高效率和去中心化。

Scroll在發展的過程中把開發者和社區的訴求放至第一位,近期可能會推出激勵生態發展的合作伙伴計劃,未來三到四個月將上線主網。(foresightnews)[2023/4/10 13:54:21]

在 zk-Rollup 中有兩種構建通用 DApp 的方法。

為不同的 DApp 構建專用電路(“ASIC”)

為智能合約執行構建一個通用的“EVM”編碼

“ 電路(circuit)”是指零知識證明中使用的程序表示方法。例如,如果要證明 hash(x) = y,則需要使用 ASIC 電路重新編寫散列函數。電路只支持非常有限的計算表達式(例如 R1CS 只支持加法(add)和乘法(mul))。因此,開發人員使用電路語言編寫程序的過程非常困難,必須使用 add 和 mul 構建所有程序邏輯(包括 if else、循環等)。

第一種方法要求開發人員為不同的 DApp 設計專門的“ASIC”電路,這需要使用零知識證明最原始的方式。通過設計定制電路減少每個 DApp 的成本。然而,由于電路是“靜態的”,不能為應用提供可組合性,并且需要專業的電路設計知識,因此開發體驗很糟糕。

第二種方法不需要任何特殊的設計或電路專業知識。這種基于機器證明的高級思想讓任何程序可以在 CPU 上運行,因此開發者只需要構建一個通用的 CPU 電路來驗證底層步驟。然后使用這個 CPU 電路來驗證程序的執行。在此場景中,程序指的是智能合約,CPU 則是 EVM。但是,由于成本過高,過去幾年并沒有普遍采用這種方法。例如,即使開發者只想增加一個驗證步驟,就需要承擔整個 EVM 電路的成本。如果執行跟蹤中有數千個步驟,那么 EVM 電路成本將是 1000 倍。

Web3智能合約錢包Unipass上線Scrollpre-alpha測試網:12月19日消息,Web3智能合約錢包Unipass現已部署在以太坊擴容項目Scrollpre-alpha測試網上。Unipass是一個建立在MPC密鑰管理之上的智能合約錢包,用戶可以使用電子郵件和密碼注冊,并且支持on-chain Email社交恢復,幫助用戶方便地管理他們的私鑰,而無需使用Web2用戶不熟悉且容易出錯的助記詞等工具。[2022/12/19 21:53:37]

最近,有很多研究在按照這兩種方法優化 zk 證明,包括:

(i)提議新的零知識證明友好型語言 Poseidon hash ,其在電路中的效率是 SHA256 的 100 倍

(ii)通用可驗證虛擬機,如TinyRAM

(iii)) 越來越多的通用優化技巧,如 Plookup,以及運行速度更快的密碼學庫。

我們之前建議為每個 DApp 設計“ASIC”電路,通過驗證密碼進行通信。但是,根據社區的反饋,我們改變了優先級,將重點關注在第二種方法,優先構建通用 EVM 電路(所謂的“zkEVM”)。zkEVM 將支持與 Layer 1 完全相同的開發體驗。我們不會將底層設計的復雜性留給開發人員,而是通過定制的 EVM 電路設計來解決效率問題。

zkEVM 很難構建,與 TinyRAM 不同,zkEVM 的設計和實現更具挑戰性,原因如下:

首先,EVM 對橢圓曲線的支持有限。目前,EVM 僅支持 BN254 配對,不直接支持循環橢圓曲線,因此很難進行遞歸證明。其他專用協議在此限制下也很難使用,除非是 EVM 兼容的驗證算法。

其次,EVM 字長為 256 位。EVM 在 256 位整數上運行(大多數常規 VM 在 32-64 位整數上運行),而 zk 證明在素數字段上工作。在電路內部進行“不匹配場算術”需要范圍證明,這將在每個 EVM 步驟中增加大概 100 個約束,導致 EVM 電路尺寸擴大兩個數量級。

第三,EVM 有很多特殊的操作碼。EVM 與傳統 VM 不同的是有許多特殊的操作碼,例如CALL,還有執行上下文和 gas 相關的錯誤類型。這將給電路設計帶來新的挑戰。

Scroll高級研究員:Scroll正在測試L1、L2之間的資產跨鏈功能:7月28日消息,Scroll高級研究員Toghrul Maharramov在推特發布一張類似Hop Protocol的UI,正在進行從以太坊到Scroll進行USDC跨鏈的圖片。

Scroll團隊表示目前其正在測試L1、L2之間的資產跨鏈功能,該測試跨鏈橋僅僅使用Hop Protocol的UI,代碼則是由團隊自主研發。[2022/7/28 2:43:34]

第四,EVM 是基于堆棧的虛擬機。SyncVM ( zksync ) 和 Cario (starkware) 架構在基于寄存器的模型,并定義了特定的 IR/AIR。需要專門的編譯器將智能合約代碼編譯成新的 zk 友好的 IR。這種方法是語言兼容而不是原生 EVM 兼容,基于堆棧的模型和直接支持原生工具鏈更難實現。

第五,以太坊存儲布局的成本太大。以太坊存儲布局高度依賴 Keccak 和 MPT ,它們都不是 zk 友好類型,并且會產生高昂的成本。例如,Keccak 哈希的電路大小是 Poseidon hash 的 1000 倍。但是,如果將 Keccak 替換為另一個哈希,則會對現有的以太坊基礎設施造成一些兼容性問題。

第六,基于機器的證明有高昂的成本。即使能夠妥善處理上述所有問題,仍然需要找到一種有效的方法將它們組合在一起以獲得完整的 EVM 電路。正如我在上一節中提到的,簡單的操作碼add可能會導致整個 EVM 電路的成本。

感謝研究人員在這方面取得的巨大進步,近兩年來解決的效率問題越來越多,證明了 zkEVM 的可行性!主要的技術進步來自以下幾個方面:

多項式承諾(polynomial commitment)的使用。在過去的幾年里,大多數零知識證明協議都在使用 R1CS,PCP 查詢被編碼到了特定于應用的受信任起步設置(trusted setup)中。。這種情況通常會使電路會超出負載,并且無法進行自定義優化,因為每個約束的程度需要為 2(雙線性配對(bilinear pairing)僅允許指數中的一次乘法)。開發者使用多項式承諾方案可以通過通用設置(universal setup)或者透明設置(transparent setup)將約束提升到任何程度,大幅提高后端的選擇的靈活性。

SumSwap節點權益通證SCROW半小時上漲至20萬USDT,漲幅達30倍左右:據官方消息,SumSwap節點權益通證SCROWN上線uniswap去中心化交易,僅半小時上漲至20萬USDT,漲幅達到30倍左右。SCROWN是數學創新型協議SumSwap的節點權益通證,總共400枚,不可增發,可以銷毀,成功競選為SumSwap節點獲贈一枚SCROWN。每一枚完整的SCROWN代表一份節點權益,小于1的小數部分不算權益。權益包括:SumSwap平臺手續費分紅、各項優惠活動及后期各種福利等。SCROWN可轉賬,轉賬后節點權益也隨之轉向該地址(認購的SUM不轉移)。在SumSwap開啟交易后,SCROWN也會上線SumSwap交易。SCROWN合約地址:0x62edd284cd681539e81492a4dbbb2ee715a353d4

邀請十人并向競選節點地址轉入10000USDT即可成為節點。[2021/4/17 20:31:27]

數據表查詢參數和自定義小工具。優化數據表查詢參數首先由 Arya 中提出,然后在 Plookup 中進行優化。這可以為 zk 不友好的編程語句(例如 AND、XOR 等)省略很多按位運算。定制小工具可以讓開發者高效地進行高度約束。 TurboPlonk 和 UltraPlonk 定義了優雅的語法,以便開發者更輕松地使用查詢數據表和自定義小工具。這對于減少 EVM 電路的成本非常有幫助。

遞歸證明的可行性越來越高。在過去遞歸證明依賴于特殊的循環橢圓曲線(即基于 MNT 曲線的構造),需要大量的成本。目前更多的技術在不犧牲效率的前提下改變這種依賴情況。例如,Halo可以配對友好橢圓曲線,并使用特殊的內積參數來分攤遞歸成本。Aztec 表明可以直接對現有協議進行聚合證明(查詢數據表可以減少非本地字段操作的成本,從而降低驗證電路的成本)。這種方法可以極大地提高電路負載量的可擴展性。

硬件加速更加高效。我們制造了 GPU 和 ASIC/FPGA 加速器,并且關于 ASIC 證明者的論文已經被最大的計算機會議(ISCA)接受。GPU 證明器比Filecoin 的實現快大約 5 到 10 倍。這將大幅提高證明器的計算效率。

兩筆共10億枚XRP從Ripple?Escrow錢包解鎖 價值約4.16億美元:Whale Alert數據顯示,北京時間3月1日08:00,兩筆共10億枚XRP從Ripple?Escrow錢包解鎖,價值約4.16億美元,交易哈希分別為5D81B5C346FBCC6DDE06F30810BA01B1D1141A1198B7F84E58C836645CDE83D6和17DD3E166702B1D7A2206DDAA31372870EA5F8A5A7D0F4FA2AC12B995A9CE08E。注:按照慣例,Ripple 會在每個月的第一天解鎖10億枚XRP。但這些資金中的大部分通常會在同一天的晚些時候重新鎖定在托管錢包中。[2021/3/1 18:02:07]

除了強大的直覺和技術改進之外,我們還需要更清楚地知道我們需要證明什么,并制定出更具體的架構。我們將在后續文章中介紹更多技術細節和比較。在這里,我們描述了總體工作流程和一些關鍵思想。

開發人員和用戶的工作流程

開發人員可以使用任何與 EVM 兼容的語言來運行智能合約,并將編譯后的字節碼部署在 Scroll 上。然后,用戶可以發送交易與智能合約進行交互。用戶和開發者的體驗將與 Layer 1 完全相同。但是,gas 費用顯著降低,并且在 Scroll 上的交易訂單即時預先確認(提款只需幾分鐘即可完成)。

zkEVM 的工作流程

即使 Layer 1 和 Layer 2 表面上的工作流程沒有太多差別,但二者的底層處理過程完全不同:Layer 1 依賴于智能合約的重新執行;Layer 2 依賴于 zkEVM 電路的有效性證明。

讓我們更詳細地解釋 Layer 1 和 Layer 2 交易的情況有何不同。

在 Layer 1 ,智能合約的字節碼存儲在以太坊存儲中,交易將在 P2P 網絡中廣播。對于每個事務,每個全節點都需要加載相應的字節碼并在 EVM 上執行以達到相同的狀態(事務將作為輸入數據)。

Layer 2 的智能合約字節碼也以相同的方式進行操作,但后續步驟是交易將在鏈下發送到一個集中的 zkEVM 節點。然后,zkEVM 執行字節碼并生成一個簡潔的證明,以證明在應用交易后狀態已正確更新。最后,Layer 1 合約將驗證證明并更新狀態,而無需重新執行交易。

讓我們深入了解一下執行過程,看看 zkEVM 最終需要證明什么。在原生執行中,EVM 首先加載字節碼,然后從頭開始逐個執行字節碼中的操作碼,對每個操作碼執行以下三個子步驟:

(i)從堆棧、內存或存儲中讀取元素

(ii)對這些元素執行一些計算

(iii)將結果寫回堆棧、內存或存儲。例如,add操作碼需要從堆棧中讀取兩個元素,將它們相加并將結果寫回堆棧。

所以 zkEVM 的證明需要包含與執行過程相對應的以下幾個方面:

字節碼從存儲中正確加載 (以便虛擬機正確地運行從給定地址加載的操作碼)

字節碼中的操作碼逐個執行 (字節碼按順序執行,不會丟失或跳過任何操作碼)

每個操作碼都正確執行 (每個操作碼中的三個子步驟都正確執行讀寫和計算)

zkEVM 設計亮點

在設計 zkEVM 的架構時,我們需要處理/解決上述三個問題。

第一,為密碼驗證器設計一個電路。這部分就像一個“可驗證的存儲”,我們通過使用密碼驗證器這種技術手段來保證驗證結果的正確性。 以默克爾樹為例,部署的字節碼將作為葉節點存儲在 Merkle 樹中。然后驗證者可以使用簡潔的證明來驗證從給定地址加載的字節碼(即驗證電路中的默克爾路徑)。對于以太坊存儲,則需要電路兼容 Merkle Patricia Trie 和 Keccak 哈希函數。

第二,設計一個電路來將字節碼與真實的執行產生關聯。將字節碼轉移到靜態電路中會帶來一個問題:像 jump 這樣的條件式操作碼(與智能合約中的 loop、if else 語句相對應)可能會跳轉到任何地方。在某個人使用特定輸入運行該字節碼之前,跳轉目的地都是不確定的。這就是為什么我們需要驗證實際的執行蹤跡。執行蹤跡可以被認為是 “展開的字節碼”,包含按實際執行順序排列的操作碼(即,如果你跳轉到另一個位置,蹤跡中將包含該目標操作碼和位置)。

證明者將直接提供執行蹤跡作為電路的見證數據。我們需要證明該執行追蹤是通過特定字節碼使用特定的輸入 “展開” 的工作,目的是強制讓程序計數器的值保持一致。針對目的地不確定的問題,解決思路是讓證明者提供一切數據。然后通過查找參數高效地檢查一致性(即,證明帶有準確全局計數器的操作碼包含在 “總線” 中)。

第三,為每個操作碼設計電路(證明每個操作碼中的讀寫和計算都是正確的)。這是最重要的部分,證明執行跟蹤中的每個操作碼都是正確且一致的。如果將所有東西直接放在一起,將會帶來高昂的成本。這里的優化方案是:

1)我們將讀寫和計算分成兩個證明。一個證明會將所有操作碼用到的元素都放到 “總線” 中,另一個證明會證明對 “總線” 上元素的計算是正確執行的。這會大幅降低每個部分的成本(生成計算證明時無需考慮整個 EVM 存儲)。前者被稱為 “狀態證明”,后者被稱為 “EVM 證明”。另一個發現是,查找聲明可以有效處理 “總線映射” 。

2)我們可以為每個操作碼設計度數更高的定制化約束(即,我們可以將一個 EVM word 切分成多個數據塊,以便更高效地處理)。我們可以選擇是否根據需求通過一個選擇符多項式來 “打開” 一個約束。這樣可以避免每個操作都要消耗整個 EVM 電路的成本。

這個架構最初由以太坊基金會提出,依然處于早期階段,正在積極開發中。我們正在與以太坊基金會進行密切合作,旨在找到最佳方式實現該 EVM 電路。迄今為止,我們已經定義了 EVM 電路最重要的特點,并(使用 Halo2 庫中的 UltraPlonk 語法)實現了一些操作碼。更詳細的內容將在后續文章中介紹。我們推薦感興趣的讀者閱讀這篇文檔。開發流程將是透明化的。這將是集整個社區之力的完全開源的設計。希望會有更多人加入進來,貢獻出一份力量。

zkEVM 還能帶來什么?

zkEVM 遠不僅僅是 Layer 2 擴容。我們可以將它理解為通過 Layer 1 有效性證明擴展以太坊 Layer 1 的直接方式。這意味著不需要任何特殊的 Layer 2 就可以擴展現有的 Layer 1。

例如開發者可以將 zkEVM 當作全節點來使用,該證明可以用來直接證明現有狀態之間的轉換。所有 Layer 1 交易無需將任何東西遷移到 Layer 2 上,你可以直接證明!更寬泛地來說,你可以使用 zkEVM 為整個以太坊生成簡潔證明,就像 Mina 那樣。唯一需要增加的東西是證明遞歸(將區塊的驗證電路嵌入 zkEVM)。

結論

zkEVM 可以為開發者和用戶提供相同的體驗。在不犧牲安全性的情況下,它的價格要便宜幾個數量級。已經提出了以模塊化方式構建它的架構。它利用最近在零知識證明方面的突破來減少成本(包括自定義約束、查找參數、證明遞歸和硬件加速)。我們期待看到更多的人加入 zkEVM 社區,與我們一起集思廣益!

備注:

:?Starkware 于 2021 年 9 月 1 日的公告中聲明已實現可組合性。

: 電路是固定且靜態的。例如,在將一個程序實現為電路時,你無法使用可變上限循環。上限必須固定為最大值。電路無法處理動態邏輯。

: 為便于讀者理解,我們在這里詳細說明 EVM 電路的成本。正如前文所言,電路是固定且靜態的。因此,EVM 電路需要包含所有可能的邏輯(這個體量是僅包含 add 的電路的 10000 倍)。這就意味著,即使你只想證明 add,你依然需要負擔該 EVM 電路中可能包含的所有邏輯的成本。也就是說,成本被放大了 10000 倍。在執行追蹤中,你需要證明一連串操作碼,而且每個操作碼都會帶來高昂的成本。

: EVM 本身并沒有與默克爾-帕特里夏樹(MPT)緊密綁定。目前,MPT 僅用于存儲以太坊狀態。要換一個很容易(有人提議使用 Verkle 樹替換掉 MPT)。

: 這是經過高度簡化的抽象概念。從技術上來說,“EVM 狀態” 的名單更長,包括程序計數器、gas 余量、調用棧(以上所有加上堆棧中每次調用的地址和靜態)、一組日志和交易范圍變量(熱存儲槽、退款、自毀)。我們可以另外引入針對不同調用環境的標識符來直接支持可組合性。: 由于存儲量很大,我們使用累加器進行存儲。內存和堆棧可以使用可編輯的 Plookup(我們可以通過這種方式有效地實現 “RAM”)。

: 將一個完整的遞歸證明添加進 zkEVM 電路并非易事。實現遞歸的最好方式還是使用循環橢圓曲線(即,Pasta 曲線)。我們需要引入某種 “包裝(wrapping)” 過程讓遞歸在以太坊 Layer 1 上可驗證。

編譯:餅干,鏈捕手

Tags:ROLROLLCROLAYERroll幣可以roll坐騎嗎TROLL幣CROGELAYERX價格

火星幣
館藏“文物” 能發NFT并售賣嗎?_NFT

文物NFT是一種以館藏文物作為素材,鑄造并發行的特殊NFT,作為承載了中國歷史文化和民族精神的物質載體,此類NFT與其他NFT存在顯著的不同.

1900/1/1 0:00:00
Web 3.0的浪潮:科學DAO不能缺席_WEB

來源公號:老雅痞 科學是知識和進步的基礎,作為一種基本的公共產品,科學需要可靠、透明和公開的訪問。本文討論了科學的現狀如何在所有這些方面得到改善.

1900/1/1 0:00:00
日本游戲巨頭SE變賣IP發展區塊鏈游戲 是“精明探險”還是“盲目開拓”?_NFT

昨日,日本視頻游戲開發商 Square Enix?宣布,正在出售旗下部分工作室和 50 多個游戲 IP——包括傳奇工作室 Crystal Dynamics、Eidos-Montréal、Squa.

1900/1/1 0:00:00
富達將允許用養老金賬戶投資比特幣_比特幣

加密貨幣的擁護者和對其感到好奇的人突然發現,資產管理巨頭富達(Fidelity)將開始允許投資者將比特幣存入他們的401(k)退休儲蓄賬戶里了.

1900/1/1 0:00:00
“朝鮮黑客”來面試區塊鏈工程師是一種怎樣的體驗?_BOB

有一個疑似“朝鮮黑客”的工程師來面試是一種怎樣的體驗?隱私協議aztecnetwork的工作人員Jonwu有話要說,他就遇到了這樣的面試者,面試過程讓他覺得又好笑又恐懼,特別是面試者寫的一句.

1900/1/1 0:00:00
金色早報 | 馬斯克回應狗狗幣創始人:使用狗狗幣給創作者小費會“很好”_區塊鏈

頭條 ▌馬斯克回應狗狗幣創始人:使用狗狗幣給創作者小費會“很好” 行情 截至發稿,據歐科OKX數據顯示:BTC最近成交價39446.4美元.

1900/1/1 0:00:00
ads