从长期来看,WASM正在成为世界上越来越多项目的选择。EOS、Ontology、EOS、Polkadot、Cardano等等,这些项目或早或晚,已经或正在开发WASM虚拟机。包括在以太坊2.0的计划中,也正在准备对虚拟机进行完全的重写,将使用WASM取代EVM。
遍历互联网世界,WebAssembly正在成为一个行业标准。在过去的几周里,苹果和微软分别在新版本的Safari和Edge中,增添了对WebAssembly的支持。包括Mozilla Firefox和Google Chrome此前均已支持WebAssembly,这使得四大主流浏览器均已能在Web上运行编译为WASM代码。
什么是WASM
WASM(WebAssembly)是一种可以使用非Java编程语言编写代码并且能运行在浏览器上的技术方案,也是自Web诞生以来的首个Java原生替代方案。
对开发者来说,WASM是一种新的编码方式。它具有可移植、体积小、加载快并兼容Web等友好特性,并为诸如C/C++/Rust/Subscript等语言提供一个编译目标(翻译器),以便成为Web可以解读的语言。
WASM技术特点
安全:WASM字节码在一个沙箱化的执行环境中运行,甚至可以与 JavaScript 虚拟机兼容。在Web环境中,WASM严格遵守同源策略以及浏览器安全策略。
效率:WASM有一套完整的语义,且具有紧凑的二进制格式,体积很小,这使得WASM字节码运行时的效率可以接近于本地机器码的效率。
开源:WebAssembly 设计了一个非常规整的文本格式用来、调试、测试、实验、优化、学习、教学或者编写程序。可以以这种文本格式在Web页面上查看WASM模块的源码。
兼容:WebAssembly 在 Web 中被设计成无版本、特性可测试、向后兼容的。WebAssembly 可以被 JavaScript 调用,进入 JavaScript 上下文,也可以像 Web API 一样调用浏览器的功能。当然,WebAssembly 不仅可以运行在浏览器上,也可以运行在非Web环境下。
为什么WASM更优越
EVM虽然兼容性很高,但它需要开发者预编译,同时需要付出gas费用作为代价,有着很高的编程成本。EVM处理代码的本质是由程序翻译指令并执行,而不是由本地机器CPU读取指令并执行,因此效率非常低。
而Java的操作相对繁琐,在执行过程中需要较常用时,同样效率不高。
和EVM及Java 相比,WASM已被所有流行浏览器支持。同时WASM字节码可以编译所有其他语言(c, c++, java)编写的程序,基于此建立的应用层生态不仅可以让开发者快速上手,而且有着高性能的效率实现。
此外,在WASM上的编译成本较之大大降低了。WASM是内存安全的、平台独立的,并且可以有效地映射到所有类型的CPU架构。其指令集效率高,同时保有足够的可移植性。此外,WASM指令集可以很容易地通过移除浮点指令来确定化,这将使它适合于替换EVM语言。同时,WASM在不增加内存消耗的情况下,可以达成无信任编程。可以通过在WASM上进行堆栈分析与计量进行精确计算。
TrustBase基于WASM做了哪些创新
TrustBase Parachain是基于Substrate框架,在智能合约执行层使用WASM虚拟机编译智能合约的波卡平行链,通过自主研发的Subscript语言对智能合约的全生命周期开发提供了全新的方案。具体来说:
1、静态的语法检查。与针对动态类型运行环境的TypeScript不同,Subscript在编译时具有严格的静态语法检查,避免了无法提前有效编译TypeScript的动态特征。
2、多重访问支持。智能合约与沙盒外环境交互时,能够传递的参数仅限于基本的整数类型。Subscript提供了完备的语法可以用来定义外部接口类型。Subscript还自带可访问wasm底层的指令函数,提供整数运算,虚拟机栈访问,内存加载等操作。
3、丰富的库函数。Subscript在扩展库中增添了ERC20兼容、ERC721兼容合约、权限控制合约、代理合约、治理合约、多签合约等常用合约库函数,并扩展了对string、address、hash等数据类型的支持。
4、IDE开发环境。Subscript使用Subscript workbench为开发者提供基于浏览器的智能合约集成开发环境(IDE)。workbench与以太坊开发环境Remix相似,自带了wasm智能合约开发所需的编译工具。DApp开发者可以在Subscript workbench中同步github中的代码、创建智能合约项目、编译wasm、发布到测试网络。在智能合约虚拟机开发完成后,Subscript workbench还可以提供类似Remix的智能合约的在线调试功能,开发者可以选择在浏览器源代码中加入断点,单步调试编译后的wasm代码。
Subscript语言实现了基于波卡Substrate框架的WASM虚拟机兼容。不同于Solidity的EVM兼容,WASM与波卡分片多链结构有着更好的向后兼容能力。开发者使用Subscript语言开发波卡智能合约,不会产生类似以太坊智能合约平台的历史包袱,随着未来波卡Polkadot平行链生态的丰富,这一点将变得至关重要。