CN117474552A - 交易执行方法、装置和区块链系统 - Google Patents

交易执行方法、装置和区块链系统 Download PDF

Info

Publication number
CN117474552A
CN117474552A CN202311436291.4A CN202311436291A CN117474552A CN 117474552 A CN117474552 A CN 117474552A CN 202311436291 A CN202311436291 A CN 202311436291A CN 117474552 A CN117474552 A CN 117474552A
Authority
CN
China
Prior art keywords
transaction
node
transactions
groups
result information
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.)
Pending
Application number
CN202311436291.4A
Other languages
English (en)
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.)
Ant Blockchain Technology Shanghai Co Ltd
Original Assignee
Ant Blockchain Technology Shanghai Co Ltd
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 Ant Blockchain Technology Shanghai Co Ltd filed Critical Ant Blockchain Technology Shanghai Co Ltd
Priority to CN202311436291.4A priority Critical patent/CN117474552A/zh
Publication of CN117474552A publication Critical patent/CN117474552A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/38Payment protocols; Details thereof
    • G06Q20/40Authorisation, e.g. identification of payer or payee, verification of customer or shop credentials; Review and approval of payers, e.g. check credit lines or negative lists
    • G06Q20/405Establishing or using transaction specific rules
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees

Abstract

一种交易执行方法、装置和区块链系统。所述交易执行方法应用于区块链系统,所述区块链系统包括第一节点和第二节点,该方法包括:第一节点基于待执行的多笔交易各自的预执行读写集确定所述多笔交易的分组结果信息,所述分组结果信息用于指示对所述多笔交易进行分组得到的M个交易组,M为正整数;第一节点发起包含所述分组结果信息的共识提议,并与第二节点共同参与共识;在共识通过的情况下,第二节点根据所述分组结果信息确定所述M个交易组,并按组执行所述多笔交易。

Description

