科普丨虚拟机之战:Wasm 与 EVM

PolkaWorld

共 2393字,需浏览 5分钟

 · 2021-11-30

加入 PolkaWorld 社区,共建 Web 3.0!

1
什么是以太坊虚拟机(EVM)?


以太坊虚拟机是一种轻量级虚拟机,用于在以太坊网络上运行各种智能合约。EVM 的功能不同于 Windows 等传统操作系统,后者一次只能在一台机器上运行。EVM 是构建在本机操作系统上的高级抽象,用于模拟物理机。

通过使用 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 将利用常见的硬件能力,以“接近本地的速度”执行。

  • 易于阅读和调试。它具有人类可读的文本格式,代码可以手动查看、编写和调试。
  • 确保安全。它通过增强主机浏览器的权限策略和保持向后兼容性来实现这一点。

3
EVM 与 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
小结


以太坊引入了比特币区块链上不可用的某些功能。以太坊虚拟机的引入允许开发人员轻松地创建和部署智能合约。然而,EVM 也有许多局限性,而 Wasm 正试图解决这些局限性。根据 WebAssembly.org, WebAssembly 1.0 已经被提供给四个主要的浏览器引擎。

本文转载自:https://www.8btc.com/article/6710711



  • 欢迎学习 Substrate: 

    https://substrate.dev/

  • 关注 Substrate 进展:

    https://github.com/paritytech/substrate

  • 关注 Polkadot 进展:

    https://github.com/paritytech/polkadot

更多内容:


Gavin Wood:如何面对区块链技术批判者?

Kusama 结束第三批插槽 Auction!24% KSM 锁在平行链中!

SubQuery 宣布举办 Gitcoin 黑客马拉松


扫码关注公众号,回复 “1” 加入波卡群

关注 PolkaWorld

发现 Web 3.0 时代新机遇


点个 “在看” 再走吧!

浏览 28
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报