智能合约漏洞检测方法、装置及电子设备制造方法及图纸

技术编号:18399275 阅读:24 留言:0更新日期:2018-07-08 19:42
本发明专利技术提供一种智能合约漏洞检测方法、装置及电子设备,涉及区块链技术领域,方法包括:对待检测智能合约进行DAG环路检测,判断待检测智能合约中是否存在合约逻辑环路;待检测智能合约由多个最小可信单元组成;如果是,则对合约逻辑环路进行环路超时检测,判断合约逻辑环路是否超时;如果否,则对待检测智能合约进行逻辑检测,判断逻辑检测的检测结果是否正确;如果是,则判断待检测智能合约不存在漏洞。本发明专利技术对基于最小可信单元的智能合约组合模式,依次经过DAG环路检测、环路超时检测、逻辑检测三个部分,一方面,可以校验合同本身的逻辑合理性,另一方面,检测智能合约组合问题,从而保证了合约的安全和可靠性。

【技术实现步骤摘要】
智能合约漏洞检测方法、装置及电子设备
本专利技术涉及区块链
,尤其是涉及一种智能合约漏洞检测方法、装置及电子设备。
技术介绍
区块链是一个互联网协议和一种基础的数据结构。就如同HTTP是互联网应用层中最重要的应用协议一样,区块链也是应用层里一个点对点传输的协议。在协议基础上,区块链由“区块”和“链”共同定义了分布式账本。“区块”类似于证券交易中的成交记录,记录了特定时间段内所有发生的权益转移关系;这些“区块”间存在着严格且唯一的先后继承关系,组成了一条“区块”的“链”。区块链特有的机制保障了“区块”记录内容和先后继承关系的合理性和唯一性,这个过程并不依赖于特定的中心节点。区块链天生的不可篡改可追溯的属性,可以在保证数据真实可靠的同时帮助社会降低信用成本。智能合约是区块链平台的核心组成部分,在区块链上执行业务逻辑,并将信息记录在区块链上保证数据不可篡改。开源区块链平台Ethereum(以太坊)提供了基于Solidity语言的智能合约解决方案;Hyperledger(超级账本)提出了基于隔离容器和Go语言的智能合约解决方案。目前智能合约背后的载体都是代码逻辑,对于没有编程经验的人编写智能合约相对有一些难度。为此,在之前的技术专利中,提出了一种基于最小可信单元的区块链智能合约组合模式,可以让律师或者其他没有编程能力的人,通过组合智能合约的最小化可信单元来实现智能合约。然而上述组合最小可信单元的过程中,不可避免地会出现逻辑漏洞,进而影响智能合约的正常执行,针对该问题,目前尚未提出有效的解决方案。
技术实现思路
有鉴于此,本专利技术的目的在于提供一种智能合约漏洞检测方法、装置及电子设备,能够检测用户完成的智能合约中存在的逻辑漏洞和技术问题。第一方面,本专利技术实施例提供了一种智能合约漏洞检测方法,包括:对待检测智能合约进行DAG环路检测,判断待检测智能合约中是否存在合约逻辑环路;待检测智能合约由多个最小可信单元组成;如果是,则对合约逻辑环路进行环路超时检测,判断合约逻辑环路是否超时;如果否,则对待检测智能合约进行逻辑检测,判断逻辑检测的检测结果是否正确;如果是,则判断待检测智能合约不存在漏洞。结合第一方面,本专利技术实施例提供了第一方面的第一种可能的实施方式,其中,在判断待检测智能合约中是否存在合约逻辑环路之后,还包括:如果否,则执行步骤:对待检测智能合约进行逻辑检测,判断逻辑检测的检测结果是否正确。结合第一方面,本专利技术实施例提供了第一方面的第二种可能的实施方式,其中,在判断合约逻辑环路是否超时之后,还包括:如果是,则判断待检测智能合约存在漏洞。结合第一方面,本专利技术实施例提供了第一方面的第三种可能的实施方式,其中,在判断逻辑检测的检测结果是否正确之后,还包括:如果否,则判断待检测智能合约存在漏洞。结合第一方面,本专利技术实施例提供了第一方面的第四种可能的实施方式,其中,判断待检测智能合约中是否存在合约逻辑环路,具体包括:通过深度优先遍历算法检测待检测智能合约中,由最小可信单元组成的有向图中是否存在逻辑环路。结合第一方面,本专利技术实施例提供了第一方面的第五种可能的实施方式,其中,判断合约逻辑环路是否超时,具体包括:在合约逻辑环路中嵌入计数计时可信单元;通过计数计时可信单元,检测合约逻辑环路的执行时间或者调用次数;判断执行时间或者调用次数是否超过预设时间阈值或者预设次数阈值。结合第一方面,本专利技术实施例提供了第一方面的第六种可能的实施方式,其中,判断逻辑检测的检测结果是否正确,具体包括:通过合约沙箱环境运行待检测智能合约;判断输出的运行结果是否正确。第二方面,本专利技术实施例提供一种智能合约漏洞检测装置,装置包括:DAG合约环路检测模块、合约环路超时验证模块、合约逻辑检测模块;DAG合约环路检测模块,用于对待检测智能合约进行DAG环路检测,判断待检测智能合约中是否存在合约逻辑环路;待检测智能合约由多个最小可信单元组成;合约环路超时验证模块,在DAG合约环路检测模块的检测结果为是时,对合约逻辑环路进行环路超时检测,判断合约逻辑环路是否超时;合约逻辑检测模块,在合约环路超时验证模块的检测结果为否时,对待检测智能合约进行逻辑检测,判断逻辑检测的检测结果是否正确;如果是,则判断待检测智能合约不存在漏洞。第三方面,本专利技术实施例还提供一种电子设备,包括存储器、处理器,存储器上存储有可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述第一方面所述的方法的步骤。第三方面,本专利技术实施例还提供一种具有处理器可执行的非易失的程序代码的计算机可读介质,程序代码使处理器执行第一方面所述的方法。本专利技术实施例带来了以下有益效果:在本专利技术实施例提供的智能合约漏洞检测方法中,首先对待检测智能合约进行DAG环路检测,判断待检测智能合约中是否存在合约逻辑环路;待检测智能合约由多个最小可信单元组成;如果是,则对合约逻辑环路进行环路超时检测,判断合约逻辑环路是否超时;如果否,则对待检测智能合约进行逻辑检测,判断逻辑检测的检测结果是否正确;如果是,则判断待检测智能合约不存在漏洞。通过上述三次检测,能够检测用户完成的智能合约中存在的逻辑漏洞和技术问题。本专利技术的其他特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本专利技术而了解。本专利技术的目的和其他优点在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。为使本专利技术的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。附图说明为了更清楚地说明本专利技术具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本专利技术的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本专利技术实施例一提供的一种智能合约漏洞检测方法的流程图;图2为本专利技术实施例一提供的一种存在环路的合约组合有向图;图3为本专利技术实施例一提供的另一种智能合约漏洞检测方法的流程图;图4为本专利技术实施例一提供的一种合约环路超时检测图;图5为本专利技术实施例二提供的一种智能合约漏洞检测装置的结构示意图;图6为本专利技术实施例三提供的一种电子设备的示意图。具体实施方式为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合附图对本专利技术的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。在通过组合最小可信单元拼装智能合约的过程中,不可避免地会出现逻辑漏洞,进而影响智能合约的正常执行,针对该问题,目前尚未提出有效的解决方案。基于此,本专利技术实施例提供一种智能合约漏洞检测方法、装置及电子设备,能够检测用户完成的智能合约中存在的逻辑漏洞和技术问题。为便于对本实施例进行理解,首先对本专利技术实施例所公开的一种智能合约漏洞检测方法进行详细介绍。实施例一:本专利技术实施例提供了一种智能合约漏洞检测方法,应用于由用户组合最小可信单元而得到的智能合约中,参见图1所示,该方法包括以下步骤:S101:对待检测智能合约进行DAG环路检测,判断待检测智能合约中是否本文档来自技高网...

