基于区块链的智能合约逻辑漏洞检测方法及装置与流程

文档序号:30582458发布日期:2022-06-29 13:09阅读:334来源:国知局
基于区块链的智能合约逻辑漏洞检测方法及装置与流程

1.本技术涉及区块链领域,具体而言,涉及一种基于区块链的智能合约逻辑漏洞检测方法及装置。


背景技术:

2.智能合约是一套以数字形式定义的承诺,同时也是根据各参与方约定条件自动执行的程序。而且,智能合约是区块链技术实现业务应用的关键,并已广泛应用于贸易物流、金融服务、知识产权、供应链管理等领域。另外,由于区块链智能合约部署后不能修改,所以,若区块链中的智能合约存在漏洞,则将造成难以挽回的巨大损失。因此,区块链智能合约的漏洞检测也成为近年来大家研究的重点方向。而目前相关技术中,区块链智能合约的漏洞研究主要集中在代码层面,比如整型溢出、重入攻击、权限控制等;但对于区块链智能合约的逻辑漏洞的检测研究较少,且区块链智能合约的逻辑漏洞的检测通常由人工进行检测,但是,传统的人工检测方法存在工作量大、效率低下等问题,因此,目前缺乏一种区块链智能合约逻辑漏洞的自动化检测方法。
3.针对相关技术中采用人工方式检测区块链中的智能合约的逻辑漏洞,导致逻辑漏洞的检测效率较低的问题,目前尚未提出有效的解决方案。


技术实现要素:

4.本技术的主要目的在于提供一种基于区块链的智能合约逻辑漏洞检测方法及装置,以解决相关技术中采用人工方式检测区块链中的智能合约的逻辑漏洞,导致逻辑漏洞的检测效率较低的问题。
5.为了实现上述目的,根据本技术的一个方面,提供了一种基于区块链的智能合约逻辑漏洞检测方法。该方法包括:确定区块链中智能合约的状态机模型,其中,所述状态机模型是基于所述智能合约的目标条款信息和承诺模型生成的模型,其中,所述承诺模型是由多个承诺信息生成的模型;基于所述状态机模型结合博弈理论,确定所述智能合约的纳什均衡,并计算所述纳什均衡的收益;依据所述纳什均衡的收益,确定所述智能合约的逻辑漏洞检测结果。
6.进一步地,基于所述状态机模型结合博弈理论,确定所述智能合约的纳什均衡包括:基于所述智能合约的状态机模型,确定所述智能合约中的参与方的集合;依据所述参与方的集合,确定所述智能合约中每个参与方的策略集合;依据所述每个参与方的策略集合,得到所述智能合约的策略集合的组合;获取所述每个参与方的收益;结合所述博弈理论,依据所述策略集合的组合和所述每个参与方的收益,确定所述智能合约的纳什均衡。
7.进一步地,在确定智能合约的状态机模型之前,所述方法还包括:获取第一请求报文,其中,所述第一请求报文用于表示上传所述智能合约的请求;解析所述第一请求报文,得到所述目标条款信息;基于所述目标条款信息,并采用所述承诺模型,构建所述智能合约的状态机模型。
8.进一步地,依据所述纳什均衡的收益,确定所述智能合约的逻辑漏洞检测结果包括:判断所述纳什均衡的收益是否小于或者等于预设值;若所述纳什均衡的收益小于或者等于所述预设值,则确定所述逻辑漏洞检测结果为所述智能合约存在所述逻辑漏洞;若所述纳什均衡的收益大于所述预设值,则确定所述逻辑漏洞检测结果为所述智能合约不存在所述逻辑漏洞。
9.进一步地,在确定所述逻辑漏洞检测结果为所述智能合约不存在所述逻辑漏洞之后,所述方法还包括:获取所述智能合约的合约源码;将所述合约源码存储在所述区块链的目标节点的目标位置中。
10.进一步地,在将所述合约源码存储在所述区块链的目标节点的目标位置中之后,所述方法还包括:获取第二请求报文,其中,所述第二请求报文用于表示部署所述智能合约的请求;解析所述第二请求报文,确定所述合约源码的存储路径;依据所述合约源码的存储路径,生成所述智能合约的id信息;在所述id信息生成后,将带有所述id信息的合约源码打包,得到打包后的合约源码;将所述打包后的合约源码发送至所述区块链中除所述目标节点之外的其他节点上。
11.进一步地,在确定所述逻辑漏洞检测结果为所述智能合约存在所述逻辑漏洞之后,所述方法还包括:接收目标信息,其中,所述目标信息用于表示所述第一请求报文的请求失败;基于所述目标信息,不执行上传所述智能合约的操作。
12.进一步地,在获取第一请求报文之前,所述方法还包括:获取所述智能合约的文本中的第一条款信息和所述智能合约的合约代码,其中,所述第一条款信息与所述目标条款信息不同;依据所述第一条款信息和所述合约代码,生成所述第一请求报文。
13.为了实现上述目的,根据本技术的另一方面,提供了一种基于区块链的智能合约逻辑漏洞检测装置。该装置包括:第一确定单元,用于确定区块链中智能合约的状态机模型,其中,所述状态机模型是基于所述智能合约的目标条款信息和承诺模型生成的模型,其中,所述承诺模型是由多个承诺信息生成的模型;第一处理单元,用于基于所述状态机模型结合博弈理论,确定所述智能合约的纳什均衡,并计算所述纳什均衡的收益;第二确定单元,用于依据所述纳什均衡的收益,确定所述智能合约的逻辑漏洞检测结果。
14.进一步地,所述第一处理单元包括:第一确定模块,用于基于所述智能合约的状态机模型,确定所述智能合约中的参与方的集合;第二确定模块,用于依据所述参与方的集合,确定所述智能合约中每个参与方的策略集合;第三确定模块,用于依据所述每个参与方的策略集合,得到所述智能合约的策略集合的组合;第一获取模块,用于获取所述每个参与方的收益;第四确定模块,用于结合所述博弈理论,依据所述策略集合的组合和所述每个参与方的收益,确定所述智能合约的纳什均衡。
15.进一步地,所述装置还包括:第一获取单元,用于在确定智能合约的状态机模型之前,获取第一请求报文,其中,所述第一请求报文用于表示上传所述智能合约的请求;第一解析单元,用于解析所述第一请求报文,得到所述目标条款信息;第一构建单元,用于基于所述目标条款信息,并采用所述承诺模型,构建所述智能合约的状态机模型。
16.进一步地,所述第二确定单元包括:第一判断模块,用于判断所述纳什均衡的收益是否小于或者等于预设值;第五确定模块,用于若所述纳什均衡的收益小于或者等于所述预设值,则确定所述逻辑漏洞检测结果为所述智能合约存在所述逻辑漏洞;第六确定模块,
用于若所述纳什均衡的收益大于所述预设值,则确定所述逻辑漏洞检测结果为所述智能合约不存在所述逻辑漏洞。
17.进一步地,所述装置还包括:第二获取单元,用于在确定所述逻辑漏洞检测结果为所述智能合约不存在所述逻辑漏洞之后,获取所述智能合约的合约源码;第一存储单元,用于将所述合约源码存储在所述区块链的目标节点的目标位置中。
18.进一步地,所述装置还包括:第三获取单元,用于在将所述合约源码存储在所述区块链的目标节点的目标位置中之后,获取第二请求报文,其中,所述第二请求报文用于表示部署所述智能合约的请求;第二解析单元,用于解析所述第二请求报文,确定所述合约源码的存储路径;第一生成单元,用于依据所述合约源码的存储路径,生成所述智能合约的id信息;第一打包单元,用于在所述id信息生成后,将带有所述id信息的合约源码打包,得到打包后的合约源码;第一发送单元,用于将所述打包后的合约源码发送至所述区块链中除所述目标节点之外的其他节点上。
19.进一步地,所述装置还包括:第一接收单元,用于在确定所述逻辑漏洞检测结果为所述智能合约存在所述逻辑漏洞之后,接收目标信息,其中,所述目标信息用于表示所述第一请求报文的请求失败;第二处理单元,用于基于所述目标信息,不执行上传所述智能合约的操作。
20.进一步地,所述装置还包括:第三获取单元,用于在获取第一请求报文之前,获取所述智能合约的文本中的第一条款信息和所述智能合约的合约代码,其中,所述第一条款信息与所述目标条款信息不同;第二生成单元,用于依据所述第一条款信息和所述合约代码,生成所述第一请求报文。
21.为了实现上述目的,根据本技术的另一方面,提供了一种计算机可读存储介质,所述存储介质存储程序,其中,所述程序执行上述的任意一项所述的基于区块链的智能合约逻辑漏洞检测方法。
22.为了实现上述目的,根据本技术的另一方面,提供了一种电子设备,所述电子设备包括一个或多个处理器和存储器,所述存储器用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器实现上述的任意一项所述的基于区块链的智能合约逻辑漏洞检测方法。
23.通过本技术,采用以下步骤:确定区块链中智能合约的状态机模型,其中,状态机模型是基于智能合约的目标条款信息和承诺模型生成的模型,其中,承诺模型是由多个承诺信息生成的模型;基于状态机模型结合博弈理论,确定智能合约的纳什均衡,并计算纳什均衡的收益;依据纳什均衡的收益,确定智能合约的逻辑漏洞检测结果,解决了相关技术中采用人工方式检测区块链中的智能合约的逻辑漏洞,导致逻辑漏洞的检测效率较低的问题。通过依据构建的区块链中智能合约的状态机模型和博弈理论,确定智能合约的纳什均衡和纳什均衡的收益,并依据纳什均衡的收益,可以得到智能合约的逻辑漏洞检测结果,从而自动检测区块链中的智能合约的逻辑漏洞,进而达到了提升区块链中的智能合约的逻辑漏洞的检测效率的效果。
附图说明
24.构成本技术的一部分的附图用来提供对本技术的进一步理解,本技术的示意性实
施例及其说明用于解释本技术,并不构成对本技术的不当限定。在附图中:
25.图1是根据本技术实施例提供的基于区块链的智能合约逻辑漏洞检测方法的流程图;
26.图2是本技术实施例中的区块链中智能合约逻辑漏洞检测系统的示意图;
27.图3是本技术实施例中的交易发起模块的示意图;
28.图4是本技术实施例中的合约部署模块的示意图;
29.图5是本技术实施例中的承诺模型的示意图;
30.图6是本技术实施例中的智能合约的状态机模型的示意图;
31.图7是本技术实施例中的检测单元检测区块链中智能合约的逻辑漏洞的示意图;
32.图8是根据本技术实施例提供的基于区块链的智能合约逻辑漏洞检测装置的示意图;
33.图9是根据本技术实施例提供的电子设备的示意图。
具体实施方式
34.需要说明的是,在不冲突的情况下,本技术中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本技术。
35.为了使本技术领域的人员更好地理解本技术方案,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分的实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本技术保护的范围。
36.需要说明的是,本技术的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本技术的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
37.需要说明的是,本公开所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于展示的数据、分析的数据等),均为经用户授权或者经过各方充分授权的信息和数据。
38.下面结合优选的实施步骤对本发明进行说明,图1是根据本技术实施例提供的基于区块链的智能合约逻辑漏洞检测方法的流程图,如图1所示,该方法包括如下步骤:
39.步骤s101,确定区块链中智能合约的状态机模型,其中,状态机模型是基于智能合约的目标条款信息和承诺模型生成的模型,其中,承诺模型是由多个承诺信息生成的模型。
40.例如,基于区块链中智能合约的条款信息采用承诺模型建立智能合约的状态机模型。另外,承诺模型是由多个承诺信息生成的模型,且每个承诺可以包含多种状态,比如激活状态、运行状态、完成状态、过期状态和违约状态等。
41.步骤s102,基于状态机模型结合博弈理论,确定智能合约的纳什均衡,并计算纳什均衡的收益。
42.例如,由于智能合约的执行结果依赖多个参与方共同决策,且与博弈论原理类似,所以当博弈进入稳定状态时,参与方选择的策略必然是针对其他参与方既定策略的最优反应,这时的策略组合称为纳什均衡。因此,可以基于智能合约的状态机模型,计算智能合约博弈的纳什均衡和纳什均衡的收益。
43.步骤s103,依据纳什均衡的收益,确定智能合约的逻辑漏洞检测结果。
44.例如,定义智能合约的逻辑缺陷为在纳什均衡下参与方的收益小于或者等于零,然后可以通过计算并分析纳什均衡检测智能合约的逻辑缺陷,即检测智能合约中是否存在逻辑漏洞。
45.通过上述的步骤s101至s103,通过依据构建的区块链中智能合约的状态机模型和博弈理论,确定智能合约的纳什均衡和纳什均衡的收益,并依据纳什均衡的收益,可以得到智能合约的逻辑漏洞检测结果,从而自动检测区块链中的智能合约的逻辑漏洞,进而达到了提升区块链中的智能合约的逻辑漏洞的检测效率的效果。
46.图2是本技术实施例中的区块链中智能合约逻辑漏洞检测系统的示意图,如图2所示,区块链中智能合约逻辑漏洞检测系统主要包括:交易发起模块1和合约部署模块2。其中,交易发起模块1主要涉及发起合约上传请求和合约部署请求。合约部署模块2主要负责接收交易发起模块1发起的请求。例如,若接收到合约上传请求则对合约信息进行建模,计算模型的纳什均衡检测漏洞,若存在漏洞则向交易发起模块1返回失败信息,若无逻辑漏洞则将合约代码存储在节点指定路径并向交易发起模块1返回存储路径;若接收到合约部署请求,解析请求报文获取存储路径,根据路径生成智能合约id,并将智能合约源码打包后转发给区块链上其他节点。
47.另外,图3是本技术实施例中的交易发起模块的示意图,如图3所示,交易发起模块主要包括:合约上传请求单元、合约部署请求单元。其中,合约上传请求单元11,主要负责将合约条款信息转换为计算机能理解的数据。合约部署请求单元12,主要负责按约定将合约部署模块2返回的存储路径组装成合约部署请求报文发送给区块链节点。
48.可选地,在本技术实施例提供的基于区块链的智能合约逻辑漏洞检测方法中,在获取第一请求报文之前,该方法还包括:获取智能合约的文本中的第一条款信息和智能合约的合约代码,其中,第一条款信息与目标条款信息不同;依据第一条款信息和合约代码,生成第一请求报文。
49.在本实施例中,合约上传请求单元11负责将合约条款信息转换为计算机能理解的数据(比如请求报文),即可以按数据模板录入合约文本的条款信息,将条款信息与合约代码组装成请求报文发给区块链节点。而且,合约中每个条款可以用五元组c(x,y,p,r,(tp,tr))表示,意为参与方x向参与方y承诺在时间t内满足条件p时执行结果r。其中,条件p是由布尔条件组成的逻辑表达式,二元组(tp,tr)表示承诺启动后需在tp时间内完成条件p,在满足条件p后需在tr时间内执行结果r。以一个购物合同“甲承诺在3天内向乙付款10000元,乙承诺在收到款后的1天内发货”为例,条款1即甲的承诺表示为c1=(甲,乙,null,pay(乙,10000),(null,3)),条款2即乙的承诺表示为c2=(乙,甲,c1完成,deliver(甲,pkg)(3,1))。c1的条件为null表示没有前提条件;c2的时间约束为(3,1)表示甲需在3天内付款,乙需在收款后1天内发货。
50.通过上述的方案,可以快速准确的生成请求报文,并发送请求报文,从而可以触发
上传智能合约的请求。
51.可选地,在本技术实施例提供的基于区块链的智能合约逻辑漏洞检测方法中,在确定智能合约的状态机模型之前,该方法还包括:获取第一请求报文,其中,第一请求报文用于表示上传智能合约的请求;解析第一请求报文,得到目标条款信息;基于目标条款信息,并采用承诺模型,构建智能合约的状态机模型。
52.图4是本技术实施例中的合约部署模块的示意图,如图4所示,合约部署模块主要包括:检测单元、缓存单元、部署单元。其中,检测单元21接收到合约上传单元11发送的请求后,解析请求报文获取合约条款信息,然后再基于解析到的合约条款信息,采用承诺模型构建智能合约状态机模型。例如,承诺模型如图5所示,且一个承诺包含五种不同的状态,即激活、运行、完成、过期、违约,为简化描述分别用数字1~5表示,即state={1,2,3,4,5}。而且,五种状态的具体描述如下:激活状态表示条件p和结果r均为未知、tp在有效期;运行状态表示p已完成、r未知、tp未超期;完成状态表示p和r均已完成、tp和tr均未超期;过期状态表示在激活状态时tp超期;违约状态表示进入运行状态后tr超期。另外,五种状态之间的逻辑关系描述如下:创建承诺时,若无前提条件则直接进入运行状态,若有前提条件则进入激活状态;在激活状态下,如果超时则进入过期状态即承诺失效,如果未超时且完成前提条件p则进入运行状态;在运行状态下,如果超时则进入违约状态,如果未超时且执行结果r则进入完成状态。另外,如果将智能合约状态机模型定义为五元组(c,e,s,s0,t,f),则c为合约中所有条款即承诺的集合,c={c1,...cn};e为触发合约状态变化的行为集合,e={e1,...en},比如甲付款、乙过期;s为智能合约整个生命周期的状态集合,s={s0,...,sm},其中si(i=0,...m)是一个n维向量,si=(c1.state,...cn.state);s0是合约的初始状态;t为状态转换条件集合,若(si,e)

