WASM是什么?推动Web3开发,新时代的二进位指令

精品项目

31

Wasm 和区块链之间有什么样的关系和应用场景?前情提要:V神全文解读:Web30 基础设施的下一站,是封装 or 扩展? 背景补充:零知识证明是什么?一文探讨 ZK 程式语言

本文目录

TLDR一、什么是 Web Assembly二、为什么我们需要 Web Assembly 21 Web2 22 Web3 23 EVM 是如何设计的?为什么它是低效的? 24 EVM 与 WASM VM 的比较 25 StylusArbitrum26 GearPolkadot27 CosmWasmCosmos三、结论

TLDR

WebAssembly简称 Wasm是一种可移植、高效能的二进位制指令格式,可以在 Web 浏览器中执行。它被设计为一种通用的编译目标,可以用于多种程式语言,并且可以在不同的平台上执行。

区块链是一种去中心化的分散式帐本技术,它通过使用密码学和共识演算法来确保资料的安全性和可信度。区块链可以用于记录交易、储存资料和执行智慧合约等应用。

Wasm 和区块链之间存在一些关系和应用场景:

智慧合约:Wasm 可以作为智慧合约的执行环境,使得合约可以在不同的区块链平台上执行。Wasm 的高效能和可移植性使得智慧合约可以更加高效地执行,并且可以跨平台使用。跨链互动:Wasm 可以用于实现跨链互动的功能。通过将不同区块链的逻辑编译为 Wasm 程式码,可以在不同的区块链上执行相同的逻辑,实现跨链的资料传输和互动。链下计算:Wasm 可以用于在区块链之外进行计算,并将计算结果提交到区块链上。这样可以在保持资料的安全性和可信度的同时,提高计算的效率和灵活性。资料隐私:Wasm 可以用于实现区块链上的资料隐私保护。通过将敏感资料的处理逻辑编译为 Wasm 程式码,并在区块链上执行,可以保护资料的隐私性,同时确保计算的可验证性。

总之,Wasm 和区块链可以相互结合,提供更加高效、安全和灵活的区块链应用和服务。Wasm 的可移植性和高效能使得它成为区块链领域的重要技术之一。

一、什么是 Web Assembly

WebAssembly 是由 W3C全球资讯网联盟开发的一个高效轻量级指令集标准,被誉为网路和高效能的颠覆者,支援跨浏览器执行。这意味着我们可以把包括 C/C Go Rust 等在内的不同程式语言编译成统一的标准二进位制格式,并将其作为 JavaScript 的替代品以近乎原生程式码的效率在浏览器中执行。

WebAssembly,或者简称为 WASM,是记忆体安全、平台独立的,可以完美高效地反射到所有型别的 CPU 架构上,有着以下主要优势:

高效:WASM 有一套完整的语言特性,实际上 WASM 是体积小且载入快的二进位制格式, 其目标就是充分发挥硬体的能力以达到原生语言的执行效率。安全:WASM 执行在一个记忆体安全,沙箱化的执行环境中,甚至可以在现有的 JavaScript 虚拟机器中实现。在 Web 环境中 ,WASM 将会严格遵守同源策略以及浏览器安全策略。WASM 在编译的时候,interface 是比较少的,但大部分 wasm application 是不能联网的因为不支援 socket,现在只能支援 local database。很多安全问题的时候来源于执行时候的记忆体的访问,wasm 在编译的时候,可以避免非法的记忆体访问。相容性:WASM 在 Web 中被设计成无版本、特性可测试、向后相容的。WASM 可以被 JavaScript 呼叫,进入 JavaScript 上下文,也可以像 Web API 一样呼叫浏览器的功能。WASM 不仅可以执行在浏览器上,也可以执行在非 Web 环境下如 Nodejs、Deno、物联网装置等执行。传统的方式可能需要多次 compile,而 WASM 只需一次便可执行,即插即用。

