交易分发方法、节点和区块链系统与流程

未命名 08-14 阅读:136 评论:0


1.本说明书实施例属于区块链技术领域,尤其涉及一种交易分发方法、节点和区块链系统。


背景技术:

2.区块链(blockchain)是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链系统中按照时间顺序将数据区块以顺序相连的方式组合成链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。用户可以通过区块链节点参与实现区块链的相关事务,例如,区块链系统中分别对应不同用户的多个区块链节点,可以基于同态加密、零知识证明等隐私技术针对某一节点的私有数据进行安全多方计算(secure multi-party computation,smpc)。再例如,基于区块链网络可以在不同用户账户之间实现转账;再例如,还可以基于区块链网络发行数字画作、数字头像、gif等数字藏品对应的nft(non-fungible token,非同质化代币),以便nft所承载的数字藏品的所有权能够在区块链网络的用户之间流通,从而产生对应于数字藏品的价值。
3.在相关技术中,区块链系统中的节点在执行任一区块中的各笔交易时,为加快该区块的整体执行速度(即减少该区块中全部交易的整体执行耗时),会对所述各笔交易进行分组以得到多个交易组,并以交易组为单位进行调度分发并执行。但是,在服务化场景下,节点内部的交易执行过程通常由多个服务进程(如缓存进程、控制进程、计算进程等)相互配合完成。该方案中划分得到的交易分组往往数量较多,使得节点内部不同服务进程之间的交互次数较多,由于不同进程之间交互的时间成本通常较高,所以该方案较多的交互次数导致交易的整体执行效率较低,还有待提升。


技术实现要素:

