Arbitrum Stylus 的工作原理

简介: Arbitrum Stylus通过统一状态、跨虚拟机调用和共享经济模型实现了EVM和WASM的无缝协同工作,允许使用Solidity等EVM语言和Rust等WASM语言编写的智能合约共享全局状态并互相调用,同时保持高效的Gas使用和安全性。

理解 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 的结构允许系统保证终止并强制证明的有效性。

相关文章
|
5月前
|
存储 前端开发 开发者
scss概念及使用
【7月更文挑战第11天】
83 1
|
4月前
|
Dart 前端开发 编译器
Less和SCSS,哪个更好用?
Less和SCSS,哪个更好用?
|
7月前
|
前端开发 JavaScript UED
【专栏】CSS Modules是一种将CSS与模块系统结合的技术,解决传统CSS管理中的全局样式污染和可维护性问题
【4月更文挑战第29天】CSS Modules是一种将CSS与模块系统结合的技术,解决传统CSS管理中的全局样式污染和可维护性问题。它提供局部作用域、模块隔离和自动生成唯一类名,保证样式安全性。与现有CSS语法兼容,且与React、Vue等现代框架集成良好,支持动态样式和主题切换。通过引入CSS Modules,开发者能提升代码的可维护性、可读性和稳定性。了解和使用CSS Modules对于前端开发至关重要。
251 2
|
7月前
|
前端开发 JavaScript Shell
stylus详解与引入
stylus详解与引入
|
7月前
|
JavaScript 前端开发 Shell
stylus详解与引入的例子
stylus详解与引入的例子
|
7月前
|
传感器 算法 搜索推荐
stylus使用方法
stylus使用方法
66 0
|
7月前
|
JavaScript 前端开发 开发者
JavaScript与TypeScript:深入解析两者之间的异同
【4月更文挑战第23天】本文对比分析了JavaScript和TypeScript的异同。作为JavaScript超集,TypeScript添加了静态类型和类等特性,有助于提升代码质量和可维护性。两者在语法上相似,都能在浏览器或Node.js环境中运行。JavaScript适合小项目和快速开发,而TypeScript适用于大型项目,因其静态类型和强大的生态系统能减少错误并便于团队协作。理解两者差异有助于开发人员根据项目需求作出合适选择。
|
JavaScript 前端开发 算法
Vue的工作原理是什么?底层原理是什么?
Vue的工作原理是什么?底层原理是什么?
729 0
|
前端开发
【web前端开发】浅谈CSS三大特性
CSS有三个特性,分别是是层叠性、继承性以及优先级