【技术保护点】
1.一种智能合约漏洞检测方法,其特征在于,包括:对待检测智能合约进行DAG环路检测,判断所述待检测智能合约中是否存在合约逻辑环路;待检测智能合约由多个最小可信单元组成;如果是,则对所述合约逻辑环路进行环路超时检测,判断所述合约逻辑环路是否超时;如果否,则对所述待检测智能合约进行逻辑检测,判断所述逻辑检测的检测结果是否正确;如果是,则判断所述待检测智能合约不存在漏洞。

【技术特征摘要】
1.一种智能合约漏洞检测方法,其特征在于,包括:对待检测智能合约进行DAG环路检测,判断所述待检测智能合约中是否存在合约逻辑环路;待检测智能合约由多个最小可信单元组成;如果是,则对所述合约逻辑环路进行环路超时检测,判断所述合约逻辑环路是否超时;如果否,则对所述待检测智能合约进行逻辑检测,判断所述逻辑检测的检测结果是否正确;如果是,则判断所述待检测智能合约不存在漏洞。2.根据权利要求1所述的方法,其特征在于,在所述判断所述待检测智能合约中是否存在合约逻辑环路之后,还包括:如果否,则执行步骤:对所述待检测智能合约进行逻辑检测,判断所述逻辑检测的检测结果是否正确。3.根据权利要求1所述的方法,其特征在于,在所述判断所述合约逻辑环路是否超时之后,还包括:如果是,则判断所述待检测智能合约存在漏洞。4.根据权利要求1所述的方法,其特征在于,在所述判断所述逻辑检测的检测结果是否正确之后,还包括:如果否,则判断所述待检测智能合约存在漏洞。5.根据权利要求1所述的方法,其特征在于,所述判断所述待检测智能合约中是否存在合约逻辑环路,具体包括:通过深度优先遍历算法检测所述待检测智能合约中,由所述最小可信单元组成的有向图中是否存在逻辑环路。6.根据权利要求1所述的方法,其特征在于,所述判断所述合约逻辑环路是否超时,具体包括:在所述合约逻辑环路中嵌入计数计时可信单元;通过所述计数计时可信...

【专利技术属性】
技术研发人员:韩昭芳袁力耿建华黄焱
申请(专利权)人:北京阿尔山金融科技有限公司
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1