交易执行方法、装置和区块链系统
技术领域
本说明书实施例属于区块链技术领域,尤其涉及一种交易执行方法、装置和区块链系统。
背景技术
区块链(Blockchain)是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链系统中按照时间顺序将数据区块以顺序相连的方式组合成链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。用户可以通过区块链节点参与实现区块链的相关事务,例如,区块链系统中分别对应不同用户的多个区块链节点,可以基于同态加密、零知识证明等隐私技术针对某一节点的私有数据进行安全多方计算(Secure Multi-Party Computation,SMPC)。再例如,基于区块链网络可以在不同用户账户之间实现转账;再例如,还可以基于区块链网络发行数字画作、数字头像、GIF等数字藏品对应的NFT(Non-Fungible Token,非同质化代币),以便NFT所承载的数字藏品的所有权能够在区块链网络的用户之间流通,从而产生对应于数字藏品的价值。
在相关技术中,往往由区块链系统中的任一节点(如主从架构下的主节点)针对某一区块中的多笔交易发起共识提议(proposal),并由该节点与其他节点(如从节点)共同参与共识后分别执行这些交易。其中,为加快该区块的整体执行速度(即减少该区块中全部交易的整体执行耗时),各个节点会分别对所述多笔交易进行分组以得到多个交易组,并以交易组为单位进行调度分发并执行。然而,该方式需要区块链中的各个节点分别对待执行区块中的多笔交易进行重复的分组处理,该处理会增加节点的工作量,使得绝大部分节点在共识后的交易执行整体耗时较长,导致区块链网络整体的交易执行效率较低。
发明内容
本说明书的目的在于提供一种交易执行方法、装置和区块链系统。
根据本说明书一个或多个实施例的第一方面,提供了一种交易执行方法,应用于区块链系统,所述区块链系统包括第一节点和第二节点,所述方法包括:
第一节点基于待执行的多笔交易各自的预执行读写集确定所述多笔交易的分组结果信息,所述分组结果信息用于指示对所述多笔交易进行分组得到的M个交易组,M为正整数;
第一节点发起包含所述分组结果信息的共识提议,并与第二节点共同参与共识;
在共识通过的情况下,第二节点根据所述分组结果信息确定所述M个交易组,并按组执行所述多笔交易。
根据本说明书一个或多个实施例的第二方面,提供了一种交易执行方法,应用于区块链系统中的第一节点,所述区块链系统还包括第二节点,所述方法包括:
基于待执行的多笔交易各自的预执行读写集确定所述多笔交易的分组结果信息,所述分组结果信息用于指示对所述多笔交易进行分组得到的M个交易组,M为正整数;
发起包含所述分组结果信息的共识提议,并与第二节点共同参与共识,以使第二节点在共识通过的情况下根据所述分组结果信息确定所述M个交易组,并按组执行所述多笔交易。
根据本说明书一个或多个实施例的第三方面,提供了一种交易执行方法,应用于区块链系统中的第二节点,所述区块链系统还包括第一节点,所述方法包括:
针对第一节点发起的共识提议,与第一节点共同参与共识,其中,所述共识提议包含待执行的多笔交易的分组结果信息,所述分组结果信息由第一节点基于所述多笔交易各自的预执行读写集确定,用于指示对所述多笔交易进行分组得到的M个交易组,M为正整数;
在共识通过的情况下,根据所述分组结果信息确定所述M个交易组,并按组执行所述多笔交易。
根据本说明书一个或多个实施例的第四方面,提供了一种区块链系统,所述区块链系统包括第一节点和第二节点,其中:
第一节点用于基于待执行的多笔交易各自的预执行读写集确定所述多笔交易的分组结果信息,所述分组结果信息用于指示对所述多笔交易进行分组得到的M个交易组,M为正整数;
第一节点用于发起包含所述分组结果信息的共识提议,并与第二节点共同参与共识;
第二节点还用于在共识通过的情况下,根据所述分组结果信息确定所述M个交易组,并按组执行所述多笔交易。
根据本说明书一个或多个实施例的第五方面,提供了一种交易执行装置,应用于区块链系统,所述区块链系统包括第一节点和第二节点,所述装置包括:
信息确定单元,用于使第一节点基于待执行的多笔交易各自的预执行读写集确定所述多笔交易的分组结果信息,所述分组结果信息用于指示对所述多笔交易进行分组得到的M个交易组,M为正整数;
第一共识单元,用于使第一节点发起包含所述分组结果信息的共识提议,并与第二节点共同参与共识;
交易执行单元,用于使第二节点在共识通过的情况下,根据所述分组结果信息确定所述M个交易组,并按组执行所述多笔交易。
根据本说明书一个或多个实施例的第六方面,提供了另一种交易执行装置,应用于区块链系统中第一节点,所述区块链系统还包括第二节点,所述装置包括:
信息确定单元,用于基于待执行的多笔交易各自的预执行读写集确定所述多笔交易的分组结果信息,所述分组结果信息用于指示对所述多笔交易进行分组得到的M个交易组,M为正整数;
提议发起单元,用于发起包含所述分组结果信息的共识提议,并与第二节点共同参与共识,以使第二节点在共识通过的情况下根据所述分组结果信息确定所述M个交易组,并按组执行所述多笔交易。
根据本说明书一个或多个实施例的第七方面,提供了又一种交易执行装置,应用于区块链系统中第二节点,所述区块链系统还包括第一节点,所述装置包括:
第二共识单元,用于使针对第一节点发起的共识提议,与第一节点共同参与共识,其中,所述共识提议包含待执行的多笔交易的分组结果信息,所述多笔交易由第一节点获取,所述分组结果信息由第一节点基于所述多笔交易各自的预执行读写集确定;
交易执行单元,用于在共识通过的情况下,根据所述分组结果信息确定所述M个交易组,并按组执行所述多笔交易。
根据本说明书一个或多个实施例的第八方面,提出了一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如第一方面至第三方面中任一项所述的方法。
根据本说明书一个或多个实施例的第九方面,提出了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如第一方面至第三方面中任一项所述方法的步骤。
可以理解的是,因为第一节点发起的共识提议中包含分组结果信息,而该信息用于指示对所述多笔交易进行分组得到的M个交易组,所以第一节点和第二节点共同参与的针对该共识提议的共识过程,即为对所述多笔交易的分组结果的共识过程。可见,相对于由各个节点分别进行分组处理的相关技术方案,本方案将由各个第二节点分别、重复完成的交易分组过程交由(发起共识提议的)第一节点统一完成,即将分组处理前置,使得各个第二节点只需要参与该提议的共识过程,即可在共识完成后认可第一节点的分组结果(即分组得到的M个交易组),并按组执行所述多笔交易(即按组执行所述M个交易组中各个交易组分别包含的交易)。显然,本方案除第一节点之外的各个第二节点均无需对多笔交易进行分组处理,从而减轻了第二节点的处理工作量,有效缩短了各个第二节点在共识后的交易执行整体耗时,提升了区块链网络整体的交易执行效率。
附图说明
为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是相关技术提供的一种区块链节点中的交易执行流程示意图。
图2是一示例性实施例提供的一种区块链节点中的交易执行流程示意图。
图3是一示例性实施例提供的一种交易执行方法的流程图。
图4是一示例性实施例提供的一种区块链系统中第一节点和第二节点的结构示意图。
图5是一示例性实施例提供的一种DAG的示意图。
图6是一示例性实施例提供的一种交易分发及执行过程的流程图。
图7是一示例性实施例提供的另一种交易执行方法的流程图。
图8是一示例性实施例提供的又一种交易执行方法的流程图。
图9是一示例性实施例提供的一种设备的结构示意图。
图10是一示例性实施例提供的一种交易执行装置的示意图。
图11是一示例性实施例提供的另一种交易执行装置的示意图。
图12是一示例性实施例提供的又一种交易执行装置的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
本说明书所述的区块链系统是通过多个节点(Node)来建立的分布式网络,其包含的任意两个节点间可以通过点对点(Peer-to-Peer,P2P)网络实现在应用层的通信连接。区块链系统利用链式区块结构构造的去中心化(或称为多中心化)的分布式账本,保存于分布式的区块链系统中的每个节点(或大多节点上,如共识节点)上,因此区块链系统需要解决去中心化(或多中心化)的多个节点上各自的账本数据的一致性和正确性的问题。鉴于此,区块链系统的每个节点上都运行着区块链程序,在一定容错需求的设计下,通过共识(consensus)机制保证所有忠诚节点具有相同的交易,从而保证所有忠诚节点对相同交易的执行结果一致,将交易打包成区块并基于相同交易的执行结果更新世界状态。其采用的共识机制可以包括但不限于:工作量证明(Proof of Work,POW)、股权证明(Proof ofStake,POS)、实用拜占庭容错(Practical Byzantine Fault Tolerance,PBFT)算法,蜜獾拜占庭容错(HoneyBadgerBFT)算法等等。
对于共识通过的各个区块,区块链网络中的区块链节点会按照区块高度的顺序依次执行各个区块中的区块链交易,在任一区块中的交易被执行完毕后,按照所述区块高度的顺序提交相应的执行结果,以完成该区块的上链存证。其中,为加快该区块的整体执行速度(即减少该区块中全部交易的整体执行耗时),各个节点会分别对所述多笔交易进行分组以得到多个交易组,并以交易组为单位进行调度分发并执行。如图1所示的交易执行流程,区块链系统中的主节点正在以流水线的方式依次处理区块N、区块N+1与区块N+2。其中任一区块的处理过程需要多条流水线相互配合,以区块N为例,在共识流水线对区块N共识完成后,分析流水线开始按照其预执行信息进行交易分析(即划分交易分组),分析完成后由执行流水线控制多个计算进程并行执行各个交易组中的交易,并根据执行结果更新缓存中的相关状态数据,进而在更新完成后由验证流水线参与针对执行结果的证明过程,在证明通过的情况下,由持久化流水线提交区块及执行结果以将区块及相应的状态数据持久化。
在相关技术中,往往由区块链系统中的任一节点(如主从架构下的主节点)针对某一区块中的多笔交易发起共识提议,并由该节点与其他节点(如从节点)共同参与共识后分别执行这些交易。如图1所示,区块链系统中的各个节点都会运行上述多条流水线,如从节点中的共识流水线会在共识完成后,将共识通过的区块N的各笔交易提供至分析流水线进行分析、分组,然后由执行流水线根据分组结果按组执行各笔交易。该方式需要区块链中的各个节点分别对待执行区块中的多笔交易进行重复的分组处理,该处理会增加节点的工作量,使得绝大部分节点在共识后的交易执行整体耗时较长,导致区块链网络整体的交易执行效率较低。
为解决相关技术中存在的上述问题,本说明书提出一种交易执行方法,将由各个第二节点分别完成的交易分组处理交由第一节点统一完成,并由各个节点对分组结果进行共识,使得第二节点只需要在共识通过后按照分组结果执行各笔交易即可,从而减少分组处理的重复次数。下面结合附图对本说明书的交易执行方案进行详细说明。
在一实施例中,本说明书提出一种区块链系统,该系统包括第一节点和第二节点,其中:
第一节点用于基于待执行的多笔交易各自的预执行读写集确定所述多笔交易的分组结果信息,所述分组结果信息用于指示对所述多笔交易进行分组得到的M个交易组,M为正整数;
第一节点用于发起包含所述分组结果信息的共识提议,并与第二节点共同参与共识;
第二节点还用于在共识通过的情况下,根据所述分组结果信息确定所述M个交易组,并按组执行所述多笔交易。
图2是本方案所述第一节点(如主节点)内的流水线示意图。对比图1和图2可见,相对于相关技术方案,本方案第一节点本地运行的共识流水线和分析流水线位置互换,即任一区块先由分析流水线进行分析和分组处理,再由共识流水线对区块和分组结果进行共识,并在共识完成后由执行流水线根据分组结果执行各笔交易。可以理解的是,对应于图2所示的流水线,区块链系统中第二节点(如从节点)运行的流水线可以不包括分析流水线,或者,也可以对第二节点的原有分析流水线(即如图1所示的分析流水线)进行改造,以使改造后的分析流水线可以用于根据分组结果信息确定分组得到的M个交易组等,而不再用于对多笔交易进行分组;或者也可以在用于分组的基础上还用于根据分组结果信息确定M个交易组等。
图3是一示例性实施例提供的一种交易执行方法的流程图。所述方法应用于区块链系统,该系统包括第一节点和第二节点。其中,第一节点可以为区块链系统中的任一区块链节点,只需要该节点可以在区块链系统中针对待执行的多笔交易发起共识提议即可。示例性的,在区块链系统为主从架构的情况下,第一节点可以为该系统中用于发起共识提议的主节点。当然,本说明书实施例提供的方案并不局限于主从架构的区块链系统;换言之,第一节点可以为区块链系统中可发起共识提议的任意区块链节点,第二节点可以为区块链系统中可参与共识及执行交易的任意区块链节点。所述区块链系统中的各个节点均可实现为任何具有计算/处理能力的装置、平台、设备或设备集群。如图3所示,所述方法应用于区块链系统,该区块链系统包括第一节点和第二节点,该方法包括下述步骤302-306。
步骤302,第一节点基于待执行的多笔交易各自的预执行读写集确定所述多笔交易的分组结果信息,所述分组结果信息用于指示对所述多笔交易进行分组得到的M个交易组,M为正整数。
在一实施例中,待执行的多笔交易可以属于同一区块,此时,本方案可以提升同一区块内全部交易的整体执行效率。当然,待执行的多笔交易也可以属于不同区块,不再赘述。其中,所述多笔交易可以由第一节点在自身维护的待执行交易池(或称待执行交易集合)中获取,如按照交易提交时刻的先后顺序依次获取,或者随机选取等。
在确定所述多笔交易的分组结果信息之前,第一节点需要先获取所述多笔交易各自的预执行读写集,下面对所述预执行读写集的获取过程进行说明。第一节点和第二节点中可以分别运行多个功能组件(或称功能模块,功能单元等)以提供多种服务,其中任一功能组件可以为进程(Process)也可以为线程(Thread),下面以各个功能组件分别为相应的进程为例,结合图4进行说明。
如图4所示,节点n1和节点n2分别是区块链系统中的第一节点和第二节点。两节点中分别运行有多个进程以提供多种服务,如用于提供接入服务的接入进程(如节点n1中运行的接入进程1和节点n2中运行的接入进程2,下述进程编号与此类似,不再赘述)、用于提供缓存服务的缓存进程、用于提供预执行服务的预执行进程、用于提供网络服务的网络进程、用于提供共识服务的共识进程、用于提供存储服务的存储进程、用于提供区块管理服务的控制进程和用于提供计算服务(如执行交易)的计算进程等。
其中,本说明书所述进程是指应用中具有一定独立功能的程序关于一个数据集合的一次运行活动,即进程是计算机中通过由CPU顺序执行应用程序中的指令而进行的一个过程,而每个进程在创建时被分配自己的内存地址空间。任一节点中的多个进程可以为运行在多个计算设备或虚拟计算节点中的多个进程。
需要说明的是,任一节点中的功能组件可以为分立的概念,这些组件在逻辑上归属于该节点。以第一节点为例,第一节点的节点程序(用于实现节点的控制逻辑)可以部署在任一物理设备中,而该节点中的任一功能组件既可以部署于该物理设备中,也可以部署于区别于该物理设备的其他物理设备中(如各个组件可以通过集群形式部署在不同的云服务器中)。无论何种部署方式,上述不同组件之间均可以视为“远程”,不同组件之间可以通过相应的通信技术实现信息和数据交互。以节点n1中的控制进程和计算进程为例,控制进程1和计算进程11之间可以通过RPC(Remote Procedure Ca最短依赖组,远程过程调用)技术、PIPE(管道)技术、消息队列(Message Queue)技术等实现交互,本说明书并不对此进行限制。
不妨假设所述节点n2和节点n1分别为所述区块链系统中的主节点和从节点。任一节点中的接入进程可以用于接收来自用户设备的交易,并调用缓存进程将其接收的交易加入待处理的交易队列中进行缓存。
节点n2的预执行进程2可以调用缓存进程2来实现从待处理的交易队列中按顺序读取其缓存的交易并对该交易进行验证,例如验证用户设备对该交易的签名,并将经验证的交易返回给缓存进程2。此外,节点n2还可以通过其网络进程2向其余节点的网络进程广播其缓存进程2中存储的经验证的交易;从而,节点n1通过其网络进程1接收的来自节点n2的交易,可以由其缓存进程1缓存加入到待处理的交易队列中。由此节点n1的缓存进程1通过其内存缓存的待处理的交易队列,不仅包括通过其接入进程1接收的交易,还包括通过其网络进程1接收的来自其他节点(如节点n2)的交易。
节点n2的预执行进程2也可以调用缓存进程2从待处理的交易队列中按顺序读取其缓存的交易,并至少对来自与节点n2连接的用户设备的交易进行验证。此外节点n2的预执行进程2还可以对其从缓存进程2按顺序接收的交易进行预执行以得到该交易的预执行读写集。其中,所述预执行读写集具体包括预执行读集(对应于交易执行过程中涉及的数据读取操作)和预执行写集(对应于交易执行过程中涉及的数据写入操作)。另外,预执行还可以得到交易耗时(用于表征预执行该交易消耗的时长,该时长可视为实际执行该交易需要的时长)、资源消费信息(用于表征执行该交易所需消耗的数字资源/计算资源的数量)等预执行相关信息。基于此,节点n2的预执行进程2可以在其每完成对一批交易的预执行后,将该批交易的预执行读写集返回给缓存进程2以缓存到待共识的交易队列中进行缓存。当然,第一节点也可以从其他节点处接收所述多笔交易的预执行读写集,并将其缓存在本地,不再赘述。
基于此,第一节点可以从本地缓存的数据中获取所述多笔交易的预执行读写集,这些预执行读写集可以由第一节点或者区块链系统中的其他任意节点预执行所述多笔交易得到。进而,第一节点可以基于获取到的这些预执行读写集,确定所述多笔交易的分组结果信息。此后,第一节点可以基于获取到的预执行读写集确定所述多笔交易的分组结果信息。
在一实施例中,第一节点可以基于所述多笔交易各自的预执行读写集对所述多笔交易进行分组得到M个交易组。例如,可以先根据所述预执行读写集确定所述多笔交易之间的依赖关系,再基于该依赖关系对所述多笔交易进行分组。其中,分组得到的M个交易组分别包含至少一笔交易;在任一交易组包含多笔交易的情况下,这多笔交易之间存在连续依赖关系;任意两个交易组分别包含的各笔交易之间均不存在依赖关系。针对上述分组得到的M个交易组,第一节点可以根据各个交易组分别包含的各笔交易的交易标识(如交易哈希或区块链系统内全局唯一的交易编号等)确定各个交易组分别对应的交易标识集合,并将各个交易组分别对应的交易标识集合作为所述多笔交易的分组结果信息,其中,任一交易组对应的交易标识集合由该交易组中各笔交易的交易标识所构成。通过该方式,第一节点可以完成对所述多笔交易的分组得到M个交易组,并基于分组结果确定各个交易组分别对应的交易标识集合。
如图5中的(a)所示,交易Tx1~Tx7之间存在连续依赖关系;如图5中的(b)所示,交易Tx8~Tx11之间存在连续依赖关系,而且Tx1~Tx7中的任一交易与Tx8~Tx11中的任一交易之间均不存在依赖关系。基于此,交易Tx1~Tx7可以被划分至同一个交易组(下称Group1),交易Tx8~Tx11可以被划分至另一个交易组(下称Group2)。需要说明的是,所述“连续依赖关系”,应当理解为多笔交易之间的依赖关系是连续传递的,如(a)中的Tx2依赖于Tx1且Tx4依赖于Tx2,此时可以视为Tx4间接依赖于Tx1,即Tx1、Tx2和Tx4之间存在连续依赖关系。针对上述交易组,第一节点可以确定出Group1对应的交易标识集合wei C_Txid1={Tx1、Tx2、Tx3、Tx4、Tx5、Tx6、Tx7}、Group2对应的交易标识集合C_Txid2={Tx8、Tx9、Tx10、Tx11}。
在另一实施例中,第一节点也可以基于所述多笔交易各自的预执行读写集确定所述多笔交易之间的依赖关系,并根据所述依赖关系生成M个DAG(Directed Acyclic Graph,向无环图),然后将这M个DAG作为所述多笔交易的分组结果信息。其中,所述M个DAG中的各个顶点一一对应于所述多笔交易,任一DAG中连接任意两个顶点的有向边用于表征这两个顶点分别对应的交易之间的依赖关系。其中任一顶点可以为相应的一笔交易的交易标识。因为任一交易组所对应DAG中的顶点可以用于表征该交易组中包含哪些交易,其中各个顶点之间的有向边可以用于表征这些交易之间的依赖关系,所以可以将该DAG作为该交易组对应的分组结果信息(即该交易组内各笔交易的分组结果信息)。通过该方式,第一节点只需要根据交易之间的依赖关系生成M个DAG,即可将这些DAG作为待执行的多笔交易的分组结果信息,而无需生成各个交易组对应的交易标识集合。另外需要说明的是,根据交易之间依赖关系生成的M个DAG实际上一一对应于M个交易组,所以后续第二节点可以根据这M个DAG确定出的相应的M个交易组,并且这些交易组同样分别包含至少一笔交易;在任一交易组包含多笔交易的情况下,这多笔交易之间存在连续依赖关系;任意两个交易组分别包含的各笔交易之间均不存在依赖关系。
仍以图5为例,(a)即为Group1对应的DAG1,(b)即为Group2对应的DAG2。其中,DAG1中包含的7个顶点一一对应于Tx1~Tx7;DAG2中包含的4个顶点一一对应于Tx8~Tx11。从Tx1指向Tx2的有向边用于表征交易Tx2依赖于Tx1、从Tx4指向Tx6的有向边用于表征交易Tx6依赖于Tx4、从Tx8指向Tx11的有向边用于表征交易Tx11依赖于Tx8,其他与此类似,不再赘述。
步骤304,第一节点发起包含所述分组结果信息的共识提议,并与第二节点共同参与共识。
在确定所述多笔交易的分组结果信息后,第一节点可以发起包含该信息的共识提议,并与第二节点共同参与共识,即共同参与针对该提议的共识过程。实际上,第二节点的数量为多个,如可以为区块链系统中除第一节点之外的全部共识节点(共识节点即为可以参与共识的区块链节点),下文实施例仅以其中任一交易组为例进行说明。示例性的,在第一节点为区块链系统的主节点的情况下,所述第二节点可以为各个从节点。其中,第一节点和第二节点参与共识的算法和具体过程,可以参见相关技术中的记载,此处不再赘述。
在一实施例中,所述共识提议中还可以包含待执行的所述多笔交易。可以理解的是,该方式将信息共识过程(即针对分组结果信息的共识过程)与交易共识过程(即针对所述多笔交易的共识过程)合并为一次共识过程,从而减少了区块链系统内提交的共识提议的数量和共识次数,有助于提升共识效率,并实现了交易与分组结果信息共识过程的关联,有助于提升后续对共识结果的存储及查询效率。其中,在待执行的所述多笔交易属于同一区块的情况下,上述交易共识过程即为针对该区块的共识过程。当然,为了兼容相关技术中的交易共识过程,也可以将上述信息共识过程与交易共识过程保持独立,即包含所述分组结果信息的共识提议中也可以不包含所述多笔交易,本说明书实施例并不对此进行限制。
可以理解的是,上述共识可能通过或者不通过。若通过,即表明参与共识的全部节点中的大多数(具体数量由共识算法决定)节点认同上述分组结果信息,即认同第一节点针对所述多笔交易的分组结果;反之,若不通过,即表明参与共识的全部节点中的大多数节点并不认同上述分组结果信息,即并不认同第一节点针对所述多笔交易的分组结果。
步骤306,在共识通过的情况下,第二节点根据所述分组结果信息确定所述M个交易组,并按组执行所述多笔交易。
可以理解的是,因为第一节点发起的共识提议中包含分组结果信息,而该信息用于指示对所述多笔交易进行分组得到的M个交易组,所以第一节点和第二节点共同参与的针对该共识提议的共识过程,即为对所述多笔交易的分组结果的共识过程。可见,相对于由各个节点分别进行分组处理的相关技术方案,本方案将由各个第二节点分别、重复完成的交易分组过程交由(发起共识提议的)第一节点统一完成,即将分组处理前置,使得各个第二节点只需要参与该提议的共识过程,即可在共识完成后认可第一节点的分组结果(即分组得到的M个交易组),并按组执行所述多笔交易(即按组执行所述M个交易组中各个交易组分别包含的交易)。显然,本方案除第一节点之外的各个第二节点均无需对多笔交易进行分组处理,从而减轻了第二节点的处理工作量,有效缩短了各个第二节点在共识后的交易执行整体耗时,提升了区块链网络整体的交易执行效率。
无论第二节点自身在共识过程中是否认同所述分组结果信息,在共识通过的情况下,该节点均可以认同该信息。此时,第二节点可以根据所述分组结果信息确定分组得到的M个交易组(即确定所述分组结果),基于此,可以按组执行所述多笔交易,即执行待执行的所述多笔交易。为描述简便,下文将执行任一交易组中的各笔交易称为执行该交易组,特此说明。
在一实施例中,根据分组结果信息的不同形式,第二节点可以采用相应的方式确定所述M个交易组。例如,在所述分组结果信息为前述交易标识集合的情况下,可以根据所述M个交易标识集合分别包含的交易标识确定各个交易标识集合分别对应的交易组。承接于前述实施例,可以根据C_Txid1确定出该交易标识集合对应的交易组为Tx1~Tx7构成的Group1、并根据C_Txid2确定出该交易标识集合对应的交易组为Tx8~Tx11构成的Group2。再例如,在所述分组结果信息为前述M个DAG的情况下,可以根据各个DAG分别包含的顶点确定所述各个DAG分别对应的交易组。如根据DAG1包含的各个顶点确定出该交易标识集合对应的交易组为Tx1~Tx7构成的Group1、根据DAG2包含的各个顶点确定出该交易标识集合对应的交易组为Tx1~Tx7构成的Group1等,不再赘述。
在一实施例中,第二节点可以包含控制组件和N个计算组件,其中N为大于1的整数(即第二节点包含多个计算组件),任一组件可以为该节点内创建的进程或线程。此时,第二节点按组执行所述多笔交易的过程,可以由所述控制组件与N个计算组件配合完成。
例如,所述控制组件可以将所述M个交易组分别分发至所述N个计算组件中相应的计算组件,即由控制组件主动分发交易组。在M≤N的情况下,控制组件可以将所述M个交易组逐一分发至不同的计算组件。其中,若M<N,则N个计算组件中的M个计算组件分别接收到一个交易组,另外N-M个计算组件未接收到任何交易组;若M=N,则N个控制组件分别接收到一个交易组。在该场景下,接收到(且仅接收到一个)第一节点的各个控制组件分别执行自身接收到的交易组,从而实现对各个交易组的并行执行。而在M>N的情况下,控制组件可以按照预设规则将所述M个交易组尽量均匀地分发至所述N个计算组件,以使各个计算组件分别执行自身接收到的交易组。其中,所述预设规则可以包括执行任务总量接近、执行总时长接近等,从而在实现不同交易组并行执行的同时,使得各个计算组件的执行任务总量接近或者执行总时长接近,确保各个计算组件尽可能同时结束执行,从而减少第二节点执行所述M个交易组的总耗时。示例性的,如图4所示的节点n2包含三个计算进程(即计算进程11~13),此时,可以将前述交易组Group1和Group2分别分发至计算进程11和12(或者分别分发至计算进程11和13);或者,若节点n2仅包含计算进程12和13,则可以将Group1和Group2一对一分发至这两个计算进程;再或者,若节点n2仅包含计算进程12,则可以将Group1和Group2均分发至该计算进程。
再例如,也可以由所述N个计算组件中的各个计算组件从所述M个交易组中抢占相应的交易组,即控制进程被动分发交易组。其中,各个计算组件可以根据自身的工作负荷灵活抢占所述交易组,如任一计算组件可以在自身处于空闲状态(当前时刻之前接收到的计算任务都已经完成计算)时向控制进程发起抢占请求,或者也可以在预测到自身即将处于空闲状态(如空闲前500ms等)时向控制进程发起抢占请求;相应的,控制进程可以响应于接收到的任一抢占请求,向该请求的发起方(即控制组件)分发至少一个交易组,如将该请求中指定的交易组发送至该发起方等。通过上述方式,各个计算组件可以主动抢占相应的交易组并执行(其中包含的各笔交易)。
在一实施例中,在第二节点包含控制组件和N个计算组件(N为大于1的整数)的情况下,第二节点可以根据任一交易组中各笔交易之间的依赖关系执行该交易组中的这各笔交易。例如,所述控制组件可以先按照所述任一交易组中的各笔交易之间的依赖关系,将所述任一交易组中的各笔交易划分为至少一个最短依赖组;其中,任一最短依赖组包含至少一笔交易,且包含多笔交易的任一最短依赖组中的多笔交易之间存在单向依赖关系,而不同最短依赖组分别包含的交易之间可以存在依赖关系也可以不存在依赖关系。另外,所述任一交易组中各笔交易之间的依赖关系可以由第二节点根据相应的预执行读写集确定,或者也可以根据前述共识提议中包含的DAG确定,本说明书实施例并不对此进行限制。
如图5所示,Group1中的Tx1和Tx2之间存在单向依赖关系、Tx6和Tx7之间存在单向依赖关系,可以将Group1中的各笔交易划分为如下5个最短依赖组:g1(包括Tx1和Tx2)、g2(包括Tx3)、g3(包括Tx4)、g4(包括Tx5)、g5(包括Tx6和Tx7)。由依赖关系可知,g1和g2分别包含的交易之间不存在依赖关系(下称g1和g2之间不存在依赖关系,下同),类似的,g4和g5之间也不存在依赖关系;g1与g3之间存在依赖关系(g3依赖于g1,具体为g3中的Tx4依赖于g1中的Tx2)、g2与g3之间存在依赖关系(g3依赖于g2,具体为g3中的Tx4依赖于g2中的Tx3)、g3与g4之间存在依赖关系(g4依赖于g3,具体为g4中的Tx5依赖于g3中的Tx4)、g3与g5之间存在依赖关系(g5依赖于g3,具体为g5中的Tx6依赖于g3中的Tx4)。类似的,可以将Group2中的各笔交易划分为如下4个最短依赖组:g6(包括Tx8)、g7(包括Tx9)、g8(包括Tx10)和g9(包括Tx11)。由依赖关系可知,g7和g8分别包含的交易之间不存在依赖关系;g7依赖于g6(具体为g7中的Tx9依赖于g6中的Tx8,下同)、g8依赖于g6、g9依赖于g7和g8。
基于上述最短依赖组的划分结果,所述控制组件可以将所述至少一个最短依赖组分发至所述N个计算组件中相应的计算组件,即控制组件主动分发;或者,也可以由所述N个计算组件中的各个计算组件从所述至少一个最短依赖组中抢占相应的最短依赖组,即控制组件被动分发。上述两种分发方式的具体实现过程可以参见前述控制组件主动和被动分发交易组的实施例,此处不再赘述。通过上述方式,所述N个计算组件中的至少部分计算组件可以获取到最短依赖组,此时,获取到最短依赖组的各个计算组件可以分别执行自身获取到的最短依赖组中,即执行这些最短依赖组中分别包含的各笔交易。
其中,在所述任一交易组中的各笔交易仅被划分为一个最短依赖组的情况下,控制组件可以将该最短依赖组分发至任意一个计算组件执行,以减少该最短依赖组内各个组件执行过程中可能产生的跨组件数据传输(如跨进程传输或跨线程传输等),从而提升这些交易的整体执行效率。而在所述任一交易组中的各笔交易被划分为多个最短依赖组的情况下,若所述N个计算组件为N个线程,则针对所述多个最短依赖组中被同一最短依赖组中的最后一笔交易所依赖或者依赖于同一最短依赖组中的第一笔交易的至少两个最短依赖组,控制组件可以将所述至少两个最短依赖组分发至归属于同一进程的不同线程,以便由同一进程中的不同线程并行执行这些最短依赖组,从而在通过并行执行各个最短依赖组的同时,尽量减少跨进程数据传输,从而进一步提升执行效率。
在一实施例中,所述控制组件在将所述至少一个最短依赖组分发至所述N个计算组件中相应的计算组件时,可以根据最短依赖组之间的依赖关系进行分发。例如,若任意两个最短依赖组分别包含的交易之间不存在依赖关系,则可以将所述任意两个最短依赖组分发至不同的计算组件,以由所述不同的计算组件并行执行所述任意两个最短依赖组分别包含的各笔交易。而若任意两个最短依赖组分别包含的交易之间存在依赖关系,则可以将所述任意两个最短依赖组分发至相同或不同的计算组件,以由所述相同或不同的计算组件按照所述依赖关系串行执行所述任意两个最短依赖组分别包含的各笔交易。
承接于图5的Group1对应的前述实施例,该交易组中各笔交易划分得到的最短依赖组的分发及执行过程可以参见图6。第二节点可以根据DAG确定所述任一交易组中各笔交易之间的依赖关系,并基于该依赖关系划分得到五个最短依赖组,即前述g1~g5。然后,可以通过前述主动分发或抢占的方式,将各个最短依赖组分别发送至相应的计算线程。如图6所示,进程Process1中的线程Thread1.0和Thread1.1分别获取到g1和g2、进程Process2中的线程Thread2获取到g3、进程Process3中的线程Thread3.0和Thread3.1分别获取到g4和g5。在执行过程中,按照g1~g5的前述依赖关系,Thread1.0和Thread1.1先分别(即并行)执行g1和g2(中的交易,下同),并将执行结果提供至Thread2,以由Thread2根据该g1和g2的执行结果执行g3;此后,Thread2将g3的执行结果分别提供至Thread3.0和Thread3.1,以由后者基于g3的执行结果分别执行g4和g5。
在一实施例中,任一计算组件可以按照最短依赖组之间的依赖关系对应的执行顺序执行自身获取到的任一最短依赖组中包含的各笔交易。例如,在所述任一最短依赖组中的第一笔交易依赖于至少一个其他最短依赖组中的最后一笔交易的情况下,所述任一计算组件可以获取所述至少一个其他最短依赖组的最后一笔交易的执行结果,并基于获取到的执行结果执行所述任一最短依赖组中包含的第一笔交易。如图6所示,因为g3中的第一笔交易(也是该组中的唯一一笔交易)Tx4同时依赖于g1中的最后一笔交易Tx2和g2中的最后一笔交易(也是该组中的唯一一笔交易)Tx3,所以Thread2需要分别获取Tx2和Tx3的执行结果,并在获取到这两笔交易的执行结果之后,再基于这两个执行结果执行Tx4。类似的,因为g5中的第一笔交易Tx6依赖于g3中的最后一笔交易(也是该组中的唯一一笔交易)Tx4,所以Thread3.1需要获取Tx4的执行结果,并基于该执行结果执行Tx6。通过上述方式,多个计算线程可以确保严格按照同一交易组中各笔交易之间的依赖关系顺序执行各笔交易,有效避免交易执行出错。
在一实施例中,作为区块链系统的一员,第一节点也需要执行所述多笔交易。鉴于第一节点已经获取到了所述多笔交易各自的预执行读写集(如第一节点已经预执行了所述多笔交易),所以在共识通过的情况下,第一节点可以根据所述多笔交易的预执行结果更新相应的状态数据,该预执行结果即包括所述预执行读写集。可以理解的是,因为分组结果信息被根据预执行得到的预执行读写集所确定,所以包含分组结果信息的共识提议通过共识,即表明共识节点认可所述分组结果信息,进一步表明认可所述多笔交易的预执行结果。所以,第一节点可以将该预执行结果视为其执行结果,而无需重复执行所述多笔交易。
在一实施例中,在共识不通过的情况下,第二节点还可以基于所述多笔交易各自的预执行读写集对所述多笔交易进行分组得到所述M个交易组,并按组执行所述多笔交易。可以理解的是,针对共识提议的共识不通过,即表明区块链系统中的大多数节点并不认同上述分组结果信息,即并不认同第一节点针对所述多笔交易的分组结果。共识不通过可能是由于第一节点预执行出错或分组结果信息造假(如第一节点是作恶节点)等原因导致的。此时,第二节点不应当按照所述分组结果信息表征的分组结果按组执行待执行的所述多笔交易,而是可以基于沿用原有执行策略,即自行分组并按组执行,以确保在共识不通过的异常情况下,仍然能够顺利执行待执行的多笔交易,提升本方案的适用性以及对相关技术方案的兼容性。
另外,无论是根据所述分析结果信息确定所述M个交易组,还是自行进行分组处理确定所述M个交易组,在按组执行所述多笔交易(即执行所述M个交易组分别包含的交易)后,第二节点均可以根据相应的执行结果(包括执行读写集等数据)更新自身维护的、相应的状态数据,不再赘述。
对应于前述实施例,本说明书实施例还提出另一种交易执行方法,该方法应用于区块链系统中的第一节点,所述区块链系统还包括第二节点。如图7所示,该方法包括步骤702-704。
步骤702,基于待执行的多笔交易各自的预执行读写集确定所述多笔交易的分组结果信息,所述分组结果信息用于指示对所述多笔交易进行分组得到的M个交易组,M为正整数。
步骤704,发起包含所述分组结果信息的共识提议,并与第二节点共同参与共识,以使第二节点在共识通过的情况下根据所述分组结果信息确定所述M个交易组,并按组执行所述多笔交易。
对应于前述实施例,本说明书实施例还提出又一种交易执行方法,应用于区块链系统中的第二节点,所述区块链系统还包括第一节点。如图8所示,该方法包括步骤802-804。
步骤802,针对第一节点发起的共识提议,与第一节点共同参与共识,其中,所述共识提议包含待执行的多笔交易的分组结果信息,所述分组结果信息由第一节点基于所述多笔交易各自的预执行读写集确定,用于指示对所述多笔交易进行分组得到的M个交易组,M为正整数。
步骤804,在共识通过的情况下,根据所述分组结果信息确定所述M个交易组,并按组执行所述多笔交易。
上述两种交易执行方法的具体实现方式可参见上文实施例的记载,此处不再赘述。
图9是一示例性实施例提供的一种设备的示意结构图。请参考图9,在硬件层面,该设备包括处理器902、内部总线904、网络接口906、内存908以及非易失性存储器910,当然还可能包括其他功能所需要的硬件。本说明书一个或多个实施例可以基于软件方式来实现,比如由处理器902从非易失性存储器910中读取对应的计算机程序到内存908中然后运行。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
如图10所示,图10是本说明书根据一示例性实施例提供的一种交易执行装置的框图,该装置可以应用于如图9所示的设备中,以实现本说明书的技术方案。该装置应用于区块链系统,所述区块链系统包括第一节点和第二节点,该装置包括:
信息确定单元1001,用于使第一节点基于待执行的多笔交易各自的预执行读写集确定所述多笔交易的分组结果信息,所述分组结果信息用于指示对所述多笔交易进行分组得到的M个交易组,M为正整数;
提议发起单元1002,用于使第一节点发起包含所述分组结果信息的共识提议,并与第二节点共同参与共识;
交易执行单元1003,用于使第二节点在共识通过的情况下,根据所述分组结果信息确定所述M个交易组,并按组执行所述多笔交易。
可选的,所述信息确定单元1001具体用于:
基于所述多笔交易各自的预执行读写集对所述多笔交易进行分组得到M个交易组,并将各个交易组分别对应的交易标识集合作为所述多笔交易的分组结果信息,其中任一交易组对应的交易标识集合包含该交易组中各笔交易的交易标识;或者,
基于所述多笔交易各自的预执行读写集确定所述多笔交易之间的依赖关系,并将根据所述依赖关系生成的M个有向无环图DAG作为所述多笔交易的分组结果信息,其中,所述M个DAG中的各个顶点一一对应于所述多笔交易,任一DAG中连接任意两个顶点的有向边用于表征这两个顶点分别对应的交易之间的依赖关系。
可选的,第二节点包含控制组件和N个计算组件,N为大于1的整数,所述交易执行单元1003具体用于:
所述控制组件将所述M个交易组分别分发至所述N个计算组件中相应的计算组件,或者,所述N个计算组件中的各个计算组件从所述M个交易组中抢占相应的交易组;
所述N个计算组件中的各个计算组件分别执行自身获取到的交易组中包含的交易。
可选的,第二节点包含控制组件和N个计算组件,N为大于1的整数,所述交易执行单元1003具体用于:
所述控制组件按照所述任一交易组中的各笔交易之间的依赖关系,将所述任一交易组中的各笔交易划分为至少一个最短依赖组;其中,任一最短依赖组包含至少一笔交易,且包含多笔交易的任一最短依赖组中的多笔交易之间存在单向依赖关系;
所述控制组件将所述至少一个最短依赖组分发至所述N个计算组件中相应的计算组件,或者,所述N个计算组件中的各个计算组件从所述至少一个最短依赖组中抢占相应的最短依赖组;
所述N个计算组件中获取到最短依赖组的各个计算组件分别执行自身获取到的最短依赖组中包含的交易。
可选的,所述N个计算组件为N个线程,所述交易执行单元1003具体用于:
在所述任一交易组中的各笔交易被划分为多个最短依赖组的情况下,针对所述多个最短依赖组中被同一最短依赖组中的最后一笔交易所依赖或者依赖于同一最短依赖组中的第一笔交易的至少两个最短依赖组,将所述至少两个最短依赖组分发至归属于同一进程的不同线程。
可选的,所述交易执行单元1003具体用于:
若任意两个最短依赖组分别包含的交易之间不存在依赖关系,则将所述任意两个最短依赖组分发至不同的计算组件,以由所述不同的计算组件并行执行所述任意两个最短依赖组分别包含的各笔交易;
若任意两个最短依赖组分别包含的交易之间存在依赖关系,则将所述任意两个最短依赖组分发至相同或不同的计算组件,以由所述相同或不同的计算组件按照所述依赖关系串行执行所述任意两个最短依赖组分别包含的各笔交易。
可选的,所述交易执行单元1003具体用于:
在所述任一最短依赖组中的第一笔交易依赖于至少一个其他最短依赖组中的最后一笔交易的情况下,获取所述至少一个其他最短依赖组的最后一笔交易的执行结果,并基于获取到的执行结果执行所述任一最短依赖组中包含的第一笔交易。
可选的,还包括:
第一执行单元1004,用于使第一节点在共识通过的情况下,根据所述分组结果信息确定所述M个交易组,并按组执行所述多笔交易。
可选的,还包括:
分组执行单元1005,用于在共识不通过的情况下,第二节点基于所述多笔交易各自的预执行读写集对所述多笔交易进行分组得到所述M个交易组,并按组执行所述多笔交易。
如图11所示,图11是本说明书根据一示例性实施例提供的另一种交易执行装置的框图,该装置可以应用于如图9所示的设备中,以实现本说明书的技术方案。该装置应用于区块链系统中第一节点,所述区块链系统还包括第二节点,该装置包括:
信息确定单元1101,用于基于待执行的多笔交易各自的预执行读写集确定所述多笔交易的分组结果信息,所述分组结果信息用于指示对所述多笔交易进行分组得到的M个交易组,M为正整数;
提议发起单元1102,用于发起包含所述分组结果信息的共识提议,并与第二节点共同参与共识,以使第二节点在共识通过的情况下根据所述分组结果信息确定所述M个交易组,并按组执行所述多笔交易。
如图12所示,图12是本说明书根据一示例性实施例提供的又一种交易执行装置的框图,该装置可以应用于如图9所示的设备中,以实现本说明书的技术方案。该装置应用于区块链系统中第二节点,所述区块链系统还包括第一节点,该装置包括:
共识参与单元1201,用于针对第一节点发起的共识提议,与第一节点共同参与共识,其中,所述共识提议包含待执行的多笔交易的分组结果信息,所述多笔交易由第一节点获取,所述分组结果信息由第一节点基于所述多笔交易各自的预执行读写集确定;
第二执行单元1202,用于在共识通过的情况下,根据所述分组结果信息确定所述M个交易组,并按组执行所述多笔交易。
虽然本说明书一个或多个实施例提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。例如若使用到第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
本说明书是参照根据本说明书实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储、石墨烯存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
本领域技术人员应明白,本说明书一个或多个实施例可提供为方法、系统或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
以上所述仅为本说明书一个或多个实施例的实施例而已,并不用于限制本本说明书一个或多个实施例。对于本领域技术人员来说,本说明书一个或多个实施例可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在权利要求范围之内。

