zkSync 2.0:比較zkSync 2.0 和以太坊,首個測試網版本上線

ZKSYNC 2.0 測試網瀏覽器:

https://zksync2-alpha.zkscan.io/

關鍵成就

在密碼學方面,zkEVM 的指令集已經確定下來,並且兩種實現都已經完成:在電路中和在執行環境中。

在編譯器方面,用Solidity 和Zinc 編寫的智能合約現在可以編譯到zkEVM 字節碼中。

在核心基礎設施方面,全節點集成已完成,並且能夠成功地部署和執行已編譯的智能合約。

雖然zkEVM 和2.0 的核心基礎設施已經準備好向公眾公開,但是該版本的編譯器還需要更多工作進行完善,以應對所有極端情況。為了提供更加全面的開發者體驗,我們決定在該編譯器100% 可靠之後,將同時開放對zkEVM、編譯器和核心SDK 的訪問。

比較zkSync 2.0 和以太坊

兩者看起來大部分相同,以下幾點是比較重要的區別:

智能合約

zkSync 2.0 支持以太坊上的大部分操作碼。然而,有以下這些例外:

1. 這次的測試網版本不支持ADDMOD、SMOD、MULMOD、EXP 和CREATE2 操作碼,但是未來的版本會支持。

2. 我們將暫時不支持KECCAK256 操作碼,而是通過自動調用另一個抗碰撞的哈希函數來替代它的所有調用。 KECCAK256 之後將作為預編譯引入。

3. 我們決定不再包含SELFDESTRUCT 操作碼,因為以太坊正計劃將其移除。

4. 我們可以移除對完整256 位XOR/AND/OR 操作碼的支持,因為這些操作碼只存在於那些用於位屏蔽的已編譯的solidity 代碼中。這可以由編譯器使用其他操作碼來完成。

氣體

在zkSync 2.0 中,有一個不同概念的gas。交易費價格將根據當前L1 gas 費和生成零知識證明(ZKP) 的成本而波動。智能合約的調用將有一個最大的zkEVM 步驟和存儲寫入參數。

Web3 API

下一個版本將包含我們Web3 API 實現,它將與以太坊文檔所定義的Web3 標準兼容。事件將開箱即用,並且所有服務都可以輕鬆整合。

zkSync 包含L1 沒有的特性,比如已驗證和已敲定區塊的概念。因此,還會有其他方法讓開發者更精確地控制數據。 Web3 客戶端代碼將接收與以太坊相同的數據,但可以通過zksync_ 名稱空間請求特定的信息。

因為zkSync 有多種交易類型,並且使用EIP712 簽名,所以eth_sendRawTransaction 數據的格式與L1 不同。然而,編碼與以太坊ABI 相對應,所以支持它並不困難。

對交易進行簽名

zkSync 2.0 中的交易可以通過兩種方式進行授權(除了優先級隊列機制):

1. 用戶可以通過對一個EIP712 信息簽名,從而用他們普通的以太坊錢包(如Metamask 或者任意的WalletConnect 錢包) 對交易進行簽名。

2. 任何賬戶都可以設置一個公鑰來創建我們的內部Schnorr 簽名來對交易進行簽名。這允許基於智能合約的錢包與zkSync 2.0 進行交互,而無需額外的成本發送L1 的信息。

存儲效率提升

每個區塊只能對存儲槽覆寫一次。這意味著,如果多個用戶與單個AMM 合約交互,那麼該AMM 合約的存儲槽只會被覆寫一次。這允許排序者稍後向用戶退還單次寫入的共享成本。

預編譯

“預編譯”機制是在計劃中的,但將在稍後發布。我們計劃首先支持keccak256、sha256 哈希和ECDSA 恢復原語。此外,我們會根據需求和復雜性考慮包含其他預編譯,例如Blake2f 輪函數(以當前形式在以太坊中幾乎無法使用)。

進一步的限制

zkSync 2.0的第一次迭代可能會增加一個額外的限制,即每筆交易只能調用32 次智能合約,直到可以實現恰當的記賬機制。

執行跟踪將有硬限制,但它將與以太坊區塊大小目前的限制相當,不應影響大多數。

可能會有更多的限制,但我們的目標是在最終版本中將這些限制盡可能減少到最低限度。

深入了解zkSync 2.0 的架構

你可能聽說過“區塊鏈的不可能三角”,但當談到擴容以太坊時,還有第4個因素:可編程性。所有當前的擴容解決方案都犧牲了一些安全性、去中心化和可編程性來實現可擴展性。 zkSync 2.0 的設計結合了下列兩大技術突破,旨在最大化實現上面說到的四個特性:

1. zkEVM:為兼容EVM 的zkRollup 提供支持的引擎,這是同時提供L1 安全性以及支持solidity 智能合約的解決方案。

2. zkPorter:一個鏈下數據可用性系統,其可擴展性比rollups 高出兩個數量級。


由于 zkEVM 和 zkPorter 是可互操作以及可组合的,zkSync 2.0 显著优于所有其他扩容解决方案。

目前的共識是:Eth2數據分片將在2022年底上線,在不犧牲去中心化的前提下提供更大的數據可用層。結合了Eth2 數據分片的zkRollup 技術是zkSync 的最終目標,在不犧牲4 個因素中任意一個的前提下達到10 萬以上的TPS。

狀態樹

zkSync 2.0 狀態樹覆蓋了以太坊全部的160 位地址空間。每個帳戶將存在於zkRollup 部分或zkPorter 部分的狀態中。 zkRollup 和zkPorter 帳戶完全相同,除了一點不同:獲取數據可用性的地方不同。 zkRollup 交易數據通過數據調用發佈到以太坊主網中;而zkPorter 的交易數據發佈到zkSync Guardian 網絡中,其中,zkSync 代幣持有者能夠參與該網絡的PoS 機制。

