Dipperin作为金融公链的探索者,长期专注于帮助用户快速、安全、低成本地部署区块链应用和商业智能合约,支持用户成为区块链价值的创建者和分享者,解锁区块链在广泛商业应用上的价值。
2019年8月21日,Dipperin测试网络Venus正式进行主网上线前的测试,主要包括创新经济模型、高效的智能合约第二代WASM虚拟机、多款DApp,供开发者测试使用。这些技术创新使得Dipperin比以太坊拥有更高的TPS,快速的区块确认,以及更高快的智能合约运行速度。
Venus测试网浏览器
以太坊的出现,在比特币网络结构基础上开发了以太坊虚拟机EVM,使用语言solidity即可完成图灵完备的编程,在以太坊公链上募资的项目越来越多,因为项目方可以使用以太坊轻松地解决发币的问题。每一个公链都是以开源社区的形态运作的,建立新的语言和虚拟机就如同建立新的开发者体系,大部分项目不会选择去开发新语言和虚拟机,大部分公链用的都是EVM,直接COPY以太坊的功效,但是不可避免的也把EVM虚拟机的缺点带过来了。
Dipperin在立项之初便意识到了以太坊EVM和solidity的限制,进而深入地了解公链底层的链式网络,上层的解释器和开发语言,并且在拓展性、稳定性、运行效率等方面不断创新。随着测试网Venus的上线运行,我们在同等环境下测试了Dipperin WASM虚拟机和EVM的性能。
结果令人震惊。事实证明,Dipperin的智能合约的执行效率远远高于以太坊EVM。以太坊使用了256位的机器码极大地影响了性能,增大了内存占用。做1000万次除法和加法,Dipperin智能合约的运行时间是以太坊智能合约的1/6,内存占用是1/700。
Dipperin和以太坊智能合约运行1000万次除法加法的性能对比
1
测试环境
在以太坊源码中,利用其已有的vm性能测试案例,选取其中的loop-divadd-10M测试案例,使用pprof工具分析其vm性能及内存占用情况。
在Dipperin-core中则同样编写10M次的除法加法测试,生成cpu和memory相关的profile图,并与EVM进行对比。
2
测试结果对比
(1)测试EVM性能
EVM执行loop-divadd-10M测试时的cpu profile图如下:
EVM memory profile图如下:
(2)测试Dipperin WASM虚拟机
在Dipperin-corevm中测试loop-divadd-10M,合约源码如下:
pprof生成的cpu profile图如下:
pprof生成的memory profile图如下:
测试结果:
3
测试结果分析
通过对比测试数据可以看出,同样执行10M的除法加法操作。WASM虚拟机在执行时间上都要比EVM小。通过分析测试执行生成的cpu和memory profile程序可以看出。在执行除法和加法操作时,EVM之所以时间和内存消耗都比较多,主要是因为EVM底层opcode使用u256(256bit),而其256bit基本数据类型是通过big.int包来实现的。big.int相关操作是比较消耗cpu和内存资源的。这一点也一直是EVM饱受诟病的地方。
从EVM加法opcode中可以清晰的看到这一点:
当然由于在WASM的测试中未使用到big.int操作,因此其测试合约的内存消耗要远小于EVM。若在WASM中使用vm import的big.int相关操作时,可以想象,其内存消耗也会大很多。
4
总结
而对比合约数据长度可以看到,Dipperin WASM vm由于需要保存合约bytecode及abi数据到链上,因此其对链上存储资源的占用是要略高于EVM的。而EVM在将合约编译成字节码时,通过hash获取函数签名,并将函数签名信息保存在字节码中,这一定程度上也节省了链上存储空间。当然这也导致用户无法通过合约地址在链上查询此合约的abi信息。即若合约创建者未将其部署的合约发布出来,用户无法获取其abi信息,因此也无法去调用合约功能,唯一的途径是对存储在链上的bytecode进行逆向。
据悉,Dipperin创办于2018年,专注于建设金融公有链基础设施,帮助用户快速、安全、低成本地部署区块链应用和商业智能合约,搭建区块链与真实商业社会之间的桥梁。
领取专属 10元无门槛券
私享最新 技术干货