CN116308772B - 交易分发方法、节点和区块链系统 - Google Patents

交易分发方法、节点和区块链系统 Download PDF

Info

Publication number
CN116308772B
CN116308772B CN202211626970.3A CN202211626970A CN116308772B CN 116308772 B CN116308772 B CN 116308772B CN 202211626970 A CN202211626970 A CN 202211626970A CN 116308772 B CN116308772 B CN 116308772B
Authority
CN
China
Prior art keywords
transaction
transactions
execution
time consumption
computing
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
CN202211626970.3A
Other languages
English (en)
Other versions
CN116308772A (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.)
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 CN202211626970.3A priority Critical patent/CN116308772B/zh
Publication of CN116308772A publication Critical patent/CN116308772A/zh
Application granted granted Critical
Publication of CN116308772B publication Critical patent/CN116308772B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Business, Economics & Management (AREA)
  • Accounting & Taxation (AREA)
  • Finance (AREA)
  • Engineering & Computer Science (AREA)
  • Development Economics (AREA)
  • Economics (AREA)
  • Marketing (AREA)
  • Strategic Management (AREA)
  • Technology Law (AREA)
  • Physics & Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种交易分发方法、节点和区块链系统。所述方法应用于区块链系统中的第一节点,第一节点中包含控制进程和N个计算进程,该方法包括:控制进程获取待执行的多个交易以及各个交易的预执行信息,预执行信息包括各个交易的预执行读写集和交易耗时;控制进程根据预执行读写集将所述交易划分为M个交易分组,并根据各个交易分组中交易的交易耗时确定各个交易分组的分组预期耗时,M和N均为正整数,且M>N;控制进程根据分组预期耗时将M个交易分组分发至N个计算进程执行,使N个计算进程的任务预期耗时趋于一致,任一计算进程的任务预期耗时为该计算进程执行自身所接收交易分组中的全部交易需要的时长。

Description

