首页> 中国专利> 一种基于有向无环图的智能合约冲突检测方法

一种基于有向无环图的智能合约冲突检测方法

摘要

本发明公开了一种基于有向无环图的智能合约冲突检测方法,包括以下步骤:S1、背书节点提取交易模拟执行结果的读写集;S2、根据读写集更新智能合约冲突关系图,并进行冲突检测,生成有向无环图的冲突关系映射表;S3、在完成交易验证并将交易添加到链上后,对智能合约冲突关系图以及冲突关系映射表进行更新。本发明的有益效果在于,提供一种区块链智能合约的冲突检测方法,能够使交易中的智能合约在背书阶段进行冲突检测,提前判断无效交易,避免无效交易进入排序、验证阶段。本发明使用有向无环图进行智能合约的冲突检测,可极大地减少系统资源的消耗,能够有效地提高区块链系统的交易吞吐率并减少系统资源开销。

著录项

说明书

技术领域

本发明属于区块链领域,具体涉及区块链智能合约的冲突检测方法。

背景技术

区块链是一种多中心、防篡改、防抵赖的分布式账本,该账本由网络中的各方节点共同维护,并且具有多中心化、不可篡改、可溯源等特点。在分布式网络中的各个节点通过执行由共识算法验证过的交易来维护各自账本的副本,账本是以区块的形式进行存储,每个区块通过之前区块的哈希值相连。

最早广泛应用的区块链应用是比特币这一加密货币,之后由其衍生了诸多应用,并且区块链作为其底层技术也由此进入了人们的视野。以太坊是另一类的加密货币,其最大的创新点在于提出了智能合约,将智能合约部署到区块链上可以实现各类应用,使得区块链能够更加广泛地使用,由此开启了区块链的新时代。比特币和以太坊都以及许多的区块链系统都是以顺序执行架构来执行智能合约的,以保证执行智能合约结果的确定性,但是这种执行架构无法有效利用当前的高性能处理器的并行处理能力,因此需要并行处理智能合约的架构。

超级账本作为联盟链的代表,针对以上问题采用了一种新的架构,即执行-排序-验证。但是该架构对于由智能合约冲突而造成的无效交易的处理放在了验证阶段,这就导致系统将使用大量的资源对一笔无效交易进行处理,极大地限制了区块链网络的交易处理能力。

基于以上技术背景可知,如何有效地对区块链智能合约进行冲突检测成为提升区块链性能的关键问题。区块链相关的专家和学者也对此类问题提出了各自的解决方案。如在顺序执行架构的基础上多次执行智能合约并对比智能合约执行结果,从而判断智能合约冲突等,此类方案在一等程度上可以解决冲突检测的问题,但是对系统资源的消耗依然很大,无法提供一个高效率、高性价比的智能合约冲突检测方案。

发明内容

为了克服上述现有技术的不足,本发明提供了一种基于有向无环图的智能合约冲突检测方法,可以有效地进行冲突检测,避免在无效交易上的资源消耗,提高了区块链系统的交易吞吐率。

本发明是一种基于有向无环图的智能合约冲突检测方法,该方法包括以下具体步骤:

S1、背书节点提取交易模拟执行结果的读写集。

S2、根据读写集更新智能合约冲突关系图,并进行冲突检测,生成有向无环图的冲突关系映射表。

S3、在完成交易验证并将交易添加到链上后,对智能合约冲突关系图以及冲突关系映射表进行更新。

所述步骤S1中提取读写集阶段,具体包括以下步骤:

S11、背书节点将客户端发来的交易进行模拟执行,并缓存智能合约调用后的相关结果;

S12、背书节点提取交易中所调用智能合约对应的读写集并将其缓存。

所述步骤S2中的冲突检测阶段,根据读写集更新智能合约冲突关系图,并进行冲突检测,生成冲突关系映射表,具体包括以下步骤:

S21、根据提取出的读写集对在通道上创建的冲突关系图进行更新,其中冲突关系图的顶点M代表名称为M的智能合约,有向边

代表键值key同时存在于智能合约M的写集中和智能合约N的读集中,冲突关系图使用邻接矩阵存储,如果存在有向边,则矩阵的M行N列赋值为1;

S22、根据冲突关系图对智能合约之间的冲突关系进行检测,对冲突关系图进行遍历,如果顶点M、N之间存在一条有向边,则N与M之间存在冲突。

S23、根据合约间的冲突关系更新智能合约冲突关系映射表,表中第一列每一项代表一个智能合约,第二列表示相应冲突的智能合约。

所述步骤S3中的冲突关系图清除阶段,在完成交易验证并将交易添加到链上后,对智能合约冲突关系图以及冲突关系映射表进行更新,具体包括以下步骤:

S31、通道上各个对等节点对交易进行验证,若验证结果为有效,则将交易添加到链上,并进入步骤S32;否则返回验证无效;

S32、根据已提交上链的交易中智能合约所对应的读写集对智能合约冲突关系图进行更新,将相关的代表智能合约的顶点和有向边删除。

S33、根据智能合约冲突关系图对冲突映射表进行相应的更新。