Claims (17)

1.一种交易执行方法,应用于区块链系统,所述区块链系统包括第一节点和第二节点,所述方法包括:
第一节点基于待执行的多笔交易各自的预执行读写集确定所述多笔交易的分组结果信息,所述分组结果信息用于指示对所述多笔交易进行分组得到的M个交易组,M为正整数;
第一节点发起包含所述分组结果信息的共识提议,并与第二节点共同参与共识;
在共识通过的情况下,第二节点根据所述分组结果信息确定所述M个交易组,并按组执行所述多笔交易。
2.根据权利要求1所述的方法,第一节点基于所述多笔交易各自的预执行读写集确定所述多笔交易的分组结果信息,包括:
基于所述多笔交易各自的预执行读写集对所述多笔交易进行分组得到M个交易组,并将各个交易组分别对应的交易标识集合作为所述多笔交易的分组结果信息,其中任一交易组对应的交易标识集合包含该交易组中各笔交易的交易标识;或者,
基于所述多笔交易各自的预执行读写集确定所述多笔交易之间的依赖关系,并将根据所述依赖关系生成的M个有向无环图DAG作为所述多笔交易的分组结果信息,其中,所述M个DAG中的各个顶点一一对应于所述多笔交易,任一DAG中连接任意两个顶点的有向边用于表征这两个顶点分别对应的交易之间的依赖关系。
3.根据权利要求1所述的方法,第二节点包含控制组件和N个计算组件,N为大于1的整数,第二节点按组执行所述多笔交易,包括:
所述控制组件将所述M个交易组分别分发至所述N个计算组件中相应的计算组件,或者,所述N个计算组件中的各个计算组件从所述M个交易组中抢占相应的交易组;
所述N个计算组件中的各个计算组件分别执行自身获取到的交易组中包含的交易。
4.根据权利要求1所述的方法,第二节点包含控制组件和N个计算组件,N为大于1的整数,第二节点执行任一交易组中的各笔交易,包括:
所述控制组件按照所述任一交易组中的各笔交易之间的依赖关系,将所述任一交易组中的各笔交易划分为至少一个最短依赖组;其中,任一最短依赖组包含至少一笔交易,且包含多笔交易的任一最短依赖组中的多笔交易之间存在单向依赖关系;
所述控制组件将所述至少一个最短依赖组分发至所述N个计算组件中相应的计算组件,或者,所述N个计算组件中的各个计算组件从所述至少一个最短依赖组中抢占相应的最短依赖组;
所述N个计算组件中获取到最短依赖组的各个计算组件分别执行自身获取到的最短依赖组中包含的交易。
5.根据权利要求4所述的方法,所述N个计算组件为N个线程,所述控制组件将所述至少一个最短依赖组分发至所述N个计算组件中相应的计算组件,包括:
在所述任一交易组中的各笔交易被划分为多个最短依赖组的情况下,针对所述多个最短依赖组中被同一最短依赖组中的最后一笔交易所依赖或者依赖于同一最短依赖组中的第一笔交易的至少两个最短依赖组,将所述至少两个最短依赖组分发至归属于同一进程的不同线程。
6.根据权利要求4所述的方法,所述控制组件将所述至少一个最短依赖组分发至所述N个计算组件中相应的计算组件,包括:
若任意两个最短依赖组分别包含的交易之间不存在依赖关系,则将所述任意两个最短依赖组分发至不同的计算组件,以由所述不同的计算组件并行执行所述任意两个最短依赖组分别包含的各笔交易;
若任意两个最短依赖组分别包含的交易之间存在依赖关系,则将所述任意两个最短依赖组分发至相同或不同的计算组件,以由所述相同或不同的计算组件按照所述依赖关系串行执行所述任意两个最短依赖组分别包含的各笔交易。
7.根据权利要求4所述的方法,任一计算组件执行自身获取到的任一最短依赖组中包含的各笔交易,包括:
在所述任一最短依赖组中的第一笔交易依赖于至少一个其他最短依赖组中的最后一笔交易的情况下,获取所述至少一个其他最短依赖组的最后一笔交易的执行结果,并基于获取到的执行结果执行所述任一最短依赖组中包含的第一笔交易。
8.根据权利要求1所述的方法,还包括:
在共识通过的情况下,第一节点根据所述多笔交易的预执行结果更新相应的状态数据,所述预执行结果包括所述预执行读写集。
9.根据权利要求1所述的方法,还包括:
在共识不通过的情况下,第二节点基于所述多笔交易各自的预执行读写集对所述多笔交易进行分组得到所述M个交易组,并按组执行所述多笔交易。
10.一种交易执行方法,应用于区块链系统中的第一节点,所述区块链系统还包括第二节点,所述方法包括:
基于待执行的多笔交易各自的预执行读写集确定所述多笔交易的分组结果信息,所述分组结果信息用于指示对所述多笔交易进行分组得到的M个交易组,M为正整数;
发起包含所述分组结果信息的共识提议,并与第二节点共同参与共识,以使第二节点在共识通过的情况下根据所述分组结果信息确定所述M个交易组,并按组执行所述多笔交易。
11.一种交易执行方法,应用于区块链系统中的第二节点,所述区块链系统还包括第一节点,所述方法包括:
针对第一节点发起的共识提议,与第一节点共同参与共识,其中,所述共识提议包含待执行的多笔交易的分组结果信息,所述分组结果信息由第一节点基于所述多笔交易各自的预执行读写集确定,用于指示对所述多笔交易进行分组得到的M个交易组,M为正整数;
在共识通过的情况下,根据所述分组结果信息确定所述M个交易组,并按组执行所述多笔交易。
12.一种区块链系统,所述区块链系统包括第一节点和第二节点,其中:
第一节点用于基于待执行的多笔交易各自的预执行读写集确定所述多笔交易的分组结果信息,所述分组结果信息用于指示对所述多笔交易进行分组得到的M个交易组,M为正整数;
第一节点用于发起包含所述分组结果信息的共识提议,并与第二节点共同参与共识;
第二节点还用于在共识通过的情况下,根据所述分组结果信息确定所述M个交易组,并按组执行所述多笔交易。
13.一种交易执行装置,应用于区块链系统,所述区块链系统包括第一节点和第二节点,所述装置包括:
信息确定单元,用于使第一节点基于待执行的多笔交易各自的预执行读写集确定所述多笔交易的分组结果信息,所述分组结果信息用于指示对所述多笔交易进行分组得到的M个交易组,M为正整数;
提议发起单元,用于使第一节点发起包含所述分组结果信息的共识提议,并与第二节点共同参与共识;
第二执行单元,用于使第二节点在共识通过的情况下,根据所述分组结果信息确定所述M个交易组,并按组执行所述多笔交易。
14.一种交易执行装置,应用于区块链系统中第一节点,所述区块链系统还包括第二节点,所述装置包括:
信息确定单元,用于基于待执行的多笔交易各自的预执行读写集确定所述多笔交易的分组结果信息,所述分组结果信息用于指示对所述多笔交易进行分组得到的M个交易组,M为正整数;
提议发起单元,用于发起包含所述分组结果信息的共识提议,并与第二节点共同参与共识,以使第二节点在共识通过的情况下根据所述分组结果信息确定所述M个交易组,并按组执行所述多笔交易。
15.一种交易执行装置,应用于区块链系统中第二节点,所述区块链系统还包括第一节点,所述装置包括:
共识参与单元,用于针对第一节点发起的共识提议,与第一节点共同参与共识,其中,所述共识提议包含待执行的多笔交易的分组结果信息,所述分组结果信息由第一节点基于所述多笔交易各自的预执行读写集确定,用于指示对所述多笔交易进行分组得到的M个交易组,M为正整数;
第二执行单元,用于在共识通过的情况下,根据所述分组结果信息确定所述M个交易组,并按组执行所述多笔交易。
16.一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如权利要求1-11中任一项所述的方法。
17.一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如权利要求1-11中任一项所述方法的步骤。
CN202311436291.4A 2023-10-31 2023-10-31 交易执行方法、装置和区块链系统 Pending CN117474552A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311436291.4A CN117474552A (zh) 2023-10-31 2023-10-31 交易执行方法、装置和区块链系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311436291.4A CN117474552A (zh) 2023-10-31 2023-10-31 交易执行方法、装置和区块链系统

