zkSync 2.0:你好 以太坊

2021-06-02 12:06:41

介紹

面對最大的技術挑战,我們正朝着在 EVM 兼容環境中部署智能合約开始衝刺。測試網的第一個版本已經上线:您已經可以使用區塊瀏覽器查看 zkSync 2.0 上的活動。在這篇文章中,我們將深入解釋每個關鍵組件、提供進度更新以及下一個版本的計劃。

主要成就

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

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

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

雖然 zkEVM 和核心 2.0 基礎設施已准備好公开,但編譯器需要更多的工作來正確覆蓋所有邊緣情況。為了提供更全面的开發人員體驗,我們決定在編譯器 100% 可靠後立即开放對 zkEVM、編譯器和核心 SDK 的訪問。

zkSync 2.0 與以太坊的比較

大多數事情看起來和感覺都一樣。以下是一些重要的區別:

Solidity 智能合約

支持以太坊中的大多數操作碼!但是,也有一些例外:

  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 架構

您可能聽說過區塊鏈三難困境,但在擴展以太坊時,還有第四個因素:可編程性。所有當前的擴展解決方案都存在於為了可擴展性而犧牲一些安全性、去中心化和可編程性的範圍內。zkSync 2.0 的設計結合了以下 2 項技術突破,最大限度地發揮了所有 4 項功能:

  1. zkEVM:為我們與 EVM 兼容的 zkRollup 提供動力的引擎,這是唯一具有 L1 安全性和可靠性智能合約支持的解決方案。

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

zkSync 2.0:你好 以太坊

zkSync 2.0:你好 以太坊

(圖片來源於zkSync)

由於 zkEVM 和 zkPorter 是可互操作和可組合的,因此 zkSync 2.0 能夠顯着優於所有其他擴展解決方案。

目前的共識是Eth2 數據分片將在 2022 年底到來,以在不犧牲去中心化的情況下提供指數級更大的數據可用性層。zkSync 的 zkRollup 技術結合 Eth2 數據分片是最終目標,在不犧牲 4 個因素中的任何一個的情況下達到 100,000+ TPS。

狀態樹

zkSync 2.0 狀態樹覆蓋了以太坊的完整 160 位地址空間。每個帳戶將駐留在狀態的 zkRollup 部分或 zkPorter 部分。zkRollup 和 zkPorter 帳戶完全相同,除了一個組件:保證數據可用性。zkRollup 交易數據通過 calldata 發布到以太坊,zkPorter 交易數據發布到 zkSync Guardian 網絡,zkSync 代幣持有者參與權益證明。

數據發布的地方是成本和安全性之間的權衡。zkPorter 交易比匯總交易便宜得多,但它有可能導致您的資金被凍結。但是,zkRollup 和 zkPorter 帳戶的有效性都是通過零知識證明和以太坊來保證的。換句話說,zkPorter 中的資金只能被凍結,不能被盜。

zkRollup 和 zkPorter 帳戶的互操作性和可組合性使每個用戶都有機會成為 zkSync 中的一等公民。部署在 zkRollup 端的 Uniswap 可以通過 zkPorter 帳戶訪問以交換最低費用。zkSync 2.0 是一個系統,旨在供整個金融領域的用戶參與。

密碼學

我們的 VM,最常被稱為 zkEVM,不是 EVM 1:1 副本,而是旨在能夠運行 99% 用 Solidity 編寫的合約並保持其相同的行為,例如在恢復和異常期間。同時,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:你好 以太坊

(圖片來源於zkSync)

我們同時致力於兩個針對 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 存儲庫集成的廣泛的測試套件,適用於我們的集成測試工具。

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

我們的 2 個編譯器已經成功部署並執行了兩種語言的簡單智能合約。但是還有更多的優化需要完成,一些復雜的 LLVM IR 語句需要轉換為 zkEVM 字節碼。因此,我們決定在編譯器處於更健壯的狀態之前不發布它。

編譯器完成後,我們將專注於使Zinc更具表現力和功能更豐富,然後構建 Rust 編譯器前端以允許使用原生 Rust 編寫智能合約。

核心基礎設施

zkSync 2.0 核心由幾個關鍵角色組成:

完整節點

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

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

  3. 過濾掉可能導致區塊膨脹的明顯不正確的交易(例如,交易資金不足),

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

證明者

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

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

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

交互器

  1. 用於觀看和與以太坊 L1 交互的工具,

  2. 根據代幣價格、ZKP 生成成本和 L1 gas 價格計算交易費用。

偏執監視器

Prometheus、elastic、sentry、uptime、幾個獨立的事件通知系統和自定義健康檢查服務。

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

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

推薦文章

btc日內再次下跌 短线應當如何處理?

盡管以太坊現貨ETF獲批是個好消息,但市場反應卻不如預期。在消息公布後,以太坊價格出現了小幅下跌,...

加密蓮
107 3個月前

7月23日、BTC(合約)ETH(合約)行情分析及操作策略

昨日收益還是不錯的,日內給出的現價空單分別止盈我們目標點位,恭喜跟上的朋友喫肉。時間一晃到月底了,...

倪老師
106 3個月前

幣圈院士:血與淚的教訓!交易者為何總是撞死在同一棵樹上?

幣圈院士談。交易市場中的幾種“死法” 在幣圈市場鱗次櫛比的海洋,風起雲湧,時常讓人感到驚手不及。在...

幣圈院士
111 3個月前

7月23:Mt. Gox 比特幣錢包在市場緊縮的情況下轉移了價值 28.2 億美元的 BTC

7月23:Mt. Gox 比特幣錢包在市場緊縮的情況下轉移了價值 28.2 億美元的 BTC一個引...

168超神
106 3個月前

悅盈:比特幣68000的空完美落地反彈繼續看跌 以太坊破前高看回撤

一個人的自律中,藏着無限的可能性,你自律的程度,決定着你人生的高度。 人生沒有近路可走,但你走的每...

我是周悅盈
88 3個月前

btc完美盈利 晚間波動較大注意

昨日btc空單完美給到,最大化走出一千七百點空間~ btc: 日內开盤下跌繼續測試66000一线,...

加密蓮
95 3個月前