区块链行业是一个始终寻求增长和改进的行业。在由以太坊虚拟机(EVM)提供支持的以太坊网络诞生后,该行业最近强劲发展并不断演变。尽管 EVM 在一定程度上是有效的,但WebAssembly (WASM) 这个新玩家也出现了。在本文中,我们将了解 WebAssembly 是什么、它是如何工作的以及它与加密货币行业的联系。
关于 Web Assembly (WASM)
Web Assembly (通称为 WASM)是一个开源框架,允许程序员使用其源代码或按照开发人员的意愿对其进行修改。WASM 取得了更大的进步,为基于堆栈的虚拟机 (VM) 提供了二进制指令格式。该格式用作高级编程语言的可移植编译目标。它是一个小型、快速的二进制选项,可为 Web 应用程序提供接近本机的性能。
WebAssembly 可作为任何语言(包括JavaScript)的编译目标。这意味着开发人员可以将 C/C++、Go、Rust等多种编程语言编译成一个标准,该标准可以在浏览器中近乎本机运行,作为 JavaScript 的几乎相等的替代品。
开发人员可以将 Web Assembly 用于高性能用例,例如游戏、音乐流、视频编辑和计算机辅助设计 (CAD) 应用程序。一些 Web 服务已经采用了 WASM,例如Google Earth和 Figma。
WebAssembly 的历史
WebAssembly 的开发是为了解决提高 Web 性能的需求以及将更广泛的语言纳入作为 Web 平台的愿望。2015年,由 Mozilla、Google、Microsoft 和 Apple 组成的 WebAssembly 社区小组创建了一种新的二进制格式。2017年,WebAssembly MVP(最小可行产品)发布,为二进制格式、执行模型以及集成到 Web 平台提供了稳定的基础。
下一个版本是浏览器支持,Chrome、Firefox、Safari 和 Edge 等主要浏览器都集成了 WebAssembly。开发人员发现了该技术在 Web 浏览器之外的实用性,并开始探索 WASM 在服务器端环境领域中的使用,以实现高性能计算。
Web Assembly 如何运作?
要掌握 WebAssembly 的功能,您需要了解 JavaScript 引擎的工作原理。为了编译 JS 代码,引擎会做一些事情,例如将代码传递给解析器,解析器是一个逐行检查代码的工具,验证有效的语法以及代码类型。此过程完成后,解析器就会创建一个称为抽象语法树(AST)的树数据结构。
创建 AST 后,引擎解释器会获取 AST 并将其转换为字节码,字节码是代码的中间表示形式。然后,引擎编译器获取字节码并将其转换为机器可以在其处理器上运行的代码。
WebAssembly 的功能与 JavaScript 不同,据说前者的速度更快,因为 WASM 代码直接进入编译器,有效地跳过了 JavaScript 过程中的第一步和第二步。原因是,与 JavaScript 这种动态类型语言不同,WASM 是静态类型的,这意味着在语言类型确定时,类型是预先声明的;因此,它们是已知的并在编译时得到检查。
因此,在编写 WASM 代码时,您通常使用静态类型语言来编写代码及其类型。然后生成预编译的 WASM 模块,最后由引擎编译器直接运行代码,跳过解析和转换阶段到中间表示阶段。
WebAssembly的功能
WebAssembly 是为了编译多种语言而开发的,据说比 JavaScript 更快。为了能够完成这一壮举,它配备了某些功能,这些功能不仅保证了框架的安全性,而且还证明它是值得信赖的。
W3C 标准
对其有效性和可信度建立了信心后,WebAssembly 已被添加到网络的官方语言中。目前有四种语言,HTML。 CSS、JavaScript,以及 现在的 WebAssembly。因此,WebAssembly 现在被视为 WC3 标准。
速度和效率
WebAssembly 的堆栈机是为在二进制代码格式上工作而构建的,这极大地影响了加载时间和大小。它具有的速度和效率使其成为区块链开发的主要内容,许多开发人员现在使用该语言来构建强大的生态系统。
安全
虚拟机扫描 WebAssembly 代码、验证它并在内存安全的沙箱中执行它。嵌入式环境限制对本地资源(包括文件系统或网络端口)的访问。这意味着从网络获取并在浏览器中运行的 WebAssembly 代码在处理硬件和软件资源时受到很大限制。
开源
W3C 有多家浏览器公司研究该项目。这让社区得以做出贡献,从而能够创建向下兼容、平凡的应用程序和经过功能测试的应用程序。
WebAssembly 和以太坊
WebAssembly 目前被视为是以太坊虚拟机 (EVM) 的近乎相等的替代品。这是因为,通过 WebAssembly,开发人员现在配备了一个高效的指令集,可以将不同的语言编译成该指令集,同时确保其在不同平台上有效执行。WebAssembly 指令集还可以通过擦除浮点指令轻松确定,这将使其成为 EVM 的可行替代品。
以太坊对 WebAssembly 产生了兴趣,并正在带头开发以太坊 WebAssembly(EWASM),即拟议重新设计的以太坊虚拟机。一旦成功,EWASM预计将更加高效,并且由于其与 WASM 的联系,它可让开发人员使用多种语言编写代码。EWASM 将作为一种将在以太坊节点中进行解释的预编译的字节码语言,像 EVM 一样发挥作用。
这样,dApp 的生产效率将变得到提高。WASM 的集成将使已经习惯 Rust 和 Go 等热门语言的人们更容易开发智能合约。这最终无需开发人员在以太坊上创建有用的应用程序之前学习如何进行可靠编写。
使用 WebAssembly 的区块链项目
尽管 WASM 尚未完全针对区块链活动而开发,但一些项目已经在利用它来增强其平台的功能。例如:
Cosmos
预计将更加高效,并且由于其与 WASM 的联系,它可让开发人员使用多种语言编写代码。EWASM 将作为一种将在以太坊节点中进行解释的预编译的字节码语言,像 EVM 一样发挥作用。
Polkadot
Polkadot 对 WASM 的使用依赖于元协议,支持在 WebAssembly 上解释或编译的其他语言。 WASM 的使用允许无分叉基础设施和Substrate,使其他应用程序能够在几乎不需要协调的情况下对连接的链进行调整。
Near 协议
Near 协议是一个公共区块链,旨在使用 WebAssembly 构建去中心化应用程序。Near 使用 WebAssembly 作为利用 Web 技术来增强性能和可移植性的可行方法。他们为自己的语言实现了 AssemblyScript,因为他们发现这是一个可移植性更大的选项,并且还为 Web 开发人员提供了轻松访问的方式。
Web Assembly 与 JavaScript
JavaScript 是一种高级解释性编程语言,数十年来一直支持 Web 开发。其开发是为了为网页添加交互性,并通过网络浏览器显示在客户端。多年来,由于该语言易用使用并得到了广泛采用,它不断变得更加受欢迎。
自万维网诞生以来,JavaScript 就一直存在。最近,WASM(WebAssembly)出现了,尽管许多人认为这两者紧密相连,但 WASM 还包含其他一些东西,包括 JavaScript。WASM 最初是为了使 JavaScript 在 Web 浏览器中更有效地运行而开发的。
尽管它仍然用于相同的目的,但 WASM 现已超越了 Web 浏览器,并涉足了边缘和服务器应用程序,这是众所周知的 JavaScript 所缺乏的两个领域。这是可能的,因为在 CPU 级别上,WASM 以二进制格式运行,并且也不是像 JavaScript 那样的编程语言。WASM 提供了额外的功能,可容纳多种不同的语言,如 JavaScript、Python、Rust 等。WASM 相对于 JavaScript 的优势仍然在于它能够与语言集成,但不限于 JavaScript。通过将已解释的语言及其运行时编译到 WASM 模块中,该集成大大提升了 JavaScript 的性能。
WebAssembly 与 Rust
WebAssembly 和 Rust 是两种截然不同的技术,但同时又常常相互关联。Rust 是一种通用的编程语言,以其速度、安全性和高性能而闻名。相反,WebAssembly 是一个将代码转换为可执行机器的编译器。除了定义之外,这两种技术在以下方面也有所不同。
Web 开发
WASM 主要用于 Web 开发,支持在 Web 浏览器上执行代码,包括 JavaScript。同时,Rust 是一种通用语言,具有多种应用,包括系统编程、游戏开发等等。
语法和语言功能
WASM 不是一种编程语言,而是一种二进制指令格式,可以作为 C、C++ 和 Rust 等语言的目标。相反,Rust 是一种具有语法和功能(如借用、所有权等)的语言。
内存管理
WASM 利用线性内存模型,能提供可供程序轻松访问的线性地址空间。内存管理由开发人员手动处理并保持管理的明确性。而Rust 强调内存安全。它利用借用检查器(Borrow Checker)和所有权系统,在编译时强制执行严格的规则,消除了几个已知影响内存安全的错误。
并发性
Rust 通过其所有权系统提供了对并发性编程的支持,这使得开发人员可以编写安全的并发性代码,而无需担心数据竞争的风险。与 Rust 不同,WASM 则没有这样的功能;但是,它可以利用主机环境的并发功能。
开启 WebAssembly 之旅的最佳资源
在学习如何使用 WASM 时,有一些课程为希望使用多种语言创建 WASM 项目的初学者提供了最佳资源。其中一些课程包括:
Udemy
本课程提供了学习 WebAssembly JavaScript API 和 Emscripten 工具集的全面指南。购买该课程后,用户可以观看长达2小时以上的点播视频讲座、获得17份可下载的教育资源。
通过本课程,初学者能了解 WebAssembly 是什么以及它如何影响 Web 开发。您还将了解如何使用本机 Java Script 浏览器 API 加载和运行 WebAssembly 模块。
Pluralsight
本课程囊括了 WebAssembly 的基本知识及其重要性。本课程将向您展示如何使用 WebAssembly 构建应用程序以及如何使用 C/C++ 等其他语言创建 Web 应用程序。
Freecode Camp
这是一个与 WebAssembly 相关的免费课程,向初学者详细介绍了 WASM 的内容。它教您如何编写、编译、包含和实例化代码。它提供了有关如何将 C++ 代码编译为 WASM 的详细教程。
结语
WebAssembly 目前处于 Web 开发的最前沿,其速度、安全性和适应性被开发人员视为是迎来去中心化应用程序新世界的主要功能。随着越来越多的产品寻求使用 WASM,开发人员使用熟悉的语言轻松开发并保护智能合约的未来之门已触手可及。
声明:本网站所有相关资料如有侵权请联系站长删除,资料仅供用户学习及研究之用,不构成任何投资建议!