Publications (1)

Publication Number Publication Date
CN117474552A true CN117474552A (zh) 2024-01-30

Family

ID=89630675

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311436291.4A Pending CN117474552A (zh) 2023-10-31 2023-10-31 交易执行方法、装置和区块链系统

Country Status (1)

Country Link
CN (1) CN117474552A (zh)

Similar Documents

Publication Publication Date Title
Sundar et al. Offloading dependent tasks with communication delay and deadline constraint
JP7114629B2 (ja) ブロックチェーントランザクションの並列検証のためのシステム及び方法
Nayak et al. Deadline sensitive lease scheduling in cloud computing environment using AHP
US9703610B2 (en) Extensible centralized dynamic resource distribution in a clustered data grid
Karimzadeh-Farshbafan et al. A dynamic reliability-aware service placement for network function virtualization (NFV)
CN110262901B (zh) 一种数据处理方法及数据处理系统
WO2015154686A1 (en) Scheduling method and apparatus for distributed computing system
US20120203823A1 (en) Apparatus, systems and methods for deployment and management of distributed computing systems and applications
Abad et al. Package-aware scheduling of faas functions
Kang et al. Dynamic scheduling strategy with efficient node availability prediction for handling divisible loads in multi-cloud systems
CN110308984B (zh) 一种用于处理地理分布式数据的跨集群计算系统
EP3539261B1 (en) System and method for network-scale reliable parallel computing
US20200052885A1 (en) File storage method and apparatus for blockchain network
Nguyen et al. Monad: Self-adaptive micro-service infrastructure for heterogeneous scientific workflows
W. Cassales et al. Improving the performance of Apache Hadoop on pervasive environments through context-aware scheduling
WO2006050349A2 (en) Methods and apparatus for running applications on computer grids
Davoli et al. Forch: An orchestrator for fog computing service deployment
US11487736B2 (en) Blockchain transaction processing systems and methods
CN112805683A (zh) 使用流借用的流分配
CN116308772B (zh) 交易分发方法、节点和区块链系统
CN112116348A (zh) 一种对节点资源的访问控制方法
Liu et al. Fine-grained scheduling for containerized hpc workloads in kubernetes clusters
CN117474552A (zh) 交易执行方法、装置和区块链系统
Alkmim et al. Approximated algorithms for mapping virtual networks on network substrates
CN117408703A (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