交易分发方法、节点和区块链系统
技术领域
本说明书实施例属于区块链技术领域,尤其涉及一种交易分发方法、节点和区块链系统。
背景技术
区块链(Blockchain)是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链系统中按照时间顺序将数据区块以顺序相连的方式组合成链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。用户可以通过区块链节点参与实现区块链的相关事务,例如,区块链系统中分别对应不同用户的多个区块链节点,可以基于同态加密、零知识证明等隐私技术针对某一节点的私有数据进行安全多方计算(Secure Multi-Party Computation,SMPC)。
发明内容
本说明书的目的在于提供一种交易分发方法、节点和区块链系统。
第一方面,提供了一种交易分发方法,应用于区块链系统中的第一节点,第一节点中包含控制进程和N个计算进程,所述方法包括:
所述控制进程获取待执行的多个交易以及各个交易的预执行信息,任一交易的预执行信息包括该交易的预执行读写集和交易耗时;
所述控制进程根据所述预执行读写集将所述多个交易划分为M个交易分组,并根据各个交易分组中交易的交易耗时确定各个交易分组的分组预期耗时,各个交易分组中的交易互不相同,任一交易分组的分组预期耗时用于表征执行所述任一交易分组中全部交易需要的时长,M和N均为正整数,且M>N;
所述控制进程根据所述分组预期耗时将所述M个交易分组分发至所述N个计算进程执行,使所述N个计算进程的任务预期耗时趋于一致,其中,各个计算进程接收到的交易分组互不相同,任一计算进程的任务预期耗时为该计算进程执行自身所接收交易分组中的全部交易需要的时长。
第二方面,提供了一种区块链系统中的第一节点,第一节点中包含控制进程和N个计算进程,所述控制进程用于:
所述控制进程获取待执行的多个交易以及各个交易的预执行信息,任一交易的预执行信息包括该交易的预执行读写集和交易耗时;
所述控制进程根据所述预执行读写集将所述多个交易划分为M个交易分组,并根据各个交易分组中交易的交易耗时确定各个交易分组的分组预期耗时,各个交易分组中的交易互不相同,任一交易分组的分组预期耗时用于表征执行所述任一交易分组中全部交易需要的时长,M和N均为正整数,且M>N;
所述控制进程根据所述分组预期耗时将所述M个交易分组分发至所述N个计算进程执行,使所述N个计算进程的任务预期耗时趋于一致,其中,各个计算进程接收到的交易分组互不相同,任一计算进程的任务预期耗时为该计算进程执行自身所接收交易分组中的全部交易需要的时长。
第三方面,提供了一种区块链系统,包括第一节点和第二节点,第一节点中包含控制进程和N个计算进程,其中:
第二节点用于向第一节点发送待执行的多个交易以及各个交易的预执行信息,任一交易的预执行信息包括该交易的预执行读写集和交易耗时;
第一节点用于根据所述预执行读写集将所述多个交易划分为M个交易分组,并根据各个交易分组中交易的交易耗时确定各个交易分组的分组预期耗时,各个交易分组中的交易互不相同,任一交易分组的分组预期耗时用于表征执行所述任一交易分组中全部交易需要的时长,M和N均为正整数,且M>N;以及,根据所述分组预期耗时将所述M个交易分组分发至所述N个计算进程执行,使所述N个计算进程的任务预期耗时趋于一致,其中,各个计算进程接收到的交易分组互不相同,任一计算进程的任务预期耗时为该计算进程执行自身所接收交易分组中的全部交易需要的时长。
根据本说明书一个或多个实施例的第四方面,提出了一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如第一方面中任一项所述的方法。
根据本说明书一个或多个实施例的第五方面,提出了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如第一方面中任一项所述方法的步骤。
通过上述实施例,对于区块链系统中的第一节点所包含的控制进程和N个计算进程,所述控制进程可以获取待执行的多个交易以及各个交易的预执行信息,任一交易的预执行信息包括该交易的预执行读写集和交易耗时;进而根据所述预执行读写集将所述多个交易划分为M个交易分组,并根据各个交易分组中交易的交易耗时确定各个交易分组的分组预期耗时,各个交易分组中的交易互不相同,任一交易分组的分组预期耗时用于表征执行所述任一交易分组中全部交易需要的时长,M和N均为正整数,且M>N;再根据所述分组预期耗时将所述M个交易分组分发至所述N个计算进程执行,使所述N个计算进程的任务预期耗时趋于一致,其中,各个计算进程接收到的交易分组互不相同,任一计算进程的任务预期耗时为该计算进程执行自身所接收交易分组中的全部交易需要的时长。
可以理解的是,任一交易的交易耗时是该交易预执行过程消耗的时长,该时长即可作为执行该交易的预期耗时;因此,在任一计算进程执行所述任一交易的过程中,实际需要的时长应当与该交易的交易耗时相同或接近。与之类似的,在将所述多个交易划分为M个交易分组后,控制进程可以根据所述交易的交易耗时确定各个交易分组的分组预期耗时,进而基于所述分组预期耗时分发各个交易。对于任一交易分组而言,接收到该分组的计算进程在执行该分组中的各个交易的过程中,实际需要的时长应当与该分组的分组预期耗时相同或接近。
基于此,控制进程可以合理控制将所述M个交易分组分发至N个计算进程,以使得N个计算进程的任务预期耗时(即计算进程执行自身所接收交易分组中的全部交易需要的时长)趋于一致,即确保N个计算进程尽量在同一时刻执行完成各自接收到的交易,或者完成各自接收到的交易的时刻尽量接近,避免了部分计算进程消耗较长时间等待其他计算进程执行完成。可见,该方案有助于所述控制进程将各个计算进程分别得到的交易执行结果并发上链,从而提升区块整体的上链速度,并有效减少等待导致的计算资源的浪费。
附图说明
为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是一示例性实施例提供的一种区块链系统的示意图。
图2是一示例性实施例提供的一种交易分发方法的流程图。
图3是一示例性实施例提供的一种区块链系统中任意两个节点的结构示意图。
图4是一示例性实施例提供的一种交易之间依赖关系的示意图。
图5是一示例性实施例提供的另一种交易之间依赖关系的示意图。
图6是一示例性实施例提供的一种区块链系统中的第一节点的结构示意图。
图7是一示例性实施例提供的一种设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
图1是一示例性实施例提供的一种区块链系统的示意图。如图1所示,区块链系统是通过多个节点(Node)来建立的分布式网络,其包含任意两个节点间通过点对点(Peer-to-Peer,P2P)网络实现在应用层的通信连接,例如其包含的节点n1~节点n5中的任意两个节点间均可通过P2P网络实现在应用层的通信连接。区块链系统利用链式区块结构构造的去中心化(或称为多中心化)的分布式账本,保存于分布式的区块链系统中的每个节点(或大多节点上,如共识节点)上,因此区块链系统需要解决去中心化(或多中心化)的多个节点上各自的账本数据的一致性和正确性的问题。鉴于此,区块链系统的每个节点上都运行着区块链程序,在一定容错需求的设计下,通过共识(consensus)机制保证所有忠诚节点具有相同的交易,从而保证所有忠诚节点对相同交易的执行结果一致,将交易打包成区块并基于相同交易的执行结果更新世界状态。其中当前主流的共识机制包括但不限于:工作量证明(Proof of Work,POW)、股权证明(Proof of Stake,POS)、实用拜占庭容错(PracticalByzantine Fault Tolerance,PBFT)算法,蜜獾拜占庭容错(HoneyBadgerBFT)算法等等。
所述区块链系统中的区块链节点可以执行区块链交易。区块链节点可以包括多个线程,从而节点可以通过这些线程并发执行交易。例如,在待执行的交易有多个的情况下,区块链节点可以将多个交易分发至多个线程,以由各个线程分别执行(即并发执行)自身接收到的交易,从而提升区块链交易的整体执行效率。
在相关技术中,区块链节点通常按照负载均衡的原则为各个进程分发相同数量的交易,但由于执行不同区块链交易所需要的时长可能并不相同,所以上述分发方式容易限制交易执行效率和资源利用率。例如,在线程A将自身接收到的交易执行完毕后,若线程B尚未执行完毕,则区块链节点需要等待线程B执行完毕后才能够将线程A和B的执行结果统一提交。在上述等待过程中,线程A无法执行其他交易或事务。可见,上述交易分发方式使得各个线程完成交易的时刻差异较大,不仅导致区块链交易的整体执行效率较低,影响了执行结果的上链效率,而且一定程度上浪费了先执行完毕的线程的计算资源。
为解决相关技术中存在的上述问题,本说明书提出一种交易分发方法,基于预执行交易得到的交易耗时确定交易分组的分组预期耗时,并在交易分组的分发过程中引入分组预期耗时这一因素,从而确保N个计算进程分别执行自身所接收交易分组中的全部交易需要的时长能够趋于一致。下面结合附图对交易分发方案进行详细说明。
图2是一示例性实施例提供的一种交易分发方法的流程图。所述方法应用于区块链系统中的第一节点。所述第一节点可以为区块链系统中的任一区块链节点,示例性的,第一节点可以为发起共识提议的节点(如主节点),或者也可以为该节点之外的其他区块链节点(如从节点)。无论所述区块链系统中的主节点还是从节点,各个节点均可实现为任何具有计算/处理能力的装置、平台、设备或设备集群。其中,第一节点中可以包含多个进程,如包含控制进程和N(N为大于1的正整数)个计算进程。如图2所示,所述方法可以包括下述步骤202-206。
步骤202,所述控制进程获取待执行的多个交易以及各个交易的预执行信息,任一交易的预执行信息包括该交易的预执行读写集和交易耗时。
如前所述,第一节点可以为所述区块链系统中的主节点或者从节点。第一节点在所述区块链系统中扮演的角色不同,该节点获取待执行的多个交易以及各个交易的预执行信息的方式也有所不同。
以图1所示区块链系统中的任意两个节点:节点n1和节点n2为例,两节点中可以分别运行多个进程以提供多种服务。两节点的结构示意图可参见图3,节点n1和节点n2各自运行用于提供接入服务的接入进程(如节点n1中运行的接入进程1和节点n2中运行的接入进程2,下述进程编号与此类似,不再赘述)、用于提供缓存服务的缓存进程、用于提供预执行服务的预执行进程、用于提供网络服务的网络进程、用于提供共识服务的共识进程、用于提供区块管理服务的控制进程和用于提供存储服务的存储进程。此外,作为从节点的节点n1还可以运行用于提供计算服务的多个计算进程,如计算进程11、计算进程12和计算进程13。
其中,本说明书所述进程是指应用中具有一定独立功能的程序关于一个数据集合的一次运行活动,即进程是计算机中通过由CPU顺序执行应用程序中的指令而进行的一个过程,而每个进程在创建时被分配自己的内存地址空间。任一节点中的多个进程可以为多个计算设备或虚拟计算节点中的多个进程。此外需要说明的是,本说明书实施例提供的方案并不局限于主从架构的区块链系统;换言之,本方案所述的节点n1和节点n2可以为所述区块链系统中的任意两个区块链节点。
不妨假设所述节点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以缓存到待共识的交易队列中进行缓存。
在第一节点为所述区块链系统中的从节点的情况下,第一节点可以通过多种方式获取所述待执行的多个交易以及各个交易的预执行信息。下面以节点n1为例进行说明。
在一实施例中,所述控制进程可以从主节点发起且已通过共识的提议中获取多个交易以及各个交易的预执行信息。例如,在完成对交易的预执行后,节点n2可以针对其中的多个交易发起提议,以便由区块链系统中的多个共识节点(如所述主节点和多个从节点)参与针对该提议的共识,并在共识通过后将所述多个交易打包成区块上链。其中,节点n2发起的所述提议中可以包含所述多个交易(即步骤202所述的待执行的多个交易)以及各个交易的预执行信息,其中任一交易的预执行信息至少包括该交易的预执行读写集和交易耗时。具体的,节点n2可以通过网络进程2将所述提议传递(如广播)至区块链系统中的其他节点,如自身对应的各个从节点。相应的,节点n1在通过网络进程1接收到所述共识提议后,可以通过共识进程1参与针对该提议的共识过程。具体共识过程可以参见相关技术中的记载,此处不再赘述。因为所述提议中包含多个交易和各个交易的预执行信息,所以该提议通过同时即表明所述多个交易及其预执行信息通过共识,所以在所述提议被区块链系统中的各个共识节点共识通过的情况下,节点n1可以通过控制进程1直接从已通过共识的所述提议中获取交易及其预执行信息。
当然,作为主节点的节点n2也有可能是作恶节点,如可能被病毒入侵或可能被其他设备劫持等,因此提议中包含的各个交易的预执行信息可能并非其实际预执行信息,如某一交易的交易耗时可能并非其真实耗时(遭到篡改)等。对此,节点n1也可以在从所述提议中获取到各个交易的预执行信息的情况下,在使用自身包含的预执行进程1对各个交易进行预执行以得到相应的预执行信息,并将该预执行信息与从所述提议中获取的预执行信息进行比较:对于任一交易而言,节点n1可以在提议中包含的该交易的预执行信息与节点n1预执行该交易得到的预执行信息一致的情况下认可所述预执行信息。
在另一实施例中,第一节点中还可以包含预执行进程,此时所述控制进程可以从主节点发起且已通过共识的提议中获取多个交易,并调用所述预执行进程对获取到的各个交易进行预执行以得到相应的预执行信息。例如,作为主节点的节点n2可以在发起的所述提议中包含所述多个交易而不包含相应的预执行信息。在这种情况下,作为从节点的节点n1可以在所述提议共识通过后,通过控制进程1从已通过共识的所述提议中获取待执行的多个交易,并调用预执行进程1对获取到的所述交易进行预执行以得到相应的预执行信息。在该方式下,发起提议的节点n2可以不对所述多个交易进行预执行。换言之,节点n2可以通过缓存进程2从待处理的交易队列中获取待共识的多个交易,并直接发起针对这些交易的提议,由各个从节点在提议通过后分别预执行所述多个交易,从而一定程度上减轻主节点发起提议前的准备工作,降低其提议发起过程的工作量。另外,因为该方案中各个交易的预执行信息由节点n1自身的预执行进程1对交易进行预执行得到,所以节点n1自然认可该信息的真实性。
在通过上述方式获取到待执行的多个交易以及各个交易的预执行信息(并确认信息可信)的情况下,第一节点可以以分组的方式执行上述各个交易。
步骤202,所述控制进程根据所述预执行读写集将所述多个交易划分为M个交易分组,并根据各个交易分组中交易的交易耗时确定各个交易分组的分组预期耗时,各个交易分组中的交易互不相同,任一交易分组的分组预期耗时用于表征执行所述任一交易分组中全部交易需要的时长,M和N均为正整数,且M>N。
在一实施例中,所述多个交易之间可能存在依赖关系,因此控制进程可以基于交易之间的依赖关系划分交易分组。例如,控制进程可以先根据所述预执行读写集确定各个交易之间的依赖关系,再基于所述依赖关系将所述多个交易划分为M个交易分组,其中,存在依赖关系的多个交易被划分至同一交易分组,不存在依赖关系的多个交易被分别划分至不同的交易分组。需要说明的是,上述依赖关系可以具有传递性,如交易1→交易2(即交易1依赖交易2,下同),交易2→交易3,则可以认为交易1→交易3(交易1和交易2之间存在直接依赖、交易2和交易3之间直接依赖,而交易1和交易3之间存在间接依赖),因此可以将交易1、交易2和交易3划分至同一交易分组。由于划分后的各个交易分组可以被独立分发并执行,所以通过上述方式将存在依赖关系的多个交易划分至同一交易分组,能够确保存在依赖关系的各个交易被统一计算进程执行,从而有助于确保各个交易被按序执行,一定程度上避免执行出错。而将不存在依赖关系的多个交易分别划分至不同的交易分组,能够使得相互无关的多个交易被并发执行,从而提升交易的执行效率。
其中,任一交易的预执行读写集可以包括预执行读集和/或预执行写集,所述预执行读集和预执行写集分别用于表征针对状态数据的读取操作和写入操作(即所述预执行读集用于表征针对状态数据的读取操作,所述预执行写集用于表征针对状态数据的写入操作)。基于此,在任一交易的预执行读写集包括针对任一状态数据的预执行写集(即表明在执行所述任一交易的过程中需要执行针对所述任一状态数据的写入操作)的情况下,所述控制进程可以确定获取到的所述预执行读写集中针对所述任一状态数据的全部预执行读集和预执行写集对应的至少一个其他交易。例如,在通过前述方式获取到的预执行读写集中确定出针对任一状态数据的某一预执行读集的情况下,进一步确定该预执行读集对应的交易(即在执行该交易的过程中会执行针对所述任一状态数据的读取操作,从而产生所述任一预执行读集,该交易为区别于所述任一交易的其他交易),所述预执行写集对应的其他交易的确定方式与此类似,不再赘述。
另外可以理解的是,与任何交易都不存在依赖关系的任一交易,通过上述方式将无法确定出其对应的“其他交易”——所述任一交易会被单独划分至一个交易分组(即该交易分组中仅包含这一个交易)。所述任一交易可以满足下述之一的条件:任一交易的写入操作涉及的状态数据不会被所述多个交易中的其他交易读取或写入、任一交易的读取操作涉及的状态数据不会被所述多个交易中的其他交易写入、任一交易的读取操作涉及的状态数据仅被所述多个交易中的其他交易所读取等。当然,“任一状态数据被任一交易读取或写入”,应当被理解为“在计算进程执行所述任一交易的过程中,会执行针对所述任一数据的读取操作或写入操作”,特此说明。
进一步的,所述控制进程可由基于所述任一交易和所述其他交易的执行顺序,确定所述任一交易和所述其他交易之间的依赖关系。其中,各个交易的执行顺序可以通过前述提议中记录的交易信息确定,如所述提议中可以记录有所述多个交易的交易序号,该序号可以按照从大小到小或者从小到大的顺序表征各个交易执行的先后顺序。所述交易序号也可以包含在前述预执行信息中,不再赘述。由上述方式可见,若任一交易涉及针对任一状态数据的写入操作,则涉及该状态数据的写入操作和读取操作的各个交易均会与所述任一交易划分至同一交易分组。
示例性的,假设区块链系统中部署有智能合约Contract_A,该合约存在9个合约参数(即下述k1~k9),通过前述方式确定出8个交易(即下述Tx1~Tx8),若通过上述方式确定出各个交易的依赖关系为Tx2→Tx1(即Tx2依赖Tx1,下同),Tx2→Tx3,Tx8→Tx7→Tx6,Tx5与其他交易不存在依赖关系。基于上述依赖关系,控制进程可以将上述8个交易划分至4个交易分组(即下述Tx_group1~Tx_group4),各个交易分组的具体划分情况如下:
Tx_group1:<Tx1:40us,Tx2:50us>,w_set<a.k1,a.k2,a.k3>r_set<a.k1,a.k2,a.k3>
Tx_group2:<Tx3:10us,Tx4:20us>,w_set<a.k4,a.k5>r_set<a.k4,a.k5>
Tx_group3:<Tx5:100us>,w_set<a.k6>r_set<a.k6>
Tx_group4:<Tx6:40us,Tx7:50us,Tx8:60us>,w_set<a.k7,a.k8>r_set<a.k7,a.k8,a.k9>
以Tx_group1为例,首句代码Tx_group1:<Tx1:40us,Tx2:50us>,w_set<a.k1,a.k2,a.k3>r_set<a.k1,a.k2,a.k3>表明:Tx1的交易耗时为40us,Tx2的交易耗时为50us,Tx1和Tx2涉及针对交易参数k1、k2和k3的写入操作,且Tx1和Tx2涉及针对交易参数k1、k2和k3的读取操作,基于此可以确定Tx2→Tx1,所以将Tx1和Tx2划分至同一交易分组Tx_group1内。由上述代码可知,Tx1~Tx8的划分结果为[1,2]、[3,4]、[5]、[6,7,8]。
由上述划分结果可知,对于调用同一合约的各个交易,其中涉及相同合约参数(存在依赖)的各个交易将被划分至同一交易分组、涉及不同合约参数的(不存在依赖)的交易被划分在不同的交易分组。需要说明的是,上述实施例只是由智能合约的合约参数为例进行说明,本说明书实施例对于状态数据类型、所述多个交易的数量以及交易所涉及状态数据的数量等并不进行限定。
如前所述,任一交易分组的分组预期耗时用于表征执行该交易分组中全部交易需要的时长。考虑到任一交易的实际执行过程与预执行过程的具体操作并不存在本质区别,所以任一交易分组中全部交易的实际执行过程的耗时(即该交易分组的分组预期耗时)可以视为与所述全部交易的预执行过程的耗时相同。基于此,对于上述方式划分得到的任一交易分组,控制进程可以根据该交易分组中各个交易的交易耗时确定该交易分组的分组预期耗时。具体的,可以通过多种方式实现。
在一实施例中,在所述任一交易分组中仅包含一个交易的情况下,所述控制进程可以将该交易的交易耗时确定为所述任一交易分组的分组预期耗时。显然,任一交易分组中仅包含一个交易时,计算进程执行该交易分组的过程即为执行该交易的过程,因此该交易的交易耗时即可作为所述任一交易分组的分组预期耗时。承接于前述实施例,Tx_group3中仅包含Tx5这一个交易,所以可以将Tx5的交易耗时作为Tx_group3的分组预期耗时。
在另一实施例中,在所述任一交易分组中包含多个交易的情况下,所述控制进程可以根据所述多个交易之间的依赖关系确定所述多个交易构成的至少一个单向执行链路,以及,确定各个单向执行链路的单链路预期耗时,并将其中最大的单链路预期耗时确定为所述任一交易分组的分组预期耗时;其中,任一单向执行链路中的各个交易之间串行执行,任一单向执行链路的单链路预期耗时为该单向执行链路中各个交易的交易耗时之和。在该方式中,可以通过比较各个单向执行链路的单链路预期耗时准确确定出分组预期耗时。
例如,承接于前述实施例中的Tx_group4,该交易分组中所包含各个交易(即交易Tx6~Tx8)之间的依赖关系可以参见图4。如图4所示,Tx_group4中的各个交易构成一个单向执行链路L{Tx8→Tx7→Tx6},该链路的单链路预期耗时即为Tx6、Tx7和Tx8的交易预期耗时之和40us+50us+60us=150us。由于Tx_group4中仅存在这一个单向执行链路L,所以可以将该单向执行链路L的单链路预期耗时作为Tx_group4的分组预期耗时。
再例如,假设某一交易分组Tx_groupi中包含7个存在依赖关系的交易(即交易A~D),各个交易之间的依赖关系如图5所示。如图5所示的各个交易可以构成两条单向执行链路:L1{G→F→C→B→A}和L2{G→F→E→D→B→A},由于单向执行链路中的各个交易之间串行执行,所以链路L1的单链路预期耗时T1为构成链路L1的各个交易的交易耗时之和,即T1=20us+30us+80us+10us+60us=200us,链路L2的单链路预期耗时T2为构成链路L2的各个交易的交易耗时之和,即T2=20us+30us+50us+15us+10us+60us=185us。显然,T1>图,所以此时可以将T1作为Tx_groupi的分组预期耗时。
在又一实施例中,在所述任一交易分组中包含多个交易的情况下,所述控制进程可以根据所述多个交易之间的依赖关系确定所述多个交易构成的串行交易段和/或并行交易段,并根据确定出的各个交易段所包含交易的交易耗时确定所述任一交易分组的分组预期耗时;其中,任一交易段包含至少一个交易,包含多个交易的任一交易段中的各个交易被串行执行,所述串行交易段和并行交易段分别包含的交易被串行执行,以具有相同起点和/或相同终点的多个并行交易段分别包含的交易被并行执行,且所述多个并行交易段中的最长并行交易段所包含全部交易的交易耗时之和最大,所述任一交易分组的分组预期耗时为下述之和:各个串行交易段分别包含的全部交易的交易耗时,所述并行交易段中各个最长并行交易段分别包含的全部交易的交易耗时。
如图4所示,Tx_group4中的各个交易仅构成一个串行交易段LS{Tx8→Tx7→Tx6},而不存在并行交易段,所以此时Tx_group4的分组预期耗时可以为LS中全部交易的交易耗时之和,40us+50us+60us=150us。
如图5所示,各个交易可以构成两个串行交易段LS1{B→A}和LS2{G→F},以及两个并行交易段LP1{C}和LP2{D→E}。可以理解的是,任一交易段中的各个交易之间串行执行,LS1、LS2之间串行执行,LS1和LS2二者与LP1和LP2中任一交易段之间串行执行。对于并行交易段LP1和LP2,其中LP1中全部交易(即交易B)的交易耗时之和为80us、LP1中全部交易(即交易D和E)的交易耗时之和为65us,所以LP1为Tx_groupi中的最长并行交易段。基于此,Tx_groupi的分组预期耗时可以为:LS1和LS2中全部交易的交易耗时与LP1包含的全部交易的交易耗时,即Tx_groupi的分组预期耗时为(20us+30us)+(10us+60us)+(80us)=200us。
需要说明的是,图4和图5所示实施例仅是示例性的,本说明书实施例对于任一交易分组中各个交易构成的单向执行链路的数量、串行交易段和并行交易段的数量以及各个链路和交易段中交易的数量及其具体依赖关系并不进行限制。
通过上述方式,可以确定出被划分的M个交易分组中各个交易分组的分组预期耗时。此时,控制进程可以根据所述分组预期耗时将所述M各交易分组分发至所述N各计算单元执行。
步骤206,所述控制进程根据所述分组预期耗时将所述M个交易分组分发至所述N个计算进程执行,使所述N个计算进程的任务预期耗时趋于一致,其中,各个计算进程接收到的交易分组互不相同,任一计算进程的任务预期耗时为该计算进程执行自身所接收交易分组中的全部交易需要的时长。
通过上述实施例,对于区块链系统中的第一节点所包含的控制进程和N个计算进程,所述控制进程可以获取待执行的多个交易以及各个交易的预执行信息,任一交易的预执行信息包括该交易的预执行读写集和交易耗时;进而根据所述预执行读写集将所述多个交易划分为M个交易分组,并根据各个交易分组中交易的交易耗时确定各个交易分组的分组预期耗时,各个交易分组中的交易互不相同,任一交易分组的分组预期耗时用于表征执行所述任一交易分组中全部交易需要的时长,M和N均为正整数,且M>N;再根据所述分组预期耗时将所述M个交易分组分发至所述N个计算进程执行,使所述N个计算进程的任务预期耗时趋于一致,其中,各个计算进程接收到的交易分组互不相同,任一计算进程的任务预期耗时为该计算进程执行自身所接收交易分组中的全部交易需要的时长。
可以理解的是,任一交易的交易耗时是该交易预执行过程消耗的时长,该时长即可作为执行该交易的预期耗时;因此,在任一计算进程执行所述任一交易的过程中,实际需要的时长应当与该交易的交易耗时相同或接近。与之类似的,在将所述多个交易划分为M个交易分组后,控制进程可以根据所述交易的交易耗时确定各个交易分组的分组预期耗时,进而基于所述分组预期耗时分发各个交易。对于任一交易分组而言,接收到该分组的计算进程在执行该分组中的各个交易的过程中,实际需要的时长应当与该分组的分组预期耗时相同或接近。
基于此,控制进程可以合理控制将所述M个交易分组分发至N个计算进程,以使得N个计算进程的任务预期耗时(即计算进程执行自身所接收交易分组中的全部交易需要的时长)趋于一致,即确保N个计算进程尽量在同一时刻执行完成各自接收到的交易,或者完成各自接收到的交易的时刻尽量接近,避免了部分计算进程消耗较长时间等待其他计算进程执行完成。可见,该方案有助于所述控制进程将各个计算进程分别得到的交易执行结果并发上链,从而提升区块整体的上链速度,并有效减少等待导致的计算资源的浪费。
可以理解的是,在划分后的交易分组的数量(即M)大于可执行交易的计算进程的数量(即N)的情况下,对所述M个任务分组的分发情况将影响所述多个交易的整体执行效率,即影响所述多个交易全部执行完毕的整体耗时。在本说明书方案中,可以采用多种方式分发所述M个交易分组。
在一实施例中,所述控制进程可以将分组预期耗时最大的N个交易分组一一对应的下发至所述N个计算进程,以便所述N个计算进程分别执行自身接收到的交易分组中的各个交易。在任一计算进程执行接收到的交易分组中的各个交易完成后,控制进程可以将当前时刻尚未分发且分组预期耗时最大的交易分组发送至所述任一计算进程,直至分组预期耗时最小的交易分组被发送至计算进程后停止分发。可以理解的是,对于分组预期耗时最大的N个交易分组而言,各个交易分组的交易耗时的大小可能并不完全相同,而且各个交易分组的性能、可调用资源大小等也可能并不一致,因此各个交易分组执行将接收到的交易执行完成的时刻也可能并不相同。控制进程可以将所述M个交易分组按照分组预期耗时由大到小的顺序逐一分发给空闲的计算进程,即在任一时刻,哪个计算进程将自身接收到的交易分组中的交易执行完成(完成后该进程即处于空闲状态),控制进程就将当前时刻分组预期耗时最大的交易分组发送至该进程执行。通过该方式,可以根据各个计算进程的实际工作状态实时调整计算进程的分发策略,确保在M个交易分组未被分发完毕时,可以尽量缩短各个计算进程在执行一个交易分组中的交易完成后的等待时长(空闲状态的持续时长尽量短),从而提升计算进程的利用率和所述多个交易的整体执行效率。
承接于前述实施例,在Tx1~Tx8的划分结果为[1,2]、[3,4]、[5]、[6,7,8]的情况下,根据各个交易的交易耗时可知,Tx_group1~Tx_group4的分组预期耗时分别为:80us、30us、100us和150us。基于此,控制进程可以按照分组预期耗时的大小对Tx_group1~Tx_group4进行排序如下:Tx_group4、Tx_group3、Tx_group1、Tx_group2。不妨假设第一节点包含两个计算进程(即所述N=2),如CU1和CU2。在这种情况下,控制进程可以先将Tx_group4和Tx_group3分别发送至CU1和CU2(或者也可以分别发送至CU2和CU1),以由CU1和CU2分别执行Tx_group4和Tx_group3包含的交易。100us(或100us左右)后,若CU2执行Tx_group3中的交易完成(此时CU1还在执行Tx_group4中的交易),则控制进程可以将Tx_group1(此时分组预期耗时最大的交易分组)发送至CU2,以由CU2执行其中包含的交易。50us后,CU1执行Tx_group4中的交易完成(此时CU2还在执行Tx_group1中的交易),则控制进程可以将Tx_group2发送至CU1,以由CU1执行其中包含的交易。通过该方式,控制进程可以交替的将Tx_group2和Tx_group4分发至CU1、将Tx_group1和Tx_group3分发至CU2,由各个交易分组的分组预期耗时可知,在不考虑其他因素影响的情况下,CU1和CU2可以在同一时刻将自身接收到的最后一个交易分组中的交易执行完毕。
在另一实施例中,控制进程可以将所述N、M和各个交易分组的分组预期耗时输入算法模型进行处理,并接收所述算法模型基于贪心算法(greedy algorith,又称贪婪算法)输出的所述M个交易分组与所述N个计算进程之间的目标对应关系,以及,按照所述目标对应关系分发所述M个交易分组,其中,任一交易分组被分发至其对应的计算进程。所述算法模型中可以预先写入贪心算法的分配逻辑,使得该模型可以将各个交易分组的分组预期耗时作为分配依据将各个交易分组分别分配至相应的交易分组。可以理解的是,所述M个交易分组与所述N个计算进程之间的目标对应关系可以用于指导控制进程分发所述M各交易分组,即可以将任一交易分组发送至根据所述目标对应关系确定出的(与该交易分组相对应的)交易分组,以由该计算进程执行该交易分组中包含的各个交易。仍以前述Tx_group1~Tx_group4为例,所述算法模型输出的目标对象关系可以包括:Tx_group1和Tx_group3对应于CU2、Tx_group2和Tx_group4对应于CU1。通过该方式,控制进程可以将Tx_group1和Tx_group3发送至CU2,将Tx_group2和Tx_group4发送至CU1。同样的,CU1和CU2可以在同一时刻将自身接收到的交易分组中的各个交易执行完毕。
可见,通过上述方式分发所述M个交易分组,能够使所述N个计算进程的任务预期耗时趋于一致。其中,所述N个计算进程的任务预期耗时可能相同或者相互接近,如任意两个计算进程的任务预期耗时的差值不超出预设的时长阈值、任意两个计算进程的任务预期耗时的差值不超出(所述M个交易分组对应的)最小分组预期耗时等,不再赘述。
实际上,将任一交易分组发送至任一计算进程的过程中,需要控制进程读取本地(如前述内存中)保存的、属于所述任一交易分组的各个交易,然后通过预设方式将所述各个交易发送至所述任一计算进程——这一过程即为交易分组的调度过程。在一实施例中,控制进程可能需要向同一计算进程发送多个交易分组,此时,为了提升交易分组的发送效率,控制进程可以将所述多个交易分组统一调度至所述任一计算进程。通过该方式,只需要一次调度过程就能够将多个交易分组统一(一次性)调度至相应的交易分组,相对于逐一调度,显著减少了交易分组的调度次数和调度耗时,有助于提升待执行的全部交易的整体执行效率。
如前所述,控制进程可以按照各个交易之间的依赖关系将所述多个交易划分至M个交易分组。针对包含多个交易的交易分组,控制进程可以按照所述多个交易之间的依赖关系执行所述各个交易,其中,对于第一交易及其所依赖的第二交易,在执行第二交易完成后再执行第一交易;对于依赖于同一交易或被同一交易所依赖的第三交易和第四交易,若第三交易和第四交易互相不依赖,则通过不同的线程并发执行第三交易和第四交易。如图5所示,第一交易和第二交易可以分别为交易B和交易A,此时,接收到Tx_groupi的计算进程可以先执行交易A再执行交易B;类似的第一交易和第二交易也可以分别为交易G和交易F,此时,接收到Tx_groupi的计算进程可以先执行交易F再执行交易G。第三交易可以为交易C、第四交易可以为交易D和E,对此,接收到Tx_groupi的计算进程可以通过线程thread1执行交易C、并通过thread2依次执行交易D和E等。
通过该方式,不仅能够确保存在依赖关系的各个交易被按序执行,从而保证各个交易的执行结果的准确性,也能够通过并发执行第三交易和第四交易的方式提升不存在依赖关系的各个交易的整体执行效率。
另外需要说明的是,对于存在依赖关系的第一交易和第二交易,二者也可以分别为交易B和交易C,此时,应当先执行交易B再执行交易C。而且,由于交易F依赖交易C和交易E,所以在执行交易D和E完成后,还需要等待交易C执行完毕,再基于交易C和交易E的执行结果(如两交易的执行过程对某些状态参数进行了更新)执行交易F,特此说明。
在一实施例中,任一计算进程在执行任一交易分组中的各个交易完毕后,可以向所述控制进程返回相应的通知消息;相应的,若所述控制进程在所述任一交易分组对应的执行期限内未接收到所述任一计算进程返回的所述通知消息,则可以将所述任一交易分组重新发送至当前时刻的其他空闲计算进程执行,所述执行期限不小于所述任一交易分组的分组预期耗时。其中,所述通知消息可以包含所述任一交易分组中各个交易的执行结果或交易回执(Receipt)等信息。可以理解的是,所述控制进程在所述任一交易分组对应的执行期限内未接收到所述任一计算进程返回的所述通知消息,即表明所述任一计算进程并未在执行期限内顺利执行完毕所述任一交易分组中的各个交易,如可能出现资源不足、执行被强制暂停等异常情况,此时所述控制进程若继续等待该计算进程返回所述通知消息需要冒较大风险或者对交易执行不利,所以控制进程可以将该交易分组及时发送至其他计算进程执行,以确保这些计算进程能够被成功执行。可以理解的是,若所述控制进程在所述执行期限内成功接收到任一计算进程返回的所述通知消息,则控制进程可以按照预设规则处理该通知消息。
另外,在确定待执行的所述多个交易均被相应的计算进程执行完毕的情况下,若所述第一节点为区块链系统中的从节点,则该节点可以向发起系统中的其他节点(如主节点等)发送共识证明,该共识证明中可以包含所述多个交易所属区块的区块高度以及第一节点针对所述区块高度或区块哈希的签名。系统中的任一节点可以在接收到2f+1个节点(可以包括自身)的共识证明的情况下,确认系统中的大部分节点针对所述多个交易的执行结果一致,以通过该方式避免主节点作恶或者任一节点执行出错对链上区块可能产生的不利影响,从而确保区块执行结果的准确性。
对应于前述实施例,本说明书实施例还提出一种区块链系统,该系统包括第一节点和第二节点,第一节点中包含控制进程和N个计算进程,其中:
第二节点用于向第一节点发送待执行的多个交易以及各个交易的预执行信息,任一交易的预执行信息包括该交易的预执行读写集和交易耗时;
第一节点用于根据所述预执行读写集将所述多个交易划分为M个交易分组,并根据各个交易分组中交易的交易耗时确定各个交易分组的分组预期耗时,各个交易分组中的交易互不相同,任一交易分组的分组预期耗时用于表征执行所述任一交易分组中全部交易需要的时长,M和N均为正整数,且M>N;以及,根据所述分组预期耗时将所述M个交易分组分发至所述N个计算进程执行,使所述N个计算进程的任务预期耗时趋于一致,其中,各个计算进程接收到的交易分组互不相同,任一计算进程的任务预期耗时为该计算进程执行自身所接收交易分组中的全部交易需要的时长。
其中,所述第一节点和第二节点可以分别为所述区块链系统中的从节点和主节点,相应的交易分发过程的具体实现可以参见前述实施例的记载,此处不再赘述。
图6是一示例性实施例提供的一种区块链系统中的第一节点的结构示意图。如图6所示,所述第一节点中包含控制进程62和N个计算进程64,所述控制进程62用于:
获取待执行的多个交易以及各个交易的预执行信息,任一交易的预执行信息包括该交易的预执行读写集和交易耗时;
根据所述预执行读写集将所述多个交易划分为M个交易分组,并根据各个交易分组中交易的交易耗时确定各个交易分组的分组预期耗时,各个交易分组中的交易互不相同,任一交易分组的分组预期耗时用于表征执行所述任一交易分组中全部交易需要的时长,M和N均为正整数,且M>N;
根据所述分组预期耗时将所述M个交易分组分发至所述N个计算进程执行,使所述N个计算进程的任务预期耗时趋于一致,其中,各个计算进程接收到的交易分组互不相同,任一计算进程的任务预期耗时为该计算进程执行自身所接收交易分组中的全部交易需要的时长。
在一实施例中,所述控制进程62具体用于:
根据所述预执行读写集确定各个交易之间的依赖关系,并基于所述依赖关系将所述多个交易划分为M个交易分组,其中,存在依赖关系的多个交易被划分至同一交易分组,不存在依赖关系的多个交易被分别划分至不同的交易分组。
所述第一节点的交易分发过程的具体实现可以参见前述实施例的记载,此处不再赘述。
图7是一示例性实施例提供的一种设备的结构示意图。请参考图7,在硬件层面,该设备包括处理器702、内部总线704、网络接口706、内存708以及非易失性存储器710,当然还可能包括其他业务所需要的硬件。本说明书一个或多个实施例可以基于软件方式来实现,比如由处理器702从非易失性存储器710中读取对应的计算机程序到内存708中然后运行。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
虽然本说明书一个或多个实施例提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。例如若使用到第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
本说明书是参照根据本说明书实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储、石墨烯存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
本领域技术人员应明白,本说明书一个或多个实施例可提供为方法、系统或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
以上所述仅为本说明书一个或多个实施例的实施例而已,并不用于限制本本说明书一个或多个实施例。对于本领域技术人员来说,本说明书一个或多个实施例可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在权利要求范围之内。

