为什么 Gear 会使用 WebAssembly?

简介: WebAssembly (简称 WASM)是W3C 社区开发的一种标准,它定义了一种低级的二进制代码格式,以便在浏览器中运行可执行程序。虽然开发 WebAssembly 是为了使高性能应用程序能够在浏览器中运行,但它自身也可以作为一个独立的虚拟机运行。

概述

WebAssembly (简称 WASM)是W3C 社区开发的一种标准,它定义了一种低级的二进制代码格式,以便在浏览器中运行可执行程序。虽然开发 WebAssembly 是为了使高性能应用程序能够在浏览器中运行,但它自身也可以作为一个独立的虚拟机运行。

WebAssembly 的可执行文件是预编译的,这使我们能够在浏览器中使用各种编程语言构建和运行应用程序。WASM 对于编程语言没有偏好,目前有几十种语言可以编译到 WASM 中,甚至可以在 WASM 中拥有它们的 VM。此外,WASM 是独立于硬件之外的,尽管受到一些限制,但它可以被编译到任何现代架构、桌面甚至移动设备上。

快速和安全

WebAssembly 的主要目标是在浏览器中提供媲美原生性能的可执行代码。使用二进制格式是因为它们传输速度更快,相较于典型的文本和原生代码,它们的格式更小。这意味着程序可以单独传输、兑现和使用,因为它们被分割成更小的部分,并运行独立的并行任务。另外,代码将在一个内存安全的沙箱环境中进行验证和执行,以防数据损坏和安全漏洞。

Wasm 对于区块链的意义

区块链网络得到广泛应用的关键之一就是其最大限度地提高可扩展性,这已经不是秘密了。这是因为速度和交易吞吐量的增加将导致交易成本的降低。传统区块链存在严重的可扩展性问题,正因为如此,它们的交易成本不断增加。以前负责智能合约字节码执行的技术在当下运行缓慢,而且在编译大量代码时效率低下。这意味着区块链技术还有很大的改进空间。

WASM 显著提高了交易速度,这将有助于提高效率。除此之外,WASM 支持用不同语言编写的智能合约,这意味着任何人都可以使用现有程序或用简洁的语言编写新程序,并将其编译以便在 WebAssembly 虚拟机中执行。与基于领域特定语言的解决方案相比,这显著提高了应用程序的包容性。

安全注意事项

WebAssembly 本身并不提供对执行代码的计算环境的环境访问。任何与环境的互动,如 I/O、访问资源或操作系统调用,只能通过调用嵌入到主机环境中的 WebAssembly 来实现提供的功能,并导入到 WebAssembly 模块中。

这样的实现过程定义了如何加载模块,如何提供导入以及如何访问导出。它通过控制或限制导入功能来负责适合于各自环境的安全策略。

由于 WebAssembly 被设计成直接在主机硬件上运行的机器代码,它有可能受到硬件层面上的旁路攻击。当考虑到这一点时,为了实现嵌入式 Wasm,我们可能必须采取适当的缓解措施来隔离 WebAssembly 计算。

研究人员曾报告过,存在与共享内存线程相关的可能的漏洞。Gear 在底层上使用 WebAssembly,在设计上不会受到这些问题的影响。任何 Gear 智能合约都是一个 WebAssembly 程序。作为一个并发计算系统,Gear 使用消息传递通信(Actor 模型),而不是共享内存通信模型。这消除了任何安全问题。

关注 Gear 的GitHub ,获取最新资讯!Gear 团队

目录
相关文章
|
1天前
|
前端开发 JavaScript 开发工具
新一代前端开发工具:探索WebAssembly在前端领域的应用
本文将介绍WebAssembly在前端开发领域的应用,探讨其在提升前端性能、扩展开发语言选择、优化代码大小等方面的优势。通过深入分析WebAssembly的特性和优势,以及实际案例展示,帮助读者更好地理解和应用这一新一代前端开发工具。
|
1月前
|
编解码 前端开发 JavaScript
前端发展趋势:WebAssembly、PWA 和响应式设计
前端发展趋势:WebAssembly、PWA 和响应式设计
|
6月前
|
开发框架 Rust JavaScript
WebAssembly
关于使用和推荐方面,由于缺乏关于 Grain 语言的详细信息,我无法为您提供确切的建议。如果您需要关于 JavaScript 和 WebAssembly 的建议,我可以为您提供一些建议:
96 3
|
7月前
|
前端开发 JavaScript vr&ar
使用 JavaScript 开发AR(增强现实)移动应用的预备知识和环境搭建
使用 JavaScript 开发AR(增强现实)移动应用的预备知识和环境搭建
51 0
|
7月前
|
存储 缓存 JSON
PWA 应用和原生应用的一些区别
PWA 应用和原生应用的一些区别
42 0
|
8月前
|
机器学习/深度学习 存储 API
WebGPT VS WebGPU
到目前为止,GPT4 模型一直是开创性的模型,公众可以免费或通过其商业门户(用于公共测试版)获得。它为许多企业家点燃了新的项目想法和用例,但对参数和模型数量的保密性正在杀死所有押注第一个 1 万亿参数模型到 100 万亿参数声明的爱好者!
119 0
|
Web App开发 机器学习/深度学习 监控
WebAssembly 出来之前发生了什么
1995年javascript诞生,而且诞生的很快。 这货前10年迅速发展,紧接着就开始浏览器大战,都来抢占市场份额。 当时的互联网也不太发达,应用也没那么复杂,所以很多浏览器厂商还没考虑到js执行的效率问题。
103 0
WebAssembly 出来之前发生了什么
|
Rust JavaScript 前端开发
再次认识 WebAssembly
WebAssembly (Wasm)是基于堆栈的虚拟机的二进制指令格式,一种低级汇编语言,旨在非常接近已编译的机器代码,并且非常接近本机性能。
427 0
再次认识 WebAssembly
|
Rust JavaScript 前端开发
快速认识 WebAssembly
WebAssembly 即 Wasm 就像浏览器运行时的一种高效的低级编程语言,它可以将高级语言编译成二进制格式,并在WEB上运行它们,而不需要浏览器或插件。
564 0
快速认识 WebAssembly
|
Rust 安全 JavaScript
为什么 Gear 要使用 Rust?
Rust 是一种专注于安全和性能的多范式编程语言。它的构建考虑到了速度和效率,这意味着它可以提供零成本的抽象、继承和功能特性,对许多开发人员来说,这解决了其他底层语言(如 C 和 C++)的常见问题。
113 0
为什么 Gear 要使用 Rust?