深潮TechFlow

Posted on Nov 02, 2023Read on Mirror.xyz

Arbitrum Stylus:智能合约可组合性的新标准

Arbitrum Stylus 旨在通过统一 EVM 的执行环境和 WASM 的执行环境来创建智能合约可组合性的新标准。

撰写:Rachel Bousfield、Jay Yu

编译:深潮 TechFlow

注:此文来自于斯坦福区块链评论,深潮 TechFlow 为斯坦福区块链评论合作伙伴,独家获授权编译转载。

介绍

从在 Etherscan 上处理字节码到防范 Solidity 中各种代码漏洞,区块链开发的 EVM 技术栈与许多开发者熟悉的 Web2 技术栈(如 Rust、C++或 Python)相比,存在着很大的差异,因此在 Solidity-EVM 技术栈和主流语言之间形成了“鸿沟”。随着区块链领域的不断发展,迫切需要弥合这一开发者差距,实现更加可组合的 Web3 开发。

在本文中,我们将介绍** Offchain Labs 的最新项目 Arbitrum Stylus**,该项目在 Stanford 区块链周期间的 Blockchain Applications Stanford Summit(BASS)会议上首次亮相。Arbitrum Stylus 是一个具有里程碑意义的项目,旨在通过统一 EVM 的执行环境和 WASM 的执行环境来创建智能合约可组合性的新标准。首先,我们将讨论该项目背后的一些动机,然后深入探讨一些项目的实施细节,最后讨论该项目在 Web3 领域的影响。

Arbitrum Stylus 的开发旨在解决区块链开发中的两个关键问题:(1)区块链开发的可访问性,以及(2)智能合约的执行效率。

让区块链开发变得更简单

根据 Electric Capital 的开发者报告,目前每月活跃的区块链开发者约为** 20,000 **人。尽管这个数字在过去几年有了很大增长,但与主流通用语言(如 Rust 或 C++)的数百万(甚至数千万)开发者相比,仍然相差甚远。随着区块链领域的不断发展,需要简化吸引数百万新智能合约开发者的过程。

其中一种最佳方法是将智能合约开发过程与现有的主流语言(如 Rust 或 C++)整合在一起。许多非 EVM 生态系统,如 Solana 和 Cosmos,采用了这种方法,Rust 成为了这些生态系统的事实上的智能合约语言。然而,到目前为止,EVM 生态系统主要依赖于其自己独特的编程语言 Solidity 来编写智能合约。然而,Arbitrum Stylus 旨在通过允许区块链开发者使用 Rust 等主流语言编写智能合约,然后部署在兼容 EVM 的区块链上来改变这种情况。

让智能合约执行更高效

在过去的几年中,随着去中心化应用的普及,对链上计算的需求大幅增加,特别是在以太坊网络上。网络需求的激增导致了高昂的 Gas 费用。这进一步推动了公共区块链交易吞吐量的提高方面的创新,而 Arbitrum 是这一领域最突出的项目之一。这包括旗舰项目 Arbitrum One L2 链以及 Arbitrum Nitro 技术栈。

Arbitrum Stylus 是所有这些的自然延伸,也是 Arbitrum 工具包的最新解决方案。与之前的解决方案不同,这些解决方案侧重于优化交易之间的效率(如通过 Rollups 批量处理交易),Stylus 侧重于优化交易内部的执行级别,特别是每个交易的执行方式。通过允许合约在 WebAssembly(WASM)中执行,Stylus 合约执行速度更快,承诺较低的 Gas 费用,并且访问内存的成本比使用 EVM 便宜 100-500 倍。

Stylus:提供 WASM + EVM 可组合性

WebAssembly 和 Arbitrum Nitro

要理解为什么 Stylus 比传统的 EVM 引擎更高效和可组合,首先需要了解 WebAssembly 或 WASM 的作用。WASM 是一种汇编语言,这意味着它基本上是机器可读的二进制代码,而不是像 Rust 或 C++这样的人类可读语言。这些人类可读语言需要一个“编译器”将它们转换为机器可读的“汇编语言”,然后才能执行。

