雖然zk EVM 和核心2.0 基礎設施已準備好公開,但編譯器需要做更多工作才能正確覆蓋所有邊緣情況。
原文標題:《zkSync 2.0:你好以太坊! 》
原文作者:水多多|zkSync
我可以把你比作夏日嗎?
你的可擴展性和安全性更高。
狂風確實震撼了五月親愛的心靈,
夏天的租約日期太短了。
——中本聰莎士比亞,2021
介紹
面對最大的技術挑戰,我們開始在與EVM 兼容的環境中部署智能合約。測試網的第一個版本已經上線:您已經可以使用區塊瀏覽器查看zkSync 2.0 上的活動。在這篇文章中,我們將深入解釋每個關鍵組件、提供進度更新以及下一個版本的計劃。
主要成就
在密碼學方面,zk EVM 的指令集已經完成,兩種實現都完成了:在電路中和在執行環境中。
在編譯器方面,用Solidity 和Zinc 編寫的智能合約現在可以編譯成zkEVM 字節碼。
在核心基礎設施方面,全節點集成已完成,能夠成功部署和執行已編譯的智能合約。
雖然zk EVM 和核心2.0 基礎設施已準備好公開,但編譯器需要做更多工作才能正確覆蓋所有邊緣情況。為了提供更全面的開發者體驗,我們決定在編譯器100% 可靠後立即開放對zkEVM、編譯器和核心SDK 的訪問。
zkSync 2.0 與以太坊的比較
大多數東西看起來和感覺都是一樣的。以下是一些重要的區別:
Solidity 智能合約
支持以太坊中的大多數操作碼!但是,也有一些例外:
此版本不支持ADDMOD、SMOD、MULMOD、EXP 和CREATE2 操作碼,但將來會支持。
我們暫時不支持KECCAK256 操作碼,而是自動將其所有調用替換為調用另一個抗衝突哈希函數。 KECCAK256 稍後將作為預編譯器引入。
我們決定不包含SELFDESTRUCT 操作碼,因為以太坊計劃將其刪除。
我們可能會刪除對完整256 位XOR/AND/OR 操作碼的支持,因為這些操作碼僅存在於已編譯的用於位掩碼的可靠代碼中。這可以由編譯器使用其他操作碼來完成。
gas
在zkSync 2.0 中,有一個不同的gas 概念。交易價格將根據當前的L1 gas 價格(由於發布調用數據)和ZKP 生成成本而波動。智能合約調用將具有最大數量的zk EVM 步驟和存儲寫入參數。
Web3 API
下一個版本將包括我們的Web3 API 實現,它將與以太坊文檔定義的Web3 標準兼容。事件將開箱即用,所有服務都可以輕鬆集成。
zkSync 包括L1 沒有的功能,例如提交和最終塊的概念。因此,將會有額外的方法讓開發人員更精確地控制數據。 Web3 客戶端代碼將接收與您在以太坊上相同的數據,但可以使用「zksync_」命名空間請求專門的信息。
因為zkSync 有多種交易類型,並且使用EIP712 簽名,所以`eth_sendRawTransaction` 數據的格式會與L1 不同。但是,編碼對應於以太坊ABI,所以支持它並不困難。
簽署交易
zkSync 2.0 中的交易可以通過2 種方式授權(除了優先隊列機制):
用戶可以通過簽署EIP712 消息,使用他們的普通以太坊錢包(例如Metamask 或任何WalletConnect 錢包)簽署交易。
任何帳戶都可以設置一個公鑰來創建我們的內部Schnorr 簽名來簽署交易。這允許基於智能合約的錢包與zkSync 2.0 進行交互,而無需發送L1 消息的額外費用。
存儲效率提升
每個塊僅應用一次存儲槽覆蓋。這意味著如果多個用戶與單個AMM 合約交互,則AMM 合約的存儲槽將僅被覆蓋一次。這允許定序器在以後向用戶退還單次寫入的共享成本。
預編譯
「預編譯」機制已計劃好,但稍後會發布。我們計劃首先支持keccak256、sha256 哈希和ECDSA 恢復原語。可以根據需求和復雜性考慮包含其他預編譯,例如Blake2f 輪函數(在當前形式的以太坊中幾乎無法使用)。
進一步的限制
zkSync 2.0 的第一次迭代可能會對每筆交易施加32 次智能合約調用的額外限制,直到實施適當的記賬機制為止。
執行跟踪將有一個硬限制,但它將與以太坊塊大小的當前限制相當,並且不應影響大多數協議。
可能會有更多限制,但我們的目標是在最終版本中將它們減少到絕對最低限度。
深入了解zkSync 2.0 架構
你可能聽說過區塊鏈三難困境,但在擴展以太坊時,還有第四個因素:可編程性。當前所有的擴展解決方案都存在於犧牲一些安全性、分散性和可編程性以實現可擴展性的範圍內。 zkSync 2.0 的設計結合了以下2 項技術突破,最大限度地發揮了所有4 項功能:
zk EVM:為我們與EVM 兼容的zkRollup 提供動力的引擎,這是唯一支持L1 安全性和可靠智能合約的解決方案。
zkPorter:一個鏈下數據可用性系統,可擴展性比rollups 高2 個數量級。
由於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 Token持有者參與權益證明。
發布數據的地方是成本和安全性之間的權衡。 zkPorter 交易比匯總交易便宜得多,但它有可能凍結您的資金。然而,zkRollup 和zkPorter 賬戶的有效性都是通過零知識證明和以太坊來保證的。也就是說,zkPorter 中的資金只能被凍結,不能被盜。
zkRollup 和zkPorter 賬戶的互操作性和可組合性讓每個用戶都有機會成為zkSync 中的一等公民。部署在zkRollup 端的Uniswap 可以通過zkPorter 賬戶訪問以換取最低費用。 zkSync 2.0 是一個系統,專為整個金融領域的用戶而設計。
密碼學
我們的VM,通常稱為zkEVM,不是EVM 1:1 副本,而是旨在能夠運行99% 的用Solidity 編寫的合約並保持其相同的行為,例如在恢復和異常期間。同時,編寫zk EVM 以在電路中高效地產生零知識證明。
這是在我們的證明系統沒有任何重大變化的情況下完成的;我們繼續將PLONK 與自定義門和查找表(通常稱為UltraPLONK)和以太坊的BN-254 曲線一起使用。這是有利的,因為自2020 年6 月以來,該證明系統已在zkSync 1.0 以及使用相同證明系統的其他項目中進行了實戰測試。
經過數月的努力,我們再次激動地宣布:zkEVM 的指令集已經完成並在電路和執行環境中實現。
這裡有一個重要的區別:電路和執行環境中的實現是分開的,用於不同的目的。生成執行跟踪的證明並提供見證是電路的工作,但這非常慢。另一方面,執行環境是rust 中zk EVM 的直接實現,高效且快速。如果我們要依靠電路來生成和執行證明,那麼交易的最終確定性將需要數小時。證明生成和簡單執行的分離使得zkSync 上的交易能夠即時結算。
接下來,我們專注於將zkEVM 和編譯器結合在一起,並將遞歸結合在一起:塊之間的遞歸,它允許我們為N 個塊發布一個證明,塊內的遞歸,它聚合塊的不同邏輯部分的子證明. 這是簡單的部分!自2020 年6 月以來,zkSync 1.0 的主網上已經使用了塊之間的遞歸聚合證明。有關塊內遞歸以及我們的zk EVM 如何工作的更多信息,請觀看此視頻說明。
編譯器
我們正在同時開發兩個針對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 核心由幾個關鍵角色組成:
全節點
通過虛擬機實現zkEVM 字節碼的預電路執行器環境
狀態在交易發送後幾秒鐘內可用
過濾掉可能使區塊膨脹的明顯不正確的交易(例如,交易資金不足)
在內存池中執行交易並生成塊
證明者
接收區塊的見證人並生成零知識證明
用於並行證明生成的證明者接口
自定義證明者自動縮放器,可按需創建和終止證明者機器
交互者
用於觀看和與以太坊L1 交互的工具,
根據Token價格、ZKP 生成成本和L1 gas 價格計算交易費用
偏執狂監視器
Prometheus、elastic、sentry、uptime、幾個獨立的事件通知系統和自定義健康檢查服務。
這個核心基礎設施功能齊全,已經集成了zkEVM 執行器!
讓我們談談
編譯器完成後,我們將一起共享對所有組件的訪問權限!開發人員將能夠部署Solidity/Zinc 智能合約並通過Web3 API 進行交互。
展開全文打開碳鏈價值APP 查看更多精彩資訊