站酷网素材图库,wordpress get_the_author_meta,学习型网站空间,wordpress 换轮播如理解 Arbitrum 如何协调 EVM 和 WASM 的共存是至关重要的。这不仅仅是拥有两个独立的引擎#xff1b;这是一种增强两者优势的协同关系。 Arbitrum 的独特架构允许 EVM 和 WASM 之间进行无缝和同步的操作#xff0c;这要归功于其统一的状态、跨 VM 调用和兼容的经济模型。
用… 理解 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 的结构允许系统保证终止并强制证明的有效性。