作者:Yiping, IOSG Ventures
本文爲IOSG原創內容,僅做行業學習交流之用,不構成任何投資參考。如需引用,請注明來源,轉載請聯系IOSG團隊獲取授權及轉載須知。本文所提及所有項目均不構成推薦及投資建議。
隨着像 zkSync 和 StarkNet 這樣的 ZKRUs 推出主網,Layer2格局正在迅速演變。傳統上,OPRUs 如 Arbitrum 是首個進入市場的,因而擁有更強大的生態系統。與之相反,ZKRUs 在技術上有所突破,提供更高的吞吐量和更低的費用。
近幾個月,更多的活動從Layer1遷移到了Layer2,以尋求更快、更便宜的交易。以太坊的TVL過去一年中從近 400 億美元降至 200 億美元。然而,Layer2的 TVL 呈現出不同的畫面,巨大的增長表明Layer2的採用正在加速。
Arbitrum 憑借超過 50% 的Layer2 TVL 市場份額領先,盡管 ZKRUs 也付出了努力。Arbitrum 的先發優勢使其能夠保持主導地位。
分析每日交易數量顯示,像 zkSync 和 StarkNet 這樣的 ZKRUs 在吞吐量上略微超過 OPRUs。然而,Arbitrum 的生態系統優勢依然存在,盡管在每日 TPS 上稍微落後。
OPRUs 出現的時間比 ZKRUs 長。然而,ZKRUs 正在推出他們的主網,並從其他生態系統吸引用戶。作爲 OPRU 領域的領導者,Arbitrum 預計將通過他們的新更新來對抗 ZKRUs 的崛起。
Arbitrum:Stylus
隨着开發者優化零知識技術和成本,由於其可擴展性優勢,ZKRUs 可能會繼續獲得市場份額。但是,Arbitrum 的網絡效應提供了盡管有競爭壓力也能保持穩健的能力。通過像 Stylus 這樣的創新解決方案,Arbitrum 可以用獨特的技術能力補充其領導地位,並繼續在Layer2競賽中保持領先。
簡而言之,Stylus 是一個爲 Arbitrum 設計的革命性新智能合約環境,它允許开發者用像 Rust、C++ 和 Solidity 這樣的編程語言編寫高效、互操作的程序。
它向區塊鏈开放了通用計算,並歡迎使用不同技術棧的开發者。
WASM
Stylus 通過添加一個與現有的以太坊虛擬機(EVM)並行運行的 WebAssembly(WASM)虛擬機來工作。編寫在可以編譯爲 WASM 的語言的智能合約可以以比 Solidity 快 10 倍或更多的速度原生執行,大幅降低燃氣費用。EVM 依然完全功能性,所以現有的 Solidity 合約仍然如同今天一樣正常運行。兩個 VMs 同步操作,允許用不同編程語言編寫的合約相互調用,同時還能修改相同的底層區塊鏈狀態。
自定義預編譯
此外,Stylus 也支持自定義預編譯(Precompiles)。
預編譯是 Ethereum 和 Arbitrum 上用於非常高效地執行特定加密或實用函數的底層模塊。例如,有用於 ECDSA 籤名驗證和計算 SHA256 哈希的預編譯。
要添加新的預編譯需要所有驗證者協調升級 EVM,因此門檻很高。而使用 Stylus,开發者可以輕松地部署他們自己用 Rust 或 C++ 編寫的預編譯。
例如,一個團隊可以使用用 C 語言編寫的加密庫,並未經修改地將其部署到 Arbitrum。這將允許這些加密原語以超快的本地速度執行。
其他合約可以調用這個 Stylus “預編譯”,就像它們調用原生預編譯一樣,來利用該加密技術。所有的燃氣計量和欺詐證明都會自動工作。
這使得團隊能夠在沒有任何特殊鏈支持的情況下,原型自定義加密、特殊的基於配對的曲线和其他新型原語。以太坊研究者甚至可以通過在 Arbitrum 上以 Stylus 預編譯的形式部署它們,先行迭代 EIP 提案。
通過賦予开發者在鏈上原生地引入新的加密原語的能力,Stylus 大大拓展了可以構建的內容的範圍。預編譯不再僅限於 EVM 支持的功能。
Stylus 的工作原理
在深入探討 WASM 在區塊鏈宇宙中的更廣泛角色之前,理解 Arbitrum 如何協調 EVM 和 WASM 的共存是至關重要的。這不僅僅是擁有兩個獨立的引擎;這是一種增強兩者優勢的協同關系。
Arbitrum 的獨特架構允許 EVM 和 WASM 之間進行無縫和同步的操作,這要歸功於其統一的狀態、跨 VM 調用和兼容的經濟模型。
用 Solidity 或其他 EVM 語言編寫的智能合約會像往常一樣編譯爲 EVM 字節碼。當執行時,這些合約在 EVM 上運行,就像它們今天一樣。
對於編譯爲 WASM 的語言,例如 Rust、C++ 和 C,工作流程是:
-
开發者使用現成的 WASM 編譯器,如 Clang 或 Rustc,將他們的智能合約編譯爲 WASM。
-
WASM 字節碼以壓縮形式上傳到 Arbitrum 鏈。
-
合約所有者調用 `ArbWasm` 預編譯的 `compileProgram` 方法,該方法爲 WASM 進行安全工具設置,對其進行Gas成本計量,並將其編譯爲針對驗證器硬件優化的本地代碼。
-
當合約被調用時,它在像 Wasmer 這樣的 WASM 運行時上運行,比 EVM 快得多,從而節省了Gas Fee。
WASM 計量在每個基本塊之前收取Gas,而不是像 EVM 那樣按操作碼收費。這更爲高效,確保合約不會失控。
EVM 與 WASM
這兩個虛擬機(VM)同步運行,允許它們在共享相同的全局狀態的同時互相調用。一個交易可能部分在 EVM 中執行,部分在 WASM 中執行,並且結果無縫地組合在一起。
等一下,兩個 VM 怎么能無縫地和同步地工作呢?
Polkadot 通過 XVM 實現這一點。與 Polkadot 不同,WASM 和 EVM 出於幾個關鍵原因可以在 Arbitrum 上無縫地和同步地工作:
-
單一狀態:兩個 VM 都訪問相同的底層數據結構和狀態Trie。一個 VM 中的合約可以讀/寫到另一個 VM 中的合約相同的位置。這提供了對鏈狀態的統一視圖。
-
跨 VM 調用:當一個交易與 EVM 合約交互時,Geth 處理它並提供一個結果。如果 EVM 合約隨後調用了一個 WASM 程序,WASM VM 接管以計算該部分的結果。
-
共享上下文:像區塊數據、發送者地址等系統信息對兩個 VM 都是可用的。一個 WASM 合約可以像 Solidity 合約一樣獲取區塊號。
-
單一共識:驗證者運行兩個 VM 以驗證交易並就正確的鏈狀態達成共識。爭議將調用統一的欺詐證明系統。
-
兼容的經濟學:像Gas計量這樣的概念延伸到各個 VM,確保在任一環境中都有適當的計算成本和資源。
對於欺詐證明,驗證者會在 EVM 和 WASM 執行中進行細分(bisect),以必要時識別任何無效的步驟。WASM 的結構允許系統保證終止並強制證明的有效性。
區塊鏈 | WASM
Arbitrum 並不是唯一認識到 WebAssembly(WASM)變革潛力的平台。Polkadot 和 Cosmos 也都將 WASM 整合到了他們的生態系統中,每個平台都提供了一組獨特的優勢和功能。
Polkadot 允許用戶用 WASM 开發智能合約,並支持兩種語言:一種嵌入式 DSL 的 AssemblyScript 和類似於 Rust 的 Ink!。
另一方面,Cosmos 使用 CosmWasm 作爲其智能合約運行時,允許开發者用 Rust 編寫合約。
在深入研究區塊鏈行業爲何如此接受 WASM 之前,有必要先了解 Cosmos 和 Polkadot 突出的具體優勢:
Cosmos 強調 WASM 的以下優勢:
-
與 Rust 庫的兼容性
-
多樣化的开發者社區
-
增強的安全性,包括防止重入攻擊
-
易於測試
-
高性能
Polkadot 的 WASM 運行時具有這些特點:
-
高性能
-
與 EVM 的互操作性
-
平台不可知性
-
緊湊的二進制大小
-
同時支持 Rust 和 AssemblyScript(TypeScript 風格)
盡管 Polkadot、Cosmos 和 Arbitrum 共享 WASM 提供的一些共同優勢,但每個平台也都有其自己獨特的屬性。
這些主要區塊鏈平台對 WASM 的廣泛採用證明了其在行業中日益增長的重要性,這使得理解爲何這項技術正在迅速成爲現代區塊鏈架構基石變得至關重要。
爲什么選 WASM
WASM 是什么
爲了理解區塊鏈和 WebAssembly(WASM)之間的協同作用,首先必須了解 WASM 是什么以及其發展背後的推動力。
WebAssembly 是一種二進制指令格式,使代碼能夠在 Web 瀏覽器內以接近本機速度執行。它作爲一系列編程語言(包括 C 和 Rust)的編譯目標,旨在快速、高效且安全。WASM 有效地彌合了基於 Web 和系統級編程之間的鴻溝,從而提高了 Web 性能和功能。
“Web” 在 WebAssembly 中突出了其在 JavaScript 環境(通常在瀏覽器中找到)中運行的能力。在這些設置中,开發者可以完全訪問 WASM API,並且具有全面的 Web API 支持,賦予他們相當大的控制 Web 行爲的能力。
WASM 歷史
遵循“一次編寫,到處運行”的原則,WASM 出現作爲一組長期挑战的有力解決方案。截至 2016 年,許多程序通過領域特定語言(DSL)引入新功能,這通常涉及維護、效率和安全之間的權衡。有越來越多的需求尋求一種解決方案,該方案可以在不影響這些方面的前提下,爲無數服務器提供新功能。
評估了各種現有解決方案的不足:
- 系統虛擬機
-
頻繁啓動和關閉帶來過多的开銷
-
缺乏代碼可見性以確保安全
-
對性能需求過於抽象
- 容器
-
缺乏代碼可見性以確保安全
-
由於高級抽象而效率低下
-
頻繁操作帶來顯著的开銷
- 語言級虛擬機
-
需要頻繁修改以確保安全
-
嵌入式 VM,如 V8,資源密集型
-
適應新語言到安全模型緩慢
-
仍然過於抽象
- 指令集體系結構(ISA)
-
難以有效沙箱
-
以前的 Google 項目從其轉向 WASM
-
缺乏成熟的實現
到 2018 年,WASM 开發獲得了動力,重點是在各種架構、服務器、嵌入式硬件上運行,甚至支持多種語言。與 Java 不同,WASM 的設計沒有妥協安全性。到 2019 年,引入了一個組件模型以提升 WASM 模塊,實現跨語言互操作性。這允許了像一次編寫 HTTP 庫並在多種語言中使用它這樣的解決方案。
至今,WASM 擁有一系列功能,並在雲原生場景(包括區塊鏈)中越來越多地被採用。其優點包括:
-
高性能
-
緊湊的二進制大小
-
跨平台可攜帶性
-
支持多種語言,如 C/C++、Rust、AssemblyScript 等
-
在 JavaScript 引擎中執行
-
帶有內存和 CPU 限制的強大沙箱
-
極快的啓動時間,通常在毫秒或更短時間內
WASM 社區繼續努力實現跨語言的更大集成和性能。
了解 WASM 的歷史演變爲我們提供了有價值的背景,用於了解其在各種設置(包括像 Stylus 這樣的區塊鏈項目)中的當前和潛在角色。這一背景讓我們在探索有關 WASM 在區塊鏈生態系統中實現的問題和疑慮時,具備了細致的理解。
Stylus Q&A
語言支持
WASM 的發展歷程揭示了爲什么 Stylus 是 Arbitrum 生態系統的一個令人興奮的補充,但它也突出了一些局限性和疑慮。其中一個疑慮就是語言支持。雖然 Stylus 確實擴大了 Arbitrum 开發者社群以包括像 C++ 和 Rust 這樣的語言,但它在接納流行語言如 JavaScript 和 Python 方面還有所不足。
雖然有初步的項目旨在將 Python 和 JavaScript 帶到 WASM,但由於垃圾收集和性能問題的挑战,這些努力尚未准備好廣泛採用。
語言兼容性
目前,Stylus 支持 C/C++ 和 Rust SDK,與這些語言的工具鏈無縫集成。开發者甚至可以在構建智能合約時整合第三方庫,比如原生加密實現。做這樣的事的主要限制是相關的 gas 費用。
雖然 Rust SDK 還處於初級階段,Rust 和 C SDK 都有一些缺失的功能。例如,C SDK 不支持 ABI 導出函數,而修飾符在兩個 SDK 中都還未得到支持。
目前,沒有本地 Stylus 測試環境,但开發者可以直接在 SDK 內運行測試。對於部署智能合約,目前只有測試網是唯一的選項,並且它還不支持智能合約驗證。目前正在進行努力,以將各種 ERC 代幣和 **[Uniswap V2](https://twitter.com/evmcheb/status/1697537852522049990)** 引入 Stylus 生態系統。
語言選擇的困境
在領域特定語言(DSL)、嵌入式 DSL(eDSL)和通用語言之間做選擇需要在低級控制和高級抽象之間權衡。开發全新的 DSL 需要在工具鏈和生態系統开發上做出重大投資。與此相反,作爲通用語言的子集,eDSL 允許更容易地與現有工具集成,並有更低的學習曲线。例如,在像 JavaScript 或 Python 這樣的流行語言中創建 eDSL 將是有益的。
通用語言需要使用 SDK,這引入了額外的工具,增加了冗長性,並減少了代碼的表達性,同時伴隨着更長的 API 調用和對象操作。
在語言選擇和 eDSL 开發之間找到正確的平衡可能是吸引更廣泛开發者社區的關鍵,同時提供用戶友好的工具。根據當前數據顯示,頂級加密开發者社區仍集中在以太坊周圍。然而,利用 Rust 進行智能合約的平台,如 Polkadot、Cosmos 和 Solana,也在獲得關注,並在其开發者社區中快速增長。
性能
WASM 顯著提高了執行速度並減小了包大小。雖然 Stylus 還未在主網上部署,但其他網絡的基准測試可以作爲有用的參考。觀察到的執行時間快了4-8倍,編譯後的大小減少了大約50%。
Stylus 目前對其合約設有大小限制,未壓縮時上限約爲 128KB。這一限制使得將大型智能合約從其他語言(如 Solidity)移植過來變得具有挑战性。在 Stylus 代碼庫中,該限制如下所述:
值得注意的是,WASM 在啓動和關閉時會產生一些开銷。對於輕量級操作,EVM 實際上可能比 WASM 更具成本效益。
與 EVM 的互操作性
EVM 和 WASM 共享相同的存儲槽和狀態樹,這有助於 Stylus 與 EVM 的互操作性。這是通過在 WASM 中實現的 EVM API 來實現的,使用流行的 Host I/O 模式。支持的 EVM API 的全面列表表明互操作性得到了全面支持。
自定義預編譯合約
這個方面尤爲令人興奮,因爲它代表了未知的領域。自定義預編譯合約有潛力以更低的執行成本將額外的加密原語引入鏈上。它們還可以通過引入張量計算作爲預編譯合約來降低推理成本。然而,目前似乎還沒有與自定義預編譯合約相關的現有代碼。雖然 EVM 組件存在預編譯合約,但它們不是熱插拔的。
這個功能可能仍在开發中,利用 WASM 的能力。EVM 可以調用用 WASM 編寫的函數,然後將其編譯爲機器代碼。
可重入功能
與 CosmWasm(採用沒有可重入功能的 Actor 模型)相反,Stylus 的 Rust SDK 默認情況下關閉了可重入功能作爲一個功能標志。开發者有選擇手動啓用此功能的選項。
激活可重入功能將需要進行一些 API 調整。特別是在調用過程中刷新存儲緩存等安全預防措施方面,开發者需要小心謹慎。
洞見
Stylus 开放了一些在僅使用 EVM 時太耗費 gas 的新用例,如高性能加密、遊戲和 AI。它還允許自定義預編譯合約,使开發者可以添加自己的加密和其他基礎功能,而無需等待升級。在過去,我們看到一些非以太坊生態系統採用了 WASM,如 Cosmos 和 Polkadot。這是以太坊社區首次採用 WASM。總體而言,Stylus 代表了智能合約开發的重大進化,將有助於以太坊和 Arbitrum 實現擴容,同時與所有現有應用保持互操作性。
將 Stylus 集成到 Arbitrum 的Layer2 SDK 可爲第三層开發者提供更大的靈活性。他們現在可以將以前超過 gas 限制的密集計算移到鏈上,從而打开新的可能性。开發者不再僅限於使用 Solidity,如果 Rust 或 C++ 更符合他們的需要和專長,也可以選擇這些語言。自定義預編譯合約允許無縫地將首選的加密、實用程序和其他助手函數遷移到鏈上以獲得最佳性能。以適應每個用例的語言直接編寫低級邏輯會導致更加流暢的开發。开發者可以專注於核心產品功能,而不是爲了避免 gas 成本而採取權宜之計。通過消除語言和 gas 限制,Stylus 使第三層構建者能夠從一开始就使用適合其領域的正確工具,構建最高效的用戶體驗。
Stylus 也證明了 Arbitrum 有能力進行大規模革新,並且集成新的虛擬機。Ed Felten, Co-founder & Chief Scientist of Arbitrum & Offchain Labs 提到 Arbitrum 基於業界熱門工具和編程語言开發。他們可以更加迅速地編寫測試以及在原用系統之上开發新功能。OP 在 ZK 化的道路上走的更遠,已經逐漸走向了混合 Rollup 的思路。Optimism 目前和 Risc0 合作,使用 Zeth 爲 OPRU 生成零知識證明。使用這套解決方案,Optimism 並不用對 OPRU 進行額外的修改。如果你對 Zeth 感興趣,可以看我之前寫的[推特](https://x.com/glazecl/status/1709947992168710174?s=20)。
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。