4.本说明书的目的在于提供一种交易分发方法、节点和区块链系统。
5.第一方面,提供了一种交易分发方法,应用于区块链系统中的第一节点,第一节点中包含控制进程和n个计算进程,所述方法包括:
6.所述控制进程获取m1个基础交易组,所述m1个基础交易组基于待执行的多笔交易各自的预执行读写集对所述多笔交易进行分组得到,m1》1;
7.所述控制进程将所述m1个基础交易组合并为m2个聚合交易组,并将所述m2个聚合交易组分别发送至所述n个计算进程中相应的计算进程,n》0且m1》m2;
8.所述n个计算进程并行执行接收到的聚合交易组中的各笔交易。
9.第二方面,提供了一种区块链系统中的第一节点,第一节点中包含控制进程和n个计算进程,其中,
10.所述控制进程用于获取m1个基础交易组,所述m1个基础交易组基于待执行的多笔交易各自的预执行读写集对所述多笔交易进行分组得到,m1》1;以及,将所述m1个基础交易组合并为m2个聚合交易组,并将所述m2个聚合交易组分别发送至所述n个计算进程中相应
的计算进程,n》0且m1》m2;
11.所述n个计算进程用于并行执行接收到的聚合交易组中的各笔交易。
12.第三方面,提供了一种区块链系统,包括第一节点和第二节点,第一节点中包含控制进程和n个计算进程,其中:
13.第二节点用于向第一节点发送m1个基础交易组,所述m1个基础交易组基于待执行的多笔交易各自的预执行读写集对所述多笔交易进行分组得到;或者,向第一节点发送待执行的多笔交易及其各自的预执行读写集,以使第一节点基于所述预执行读写集对所述多笔交易进行分组得到m1个基础交易组;其中,m1》1;
14.第一节点中的所述控制进程用于将获取到的所述m1个基础交易组合并为m2个聚合交易组,并将所述m2个聚合交易组分别发送至所述n个计算进程中相应的计算进程,n》0且m1》m2,第一节点中的所述n个计算进程用于并行执行接收到的聚合交易组中的各笔交易。
15.根据本说明书一个或多个实施例的第四方面,提出了一种电子设备,包括:
16.处理器;
17.用于存储处理器可执行指令的存储器;
18.其中,所述处理器通过运行所述可执行指令以实现如第一方面中任一项所述的方法。
19.根据本说明书一个或多个实施例的第五方面,提出了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如第一方面中任一项所述方法的步骤。
20.通过上述实施例,第一节点中的控制进程获取基于待执行的多笔交易各自的预执行读写集对所述多笔交易进行分组得到的m1个基础交易组,m1》1,即获取到多个(至少两个)基础交易组。进而,所述控制进程将所述m1个基础交易组合并为m2个聚合交易组,并将所述m2个聚合交易组分别发送至所述n个计算进程中相应的计算进程,并由所述n个计算进程并行执行接收到的聚合交易组中的各笔交易,n》0且m1》m2。
21.可以理解的是,因为n》0且m1》m2,所以控制进程将m1个基础交易组合并为m2个聚合交易组,本质是通过合并基础交易组的方式得到数量更少的聚合交易组。由于在后续的交易调度和执行过程中均以合并之后的聚合交易组为单位进行,所以减少了需要调度分发的交易组的数量,即减少了调度分发的次数。从而,该方式可以减少不同服务进程之间需要交互的次数,有效提升了交易的整体执行效率。
附图说明
22.为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
23.图1是一示例性实施例提供的一种区块链系统的示意图。
24.图2是一示例性实施例提供的一种交易分发方法的流程图。
25.图3是一示例性实施例提供的一种区块链系统中任意两个节点的结构示意图。
26.图4是一示例性实施例提供的一种交易分组、分发及执行过程的流程图。
27.图5是一示例性实施例提供的一种交易之间依赖关系的示意图。
28.图6是一示例性实施例提供的一种区块链系统中的第一节点的结构示意图。
29.图7是一示例性实施例提供的一种设备的结构示意图。
具体实施方式
30.为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
31.图1是一示例性实施例提供的一种区块链系统的示意图。如图1所示,区块链系统是通过多个节点(node)来建立的分布式网络,其包含任意两个节点间通过点对点(peer-to-peer,p2p)网络实现在应用层的通信连接,例如其包含的节点n1~节点n5中的任意两个节点间均可通过p2p网络实现在应用层的通信连接。区块链系统利用链式区块结构构造的去中心化(或称为多中心化)的分布式账本,保存于分布式的区块链系统中的每个节点(或大多节点上,如共识节点)上,因此区块链系统需要解决去中心化(或多中心化)的多个节点上各自的账本数据的一致性和正确性的问题。鉴于此,区块链系统的每个节点上都运行着区块链程序,在一定容错需求的设计下,通过共识(consensus)机制保证所有忠诚节点具有相同的交易,从而保证所有忠诚节点对相同交易的执行结果一致,将交易打包成区块并基于相同交易的执行结果更新世界状态。其中当前主流的共识机制包括但不限于:工作量证明(proof of work,pow)、股权证明(proof of stake,pos)、实用拜占庭容错(practical byzantine fault tolerance,pbft)算法,蜜獾拜占庭容错(honeybadgerbft)算法等等。
32.在相关技术中,区块链系统中的节点在执行任一区块中的各笔交易时,为加快该区块的整体执行速度(即减少该区块中全部交易的整体执行耗时),会对所述各笔交易进行分组以得到多个交易组,并以交易组为单位进行调度、分发。但是,在服务化场景下,节点内部的交易执行过程通常由多个服务进程(如缓存进程、控制进程、计算进程等)相互配合完成。该方案中划分得到的交易分组往往数量较多,使得节点内部不同服务进程之间的交互次数较多,由于不同进程之间交互的时间成本通常较高,所以该方案较多的交互次数导致交易的整体执行效率较低,还有待提升。
33.为解决相关技术中存在的上述问题,本说明书提出一种交易分发方法,将分组得到的一定数量(即下述m1)的基础交易组合并为数量更少(即下述m2)的聚合交易组,从而在后续处理过程中即可以聚合交易组为单位进行调度、分发和执行处理,有效减少服务进程之间的交互次数。下面结合附图对本说明书的交易分发方案进行详细说明。
34.图2是一示例性实施例提供的一种交易分发方法的流程图。所述方法应用于区块链系统中的第一节点。所述第一节点可以为区块链系统中的任一区块链节点,示例性的,第一节点可以为发起共识提议的节点(如主节点),或者也可以为该节点之外的其他区块链节点(如从节点)。无论所述区块链系统中的主节点还是从节点,各个节点均可实现为任何具有计算/处理能力的装置、平台、设备或设备集群。其中,第一节点中可以包含多个进程,如
包含控制进程和n(n为大于1的正整数)个计算进程。如图2所示,所述方法可以包括下述步骤202-206。
35.步骤202,所述控制进程获取m1个基础交易组,所述m1个基础交易组基于待执行的多笔交易各自的预执行读写集对所述多笔交易进行分组得到,m1》1。
36.如前所述,第一节点可以为所述区块链系统中的主节点或者从节点。第一节点在所述区块链系统中扮演的角色不同,该节点获取待执行的多笔交易以及各笔交易的预执行信息的方式也有所不同。
37.以图1所示区块链系统中的任意两个节点:节点n1和节点n2为例,两节点中可以分别运行多个进程以提供多种服务。两节点的结构示意图可参见图3,节点n1和节点n2各自运行用于提供接入服务的接入进程(如节点n1中运行的接入进程1和节点n2中运行的接入进程2,下述进程编号与此类似,不再赘述)、用于提供缓存服务的缓存进程、用于提供预执行服务的预执行进程、用于提供网络服务的网络进程、用于提供共识服务的共识进程、用于提供区块管理服务的控制进程和用于提供存储服务的存储进程。此外,作为从节点的节点n1还可以运行用于提供计算服务的多个计算进程,如计算进程11、计算进程12和计算进程13。
38.其中,本说明书所述进程是指应用中具有一定独立功能的程序关于一个数据集合的一次运行活动,即进程是计算机中通过由cpu顺序执行应用程序中的指令而进行的一个过程,而每个进程在创建时被分配自己的内存地址空间。任一节点中的多个进程可以为多个计算设备或虚拟计算节点中的多个进程。此外需要说明的是,本说明书实施例提供的方案并不局限于主从架构的区块链系统;换言之,本方案所述的节点n1和节点n2可以为所述区块链系统中的任意两个区块链节点。
39.不妨假设所述节点n2和节点n1分别为所述区块链系统中的主节点和从节点。任一节点中的接入进程可以用于接收来自用户设备的交易,并调用缓存进程将其接收的交易加入待处理的交易队列中进行缓存。
40.节点n2的预执行进程2可以调用缓存进程2来实现从待处理的交易队列中按顺序读取其缓存的交易并对该交易进行验证,例如验证用户设备对该交易的签名,并将经验证的交易返回给缓存进程2。此外,节点n2还可以通过其网络进程2向其余节点的网络进程广播其缓存进程2中存储的经验证的交易;从而,节点n1通过其网络进程1接收的来自节点n2的交易,可以由其缓存进程1缓存加入到待处理的交易队列中。由此节点n1的缓存进程1通过其内存缓存的待处理的交易队列,不仅包括通过其接入进程1接收的交易,还包括通过其网络进程1接收的来自其他节点(如节点n2)的交易。
41.节点n2的预执行进程2也可以调用缓存进程2从待处理的交易队列中按顺序读取其缓存的交易,并至少对来自与节点n2连接的用户设备的交易进行验证。此外节点n2的预执行进程2还可以对其从缓存进程2按顺序接收的交易进行预执行以得到该交易的预执行信息,其中任一交易的预执行信息可以包括预执行读集(对应于交易执行过程中涉及的数据读取操作)、预执行写集(对应于交易执行过程中涉及的数据写入操作)、交易耗时(用于表征预执行该交易消耗的时长,该时长可视为实际执行该交易需要的时长)、资源消费信息(用于表征执行该交易所需消耗的数字资源/计算资源的数量)等。其中,本说明书所述的预执行读写集可以包括所述预执行读集和/或所述预执行写集。进而节点n2的预执行进程2还可以在其每完成对一批交易的预执行后,将该批交易的预执行信息返回给缓存进程2以缓
存到待共识的交易队列中进行缓存。
42.需要说明的是,所述控制进程和n个计算进程可以为分立的概念,这些进程在逻辑上归属于第一节点。其中,第一节点的节点程序(用于实现节点的控制逻辑)可以部署在任一物理设备中,而所述控制进程和n个计算进程中的任一进程既可以部署于该物理设备中,也可以部署于区别于该物理设备的其他物理设备中(如各个进程可以通过集群形式部署在不同的云服务器中)。无论何种部署方式,上述不同进程之间均可以视为“远程”,不同进程之间可以通过相应的进程间通信技术实现信息和数据交互,如rpc(remote procedure call,远程过程调用)技术、pipe(管道)技术、消息队列(message queue)技术等,本说明书并不对此进行限制。
43.在第一节点为所述区块链系统中的从节点的情况下,第一节点可以通过多种方式获取所述待执行的m1个基础交易组。下面以节点n1为例进行说明。
44.在一实施例中,控制进程可以从主节点接收待执行的多笔交易,并通过相应方式获取各笔交易的预执行信息,进而基于所述预执行信息中的预执行读写集对所述多笔交易进行分组得到m1个基础交易组。其中,所述多笔交易和相应的预执行信息可以通过下述方式获取:
45.例如,控制进程可以从主节点发起且已通过共识的提议中获取多笔交易以及各笔交易的预执行信息。例如,在完成对交易的预执行后,节点n2可以针对其中的多笔交易发起提议,以便由区块链系统中的多个共识节点(如所述主节点和多个从节点)参与针对该提议的共识,并在共识通过后将所述多笔交易打包成区块上链。其中,节点n2发起的所述提议中可以包含所述多笔交易(即步骤202所述的待执行的多笔交易)以及各笔交易的预执行信息,其中任一交易的预执行信息至少包括该交易的预执行读写集和交易耗时。具体的,节点n2可以通过网络进程2将所述提议传递(如广播)至区块链系统中的其他节点,如自身对应的各个从节点。相应的,节点n1在通过网络进程1接收到所述共识提议后,可以通过共识进程1参与针对该提议的共识过程。具体共识过程可以参见相关技术中的记载,此处不再赘述。因为所述提议中包含多笔交易和各笔交易的预执行信息,所以该提议通过同时即表明所述多笔交易及其预执行信息通过共识,所以在所述提议被区块链系统中的各个共识节点共识通过的情况下,节点n1可以通过控制进程1直接从已通过共识的所述提议中获取交易及其预执行信息。
46.当然,作为主节点的节点n2也有可能是作恶节点,如可能被病毒入侵或可能被其他设备劫持等,因此提议中包含的各笔交易的预执行信息可能并非其实际预执行信息,如某一交易的交易耗时可能并非其真实耗时(遭到篡改)等。对此,节点n1也可以在从所述提议中获取到各笔交易的预执行信息的情况下,在使用自身包含的预执行进程1对各笔交易进行预执行以得到相应的预执行信息,并将该预执行信息与从所述提议中获取的预执行信息进行比较:对于任一交易而言,节点n1可以在提议中包含的该交易的预执行信息与节点n1预执行该交易得到的预执行信息一致的情况下认可所述预执行信息。
47.再例如,第一节点中还可以包含预执行进程,此时所述控制进程可以从主节点发起且已通过共识的提议中获取多笔交易,并调用所述预执行进程对获取到的各笔交易进行预执行以得到相应的预执行信息。例如,作为主节点的节点n2可以在发起的所述提议中包含所述多笔交易而不包含相应的预执行信息。在这种情况下,作为从节点的节点n1可以在
所述提议共识通过后,通过控制进程1从已通过共识的所述提议中获取待执行的多笔交易,并调用预执行进程1对获取到的所述交易进行预执行以得到相应的预执行信息。在该方式下,发起提议的节点n2可以不对所述多笔交易进行预执行。换言之,节点n2可以通过缓存进程2从待处理的交易队列中获取待共识的多笔交易,并直接发起针对这些交易的提议,由各个从节点在提议通过后分别预执行所述多笔交易,从而一定程度上减轻主节点发起提议前的准备工作,降低其提议发起过程的工作量。另外,因为该方案中各笔交易的预执行信息由节点n1自身的预执行进程1对交易进行预执行得到,所以节点n1自然认可该信息的真实性。
48.如图4所示,基于所述多笔交易各自的预执行读写集,控制进程可以按照读写集分析算法确定各笔交易之间的依赖关系,并据此划分得到m1个基础交易组。示例性的,所述m1个基础交易组可以包括tx-group 1、tx-group 2、tx-group 3、tx-group 4
……
tx-group m1。
49.在另一实施例中,也可以由主节点在预执行所述多笔交易完成后,根据各笔交易相应的预执行读写集对所述多笔交易进行分组得到m1个基础交易组,然后将所述m1个基础交易组同步至所述第一节点。主节点可以将所述多笔交易以及所述m1个基础交易组分别对应的分组信息(用于记录各个基础交易组中分别包含哪些交易)一并发送至第一节点,从而第一节点即可根据上述分组信息确定m1个基础交易组。或者,也可以将其中至少一笔交易打包处理成相应的基础交易组,并将该基础交易组作为一个整体发送至第一节点,不再赘述。
50.在一实施例中,所述m1个基础交易组中包含的全部交易可以属于同一区块,此时,本方案可以提升同一区块内全部交易的整体执行效率。当然,所述全部交易也可以属于不同区块,不再赘述。
51.在一实施例中,根据交易组内各笔交易之间的依赖关系不同,所述m1个基础交易组可以包括下述两类中的至少之一。对于第一类基础交易组,其中任一第一类基础交易组包含的各笔交易之间存在连续的依赖关系,且所述各笔交易与所述m1个基础交易组中其他基础交易组包含的交易之间不存在依赖关系。可见,对于待执行的多笔交易,其中存在连续依赖关系的多笔交易可以共同构成一个第一类基础交易组。如图5中的(a)所示,交易tx1~tx8之间存在连续的依赖关系;如图5中的(b)所示,交易tx9~tx12之间存在连续的依赖关系,而且tx1~tx8中的任一交易与tx9~tx12中的任一交易之间均不存在依赖关系。基于此,交易tx1~tx8可以构成一个第一类基础交易组,交易tx9~tx12可以构成另一个第一类基础交易组。需要说明的是,所述“连续依赖关系”,可以理解为多笔交易之间的依赖关系是连续传递的,如(a)中的tx2依赖于tx1且tx4依赖于tx2,此时可以视为tx4间接依赖于tx1。另外,所述m1个基础交易组中可以包括至少一个第一类基础交易组。
52.对于第二类基础交易组,所述m1个基础交易组中可以存在多个第二类基础交易组,其中每一第二类基础交易组包含的交易属于同一单向执行链路且(所述多个第二类基础交易组中)存在至少两个第二类基础交易组分别对应的单向指令链路具有相同起点或相同终点。如图5的(a)所示,tx1和tx2属于单向执行链路“l1:tx1

tx2

tx4”、tx3属于单向执行链路“l2:tx3

tx4”,且所述l1与l2具有相同终点tx4,因此l1中除所述共同终点之外的交易(即tx1和tx2)构成一个第二类基础交易组、l1中除所述共同终点之外的交易(即tx3)构成另一个第二类基础交易组。与此类似的,tx5属于单向执行链路“l3:tx4

tx5”、
tx6和tx7属于单向执行链路“l4:tx4

tx6

tx7”、tx8属于单向执行链路“l5:tx4

tx8”,且所述l3、l4和l5具有相同起点tx4,因此l3中除所述共同起点之外的交易(即tx5)构成一个第二类基础交易组、l4中除所述共同起点之外的交易(即tx6和tx7)构成另一个第二类基础交易组、l5中除所述共同起点之外的交易(即tx8)构成有一个第二类基础交易组。另外,作为前述l1与l2的共同终点以及前述l3、l4与l5的共同起点的交易tx4,也可以单独构成一个第二类基础交易组。
53.据此,对于存在连续依赖关系的多笔交易,可以按照下述方式将其拆分成多个第一类基础交易组:若所述多笔交易中的任一交易同时属于多个单向执行链路,则将该交易划分为一个基础交易组,如(a)中的交易tx4;反之,若所述多笔交易中的任一交易仅属于一个单向执行链路,则将该交易所处单向执行链路上(包含该交易在内的)除了与其他单向执行链路之间的共同起点或共同终点之外的全部交易划分为一个基础交易组,如前述tx1和tx2,或者前述tx3等。
54.其中,对于任意两笔交易txi和txj,若txi先于txj执行,则在txj的执行过程需要读取或写入被txi写入的某一变量的情况下,可以确定txj依赖于txi(即txi被txj所依赖)。若将两交易绘制于图5中,则txi与txj之间的箭头将由txi指向txj(即箭头的起点为txi,终点为txj),如txi为tx1时,txj为tx2等,其他与此类似,不再一一赘述。
55.步骤204,所述控制进程将所述m1个基础交易组合并为m2个聚合交易组,并将所述m2个聚合交易组分别发送至所述n个计算进程中相应的计算进程,所述n和m2为正整数且所述n》0且m1》m2。
56.需要说明的是,将基础交易组合并为聚合交易组的过程中,并不会增加或减少交易的总量。其中,任一聚合交易组可以由至少一个基础交易组“合并”得到:在将多个基础交易组合并为一个聚合交易组的情况下,该聚合交易组中包含所述多个基础交易组所包含的全部交易;特殊的,在由一个基础交易组合并为聚合交易组的情况下,该聚合交易组可以与合并前的基础交易组完全相同,此时可以不存在“合并”这一实际操作。可以理解的是,在合并之前的m1个基础交易组中,每一基础交易组包含至少一笔交易且各个基础交易组中的交易互不相同;类似的,在合并之后的m2个聚合交易组中,每一聚合交易组包含至少两笔交易且各个聚合交易组中的交易互不相同。
57.在一实施例中,控制进程可以按照下述至少之一的规则将所述m1个基础交易组合并为m2个聚合交易组。例如,在任一聚合交易组中包含多个基础交易组的情况下,所述多个基础交易组的基础预期耗时指标的差值可以不大于第一指标阈值,其中任一基础交易组的基础预期耗时指标用于表征执行所述任一基础交易组中全部交易需要的总时长。示例性的,在将m1个基础交易组合并为m2个聚合交易组的过程中,可以按照由大到小或由小到大的顺序对各个基础交易组的基础预期耗时指标进行排序,并根据所述排序结果将基础预期耗时指标较为接近(如差值可以不大于第一指标阈值)的多个基础交易组合并为一个聚合交易组。通过该方式,可以使得同一聚合交易组中的各个基础交易组在后续实际执行阶段的实际耗时较为接近,在将该聚合交易组中的各个基础交易组分发至不同的计算进程执行的情况下,可以尽量使得各个基础交易组的结束时刻较为接近,从而使聚合交易组在实际执行阶段的总耗时最短。
58.或者,所述m2个聚合交易组的聚合预期耗时指标的差值也可以不大于第二指标阈
值,其中任一聚合交易组的聚合预期耗时指标用于表征执行所述任一聚合交易组中全部交易(即该聚合交易组中的全部基础交易组包含的全部交易)需要的总时长。其中,任一聚合交易组的聚合预期耗时指标可以为该聚合交易组中各个基础交易组的基础预期耗时指标之和(对应于串行执行各个基础交易组),或者也可以为其中各个基础交易组的基础预期耗时指标中的最大值(对应于并行执行各个基础交易组)。示例性的,在将m1个基础交易组合并为m2个聚合交易组的过程中,可以计算各个基础交易组的多种组合方式分别对应的聚合预期耗时指标,并将其中各个聚合交易组的聚合预期耗时指标之间的整体差值(如标准差等)最小(如差值不大于第二指标阈值)的组合确定为最终的合并结果。通过该方式,可以确保各个聚合交易组中的全部交易在后续实际执行阶段的整体耗时(下称该聚合交易组的实际执行耗时)较为接近,从而在将该各个聚合交易组分发至不同的计算进程执行的情况下,可以尽量使各个聚合交易组的结束时刻较为接近,从而使全部聚合交易组在实际执行阶段的总耗时最短。
59.当然,上述两种规则也可以同时满足,以使m2个聚合交易组的聚合预期耗时指标较为接近的同时,任一聚合交易组内各个基础交易组的基础预期耗时指标也较为接近,从而有助于在后续实际并行执行阶段实现更好的同步效果。
60.其中,所述控制进程可以通过下述之一的方式确定任一基础交易组的基础预期耗时指标。例如,在所述任一基础交易组仅包含一笔交易的情况下,可以将该笔交易的交易耗时或交易费用作为所述任一基础交易组的基础预期耗时指标。再例如,在所述任一基础交易组包含多笔交易的情况下,可以根据所述任一基础交易组中多笔交易的依赖关系以及各笔交易的交易耗时确定所述任一基础交易组的基础预期耗时指标。又例如,在所述任一基础交易组包含多笔交易的情况下,也可以根据所述任一基础交易组中多笔交易的依赖关系以及各笔交易的交易费用确定所述任一基础交易组的基础预期耗时指标。
61.可见,上述基础预期耗时指标的计算过程中,可以将基础交易组中各笔交易在预执行阶段的交易耗时或者其交易费用作为相应的交易预期耗时指标。可以理解的是,鉴于任一交易的预执行阶段和执行阶段的具体操作通常相同,因此耗时通常相同或接近,所以可以将该交易在预执行阶段的交易耗时作为其交易预期耗时指标。而鉴于无论是预执行阶段的交易耗时还是实际执行阶段的交易耗时,通常都与该交易执行阶段的执行的指令有关,且指令的执行总时间通常与交易费用(即gas)呈正相关,所以任一交易的交易预期耗时指标也可以为该交易的交易费用(该费用可以在预执行过程中统计得到)。
62.上述合并操作完成后,得到m2个聚合交易组。如图4所示,基础交易组tx_group 1和tx_group 2被合并为一个聚合交易组parallel_group 1;类似的,tx_group 3和tx_group 4被合并为一个parallel_grou2;tx_groupm1被作为独立的parallel_groupm2。
63.在m2》n的情况下,所述控制进程在将所述m2个聚合交易组分别发送至所述n个计算进程中相应的计算进程时,可以根据各个聚合交易组的聚合预期耗时指标将所述m2个聚合交易组分别发送至所述n个计算进程中相应的计算进程,使所述n个计算进程的任务预期耗时指标趋于一致;其中,所述n个计算进程中各个计算进程接收到的聚合交易分组互不相同,任一计算进程的任务预期耗时指标用于表征该计算进程执行自身所接收聚合交易分组中的全部交易需要的总时长。通过该方式,可以尽量使得各个计算进程执行自身接收到的聚合交易分组中全部交易所需的总时长(即各个计算进程的任务实际耗时)较为接近,进而
使得各个计算进程在并行执行聚合交易分组(中的全部交易)时,尽量在较为接近的时刻结束执行,从而减少全部m2个聚合交易组的执行总耗时。其中,所述控制进程可以采用贪心算法、动态规划算法等较为成熟的调度算法对所述m1个基础交易组进行分组和调度处理,从而将m1个基础交易组分成相对较少的m2个聚合交易组分别调度至相应的计算进程,以尽量避免调度混乱或出错。另外,基于前述贪心算法和动态规划算法等调度算法的原理可知,利用这类调度算法进行分组和调度,可以在减少调度次数的同时,尽量使各个计算进程的任务实际耗时趋于一致,即均匀化各个任务实际耗时,使得多个计算进程在并行执行同一区块中不同交易时能够实现较好的同步性。
64.在一实施例中,所述控制进程在将任一聚合交易组发送至相应的计算进程时,可以将所述任一聚合交易组包含的多个基础交易组记录在一条调度消息中,并将该调度消息发送至所述任一聚合交易组对应的计算进程。通过该方式,可以实现对聚合交易组中多个基础交易组的批量调度,即将所述多个基础交易组作为聚合交易组这一整体进行调度,以充分减少调度次数。
65.其中,所述调度消息可以为远程过程调用rpc消息,该消息可以用于不同进程(如控制进程与相应的计算进程)之间的数据交互。该调度方式尤其适用于所述控制进程与计算进程被部署于(即运行于)不同物理设备中的场景,可以实现高效且准确的数据传输与交易调度,有助于提升调度和分发效率。
66.如图4所示,parallel_group 1被作为一个整体调度至计算进程computing_service1;类似的,parallel_group 2被作为一个整体调度至计算进程computing_service2,parallel_group m2被作为一个整体调度至计算进程computing_service m2。当然,图4仅是示意性说明,parallel_group 1和parallel_group 2也可以被调度至同一计算进程,如均被调度至computing_service1等,不再赘述。
67.步骤206,所述n个计算进程并行执行接收到的聚合交易组中的各笔交易。
68.对于所述n个计算进程中的每一计算进程而言,其在接收到控制进程发送的至少一个聚合交易组的情况下,可以开始执行这些聚合交易组中(各个基础交易组所包含)的各笔交易。从而所述n个计算进程可以并行执行自身接收到的交易,而各个计算进程的执行过程是相互独立、互不影响的。
69.在一实施例中,任一计算进程在执行所述任一聚合交易组中的各笔交易时,可以先批量读取所述任一聚合交易组中的各笔交易分别对应的状态数据,再基于读取到的状态数据执行所述各笔交易。例如,针对自身接收到的任一聚合交易组中(各个基础交易组所包含)的各笔交易,任一计算进程可以根据各笔交易的预执行读写集批量读取相应的状态数据(即所述各笔交易的实际执行阶段所需的状态数据),并利用这些状态数据实际执行所述各笔交易。其中,所述预执行读写集可以以key-value键值对的形式记录在第一节点的缓存进程中,此时所述计算进程可以从缓存进程读取各个key,并到相应的存储空间(如第一节点所处节点设备的本地数据库)批量读取相应的状态数据作为value置于所述缓存中的合适位置,以便后续实际执行时可以从缓存中快速读取这些状态数据。可以理解的是,通过批量预读取各笔交易的状态数据,在实际执行聚合交易组中各笔交易的过程中无需临时读取状态数据,从而可以大幅减少存储交互耗时,进而确保该聚合交易组的任务实际耗时小于任务预期耗时,有助于更准确地确保该场景下各个计算进程尽量同时结束计算。
70.任一交易的执行耗时通常由指令执行耗时和存储交互耗时构成,所述指令执行耗时即由该交易的交易费用所决定,而所述存储交互耗时由执行过程中与存储有关的交互过程(如前述读写集对应的数据读取和写入过程)所决定,显然,由于实际执行交易组中各笔交易之前会预读取相应的状态数据,所以预执行和实际执行分别对应的存储交互耗时并不相同,而这会导致任一聚合交易组的分组预期耗时与其分组实际耗时不同(通常情况下,分组预期耗时大于分组实际耗时)。可见,在计算进程实际执行交易组中的各笔交易之前会预读取这些交易所需的状态数据的场景下,相对于使用预执行阶段的交易耗时作为预期耗时指标,使用交易费用(或分组费用)作为预期耗时指标估算的基础预期耗时指标和聚合预期耗时指标更准确。基于此,在第一节点中的计算进程实际执行聚合交易组中的多笔交易之前会批量预读取状态数据的情况下,在前述实施例中,可以采用相关交易的交易费用计算基础预期耗时指标和聚合预期耗时指标,以提升指标的准确度以及后续聚合交易组并行执行的同步程度。
71.另外,在任一计算进程包含多个线程,且其接收到的任一聚合交易组中包含多个基础交易组的情况下,所述多个基础交易组可以分别由多个线程并行执行,以提升整体执行效率。如图4所示,针对接收到的parallel_group 1(包含tx_group 1和tx_group 2),computing_service1在批量读取其中各笔交易分别对应的状态数据(即pre read keyvalue,预读取键值对)后,可以由不同的线程分别执行tx_group 1和tx_group 2,其他聚合交易组的执行过程与此类似,不再赘述。
72.在另一实施例中,任一计算进程执行所述任一聚合交易组中的各笔交易时,可以按照所述任一聚合交易组中的各笔交易之间的依赖关系执行所述各笔交易;其中,对于第一交易及其所依赖的第二交易,可以在执行第二交易完成后再执行第一交易;而对于依赖于同一交易或被同一交易所依赖的第三交易和第四交易,若第三交易和第四交易互相不依赖,则可以通过不同的线程并发执行第三交易和第四交易。
73.如图5所示,不妨假设tx1~tx8构成一个基础交易组并被合并至一个聚合交易组中,若第一交易和第二交易分别为tx2和tx1,此时,接收到该聚合交易组的计算进程可以先执行交易tx1再执行交易tx2;类似的第一交易和第二交易也可以分别为交易tx4和交易tx3,此时,接收到该聚合交易组的计算进程可以先执行交易tx3再执行交易tx4。第三交易可以为交易tx5、第四交易可以为交易tx8,对此,接收到该聚合交易组的计算进程可以通过线程thread1执行交易tx5、同时通过thread2并行执行交易tx8等。通过该方式,不仅能够确保存在依赖关系的各笔交易被按序执行,从而保证各笔交易的执行结果的准确性,也能够通过并发执行第三交易和第四交易的方式提升不存在依赖关系的各笔交易的整体执行效率。
74.在一实施例中,任一计算进程在执行任一聚合交易组中的各笔交易完毕后,可以向所述控制进程返回相应的通知消息;相应的,若所述控制进程在所述任一聚合交易分组对应的执行期限内未接收到所述任一计算进程返回的所述通知消息,则可以将所述任一聚合交易分组重新发送至当前时刻的其他空闲计算进程执行。其中,所述执行期限可以根据所述任一交易组的分组费用按照预设规则计算得到,如在分组费用为100gas的情况下,执行期限为500ms;在分组费用为200gas的情况下,执行期限为1s等,不再赘述。而且,所述执行期限可以不小于所述任一聚合交易分组的聚合预期耗时指标所表征的时长(即执行该交
易组中各笔交易所需的理论总时长)。所述通知消息可以包含所述任一交易组中各笔交易的执行结果或交易回执(receipt)等信息。
75.通过上述实施例,第一节点中的控制进程获取基于待执行的多笔交易各自的预执行读写集对所述多笔交易进行分组得到的m1个基础交易组,m1》1,即获取到多个(至少两个)基础交易组。进而,所述控制进程将所述m1个基础交易组合并为m2个聚合交易组,并将所述m2个聚合交易组分别发送至所述n个计算进程中相应的计算进程,以由所述n个计算进程并行执行接收到的聚合交易组中的各笔交易,n》0且m1》m2。
76.可以理解的是,因为n》0且m1》m2,所以控制进程将m1个基础交易组合并为m2个聚合交易组,本质是通过合并基础交易组的方式得到数量更少的聚合交易组。由于在后续的交易调度和执行过程中均以合并之后的聚合交易组为单位进行,所以减少了需要调度分发的交易组的数量,即减少了调度分发的次数。从而,该方式可以减少不同服务进程之间需要交互的次数,有效提升了交易的整体执行效率。
77.对应于前述实施例,本说明书实施例还提出一种区块链系统中的第一节点,第一节点中包含控制进程和n个计算进程,其中,
78.所述控制进程用于获取m1个基础交易组,所述m1个基础交易组基于待执行的多笔交易各自的预执行读写集对所述多笔交易进行分组得到,m1》1;以及,将所述m1个基础交易组合并为m2个聚合交易组,并将所述m2个聚合交易组分别发送至所述n个计算进程中相应的计算进程,n》0且m1》m2;
79.所述n个计算进程用于并行执行接收到的聚合交易组中的各笔交易。
80.可选的,所述n个计算进程中的任一计算进程具体用于:
81.批量读取所述任一聚合交易组中的各笔交易分别对应的状态数据,并基于读取到的状态数据执行所述各笔交易。
82.所述第一节点和第二节点可以分别为所述区块链系统中的从节点和主节点,相应的交易分发过程的具体实现可以参见前述实施例的记载,此处不再赘述。
83.对应于前述实施例,本说明书实施例还提出一种区块链系统,包括第一节点和第二节点,第一节点中包含控制进程和n个计算进程,其中:
84.第二节点用于向第一节点发送m1个基础交易组,所述m1个基础交易组基于待执行的多笔交易各自的预执行读写集对所述多笔交易进行分组得到;或者,向第一节点发送待执行的多笔交易及其各自的预执行读写集,以使第一节点基于所述预执行读写集对所述多笔交易进行分组得到m1个基础交易组;其中,m1》1;
85.第一节点中的所述控制进程用于将获取到的所述m1个基础交易组合并为m2个聚合交易组,并将所述m2个聚合交易组分别发送至所述n个计算进程中相应的计算进程,n》0且m1》m2,第一节点中的所述n个计算进程用于并行执行接收到的聚合交易组中的各笔交易。
86.图6是一示例性实施例提供的一种区块链系统中的第一节点的结构示意图。如图6所示,所述第一节点中包含控制进程62和n个计算进程64,其中,
87.所述控制进程62用于获取m1个基础交易组,所述m1个基础交易组基于待执行的多笔交易各自的预执行读写集对所述多笔交易进行分组得到,m1》1;以及,将所述m1个基础交易组合并为m2个聚合交易组,并将所述m2个聚合交易组分别发送至所述n个计算进程中相
应的计算进程,n》0且m1》m2;
88.所述n个计算进程64用于并行执行接收到的聚合交易组中的各笔交易。
89.图7是一示例性实施例提供的一种设备的结构示意图。请参考图7,在硬件层面,该设备包括处理器702、内部总线704、网络接口706、内存708以及非易失性存储器710,当然还可能包括其他服务所需要的硬件。本说明书一个或多个实施例可以基于软件方式来实现,比如由处理器702从非易失性存储器710中读取对应的计算机程序到内存708中然后运行。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
90.虽然本说明书一个或多个实施例提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。例如若使用到第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
91.本说明书是参照根据本说明书实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
92.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
93.这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
94.在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
95.内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。内存是计算机可读介质的示例。
96.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储、石墨烯存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
97.本领域技术人员应明白,本说明书一个或多个实施例可提供为方法、系统或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
98.本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
99.本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
100.以上所述仅为本说明书一个或多个实施例的实施例而已,并不用于限制本本说明书一个或多个实施例。对于本领域技术人员来说,本说明书一个或多个实施例可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在权利要求范围之内。

