{"content":{"title":"Arbitrum Stylus 合约开发范式的转变","body":">- 原文链接：https://medium.com/@estheraladioche569/arbitrum-stylus-paradigm-shift-95e62c035a95\r\n>- 译者：[AI翻译官](https://learnblockchain.cn/people/19584)\r\n>- 本文永久链接：[learnblockchain.cn/article…](https://learnblockchain.cn/article/8382)\r\n    \r\n什么是 Stylus？\r\n--------------\r\n\r\nStylus 是 Arbitrum Nitro 的一次升级，允许智能合约用 Rust、C 和 C++ 等语言编写。这很重要，因为这些语言比 Solidity 更高效，可以带来更快和更便宜的智能合约。Stylus 还使得使用新的加密库和其他 Solidity 无法实现的功能成为可能。\r\n\r\nStylus 完全是可选的。熟悉 Solidity 的开发者可以继续享受 Arbitrum 的 EVM 等效体验，而无需任何更改。这是因为 Stylus 完全是附加的——我们称之为 EVM+ 模型。Stylus 引入了第二个完全兼容的虚拟机，用于执行 WebAssembly，并与 EVM 协调以产生状态转换。而且由于 Stylus SDK 使用 Solidity ABI，用一种语言编写的合约可以调用任何其他语言的合约。\r\n\r\n例如，现有的 Solidity DEX 可以——无需修改——列出 Rust ERC20 代币，这些代币可能会调用 C 程序进行加密。所有内容都是完全互操作的，因此用户永远不必关心他们调用的合约的具体语言或实现细节。\r\n\r\nStylus 是 Arbitrum Nitro 的一次升级，Arbitrum Nitro 是支持 Arbitrum One、Arbitrum Nova 和 Arbitrum Orbit 链的技术栈。此升级为 EVM 添加了第二个同等的虚拟机，其中 EVM 合约继续像在以太坊中一样运行。我们称这种范式为 **EVM+**，因为 **所有内容都是完全附加的，并且不会替换以太坊虚拟机 (EVM)。**\r\n\r\n\r\n![EVM +](https://img.learnblockchain.cn/pics/20240617220333.webp)\r\n\r\n第二个虚拟机执行 WebAssembly (WASM) 而不是 EVM 字节码。WASM 是一种现代二进制格式，其在Web标准、浏览器中作为标准使用而流行起来，用来加速计算。WASM 旨在构建快速、可移植且人类可读，并具有用于安全性和简便性的沙盒执行环境。对于 Arbitrum 链来说，使用 WASM 并不是什么新鲜事。自从 [Nitro 升级](https://medium.com/offchainlabs/arbitrum-nitro-one-small-step-for-l2-one-giant-leap-for-ethereum-bc9108047450) 以来，WASM 一直是 Arbitrum 完全欺诈证明的基本组成部分。\r\n\r\n有了 WASM 虚拟机，任何可以编译为 WASM 的编程语言都在 Stylus 的范围内工作。虽然许多流行的编程语言可以编译成 WASM，但某些编译器比其他编译器更适合智能合约开发，例如 Rust、C 和 C++。其他语言如 Go、Sway、Move 和 Cairo 也可以支持。具备自己运行时的语言，如 Python 和 Javascript，Stylus 支持起来比较困难，尽管不是不可能。欢迎以库的形式对新语言和现有语言进行第三方贡献！\r\n\r\n与使用 Solidity 相比，WASM 程序效率更高。这有很多原因，包括 Rust 和 C 的几十年编译器开发。WASM 也比 EVM 运行时更快，导致执行速度更快。一般来说，使用 WASM 语言的合约比使用 Solidity 的合约有 **10 倍的改进**。\r\n\r\n这怎么可能？\r\n---------------------\r\n\r\nStylus 之所以成为可能，是因为 Arbitrum Nitro 独特的欺诈证明技术。当 Arbitrum 网络上发生争议时，Nitro 会 **在 WASM 中** 重放链的执行。诚实的 Arbitrum 验证者将会二分争议，直到找到一个无效的步骤，并通过 [“一步证明”](https://docs.arbitrum.io/proving/challenge-manager#general-bisection-protocol) 在链上检查。\r\n\r\n这意味着 Nitro 可以确定性地证明任意 WASM。\r\n\r\n如果可以一般性地证明 WASM，那么任何编译为 WASM 的程序的正确性都可以被证明。这是使 Stylus 成为可能的关键技术飞跃。\r\n\r\n有关 Nitro 技术架构的详细概述，请参阅 [文档](https://developer.arbitrum.io/inside-arbitrum-nitro/) 或 [Nitro 白皮书](https://github.com/OffchainLabs/nitro/blob/master/docs/Nitro-whitepaper.pdf)。\r\n\r\n为什么 Stylus 是游戏规则改变者？\r\n-----------------------------\r\n\r\n传统上，以太坊和其他区块链上的智能合约是用 Solidity 编写的，这是一种专为 EVM 设计的语言。虽然 Solidity 很好地完成了它的任务，但它也有一些限制。它可能冗长，有安全漏洞，并且缺乏现代语言的性能。\r\n\r\nArbitrum Stylus 通过提供几个关键优势来解决这些限制：\r\n\r\n*   **更广泛的开发者群体：** 通过支持 WASM，Stylus 为已经熟悉 Rust 等流行语言的大量开发者打开了大门。这可以显著增加可用于构建区块链应用程序的开发者人才库。\r\n*   **更快和更高效的合约：** WASM 程序通常比 Solidity 代码更高效，导致更快的交易执行和更低的 gas 费用。这对于去中心化交易所和游戏平台等高性能应用程序至关重要。\r\n*   **增强的安全性：** 尤其是 Rust，以其内存安全特性而闻名，可以帮助防止智能合约中的某些类型的安全漏洞。\r\n\r\nGas 价格（关键特性）\r\n-----------------------\r\n\r\nStylus 为 WASM 程序引入了新的定价模型。针对高计算应用程序，Stylus 使以下内容更实惠：\r\n\r\n*   计算，通常便宜 **10–100 倍**，具体取决于程序。这主要是由于 WASM 运行时相对于 EVM 的效率，以及 Rust、C 和 C++ 编译器生成的代码质量。另一个重要因素是代码本身的质量。例如，实现特定加密操作的高度优化和审计的 C 库通常可以无需修改地部署，并且表现非常好。对于高度优化的 Solidity 使用本地预编译的情况，与未优化的 Stylus 等效程序相比，费用减少可能较小。\r\n*   内存，由于 Stylus 的新颖指数定价机制，比 EVM 的每次调用 [二次内存](https://notes.ethereum.org/@vbuterin/proposals_to_adjust_memory_gas_costs) 定价政策便宜 **100–500 倍**。有史以来第一次，高内存应用程序在 EVM 等效链上成为可能。\r\n*   存储，Rust SDK 提供了更好的访问模式和类型选择。请注意，虽然底层的 [SLOAD](https://www.evm.codes/#54) 和 [SSTORE](https://www.evm.codes/#55) 操作在 EVM 中的成本相同，但 Rust SDK 实现了一个最优缓存策略，最小化了它们的使用。确切的节省取决于程序。\r\n*   虚拟机便利功能，包括常见操作如 keccak 和重入检测。使安全成为默认设置不再昂贵。\r\n\r\n然而，使用 Stylus 可能对你的应用程序有一些小的开销：\r\n\r\n*   第一次部署 WASM 时，必须 _激活_。这通常需要几百万 gas，但为了避免测试网 DoS，我们将其设置为固定的 1400 万。请注意，你不必为相同程序的未来副本来再次激活。例如，相同的 NFT 模板可以多次部署，而无需多次支付此费用。我们将很快使支付的费用取决于程序，使得使用的 gas 基于 WASM 的复杂性，而不是这个非常保守的最坏情况估计。\r\n*   调用 Stylus 程序的费用为 200–2000 gas。我们正在与 Wasmer 合作改进设置成本，但可能总会有一些 gas 费用用于跳转到 WASM 执行。这意味着如果一个合约几乎不做任何事情，它在 Solidity 中可能更便宜。然而，如果一个合约开始做有趣的工作，动态费用将很快弥补这个固定成本开销。尽管为测试网选择了保守的界限，但随着定价模型的成熟和进一步优化，所有这些都可能会发生变化。由于 gas 数值会在不同更新中变化，可能更有意义的是记录执行操作所需的时间，而不仅仅依赖于收据中报告的数字。\r\n\r\n它是如何工作的？\r\n-----------------\r\n\r\n将一个 Stylus 程序变为现实主要有四个步骤——编码、编译、执行和证明。\r\n\r\n编码\r\n------\r\n\r\n原则上，开发者可以使用任何可以编译成 WASM 的编程语言编写智能合约。实际上，一些高级语言生成的 WASM 性能远远优于其他语言。\r\n\r\n最初，将支持 Rust、C 和 C++。然而，支持的程度最初会有所不同。Rust 从第一天起就有丰富的语言支持，并且有一个开源的 SDK，使得用 Rust 编写智能合约尽可能简单。C 和 C++也会立即得到支持，这将使得在这些语言中编写的现有合约可以在链上部署，几乎无需修改。\r\n\r\nRust 的 Stylus SDK 包含了大多数开发者在 Stylus 中开发智能合约所需的开发框架和语言特性。该 SDK 还使得可以执行所有 EVM 特定的功能，智能合约开发者已经习惯使用这些功能。查看 [Rust SDK 指南](https://docs.arbitrum.io/stylus/rust-sdk-guide)和[Crate 文档](https://docs.rs/stylus-sdk/latest/stylus_sdk/index.html)。\r\n\r\n编译\r\n-----------\r\n\r\nStylus 程序需要编译两次。首先从高级语言（如 Rust、C 或 C++）编译成 WASM，然后在一个称为**激活**的过程中，再从 WASM 编译成节点的本地机器代码（如 ARM 或 x86）。\r\n\r\n第一次编译使用 Rust 的 Stylus SDK 提供的 CLI 工具或任何其他编译器（如 Clang for C 和 C++）。一旦编译完成，WASM 会被发布到链上。虽然此时合约的行为已经定义，但在激活之前仍然无法调用。\r\n\r\n激活 Stylus 程序需要一个新的预编译，ArbWasm。这个预编译生成高效的二进制代码，针对节点的本地汇编进行优化。在此步骤中，一系列中间件确保用户程序可以安全执行并且可以确定性地防止欺诈。仪器包括 gas 计量、深度检查、内存收费等，以保证所有 WASM 程序对链的执行是安全的。\r\n\r\n执行\r\n---------\r\n\r\nStylus 程序在 [Wasmer](https://wasmer.io/) 的一个分支中执行，这是领先的 WebAssembly 运行时，进行了最小的更改以优化其代码库以适应区块链特定的用例。Wasmer 执行本地代码的速度远快于 Geth 执行 EVM 字节码的速度，这有助于 Stylus 提供显著的 gas 节省。\r\n\r\nEVM 合约继续以 Stylus 之前的方式执行。当调用合约时，可以通过一个 [EOF](https://notes.ethereum.org/@ipsilon/evm-object-format-overview) 启发的合约头看到 EVM 合约和 WASM 程序之间的区别。从那里，合约使用其对应的运行时执行。用 Solidity 和 WASM 语言编写的合约可以相互进行跨合约调用，这意味着开发者不必考虑合约是用什么语言编写的。一切都是互操作的。\r\n\r\n证明\r\n-------\r\n\r\nNitro 有一个快乐的情况和一个悲伤的情况。大多数时候，它处于快乐的情况，将执行历史编译成本地代码。在验证者之间存在争议的悲伤情况下，Nitro 将执行历史编译成 WASM，以在以太坊上进行交互式欺诈证明。Stylus 是 Nitro 欺诈证明技术的自然延伸，利用它不仅可以对执行历史进行二分，还可以对开发者部署的任何 WASM 程序进行二分。\r\n\r\n我能做什么？\r\n--------------\r\n\r\nStylus 测试网对所有人开放。我们花了很多心思来创造尽可能好的编程体验。然而，工作并未止步于此。从开发者那里获得的反馈将帮助 Stylus 迈向下一个层次，改进工具、文档和语言特性。成为 Stylus 的早期采用者是熟悉其所带来的机会的最佳方式。\r\n\r\n由于 Stylus，许多可能性得以实现，举例如下：\r\n\r\n*   为替代签名方案（如 secp256r1）定制预编译\r\n*   消耗大量 RAM 的生成艺术库\r\n*   将用 C++编写的现有游戏带到链上\r\n*   计算密集型 AI 模型\r\n\r\n关于 Stylus 最令人兴奋的部分是所有在 EVM 中甚至未曾想象过的新颖用例。这是因为直到今天，这一切都不可能实现。\r\n\r\n虽然许多开发者会被新的用例所吸引，但在 Stylus 中重建现有应用程序也将为创新打开大门。dApps 从未如此快速、廉价或安全。\r\n\r\n如果你是对 Stylus 感兴趣的开发者，请访问[快速入门](https://docs.arbitrum.io/stylus/stylus-quickstart) ，加入 [Discord 频道](https://discord.com/invite/arbitrum) ，并开始构建！\r\n\r\n路线图\r\n--------\r\n\r\nStylus 目前仅限于测试网，不推荐用于生产。这将在完成审计和添加额外功能后发生变化。\r\n\r\nArbitrum [Orbit L3s](https://docs.arbitrum.io/launch-orbit-chain/orbit-gentle-introduction)可以随时选择加入 Stylus。Arbitrum One 和 Arbitrum Nova 将在 DAO 投票通过后升级到 Stylus。\r\n\r\n**Stylus 的未来**\r\n\r\nStylus 的引入标志着 Arbitrum 和更广泛的区块链生态系统演变中的一个重要里程碑。它吸引新开发者、提高智能合约性能和增强安全性的潜力，承诺在区块链领域释放一波新的创新浪潮。\r\n\r\n随着 Stylus 生态系统的成熟和更多工具和库的可用，我们可以期待看到更多令人兴奋的应用程序出现。从高频交易平台到去中心化社交网络，可能性真的是无限的。\r\n\r\n总之，Arbitrum Stylus 不仅仅是一个技术升级；它代表了智能合约开发的范式转变。通过赋予开发者选择其首选语言的自由并利用 WASM 的效率，Stylus 为更快、更安全和更具创新性的区块链应用铺平了道路。\r\n\r\nArbitrum 是一套扩展解决方案，提供高吞吐量、低成本的智能合约环境，依托于以太坊的行业领先的证明技术。Arbitrum 主要有两个区块链，分别是 Arbitrum One 和 Arbitrum Nova。最新产品 Arbitrum Orbit 允许你创建自己的专用链，并结算到 Arbitrum 的一个 Layer 2 (L2)链：Arbitrum One、Arbitrum Nova 或 Arbitrum Goerli。了解更多关于 Arbitrum 的信息[这里](https://arbitrum.io/)\r\n\r\n**资源链接：**\r\n\r\n[1] [Arbitrum Stylus](https://docs.arbitrum.io/stylus/stylus-gentle-introduction)\r\n\r\n[2] [Abitrum Nitro](https://docs.arbitrum.io/inside-anytrust)\r\n\r\n\\[3\\] [Arbitrum Nova](https://docs.arbitrum.io/for-devs/concepts/public-chains#arbitrum-nova)\r\n\r\n\\[4\\] [Arbitrum Goerli](https://docs.arbitrum.io/for-devs/concepts/public-chains#arbitrum-goerli)\r\n\r\n\\[5\\] [Arbitrum One](https://docs.arbitrum.io/for-devs/concepts/public-chains#arbitrum-one)\r\n\r\n\\[6\\] [Arbitrum Sepolia](https://docs.arbitrum.io/for-devs/concepts/public-chains#arbitrum-sepolia)\r\n\r\n[7] [Stylus 测试网](https://docs.arbitrum.io/for-devs/concepts/public-chains#stylus-testnet)\r\n\r\n> 本文由 AI 翻译，欢迎小伙伴们来[校对](https://github.com/lbc-team/Pioneer/blob/master/translations/8382.md)。"},"author":{"user":"https://learnblockchain.cn/people/20926","address":null},"history":"bafkreih7ydqq3ti3ipgargvychhxse6dpkaicxkq5bzqwmuru7j4gp7ape","timestamp":1718633529,"version":1}