zkSync 2.0:首個測試網版本上线

2021-06-14 00:06:06

介紹

克服了最困難的技術挑战之後,我們進入了這項工作的衝刺階段:在兼容 EVM 的環境中部署智能合約。zkSync 推出 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 代碼中。這可以由編譯器使用其他操作碼來完成。

Gas

在 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 高出兩個數量級。

zkSync 2.0:首個測試網版本上线

zkSync 2.0:首個測試網版本上线

由於 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 如何工作的信息,請觀看視頻解釋。

編譯器

zkSync 2.0:首個測試網版本上线

我們同時研究兩種針對 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-ethereum-ca48588de179

來源 | Matter Labs

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。

推薦文章

BTC波動率 : FOMC會議

關鍵指標 (香港時間 9 月 19 日凌晨 12 點 -> 中午 12 點): BTC/USD 現...

星球日報
4 5小時前

HTX成長學院:美聯儲降息50基點將會帶來哪些影響?

一、引言 2024 年 9 月 19 日,美聯儲宣布將聯邦基金利率下調 50 個基點至 4.75%...

星球日報
3 5小時前

預售超14萬部,速覽新一代Web3智能手機Solana Seeker

9 月 19 日,Solana Labs 旗下的 Solana Mobile 在新加坡的 TOKE...

星球日報
4 5小時前

深入分析World Liberty Financial的價值:特朗普競選經費劣勢下的新選擇

作者 : @Web3Mario(https://x.com/web3_mario) 摘要 :首先祝...

馬裏奧看Web3
4 5小時前

聚焦TOKEN2049:沉寂已久的加密市場有哪些新看點?

原文整理: flowie, ChainCatcher 9 月 18 日,Web3 最受矚目的年度峯...

星球日報
3 5小時前

DePIN專題報告:超過370個代幣上线,Helium用戶突破11萬大關

DePIN Helium | Glow | Livepeer | IoTeX | TADA E V...

星球日報
3 5小時前