CN116795850B - 一种联盟链海量事务并发执行方法、装置及存储介质 - Google Patents

一种联盟链海量事务并发执行方法、装置及存储介质 Download PDF

Info

Publication number
CN116795850B
CN116795850B CN202310646374.XA CN202310646374A CN116795850B CN 116795850 B CN116795850 B CN 116795850B CN 202310646374 A CN202310646374 A CN 202310646374A CN 116795850 B CN116795850 B CN 116795850B
Authority
CN
China
Prior art keywords
transaction
execution
node
transactions
executing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202310646374.XA
Other languages
English (en)
Other versions
CN116795850A (zh
Inventor
孔兰菊
宋啸林
崔立真
李庆忠
郭伟
钱进
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shandong University
Original Assignee
Shandong University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shandong University filed Critical Shandong University
Priority to CN202310646374.XA priority Critical patent/CN116795850B/zh
Publication of CN116795850A publication Critical patent/CN116795850A/zh
Application granted granted Critical
Publication of CN116795850B publication Critical patent/CN116795850B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明涉及一种联盟链海量事务并发执行方法、装置及存储介质,本发明共识节点对事务池内的批量事务构建基于资产状态的事务依赖图并基于深度优先算法遍历事务依赖图中入度为0的顶点,切割入度为0的顶点将事务依赖图分割成不同的子图,并将不同的子图下发到不同的执行组;执行组内的执行节点接收到子图后,按照子图执行组内事务,并将执行结果反馈给其他所有共识节点和执行节点;共识节点将特定事务的正确执行结果放入预打包队列;执行节点将不同组的特定事务的正确执行结果更新至本地账本;在预打包队列数量达到设定阈值后,共识节点将事务执行结果封装发布。本申请使用场景广泛且能有效减少执行组间的冲突,提高执行成功率和并发的速度。

Description

一种联盟链海量事务并发执行方法、装置及存储介质
技术领域
本发明涉及区块链交易执行领域,尤其涉及一种联盟链海量事务并发执行方法、装置及存储介质。
背景技术
区块链作为一种去中心化的分布式账本,具有不可篡改性、可追溯性、匿名性等特点,因此在金融、政务、医疗等领域得到了广泛的应用。然而,传统区块链的交易串行执行策略严重降低了系统的交易执行速度,使得区块链系统在海量交易场景下无法使用,限制了区块链系统的使用场景,区块链的吞吐量性能瓶颈亟待解决。
现有区块链交易并发策略基于“排序-执行”和“执行-排序”两种执行模式。其中,“排序-执行”模式以以太坊为例,具有简单、成功率高的特点。该模式先利用共识节点(组)对一批交易进行共识,确认交易合法且达成一致顺序后由执行节点(组)执行。在该模式下,不合法交易早期就被抛弃,消耗资源较少,但执行效率较低。“执行-排序”模型以Fabric为例,具有高效、安全的特点。该模式下交易先经背书节点执行,后携带执行结果被发送至排序节点进行排序打包。在该模式下,交易执行效率高,但交易冲突率较高,执行成功率较低。
值得注意的是,现有两种执行模型下已有多种交易并发策略,例如基于分片的并发策略,基于读写集的并发策略,均能够达到较高的吞吐量。但是现有的并发策略大都针对简单转账交易,对于复杂交易场景的匹配度较低,同时实际性能距离实际场景的吞吐量需求仍然有较大的差距。
因此,面对迫切的交易并发需求,交易的并发策略一方面要适应各种交易场景即合约资产场景,将并发策略应用到非转账的各种实际场景中,另一方面也要有效提升系统吞吐量,解决现有区块链系统的吞吐量性能瓶颈问题,使得区块链技术能够真正的被应用到现实场景中去。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本发明提供一种联盟链海量事务并发执行方法、装置及存储介质。
第一方面,本发明提供一种联盟链海量事务并发执行方法,包括:
通过共识节点对事务池内的批量事务构建基于资产状态的事务依赖图;
共识节点基于深度优先算法遍历事务依赖图中入度为0的顶点,切割入度为0的顶点将事务依赖图分割成不同的子图,并将不同的子图下发到不同的执行组;
执行组内的执行节点接收到子图后,对子图内事务进行验证,验证通过后按照子图执行组内事务,并将执行结果反馈给其他所有共识节点和执行节点;
共识节点将特定事务的正确执行结果放入预打包队列;执行节点将不同组的特定事务的正确执行结果更新至本地账本;
在预打包队列数量达到设定阈值后,共识节点将预打包队列内的事务执行结果封装成区块并发布。
更进一步地,所述事务池内的事务来自于客户端,所述事务池接收客户端发起的事务,并按照事务的接收时间顺序排序排列事务。
更进一步地,所述共识节点构建事务依赖图时,基于事务签名和时间戳验证事务池中的全部事务的合法性和有效性;
若事务有效且合法,则将事务加入到事务依赖图构建中;
若事务无效或非法,则将事务抛弃,并不通知事务发起的客户端。
更进一步地,事务依赖图的构建过程包括:
共识节点基于事务相关的资产地址、合约地址,通过资产状态对事务依赖进行冲突验证和划分,有依赖的两笔事务在事务依赖图中表现为两个顶点间有相连的有向边,有向边表示依赖关系。
更进一步地,所述共识节点基于深度优先算法遍历事务依赖图中入度为0的顶点,切割入度为0的顶点将事务依赖图分割成不同的子图包括:
S231,预先创建用于存放子图的块,
S232,寻找任一入度为0的事务并加入到当前块中,并将该事务对应在事务依赖图中的顶点与关联的边删除,
S233,对新加入块的事务进行深度优先遍历,寻找因该事务删除而导致入度为零的顶点,重复S232-S233直直至块填满或不足一个新块的剩余事务停止打包,等到下一轮处理。
更进一步地,将事务执行结果放入预打包队列前,共识节点判断事务是否正确执行,包括:对于一笔特定事务,若共识节点收到设定数量个相同的执行结果,则认为该特定事务已被正确执行,所述设定数量为f+1,其中f为假定的恶意节点数量;对于一笔特定事务,若共识节点没有收到设定数量的相同执行结果,则认为该特定事务执行的执行组出现异常,抛弃该特定事务的执行结果。
更进一步地,将事务执行结果存入本地账本前,执行节点判断事务是否正确执行,包括:对于一笔特定事务,若非该特定事务的执行组的执行节点收到f+1个相同执行结果,则认为该特定事务已被正确执行,将执行结果保存在本地,更新本地账本,以支持用于后续事务执行,其中f为假定的恶意节点数量;对于一笔特定事务,若非该特定事务的执行组的执行节点没有收到规定数量的相同结果,则认为该特定事务的执行组出现异常,抛弃该特定事务的执行结果。
更进一步地,共识节点形成共识组,共识组基于PBFT(Practical ByzantineFault Tolerance,实用拜占庭容错算法)进行共识,共识组内的共识节点基于共识配合实现的过程包括:事务有效性合法性验证、构建事务依赖图、事务依赖图分割、事务执行结果归队、事务执行结果封装成区块发布。
第二方面,本发明提供一种联盟链海量事务并发执行用装置,包括:至少一处理单元,所述处理单元通过总线单元连接存储单元,所述存储单元存储计算机程序,所述计算机程序被所述处理单元执行时实现所述的联盟链海量事务并发执行方法。
第三方面,本发明提供一种计算机可读存储介质,所述计算机可读存储介质存储计算机程序,所述计算机程序被处理器执行时,实现所述的联盟链海量事务并发执行方法。
本发明实施例提供的上述技术方案与现有技术相比具有如下优点:
本发明通过共识节点对事务池内的批量事务构建基于资产状态的事务依赖图;共识节点基于深度优先算法遍历事务依赖图中入度为0的顶点,切割入度为0的顶点将事务依赖图分割成不同的子图,并将不同的子图下发到不同的执行组;执行组内的执行节点接收到子图后,对子图内事务进行验证,验证通过后按照子图执行组内事务,并将执行结果反馈给其他所有共识节点和执行节点;共识节点将特定事务的正确执行结果放入预打包队列;执行节点将不同组的特定事务的正确执行结果更新至本地账本;在预打包队列数量达到设定阈值后,共识节点将预打包队列内的事务执行结果封装成区块并发布。本申请中共识节点将事务池中的事务构建成事务依赖图,共识节点基于深度优先算法遍历事务依赖图中入度为0的顶点,切割入度为0的顶点将事务依赖图分割成不同的子图,并将不同的子图下发到不同的执行组;实现了事务请求的向不同执行组的分配。执行组获得分配的任务后并发执行任务并通知其他所有共识节点和执行节点,其中:执行节点将不同组的特定事务的正确执行结果更新至本地账本,实现事务执行结果的同步,以支持不同的执行组基于现有事务执行结果继续并发执行后续事务;共识节点将特定事务的正确执行结果放入预打包队列,以实现将正确事务执行结果封装成区块发布。本申请利用事务依赖图关联事务并分配事务请求,使用场景广泛且能有效减少执行组间的冲突,提高执行成功率和并发的速度。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种联盟链海量事务并发执行方法的流程图;
图2为本发明实施例提供的区块链系统功能划分的示意图;
图3为本发明实施例提供的共识节点完成事务有效性合法性验证、构建事务依赖图、事务依赖图分割的流程图;
图4为本发明实施例提供的事务依赖图构建的流程图;
图5为本发明实施例提供的事务依赖图进行分割的流程图;
图6为本发明实施例提供的执行组按照事务依赖图的子图处理事务的流程图;
图7为本发明实施例提供的一种联盟链海量交易并发执行装置的示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者装置中还存在另外的相同要素。
需要说明的是,本方案中的相关定义如下:
事务(Tx):本方案的事务范围不仅限于传统转账交易,还包括授权事务与操作事务的集合,具体表现为主体账户AccountI对主体账户集合{AccountJ,AccountK,……,AccountN}或资产账户集合{Asseta,Assetb,……,Assetz}的相关操作,进一步的,通过合约提供更加复杂的资产操作功能,例如数据分析、数据预测等。
事务集合(Txs):将事务池中一段时间窗口内的所有事务定义为一次事务依赖图构建的事务集合。
授权事务:授权事务代表了对合约资产的授权交易,具体表现为账户A将资产i的操作权限授予账户B,这个过程通过令牌、密钥、口令等手段实现。
操作事务:操作事务代表了对合约资产的操作交易,具体表现为账户B在获得资产i的操作权限后对资产i进行的状态转变。
事务依赖图:基于冲突判定构建,面向指定的事务集合,用来表示事务集合内部的事务依赖关系。
冲突验证:基于资产的状态冲突判定,当两笔交易涉及到不同资产时,无冲突;当两笔交易涉及到相同资产,但交易的结果不冲突时,两笔交易无冲突;否则有存在冲突。
顶点集合:每一笔事务被视为事务依赖图的一个顶点,也就是说事务集合内有多少事务,对应的事务依赖图就有多少顶点,表示为顶点集合V={V1,V2,……,Vm}。
依赖集合:规定两个顶点Vi和Vj之间存在一条由Vi指向Vj的有向边Ei→j,两个顶点Vi和Vj对应事务Txi和Txj,当且仅当Txi和Txj满足MAA冲突判定条件并且Txi的时间戳早于Txj的时间戳才能形成依赖。
事务冲突率:对于一段时间窗口内的事务集合Txs,事务冲突率为所有前序事务仍然在该事务集合中的事务占比。
块间逻辑冲突率LCP:对于特定事务集合Txs生成的块集合BlockN=<blocki,blocki+1,…,blockn>,若块blockq中的某事务Txb存在位于块blockp的前序事务Txa,且timep<timeq,则Txb为块间逻辑冲突事务lcTx,LCP为lcTx在BlockN中的事务占比。由于不考虑块内冲突,因此对于同一事务集合Txs,CPTxs≥LCPTxs
共识组:由全部的共识节点组成,进行事务有效性合法性共识、事务依赖图构建共识、事务依赖图分割共识、事务执行结果归队共识以及事务执行结果封装成区块发布。
执行组:由多个执行节点随机组成,执行由共识组分发的子图并广播执行结果。同一时刻存在多个执行组并发多个任务。
事务依赖图构建共识:所有共识节点基于状态机复制协议对传入的事务请求达成顺序上的一致,随后由主节点的冲突模型生成事务依赖图,
事务依赖图分割共识:通过分块的形式将事务依赖图分割,块分配前进行第二轮共识,对多个块成达成一致。
实施例1
参阅图1所示,本发明实施例提供一种联盟链海量事务并发执行方法,应用于海量交易复杂合约资产的执行场景,包括:
S1,建立区块链系统,并对节点进行功能划分,具体包括共识节点,执行节点。功能划分仅对区块链系统内进行,对外表现为黑盒系统,客户端感知不到节点分类。
参阅图2所示,步骤S1包括:
建立区块链系统,对区块链节点进行功能划分,划分成若干共识节点和执行节点,并对共识节点和执行节点进行部署,部署包括一个由若干共识节点组成的共识组和由若干执行节点组成多个执行组。在一种实施方式中,所述共识组基于PBFT(PracticalByzantine Fault Tolerance,实用拜占庭容错算法)进行共识。
S2,由S1中的共识节点完成事务有效性合法性验证、构建事务依赖图、事务依赖图分割。
将由客户端节点发起的任一笔事务放入事务池中等待处理。在一种实施方式中,所述事务池中的事务按照时间顺序排序等待处理。
参阅图3所述,步骤S2包括:
S21,共识节点基于事务签名和时间戳验证所述事务池中的全部事务的合法性和有效性。若验证事务有效且合法,则将事务加入到事务依赖图构建中。若交易无效或非法,则将事务抛弃,并不通知发起交易的客户端节点。
S22,对于通过合法性和有效性验证的事务,共识节点构建事务依赖图。具体的,对于事务池中一段时间窗口内的事务集合,基于与事务集合中事务相关的资产地址、合约地址,通过资产状态对事务依赖进行冲突验证和划分,将依赖无冲突的事务构建成顶点,将依赖构建成连接于顶点之间的有向边。有依赖的两笔事务在事务依赖图中表现为两个顶点间有相连的有向边,有向边表示依赖关系。
但一段时间窗口内的事务数量要远远多于一个块所能打包的事务数量,因此,本申请通过S221-S224,利用记录资产最新状态的哈希表实现了常数时间复杂度下的资产最新状态追溯以及线性时间复杂度下的事务依赖图构建,如图4所示,具体包括:
对事务池中一时间窗口的事务集合中的每笔事务遍历S221-S223步骤。
S221,通过对事务的静态分析得到该事务的读写集。在本发明中,由于被授权账户对资产的操作被限制了在了该资产内部,不会出现一笔跨资产的事务操作,因此通过静态分析就可以得知该笔事务的读写集。
S222,对读集的处理:基于已经构建的哈希表及该事务的读集判断是否存在前序依赖关系,若存在前序依赖,则将该事务作为顶点v加入到事务依赖图中并构建从该事务的前序依赖事务到该事务的有向边e;若不存在前序依赖,则将该事务作为顶点v加入到事务依赖图中即可。
S223,对写集的更新:将该事务改变的资产更新到哈希表中。
S23,共识节点将当前事务集合生成的事务依赖图分割成子图并分发到不同的执行组中。
具体的,在步骤S23中,为了提高性能和效率,我们通过步骤S231-S234对事务依赖图进行分割,如图5所示,具体包括:
S231,计算此次时间窗口内要打包的块数量,预先创建用于存放子图的块,取一个块作为当前块。
S232,寻找一入度为0的事务并加入到当前块中,并将该事务对应在事务依赖图中的顶点与关联的有向边e删除。
S233,对新加入当前块的事务进行深度优先遍历,寻找因该事务删除而入度变为0的顶点,重复步骤S232-S233,直至块填满或不足一个新块的剩余事务停止打包,等到下一轮处理。具体的,当前块填满且剩余事务足够一个新块时,更换当前块后重复执行S232-S233。
S3,由S1中的执行节点对分割后的事务依赖图进行独立执行,并将最终结果全网广播。执行组内的执行节点接收到子图后,对子图内事务进行验证,验证通过后按照子图执行组内事务,并将执行结果反馈给其他所有共识节点和执行节点。
如图6所示,步骤S3具体包括:
S31,执行组内的执行节点执行特定的事务依赖图的子图。
S32,执行节点对子图内事务进行验证。
S33,针对验证通过的事务,执行组内的执行节点按照子图进行事务执行,将执行完成后的执行结果进行全网广播,范围包括其他执行组以及共识组。
S4,共识节点与执行节点接收来自全网的结果广播。共识节点将特定事务的正确执行结果放入预打包队列;执行节点基于一定的背书策略将不同组的特定事务的正确执行结果更新至本地账本。
将事务执行结果放入预打包队列前,共识节点判断事务是否正确执行,包括:对于一笔特定事务,若共识节点收到设定数量个相同的执行结果,则认为该特定事务已被正确执行,所述设定数量为f+1,其中f为假定的恶意节点数量;对于一笔特定事务,若共识节点没有收到设定数量的相同执行结果,则认为该特定事务执行的执行组出现异常,抛弃该特定事务的执行结果。
将事务执行结果存入本地账本前,执行节点判断事务是否正确执行,包括:对于一笔特定事务,若非该特定事务的执行组的执行节点收到f+1个相同执行结果,则认为该特定事务已被正确执行,将执行结果保存在本地,更新本地账本,以支持用于后续事务执行,其中f为假定的恶意节点数量;对于一笔特定事务,若非该特定事务的执行组的执行节点没有收到规定数量的相同结果,则认为该特定事务的执行组出现异常,抛弃该特定事务的执行结果。
在步骤S3中,由于执行节点并未执行所有块内的事务,我们需要说明对于任何一个执行组内的任何一个执行节点,该执行本发明方法不会遗漏任何事务执行结果,本方法将通过下述三个实例说明。
实例1:当某执行节点在执行事务Txn时,接收到符合数量要求的来自其他节点集合的事务Txn的执行结果。那么此时该执行节点将会放弃继续执行Txn,直接更新本地状态,并继续执行Txn+1
实例2:当某执行节点在执行事务Txn时,接收到符合数量要求的来自其他节点集合的事务Txn+c的执行结果。这说明由于网络延迟、消息丢失等原因,Txn到Txn+c之间的执行结果并没有全部广播到该执行节点。此时该执行节点会继续执行Txn并广播Txn的最终结果,接着执行Txn+1,直到符合实例1或者没有可更新的最新事务状态。
实例3:当某执行节点在执行事务Txn时,存在状态冲突的Txm在其他块中且接收到的结果未达到指定数量。为避免这种情况,我们规定共识组会在接收事务结果的同时向存在状态冲突事务的后续块广播结果,即向事务依赖图中的起点和终点事务并非同一个块的终点执行节点广播起点事务的执行结果。
S5、在预打包队列数量达到设定阈值后,共识节点将预打包队列内的事务执行结果封装成区块并发布。
实施例2
参阅图7所示,本发明提供一种联盟链海量交易并发执行装置,包括:至少一控制单元,所述控制单元通过总线单元连接存储单元,所述存储单元作为一种计算机可读存储介质,可用于存储软件程序、计算机可执行程序以及模块,如本发明实施例中的一种联盟链海量事务并发执行方法对应的软件程序、计算机可执行程序以及模块,所述处理单元通过运行存储在存储单元中的软件程序、计算机可执行程序以及模块,从而实现上述一种联盟链海量事务并发执行方法实现所述的联盟链海量事务并发执行方法:
通过共识节点对事务池内的批量事务构建基于资产状态的事务依赖图;共识节点基于深度优先算法遍历事务依赖图中入度为0的顶点,切割入度为0的顶点将事务依赖图分割成不同的子图,并将不同的子图下发到不同的执行组;执行组内的执行节点接收到子图后,对子图内事务进行验证,验证通过后按照子图执行组内事务,并将执行结果反馈给其他所有共识节点和执行节点;共识节点将特定事务的正确执行结果放入预打包队列;执行节点将不同组的特定事务的正确执行结果更新至本地账本;在预打包队列数量达到设定阈值后,共识节点将预打包队列内的事务执行结果封装成区块并发布。
当然,本发明实施例所提供的所述存储单元,其存储的计算机程序不限于如上所述的方法操作,还可以执行本发明任意实施例1中任意实施方式所提供的一种联盟链海量事务并发执行方法中的相关操作。
实施例3
本发明提供一种计算机可读存储介质,所述计算机可读存储介质存储计算机程序,所述计算机程序被处理器执行时,实现所述的联盟链海量事务并发执行方法,包括:通过共识节点对事务池内的批量事务构建基于资产状态的事务依赖图;共识节点基于深度优先算法遍历事务依赖图中入度为0的顶点,切割入度为0的顶点将事务依赖图分割成不同的子图,并将不同的子图下发到不同的执行组;执行组内的执行节点接收到子图后,对子图内事务进行验证,验证通过后按照子图执行组内事务,并将执行结果反馈给其他所有共识节点和执行节点;共识节点将特定事务的正确执行结果放入预打包队列;执行节点将不同组的特定事务的正确执行结果更新至本地账本;在预打包队列数量达到设定阈值后,共识节点将预打包队列内的事务执行结果封装成区块并发布。
当然,本发明实施例所提供的所述计算机可读存储介质,其存储的计算机程序不限于如上所述的方法操作,还可以执行本发明任意实施例1中任意实施方式所提供的一种联盟链海量事务并发执行方法中的相关操作。
在本发明所提供的实施例中,应该理解到,所揭露的结构和方法,可以通过其它的方式实现。例如,以上所描述的结构实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,结构或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。

Claims (8)

1.一种联盟链海量事务并发执行方法,其特征在于,包括:
通过共识节点对事务池内的批量事务构建基于资产状态的事务依赖图;
共识节点基于深度优先算法遍历事务依赖图中入度为0的顶点,切割入度为0的顶点将事务依赖图分割成不同的子图,包括:S231,预先创建用于存放子图的块,S232,寻找一入度为0的事务并加入到当前块中,并将该事务对应在事务依赖图中的顶点与关联的边删除,S233,对新加入当前块的事务进行深度优先遍历,寻找因该事务删除而导致入度为零的顶点,重复S232-S233,直至块填满或剩余事务不足一个新块,停止打包,等到下一轮处理;并将不同的子图下发到不同的执行组;
执行组内的执行节点接收到子图后,对子图内事务进行验证,验证通过后按照子图执行组内事务,并将执行结果反馈给其他所有共识节点和执行节点,其中,执行节点执行按照子图执行组内事务时:当某执行节点在执行事务Txn时,接收到符合数量要求的来自其他节点集合的事务Txn的执行结果,那么该执行节点将会放弃继续执行Txn,直接更新本地状态,并继续执行Txn+1;当某执行节点在执行事务Txn时,接收到符合数量要求的来自其他节点集合的事务Txn+c的执行结果,而Txn到Txn+c之间的执行结果并没有全部广播到该执行节点,此时该执行节点会继续执行Txn并广播Txn的最终结果,接着执行Txn+1,直到该执行节点在执行一事务时,接收到符合数量要求的来自其他节点集合的该事务的执行结果,那么该执行节点将会放弃继续执行该事务,直接更新本地状态或者直到没有可更新的最新事务状态;
规定共识组的共识节点会在接收事务结果的同时向存在状态冲突事务的后续块广播结果;执行节点将不同组的特定事务的正确执行结果更新至本地账本,执行节点将不同组的特定事务的正确执行结果更新至本地账本依赖各执行组执行节点对事务执行结果是否正确:包括:对于一笔特定事务,若非该特定事务的执行组的执行节点收到f+1个相同执行结果,则认为该特定事务已被正确执行,将执行结果保存在本地,更新本地账本,以支持用于后续事务执行,其中f为假定的恶意节点数量;对于一笔特定事务,若非该特定事务的执行组的执行节点没有收到规定数量的相同结果,则认为该特定事务的执行组出现异常,抛弃该特定事务的执行结果;
共识节点将特定事务的正确执行结果放入预打包队列;
在预打包队列数量达到设定阈值后,共识节点将预打包队列内的事务执行结果封装成区块并发布。
2.根据权利要求1所述的联盟链海量事务并发执行方法,其特征在于,所述事务池内的事务来自于客户端,所述事务池接收客户端发起的事务,并按照事务的接收时间顺序排序排列事务。
3.根据权利要求1所述的联盟链海量事务并发执行方法,其特征在于,所述共识节点构建事务依赖图时,基于事务签名和时间戳验证事务池中的全部事务的合法性和有效性;
若事务有效且合法,则将事务加入到事务依赖图构建中;
若事务无效或非法,则将事务抛弃,并不通知事务发起的客户端。
4.根据权利要求1所述的联盟链海量事务并发执行方法,其特征在于,事务依赖图的构建过程包括:
共识节点基于事务相关的资产地址、合约地址,通过资产状态对事务依赖进行冲突验证和划分,有依赖的两笔事务在事务依赖图中表现为两个顶点间有相连的有向边,有向边表示依赖关系。
5.根据权利要求1所述的联盟链海量事务并发执行方法,其特征在于,将事务执行结果放入预打包队列前,共识节点判断事务是否正确执行,包括:对于一笔特定事务,若共识节点收到设定数量个相同的执行结果,则认为该特定事务已被正确执行,所述设定数量为f+1,其中f为假定的恶意节点数量;对于一笔特定事务,若共识节点没有收到设定数量的相同执行结果,则认为该特定事务执行的执行组出现异常,抛弃该特定事务的执行结果。
6.根据权利要求1-5任一所述的联盟链海量事务并发执行方法,其特征在于,共识节点形成共识组,共识组基于PBFT(Practical Byzantine Fault Tolerance,实用拜占庭容错算法)进行共识,共识组内的共识节点基于共识配合实现的过程包括:事务有效性合法性验证、构建事务依赖图、事务依赖图分割、事务执行结果归队、事务执行结果封装成区块发布。
7.一种联盟链海量事务并发执行用装置,其特征在于,包括:至少一处理单元,所述处理单元通过总线单元连接存储单元,所述存储单元存储计算机程序,所述计算机程序被所述处理单元执行时实现如权利要求1-6任一所述的联盟链海量事务并发执行方法。
8.一种计算机可读存储介质,所述计算机可读存储介质存储计算机程序,其特征在于,所述计算机程序被处理器执行时,实现如权利要求1-6任一项所述的联盟链海量事务并发执行方法。
CN202310646374.XA 2023-05-31 2023-05-31 一种联盟链海量事务并发执行方法、装置及存储介质 Active CN116795850B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310646374.XA CN116795850B (zh) 2023-05-31 2023-05-31 一种联盟链海量事务并发执行方法、装置及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310646374.XA CN116795850B (zh) 2023-05-31 2023-05-31 一种联盟链海量事务并发执行方法、装置及存储介质

Publications (2)

Publication Number Publication Date
CN116795850A CN116795850A (zh) 2023-09-22
CN116795850B true CN116795850B (zh) 2024-04-12

Family

ID=88033985

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310646374.XA Active CN116795850B (zh) 2023-05-31 2023-05-31 一种联盟链海量事务并发执行方法、装置及存储介质

Country Status (1)

Country Link
CN (1) CN116795850B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998010356A1 (en) * 1996-09-09 1998-03-12 Design Intelligence, Inc. Automatic layout and formatting of content for a design in a medium
CN111581454A (zh) * 2020-04-27 2020-08-25 清华大学 基于深度图压缩算法的并行查询表现预测系统及方法
CN113076448A (zh) * 2021-04-28 2021-07-06 北京理工大学 一种基于极大团与强连通分量的社区发现方法
CN113419823A (zh) * 2021-06-22 2021-09-21 东北大学 一种适用于高并发事务的联盟链系统及其设计方法
CN114637892A (zh) * 2022-01-28 2022-06-17 中国科学院信息工程研究所 用于攻击调查和还原的系统日志依赖图的概要图生成方法
CN114817648A (zh) * 2022-05-12 2022-07-29 华中科技大学 一种高能效协同图计算方法及装置
CN115098882A (zh) * 2022-06-20 2022-09-23 山东大学 基于增量学习的本地差分隐私的多维数据发布方法及系统

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107464148A (zh) * 2017-08-23 2017-12-12 众安信息技术服务有限公司 一种基于联盟链的智能合约升级方法和系统
WO2020185988A1 (en) * 2019-03-14 2020-09-17 Yadong Li Distributed system generating rule compiler engine apparatuses, methods, systems and media
US11645120B2 (en) * 2021-02-09 2023-05-09 Nokia Solutions And Networks Oy Memory bandwidth allocation for multi-tenant FPGA cloud infrastructures

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998010356A1 (en) * 1996-09-09 1998-03-12 Design Intelligence, Inc. Automatic layout and formatting of content for a design in a medium
CN111581454A (zh) * 2020-04-27 2020-08-25 清华大学 基于深度图压缩算法的并行查询表现预测系统及方法
CN113076448A (zh) * 2021-04-28 2021-07-06 北京理工大学 一种基于极大团与强连通分量的社区发现方法
CN113419823A (zh) * 2021-06-22 2021-09-21 东北大学 一种适用于高并发事务的联盟链系统及其设计方法
CN114637892A (zh) * 2022-01-28 2022-06-17 中国科学院信息工程研究所 用于攻击调查和还原的系统日志依赖图的概要图生成方法
CN114817648A (zh) * 2022-05-12 2022-07-29 华中科技大学 一种高能效协同图计算方法及装置
CN115098882A (zh) * 2022-06-20 2022-09-23 山东大学 基于增量学习的本地差分隐私的多维数据发布方法及系统

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
A high-concurrency blockchain model for large-scale medical cohort data storage and sharing;Xiaolin Song等;《2022 IEEE International Conference on Bioinformatics and Biomedicine (BIBM)》;第1178-1184页 *
Graph Classification with Minimum DFS Code: Improving Graph Neural Network Expressivity;Jhalak Gupta等;《2021 IEEE International Conference on Big Data (Big Data)》;20220113;第5133-5142页 *
面向复杂资产的大规模区块链事务并行架构研究;宋啸林;《中国优秀硕士学位论文全文数据库信息科技辑》;20240115(第1期);第I138-655页 *

Also Published As

Publication number Publication date
CN116795850A (zh) 2023-09-22

Similar Documents

Publication Publication Date Title
JP7502393B2 (ja) ハイパーレッジャファブリックブロックチェーンにおいてsqlベースのリッチクエリをサポートするためのシステムおよび方法
Xu et al. SlimChain: Scaling blockchain transactions through off-chain storage and parallel processing
CN109246176B (zh) 软件定义网络中基于区块链的多控制器同步方法及装置
JP2022174127A (ja) 分散型元帳におけるdagベースのトランザクション処理方法およびシステム
WO2018176998A1 (zh) 数据存储方法及装置
CN108304260B (zh) 一种基于高性能云计算的虚拟化作业调度系统及其实现方法
CN111640017B (zh) 一种应用于联盟链跨链转账的交易正确性验证方法及装置
Hanai et al. Distributed edge partitioning for trillion-edge graphs
AU2018430192A1 (en) Blockchain system and method
CN113553375B (zh) 一种面向图式区块链的分片存储装置及方法
CN109493052B (zh) 一种基于主链加并行多子链的跨链合约系统
CN112835977B (zh) 一种基于区块链的数据库管理方法及系统
CN113806699B (zh) 一种云际计算环境中跨区块链身份验证方法及系统
US9246688B1 (en) Dataset licensing
CN113674095A (zh) 一种基于交易dag提高区块链吞吐量的方法
CN116668313A (zh) 基于分片的可拓展区块链网络模型
CN114298713B (zh) 一种联盟链分片方法、装置及存储介质
CN114157550B (zh) 一种基于无冲突事务合并的联盟区块链系统
Kim et al. Hybrid decentralized PBFT Blockchain Framework for OpenStack message queue
US20210064602A1 (en) Change service for shared database object
CN116795850B (zh) 一种联盟链海量事务并发执行方法、装置及存储介质
JP2022553701A (ja) コンセンサスメカニズムを有する分散ネットワーク
CN116743771A (zh) 区块链共识方法、装置、电子设备及计算机可读存储介质
CN111339089B (zh) 一种应用于区块链的数据存储与获取方法及装置
CN114463008A (zh) 基于并行计算模型的区块链交易执行方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant