本发明实施例涉及金融科技(fintech)领域,尤其涉及一种区块交易的执行方法及装置。
背景技术:
:随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技转变,但由于金融行业的安全性、实时性要求,也对技术提出的更高的要求。现阶段,为了提高交易的执行效率,区块链共识节点会尽量以并行方式执行区块中交易列表中的交易。在区块中交易列表中的交易执行前,区块链共识节点会对每笔交易进行分析,解析出交易所使用的公共资源。若两笔交易所使用的公共资源存在冲突(即两者中至少有一方需要改变公共资源的状态),则将它们按照一定顺序串行执行,否则将它们并行投入执行。具体地,区块链共识节点会将所有交易组织为一个有向无环图,图中的结点即为交易,当交易之间存在冲突时,区块链共识节点会在图中为两笔交易建立一条有向边,用于表示两笔交易之间存在依赖关系,以此构建出的有向无环图称为交易依赖图。其中,在建立交易依赖图的过程中要求按照一定顺序遍历交易列表,并且只能由遍历过程中排序靠后的交易依赖排序靠前的交易。然而,由于这种构建交易依赖图的方式对交易列表中交易的顺序比较敏感,因此不同的交易顺序会导致交易执行时的并行度也不相同,即,若交易顺序不适当,会导致交易执行的并行度减少,从而导致交易的执行效率低。综上,目前亟需一种区块交易的执行方法,用以降低交易顺序对交易执行时的并行度的影响,并可以确保交易的高效执行。技术实现要素:本发明实施例提供了一种区块交易的执行方法及装置,用以降低交易顺序对交易执行时的并行度的影响,并可以确保交易的高效执行。第一方面,本发明实施例提供了一种区块交易的执行方法,包括:按照区块中各交易的交易顺序,依次确定各不冲突交易集合;其中,任一不冲突交易集合中的各交易间不存在执行冲突,且任一不冲突交易集合是根据该集合中宽容度最高的交易构建的;所述宽容度用于表征该交易与所在区块中不冲突交易的数量;按照各不冲突交易集合的构建顺序,确定相邻的不冲突交易集合的依赖关系;根据各不冲突交易集合的依赖关系顺序执行,其中,各不冲突交易集合中的各交易并行执行。上述技术方案中,通过按照区块中各交易的交易顺序,依次确定各不冲突交易集合,并按照各不冲突交易集合的构建顺序,确定相邻的不冲突交易集合的依赖关系。再根据各不冲突交易集合的依赖关系顺序执行,其中,各不冲突交易集合中的各交易并行执行。由于将不存在执行冲突的交易归纳至同一不冲突交易集合中,因此可以避免交易顺序对交易执行时的并行度的影响,并由于任一不冲突交易集合是根据该集合中宽容度最高的交易构建的,如此可以扩展交易依赖图的宽度,且使得任一不冲突交易集合中的各交易可以完全并行执行,从而可以降低交易顺序对交易执行时的并行度的影响,并可以提高交易执行的并行度,有助于确保交易的高效执行。可选地,所述按照区块中各交易的交易顺序,依次确定各不冲突交易集合,包括:按照区块中各交易的交易顺序,将所述各交易依次存储到剩余交易记录中;针对所述剩余交易记录中的第一交易,构建所述第一交易的第一初始集合;所述第一初始集合中包括所述第一交易;所述第一交易为所述剩余交易记录中的首个交易;从所述剩余交易记录中确定出所述第一交易的第一候选集合;所述第一候选集合中任一交易与所述第一交易不存在执行冲突;根据所述第一候选集合中各交易的宽容度,确定可加入所述第一初始集合的交易,从而构建所述第一交易的不冲突交易集合;从所述剩余交易记录中删除所述第一交易的不冲突交易集合中的各交易,返回执行针对所述剩余交易记录中的第一交易,构建所述第一交易的第一初始集合,直至所述剩余交易记录中无交易。上述技术方案中,通过按照区块中各交易的交易顺序,将各交易依次存储到剩余交易记录中,并从剩余交易记录中确定出第一交易的第一候选集合。再基于第一候选集合中各交易的宽容度,可以快速准确地构建出第一交易的不冲突交易集合,如此可以使得交易顺序对交易执行时的并行度的影响很小,有助于确保交易的充分高效执行。可选地,所述根据所述第一候选集合中各交易的宽容度,确定可加入所述第一初始集合的交易,从而构建所述第一交易的不冲突交易集合,包括:确定所述第一候选集合中不存在宽容度高于所述第一交易的第二交易;将所述第一候选集合中的第三交易加入所述第一初始集合;所述第三交易的宽容度为所述第一候选集合中除所述第一交易外宽容度最高的交易;从所述第一候选集合中删除所述第三交易及所述第三交易的冲突交易之后,返回将所述第一候选集合中的第三交易加入所述第一初始集合的步骤,直至所述第一候选集合中无交易,从而构建所述第一交易的不冲突交易集合。上述技术方案中,通过在确定第一候选集合中不存在宽容度高于第一交易的第二交易时,将第一候选集合中除第一交易外宽容度最高的第三交易加入第一初始集合,以此构建出第一交易的不冲突交易集合。如此可以使得交易顺序对交易执行时的并行度的影响很小,有助于确保交易的充分高效执行。可选地,所述根据所述第一候选集合中各交易的宽容度,确定可加入所述第一初始集合的交易,从而构建所述第一交易的不冲突交易集合,包括:确定所述第一候选集合中存在宽容度高于所述第一交易的第二交易;将所述第一交易调整至所述剩余交易记录中的尾部,返回执行针对所述剩余交易记录中的第一交易,构建所述第一交易的第一初始集合的步骤。上述技术方案中,若确定第一候选集合中存在宽容度高于第一交易的第二交易,则将第一交易调整至剩余交易记录中的尾部,如此可以确保位于剩余交易记录中起始位置的交易顺利执行。可选地,所述从所述剩余交易记录中确定出所述第一交易的第一候选集合,包括:根据冲突交易字典中查找出与所述第一交易的第一冲突交易集合;若确定所述剩余交易列表中的第m交易不存在于所述第一冲突交易集合中,则将所述第m交易存储到所述第一候选集合中;所述第一候选集合中各交易的宽容度是根据交易宽容度字典确定的。上述技术方案中,通过根据冲突交易字典中查找出与第一交易的第一冲突交易集合,并基于第一冲突交易集合可以准确地确定出第一交易的第一候选集合,以便为后续确定第一交易的不冲突交易集合提供支持。可选地,根据以下方式确定所述交易宽容度字典和所述冲突交易字典:基于区块中各交易的交易顺序,在遍历到各交易中第n交易时,解析出所述第n交易的公共资源,并解析出位于所述第n交易之前的第r交易的公共资源;若确定所述第n交易的公共资源与所述第r交易的公共资源存在冲突,则对所述第n交易的宽容度进行处理,对所述第r交易的宽容度进行处理;并将所述第r交易存储到所述第n交易的冲突交易集合中,将所述第n交易存储到所述第r交易的冲突交易集合中;直至所述各交易全部被遍历,确定出所述交易宽容度字典,并确定出所述冲突交易字典。上述技术方案中,通过基于区块中各交易的交易顺序,在遍历到各交易中第n交易时,解析出第n交易的公共资源,并解析出位于第n交易之前的第r交易的公共资源。基于判断第n交易的公共资源与第r交易的公共资源是否存在冲突,来构建交易宽容度字典和冲突交易字典,以便为后续确定各交易的不冲突交易集合提供支持。可选地,按照各不冲突交易集合的构建顺序,确定相邻的不冲突交易集合的依赖关系,包括:针对第i 1个不冲突交易集合中的第j个交易,从冲突交易字典中查找出与所述第j个交易相冲突的第三冲突交易集合;若确定第i个不冲突交易集合中的第k个交易存在于所述第三冲突交易集合中,则建立所述第k个交易与所述第j个交易的有向边;所述第j个交易依赖于所述第k个交易。上述技术方案中,通过确定第i个不冲突交易集合中的第k个交易存在于第三冲突交易集合中,可以准确地建立第k个交易与第j个交易的有向边,为后续各交易的充分高效执行提供支持。第二方面,本发明实施例还提供了一种区块交易的执行装置,包括:确定单元,用于按照区块中各交易的交易顺序,依次确定各不冲突交易集合;其中,任一不冲突交易集合中的各交易间不存在执行冲突,且任一不冲突交易集合是根据该集合中宽容度最高的交易构建的;所述宽容度用于表征该交易与所在区块中不冲突交易的数量;处理单元,用于按照各不冲突交易集合的构建顺序,确定相邻的不冲突交易集合的依赖关系;根据各不冲突交易集合的依赖关系顺序执行,其中,各不冲突交易集合中的各交易并行执行。可选地,所述处理单元具体用于:按照区块中各交易的交易顺序,将所述各交易依次存储到剩余交易记录中;针对所述剩余交易记录中的第一交易,构建所述第一交易的第一初始集合;所述第一初始集合中包括所述第一交易;所述第一交易为所述剩余交易记录中的首个交易;从所述剩余交易记录中确定出所述第一交易的第一候选集合;所述第一候选集合中任一交易与所述第一交易不存在执行冲突;根据所述第一候选集合中各交易的宽容度,确定可加入所述第一初始集合的交易,从而构建所述第一交易的不冲突交易集合;从所述剩余交易记录中删除所述第一交易的不冲突交易集合中的各交易,返回执行针对所述剩余交易记录中的第一交易,构建所述第一交易的第一初始集合,直至所述剩余交易记录中无交易。可选地,所述处理单元具体用于:确定所述第一候选集合中不存在宽容度高于所述第一交易的第二交易;将所述第一候选集合中的第三交易加入所述第一初始集合;所述第三交易的宽容度为所述第一候选集合中除所述第一交易外宽容度最高的交易;从所述第一候选集合中删除所述第三交易及所述第三交易的冲突交易之后,返回将所述第一候选集合中的第三交易加入所述第一初始集合的步骤,直至所述第一候选集合中无交易,从而构建所述第一交易的不冲突交易集合。可选地,所述处理单元具体用于:确定所述第一候选集合中存在宽容度高于所述第一交易的第二交易;将所述第一交易调整至所述剩余交易记录中的尾部,返回执行针对所述剩余交易记录中的第一交易,构建所述第一交易的第一初始集合的步骤。可选地,所述处理单元具体用于:根据冲突交易字典中查找出与所述第一交易的第一冲突交易集合;若确定所述剩余交易列表中的第m交易不存在于所述第一冲突交易集合中,则将所述第m交易存储到所述第一候选集合中;所述第一候选集合中各交易的宽容度是根据交易宽容度字典确定的。可选地,所述处理单元具体用于:基于区块中各交易的交易顺序,在遍历到各交易中第n交易时,解析出所述第n交易的公共资源,并解析出位于所述第n交易之前的第r交易的公共资源;若确定所述第n交易的公共资源与所述第r交易的公共资源存在冲突,则对所述第n交易的宽容度进行处理,对所述第r交易的宽容度进行处理;并将所述第r交易存储到所述第n交易的冲突交易集合中,将所述第n交易存储到所述第r交易的冲突交易集合中;直至所述各交易全部被遍历,确定出所述交易宽容度字典,并确定出所述冲突交易字典。可选地,所述处理单元具体用于:针对第i 1个不冲突交易集合中的第j个交易,从冲突交易字典中查找出与所述第j个交易相冲突的第三冲突交易集合;若确定第i个不冲突交易集合中的第k个交易存在于所述第三冲突交易集合中,则建立所述第k个交易与所述第j个交易的有向边;所述第j个交易依赖于所述第k个交易。第三方面,本发明实施例提供一种计算设备,包括:存储器,用于存储计算机程序;处理器,用于调用所述存储器中存储的计算机程序,按照获得的程序执行区块交易的执行方法。第四方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行程序,所述计算机可执行程序用于使计算机执行区块交易的执行方法。附图说明为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本发明实施例提供的一种区块交易执行系统架构的示意图;图2为本发明实施例提供的一种区块交易的执行方法的流程示意图;图3为本发明实施例提供的一种现有技术的方案构建的最优交易依赖图的示意图;图4为本发明实施例提供的一种基于集合{e→a,c→d}构建的非最优交易依赖图的示意图;图5为本发明实施例提供的一种构建交易宽容度字典以及冲突交易字典的流程示意图;图6为本发明实施例提供的一种划分不冲突交易集合的流程示意图;图7为本发明实施例提供的一种建立具有交易依赖关系的有向边的流程示意图;图8为本发明实施例提供的一种利用本发明实施例的方案构建的最优交易依赖图的示意图;图9为本发明实施例提供的一种区块交易的执行装置的结构示意图。具体实施方式为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。下面首先对本发明实施例中涉及的部分用语进行解释说明,以便于本领域技术人员进行理解。(1)区块链:是一种由多个节点共同维护的及信任的分布式存储系统。区块链底层是由一系列区块组成的一条链,区块由一个包含元数据的区块头和紧跟其后的构成区块主体的一长串交易列表组成。每个块上除了记录本块的数据还会记录上一块的哈希值,通过这种方式组成链式的数据结构。(2)交易:在区块链中,任何操作(部署合约、调用合约接口等)都是通过发送交易的方式进行。交易由用户发起,并通过客户端发送至区块链节点。区块链节点在收到交易后,会将交易打包为区块并执行。(3)共识节点:可参与共识出块的节点,主要功能包括:将交易池内的交易打包成区块、执行交易、运行共识算法、并将达成共识的区块写入账本。(4)有向无环图:图由顶点和连接这些顶点的边所构成。每条边都带有从一个顶点指向另一个顶点的方向的图为有向图。有向图中的路径为一系列的边,系列中每条边的终点都是下一条边的起点。如果一条路径的起点是这条路径的终点,那么这条路径就是一个环。有向无环图即为没有环出现的有向图。(5)入度:在有向无环图中,节点(顶点)的入度是指进入该节点(顶点)的边的条数。(6)关键路径:若将要执行的任务组织为有向无环图中,则有向无环图中长度最长的那条路径叫做关键路径。任何关键路径上的任务的延迟(浮动)时间将直接影响所有任务的整体完成时间。(7)并行度:在计算机体系结构中,并行度是指数据或指令并行执行的最大数目。在区块链领域,交易执行的并行度是指在同一时刻能够并行执行的交易的最大数目。(8)启动式算法:一种基于直观或经验构造的算法,在可接受的花费(指计算时间和空间)下给出待解决组合优化问题每一个实例的一个可行解,该可行解与最优解的偏离程度一般不能被预计。为了便于理解本发明实施例,首先以图1中示出的系统架构为例说明适用于本发明实施例的区块交易执行系统架构。该区块交易执行系统架构可以应用于区块链中基于交易依赖图执行区块中交易列表中的各交易等,在实际应用场景中,本发明对此并不作限定。如图1所示,该系统架构可以为服务器100,包括处理器110、通信接口120和存储器130。其中,通信接口120用于与终端设备进行通信,收发该终端设备传输的信息,实现通信。处理器110是服务器100的控制中心,利用各种接口和线路连接整个服务器100的各个部分,通过运行或执行存储到存储器130内的软件程序/或模块,以及调用存储到存储器130内的数据,执行服务器100的各种功能和处理数据。可选地,处理器110可以包括一个或多个处理单元。存储器130可用于存储软件程序以及模块,处理器110通过运行存储到存储器130的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器130可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;存储数据区可存储根据业务处理所创建的数据等。此外,存储器130可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。需要说明的是,上述图1所示的结构仅是一种示例,本发明实施例对此不做限定。基于上述描述,图2示例性的示出了本发明实施例提供的一种区块交易的执行方法的流程,该流程可以由区块交易的执行装置执行。如图2所示,该流程具体包括:步骤201,按照区块中各交易的交易顺序,依次确定各不冲突交易集合。步骤202,按照各不冲突交易集合的构建顺序,确定相邻的不冲突交易集合的依赖关系。步骤203,根据各不冲突交易集合的依赖关系顺序执行。上述步骤201中,按照区块中各交易的交易顺序,依次确定各不冲突交易集合。即,按照区块中各交易的交易顺序,将各交易依次存储到剩余交易记录中,并针对剩余交易记录中的第一交易,构建第一交易的第一初始集合,以及从剩余交易记录中确定出第一交易的第一候选集合,第一候选集合中任一交易与第一交易不存在执行冲突,即,根据冲突交易字典中查找出与第一交易的第一冲突交易集合,若确定剩余交易列表中的第m交易不存在于第一冲突交易集合中,则将第m交易存储到第一候选集合中,第一候选集合中各交易的宽容度是根据交易宽容度字典确定的。再根据第一候选集合中各交易的宽容度,确定可加入第一初始集合的交易,从而构建第一交易的不冲突交易集合,并从剩余交易记录中删除第一交易的不冲突交易集合中的各交易,返回执行针对剩余交易记录中的第一交易,构建第一交易的第一初始集合,直至剩余交易记录中无交易。如此可以使得交易顺序对交易执行时的并行度的影响很小,有助于确保交易的充分高效执行。其中,任一不冲突交易集合中的各交易间不存在执行冲突,且任一不冲突交易集合是根据该集合中宽容度最高的交易构建的;宽容度用于表征该交易与所在区块中不冲突交易的数量;第一初始集合中包括第一交易;第一交易为剩余交易记录中的首个交易。其中,在构建第一交易的不冲突交易集合时,若确定第一候选集合中不存在宽容度高于第一交易的第二交易,则将第一候选集合中的第三交易加入第一初始集合,第三交易的宽容度为第一候选集合中除第一交易外宽容度最高的交易。再从第一候选集合中删除第三交易及第三交易的冲突交易之后,返回将第一候选集合中的第三交易加入第一初始集合的步骤,直至第一候选集合中无交易,从而构建第一交易的不冲突交易集合。若确定第一候选集合中存在宽容度高于第一交易的第二交易,则将第一交易调整至剩余交易记录中的尾部,返回执行针对剩余交易记录中的第一交易,构建第一交易的第一初始集合的步骤。如此可以使得交易顺序对交易执行时的并行度的影响很小,有助于确保交易的充分高效执行。此外,通过下述方式确定交易宽容度字典和冲突交易字典:基于区块中各交易的交易顺序,在遍历到各交易中第n交易时,解析出第n交易的公共资源,并解析出位于第n交易之前的第r交易的公共资源,若确定第n交易的公共资源与第r交易的公共资源存在冲突,则对第n交易的宽容度进行处理,对第r交易的宽容度进行处理,并将第r交易存储到第n交易的冲突交易集合中,将第n交易存储到第r交易的冲突交易集合中,直至各交易全部被遍历,确定出交易宽容度字典,并确定出冲突交易字典。如此基于判断第n交易的公共资源与第r交易的公共资源是否存在冲突,来构建交易宽容度字典和冲突交易字典,以便为后续确定各交易的不冲突交易集合提供支持。其中,公共资源可以表示为具有相同的转账交易对象,或者可以表示为具有相同的存储空间等。上述步骤202中,按照各不冲突交易集合的构建顺序,确定相邻的不冲突交易集合的依赖关系。即,针对不冲突交易集合列表中第i 1个不冲突交易集合中的第j个交易,从冲突交易字典中查找出与第j个交易相冲突的第三冲突交易集合,若确定不冲突交易集合列表中第i个不冲突交易集合中的第k个交易存在于第三冲突交易集合中,则建立第k个交易与第j个交易的有向边,以此构建出区块中各交易的最优交易依赖图,为后续各交易的充分高效执行提供支持。其中,第j个交易依赖于第k个交易。上述步骤203中,根据各不冲突交易集合的依赖关系顺序执行。其中,各不冲突交易集合中的各交易并行执行。即,在构建出区块中各交易的最优交易依赖图后,可以基于交易最优交易依赖图执行区块中的各交易,以使得区块中的各交易能够充分高效的执行。需要说明的是,本发明实施中交易依赖图的构建方法不受交易列表中各交易的交易顺序的影响,因此,不论交易列表中各交易的交易顺序如何变化,本发明实施例都能以可接受的计算开销构建出并行度尽可能高的交易依赖图。下面对本发明实施例的设计思路进行简要介绍:在区块链系统中,各共识节点对某一区块达成共识的唯一前提条件是各共识节点执行该区块的结果是一致的,即共识过程并不关心各共识节点的交易执行顺序,只需要各共识节点在执行完区块中的所有交易后,最终对区块链系统的状态影响相同即可。基于这一情况,本发明实施例在构造交易依赖图时是对交易进行重排,令所有无关的交易尽可能并行执行,从而无论交易列表中交易的排列顺序如何,本发明实施例均能构造出并发度最大的交易依赖图。在交易重排后,可能会让原本能够成功执行的交易失败,但也可能让原本能够失败的交易执行成功,因此相较于原始的执行顺序,重排后的交易执行顺序并不会带来劣势,且仍然可以满足区块链系统中达成共识的前提条件。即,本发明实施例将交易列表中的所有交易划分若干个集合,每个集合中的交易均不存在冲突,即每个集合中的交易可以完全并行执行。通过将不冲突交易尽量归纳至同一集合中,能够延展交易依赖图的宽度,从而可以提升交易依赖图的最大并发度,进而缩小交易依赖图的关键路径长度,使得在多核体系结构下,区块链节点能够以更快速度执行完所有的交易。示例性地,一笔交易一般可以归纳至多个不冲突交易集合中。例如,以图3左侧所示的原始交易列表为例进行说明(图3为采用现有技术构建出的最优交易依赖图;需要说明的是,若图3左侧所示的原始交易列表的顺序发生改变,则构建不出图3右侧所示的最优交易依赖图。比如,以交易列表中的交易顺序为交易a→b、交易a→c、交易c→d作为示例说明现有技术构建交易依赖图的方式对交易顺序敏感,按照现有技术的构建方式,交易依赖图的执行顺序则会按照交易a→b先执行,再执行交易a→c,然后执行交易c→d的顺序进行,如果将交易列表中交易a→c和交易c→d的顺序调换,交易列表中的交易顺序变为交易a→b、交易c→d、交易a→c,则会使得交易a→b和交易c→d并行执行,并在并行执行完毕后,再执行交易a→c。由此可以看出,现有技术构建交易依赖图的方式对交易顺序敏感),转账交易c→d可以归纳于集合{a→b,c→d,e→f},也可以归纳于集合{e→a,c→d},然而,若是选择将转账交易c→d归纳于{e→a,c→d},则根据图4可知,这种选择构建出的交易依赖图的最大并行度为2,相比于图3可知,图4中交易依赖图的最大并行度降低,使得这种选择下的交易执行效率也降低。因此可以看出,将交易归纳至最优的不冲突交易集合中对交易依赖图的构建极为重要。此外,本发明实施例为交易列表中每笔交易定义了一个宽容度,一笔交易的宽容度即是与该笔交易没有冲突的交易的数目。例如,继续以图3左侧所示的原始交易列表为例进行宽容度的描述,然后计算出图3左侧所示的原始交易列表中每笔交易的宽容度,则原始交易列表的交易宽容度表可以如表1所示。表1转账交易宽容度a→b3c→d4e→f2d→e2a→f2e→a1基于表1可知,若一笔交易的宽容度越高,则能和它组成不冲突交易集合的交易越多。基于这种思路,在基于启动式算法求解某笔交易所在的最优不冲突交易集合时,首先将该最优不冲突交易集合初始化为仅包含该交易,随后不断从与该最优不冲突交易集合中的交易不冲突的剩余交易中挑选宽容度最高的交易扩充该最优不冲突交易集合,直到无交易与该最优不冲突交易集合不冲突为止。例如,基于启动式算法求解转账交易c→d所在的最优不冲突集合的步骤如下:a、初始化该最优不冲突交易集合为{c→d},此时不冲突交易包括a→b、e→f、e→a、a→f。b、通过查询交易宽容度表(表1)可知,不冲突交易中宽容度最大的是a→b,因此将该集合扩展为{c→d,a→b},此时剩余交易中与该最优不冲突交易集合不冲突的交易为e→f。c、由于只剩余一笔不冲突交易,因此直接将该最优不冲突交易集合扩展为{c→d,a→b,e→f},此时剩余交易中不再存在与该最优不冲突交易集合不冲突的交易。d、启动式算法结束,结果表明应将转账交易c→d归纳至集合{c→d,a→b,e→f}中。本发明实施例将交易列表中的交易划分为若干个不冲突交易的集合后,再顺序遍历这些集合,在集合与集合的交易间建立用于表示依赖的关系的有向边,并规定只能由后序集合中的交易依赖前序集合中的交易,从而可以保证交易并行执行时的正确性,且最后生成的交易依赖图不会有环。需要说明的是,交易依赖图中前序交易执行完成后,依赖于该交易的后续交易的入度减1,而入度为0的交易可以立即投入运行。当同一时刻存在多个入度为0的交易时,便能并行执行多个交易。有鉴于此,下面对本发明实施例中区块交易的执行的实施过程进行具体描述。step1:构建交易宽容度字典以及冲突交易字典。参考图5,图5为本发明实施例提供的一种构建交易宽容度字典以及冲突交易字典的流程示意图。通过获取区块中交易列表中的各交易,并初始化交易宽容度字典以及初始化冲突交易字典,再基于解析出的每笔交易所使用的公共资源来构建交易宽容度字典以及冲突交易字典。其中,构建交易宽容度字典以及冲突交易字典的具体过程为:(1)从区块中读入长度为n的交易列表s,使用记法si表示s中第i笔交易。(2)初始化交易宽容度字典t,可通过t直接查询某笔交易的宽容度,初始时每笔交易的宽容度都为n-1。(3)初始化冲突交易字典r,可通过r直接查询与某笔交易相冲突的交易的集合。其中,r中每个元素都是一个交易集合,初始时每笔交易的冲突交易集合都为空。(4)初始化变量i=1。(5)检查i是否大于等于n。若是,则跳转至(17);否则跳转至(6)。(6)解析交易si所使用的公共资源。(7)初始化变量j=0。(8)检查j是否大于等于i。若是,则跳转至(16);否则跳转至(9)。(9)解析交易sj所使用的公共资源;(10)检查交易sj所使用的公共资源与交易si所使用的公共资源是否存在冲突。若是,则跳转至(11);否则跳转至(15)。(11)将t[sj]减一。(12)将t[si]减一。(13)将sj添加至r[si]中。(14)将si添加至r[sj]中。(15)j=j 1,并跳转至(8)。(16)i=i 1,并跳转至(5)。(17)结束。step2:划分不冲突交易集合。参考图6,图6为本发明实施例提供的一种划分不冲突交易集合的流程示意图。通过基于步骤step1构建出的交易宽容度字典以及冲突交易字典,对区块中交易列表中的各交易进行处理,确定出不冲突交易集合列表。其中,划分不冲突交易集合的具体过程为:(1)读入step1中构建的交易宽容度字典t。(2)读入step1中构建的冲突交易字典r。(3)读入区块中的交易列表s。(4)初始化不冲突交易集合列表u,列表中每个元素都是一个交易集合,初始时u为空。(5)初始化剩余交易列表v,列表中每一个元素都是一个交易,初始时v为空。(6)将s中所有的交易按序添加至剩余交易列表v中。(7)检查v是否为空。若是,则跳转至(25);否则跳转至(8)。(8)读入v中第一笔交易x。此处所说的第一笔交易x是指位于剩余交易列表v中起始位置的交易。(9)从冲突交易字典r中查询出与交易x相冲突的交易的集合。(10)初始化不冲突交易候选集合c,集合中每个元素都是一个交易,初始时c为空。(11)初始化变量i=1。(12)检查i是否大于等于v的长度。若是,则跳转至(16);否则跳转至(13)。(13)检查vi是否位于与交易x相冲突的交易集合中。若是,则跳转至(15);否则跳转至(14)。(14)将vi添加至不冲突交易候选集合c中。(15)i=i 1,跳转至(12)。(16)初始化最优不冲突交易集合o,集合中每个元素都是一个交易,初始时最优不冲突交易集合o中仅包含交易x。(17)检查不冲突交易候选集合c是否为空。若是,则跳转至(23);否则跳转至(18)。(18)从交易宽容度字典t中查询出不冲突交易候选集合c中宽容度最高的交易y。(19)检查交易x的宽容度是否大于等于交易y的宽容度。若是,则跳转至(20);否则,将交易x调整到剩余列表v的尾部,并跳转至(8)。(20)将交易y加入至最优不冲突交易集合o中。(21)从冲突交易字典r中查询出与交易y相冲突的交易的集合。(22)从不冲突交易候选集合c中删除与交易y相冲突的交易,然后跳转至(17)。(23)将最优不冲突交易集合o中所有交易从剩余交易列表v中删除。(24)将最优不冲突交易集合o添加至不冲突交易集合列表u中,然后跳转至(7)。(25)结束。step3:建立具有交易依赖关系的有向边。参考图7,图7为本发明实施例提供的一种建立具有交易依赖关系的有向边的流程示意图。通过基于步骤step1构建出的冲突交易字典以及step2构建出的不冲突交易集合列表,对不冲突交易集合列表中的各不冲突交易集合进行处理,建立具有交易依赖关系的有向边。其中,建立具有交易依赖关系的有向边的具体过程为:(1)读入步骤step1中构建的冲突交易字典r。(2)读入步骤step2中构建的不冲突交易集合列表u,使用记法ui表示u中第i个不冲突交易集合。(3)初始化依赖边集合e,初始时e为空。(4)初始化变量i为0。(5)检查i 1是否大于等于u的长度。若是,则跳转至(17);否则跳转至(6)。(6)读入ui及ui 1。(7)初始化变量j为0。(8)检查j是否大于等于ui 1的长度。若是则跳转至(16);否则跳转至(9)。(9)从冲突交易字典r中查询出与交易ui 1[j]相冲突的交易的集合。(10)初始化变量k为0。(11)检查k是否大于等于ui的长度。若是,则跳转至(15);否则跳转至(12);(12)检查交易ui[k]是否在与交易ui 1[j]的冲突交易集合中。若是。则转至(13);否则转至(14)。(13)在依赖边集合e中新增一条记录(ui[k],ui 1[j]),该记录表示交易ui 1[j]依赖于交易ui[k]。(14)k=k 1,并跳转至(11)。(15)j=j 1,并跳转至(8)。(16)i=i 1,并跳转至(5)。(17)结束。step4:区块交易的执行。在根据步骤step1到步骤step3构建出最优交易依赖图后,可以基于最优交易依赖图执行区块中的各交易。其中,步骤step1到步骤step3构建最优交易依赖图的方式对区块中交易列表中各交易的顺序无感,即,不论区块中交易列表中各交易的顺序如何排列,步骤step1到步骤step3都能构建出交易执行并行度尽可能高的交易依赖图,而不会因为交易顺序的改变导致交易执行并行度的减少,从而导致交易执行的效率降低。示例性地,继续以图3左侧所示的原始交易列表为例对构建交易依赖图进行描述。执行步骤step2,将原始交易列表中各交易按照各交易的交易顺序存储到剩余交易列表v中。读入第一笔交易a→b,从冲突字典中查询出与交易a→b相冲突的交易集合为{a→b,a→f,e→a},根据冲突交易集合{a→f,e→a},确定出交易a→b的不冲突交易候选集合为{c→d,e→f,d→e}。然后构建出一个仅包含交易a→b的初始最优不冲突交易集合,并通过查询交易宽容度字典(表1)可知,不冲突交易候选集合中宽容度最高的交易是交易c→d,且宽容度为4。由于交易a→b的宽容度(为3)小于交易c→d的宽容度(为4),因此将交易a→b调整到剩余列表v的尾部。在对交易a→b处理完后,开始读取剩余列表v中的第一笔交易c→d,从冲突字典中查询出与交易c→d相冲突的交易集合为{d→e},根据冲突交易集合{d→e},确定出交易c→d的不冲突交易候选集合为{a→b,e→f,e→a,a→f}。然后构建出一个仅包含交易c→d的初始最优不冲突交易集合,并通过查询交易宽容度(表1)可知,不冲突交易候选集合中宽容度最高的交易是交易a→b,且宽容度为3。由于交易c→d的宽容度(为4)大于交易a→b的宽容度(为3),因此将交易a→b加入到交易c→d的初始最优不冲突交易集合中,即最优不冲突交易集合为{c→d,a→b}。然后从冲突交易字典中查询出与交易a→b相冲突的交易的集合为{a→b,a→f,e→a},并从不冲突交易候选集合{a→b,e→f,e→a,a→f}中删除与交易a→b相冲突的交易,即,交易c→d的不冲突交易候选集合变为{e→f}。之后继续检查不冲突交易候选集合是否为空,并在确定不为空时,由于交易c→d的宽容度(为4)大于交易e→f的宽容度(为2),因此将交易e→f加入到交易c→d的初始最优不冲突交易集合中,即交易c→d的最优不冲突交易集合为{c→d,a→b,e→f}。此时不冲突交易候选集合为空,则将交易c→d的最优不冲突交易集合{c→d,a→b,e→f}中的所有交易从剩余列表中删除,并将交易c→d的最优不冲突交易集合{c→d,a→b,e→f}作为集合u1加入到不冲突交易集合列表u中,此时剩余列表变为{d→e,a→f,e→a}。接下来开始读取剩余列表v中的第一笔交易d→e,从冲突字典中查询出与交易d→e相冲突的交易集合为{c→d,e→f,e→a},根据冲突交易集合{c→d,e→f,e→a},确定出交易d→e的不冲突交易候选集合为{a→f}。然后构建出一个仅包含交易d→e的初始最优不冲突交易集合,并通过查询交易宽容度(表1)可知,不冲突交易候选集合中宽容度最高的交易是交易a→f,且宽容度为2。由于交易d→e的宽容度(为2)等于交易a→f的宽容度(为2),因此将交易a→f加入到交易d→e的初始最优不冲突交易集合中,即最优不冲突交易集合为{d→e,a→f}。此时不冲突交易候选集合为空,则将交易d→e的最优不冲突交易集合{d→e,a→f}中的所有交易从剩余列表中删除,并将交易d→e的最优不冲突交易集合{d→e,a→f}作为集合u2加入到不冲突交易集合列表u中,此时剩余列表变为{e→a},交易e→a单独作为一个最优不冲突交易集合u3加入到不冲突交易集合列表u中,此时不冲突交易集合列表u为{{c→d,a→b,e→f},{d→e,a→f},{e→a}}。最后按照步骤step3的执行步骤,根据不冲突交易集合列表u{{c→d,a→b,e→f},{d→e,a→f},{e→a}}和不冲突交易字典,构建出如图8所示的最优交易依赖图,然后基于该最优交易依赖图执行区块中的各交易。其中,需要说明的是,不论原始交易列表中各交易的交易顺序如何改变,都能构建出最优交易依赖图。但是现有技术中由于在建立交易依赖图的过程中要求按照一定顺序遍历交易列表,并且只能由遍历过程中排序靠后的交易依赖排序靠前的交易。因此,原始交易列表的顺序一旦发生改变,则构建不出如图3右侧所示的最优交易依赖图。上述实施例表明,通过按照区块中各交易的交易顺序,依次确定各不冲突交易集合,并按照各不冲突交易集合的构建顺序,确定相邻的不冲突交易集合的依赖关系。再根据各不冲突交易集合的依赖关系顺序执行,其中,各不冲突交易集合中的各交易并行执行。由于将不存在执行冲突的交易归纳至同一不冲突交易集合中,因此可以避免交易顺序对交易执行时的并行度的影响,并由于任一不冲突交易集合是根据该集合中宽容度最高的交易构建的,如此可以扩展交易依赖图的宽度,且使得任一不冲突交易集合中的各交易可以完全并行执行,从而可以降低交易顺序对交易执行时的并行度的影响,并可以提高交易执行的并行度,有助于确保交易的高效执行。基于相同的技术构思,图9示例性的示出了本发明实施例提供的一种区块交易的执行装置,该装置可以执行区块交易的执行方法的流程。如图9所示,该装置包括:确定单元901,用于按照区块中各交易的交易顺序,依次确定各不冲突交易集合;其中,任一不冲突交易集合中的各交易间不存在执行冲突,且任一不冲突交易集合是根据该集合中宽容度最高的交易构建的;所述宽容度用于表征该交易与所在区块中不冲突交易的数量;处理单元902,用于按照各不冲突交易集合的构建顺序,确定相邻的不冲突交易集合的依赖关系;根据各不冲突交易集合的依赖关系顺序执行,其中,各不冲突交易集合中的各交易并行执行。可选地,所述处理单元902具体用于:按照区块中各交易的交易顺序,将所述各交易依次存储到剩余交易记录中;针对所述剩余交易记录中的第一交易,构建所述第一交易的第一初始集合;所述第一初始集合中包括所述第一交易;所述第一交易为所述剩余交易记录中的首个交易;从所述剩余交易记录中确定出所述第一交易的第一候选集合;所述第一候选集合中任一交易与所述第一交易不存在执行冲突;根据所述第一候选集合中各交易的宽容度,确定可加入所述第一初始集合的交易,从而构建所述第一交易的不冲突交易集合;从所述剩余交易记录中删除所述第一交易的不冲突交易集合中的各交易,返回执行针对所述剩余交易记录中的第一交易,构建所述第一交易的第一初始集合,直至所述剩余交易记录中无交易。可选地,所述处理单元902具体用于:确定所述第一候选集合中不存在宽容度高于所述第一交易的第二交易;将所述第一候选集合中的第三交易加入所述第一初始集合;所述第三交易的宽容度为所述第一候选集合中除所述第一交易外宽容度最高的交易;从所述第一候选集合中删除所述第三交易及所述第三交易的冲突交易之后,返回将所述第一候选集合中的第三交易加入所述第一初始集合的步骤,直至所述第一候选集合中无交易,从而构建所述第一交易的不冲突交易集合。可选地,所述处理单元902具体用于:确定所述第一候选集合中存在宽容度高于所述第一交易的第二交易;将所述第一交易调整至所述剩余交易记录中的尾部,返回执行针对所述剩余交易记录中的第一交易,构建所述第一交易的第一初始集合的步骤。可选地,所述处理单元902具体用于:根据冲突交易字典中查找出与所述第一交易的第一冲突交易集合;若确定所述剩余交易列表中的第m交易不存在于所述第一冲突交易集合中,则将所述第m交易存储到所述第一候选集合中;所述第一候选集合中各交易的宽容度是根据交易宽容度字典确定的。可选地,所述处理单元902具体用于:基于区块中各交易的交易顺序,在遍历到各交易中第n交易时,解析出所述第n交易的公共资源,并解析出位于所述第n交易之前的第r交易的公共资源;若确定所述第n交易的公共资源与所述第r交易的公共资源存在冲突,则对所述第n交易的宽容度进行处理,对所述第r交易的宽容度进行处理;并将所述第r交易存储到所述第n交易的冲突交易集合中,将所述第n交易存储到所述第r交易的冲突交易集合中;直至所述各交易全部被遍历,确定出所述交易宽容度字典,并确定出所述冲突交易字典。可选地,所述处理单元902具体用于:针对第i 1个不冲突交易集合中的第j个交易,从冲突交易字典中查找出与所述第j个交易相冲突的第三冲突交易集合;若确定第i个不冲突交易集合中的第k个交易存在于所述第三冲突交易集合中,则建立所述第k个交易与所述第j个交易的有向边;所述第j个交易依赖于所述第k个交易。基于相同的技术构思,本发明实施例提供一种计算设备,包括:存储器,用于存储计算机程序;处理器,用于调用所述存储器中存储的计算机程序,按照获得的程序执行区块交易的执行方法。基于相同的技术构思,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机可执行程序,所述计算机可执行程序用于使计算机执行区块交易的执行方法。本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。本发明是参照根据本发明的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储到能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储到该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。当前第1页1 2 3 
技术特征:1.一种区块交易的执行方法,其特征在于,包括:
按照区块中各交易的交易顺序,依次确定各不冲突交易集合;其中,任一不冲突交易集合中的各交易间不存在执行冲突,且任一不冲突交易集合是根据该集合中宽容度最高的交易构建的;所述宽容度用于表征该交易与所在区块中不冲突交易的数量;
按照各不冲突交易集合的构建顺序,确定相邻的不冲突交易集合的依赖关系;
根据各不冲突交易集合的依赖关系顺序执行,其中,各不冲突交易集合中的各交易并行执行。
2.如权利要求1所述的方法,其特征在于,所述按照区块中各交易的交易顺序,依次确定各不冲突交易集合,包括:
按照区块中各交易的交易顺序,将所述各交易依次存储到剩余交易记录中;
针对所述剩余交易记录中的第一交易,构建所述第一交易的第一初始集合;所述第一初始集合中包括所述第一交易;所述第一交易为所述剩余交易记录中的首个交易;
从所述剩余交易记录中确定出所述第一交易的第一候选集合;所述第一候选集合中任一交易与所述第一交易不存在执行冲突;
根据所述第一候选集合中各交易的宽容度,确定可加入所述第一初始集合的交易,从而构建所述第一交易的不冲突交易集合;
从所述剩余交易记录中删除所述第一交易的不冲突交易集合中的各交易,返回执行针对所述剩余交易记录中的第一交易,构建所述第一交易的第一初始集合,直至所述剩余交易记录中无交易。
3.如权利要求2所述的方法,其特征在于,所述根据所述第一候选集合中各交易的宽容度,确定可加入所述第一初始集合的交易,从而构建所述第一交易的不冲突交易集合,包括:
确定所述第一候选集合中不存在宽容度高于所述第一交易的第二交易;
将所述第一候选集合中的第三交易加入所述第一初始集合;所述第三交易的宽容度为所述第一候选集合中除所述第一交易外宽容度最高的交易;
从所述第一候选集合中删除所述第三交易及所述第三交易的冲突交易之后,返回将所述第一候选集合中的第三交易加入所述第一初始集合的步骤,直至所述第一候选集合中无交易,从而构建所述第一交易的不冲突交易集合。
4.如权利要求2所述的方法,其特征在于,所述根据所述第一候选集合中各交易的宽容度,确定可加入所述第一初始集合的交易,从而构建所述第一交易的不冲突交易集合,包括:
确定所述第一候选集合中存在宽容度高于所述第一交易的第二交易;
将所述第一交易调整至所述剩余交易记录中的尾部,返回执行针对所述剩余交易记录中的第一交易,构建所述第一交易的第一初始集合的步骤。
5.如权利要求2所述的方法,其特征在于,所述从所述剩余交易记录中确定出所述第一交易的第一候选集合,包括:
根据冲突交易字典中查找出与所述第一交易的第一冲突交易集合;
若确定所述剩余交易列表中的第m交易不存在于所述第一冲突交易集合中,则将所述第m交易存储到所述第一候选集合中;
所述第一候选集合中各交易的宽容度是根据交易宽容度字典确定的。
6.如权利要求5所述的方法,其特征在于,根据以下方式确定所述交易宽容度字典和所述冲突交易字典:
基于区块中各交易的交易顺序,在遍历到各交易中第n交易时,解析出所述第n交易的公共资源,并解析出位于所述第n交易之前的第r交易的公共资源;
若确定所述第n交易的公共资源与所述第r交易的公共资源存在冲突,则对所述第n交易的宽容度进行处理,对所述第r交易的宽容度进行处理;并将所述第r交易存储到所述第n交易的冲突交易集合中,将所述第n交易存储到所述第r交易的冲突交易集合中;直至所述各交易全部被遍历,确定出所述交易宽容度字典,并确定出所述冲突交易字典。
7.如权利要求1至6任一项所述的方法,其特征在于,按照各不冲突交易集合的构建顺序,确定相邻的不冲突交易集合的依赖关系,包括:
针对第i 1个不冲突交易集合中的第j个交易,从冲突交易字典中查找出与所述第j个交易相冲突的第三冲突交易集合;
若确定第i个不冲突交易集合中的第k个交易存在于所述第三冲突交易集合中,则建立所述第k个交易与所述第j个交易的有向边;所述第j个交易依赖于所述第k个交易。
8.一种区块交易的执行装置,其特征在于,包括:
确定单元,用于按照区块中各交易的交易顺序,依次确定各不冲突交易集合;其中,任一不冲突交易集合中的各交易间不存在执行冲突,且任一不冲突交易集合是根据该集合中宽容度最高的交易构建的;所述宽容度用于表征该交易与所在区块中不冲突交易的数量;
处理单元,用于按照各不冲突交易集合的构建顺序,确定相邻的不冲突交易集合的依赖关系;根据各不冲突交易集合的依赖关系顺序执行,其中,各不冲突交易集合中的各交易并行执行。
9.一种计算设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于调用所述存储器中存储的计算机程序,按照获得的程序执行权利要求1至7任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机可执行程序,所述计算机可执行程序用于使计算机执行权利要求1至7任一项所述的方法。
技术总结本发明实施例提供了一种区块交易的执行方法及装置,该方法包括按照区块中各交易的交易顺序,依次确定各不冲突交易集合,按照各不冲突交易集合的构建顺序,确定相邻的不冲突交易集合的依赖关系,根据各不冲突交易集合的依赖关系顺序执行。由于将不存在执行冲突的交易归纳至同一不冲突交易集合中,因此可以避免交易顺序对交易并行度的影响,并由于任一不冲突交易集合是根据该集合中宽容度最高的交易构建的,如此可以扩展交易依赖图的宽度,且使得任一不冲突交易集合中的各交易可以完全并行执行,从而可以降低交易顺序对交易执行时的并行度的影响,并可以提高交易执行的并行度,有助于确保交易的高效执行。
技术研发人员:李陈希;李辉忠;张开翔;范瑞彬
受保护的技术使用者:深圳前海微众银行股份有限公司
技术研发日:2020.12.08
技术公布日:2021.03.12