本文转载自微信公众号 :矩阵元
原创:矩阵元
区块链系统为我们提供了分布式的可信存储,而智能合约的出现为我们提供了分布式的可信计算能力,让区块链商用落地进一步推进,虚拟机则成为了联盟链平台不可或缺的组成模块。WASM虚拟机是PlatONE联盟链平台运用的新型虚拟机模块,其快速、安全、可移植等特点使开发者在编写智能合约的过程中更简单、更高效。
| PlatONE WASM虚拟机 |
WASM是⼀种基于堆栈式虚拟机的⼆进制指令格式,被设计为可以使用高级语⾔(例如:C/C++/Rust)直接编译成WASM中间字节码。WASM虚拟机已经被Google,Facebook,Microsoft等世界顶级互联网公司同时支持,同时也可以在所有流行的浏览器中运行。WASM虚拟机一开始设计的目的是用于解决Web程序日益严峻的性能问题,因其有以下优越的特性,被越来越多的非Web项目所采用。
WASM虚拟机具有以下优势:
- 快速、高效、可移植:通过利用常见的硬件能力,WASM代码在不同平台上能够以接近本地速度运行。
- 可读、可调试:WASM是一门低阶语言,但是它有一种人类可读的文本格式,这允许通过人工来写代码、看代码以及调试代码。
- 保持安全:WASM被限制运行在一个安全的沙箱执行环境中。像其他网络代码一样,它遵循浏览器的同源策略和授权策略。
- 不破坏网络:WASM的设计原则是与其他网络技术和谐共处并保持向后兼容。
PlatONE联盟链平台支持WASM虚拟机意味着开发智能合约不再局限于Solidity一门语言,同时可以使用多种高级语⾔,例如:C/C++/Rust等来编写智能合约,最后编译成WASM字节码就可以在PlatONE上运行,极大地降低了入门门槛和开发成本,同时也提高了智能合约的安全性。
且PlatONE联盟链平台同时支持WASM虚拟机与EVM虚拟机,充分降低开发者学习成本,其中WASM合约支持多种高级语⾔开发,编译成「.WASM」格式文件执行。触发WASM合约的交易由共识节点打包,全网节点重复执行验证。WASM合约的状态保存在公共账本中。
可验证合约的开发和发布跟WASM合约没有区别,最终也是编译成「 .WASM」格式文件执行。可验证合约的状态转换在链下由计算节点异步执行,计算完成后新的状态和状态转换证明提交到链上,全网节点可快速验证正确性并将新的状态更新到公共账本中。可验证合约可支持复杂、繁重的计算逻辑而不影响整条链的性能。
隐私合约同样支持高级语言开发,编译成「llvm ir」中间语言执行。隐私合约的输入数据保存在数据节点本地,由数据节点在链下以安全多方计算方式进行隐私计算,并提交计算结果到链上。
| WASM虚拟机的创新与优化 |
WASM虚拟机在⼀开始的设计中其目标平台是浏览器,为了使WASM虚拟机更加适应区块链系统,PlatONE联盟链平台做了以下创新和优化:
- 改造原生WASM中浮点数导致计算非确定性的设计,确保计算的确定性;
- 扩展对address、hash等数据类型的支持;
- 通过import的方式以支持标准库的方法和提供区块链的功能方法;
- 通过import的方式提供区块链接口给智能合约使用,从而完成智能合约和区块链的交互;
- 增加Gas机制,解决了智能合约中的恶意的死循环攻击问题;
- 提供沙箱运行环境,实现资源隔离,使智能合约自身的崩溃不会影响到其他智能合约的运行和底层安全;
- 提供编写智能合约所需的各种语言的类库;
- 提供合约调试功能接口。
本文转载自https://mp.weixin.qq.com/s/m7jRHLYfOJFc6FS-uc9stw