WebAssembly(WASM) 和云原生 | wasm和区块链

一、什么是Wasm、WASI

Wasm,即WebAssembly,是一种用来补充JS在运行上不足的“低级”语言——基于二进制编写。其目标之一正是达到在网页上如同运行机器语言一样快速高效。其开发团队分别来自Mozilla、Google、Microsoft、Apple。

Wasm允许用户采用自己熟悉的语言书写(目前支持C/C++/Rust),再在虚拟机引擎在浏览器上运行。它支持沙盒模式,即先用高级语言编写wasm模块,再在JS中以库函数加载。

WebAssembly,我们都知道,是一种新的字节码格式,目前被应用于 web 中,由于其可移植、体积小,安全性的等优点被渐渐广泛认可,但是其主要是运行在浏览器中。

一些天才们,想让 WebAssembly 也可以运行在非浏览器环境中,这就产生了 WASI。

WASI是一个新的API体系, 由Wasmtime项目设计, 目的是为WASM设计一套引擎无关(engine-indepent),
面向非Web系统(non-Web system-oriented)的API标准.

二、WebAssembly(WASM) 和云原生

说到 WebAssembly 最初与 Docker、云原生产生关联,就不得不提 Docker 联合创始人 Solomon Hykes 在 2019 年 3 月份发布的一条推文。他在推文中表示:如果 WASM(WebAssembly)和 WASI(WebAssembly System Interface, WASM 系统接口)在 2008 年就已经存在,那就没有必要创建 Docker 了。

在这里插入图片描述在这条动态里,他说如果 Wasm + WASI 在 2008年就存在了,就没有必要创建 Docker了,Wasm 是云计算的未来。

很多人只看到了这一句话,没有看到他后面补发的内容,他说 WebAssembly 不会取代 Docker,Docker 与 WebAssembly 会肩并肩运行。

随着Wasm的发展,WebAssembly system interface(简称Wasi)出现了。WASI代表WebAssembly系统接口。这是由Wasmtime项目设计的API,可提供对几种类似操作系统的功能的访问,包括文件和文件系统,Berkeley套接字,时钟和随机数。

扫描二维码关注公众号,回复: 14198105 查看本文章

此时Wasm的沙箱机制带来的隔离性和安全性,都比Docker做的更好。

Wasm已经成为了云原生项目的扩展利器,并且非常有可能成为云原生工作负载的最佳运行时。

WebAssembly已经成为2021年增长最快的云原生趋势之一。

WebAssembly 能不能取代 Docker

Docker 联合创始人 Solomon Hykes 推特说,如果 Wasm + WASI 在 2008年就存在了,就没有必要创建 Docker了,Wasm 是云计算的未来。
很多人只看到了这一句话,没有看到他后面补发的内容,他说 WebAssembly 不会取代 Docker,Docker 与 WebAssembly 会肩并肩运行。

在这里插入图片描述

WebAssembly 与 Docker 不是一个取代关系。WebAssembly 与 Docker 是各有所长、互相补足的关系,就像之前提到的,WebAssembly 对工具链要求比较高,但是 WebAssembly 的性能高、轻量级、安全的特点会让 WebAssembly 用在今天 Docker 进不去的场景。

举个具体的例子,WebAssembly 在冷启动方面,能够比 Docker 快100倍。所以 Docker 很难满足 的边缘计算、轻服务、汽车、区块链,都是 WebAssembly 的用武之地。

三、Wasm container 与 Kubernetes

WebAssembly崛起,Kubevirt成主流,2022年云原生的五大发展趋势
参考URL: http://app.myzaker.com/news/article.php?pk=61edfe9eb15ec0709e1236a0&f=normal
国外原文链接:https://thenewstack.io/5-cloud-native-trends-to-watch-out-for-in-2022/

WebAssembly 已经发展成为一个高性能、跨平台和多语种的软件沙盒环境,被运用于云原生软件组件。由于容器运行时和 WebAssembly(WASM)存在惊人的相似性,所以 Kubernetes 也可以被用于协调 WASM 组件。

WasmCloud、 WasmEdge、KubeEdge 以及 Krustlet 等项目使 WASM 成为云原生宇宙的公民之一。Kubernetes 可以从一个单一的控制平面无缝协调 WebAssembly 和容器两种工作负载,也就是说我们甚至可以将打包成 WebAssembly 的软件与容器化软件一起运行。包括 SecondState, Cosmonic 和 Suborbital 在内的创业公司正在建立的平台和工具,都在加速 WASM 的采用。预计自 2022 年我们可以看到云原生 WASM 的崛起。

四、云原生、WASM和边缘计算

云原生的下一步,或从WebAssembly在边缘取代Docker开始
参考URL: https://weibo.com/ttarticle/p/show?id=2309404751926406546094

过去几年,云计算的边界不断向边缘侧延伸。作为云原生技术事实标准的Kubernetes+容器组合,自然也被很多人考虑部署到边缘侧。不过K8s+容器组对于边缘计算场景来说,还是太过重了。因为边缘设备通常硬件资源有限,没有足够的资源部署运行完整的K8s。

很多边缘设备基于ARM架构,但大部分K8s发行版不支持ARM架构。同时,很多边缘设备所处环境复杂,无法保证稳定可靠的网络连接,而K8s的致命问题就是不支持离线运行。