Claims (14)

1.一种交易分发方法,应用于区块链系统中的第一节点,第一节点中包含控制进程和N个计算进程,所述方法包括:
所述控制进程获取待执行的多个交易以及各个交易的预执行信息,任一交易的预执行信息包括该交易的预执行读写集和交易耗时;
所述控制进程根据所述预执行读写集将所述多个交易划分为M个交易分组,并根据各个交易分组中交易的交易耗时确定各个交易分组的分组预期耗时,各个交易分组中的交易互不相同,任一交易分组的分组预期耗时用于表征执行所述任一交易分组中全部交易需要的时长,M和N均为正整数,且M>N;
所述控制进程根据所述分组预期耗时将所述M个交易分组分发至所述N个计算进程执行,使所述N个计算进程的任务预期耗时趋于一致,其中,各个计算进程接收到的交易分组互不相同,任一计算进程的任务预期耗时为该计算进程执行自身所接收交易分组中的全部交易需要的时长。
2.根据权利要求1所述的方法,所述控制进程根据所述预执行读写集将所述多个交易划分为M个交易分组,包括:
所述控制进程根据所述预执行读写集确定各个交易之间的依赖关系,并基于所述依赖关系将所述多个交易划分为M个交易分组,其中,存在依赖关系的多个交易被划分至同一交易分组,不存在依赖关系的多个交易被分别划分至不同的交易分组。
3.根据权利要求2所述的方法,任一交易的预执行读写集包括预执行读集和/或预执行写集,所述预执行读集和预执行写集分别用于表征针对状态数据的读取操作和写入操作,所述控制进程根据所述预执行读写集确定各个交易之间的依赖关系,包括:
所述控制进程在任一交易的预执行读写集包括针对任一状态数据的预执行写集的情况下,确定获取到的所述预执行读写集中针对所述任一状态数据的全部预执行读集和预执行写集对应的至少一个其他交易;
所述控制进程基于所述任一交易和所述其他交易的执行顺序,确定所述任一交易和所述其他交易之间的依赖关系。
4.根据权利要求2所述的方法,所述控制进程根据任一交易分组中交易的交易耗时确定该交易分组的分组预期耗时,包括下述之一:
所述控制进程在所述任一交易分组中仅包含一个交易的情况下,将该交易的交易耗时确定为所述任一交易分组的分组预期耗时;
所述控制进程在所述任一交易分组中包含多个交易的情况下,根据所述多个交易之间的依赖关系确定所述多个交易构成的至少一个单向执行链路,以及,确定各个单向执行链路的单链路预期耗时,并将其中最大的单链路预期耗时确定为所述任一交易分组的分组预期耗时;其中,任一单向执行链路中的各个交易之间串行执行,任一单向执行链路的单链路预期耗时为该单向执行链路中各个交易的交易耗时之和;
所述控制进程在所述任一交易分组中包含多个交易的情况下,根据所述多个交易之间的依赖关系确定所述多个交易构成的串行交易段和/或并行交易段,并根据确定出的各个交易段所包含交易的交易耗时确定所述任一交易分组的分组预期耗时;其中,任一交易段包含至少一个交易,包含多个交易的任一交易段中的各个交易被串行执行,所述串行交易段和并行交易段分别包含的交易被串行执行,以具有相同起点和/或相同终点的多个并行交易段分别包含的交易被并行执行,且所述多个并行交易段中的最长并行交易段所包含全部交易的交易耗时之和最大,所述任一交易分组的分组预期耗时为下述之和:各个串行交易段分别包含的全部交易的交易耗时,所述并行交易段中各个最长并行交易段分别包含的全部交易的交易耗时。
5.根据权利要求1所述的方法,所述控制进程根据所述分组预期耗时将所述M个交易分组分发至所述N个计算进程,包括:
所述控制进程将分组预期耗时最大的N个交易分组一一对应的下发至所述N个计算进程;以及,在任一计算进程执行接收到的交易分组中的各个交易完成后,将当前时刻尚未分发且分组预期耗时最大的交易分组发送至所述任一计算进程,直至分组预期耗时最小的交易分组被发送至计算进程后停止分发;或者,
所述控制进程将所述N、M和各个交易分组的分组预期耗时输入算法模型进行处理,并接收所述算法模型基于贪心算法输出的所述M个交易分组与所述N个计算进程之间的目标对应关系,以及,按照所述目标对应关系分发所述M个交易分组,其中,任一交易分组被分发至其对应的计算进程。
6.根据权利要求1所述的方法,所述控制进程将对应于任一计算进程的多个交易分组发送至该计算进程,包括:
所述控制进程将所述多个交易分组统一调度至所述任一计算进程。
7.根据权利要求1所述的方法,还包括:
任一计算进程在执行任一交易分组中的各个交易完毕后,向所述控制进程返回相应的通知消息;
若所述控制进程在所述任一交易分组对应的执行期限内未接收到所述任一计算进程返回的所述通知消息,则将所述任一交易分组重新发送至当前时刻的其他空闲计算进程执行,所述执行期限不小于所述任一交易分组的分组预期耗时。
8.根据权利要求1所述的方法,任一计算进程执行任一交易分组中的各个交易,包括:
所述任一计算进程按照所述各个交易之间的依赖关系执行各个交易;
其中,对于第一交易及其所依赖的第二交易,在执行第二交易完成后再执行第一交易;对于依赖于同一交易或被同一交易所依赖的第三交易和第四交易,若第三交易和第四交易互相不依赖,则通过不同的线程并发执行第三交易和第四交易。
9.根据权利要求1所述的方法,第一节点为所述区块链系统中的从节点,所述控制进程获取待执行的多个交易以及各个交易的预执行信息,包括下述之一:
所述控制进程从主节点发起且已通过共识的提议中获取多个交易以及各个交易的预执行信息;
在第一节点中还包含预执行进程的情况下,所述控制进程从主节点发起且已通过共识的提议中获取多个交易,并调用所述预执行进程对获取到的各个交易进行预执行以得到相应的预执行信息。
10.一种交易分发装置,所述装置包含控制进程和N个计算进程,所述装置包括:
信息获取模块,用于使所述控制进程获取待执行的多个交易以及各个交易的预执行信息,任一交易的预执行信息包括该交易的预执行读写集和交易耗时;
交易分组模块,用于使所述控制进程根据所述预执行读写集将所述多个交易划分为M个交易分组,并根据各个交易分组中交易的交易耗时确定各个交易分组的分组预期耗时,各个交易分组中的交易互不相同,任一交易分组的分组预期耗时用于表征执行所述任一交易分组中全部交易需要的时长,M和N均为正整数,且M>N;
交易分发模块,用于使所述控制进程根据所述分组预期耗时将所述M个交易分组分发至所述N个计算进程执行,使所述N个计算进程的任务预期耗时趋于一致,其中,各个计算进程接收到的交易分组互不相同,任一计算进程的任务预期耗时为该计算进程执行自身所接收交易分组中的全部交易需要的时长。
11.根据权利要求10所述的装置,所述交易分组模块具体用于:
使所述控制进程根据所述预执行读写集确定各个交易之间的依赖关系,并基于所述依赖关系将所述多个交易划分为M个交易分组,其中,存在依赖关系的多个交易被划分至同一交易分组,不存在依赖关系的多个交易被分别划分至不同的交易分组。
12.一种区块链系统,包括第一节点和第二节点,第一节点中包含控制进程和N个计算进程,其中:
第二节点用于向第一节点发送待执行的多个交易以及各个交易的预执行信息,任一交易的预执行信息包括该交易的预执行读写集和交易耗时;
第一节点用于根据所述预执行读写集将所述多个交易划分为M个交易分组,并根据各个交易分组中交易的交易耗时确定各个交易分组的分组预期耗时,各个交易分组中的交易互不相同,任一交易分组的分组预期耗时用于表征执行所述任一交易分组中全部交易需要的时长,M和N均为正整数,且M>N;以及,根据所述分组预期耗时将所述M个交易分组分发至所述N个计算进程执行,使所述N个计算进程的任务预期耗时趋于一致,其中,各个计算进程接收到的交易分组互不相同,任一计算进程的任务预期耗时为该计算进程执行自身所接收交易分组中的全部交易需要的时长。
13.一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如权利要求1-9中任一项所述的方法。
14.一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如权利要求1-9中任一项所述方法的步骤。
CN202211626970.3A 2022-12-16 2022-12-16 交易分发方法、节点和区块链系统 Active CN116308772B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211626970.3A CN116308772B (zh) 2022-12-16 2022-12-16 交易分发方法、节点和区块链系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211626970.3A CN116308772B (zh) 2022-12-16 2022-12-16 交易分发方法、节点和区块链系统

