8月13日,迅雷链正式向广大开发者公布WASM虚拟机模块的源代码和代码库,从而帮助迅雷链开放平台上的开发者们了解虚拟机的内部实现机制、工作原理和使用方法,便于开发者进行更多场景的区块链应用开发。同时,开发者也可以和迅雷链技术团队一起完善虚拟机的功能,促进 区块链 生态的繁荣发展。
支持WASM虚拟机,多项技术优化
迅雷链简化区块链应用构建
随着区块链应用对虚拟机以及智能合约的需求增多,区块链虚拟机技术也在逐渐完善。目前,基于WASM的虚拟机在速度和性能方面都有了显著提升,且支持C、C++等多种 编程语言 ,开发门槛更低。为了让区块链应用开发更便捷,迅雷链推出了双虚拟机引擎,同时支持WASM虚拟机和EVM虚拟机。原本在以太坊等支持EVM的主链上运行的区块链应用,如果由于性能等原因需要使用迅雷链,可以轻松实现无缝迁移。
迅雷链双虚拟机的工作原理
如上图所示,使用Solidity/C/C++等语言编写的智能合约,经过编译器编译成 字节码 ,会包含对应的特征,迅雷链双虚拟机引擎通过特征识别,判断具体需要执行哪种虚拟机。
其中,WASM字节码具有跨平台的能力,同时支持多种编程语言。通过 clang 前端编译器,将C/C++代码变成 LLVM 中间代码IR。再经过LLVM后端编译器,将IR指令转换为WASM字节码。这样就可以轻松的支持更多语言的合约代码,在不同平台上面运行。
如图所示:WASM的运行原理
不仅如此,迅雷链针对WASM虚拟机还做了诸多改进,使得智能合约模块具备更高的兼容性与性能,同时拥有更强的安全性与灵活性。
第一,支持合约原地升级 ,解决了开发者在以太坊上升级合约代码时合约地址会改变的困扰,避免了繁琐的开发工作量。此外,为兼顾合约升级的灵活性与安全性,迅雷链引入多重签名信任机制。开发者必须设置受信任的多重签名账户,只有收集到超过2/3的受信任账户的签名,才能执行合约升级。
第二,合约调用更便捷。 不同于 EOS 在合约调时无法直接获得被调用合约的执行状态,迅雷链的WASM虚拟机增加了合约嵌套调用功能,可以立即获取到调用另外一个合约方法的结果,使得合约之间的调用像函数调用一样方便。
第三,合约执行更安全。 与EOS租用资源的方式不同,迅雷链为WASM虚拟机增加了 Gas 机制。每执行一条合约指令,都会扣除相应的Gas,确保合约指令在执行有限次运算后,一定可以终止执行,有效防止代码无限循环攻击。
第四,迅雷链对WASM虚拟机内部进行诸多技术优化 ,包括支持自动扩展线性内存,缓存wasm module,优化合约的加载性能,优化合约对宿主环境golang函数的调用等,从而极大提升了虚拟机运行性能。
第五,迅雷链在WASM虚拟机上层进行了丰富的库封装 ,比如TC_CallContract、TC_Require、TC_Transfer、TC_LogX、TC_Notify等EVM虚拟机中常用的API,同时扩展了TC_StorageX(基础存储API)、TC_BigIntX(大数运算API)、TC_JsonX(JSON支持API)等丰富的基础API,让虚拟机的功能更强大、开发体验更便捷。另外,为方便开发者快速构建自己的TOKEN合约,迅雷链不仅提供常用的标准TOKEN合约基础类库,还支持C/C++等编写智能合约所需语言的类库。开发者也可以使用第三方维护的开源库,弥补了EVM缺少公共库的不足。
多种工具性解决方案
迅雷链全面赋能开发者
将WASM虚拟机这一核心模块开源,凸显了迅雷链赋能开发者、促进区块链应用落地的决心。事实上,迅雷链一直致力于推动 区块链技术 发展和行业进步,在发布开放平台将百万TPS等领先技术性能赋能于广大开发者之后,还持续推出了多种工具性的解决方案,包括可以在浏览器直接运行的合约开发调试工具与合约SDK自动生成工具等等,从而降低开发门槛和难度,让开发者将主要精力集中在业务拓展和创新上。
例如,迅雷链提供的合约开发调试工具catalyst集成了EVM与WASM双虚拟机合约的开发、编译、部署、合约接口测试等功能,方便开发者开发与测试合约。Catalyst可以直接运行在浏览器中,用户开发测试合约过程中不必自己搭建区块链节点,也不需要安装复杂的合约代码编译环境。
此外,合约SDK自动生成工具能自动生成后端系统调用合约接口的代码,同时可屏蔽调用合约时的参数编解码细节等,帮助开发者快速集成合约业务到系统中,从而可以有更多精力投入到智能合约业务逻辑的开发。目前,该工具还支持自动生成Python库和go语言库,极大地提升了开发者的效率。
目前,迅雷区块链技术已经和中国版权保护中心、来电科技、南方新媒体、壹基金等多个政企机构合作,落地版权保护、商品溯源、公益、医疗、保险、交通、基因、供应链、新零售等十余个行业领域。随着此次WASM虚拟机模块的开源,相信区块链技术将在更丰富的应用场景中,真正发挥其应有的价值。