本发明具有以下优点和有益效果:本发明提供了一种基于有向无环图的智能合约冲突检测方法,这种冲突检测方法通过提取背书节点生成的交易模拟执行结果的读写集,并使用提取的读写集更新智能合约冲突关系图和冲突关系映射表。根据冲突关系映射表提前判断出无效交易,避免无效交易进入排序、验证阶段,减少系统资源的消耗,即在使用相同的系统资源的前提下可以处理更多的交易,从而提高了系统的交易吞吐率。

附图说明

图1为本发明提供的一种基于有向无环图的智能合约冲突检测方法的处理流程图。

图2为本发明提供的在背书节点对模拟执行交易结果提取读写集的过程示例图。

图3为本发明提供的根据读写集更新通道上智能合约冲突关系图的过程示例图。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。本实施例的附图中相同或相似的标号对应相同或相似的部件;在本发明的描述中,需要说明的是,除非另有说明,“多个”的含义是两个或两个以上;术语“上”、“下”、“左”、“右”、“内”、“外”、“前端”、“后端”、“头部”、“尾部”等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”、“第三”等仅用于描述目的,而不能理解为指示或暗示相对重要性。

下面结合附图和具体实施例对本发明进一步说明,实例中客户端发出交易。

S1、背书节点提取交易模拟执行结果的读写集。

S2、根据读写集更新智能合约冲突关系图,并进行冲突检测,生成有向无环图的冲突关系映射表。

S3、在交易完成验证并更新状态后将智能合约冲突关系图进行更新。

所述步骤S1中提取读写集阶段,具体包括以下步骤:

S11、背书节点将客户端发来的交易进行模拟执行,并缓存智能合约调用后的相关结果;

S12、背书节点提取交易中所调用智能合约对应的读写集并将其缓存。

所述步骤S2中的冲突检测阶段,根据读写集更新智能合约冲突关系图,并进行冲突检测,生成有向无环图的冲突关系映射表,具体包括以下步骤:

S21、根据提取出的读写集对在通道上创建的冲突关系图进行更新,其中冲突关系图的顶点M代表名称为M的智能合约,有向边

代表键值key同时存在于智能合约M的写集中和智能合约N的读集中,冲突关系图使用邻接矩阵存储,如果存在有向边,则矩阵的M行N列赋值为1;

S22、根据冲突关系图对智能合约之间的冲突关系进行检测,对冲突关系图进行遍历,如果顶点M、N之间存在一条有向边,则N与M之间存在冲突。

S23、根据合约间的冲突关系更新智能合约冲突关系映射表,表中第一列每一项代表一个智能合约,第二列表示相应冲突的智能合约。

所述步骤S3中的冲突关系图清除阶段,在完成交易验证并将交易添加到链上后,对智能合约冲突关系图以及冲突关系映射表进行更新,具体包括以下步骤:

S31、通道上各个对等节点对交易进行验证,若验证结果为有效,则将交易添加到链上,并进入步骤S32;否则返回验证无效;

S32、根据已提交上链的交易中智能合约所对应的读写集对智能合约冲突关系图进行更新,将相关的代表智能合约的顶点和有向边删除。

S33、根据智能合约冲突关系图对冲突映射表进行相应的更新。

本实施例实在联盟链系统实施的一种基于有向无环图的智能合约冲突检测方法。

图1展示本发明的总体处理流程图。该图描述了冲突检测中各个模块之间的交互过程,具体功能步骤如下:

步骤1:客户端发送一笔交易,交易可以调用一个或多个智能合约。

步骤2:背书节点接受从客户端发来的交易,然后模拟执行交易,从模拟执行结果中提取相关读写集。

步骤3:根据从模拟执行交易结果中提取出的读写集对通道上的智能合约冲突关系图进行更新,并通过智能合约冲突关系图更新冲突关系映射表。

步骤4:判断是否完成交易验证以及状态更新,如果完成交易验证以及状态更新,则清空智能合约冲突关系图和冲突关系映射表,否则等待客户端发来新的交易,重复执行步骤1、2、3.

图2展示的是在背书节点对模拟执行交易结果提取读写集的过程示例图。在背书节点完成对交易的模拟执行后会得到交易模拟执行结果,交易包含一个或多个智能合约,遍历交易模拟执行结果中的每一个智能合约所对应的调用结果,并提取调用该智能合约所产生的读写集,读集中包含字段key、version,写集中包含字段key、isDelete、value。

图3展示的是根据读写集更新通道上智能合约冲突关系图的过程示例图。智能合约冲突关系图在通道创建时生成,图中的顶点表示智能合约,边表示读写集中的key,图三中智能合约1的读集中包含key1,智能合约2的写集中包含key1,由此生成一条从智能合约2指向智能合约1的有向边,表示智能合约1与智能合约2存在冲突;智能合约1的读集中包含key2,智能合约3的写集中包含key2,由此生成一条从智能合约3指向智能合约1的有向边,智能合约1与智能合约3之间存在冲突;智能合约2与智能合约3之间不存在冲突关系。

最后说明的是:以上所述的实施例仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号