EVM:安全
01 智能合约设计层面网络
缺少标准库支持:EVM缺乏完善的标准库支持,甚至最基本的string类型支持,在EVM中都很鸡肋,例如字符串拼接、切割、查找等等都须要开发者本身实现。带来的后果就是开发者须要关注更多非自己业务的零碎细节,不能专一自己业务开发。同时自行实现的类库可能会由于时间、空间复杂度过高,消耗大量无谓的gas,又或者开发者从开源项目中借鉴相关类库代码,但也会引入更多安全性方面的问题,加剧合约代码审计的复杂度,亦是得不偿失。工具
难以调试和测试:EVM难以调试和测试,EVM除了能抛出OutOfGas异常以外,不会给开发者返回任何信息,没法打印日志、要作到断点、单步调试更是彻底不可能。虽然event机制能够部分改善这个问题,但event机制的自己设计就决定了他不是一个优雅好用的调试工具。测试
不支持浮点数:EVM不支持浮点数,以太坊以Wei为最小单位,只有整数,不支持其余粒度的计量,这种设计避免了引入浮点数致使的精度问题,但开发者在实际开发中,为了表示一个eth变量,就会在变量后面跟不少0,致使代码维护极度复杂。同时不能否认,浮点数在特定的场景下,仍是有很大的利用价值的,不能一刀切直接放弃引入。spa
合约不能升级:EVM不支持合约升级,合约升级是智能合约开发中的一个强需求,也是每个合约开发者必需要考虑的问题,合约升级能够实现给现有合约打安全补丁、扩展示有合约功能等等。EVM彻底不支持升级,开发者只能经过发布新合约来解决这个问题,费时费力。设计
EOS VM:调试
EOS是继以太坊以后,又一现象级的公链应用,有本身独立的一套基于WebAssembly的智能合约引擎,但目前EOS合约开发有以下几个明显问题:日志
帐户系统不友好:建立帐户操做难度大,建立帐户后才能发布合约,EOS须要使用已有帐户去建立新帐户,寻找一个拥有EOS帐户的朋友或第三方,对任何人来讲都不是一件很容易的事。建立帐号须要购买RAM,就是须要花钱建帐号,若是找第三方帮忙建立帐号存在资金风险。建立帐号后,还须要抵押EOS换取CPU使用时间和net带宽,才能在EOS网络作操做。这些操做对于开发者来讲过于繁琐。内存
RAM价格:RAM价格昂贵,合约运行必须用到RAM,EOS开通了RAM市场,用于交易内存,虽说RAM能够买卖,但依然存在不少人炒做,致使RAM价格昂贵。开发
开发难度大:使用C++做为合约开发语言,极大的提升了合约开发门槛,C++自己就极为复杂,在其上还要去调用EOS.IO C++ API完成智能合约开发,对开发者的我的能力要求极高。