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

目录
相关文章
|
测试技术 持续交付 人机交互
软件测试计划说明书模板
软件测试计划说明书模板
577 0
|
缓存 Kubernetes 应用服务中间件
如何搭建代理镜像仓库
不知道各位有没有我这种尴尬:kubernetes搭建过程中需要拉取到一些镜像,比如: dockerhub的镜像,这个还好。毕竟有加速器。but k8s.gcr.io,quay.io.这些怎么搞?正巧搭建kubeadm 1.25,helm安装cilium的时候悲摧了。下载不动怎么搞?docker时代的时候我还可以直接导入,但是containerd时代了 导入了还是要麻烦一些阿?搜索引擎搜了一下,找到下面三个文章,借鉴一下!
|
弹性计算 数据可视化 Ubuntu
基于阿里云ECS搭建FISCO-BCOS区块链
用ubuntu操作系统下的ECS搭建FISCO-BCOS节点,开发区块链网络
基于阿里云ECS搭建FISCO-BCOS区块链
|
数据可视化 Linux 测试技术
7zip压缩工具的Linux命令
本文介绍了如何在Linux系统中使用7zip压缩工具,包括通过brew安装、使用基本命令进行文件压缩、解压、列出存档内容、测试存档完整性以及进行性能基准测试等操作。
725 3
7zip压缩工具的Linux命令
|
边缘计算 安全 物联网
揭秘边缘计算:未来物联网的基石
揭秘边缘计算:未来物联网的基石
668 93
|
安全 Android开发
游戏封包,你会了吗?
游戏封包,你会了吗?
1110 1
游戏封包,你会了吗?
|
机器学习/深度学习 人工智能 文字识别
预约直播 | 主流视觉算法介绍及在PAI上的应用
阿里云AI技术分享会第一期《主流视觉算法介绍及在PAI上的应用》将在2022年06月30日开启直播,精彩不容错过!
预约直播 | 主流视觉算法介绍及在PAI上的应用
|
机器学习/深度学习 人工智能 TensorFlow
MobileNetV2架构解析
MobileNetV2先使用`1*1`卷积升维,在高维空间下使用`3*3`的深度卷积,在使用`1*1`卷积降维,在降维时采用线性激活函数。当步长为1时,使用残差连接输入和输出;当步长为2时,不适用残差连接,因为此时的输入特征矩阵和输出特征矩阵的shaoe不相等
907 0
MobileNetV2架构解析
|
SQL 数据库连接 数据库
实时错误“91” 对象变量或with块变量未设置”
实时错误“91” 对象变量或with块变量未设置”
1202 0
实时错误“91” 对象变量或with块变量未设置”