[发明专利]一种基于Java虚拟机的智能合约复杂度限制方法在审
申请号: | 201811639968.3 | 申请日: | 2018-12-29 |
公开(公告)号: | CN109710385A | 公开(公告)日: | 2019-05-03 |
发明(设计)人: | 邱炜伟;李启雷;李伟;梁秀波;尹可挺;何奇 | 申请(专利权)人: | 杭州趣链科技有限公司 |
主分类号: | G06F9/455 | 分类号: | G06F9/455 |
代理公司: | 杭州求是专利事务所有限公司 33200 | 代理人: | 邱启旺 |
地址: | 310012 浙江省杭州*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 复杂度 智能 消耗 超时 继续执行 时间设定 指令计算 保证 外部 区块 调用 部署 存储 计时 取出 检查 | ||
本发明公开一种基于Java虚拟机的智能合约复杂度限制方法,节点在收到外部部署的合约之后先会对其字节大小进行检查,如果检查通过再进行部署,通过计算gas消耗和超时时间设定后存储在节点上;在每一次的外部Java合约调用,每个节点的Java虚拟机都会将合约取出并执行相应的方法,通过将执行过程中执行的每条指令计算gas消耗,如果消耗达到设定上限则拒绝继续执行;同时,在执行过程中会进行计时,如果在规定时间内没有执行完成,则会停止执行。本发明既可以限制Java智能合约的代码大小,也能保证Java智能合约代码的复杂度以及执行过程中的可终止性,也保证超时合约的执行不会影响到共识的过程,保证了区块链的安全性与稳定性。
技术领域
本发明涉及去中心化区块链智能合约执行过程的设计领域,尤其涉及一种基于Java虚拟机的智能合约复杂度限制方法。
背景技术
区块链技术,区块链是一种新型去中心化协议,能安全地存储数字货币交易或其他数据,信息不可伪造和篡改;智能合约是一种可以在区块链网络环境中部署和执行的一段代码,这段代码的部署以及执行都是可以在区块链网络中以交易的形式呈现,其部署和执行结果可以随着交易被全网共识;由于结果需要交给共识层共识,由此执行的结果必须保证在每个节点上的一致性。
传统联盟区块链智能合约执行引擎包括evm和jvm,以jvm为例,jvm没有在部署时对合约的大小做出限制,无法在执行过程中让执行过程立即停止,因此无法对合约的复杂度做出很好的限制,如何解决Java智能合约在需要停止执行时能够立即停止执行,保证区块链智能合约引擎的稳定安全以及区块链网络的稳定是一项全新的挑战。
发明内容
针对现有技术的不足,本发明提出一种基于Java虚拟机的智能合约复杂度限制方案,即保证了对复杂的智能合约进行部署限制,也保证了执行过程的可立即终止。
本发明的目的是通过以下技术方案实现的:一种基于Java虚拟机的智能合约复杂度限制方法,该方法具体包括如下步骤:
步骤一:区块链节点收到客户端发起的部署合约的请求后,将首先进行合约字节数大小的检查,如果当前收到的合约字节数大于给定的字节数上限值,则拒绝此智能合约的部署;
步骤二:在部署智能合约的时候,会进行部署合约的Java字节码调用,目的是将需要部署的合约的字节码存储在区块链节点的DB中,在进行部署的Java字节码调用的时候,Java字节码在调用前会先指定一个gas的总值,Java字节码会被解释为一个个指令,对于每一个指令的执行,会先判断当前的gas总值是否大于执行当前指令所需要的gas值,如果小于则直接停止执行,否则会在gas的总值的基础上减去当前指令对应gas的数值,直到字节码执行完毕;
步骤三:当调用合约时,区块链节点收到调用合约的请求,将用户需要调用的合约从DB中取出,然后对相应的方法进行解析调用;与步骤二的调用过程类似,Java合约在调用前会先指定一个gas的总值,在调用指令的过程中,先判断是否有足够的gas来执行此条指令,然后不断消耗,直到合约执行完毕;
步骤四:在调用合约的同时,会创建并启动一个计时器Timmer,在智能合约执行的时候Timmer会一直运转,如果在Timmer运转结束,智能合约还没有运行结束,那么会直接停止智能合约的运行。
进一步地,所述的步骤一中,从字节大小方面限制合约的大小;
进一步地,所述的步骤二中,gas总值是在Java合约解释为指令的调用过程中,能都消耗的总数值,一旦消耗完字节码执行过程将会立即终止;在进行部署合约的Java字节码调用的时候,进行调用的计费限制;
进一步地,所述的步骤三中,会在合约方法的字节码调用过程中进行gas的消费计算,可以保证智能合约执行过程的终止性;
进一步地,所述的步骤四中,在Java智能合约的执行过程中加入了超时限制,保证过多的耗时操作不会影响共识的过程。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于杭州趣链科技有限公司,未经杭州趣链科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201811639968.3/2.html,转载请声明来源钻瓜专利网。