此外:Web 是唯一真正的通用平台,可以在任何装置上访问你的应用程式。这还允许你维护单个程式码库,简化更新并确保所有使用者都可以访问你的应用程式。WASM 支援 64 位和 32 位整数操作,与 CPU 指令一一对应。通过移除浮点运算,可轻松实现确定性,这对共识演算法来说是必要的。由 LLVM 编译器基础架构专案提供支援,这意味着 Wasm 可以从 LLVM 十多年的编译器优化中获益。WASM 由Google、苹果、微软、Mozilla 和 Facebook 等大公司持续开发,在这几个大公司开发的浏览器的后端都支援 wasm 编译。

WASM 的美妙之处在于它就像一个魔法引擎,它可以在任何地方执行,不需要下载也不需要安装,因为是二进位制格式。只需一次点选,即可在需要时立即执行 Web 应用。它比直接在下载和执行二进位制档案更安全,因为浏览器已内建安全机制,使其中执行的程式码不会危害你的系统。而且分享 Web 应用同样简单 连结是可以放在任何地方的可点选字串。

二、为什么我们需要 Web Assembly

21 Web2

由于浏览器内建的功能和 Web 提供的互动性,Web 从超文字静态内容和小型指令码语言发展成了一个非常强大和流行的平台,充满了惊人的应用程式和功能。但到目前为止,Web 应用依旧基本上由相同的指令码语言 (JavaScript) 驱动,然而 JavaScript 设计的首要目标从来就不是为了实现这些。

JavaScript 最初是一种简单的指令码语言,旨在为充满轻量级超文字文件的 Web 应用带来一些互动性。它的设计易于学习和编写,并不追求执行速度。多年来,浏览器在 JavaScript 解析上的重大效能改进的,带来了显着的效能提升。

随着 JavaScript 执行速度的加快,能浏览器中执行的东西大大扩展。新的 API 带来了诸如互动式图形,视讯流,离线浏览以及更多的功能。同时越来越多的应用程式过去仅限本地应用程式开始进入 Web 。现在你可以轻易的在浏览器中编辑文件并发送电子邮件,但在有些领域中,JavaScript 的效能依旧是一个难题。想一想除了浏览器之外你所使用软体:游戏,视讯编辑,3D 渲染或音乐制作。这些应用程式需要执行大量计算,并且需要很高的效能。JavaScript 很难满足这种高效能的要求。

不过替换掉 JavaScript 不太现实,甚至可能要花几十年时间都搞不定,因为整个网际网路都离不开它。而且,还有一大帮人在不停地改进 JavaScript。确实,和其他语言比起来,JavaScript 在某些方面比如 null 和 == 这些地方是有点不够好,但这些问题还不至于让人把整个技术都换掉。

所以,WebAssembly 不会取代 JavaScript,但这并不意味着将来没人用 WASM。实际上,WASM 的使用还会越来越广泛。因为 WASM 能给网页带来强大的计算能力,比如做影象处理或者游戏之类的。用 WASM,可以做出一个网页版的 Photoshop 并执行得很好,或者是一个在浏览器里能以 60 帧每秒甚至更高帧率执行的 3D 游戏。游戏尤其具有挑战性,因为游戏不仅需要同时执行音讯和视讯处理,还需要协调物理特效和 AI。WASM 拥有在浏览器上高效的运行游戏的能力,将开启把许多其他应用程式带到浏览器上的大门的可能性。

上图展示了 javascript 和 wasm 工作流的对比,可以看出 wasm 相比 JavaScript 要简洁许多。

22 Web3

WASM VM

在 2018 年的时候,以太坊生态内部开始讨论用 WASM VM 做智慧合约虚拟机器,因为觉得它效能比 EVM 好。EVM 的发明者 Gavin Wood 曾表示过 WASM 取代 EVM 的可行性,Vitalik 也表示过以太坊 20 将会升级为 Wasm 合约eWASM,以满足更多开发需求。而如今,Wasm 合约的发展已经有了一定雏形。

WASM是什么?推动Web3开发,新时代的二进位指令 23 EVM 是如何设计的?为什么它是低效的?

架构尺寸过大

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

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

