从与 Etherscan 上处理字节码到防范 Solidity 中的各种代码漏洞,区块链开发的 EVM 技术堆栈与许多开发人员熟悉的 web2 技术堆栈有很大不同,从而在 Solidity-EVM 技术栈与 Rust、C++ 或 Python 等主流语言之间产生了“差距”。随着区块链领域的不断成熟,非常需要弥合开发者之间的差距,并允许更加可组合的 web3 开发。
在本文中,我们将介绍 Offchain Labs 的最新项目 Arbitrum Stylus,该项目在斯坦福区块链周期间的区块链应用斯坦福峰会 (BASS) 会议上亮相。 Arbitrum Stylus 是一个里程碑式的项目,旨在通过统一 EVM 与 WASM 的执行环境来创建智能合约可组合性的新标准。首先,我们将讨论该项目背后的一些动机,然后深入研究该项目的一些实现细节,最后讨论该项目对 web3 领域的影响。
Arbitrum Stylus 的动机
Arbitrum Stylus 的开发是为了解决区块链开发中的两个关键问题:(1)区块链开发的可访问性,以及(2)智能合约的执行效率。
让区块链开发变得更容易
Electric Capital 的开发者报告。图片来源 [1]。检索日期:2023 年 10 月 20 日。
根据 Electric Capital 的开发者报告,目前每月活跃的区块链开发者约为 20,000 名 [1]。尽管这个数字在过去几年中大幅增加,但仍然落后于使用 Rust 或 C++ 等主流通用语言的数百万(或数千万)开发者数量级。随着区块链领域的不断发展,越来越需要简化数百万新智能合约开发人员的入职流程。
实现这一目标的最佳方法之一是将智能合约开发流程与现有主流语言(例如 Rust 或 C++)集成。这是许多非 EVM 生态系统(例如 Solana 和 Cosmos)所采用的方法,Rust 已成为这些生态系统中事实上的智能合约语言。但到目前为止,EVM 生态系统主要依赖其自己独特的编程语言 Solidity 来编写智能合约。然而,Arbitrum Stylus 试图通过允许区块链开发人员使用 Rust 等主流语言编写智能合约,然后部署在 EVM 兼容的链上来改变这一现状。
让智能合约执行更高效
过去几年,随着去中心化应用程序的爆炸式普及,对链上计算的需求急剧增加,尤其是在以太坊网络上。网络需求的激增导致g a s价格过高。这反过来又刺激了一系列创新,以提高公共区块链的交易吞吐量,而 Arbitrum 是该领域最著名的项目和生态系统之一。其中包括旗舰产品Arbitrum OneL2链,以及 L2 Arbitum Nitro技术堆栈。
Arbitrum Stylus 是所有这些的自然扩展,也是 Arbitrum 工具包中的最新解决方案。与之前专注于优化交易的交易间效率(例如通过汇总进行批量交易)的解决方案相比,Stylus 专注于优化交易内部层面——具体来说是每笔交易的执行方式。通过允许在 WebAssembly (WASM) 中执行合约,Stylus 合约的速度提高了一个量级、有望降低 Gas 费用,并且访问内存的成本比使用 EVM [2] 便宜 100-500 倍。
Stylus:提供 WASM + EVM 可组合性
WebAssembly 和 Arbitrum Nitro
要理解为什么 Stylus 比传统的 EVM 引擎更加高效和可组合,我们需要首先了解 WebAssembly 或 WASM 的作用。 WASM 是汇编语言的一种形式,这意味着它本质上是机器可读的二进制代码,而不是 Rust 或 C++ 等人类可读的语言。相反,这些人类可读的语言在执行之前需要一个“编译器”将它们转换为机器可读的“汇编语言”。
特别是 WASM,顾名思义,是一种针对 Web 浏览器优化的汇编语言,可提高主要基于 Javascript 的 Web 应用程序的执行速度。作为一种可移植、模块化且易于执行的汇编语言,WASM 允许开发人员直接用各种主流语言(例如 Rust 或 C++)编写代码片段 [3]。
随着Arbitrum的Nitro升级,因为链上的所有争议都在WASM中进行,这意味着Nitro拥有适用于任意WASM的有效欺诈系统[2]。由于Arbitrum Nitro能够为任何WASM代码提供欺诈证明,这意味着它可以为任何编译为WASM的程序提供欺诈证明。
Arbitrum Stylus Arbitrum Stylus首先在Arbitrum Nitro继承的WASM欺诈证明器之上,添加了一个基于领先的WASM引擎Wasmer的WASM执行引擎,该引擎比Geth执行EVM字节码更快[2]。通过同时具备执行引擎和证明引擎,这使得智能合约能够完全使用WASM进行编写、执行和证明。鉴于许多主流语言(如Rust和C++)能够直接编译成WASM,因此Arbitrum Stylus允许区块链开发者使用各种主流通用编程语言编写、部署和执行智能合约。
将 EVM 与 Stylus EVM+ 进行比较。图片来源 [2]。
EVM+ 引擎的一致性 (Coherence in the EVM+ Engine)
Arbitrum Stylus 为开发人员提供了用 Rust 和其他 WASM 兼容语言编写合约的额外选项,而不必牺牲在 Solidity 中编写和执行智能合约的能力。通过拥有 EVM 和 WASM 两个同等的执行引擎,Stylus 还为开发人员提供了用 Solidity 编写应用程序的一部分、用 Rust 编写另一部分的选项。
然而,这提出了一个问题:Stylus VM 如何管理两个不同引擎之间的一致性?它如何知道何时在 EVM 和 WASM VM 之间切换?
首先,Solidity 和其他基于 EVM 的合约被编译成相同的字节码,然后像通常在纯 EVM 引擎中一样执行。基于 WASM 的智能合约,例如用 Rust 编写的智能合约,将在合约开头添加一个额外的“标头”进行注释。因此,当调用这些合约时,Stylus VM 能够判断哪些合约需要 EVM 引擎,哪些合约需要 WASM 引擎。这种设计还考虑到了很大程度的互操作性,用 WASM 编写的合约可以调用用 Solidity 编写的合约,反之亦然。这也是 Stylus 与其他采用 WASM 执行引擎的区块链的主要区别:Stylus 确保 WASM 合约与 EVM 合约完全可组合和互操作,允许向后兼容,并允许 WASM 合约利用 EVM 流动性。
查看 Stylus EVM 和 WASM 双引擎的另一个角度是将区块链视为一个“世界状态机”,它会经历 EVM 中定义的某些状态交易。在以太坊中,链上状态通过 Trie-结构 或用于有效存储和检索数据的树状数据结构来表示[4]。 Stylus 的 EVM 和 WASM 引擎都使用相同的 Trie 结构来从“世界状态机”读取和写入数据。两个引擎都会产生一些给定的状态变化来更新世界状态;唯一的区别是他们如何计算这种状态变化。
EVM+ 引擎的成本节省
之前,我们已经暗示过使用 WASM 引擎可以由于执行效率的提高而节省大量成本。我们现在可以研究一下这是如何实现的。为此,我们考虑一条 ADD (加法)指令,例如 2 + 3。
在 EVM 中,我们需要执行以下步骤 [5]:
1.支付gas费用,需要多次查找内存表
2.考虑跟踪,即使禁用
3.弹出模拟堆栈中的两项
4.将它们加在一起
5.推送结果
我们可以看到,只有第 4 步真正涉及这两个整数的相加,而所有其他步骤都是 EVM 系统中的“模版指令”,相对于计算本身而言,所有步骤都消耗大量的 Gas。
另一方面,假设我们使用 WASM 来执行这个简单的 ADD 操作。我们只需要一步:
1.执行单个 x86 或 ARM ADD 指令
EVM ADD 和 WASM ADD 的比较。图片来自:来源[7]。
我们可以在这里看到,这比 EVM 添加便宜 150 倍。鉴于所有这些 Gas 节省,Stylus VM 甚至引入了一种新的“gas”子单位,称为“ink”,目前默认定义为 1 Gas 的 1/10000,甚至可以由链所有者进行配置 [5]。
然而,所有这些 Gas 节省都有一个警告,即首先需要 Gas 来激活 Stylus VM,目前设置为 1.14 亿 Gas 的固定费率。此外,调用 Stylus 程序本身目前大约需要 128-2048 个 Gas [5]。因此,仅仅为了优化两个整数的单个 ADD 操作而激活 WASM 环境可能不一定具有经济意义。然而,对于内存密集型的智能合约来说,所有这些节省都会复合,抵消这种“激活成本”。例如,在 EVM 中分配 3.8 MB RAM 的调用将花费约 3200 万个 Gas,而在 Stylus WASM VM 中,这只需要花费约 6.4 万个 Gas,节省了 500 倍 [6]。由此推论,内存密集型应用程序在普通 EVM 上根本不可能实现,因为很快就会遇到各种gas限制。然而,考虑到使用 WASM 运行时 RAM 会便宜几个量级,这在 Stylus VM 中完全可能实现。
使用Stylus解鎖新用例
1. 内存密集型应用程序
如上所述,Arbitrum Stylus 最令人兴奋的部分之一是它支持链上内存密集型应用程序。这开启了一类全新的应用程序,例如生成式 AI NFT、高频交易和链上游戏 [7]。事实上,Stylus VM 可能是一项里程碑式的技术,它允许因高内存需求而臭名昭著的人工智能在链上计算上可行,并与 EVM 合约完全互操作。
2. Alt-VM 与 EVM 流动性的可组合性
此外,Stylus 的 EVM 兼容性以及允许基于 WASM 的合约与原生 Solidity 合约互操作的能力意味着这些 WASM 合约可以充分利用 EVM 上的大量流动性和用户基础。回想一下,我们之前提到过许多替代虚拟机(例如 Solana 和 Cosmos)使用 WASM 兼容语言(例如 Rust)来执行其智能合约。 Stylus 的 WASM 引擎意味着这些替代虚拟机中的开发人员可以轻松地将其合约移植到 EVM 生态系统,并立即利用 EVM 的流动性。
3. 通用库、预编译和调试基础设施
Stylus 允许开发者使用 Rust 和 C++ 等主流语言编写智能合约的另一个优势是,开发者可以利用支持这些主流语言的大量通用库,这些库包含从链上计算到密码学的所有内容文件 I/O 的原语。
更重要的是,开发人员可以受益于为这些主流语言构建的复杂工具基础设施。这不仅包括高级包管理器,还包括熟悉的调试基础设施,例如 C/C++ 中的 GDB 工具包。所有这些都可能会大大提高 web3 的开发熟悉度,并允许更简单地进入区块链开发和 EVM 堆栈。
4. 将链上计算引入物联网以实现 DePIN
随着 WASM 执行效率的提高,Stylus VM 可能会打开将链上计算与物联网 (IoT) 中的便携式设备集成的大门——包括从交通信号灯到智能冰箱到智能手表的所有设备。尽管 WASM 最初旨在用于浏览器环境,但其可移植、模块化架构和高效执行使其非常适合需要小型且高效运行时的 IoT 设备 [8]。
因此,Arbitrum Stylus 的 WASM VM 非常适合去中心化物理基础设施网络 (DePIN) 的增长趋势,该网络寻求使用区块链网络和新颖的代币激励来维护从 WiFi 系统到太阳能电池等物理基础设施 [9] 。由于 DePIN 的大部分依赖于区块链堆栈与物联网设备的集成,Arbitrum Stylus 可以作为一个重要的网关,允许这些设备高效运行基于 WASM 的计算,并通过 Arbitrum 生态系统利用 EVM 流动性 [10]。
结论
在本文中,我们深入探讨了Arbitrum Stylus的动机、实施和影响。通过使开发人员能够以多种主流语言编写和部署智能合约,Stylus 使区块链开发变得更加容易和高效,将主流可组合性与 EVM 流动性相结合,以解锁各种新颖的应用程序,尤其是那些内存密集型应用程序。因此,Stylus 可以说是定义下一代可组合智能合约的一个里程碑式项目,成为一个能够模糊 web2 和 web3 开发之间界限的平台,以创建更高效、集成和高性能的区块链开发堆栈。
感谢您阅读斯坦福大学区块链评论!订阅以支持我们开创 Web3 专用行业期刊的工作
注:Note: 本文是对 Offchain Labs 的 Rachel Bousfield 和《斯坦福区块链评论》主编 Jay Yu 在接受采访时的讨论和想法的长篇探索。 Arbitrum Stylus 于 2023 年 9 月进行。
声明:本网站所有相关资料如有侵权请联系站长删除,资料仅供用户学习及研究之用,不构成任何投资建议!