特别是,WASM 是一种为 Web 浏览器优化的汇编语言,旨在提高主要基于 Javascript 的 Web 应用程序的执行速度。通过成为一种便携、模块化和易于执行的汇编语言,WASM 允许开发人员直接在各种主流语言(如 Rust 或 C++)中编写代码片段。

随着 Arbitrum 的 Nitro 升级,因为链上的所有争端都在 WASM 中执行,这意味着 Nitro 对任意 WASM 的任何争端都有一个有效的欺诈系统。由于 Arbitrum Nitro 能够为任何 WASM 代码提供欺诈证明,这意味着它可以为任何编译成 WASM 的程序提供欺诈证明。

Arbitrum Stylus 主要在 Arbitrum Nitro 继承的 WASM 欺诈证明的基础上添加了一个 WASM 执行引擎,基于其中一种主要的 WASM 引擎 Wasmer,该引擎执行代码速度比 Geth 执行 EVM 字节码快得多。具有执行引擎和证明引擎,这使得智能合约可以完全在 WASM 中编写、执行和证明。鉴于许多主流语言(如 Rust 和 C++)能够直接编译成 WASM,这也是 Arbitrum Stylus 允许区块链开发人员在各种主流通用语言中编写、部署和执行智能合约的方式。

EVM +引擎的一致性

Arbitrum Stylus 为开发人员提供了在不放弃使用 Solidity 编写和执行智能合约的能力下,使用 Rust 和其他 WASM 兼容语言编写合约的额外选项。通过同时具有 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 结构来表示的,Trie 是一种用于高效存储和检索数据的树形数据结构。Stylus 的 EVM 和 WASM 引擎都使用相同的 Trie 结构来读取和写入数据到"世界状态机"中。两种引擎都会产生一些给定的状态变化以更新世界状态;唯一的区别在于它们如何计算这个状态变化。

从 EVM +引擎中实现的成本节约

前面我们已经提到,使用 WASM 执行引擎可以实现显著的成本节约,因为它提高了执行效率。现在我们可以看看如何实现这一点。为此,让我们考虑一个简单的 ADD 指令,例如 2 + 3。

在 EVM 中,我们需要执行以下步骤:

  • 支付 Gas 费,需要多次查找内存表;

  • 考虑追踪,即使禁用了;

  • 从模拟堆栈中弹出两个项目;

  • 将它们相加;

  • 将结果推送。

我们可以看到,只有步骤 4 实际上涉及这两个整数的加法,而所有其他步骤都是 EVM 系统内的“样板指令”,与计算本身相比都会消耗高昂的 Gas 费。

另一方面,假设我们使用 WASM 执行这个简单的 ADD 操作。我们只需要一步:

  1. 执行单个 x86 或 ARM ADD 指令。

我们可以看到,这比 EVM 的加法便宜 150 倍。鉴于所有这些 Gas 节约,Stylus VM 甚至引入了一种新的“Gas”子单元,称为“ink”,目前默认定义为 1/10000 的 1 个 Gas,甚至可以由链的所有者进行配置。

然而,所有这些 Gas 节约有一个限制,即需要 Gas 来激活 Stylus VM,目前设置为 114,000,000Gas 的固定费率。此外,调用 Stylus 程序本身目前需要大约 128-2048Gas。因此,仅为了优化两个整数的单个 ADD 操作而激活 WASM 环境可能并不经济。然而,对于内存密集型的智能合约,所有这些节约将相互补偿,抵消了这种“激活成本”。例如,在 EVM 中分配 3.8 MB RAM 的调用将花费约 3200 万 Gas,而在 Stylus WASM VM 中只需要 64000Gas,节省了 500 倍。与此相关的一个推论是,内存密集型应用在纯 EVM 上根本不可行,因为很快就会遇到各种 Gas 限制。然而,在 Stylus VM 中,使用 WASM 运行时后,这变得完全可行,因为 RAM 使用 WASM 运行时成本较低。

使用 Stylus 解锁的新用例

  1. 内存密集型应用

如上所述,Arbitrum Stylus 最令人兴奋的部分之一是它在链上启用了内存密集型应用。这为全新的应用类别打开了大门,例如生成式 AI NFT、高频交易和链上游戏。实际上,Stylus VM 可能是一项里程碑技术,允许 AI(以其高内存需求而著称)在链上具有计算性能,并与 EVM 合约完全互操作。

  1. Alt-VM 与 EVM 流动性的可组合性

此外,Stylus 的 EVM 兼容性以及允许基于 WASM 的合约与原生 Solidity 合约互操作的能力意味着这些 WASM 合约可以充分利用 EVM 上的巨大流动性和用户群体。回想一下,我们之前提到许多替代 VM,如 Solana 和 Cosmos,使用了支持 WASM 的语言,如 Rust,来执行他们的智能合约。Stylus 的 WASM 引擎意味着这些替代 VM 中的开发者可以轻松地将他们的合约迁移到 EVM 生态系统,并立即利用 EVM 的流动性。

  1. 通用库、预编译和调试基础设施

Stylus 允许开发者使用像 Rust 和 C++这样的主流语言来编写智能合约的另一个优势是,开发者可以利用支持这些主流语言的大量通用库,这些库包含从链上计算到加密原语到文件 I/O 等各种内容。

更重要的是,开发者可以从为这些主流语言构建的复杂工具基础设施中受益。这不仅包括先进的包管理器,还包括熟悉的调试基础设施,比如 C/C++中的 GDB 工具包。所有这些都可能极大地提高 Web3 的开发熟悉度,并使区块链开发和 EVM 堆栈的入门过程变得更加简单。

  1. 将链上计算引入物联网以用于 DePIN

由于 WASM 的执行效率提高,Stylus VM 可以打开整合链上计算与物联网(IoT)中的便携设备的大门,包括从交通信号灯到智能冰箱再到智能手表等一切。虽然 WASM 最初是为浏览器环境设计的,但它的便携、模块化架构和高效执行使它成为物联网设备的理想选择,这些设备需要小型和高效的运行时 。

因此,Arbitrum Stylus 的 WASM VM 是日益增长的分散式物理基础设施网络(DePIN)趋势的自然选择,这些网络旨在利用区块链网络和新颖的代币激励来维护从 WiFi 系统到太阳能电池等物理基础设施 。由于 DePIN 的许多方面依赖于将区块链堆栈与物联网设备集成,Arbitrum Stylus 可以成为重要的入口,允许这些设备既高效地运行基于 WASM 的计算,又通过 Arbitrum 生态系统来获取 EVM 流动性 。

结论

在本文中,我们深入探讨了 Arbitrum 的动机、实施和影响。通过使开发者能够使用各种主流语言编写和部署智能合约,Stylus 使区块链开发变得更加易于访问和高效,将主流可组合性与 EVM 流动性相结合,以解锁各种新颖应用,尤其是那些内存密集型的应用。因此,Stylus 可以说是定义可组合智能合约下一代的里程碑项目,成为一个能够模糊 web2 和 Web3 开发之间界限的平台,创建一个更加高效、集成和高性能的区块链开发堆栈。

https://review.stanfordblockchain.xyz/p/arbitrum-stylus-a-new-standard-for?utm_source=post-email-title&publication_id=1324776&post_

深潮 TechFlow 是由社区驱动的深度内容平台,致力于提供有价值的信息,有态度的思考。

社区:

订阅频道:https://t.me/TechFlowDaily

电报:https://t.me/TechFlowPost

推特:@TechFlowPost

进微信群添加助手微信:blocktheworld

Arbitrum