Publications (2)

Publication Number Publication Date
CN116308772A CN116308772A (zh) 2023-06-23
CN116308772B true CN116308772B (zh) 2023-10-13

Family

ID=86826393

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211626970.3A Active CN116308772B (zh) 2022-12-16 2022-12-16 交易分发方法、节点和区块链系统

Country Status (1)

Country Link
CN (1) CN116308772B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116703601B (zh) * 2023-08-03 2024-01-19 腾讯科技(深圳)有限公司 基于区块链网络的数据处理方法、装置、设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113608869A (zh) * 2021-07-21 2021-11-05 中央广播电视总台 任务调度方法、装置、电子设备和计算机存储介质
CN113744063A (zh) * 2021-11-04 2021-12-03 支付宝(杭州)信息技术有限公司 区块链中执行交易的方法及装置
CN114942847A (zh) * 2022-05-30 2022-08-26 蚂蚁区块链科技(上海)有限公司 执行交易的方法和区块链节点
CN115129727A (zh) * 2022-05-30 2022-09-30 蚂蚁区块链科技(上海)有限公司 状态数据的提交方法、节点和区块链系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20180158034A1 (en) * 2016-12-07 2018-06-07 International Business Machines Corporation Dynamic reordering of blockchain transactions to optimize performance and scalability

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113608869A (zh) * 2021-07-21 2021-11-05 中央广播电视总台 任务调度方法、装置、电子设备和计算机存储介质
CN113744063A (zh) * 2021-11-04 2021-12-03 支付宝(杭州)信息技术有限公司 区块链中执行交易的方法及装置
CN114942847A (zh) * 2022-05-30 2022-08-26 蚂蚁区块链科技(上海)有限公司 执行交易的方法和区块链节点
CN115129727A (zh) * 2022-05-30 2022-09-30 蚂蚁区块链科技(上海)有限公司 状态数据的提交方法、节点和区块链系统

