其他
科普丨虚拟机之战:Wasm 与 EVM
加入 PolkaWorld 社区,共建 Web 3.0!
通过使用 EVM,相同的平台可以在许多不同的操作系统和硬件架构上运行。该特性使虚拟机适合以太坊等网络,可以通过分布在世界各地的不同机器上的不同客户端访问这些网络。EVM 可以模拟在物理 CPU 上执行的功能,并负责以太坊网络上的大部分功能。
EVM 具有以下特点:
确定性
确定性程序对相同的输入集提供相同的输出,而与它执行相同代码的次数无关。在以太坊中,DApp 每次处理数百万美元,各种用户需要知道代码在执行的每个阶段是如何反应的。
可隔离
智能合约需要在完全隔离的环境中运行。这确保了如果智能合约发生黑客或bug,它不会影响底层协议的其他部分。
可终止
以太坊智能合约是图灵完备的。因此,只要有足够的时间和资源,他们就应该能够解决任何问题。智能合约应该有终止机制,因为很难确定合约是否会在规定的期限内完成所有操作。以太坊使用“Gas”限制来终止超出执行限制的智能合约。
EVM 的功能
它是以太坊网络的去中心化处理单元。每个交互、交易和智能合约执行都只能在这里发生。 获取并执行指令,然后通过给定的指令分派器解码操作数。 负责所有的数据结构,如操作数、数据处理和指令。 跟踪网络组件,如存储状态、区块信息和事件状态。 负责为以太坊网络上的不同智能合约创建 Runtime 环境。
EVM 的挑战
EVM 处理如此既多又不同的操作,速度并不快,但是它的操作码规范还没有发展到可以处理变化的需求。 未能进化意味着语言也有局限性。
2什么是 WebAssembly (Wasm)?
WebAssembly (Wasm)是一种新型代码,可以在现代浏览器上高效地执行。这个新代码是由万维网联盟(W3C)创建和定义的。Wasm 是为网络而建的,包括来自谷歌、Mozilla和苹果的工程师。本质上,Wasm 通常被称为 Ethereum 2.0,它具有 EVM 的所有功能,并附带了额外的功能。
专为网络打造
如前所述,来自谷歌、微软和苹果等大型技术公司的工程师都是开发团队的一部分。因此,这些工程师要确保 Wasm 与他们的引擎和协议兼容。
设计时考虑了一组特定的目标
创建 Wasm 是为了快速、高效和便携。Wasm 将利用常见的硬件能力,以“接近本地的速度”执行。
易于阅读和调试。它具有人类可读的文本格式,代码可以手动查看、编写和调试。 确保安全。它通过增强主机浏览器的权限策略和保持向后兼容性来实现这一点。
3EVM 与 Wasm
速度
简单地说,EVM 是一个万事通,但却什么都不懂。EVM 如何处理编译这一点就是一个很好的例子。本机引擎努力寻找执行某些操作的最佳路径,最终影响 EVM 的总体吞吐量。
EVM 只能处理256位字节码,这意味着小于256位的字节码必须先转换为256位格式,然后才能发送给 EVM。EVM 的可扩展性问题很明显,因为它每秒只处理25个交易。
Wasm 直接转换为编译后的代码,这使它能够更快地加载,同时增加每个区块所处理的交易数量。
预编译
EVM 依赖于预编译(预编译合约)。当发出预编译调用时,EVM 将执行预定义的本机代码,然后显示结果。这些预编译特定于用于基本操作的特定协议,例如签名方案和哈希。
尽管预编译在不消耗大量 Gas 的情况下使加密计算变得高效,但它们也带来了问题——引入新的预编译器通常要求网络经历一个系统范围的硬分叉。
Wasm 消除了以太坊对预编译合同的依赖。由于 Wasm 非常高效,开发人员可以创建高效、快速的智能合约,而无需担心潜在的硬分叉。
灵活性和互操作性
Wasm 支持更多的语言,并且提供了比 EVM 更广泛的工具集。Wasm 支持传统语言,如 Rust、C和C++。Wasm 也被本地 JavaScript 引擎支持,例如 Google 的 V8 引擎(基于 Node.js 和 Chromium 的浏览器)、微软的 Chakra 引擎(Microsoft Edge)和 Mozilla 的 Spidermonkey 引擎(Thunderbird 和 Firefox)。
4小结
本文转载自:https://www.8btc.com/article/6710711
欢迎学习 Substrate:
https://substrate.dev/
关注 Substrate 进展:
https://github.com/paritytech/substrate
关注 Polkadot 进展:
https://github.com/paritytech/polkadot
更多内容:
Kusama 结束第三批插槽 Auction!24% KSM 锁在平行链中!
扫码关注公众号,回复 “1” 加入波卡群
关注 PolkaWorld
发现 Web 3.0 时代新机遇
点个 “在看” 再走吧!