传统容器方案,比如Docker,问题与K8s类似,Docker镜像大小很容易就达到一两百MB以上,边缘场景有不少内存和磁盘空间小于1GB的微型设备。

Docker 资源消耗大,对边缘设备要求高。

边缘计算不仅需要更轻量的K8s,也需要更轻量、更快的容器方案,WebAssembly(WASM)就是近几年出现的一个新选择。

云原生的下一步,或从WebAssembly在边缘取代Docker开始! 到2030年,估计有500亿台联网设备将放大我们的工作负荷–这些设备可能很小,可能很便宜–但它们将变得越来越智能和复杂。由于上述原因,WebAssemblies一次编写到处运行,安全模式和可移植性肯定会使它成为未来基础设施的重要组成部分。

为边缘优化的 WebAssembly 虚拟机: wasmedge

官网:https://wasmedge.org/
github: https://github.com/WasmEdge/WasmEdge

五、wasm和区块链

以太坊内核实现了一个图灵完备的虚拟机,即以太坊虚拟机(简称EVM)。它定义了一套通用的、确定性的指令,程序可以被编译成这些指令,并且可以在全世界任何一台计算机上运行。

传统计算机包含的指令集只接受32位或者64位的输入。EVM与此不同并且很特殊,它是一台256位的计算机,故意设计成这样是为了更易于处理以太坊的哈希算法,它会明确产生256位的输出。

然而,实际运行EVM程序的计算机则需要把256位的字拆分成它们的本地架构来执行智能合约,从而使得整个系统变得非常低效和不实用。

WebAssembly,或者简称为WASM,是内存安全、平台独立的,可以完美高效地映射到所有类型的CPU架构上。

使用 WebAssembly,不依赖于EVM,现在我们有了一套优秀并且高效的指令集,可以编译各种类型的语言,并且有信心它们可以在不同类型的平台上执行且具有同等的性能 - 这对于去中心化应用来说是非常理想的!更进一步,通过去除浮点运算指令,WASM指令集可以很容易地变成确定性指令集,从而很适合作为EVM的替代品。

尽管EVM目前算是区块链领域较为完备的机制,但它的局限性和时效性随着区块链发展也显得有些“落伍”,而作为EVM合约升级版的Wasm合约开始受到了众人关注。

以太坊创始人“V神”早就表示以太坊2.0将会升级为Wasm合约(eWASM),以满足更多开发需求。

EWASM团队已经着手在以太坊上集成WebAssembly,从而保证以太坊2.0的执行层更加高效、简单,适合作为完全的去中心化计算平台。https://github.com/ewasm

以太坊不是唯一一家正在调研 WebAssembly 技术的区块链企业。还有很多人都在押注这项技术,包括 Dfinity、EOS、NEAR、和 波卡 等等——它似乎已成为构建新一代区块链网络的事实标准。

作为EVM的发明者同时也是波卡创始人Gavin博士,对这个问题拥有足够的话语权。在做波卡的时候,Gavin并没有沿用自己发明的EVM,而是选择Wasm。

比较新兴的公链会更多的支持Wasm,然后以兼容的形式对接EVM。例如 波卡兼容EVM又支持Wasm,波卡的许多生态项目也是两者皆有。

Wasm对于EVM有什么优势?

以太坊基金会在Devcon上多次说明了自己打算将EVM过渡到Wasm的想法,但已经上线的庞大合约体量无法支持深层次的变革,生态也在这一临时方案上越走越远。选用Wasm作为智能合约的虚拟机的优势有以下几点:

1.完胜EVM虚拟机。相比EVM需要开发者预编译,较高的编程成本,Wasm虚拟机的结构、指令完备性及执行效率远胜于EVM虚拟机,将成为合约开发的新引擎。

2.执行速度快。Wasm有一套完整的语义,且具有紧凑的二进制格式,体积很小,这使得Wasm字节码运行时的效率可以接近于本地机器码的效率,比EVM的性能高1到2个数量级,后期还会升级为更快JIT虚拟机。

3.交易费用低。更快的Wasm虚拟机,致使交易吞吐量大幅提升,那么合约部署和交易成本也能大幅降低。可以说Wasm合约很好的解决了现在以太坊上交易费用高和交易拥堵的问题。

4.合约语言广。Wasm扩展了智能合同开发者可用的语言系列,支持使用任何Wasm的高级语言(如Rust、C++、JavaScript等)开发编写复杂业务逻辑,这意味着你可以用你熟悉的任何语言编写智能合约,包括最成熟的基于Rust的ink!,或基于AssemblyScript的Ask!等。

集成WASM也可以让那些熟悉Rust和Go之类的主流语言的人更容易进行智能合约的开发,而不是需要学习solidity的各种细节才能在以太坊上开发有用的应用程序。

虚拟机之战:WASM 与 EVM

虚拟机之战:WASM 与 EVM
参考URL: https://m.bimama.com/news/10600.html
英文原文:https://medium.com/momentum6/the-war-on-virtual-machines-wasm-vs-evm-8e68f9d53ef4

猜你喜欢

转载自blog.csdn.net/inthat/article/details/124973667