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

这篇具有很好参考价值的文章主要介绍了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,云原生(Cloud Native)、云计算、虚拟化,区块链,云原生,区块链,docker在这条动态里,他说如果 Wasm + WASI 在 2008年就存在了,就没有必要创建 Docker了,Wasm 是云计算的未来。

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

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

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

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

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

WebAssembly 能不能取代 Docker

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

wasm,云原生(Cloud Native)、云计算、虚拟化,区块链,云原生,区块链,docker

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文章来源地址https://www.toymoban.com/news/detail-780703.html

到了这里,关于WebAssembly(WASM) 和云原生 | wasm和区块链的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • rust wasm入门

    📕作者简介: 过去日记 ,致力于Java、GoLang,Rust等多种编程语言,热爱技术,喜欢游戏的博主。 📘相关专栏Rust初阶教程、go语言基础系列、spring教程等,大家有兴趣的可以看一看 📙Java并发编程系列,设计模式系列、go web开发框架 系列正在发展中,喜欢Java,GoLang,Rust,的

    2024年04月16日
    浏览(36)
  • Rust + wasm 使用

    WebAssembly(WASM)是一个简单的机器模型和可执行格式,具有广泛的规范。它被设计为便携、紧凑,代码执行能够达到接近本机原生指令的执行速度。 作为一种编程语言,WebAssembly 由两种格式组成,它们以不同的方式表示相同的结构: 后缀为 .wat 的文本格式(称为“WebAssembl

    2024年02月09日
    浏览(35)
  • ffmpeg.wasm处理视频

    github.com/ffmpegwasm/… ffmpeg wasm 是什么 ffmpeg是功能非常强大的视频处理开源软件,很多视频播放器就是使用它来做为内核。 webassembly 是 Binary Code, 是编译目标。WebAssembly将很多编程语言带到了Web中。 wasm解决了性能问题,将各种耗性能的app从Desktop搬到Web上。 想用ffmpeg纯web端实

    2024年02月13日
    浏览(45)
  • 云原生简介 (Cloud Native)

    云原生的概念诞生于10年前,netflix 在 AWS 上的一次演讲中。有趣的是当初没有明确的定义,现在也没有明确的定义,对不同的人来说,有不同的概念。 云原生:是在云上构建更具有可用性和扩展性的网络应用程序的蓝图。提供高敏捷型,在不影响应用可用性的情况下快速发布

    2024年02月10日
    浏览(38)
  • go~wasm插件的开发

    Go和TinyGo是两种不同的Go语言编译器,它们之间有以下几点区别: 目标平台 : Go:Go语言编译器主要面向通用计算机平台,如Windows、Linux、macOS等。 TinyGo:TinyGo专注于支持嵌入式系统和物联网设备等资源受限的平台,如微控制器、嵌入式设备、WebAssembly等。 性能 : Go:Go编译

    2024年04月08日
    浏览(30)
  • 某侠网js逆向wasm解析

    本次目标地址如下,使用base64解密获得 aHR0cHM6Ly93d3cud2FpbWFveGlhLm5ldC9sb2dpbg== 打开网址,本次的目标是登录接口,如下图 本文主要讲解wasm的解析,所以对其他参数不做逆向处理,本次由wasm加密的参数只有sign一个,我们跟栈查看源代码 从这里发现,sign由sign函数通过传入其他5个

    2024年01月17日
    浏览(32)
  • Blazor Wasm Gitee 码云登录

    目录: OpenID 与 OAuth2 基础知识 Blazor wasm Google 登录 Blazor wasm Gitee 码云登录 Blazor SSR/WASM IDS/OIDC 单点登录授权实例1-建立和配置IDS身份验证服务 Blazor SSR/WASM IDS/OIDC 单点登录授权实例2-登录信息组件wasm Blazor SSR/WASM IDS/OIDC 单点登录授权实例3-服务端管理组件 Blazor SSR/WASM IDS/OIDC 单点

    2024年02月22日
    浏览(50)
  • go~istio加载wasm的步骤

    https://github.com/higress-group/proxy-wasm-go-sdk/tree/main/proxywasm https://github.com/tetratelabs/proxy-wasm-go-sdk https://github.com/alibaba/higress/blob/main/plugins/wasm-go/pkg/wrapper https://tinygo.org/docs/reference/ https://tinygo.org/docs/reference/lang-support/stdlib/ TinyGo 是一个 Go 编译器,旨在用于微控制器,WebAssembly(WASM)

    2024年04月08日
    浏览(88)
  • WebGL以及wasm的介绍以及简单应用

    下面主要介绍了WebGL和wasm,是除了html,css,js以外Web标准所支持的另外两个大件 前者实现复杂的图形处理,后者提供高效的代码迁移以及代码执行效率 首先,浏览器里的游戏是怎么做到这种交互又显示不同的画面的? 试想用我们的前端三件套实现一下.好像可以用canvas来实现,但是实

    2024年02月22日
    浏览(40)
  • python快速实现某东方视频解密wasm算法

    开始之前请大家先去了解一下 wasm这种技术(可以百度搜索一下 WebAssembly 是什么?) 现在开始.... 1,先看一张图  首先写一个本地加载wasm的方法 00043706.wasm就是当前网站load的wasm库,如果遇到报错,请联系我,文章最后有qq联系方式 打印出来所有的方法看一下,然后和源码(下图)比

    2023年04月23日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包