另外,如果你想在以太坊上用它的基本 OPCODES 实现一个类似于 SHA256 的复杂演算法,那你就自祈多福吧!为了解决通过指令集运行复杂程式产生的高额 gas 问题,以太坊引入了预编译的概念,把程式编译进 EVM 并且消耗固定的 gas。一个值得关注的预编译是以太坊hash演算法,因为如果在虚拟机器中实现该演算法,合约在呼叫时将会产生极其昂贵的费用。

臃肿的预编译

预编译带来的问题是它会不断增加虚拟机器的臃肿度和复杂度,而不能解决核心问题:当前指令集和规范的低效而粗劣的设计。

binance官网

如果我们能够定义一种新的规范和指令集,不需要预编译这些复杂程式,而只需要通过基本指令就可以高效实现呢?这时候 WASM 就派上用场了。

24 EVM 与 WASM VM 的比较 速度: WASM 旨在提供比 EVM 更快的执行速度。EVM 在处理编译和执行智慧合约时可能存在效率问题,而 WASM 通过直接转换为编译后的程式码来提高载入速度和处理能力。预编译: EVM 依赖于预编译合约来高效执行加密计算,但这可能导致硬分叉的风险。WASM 则消除了对预编译合约的依赖,允许开发人员建立高效、快速的智慧合约。交易费用: 更快的 Wasm 虚拟机器,致使交易吞吐量大幅提升,那么合约部署和交易成本也能大幅降低。可以说 Wasm 合约很好的解决了现在以太坊上交易费用高和交易拥堵的问题。灵活性和互操作性: Wasm 扩容了智慧合约开发者可用的语言系列,支援使用任何 Wasm 的高阶语言如 Rust、C、JavaScript 等开发编写复杂业务逻辑,这意味着你可以用你熟悉的任何语言编写智慧合约,包括最成熟的基于 Rust 的 ink!,或基于 AssemblyScript 的 Ask! 等。

EWASM 团队正在在以太坊上整合 WebAssembly,从而保证以太坊的执行层更加高效、简单,适合作为完全的去中心化计算平台。WASM 已经被许多其他专案接纳为标准,包括 Dfinity 和 EOS 都使用它来强化它们的执行层。

25 StylusArbitrum

Stylus 专案是以太坊二层网路 Arbitrum 上通过引入 WebAssemblyWASM虚拟机器来提高智慧合约的执行效能。合约可以以比 Solidity 更快的速度执行,同时减少了燃气成本。这使得在 Arbitrum 网路上构建高效能的智慧合约变得更加容易,目前支援 C,C 和 Rust 的编译。

自定义预编译支援: Stylus 还支援自定义预编译precompiles,这允许开发者将自己的 Rust 或 C 预编译部署到 Arbitrum 网路上。这可以帮助在链上引入新的加密演算法或其他特定功能,而无需等待链上升级。比如说可以把 tensor computation 预编译,降低 inference 成本,对链上机器学习可能有帮助。

与 EVM 的互操作性: Stylus 通过与以太坊虚拟机器EVM的互操作性来实现与现有以太坊生态系统的整合。这意味着 Stylus 合约可以与现有的 EVM 合约互操作,并与 EVM 共享相同的全域性状态。

重入功能Reentrancy: 与 Cosmos wasm 不同,Stylus Rust SDK 引入了重入功能,并允许开发者手动启用它。这使得合约可以更加灵活地进行互操作,但需要开发者谨慎管理状态以确保安全性。

基于 arbitrum 生态的火爆,stylus 可能是最有意义的一次 wasm 整合,同时也利好 arbitrum 在 zkrollup 中的竞争力。

Solana 生态用户超过百万,开发者超过 2000 名,从 DeFi 到 NFT 都不断有专案诞生。随着加密市场回温,有望带来新一波爆发吗?本文源自 MT Capital 作者 Xinwei、Ian Wu,由 PANews 整理。前情提要:专访 Backpack 创办人:和 FTX 技术结构完全不...

英为财情Investingcom 周三(30日),A股早市冲高回落,午后横行整固,上证指数基本收平,深成指温和收升,创业板指轻微下跌,惟科创50指数持续爆发,劲升逾2。今日A股两市成交额失守万亿大关,降至9843亿元,前一交易日为10371亿元。外资再度卖出,北向资金净卖出2463亿,净流入448亿...