最强易用性?趣链科技智能合约引擎是怎样炼成的

老子叫甜甜 提交于 2020-01-26 06:19:02

智能合约是区块链应用业务逻辑的载体。要实现企业级应用的落地,则需要智能合约引擎,而其必备的特质有:完备的业务功能、可确定性、可终止性、完备的升级方案等。

最早是以太坊将支持Solidity语言的EVM执行引擎引入区块链中,拉开了区块链2.0的序幕,但因其合约语言本身在语言成熟度、生态工具、复杂合约编写性能等方面具有一定局限性,导致无法满足很多大规模商业应用场景。

因此趣链区块链平台首创了支持Java语言的智能合约执行引擎HVM(HyperVM),在保证智能合约执行的安全性、确定性、可终止性的前提下,提供了一系列灵活应用模式、工具方法集,以满足复杂多样的业务场景需求,面向广泛的区块链开发人员提供更便捷、灵活、安全的区块链应用开发模式。

下面展开讲讲我们的智能合约执行引擎HVM的设计模式。

符合Java编写范式的账本数据结构
基于账户模型的区块链平台,智能合约通常作为操作账本数据的载体,底层账本数据其实是一系列的KV(Key-Value)键值对集合。为了符合Java软件开发者习惯,使其无需感知区块链底层KV结构即可编写相应业务逻辑代码,HVM设计了符合Java编写范式的数据结构:HyperMap和HyperList。

HyperMap和HyperList的使用类似于开发者所熟知的HashMap和ArrayList,但做了原创性地优化,在减少内存使用的同时也提高了更新账本的插入效率。实测表明在持续增长的大数据量场景中HVM性能表现良好。

内置数据表结构HyperTable
为了满足复杂业务场景下数据类型多样化、业务数据可视化与可分析的需求,智能合约需要支持复杂的表结构数据组织形式。HVM提供了内置数据结构HyperTable,支持在合约内部按照表的形式组织业务数据,便于业务数据可视化以及后续的数据分析与价值挖掘。HyperTable是一种类似Hbase的多层级列簇表结构,这种结构可以让原Solidity语言中复杂嵌套的数据操作简单化,同时在性能方面,能有效解决序列化、反序列化造成的性能瓶颈,整体维护成本更低、使用更高效。

丰富的工具方法集
工欲善其事,必先利其器。一个好的工具方法集可以让应用开发更高效。HVM内置了完备的工具方法集,支持编码格式转换、基于TEE的数据加解密、日志等功能,为开发者提供了更友好的开发体验。

日志工具类:日志在应用开发过程中的作用至关重要,能帮助开发者快速定位和发现问题。由于EVM未对出现的异常进行详细定位,给编译调试造成极大的难度。而HVM通过内置日志工具类,可以为每种常见的错误进行合理的提示,并支持不同日志级别的输出,方便开发和运维快速定位问题。

加解密工具:有些业务场景可能需要在智能合约中进行签名验签逻辑处理,从而进行身份认证,便于进行权限判断或者后续业务的开展。因此HVM设计了基于TEE[1]的加解密工具,支持在合约中调用存储于TEE的公私钥完成签名、验签操作,并支持ECDSA、SM国密等多种算法,具有方便、友好、安全的特性。

分层调用模式
鉴于智能合约升级代价极高,HVM提供了更为灵活的分层合约调用方式:业务调用层可以灵活的定义丰富的业务逻辑,可以在不更新合约的情况下更新业务逻辑,合约层只实现最核心、最基本的原子操作。以转账场景为例,合约层只有增加余额和减少余额的方法,在调用层定义转账的逻辑:如余额是否充足、减少转让方余额和增加接收方余额。同时,HVM保证了调用层逻辑的原子性,从而保证了业务应用的可用性和可靠性。

安全沙盒和计步器机制
HVM通过安全沙盒模式和计步器机制保证智能合约的确定性和可终止性。确定性是指一段程序在不同的计算机、或者在同一台计算机上的不同时刻多次运行,最终执行结果都是一致的。可终止性是指一段程序能在有限时间内结束运行。区块链系统需要保证分布式账本的强一致性,因此执行引擎需要有完善的机制保证最终执行结果的可确定性。HVM采用安全沙盒模式以及计步器机制保证智能合约的确定性和可终止性。

很多区块链平台采用计时器也即超时机制保证合约的可终止性,但是在分布式系统中,节点的执行时长受限于每个节点自身性能和负载,因此不同的节点往往超时时间并不一样,导致最终执行结果的不一致性,大大降低系统可用性。

HVM通过资源隔离的方式,即:禁用如IO访问、系统调用等不确定的系统操作来保障合约执行环境的安全性。同时通过计步器机制,HVM的每一步执行指令和资源申请都需要消耗相应的Gas[2],使得相同的操作集合最终消耗的Gas值一致,从而保证了所有的执行不会受到服务器性能的影响,最终执行结果是确定一致的。

HVM与EVM对比分析
下图为HVM和EVM在功能、性能方面的对比分析,可看出HVM在合约安全性、开发环境、支持功能、大数据量支持、性能等方面均明显优于EVM。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!