sj∈t,则si和sj两个向量只在第λ(λ=1,...,n)维上取值不同,且当事件e发生,cλ的状态应从si[λ]转变为sj[λ];f是合约的最终状态集合,任一最终状态si[k]∈{3,4,5}(k=1,...,n)。以s0为根节点,以状态集合s中的非s0状态为子节点,以最终状态集合f中的状态为叶子节点,以行为集合e和状态转换条件集合t确定节点间的有向邻边,构建出智能合约的状态机模型。而且,以上述的购物合同为例,构建的智能合约状态机模型如图6所示,具体为:结合图5的承诺模型,可以看出s0状态为运行状态2和激活状态1,如果甲超时付款,则运行状态2变为违约状态5,则此时s1状态为违约状态5和激活状态1;如果甲按时付款,则运行状态2变为完成状态3,激活状态1变为运行状态2,所以此时s2状态为完成状态3和运行状态2;如果乙过期,则激活状态1变为过期状态4,此时s3状态为违约状态5和过期状态4;如果乙发货,则运行状态2变为完成状态3,此时s3状态为两个完成状态3;如果乙违约不发货,则运行状态变为违约状态5,所以此时s4状态为完成状态3和违约状态5。
[0053]
通过上述的方案,基于智能合约的条款信息和承诺模型,可以快速的建立智能合约的状态机模型。
[0054]
可选地,在本技术实施例提供的基于区块链的智能合约逻辑漏洞检测方法中,基于状态机模型结合博弈理论,确定智能合约的纳什均衡包括:基于智能合约的状态机模型,确定智能合约中的参与方的集合;依据参与方的集合,确定智能合约中每个参与方的策略集合;依据每个参与方的策略集合,得到智能合约的策略集合的组合;获取每个参与方的收益;结合博弈理论,依据策略集合的组合和每个参与方的收益,确定智能合约的纳什均衡。
[0055]
例如,基于状态机模型中各参与方的收益,确定智能合约博弈的纳什均衡。首先,基于多方博弈理论定义智能合约博弈,包括以下部分:
[0056]
(1)合约所有参与方的集合n;
[0057]
(2)合约每位参与方的策略集合,参与方i(i∈n)的策略集合ωi是其在状态机模型中所有非终止状态上执行动作集合的笛卡尔积,集合ωi中的一个组合表示为γ,γ=(w1,...,wn),其中wi为参与方i在状态机模型非终止状态上执行的策略;
[0058]
(3)合约每位参与方在状态机模型终止状态上的收益函数,参与方i在终止状态s(s∈f)上的收益函数为ui(s),根据合约条款约束设置各参与方在终止状态的收益值来映射其收益或损失。
[0059]
另外,所有参与方策略集合的笛卡尔积为合约的策略组合集合ω,集合ω中的每个策略组合γ,在合约状态机模型中都能对应一条从初始节点到终止节点的路径(在一个策略组合中若已进入终止状态则后续动作不会执行)。智能合约博弈的纳什均衡是一个策略组合γ*=(w1*,...,wn*),使得对于每个参与方的策略满足ui(w1*,...,wi-1*,wi*,wi+1*,...,wn*)≥ui(w1*,...,wi-1*,wi,wi+1*,...,wn*),即当其他参与者都选择均衡策略时,参与者i选择任何策略都不高于选择均衡策略所产生的收益。基于各参与方在终止状态上的收益计算智能合约的纳什均衡,纳什均衡计算可以采用业界常用算法,比如经典lemke-howson算法等。
[0060]
而且,以上述的购物合同为例,参与方集合n={甲,乙};甲的策略集合为ω1={e1,e2},乙在状态s1执行的动作为{e3},乙在状态s2执行的动作为{e4,e5},则乙的策略集合ω2为{e3}和{e4,e5}的笛卡尔积即{e3e4,e3e5},且整个合约的策略组合集合ω为ω1和ω2的笛卡尔积为{(e1,e3e4),(e1,e3e5),(e2,e3e4),(e2,e3e5)};甲在各终止状态的收益为u1(s3)=0,u1(s4)=100,u1(s5)=-10000,类似地,乙的收益为u2(s3)=0,u2(s4)=100,u2(s5)=10000。将终止状态上各参与方收益用一个向量表示,则s3、s4、s5上的收益分别记为(0,0)、(100,100)、(-10000,10000)。另外,两个参与方的博弈问题策略可用如表1所示的收益矩阵表示。从表1可以看出,(e2,e3e4)表示甲付款乙发货,该策略组合不是纳什均衡,因为乙可以改变策略不发货即(e2,e3e5)从而提高收益。(e1,e3e4)表示甲不付款乙不发货,该策略组合为纳什均衡,因为甲乙均无法通过单方改变策略获得更多收益,如果甲改变策略为e2即付款将会损失,同理乙改变策略发货也将损失。
[0061]
表1
[0062][0063]
综上所述,通过根据状态机模型和博弈理论,可以方便的确定出智能合约的纳什均衡。
[0064]
可选地,在本技术实施例提供的基于区块链的智能合约逻辑漏洞检测方法中,依
据纳什均衡的收益,确定智能合约的逻辑漏洞检测结果包括:判断纳什均衡的收益是否小于或者等于预设值;若纳什均衡的收益小于或者等于预设值,则确定逻辑漏洞检测结果为智能合约存在逻辑漏洞;若纳什均衡的收益大于预设值,则确定逻辑漏洞检测结果为智能合约不存在逻辑漏洞。
[0065]
在本实施例中,可以定义智能合约逻辑缺陷为在纳什均衡下参与方的收益小于或者等于零。因此,若纳什均衡的收益小于或者等于零,则表示智能合约中存在逻辑漏洞;若纳什均衡的收益大于零,则表示智能合约中不存在逻辑漏洞。例如,从表1可以看出,在纳什均衡情况下,即在(e1,e3e4)的策略组合下,为甲、乙双方不合作的情况,因此,此时纳什均衡的收益为(0,0),显然该智能合约存在逻辑缺陷(没有对乙方违约进行约束)。
[0066]
通过上述的方案,可以更高效地检测到区块链中智能合约是否存在逻辑漏洞,并可以确保智能合约代码与合约条款表意一致,从而可以减少因智能合约漏洞导致的巨大损失。
[0067]
可选地,在本技术实施例提供的基于区块链的智能合约逻辑漏洞检测方法中,在确定逻辑漏洞检测结果为智能合约不存在逻辑漏洞之后,该方法还包括:获取智能合约的合约源码;将合约源码存储在区块链的目标节点的目标位置中。
[0068]
在本实施例中,若通过检测单元21,即检测结果为区块链中智能合约不存在逻辑逻辑漏洞,则将合约源码发送给缓存单元22。然后,缓存单元22将通过检测单元21的智能合约代码存储在节点的指定位置上,并将该位置发送给客户端节点的交易发起模块1。
[0069]
通过上述的方案,可以对通过检测的智能合约的源码进行存储,并为后续智能合约的部署做铺垫。
[0070]
可选地,在本技术实施例提供的基于区块链的智能合约逻辑漏洞检测方法中,在将合约源码存储在区块链的目标节点的目标位置中之后,该方法还包括:获取第二请求报文,其中,第二请求报文用于表示部署智能合约的请求;解析第二请求报文,确定合约源码的存储路径;依据合约源码的存储路径,生成智能合约的id信息;在id信息生成后,将带有id信息的合约源码打包,得到打包后的合约源码;将打包后的合约源码发送至区块链中除目标节点之外的其他节点上。
[0071]
在本实施例中,部署单元23接收来自合约部署请求单元12发起的智能合约部署请求并进行智能合约部署。首先解析请求报文中的智能合约源码存储路径,且该路径已由缓存单元22发送给交易发起模块1,然后解析得到智能合约源码路径后,根据智能合约路径生成智能合约id,将智能合约源代码打包后转发给区块链其他节点。
[0072]
通过上述的方案,可以快速的在区块链中部署通过检测的智能合约。
[0073]
可选地,在本技术实施例提供的基于区块链的智能合约逻辑漏洞检测方法中,在确定逻辑漏洞检测结果为智能合约存在逻辑漏洞之后,该方法还包括:接收目标信息,其中,目标信息用于表示第一请求报文的请求失败;基于目标信息,不执行上传智能合约的操作。
[0074]
在本实施例中,若未通过检测单元21,即检测结果为区块链中智能合约存在逻辑漏洞,则向合约请求单元返回请求失败信息,即合约上传请求单元11接收到请求失败的信息后,不执行上传智能合约的操作。而且,图7是本技术实施例中的检测单元检测区块链中智能合约的逻辑漏洞的示意图,如图7所示,检测单元21接收到合约上传单元11发送的请求
后,解析请求报文获取合约条款信息;基于解析到的合约条款信息,采用承诺模型构建智能合约状态机模型;定义智能合约博弈,基于状态机模型中各参与方的收益,计算并分析智能合约博弈的纳什均衡;若纳什均衡收益小于或者等于零,则表示区块链中的智能合约存在逻辑漏洞,并向合约请求单元返回请求失败信息;若纳什均衡收益大于零,则表示区块链中的智能合约不存在逻辑漏洞,并向缓存单元22发送智能合约的源码。
[0075]
通过上述的方案,可以保证检测出的存在逻辑漏洞的智能合约不在区块链中部署,从而可以避免产生巨大损失。
[0076]
综上,本技术实施例提供的基于区块链的智能合约逻辑漏洞检测方法,通过确定区块链中智能合约的状态机模型,其中,状态机模型是基于智能合约的目标条款信息和承诺模型生成的模型,其中,承诺模型是由多个承诺信息生成的模型;基于状态机模型结合博弈理论,确定智能合约的纳什均衡,并计算纳什均衡的收益;依据纳什均衡的收益,确定智能合约的逻辑漏洞检测结果,解决了相关技术中采用人工方式检测区块链中的智能合约的逻辑漏洞,导致逻辑漏洞的检测效率较低的问题。通过依据构建的区块链中智能合约的状态机模型和博弈理论,确定智能合约的纳什均衡和纳什均衡的收益,并依据纳什均衡的收益,可以得到智能合约的逻辑漏洞检测结果,从而自动检测区块链中的智能合约的逻辑漏洞,进而达到了提升区块链中的智能合约的逻辑漏洞的检测效率的效果。
[0077]
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
[0078]
本技术实施例还提供了一种基于区块链的智能合约逻辑漏洞检测装置,需要说明的是,本技术实施例的基于区块链的智能合约逻辑漏洞检测装置可以用于执行本技术实施例所提供的用于基于区块链的智能合约逻辑漏洞检测方法。以下对本技术实施例提供的基于区块链的智能合约逻辑漏洞检测装置进行介绍。
[0079]
图8是根据本技术实施例的基于区块链的智能合约逻辑漏洞检测装置的示意图。如图8所示,该装置包括:第一确定单元801、第一处理单元802和第二确定单元803。
[0080]
具体地,第一确定单元801,用于确定区块链中智能合约的状态机模型,其中,状态机模型是基于智能合约的目标条款信息和承诺模型生成的模型,其中,承诺模型是由多个承诺信息生成的模型;
[0081]
第一处理单元802,用于基于状态机模型结合博弈理论,确定智能合约的纳什均衡,并计算纳什均衡的收益;
[0082]
第二确定单元803,用于依据纳什均衡的收益,确定智能合约的逻辑漏洞检测结果。
[0083]
综上,本技术实施例提供的基于区块链的智能合约逻辑漏洞检测装置,通过第一确定单元801确定区块链中智能合约的状态机模型,其中,状态机模型是基于智能合约的目标条款信息和承诺模型生成的模型,其中,承诺模型是由多个承诺信息生成的模型;第一处理单元802基于状态机模型结合博弈理论,确定智能合约的纳什均衡,并计算纳什均衡的收益;第二确定单元803依据纳什均衡的收益,确定智能合约的逻辑漏洞检测结果,解决了相关技术中采用人工方式检测区块链中的智能合约的逻辑漏洞,导致逻辑漏洞的检测效率较低的问题,通过依据构建的区块链中智能合约的状态机模型和博弈理论,确定智能合约的
纳什均衡和纳什均衡的收益,并依据纳什均衡的收益,可以得到智能合约的逻辑漏洞检测结果,从而自动检测区块链中的智能合约的逻辑漏洞,进而达到了提升区块链中的智能合约的逻辑漏洞的检测效率的效果。
[0084]
可选地,在本技术实施例提供的基于区块链的智能合约逻辑漏洞检测装置中,第一处理单元包括:第一确定模块,用于基于智能合约的状态机模型,确定智能合约中的参与方的集合;第二确定模块,用于依据参与方的集合,确定智能合约中每个参与方的策略集合;第三确定模块,用于依据每个参与方的策略集合,得到智能合约的策略集合的组合;第一获取模块,用于获取每个参与方的收益;第四确定模块,用于结合博弈理论,依据策略集合的组合和每个参与方的收益,确定智能合约的纳什均衡。
[0085]
可选地,在本技术实施例提供的基于区块链的智能合约逻辑漏洞检测装置中,该装置还包括:第一获取单元,用于在确定智能合约的状态机模型之前,获取第一请求报文,其中,第一请求报文用于表示上传智能合约的请求;第一解析单元,用于解析第一请求报文,得到目标条款信息;第一构建单元,用于基于目标条款信息,并采用承诺模型,构建智能合约的状态机模型。
[0086]
可选地,在本技术实施例提供的基于区块链的智能合约逻辑漏洞检测装置中,第二确定单元包括:第一判断模块,用于判断纳什均衡的收益是否小于或者等于预设值;第五确定模块,用于若纳什均衡的收益小于或者等于预设值,则确定逻辑漏洞检测结果为智能合约存在逻辑漏洞;第六确定模块,用于若纳什均衡的收益大于预设值,则确定逻辑漏洞检测结果为智能合约不存在逻辑漏洞。
[0087]
可选地,在本技术实施例提供的基于区块链的智能合约逻辑漏洞检测装置中,该装置还包括:第二获取单元,用于在确定逻辑漏洞检测结果为智能合约不存在逻辑漏洞之后,获取智能合约的合约源码;第一存储单元,用于将合约源码存储在区块链的目标节点的目标位置中。
[0088]
可选地,在本技术实施例提供的基于区块链的智能合约逻辑漏洞检测装置中,该装置还包括:第三获取单元,用于在将合约源码存储在区块链的目标节点的目标位置中之后,获取第二请求报文,其中,第二请求报文用于表示部署智能合约的请求;第二解析单元,用于解析第二请求报文,确定合约源码的存储路径;第一生成单元,用于依据合约源码的存储路径,生成智能合约的id信息;第一打包单元,用于在id信息生成后,将带有id信息的合约源码打包,得到打包后的合约源码;第一发送单元,用于将打包后的合约源码发送至区块链中除目标节点之外的其他节点上。
[0089]
可选地,在本技术实施例提供的基于区块链的智能合约逻辑漏洞检测装置中,该装置还包括:第一接收单元,用于在确定逻辑漏洞检测结果为智能合约存在逻辑漏洞之后,接收目标信息,其中,目标信息用于表示第一请求报文的请求失败;第二处理单元,用于基于目标信息,不执行上传智能合约的操作。
[0090]
可选地,在本技术实施例提供的基于区块链的智能合约逻辑漏洞检测装置中,该装置还包括:第三获取单元,用于在获取第一请求报文之前,获取智能合约的文本中的第一条款信息和智能合约的合约代码,其中,第一条款信息与目标条款信息不同;第二生成单元,用于依据第一条款信息和合约代码,生成第一请求报文。
[0091]
所述基于区块链的智能合约逻辑漏洞检测装置包括处理器和存储器,上述第一确
定单元801、第一处理单元802和第二确定单元803等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
[0092]
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来提升区块链中的智能合约的逻辑漏洞的检测效率。
[0093]
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram),存储器包括至少一个存储芯片。
[0094]
本发明实施例提供了一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现所述基于区块链的智能合约逻辑漏洞检测方法。
[0095]
如图9所示,本发明实施例提供了一种电子设备,设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现以下步骤:确定区块链中智能合约的状态机模型,其中,所述状态机模型是基于所述智能合约的目标条款信息和承诺模型生成的模型,其中,所述承诺模型是由多个承诺信息生成的模型;基于所述状态机模型结合博弈理论,确定所述智能合约的纳什均衡,并计算所述纳什均衡的收益;依据所述纳什均衡的收益,确定所述智能合约的逻辑漏洞检测结果。
[0096]
处理器执行程序时还实现以下步骤:基于所述状态机模型结合博弈理论,确定所述智能合约的纳什均衡包括:基于所述智能合约的状态机模型,确定所述智能合约中的参与方的集合;依据所述参与方的集合,确定所述智能合约中每个参与方的策略集合;依据所述每个参与方的策略集合,得到所述智能合约的策略集合的组合;获取所述每个参与方的收益;结合所述博弈理论,依据所述策略集合的组合和所述每个参与方的收益,确定所述智能合约的纳什均衡。
[0097]
处理器执行程序时还实现以下步骤:在确定智能合约的状态机模型之前,所述方法还包括:获取第一请求报文,其中,所述第一请求报文用于表示上传所述智能合约的请求;解析所述第一请求报文,得到所述目标条款信息;基于所述目标条款信息,并采用所述承诺模型,构建所述智能合约的状态机模型。
[0098]
处理器执行程序时还实现以下步骤:依据所述纳什均衡的收益,确定所述智能合约的逻辑漏洞检测结果包括:判断所述纳什均衡的收益是否小于或者等于预设值;若所述纳什均衡的收益小于或者等于所述预设值,则确定所述逻辑漏洞检测结果为所述智能合约存在所述逻辑漏洞;若所述纳什均衡的收益大于所述预设值,则确定所述逻辑漏洞检测结果为所述智能合约不存在所述逻辑漏洞。
[0099]
处理器执行程序时还实现以下步骤:在确定所述逻辑漏洞检测结果为所述智能合约不存在所述逻辑漏洞之后,所述方法还包括:获取所述智能合约的合约源码;将所述合约源码存储在所述区块链的目标节点的目标位置中。
[0100]
处理器执行程序时还实现以下步骤:在将所述合约源码存储在所述区块链的目标节点的目标位置中之后,所述方法还包括:获取第二请求报文,其中,所述第二请求报文用于表示部署所述智能合约的请求;解析所述第二请求报文,确定所述合约源码的存储路径;依据所述合约源码的存储路径,生成所述智能合约的id信息;在所述id信息生成后,将带有所述id信息的合约源码打包,得到打包后的合约源码;将所述打包后的合约源码发送至所述区块链中除所述目标节点之外的其他节点上。
[0101]
处理器执行程序时还实现以下步骤:在确定所述逻辑漏洞检测结果为所述智能合约存在所述逻辑漏洞之后,所述方法还包括:接收目标信息,其中,所述目标信息用于表示所述第一请求报文的请求失败;基于所述目标信息,不执行上传所述智能合约的操作。
[0102]
处理器执行程序时还实现以下步骤:在获取第一请求报文之前,所述方法还包括:获取所述智能合约的文本中的第一条款信息和所述智能合约的合约代码,其中,所述第一条款信息与所述目标条款信息不同;依据所述第一条款信息和所述合约代码,生成所述第一请求报文。本文中的设备可以是服务器、pc、pad、手机等。
[0103]
本技术还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:确定区块链中智能合约的状态机模型,其中,所述状态机模型是基于所述智能合约的目标条款信息和承诺模型生成的模型,其中,所述承诺模型是由多个承诺信息生成的模型;基于所述状态机模型结合博弈理论,确定所述智能合约的纳什均衡,并计算所述纳什均衡的收益;依据所述纳什均衡的收益,确定所述智能合约的逻辑漏洞检测结果。
[0104]
当在数据处理设备上执行时,还适于执行初始化有如下方法步骤的程序:基于所述状态机模型结合博弈理论,确定所述智能合约的纳什均衡包括:基于所述智能合约的状态机模型,确定所述智能合约中的参与方的集合;依据所述参与方的集合,确定所述智能合约中每个参与方的策略集合;依据所述每个参与方的策略集合,得到所述智能合约的策略集合的组合;获取所述每个参与方的收益;结合所述博弈理论,依据所述策略集合的组合和所述每个参与方的收益,确定所述智能合约的纳什均衡。
[0105]
当在数据处理设备上执行时,还适于执行初始化有如下方法步骤的程序:在确定智能合约的状态机模型之前,所述方法还包括:获取第一请求报文,其中,所述第一请求报文用于表示上传所述智能合约的请求;解析所述第一请求报文,得到所述目标条款信息;基于所述目标条款信息,并采用所述承诺模型,构建所述智能合约的状态机模型。
[0106]
当在数据处理设备上执行时,还适于执行初始化有如下方法步骤的程序:依据所述纳什均衡的收益,确定所述智能合约的逻辑漏洞检测结果包括:判断所述纳什均衡的收益是否小于或者等于预设值;若所述纳什均衡的收益小于或者等于所述预设值,则确定所述逻辑漏洞检测结果为所述智能合约存在所述逻辑漏洞;若所述纳什均衡的收益大于所述预设值,则确定所述逻辑漏洞检测结果为所述智能合约不存在所述逻辑漏洞。
[0107]
当在数据处理设备上执行时,还适于执行初始化有如下方法步骤的程序:在确定所述逻辑漏洞检测结果为所述智能合约不存在所述逻辑漏洞之后,所述方法还包括:获取所述智能合约的合约源码;将所述合约源码存储在所述区块链的目标节点的目标位置中。
[0108]
当在数据处理设备上执行时,还适于执行初始化有如下方法步骤的程序:在将所述合约源码存储在所述区块链的目标节点的目标位置中之后,所述方法还包括:获取第二请求报文,其中,所述第二请求报文用于表示部署所述智能合约的请求;解析所述第二请求报文,确定所述合约源码的存储路径;依据所述合约源码的存储路径,生成所述智能合约的id信息;在所述id信息生成后,将带有所述id信息的合约源码打包,得到打包后的合约源码;将所述打包后的合约源码发送至所述区块链中除所述目标节点之外的其他节点上。
[0109]
当在数据处理设备上执行时,还适于执行初始化有如下方法步骤的程序:在确定所述逻辑漏洞检测结果为所述智能合约存在所述逻辑漏洞之后,所述方法还包括:接收目
标信息,其中,所述目标信息用于表示所述第一请求报文的请求失败;基于所述目标信息,不执行上传所述智能合约的操作。
[0110]
当在数据处理设备上执行时,还适于执行初始化有如下方法步骤的程序:在获取第一请求报文之前,所述方法还包括:获取所述智能合约的文本中的第一条款信息和所述智能合约的合约代码,其中,所述第一条款信息与所述目标条款信息不同;依据所述第一条款信息和所述合约代码,生成所述第一请求报文。
[0111]
本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0112]
本技术是参照根据本技术实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0113]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0114]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0115]
在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
[0116]
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。存储器是计算机可读介质的示例。
[0117]
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
[0118]
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的
包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
[0119]
本领域技术人员应明白,本技术的实施例可提供为方法、系统或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
[0120]
以上仅为本技术的实施例而已,并不用于限制本技术。对于本领域技术人员来说,本技术可以有各种更改和变化。凡在本技术的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本技术的权利要求范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1