選擇在哪裡發布數據,是在成本和安全性兩者間做出權衡。 zkPorter 的交易費比rollup 的交易費要便宜很多,但是用戶的資金可能會被凍結。然而,zkRollup 和zkPorter 賬戶的有效性是由零知識證明和以太坊來提供保證的。換句話說,zkPorter中的資金只能被凍結,不能被竊取。

zkRollup 和zkPorter 帳戶的互操作性和可組合性給了每個用戶成為zkSync 一流公民的機會。假設,Uniswap 部署在zkRollup 端,用戶可以通過zkPorter 賬戶訪問,並以最低的手續費進行swap。 zkSync 2.0 是一個專門為整個金融領域用戶設計的系統。

密碼學

我們的虛擬機,通常被稱為zkEVM,它並不是完成1:1 復刻EVM 的。但是,zkEVM 旨在能夠運行99% 用Solidity 編寫的合約,並且在遇到回滾和異常時也能維持同樣的行為。同時,zkEVM 能夠有效率地在一個電路中生成零知識證明。

zkEVM 的實現不需要我們對此前的證明系統做出重大的變動;我們繼續使用帶有自定義門和查詢表的PLONK (通常被稱為UltraPLONK) 和以太坊的BN-254 曲線。這是有利的,因為這個證明系統已經過實戰測試(自2020 年6月以來,zkSync 1.0 和其他項目就開始使用這個證明系統)。

經過幾個月的努力,zkEVM 的指令集已完成,並在電路和執行環境中實現。

這裡有一個重要的區別:電路和執行環境中的實現是分開的,用於不同的目的。電路的工作是生成執行跟踪的證明並提供證人,但這個過程十分緩慢。另一方面,執行環境是zkEVM 在rust 中的直接實現,效率高、速度快。如果我們在生成證明和執行的過程中都依賴於電路,那麼敲定交易需要幾個小時。而生成證明和簡單執行的分離使得zkSync 上的交易能夠即時結算。

接下來,我們的工作將專注於將zkEVM 和編譯器結合在一起,並和遞歸結合在一起:區塊之間的遞歸允許我們為N 個區塊發布一個證明;而區塊內的遞歸聚合了區塊不同邏輯部分的子證明。這是簡單的部分!自2020 年6 月以來,zkSync 1.0 主網上已經使用了區塊之間的遞歸聚合證明。更多關於區塊內遞歸和我們的zkEVM 如何工作的信息,請觀看視頻解釋。

編譯器

我們同時研究兩種針對zkEVM 的編譯器前端:Yul 和Zinc。 Yul 是一種Solidity 的中間表示,可以為不同的後端編譯成字節碼。 Zinc 是我們基於rust 的語言,用於智能合約和通用零知識證明電路。

因為編譯器是使用LLVM 框架構建的,所以可以認為它有一個前端、Yul→LLVM IR 和後端、LLVM IR→zkEVM 字節碼。 LLVM 的採用帶來了幾個主要的優點:

1. LLVM 優化框架是不匹配的:它從LLVM IR 中生成最有效的zkEVM 字節碼。

2. 有了新版的Solidity 或Zinc,編譯器前端將處理所有更改,而LLVM 將使我們無需更改編譯器後端。

3. 在未來,如果開發者想基於原生的Rust 或Javascript 編寫智能合約,只需為該語言構建編譯器前端,智能合約就可以在zkSync 中開箱即用。

編譯器的安全性對我們來說是至關重要的,並且已經經過了多個套件的測試:

1. Zinc 和Yul 編譯器中的詞法、語法和語義測試。

2. 我們自己針對Zinc 和Solidity 的集成測試,它貫穿整個智能合約生命週期:從解析源代碼到合約部署,再到在zkSync 上執行交易。

3. 從Solidity 存儲庫集成的廣泛測試套件,適合我們的集成測試工具。

每個套件已經包含了幾千個測試,我們將至少增加一個數量級。

我們的兩編譯器已經成功部署並用兩種語言執行了簡單的智能合約。但是仍然有更多的優化需要完成,一些複雜的LLVM IR 語句需要轉換為zkEVM 字節碼。因此,我們決定等到我們的編譯器運行狀態更強健再發布。

完成編譯器的工作之後,我們將集中精力完善Zinc 的功能,然後構建Rust 編譯器前端來允許使用原生Rust 編寫智能合約。

核心基礎設施

zkSync 2.0 核心基礎設施由幾個關鍵部分組成:

全節點

1. 利用虛擬機的zkEVM 字節碼的預電路執行器環境

2. 狀態在交易發送後的幾秒內可用

3. 過濾掉明顯無效的交易(例如,沒有足夠的資金進行交易),這些交易可能會使區塊膨脹

4. 在內存池中執行交易並生成區塊。

證明者

1. 接收區塊的見證者並生成零知識證明,

2. 用於並行證明生成的證明者接口

3. 自定義的證明者自動縮放器,可根據需要創建和終止證明者機器。

交互器

1. 用來監測以及與以太坊L1 交互的工具,

2. 基於代幣價格、ZKP 生成成本以及L1 gas 費來計算交易費用。

Paranoid監視器

Prometheus、彈性、哨兵、正常運行時間,幾個單獨的事件通知系統以及自定義的安全運行檢查服務。

zkSync 2.0 的核心基礎設施功能齊全,已經集成了zkEVM 執行器。

原文鏈接:https://medium.com/matter-labs/zksync-2-0-hello-et…

ECN的翻譯工作旨在為中國以太坊社區傳遞優質資訊和學習資源,文章版權歸原作者所有,轉載須註明原文出處以及ETH中文站。若需長期轉載,請聯繫eth@ecn.co進行授權。

Total
0
Shares
Related Posts