为什么 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 团队

目录
打赏
0
0
0
0
0
分享
相关文章
Doodle Jump — 使用Flutter&Flame开发游戏真不错!
用Flutter&Flame开发游戏是一种什么体验?最近网上冲浪的时候,我偶然发现了一个国外的游戏网站,类似于国内的4399。在浏览时,我遇到了一款经典的小游戏:Doodle Jump...
112901 12
为什么 Gear 要使用 Rust?
Rust 是一种专注于安全和性能的多范式编程语言。它的构建考虑到了速度和效率,这意味着它可以提供零成本的抽象、继承和功能特性,对许多开发人员来说,这解决了其他底层语言(如 C 和 C++)的常见问题。
150 0
为什么 Gear 要使用 Rust?
是什么让 Gear 与众不同? 在 Gear 上部署有什么好处?
Gear 是一个智能合约平台,任何人都可以在去中心化网络以及 Polkadot 生态系统中开发和部署 dApp,就像在 Layer-1 区块链网络中一样,但效果更胜一筹!
218 0
是什么让 Gear 与众不同? 在 Gear 上部署有什么好处?
在 Gear 上开发的案例有哪些?
Gear 是一个完备的区块链网络,也是 Polkadot 和 Kusama 上最先进的智能合约平台。它能够使开发者用最简单、最高效的方式部署去中心化应用。在 Gear 上,所有智能合约都是用不同编程语言编译的 WebAssembly 程序。这大大降低了 dApp 开发者的准入门槛,对区块链的编程语言不太熟悉的开发者们,可以在熟悉的编程语言环境中构建去中心化应用。
127 0
 在 Gear 上开发的案例有哪些?
学习使用YUI3
以下只是在YUI学习和使用中零碎的一些心得体会,未成体系,发出来,供批判。 1、利用 Font、Base、Grid CSS进行快速的网页布局。 对YUI一直很有好感,最近开始看了看YUI CSS GRID,发现这个理念非常好,非常有利于我们工作效率的提高,特别是熟悉了这套CSS之后,我们就不必每一个项目自己都去写一些CSS。
1043 0
学习使用YUI3
禅与 JavaScript 编程艺术, Zen and The Art of JavaScript Programming
禅与 JavaScript 编程艺术 Zen and The Art of JavaScript Programming 参考资料: Airbnb JavaScript Style Guide 。
2144 0
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等