Also Published As

Publication number Publication date
CN116308772A (zh) 2023-06-23

Similar Documents

Publication Publication Date Title
Sundar et al. Offloading dependent tasks with communication delay and deadline constraint
TWI791389B (zh) 任務調度方法、裝置及電腦可讀存儲介質
Wang et al. Workflow as a service in the cloud: architecture and scheduling algorithms
CN105045658B (zh) 一种利用多核嵌入式dsp实现动态任务调度分发的方法
CN103593242B (zh) 基于Yarn框架的资源共享控制系统
CN106293950B (zh) 一种面向集群系统的资源优化管理方法
CN104580396A (zh) 一种任务调度方法、节点及系统
Sun et al. Towards distributed machine learning in shared clusters: A dynamically-partitioned approach
Kang et al. Dynamic scheduling strategy with efficient node availability prediction for handling divisible loads in multi-cloud systems
CN103412786A (zh) 一种高性能服务器架构系统及数据处理方法
CN116308772B (zh) 交易分发方法、节点和区块链系统
CN111861412B (zh) 面向完成时间优化的科学工作流调度方法及系统
CN110990154B (zh) 一种大数据应用优化方法、装置及存储介质
CN104239555A (zh) 基于mpp的并行数据挖掘架构及其方法
CN115237580B (zh) 面向智能计算的流水并行训练自适应调整系统、方法
CN103761146A (zh) 一种MapReduce动态设定slots数量的方法
Schildt et al. Candis: Heterogenous mobile cloud framework and energy cost-aware scheduling
CN116703601B (zh) 基于区块链网络的数据处理方法、装置、设备及存储介质
CN111240824A (zh) 一种cpu资源调度方法及电子设备
Salman et al. Scheduling elastic applications in compositional real-time systems
Li et al. On scheduling of high-throughput scientific workflows under budget constraints in multi-cloud environments
Alamro et al. Shed+: optimal dynamic speculation to meet application deadlines in cloud
CN116703580A (zh) 交易分发方法、节点和区块链系统
WO2022111466A1 (zh) 任务调度方法、控制方法、电子设备、计算机可读介质
CN115208900A (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