LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 区块链资讯 > 【技术讲堂】PlatON双虚拟机之WASM的引入背景与运行机理

【技术讲堂】PlatON双虚拟机之WASM的引入背景与运行机理

2020-06-03 分布式资本 来源:区块链网络

作者:PlatON

WASM(WebAssembly)不是一种语言,而是一种新的字节码格式,是一种全新的底层二进制语法,经编译器编译后的指令代码。其体积小、可移植、加载快并兼容WEB的全新格式,是一种以安全有效的方式运行可移植程序的新技术。



早期WASM主要的应用领域在web应用,但随着其不断地发展,越来越多的项目将其作为智能合约的最终格式,使用对应的VM加载运行,如wavm、wagon,字节码的具体解析与运行则在核心虚拟机模块中进行。


虚拟机(VM Virtual Machine)指的是,通过软件模拟的、具备完整硬件系统功能并运行在隔离环境下的完整计算机系统,比如操作系统虚拟化的Vmware虚拟机,软件运行环境的JVM虚拟机等。而区块链中的虚拟机是建立在区块链上的代码运行环境,其主要作用是处理区块链的智能合约





EVM在本质上是脚本程序,需要由编译程序翻译成指令后执行,而不是由本地机器的CPU读取指令执行,这样的执行方式在效率上是非常低的。同时EVM在架构和使用上也存在一些问题,例如:


强耦合,难扩展:链本身与EVM内部之间存在相互依赖的关系;

缺少标准库:solidity中基本没有标准的库,必须通过自己编码才能实现相应功能,如:字符串比较;


与EVM相比,WASM作为一种中间代码,拥有更高更快的智能合约运行速度,可以使用任何熟悉的编程语言进行开发(C/C++/JAVA),同时存在诸多特点:


性能高效:采用二进制编码,在程序执行过程中性能优越;

多语言支持:可使用C/C++/RUST/Go等多种语言编写合约后编译出字节码;

丰富的标准库:不同语言有附带丰富的标准库可供使用;


同时,考虑到越来越多的项目使用WASM,包括引入EVM虚拟机的Ethereum也在开始转向WASM。WASM越发流行,其社区生态体系也越来越完善。


为让已经存在的一些WASM应用或者一些熟悉WASM的开发者更好地切换到PlatON生态中来,PlatON经综合考虑后决定,在已存在EVM虚拟机的同时引入WASM虚拟机,实现双虚拟机支持。





测试结果表明,基于WASM虚拟机的执行效率远远高于EVM虚拟机。EVM使用了256位的机器码在很大程度上影响了执行的性能,同时增大了内存的占用率。


PlatON在引用WASM虚拟机实现双虚机支持后,主要具备如下优势:


主流的WASM智能合约可以方便快捷地切入到PlatON网络;

降低合约开发者的门槛,学习成本低;

使用其他基于WASM的网络的开发者可以无缝切换,上手快;

智能合约的执行效率更高效;

丰富的开发库,提升智能合约开发效率;




如图所示:使用solidity/c/c++等语言编写的智能合约,经过编译器编译成为字节码,同时不同类型的合约包含了不同的字节码特征,PlatON双虚拟机引擎通过对特征的识别,可以判断该段字节码需要使用哪种虚拟机进行执行,选择对应虚拟机后加载字节码,解析字节码,然后根据指令去执行对应的函数功能。


智能合约使用流程



如图所示,可以使用c++编写基于WASM的智能合约,也可以使用solidity编写属于EVM的智能合约,然后通过工具套件编译生成字节码等信息,再通过SDK开发工具集通过交易的方式发送到PlatON网络节点中。这样一个与合约相关的交易流程就完成了。


PlatON提供了完备的WASM合约开发套件PlatON-CDT,使用该套件,可以快速地编写出WASM虚拟机的智能合约,该套件提供了多种数据类型的封装,简洁的API接口,同时配套详细的接口文档。同时,还可以使用智能合约测试框架PlatON-Truffle进行开发、编译、部署、合约接口测试等功能,方便开发者开发与测试合约。


PlatON提供了合约SDK[3]自动生成工具,能自动生成后端系统调用合约接口的代码,可以屏蔽调用合约时的参数编解码细节等,帮助开发者快速集成合约业务到系统中,从而可以投入更多的精力到智能合约业务逻辑的开发中。



总结



本文主要探讨了PlatON支持WASM虚拟机的背景及初衷,同时介绍了关于引入WASM后PlatON的独有优势,还对WASM虚拟机的基本原理及运行机制做了简单说明。希望能对参与PlatON的社区人员、相关的区块链从业者提供一些可借鉴的经验。WASM从最初的不被看好到现在被广泛使用,我们可以肯定未来它将作为分布式应用开发的基础层被运用到越来越多的项目之中。

—-

编译者/作者:分布式资本

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...