技术特征:
1.一种交易分发方法,应用于区块链系统中的第一节点,第一节点中包含控制进程和n个计算进程,所述方法包括:所述控制进程获取m1个基础交易组,所述m1个基础交易组基于待执行的多笔交易各自的预执行读写集对所述多笔交易进行分组得到,m1>1;所述控制进程将所述m1个基础交易组合并为m2个聚合交易组,并将所述m2个聚合交易组分别发送至所述n个计算进程中相应的计算进程,n>0且m1>m2;所述n个计算进程并行执行接收到的聚合交易组中的各笔交易。2.根据权利要求1所述的方法,所述控制进程按照下述规则将所述m1个基础交易组合并为m2个聚合交易组:在任一聚合交易组中包含多个基础交易组的情况下,所述多个基础交易组的基础预期耗时指标的差值不大于第一指标阈值,其中任一基础交易组的基础预期耗时指标用于表征执行所述任一基础交易组中全部交易需要的总时长;和/或,所述m2个聚合交易组的聚合预期耗时指标的差值不大于第二指标阈值,其中任一聚合交易组的聚合预期耗时指标用于表征执行所述任一聚合交易组中全部交易需要的总时长。3.根据权利要求2所述的方法,所述控制进程确定任一基础交易组的基础预期耗时指标,包括下述之一:在所述任一基础交易组仅包含一笔交易的情况下,将该笔交易的交易耗时或交易费用作为所述任一基础交易组的基础预期耗时指标;在所述任一基础交易组包含多笔交易的情况下,根据所述任一基础交易组中多笔交易的依赖关系以及各笔交易的交易耗时确定所述任一基础交易组的基础预期耗时指标;在所述任一基础交易组包含多笔交易的情况下,根据所述任一基础交易组中多笔交易的依赖关系以及各笔交易的交易费用确定所述任一基础交易组的基础预期耗时指标。4.根据权利要求2所述的方法,在m2>n的情况下,所述控制进程将所述m2个聚合交易组分别发送至所述n个计算进程中相应的计算进程,包括:根据各个聚合交易组的聚合预期耗时指标将所述m2个聚合交易组分别发送至所述n个计算进程中相应的计算进程,使所述n个计算进程的任务预期耗时指标趋于一致;其中,各个计算进程接收到的聚合交易分组互不相同,任一计算进程的任务预期耗时指标用于表征该计算进程执行自身所接收聚合交易分组中的全部交易需要的总时长。5.根据权利要求2所述的方法,还包括:任一计算进程在执行任一聚合交易分组中的各笔交易完毕后,向所述控制进程返回相应的通知消息;若所述控制进程在所述任一聚合交易分组对应的执行期限内未接收到所述任一计算进程返回的所述通知消息,则将所述任一聚合交易分组重新发送至当前时刻的其他空闲计算进程执行,所述执行期限不小于所述任一聚合交易分组的聚合预期耗时指标所表征的时长。6.根据权利要求1所述的方法,所述m1个基础交易组中存在至少一个第一类基础交易组,其中任一第一类基础交易组包含的交易与所述m1个基础交易组中其他基础交易组包含的交易之间不存在依赖关系;和/或,
所述m1个基础交易组中存在多个第二类基础交易组,其中每一第二类基础交易组包含的交易属于同一单向执行链路且存在至少两个第二类基础交易组分别对应的单向指令链路具有相同起点或相同终点。7.根据权利要求1所述的方法,所述控制进程将任一聚合交易组发送至相应的计算进程,包括:将所述任一聚合交易组包含的多个基础交易组记录在一条调度消息中,并将该调度消息发送至所述任一聚合交易组对应的计算进程。8.根据权利要求7所述的方法,所述调度消息为远程过程调用rpc消息。9.根据权利要求1所述的方法,任一计算进程执行所述任一聚合交易组中的各笔交易,包括:批量读取所述任一聚合交易组中的各笔交易分别对应的状态数据,并基于读取到的状态数据执行所述各笔交易。10.根据权利要求1所述的方法,任一计算进程执行所述任一聚合交易组中的各笔交易,包括:按照所述任一聚合交易组中的各笔交易之间的依赖关系执行所述各笔交易;其中,对于第一交易及其所依赖的第二交易,在执行第二交易完成后再执行第一交易;对于依赖于同一交易或被同一交易所依赖的第三交易和第四交易,若第三交易和第四交易互相不依赖,则通过不同的线程并发执行第三交易和第四交易。11.根据权利要求1所述的方法,所述m1个基础交易组中包含的全部交易属于同一区块。12.一种区块链系统中的第一节点,第一节点中包含控制进程和n个计算进程,其中,所述控制进程用于获取m1个基础交易组,所述m1个基础交易组基于待执行的多笔交易各自的预执行读写集对所述多笔交易进行分组得到,m1>1;以及,将所述m1个基础交易组合并为m2个聚合交易组,并将所述m2个聚合交易组分别发送至所述n个计算进程中相应的计算进程,n>0且m1>m2;所述n个计算进程用于并行执行接收到的聚合交易组中的各笔交易。13.根据权利要求12所述的第一节点,所述n个计算进程中的任一计算进程具体用于:批量读取所述任一聚合交易组中的各笔交易分别对应的状态数据,并基于读取到的状态数据执行所述各笔交易。14.一种区块链系统,包括第一节点和第二节点,第一节点中包含控制进程和n个计算进程,其中:第二节点用于向第一节点发送m1个基础交易组,所述m1个基础交易组基于待执行的多笔交易各自的预执行读写集对所述多笔交易进行分组得到;或者,向第一节点发送待执行的多笔交易及其各自的预执行读写集,以使第一节点基于所述预执行读写集对所述多笔交易进行分组得到m1个基础交易组;其中,m1>1;第一节点中的所述控制进程用于将获取到的所述m1个基础交易组合并为m2个聚合交易组,并将所述m2个聚合交易组分别发送至所述n个计算进程中相应的计算进程,n>0且m1>m2,第一节点中的所述n个计算进程用于并行执行接收到的聚合交易组中的各笔交易。15.一种电子设备,包括:
处理器;用于存储处理器可执行指令的存储器;其中,所述处理器通过运行所述可执行指令以实现如权利要求1-11中任一项所述的方法。16.一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如权利要求1-11中任一项所述方法的步骤。

技术总结
一种交易分发方法、节点和区块链系统。所述方法应用于区块链系统中的第一节点,第一节点中包含控制进程和N个计算进程,所述方法包括:所述控制进程获取M1个基础交易组,所述M1个基础交易组基于待执行的多笔交易各自的预执行读写集对所述多笔交易进行分组得到,M1>1;所述控制进程将所述M1个基础交易组合并为M2个聚合交易组,并将所述M2个聚合交易组分别发送至所述N个计算进程中相应的计算进程,N>0且M1>M2;任一计算进程在接收到所述M2个聚合交易组中的任一聚合交易组的情况下,执行所述任一聚合交易组中的各笔交易。任一聚合交易组中的各笔交易。任一聚合交易组中的各笔交易。


技术研发人员:陶友贤
受保护的技术使用者:蚂蚁区块链科技(上海)有限公司
技术研发日:2023.05.31
技术公布日:2023/8/13
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