CN117408702A - 区块链系统中的交易处理方法和区块链节点 - Google Patents
区块链系统中的交易处理方法和区块链节点 Download PDFInfo
- Publication number
- CN117408702A CN117408702A CN202311437155.7A CN202311437155A CN117408702A CN 117408702 A CN117408702 A CN 117408702A CN 202311437155 A CN202311437155 A CN 202311437155A CN 117408702 A CN117408702 A CN 117408702A
- Authority
- CN
- China
- Prior art keywords
- transactions
- transaction
- resource
- payment account
- resource payment
- 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
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 12
- 238000000034 method Methods 0.000 claims abstract description 90
- 238000012545 processing Methods 0.000 claims abstract description 21
- 230000008569 process Effects 0.000 claims description 50
- 238000004590 computer program Methods 0.000 claims description 12
- 238000004364 calculation method Methods 0.000 claims description 8
- 230000006870 function Effects 0.000 description 12
- 238000010586 diagram Methods 0.000 description 10
- 230000006872 improvement Effects 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 230000007246 mechanism Effects 0.000 description 5
- 238000004422 calculation algorithm Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000007726 management method Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 2
- 239000000463 material Substances 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 108010001267 Protein Subunits Proteins 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000007795 chemical reaction product Substances 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 230000005055 memory storage Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 229920001296 polysiloxane Polymers 0.000 description 1
- 239000000047 product Substances 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000013468 resource allocation Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 239000010979 ruby Substances 0.000 description 1
- 229910001750 ruby Inorganic materials 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Payment architectures, schemes or protocols
- G06Q20/38—Payment protocols; Details thereof
- G06Q20/40—Authorisation, 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/405—Establishing or using transaction specific rules
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
Landscapes
- Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- Accounting & Taxation (AREA)
- Computer Security & Cryptography (AREA)
- Finance (AREA)
- Economics (AREA)
- Development Economics (AREA)
- Strategic Management (AREA)
- Physics & Mathematics (AREA)
- General Business, Economics & Management (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
一种区块链系统中的交易处理方法和区块链节点,用于处理属于相同区块的多个交易,第i个交易中包括允许其消费的第一资源数量以及资源支付账户。该方法包括:对多个交易进行分组,其中未利用多个交易各自包括的资源支付账户;对于多个交易所包括的若干资源支付账户中任意的第j个资源支付账户,按照多个交易的排列顺序,从多个交易中确定出包括第j个资源支付账户的若干交易;当若干交易中的前k个交易各自包括的第一资源数量的和大于第j个资源支付账户所持有目标资源的当前数量,并且前k‑1个交易各自包括的第一资源数量的和不大于该当前数量时,对位于第k‑1个交易之后的交易标记预设标签;按照多个交易的分组结果,并发执行未标记预设标签的交易。
Description
技术领域
本说明书实施例属于区块链技术领域,尤其涉及一种区块链系统中的交易处理方法和区块链节点。
背景技术
区块链(Blockchain)是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链系统中按照时间顺序将数据区块以顺序相连的方式组合成链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本。由于区块链具有去中心化、信息不可篡改、自治性等特性,区块链也受到人们越来越多的重视和应用。
发明内容
本发明的目的在于提供一种区块链系统中的交易处理方法和区块链节点。
第一方面,提供了一种区块链系统中的交易处理方法,用于处理属于相同区块的多个交易,对于所述多个交易中任意的第i个交易,其中包括允许所述第i个交易消费目标资源的第一资源数量,以及用于支付所述第i个交易所消费目标资源的资源支付账户;所述方法包括:对所述多个交易进行分组,其中未利用所述多个交易各自包括的资源支付账户;对于所述多个交易所包括的若干资源支付账户中任意的第j个资源支付账户,按照所述多个交易的排列顺序,从所述多个交易中确定出包括所述第j个资源支付账户的若干交易;当所述若干交易中的前k个交易各自包括的第一资源数量的和大于所述第j个资源支付账户所持有目标资源的当前数量,所述若干交易中的前k-1个交易各自包括的第一资源数量的和不大于所述第j个资源支付账户所持有目标资源的当前数量时,对所述若干交易中位于所述第k-1个交易之后的各个交易标记预设标签;按照所述多个交易的分组结果,并发执行所述多个交易中未标记预设标签的交易。
第二方面,提供了一种区块链系统中的区块链节点,用于处理属于相同区块的多个交易,对于所述多个交易中任意的第i个交易,其中包括允许所述第i个交易消费目标资源的第一资源数量,以及用于支付所述第i个交易所消费目标资源的资源支付账户;所述区块链节点包括:交易分组单元,配置为对所述多个交易进行分组,其中未利用所述多个交易各自包括的资源支付账户;交易确定单元,配置为对于所述多个交易所包括的若干资源支付账户中任意的第j个资源支付账户,按照所述多个交易的排列顺序,从所述多个交易中确定出包括所述第j个资源支付账户的若干交易;交易标记单元,配置为当所述若干交易中的前k个交易各自包括的第一资源数量的和大于所述第j个资源支付账户所持有目标资源的当前数量,所述若干交易中的前k-1个交易各自包括的第一资源数量的和不大于所述第j个资源支付账户所持有目标资源的当前数量时,对所述若干交易中位于所述第k-1个交易之后的各个交易标记预设标签;交易处理单元,配置为按照所述多个交易的分组结果,并发执行所述多个交易中未标记预设标签的交易。
第三方面,提供了一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一方面中提供的方法。
第四方面,提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算设备中执行时,计算设备执行第一方面中提供的方法。
本说明书实施例提供的技术方案中,对多个交易所涉及若干资源支付账户中的任意资源支付账户,通过包括该资源支付账户的若干交易自身允许消费的第一资源数量,以及该资源支付账户所持有目标资源的当前数量,可以从该若干交易中确定并标记出排列位置靠后且可能因目标资源不足而执行失败的交易。对于该若干交易中未被标记的交易而言,该资源支付账户必定持有足够的目标资源来按照其允许的第一资源数量对其进行执行,无需对该部分交易中未被标记的交易进行串行执行,因而无需对多个交易进行分组的过程无需分析并使用其各自包括的资源支付账户。相应的,区块链节点仅需要按照多个交易的分组结果,并发执行未被标记的交易即可,可实现在确保交易执行的公平性的情况下,提高交易执行的并行度。
附图说明
为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本说明书实施例中示例性提供的一种区块链系统的架构图;
图2为本说明书实施例中提供的一种区块链系统中的交易处理方法的流程图;
图3为本说明书实施例中示例性提供的一种交易的数据结构示意图;
图4为本说明书实施例中示例性提供的区块链节点中并发处理多个交易的过程示意图;
图5为本说明书实施例中提供的一种区块链节点的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
图1为本说明书实施例中示例性提供的一种区块链系统的架构图。区块链系统可以包括N个区块链节点,其中图1中示例性的示出了节点1-节点8等8个区块链节点。节点之间的连线示意性的表示节点与节点之间的连接,前述连接例如可以为传输控制协议(transmission control trotocol,TCP)连接,前述连接用于支持在不同节点之间传输数据。
区块链系统中需要持久化存储的系统数据可以被划分为区块数据和状态数据两部分。
区块数据包括按照区块高度(或称为区块号)递增的一个或多个区块,单个区块可以包括区块头和区块体。区块头中可以包括前一区块的区块哈希previous_Hash(或者称为父hash)、时间戳Timestamp、区块号BlockNum、状态根哈希State_Root、交易根哈希Transaction_Root以及收据根哈希Receipt_Root等。区块体中可以包括交易集合和收据集合。
区块链系统中的交易是指在区块链系统中执行并记录在区块链系统中的任务单元。单个交易中通常包括发送字段(From)、接收字段(To)和数据字段(Data),其中From字段包括发起该交易的账户(即发送方账户),To字段可能包括该交易涉及/指向的另一个账户。
对于任意第k个区块,可以根据区块高度(或称为区块号)为k-1的状态数据,执行属于第k个区块的交易集合中所包括的按顺序排列的多个交易,获得该多个交易的执行结果。进而根据该多个交易的执行结果更新区块高度为k-1的状态数据,获得区块高度为k的状态数据。
区块链系统中的共识机制是区块链节点就区块信息达成全网相同共识的机制,可以保证最新获得的区块被准确存储。当前主流的共识机制包括:工作量证明(Proof ofWork,POW)、股权证明(Proof of Stake,POS)、委任权益证明(Delegated Proof of Stake,DPOS)、实用拜占庭容错(Practical Byzantine Fault Tolerance,PBFT)算法等。其中在各种共识算法中,通常在预设数目的共识节点对待共识的数据达成相同之后,确定对待共识的数据达成共识。例如在PBFT算法中,假设当最多存在f个节点失效时,如果存在总数为至少3f+1个节点,就能保证在整个区块链系统中提供安全性和活性。
区块链节点从与其连接的客户端或者其它区块链节点接收到交易后,可以对该交易进行验证。通过验证的交易将会作为待共识交易加入到相应的交易池/交易缓存池。区块链节点还可以从交易池选择属于任意第k个区块的多个交易来生成其对应共识提议,该共识提议可以指示属于第k个区块的多个交易以及该多个交易在第k个区块中的排列顺序;接着区块链节点按照前述的各种共识机制对该共识提议进行共识;对该共识提议达成共识后,区块链节点即可对该多个交易进行执行,并在完成执行该多个交易之后,从交易池中删除该多个交易。
部分区块链系统支持采用并行技术来提升区块链系统的性能。典型示例中,对任意第k个区块的共识提议达成共识后,区块链节点可以对属于第k个区块的多个交易进行读写冲突分析,基于分析结果将该多个交易划分成M个交易分组,并将该M个交易分组对应的调度至区块链节点所包括的M个计算进程或M个计算线程,由M个计算进程或M个计算线程并行处理该M个分组中的交易。其中需要特别说明的是,进程(Process)是指计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配的基本单位,是操作系统结构的基础;M个计算线程可以作为计算引擎的执行线程,其中前述的计算引擎可能包括若干计算进程,单个计算进程中可能包括若干计算进程。
区块链节点执行某个交易时,执行结果包括该交易对应的读写集。读写集可能包括读集和/或写集。读集中包含若干唯一键(key),还包括从已提交的世界状态中读取的与前述各个key相对应的键值(value)。写集中也包含若干唯一键(key),还包括期望提交的与前述各个key相对应的键值(value);此外如果某个交易对世界状态中的某个key进行删除处理,则写集中还会对被删除的key记录相应的标记。对用于调用智能合约的合约调用交易而言,其写集中还可能不仅仅包含与外部账户相关的状态参数,还可能涉及与智能合约的合约状态相关的若干合约参数。结合以上,前述的key可以对应区块链系统中的账户或者账户下的某个字段。
将多个交易划分为M个交易分组时,通常需要确保位于任意两个交易分组中的任意两个交易互不冲突。任意两个交易互不冲突具体是指任意两个交易不存在如下情况之一:一个交易的读集与另一个交易的写集中包括相同的key、一个交易的写集和另一个交易的写集中包括相同的key。而对于存在冲突的任意两个交易,则其需要被划分到相同的交易分组中,换而言之即如果该任意两个交易各自的写集中包含相同的key,即认为该任意两个冲突交易访问了相同的参数而存在冲突,该任意两个交易需要被划分到相同的交易分组;如果该任意两个交易中的一个交易的读集与另一个交易的写集中包含相同的key,即认为该任意两个交易访问了相同的参数而存在冲突,该任意两个交易需要被划分到相同的交易分组。在另一种可能的实施方式中,为了高效的实现确定出前述多个交易的分组信息或者说高效的完成将前述多个交易划分为M个交易分组,通常可以按照位于任意两个不同的交易分组中的任意两个交易不访问相同参数(即不包含相同的key)的要求来对前述多个交易进行分组。
区块链节点中的计算进程或计算线程在执行与其对应的交易分组中所包括的交易时,需要消费区块链节点的计算资源,尤其对于请求部署智能合约以及请求调用智能合约的交易而言,区块链节点在执行该交易的过程中可能需要执行大量指令。与之相应的是,区块链系统中可以定义一种目标资源,目标资源例如可以是某种形式的Token或者其它数字资源;区块链节点可以按照其自身预先定义的某种规则,从交易自身所指定的资源支付账户扣除相应数量的目标资源,作为该交易因使用区块链系统的计算资源而支付的资源使用费。
示例性的,区块链节点的计算进程或者计算线程在执行交易的过程中,可以基于该交易消费的指令或者因执行该交易而处理的数据量,尽可能实时的统计执行该交易的过程中所消费目标资源的资源消费数量,进而按照资源消费数量,从该交易指定的资源支付账户扣减其持有的目标资源;如果该交易指定的资源支付账户所持有的目标资源,不足以支付该交易所消费的目标资源,即该资源支付账户所持有目标资源的当前资源数量小于该交易对应的资源消费数量,则计算进程或者计算线程可以终止对该交易的执行,该交易执行失败且该资源支付账户所持有的目标资源被清零。
单个交易中可能指定除其自身所包括的发送方账户和接收方账户以外的其它账户作为该交易的资源支付账户,而且属于相同区块的多个交易中可能存在部分交易会指定相同资源支付账户。如果该相同资源支付账户所持有目标资源的当前数量,不足以支付成功执行该部分交易时所需消费的目标资源,则该部分交易中会存在部分交易无法被成功执行。
在一种可能的实施方式中,为了确保交易执行的公平性,对于指定相同资源支付账户的部分交易而言,需要将该相同资源支付账户作为该部分交易的冲突key,将该部分交易划分至相同的交易分组;与之相应的是,对应的计算进程或者计算线程则需要按照该部分交易在多个交易中的排列位置,串行执行该部分交易,使得该部分交易中排列位置越靠前的交易,越不会因其指定的资源支付账户所持有的目标资源不足而执行失败。该实施方式将影响交易执行的并行度。
本说明书实施例中至少提供了一种区块链系统中的交易处理方法和区块链节点。对属于相同区块的多个交易中任意的第i个交易,其中包括允许第i个交易消费目标资源的第一资源数量,以及用于支付第i个交易所消费目标资源的资源支付账户。区块链节点可以首先对多个交易进行分组,分组过程中未利用多个交易各自包括的资源支付账户;接着,对于多个交易所包括的若干资源支付账户中任意的第j个资源支付账户,按照多个交易的排列顺序,从多个交易中确定出包括所述第j个资源支付账户的若干交易;当若干交易中的前k个交易各自包括的第一资源数量的和大于第j个资源支付账户所持有目标资源的当前数量,若干交易中的前k-1个交易各自包括的第一资源数量的和不大于第j个资源支付账户所持有目标资源的当前数量时,对若干交易中位于所述第k-1个交易之后的各个交易标记预设标签;最后,按照多个交易的分组结果,并发执行多个交易中未标记预设标签的交易。
本说明书实施例中,对多个交易所涉及若干资源支付账户中的任意资源支付账户,通过包括该资源支付账户的若干交易自身允许消费的第一资源数量,以及该资源支付账户所持有目标资源的当前数量,可以从该若干交易中确定并标记出排列位置靠后且可能因目标资源不足而执行失败的交易。对于该若干交易中未被标记的交易而言,该资源支付账户必定持有足够的目标资源来按照其允许的第一资源数量对其进行执行,无需对该部分交易中未被标记的交易严格实施串行执行,因而对多个交易进行分组的过程无需分析并使用其各自包括的资源支付账户。相应的,区块链节点仅需要按照多个交易的分组结果,并发执行未被标记的交易即可,可实现在确保交易执行的公平性的情况下,提高交易执行的并行度。
图2为本说明书实施例中提供的一种区块链系统中的交易处理方法的流程图。
该方法可以由区块链系统中的区块链节点执行,该方法用于处理属于相同区块的多个交易。例如,区块链节点可以在对任意第k个区块所对应的共识提议达成共识后,根据该共识提议的指示,从交易池或者其它位置确定出属于第k个区块并按顺序排列的多个交易。
对于多个交易中任意的第i个交易(记为交易Txi),其中包括允许交易Txi消费目标资源的第一资源数量(记为资源数量S1i),以及用于支付交易Txi所消费目标资源的资源支付账户。
交易Txi中既可以指定其包括的发送方账户或者接收方账户作为其资源支付账户,也可以指定不同于发送方账户和接收方账户的其它账户作为其资源支付账户。
交易Txi包括交易本体,其中包括发送方账户、接收方账户、资源支付账户以及允许交易Txi消费目标资源的资源数量S1i;该交易Txi中还包括发送方账户对交易本体的第一签名。当资源支付账户不同于发送方账户时,交易Txi中还包括资源支付账户对交易本体的第二签名。
示例性的,参见图3所示。持有账户C1的用户U1可以在客户端A1中,首先构造出交易Txi的交易本体,其中该交易本体的From字段包括发送方账户C1,To字段包括接收方账户C2,Data字段包括通过特定子字段例如target声明的资源支付账户C3、通过特定子字段例如gas limit声明的资源数量S1i;接着可以利用账户C1的私钥对交易本体进行签名以获得签名Sc1,并向持有账户C3的用户U3所对应的客户端A3提供该交易本体和签名Sc1。进而当用户U3同意通过其持有的账户C3为交易Txi支付目标资源的情况下,可以利用账户C3的私钥对交易本体进行签名以获得签名Sc3。最后,交易本体、签名Sc1和签名Sc3组成交易Txi,由客户端A1或客户端A3发送到区块链系统中的某个区块链节点。其中图3示例性提供的交易Txi的结构仅仅是示例性的,例如交易本体中也可以通过与Data字段并列的其它特定字段,单独声明交易Txi指定的资源支付账户C3以及允许交易Txi消费目标资源的资源数量S1i。
允许交易Txi消费的目标资源的资源数量S1i可以由用户自定义。
当交易Txi中指定的资源支付账户不同于交易Txi的发送方账户时,交易Txi中包括资源支付账户对交易本体的第二签名,区块链节点接收并验证交易Txi的过程中,不仅需要验证交易Txi的发送方账户对应的第一签名,还需要验证交易Txi的资源支付账户对应的第二签名。
参照图2所示,该方法可以包括但不限于如下步骤S201~步骤S209中的部分或全部。
步骤S201,对多个交易进行分组,其中未利用多个交易各自包括的资源支付账户。
对多个交易进行分组的过程中,需要确保位于任意两个交易分组中的任意两个交易,其读写集中除资源支付账户以外的唯一键(key)互不存在读写冲突。
区块链节点中可以包括预执行服务,预执行服务可以对多个交易进行预执行,获得该多个交易各自的预执行读写集;进而,可以根据预执行读写集对多个交易进行分组。对交易Txi进行预执行的过程中,无需按照交易Txi中指定的资源支付账户,对该资源支付账户的所持有的目标资源进行读写;于是,当交易Txi所包括的资源支付账户不同于其包括的发送方账户和接收方账户时,交易Txi的预执行读写集中则并不包括第i个交易所包括的资源支付账户。
区块链节点也可能在无需对交易进行预执行的情况下,对多个交易进行分组,并确保位于任意两个交易分组中的任意两个交易的读写集中除资源支付账户以外的唯一键(key)互不存在读写冲突。例如,区块链节点可以直接将交易所包括的发送方账户和接收方账户均作为其读集和写集中的key,进而按照多个交易各自的读集和写集中的key对多个交易进行分组。
未利用多个交易的资源支付账户对多个交易进行分组的情况下,相比于利用多个交易的资源支付账户对多个交易进行分组的情况下,所获得交易分组的数量相对较高。下面以对如下表1所示按顺序排列的交易Tx1~交易Tx5进行分组为例,进行示例性的说明。
交易 | 发送方账户 | 接收方账户 | 资源支付账户 |
Tx1 | K01 | K02 | K00 |
Tx2 | K03 | K04 | K00 |
Tx3 | K05 | K06 | K00 |
Tx4 | K07 | K08 | K09 |
Tx5 | K08 | K10 | K11 |
表1
参见表1示例的交易Tx1~交易Tx5各自包括的发送方账户、接收方账户和资源支付账户。
如果利用交易Tx1~交易Tx5中的资源支付账户,对交易Tx1对交易Tx5进行分组,则K00为交易Tx1~交易Tx3的冲突key,交易Tx1~交易Tx3需要划分到相同的交易分组;K08为交易Tx4和交易Tx5的冲突key,交易Tx4和交易Tx5需要划分到相同的交易分组;即,交易Tx1~交易Tx5将会被划分成2个交易分组,与之相应的是交易执行的并行度为2。
如果未利用交易Tx1~交易Tx5中的资源支付账户,对交易Tx1对交易Tx5进行分组,则K00不会作为交易Tx1~交易Tx3的冲突key,交易Tx1~交易Tx3可以划分到3个不同的交易分组;K08并非交易Tx4和交易Tx5的资源支付账户,其仍然会作为交易Tx4和交易Tx5的冲突key,交易Tx4和交易Tx5需要划分到相同的交易分组;即,交易Tx1~交易Tx5将会被划分成4个交易分组,与之相应的是交易执行的并行度为4。
步骤S203,对于多个交易所包括的若干资源支付账户中任意的第j个资源支付账户,按照多个交易的排列顺序,从多个交易中确定出包括第j个资源支付账户的若干交易。
以多个交易包括前述示例的交易Tx1~交易Tx5为例,其包括的若干资源支付账户是K00,K09和K11。对于该若干资源支付账户中的资源支付账户K00而言,可以按照交易Tx1~交易Tx5的排列顺序,从交易Tx1~交易Tx5中确定出资源支付账户为K00的若干交易具体包括交易Tx1~交易Tx3。类似的,可以按照相同方式确定K09和K11各自对应的若干交易。
步骤S205,对于包括第j个资源支付账户的若干交易,当若干交易中的前k个交易各自包括的第一资源数量的和大于第j个资源支付账户所持有目标资源的当前数量,并且若干交易中的前k-1个交易各自包括的第一资源数量的和不大于第j个资源支付账户所持有目标资源的当前数量的,对若干交易中位于第k-1个交易之后的各个交易标记预设标签。
举例来说,对于包括资源支付账户K00的交易Tx1~交易Tx3,如果该3个交易中的前3个交易即交易Tx1~交易Tx3各自包括的第一资源数量的和大于资源支付账户K00所持有目标资源的当前数量,而该3个交易中的前2个交易即交易Tx1和交易Tx2各自包括的第一资源数量的和不大于资源支付账户K00所持有目标资源的当前数量。那么,说明在为了确保公平性,使得在多个交易中排列位置越靠前的交易,越不应当因其指定的资源支付账户所持有目标资源不足而导致其未能被成功执行的情况下,资源支付账户K00所持有的目标资源可能不足以支持区块链节点成功执行交易Tx3。与之相应的,可以对交易Tx3设置预设标签,用于指示区块链节点中的相关计算进程或者计算线程在后续过程中无需对交易Tx3进行执行。
参见图4所示,可以通过与多个交易相对应的比特序列来实现对交易设置预设标签。例如对于按顺序排列的交易Tx1~交易Tx5等5个交易,可以维护长度是5的比特序列;从比特序列的高位/低位开始,如果交易Tx1~交易Tx5中的任意第q个交易需要设置预设标签,则可以将该比特序列中的第q个比特位的值置为预设标签例如1,否则将第q个比特位的值置为非预设标签例如0。显然,也可以通过其它方式实现对交易设置预设标签,此处不再赘述。
在一种可能的实施方式中,对于包括第j个资源支付账户的若干交易而言,可以按照若干交易的排列顺序,依次对若干交易中的前k个交易各自包括的第一资源数量求和,获得前k个交易对应的累计资源数量;当累计资源数量大于第j个资源支付账户所持有目标资源的当前数量时,对若干交易中位于第k-1个交易之后的各个交易标记预设标签。
在一种可能的实施方式中,对于包括第j个资源支付账户的若干交易而言,从状态数据中获取第j个资源支付账户所持有目标资源的当前数量;将当前数量作为允许区块链节点修改并且独立于状态数据的变量缓存至预定区域;按照若干交易的排列顺序,依次对若干交易中的第k个交易执行:确定预定区域缓存的当前数量是否达到k个交易中所包括的第一资源数量,如果是则在预定区域中对当前数量扣减第k个交易所包括的第一资源数量,如果否则对若干交易中位于第k-1个交易之后的各个交易标记预设标签。
步骤S207,按照多个交易的分组结果,并发执行多个交易中未标记预设标签的交易。
属于不同分组的交易可以被调度至区块链节点中的不同计算进程或者计算线程,由不同的计算进程或者计算线程对不同交易分组中的交易进行处理。如果某个交易分组中的某个交易被标记有预设标签,还可以向对应的计算进程或者计算线程提供该交易分组中的某个交易被标记有预设标签的指示信息。
参见图4所示,继续假设交易Tx1被划分到交易分组1、交易Tx2被划分到交易分组2、交易Tx3被划分到交易分组3,交易Tx4和交易Tx5被划分到交易分组4。那么,前述的交易分组1~交易分组4等4个交易分组,可以对应的分别调度到区块链节点中所包括的计算线程1、计算线程2、计算线程3和计算线程4等4个计算线程。除此之外,假设交易Tx3被标记预设标签,则还可以向计算线程3提供交易Tx3被标记有预设标签的指示信息,例如提供前述示例中与交易Tx1~交易Tx5对应的并且长度为5的比特序列。
对于任意第n个交易分组中的任意第p个交易,第n个计算进程或者第n个计算线程可以首先确定第p个交易是否标记有预设标签;例如从前述的比特序列中查询第p个交易所对应的比特位的值,实现确定第p个交易是否标记有预设标签。当第p个交易未标记预设标签的情况下,第n个计算进程或者第n个计算线程执行第p个交易,获得第p个交易的执行结果。与之相应的是,当第p个交易标记有预设标签的情况下,第n个计算进程或者第n个计算线程直接生成表征第p个交易执行失败的执行结果即可。
对于被第n个计算进程或者第n个计算线程所执行的交易,第n个计算进程或者第n个计算线程在对该交易进行执行的过程中,无需基于该交易所指定的资源支付账户以及该交易消费目标资源的第二数量,对该交易所指定的资源支付账户持有目标资源的数量进行更改。
对于被第n个计算进程或者第n个计算线程所执行的交易,该交易通常不会因其指定的资源支付账户所包括的目标资源不足而导致该交易执行失败;无论该交易是否被区块链节点执行成功,该交易的执行结果中均包括,该交易所指定的资源支付账户以及该交易消费目标资源的第二数量。
对于被第n个计算进程或者第n个计算线程所执行的交易,第n个计算进程或者第n个计算线程还可以将其对应的资源支付账户以及其消费目标资源的第二数量,返回给区块链节点中的特定进程,例如区块管理进程,以便区块管理进程在后续过程中,从相关资源支付账户中扣减其持有的目标资源。例如,第n个计算进程或者第n个计算线程可能将其对应的交易分组中的各个交易的执行结果全部返回给区块管理进程。
步骤S209,对于包括第j个资源支付账户的若干交易,根据前k个交易的执行结果,获取其各自消费目标资源的第二资源数量,并按照各个第二资源数量的和从第j个资源支付账户扣减其持有的目标资源。
接续前文的示例,区块链节点中可以通过其区块管理进程实现,从指定第j个资源支付账户为其资源支付账户的若干交易各自的执行结果中,获取该若干交易中的前k个交易各自消费目标资源的第二资源数量,并按照前k个交易各自消费目标资源的第二资源数量的和从第j个资源支付账户扣减其持有的目标资源。
与前述方法实施例基于相同的构思,本说明书实施例中还提供了一种区块链系统中的区块链节点500,用于处理属于相同区块的多个交易,对于所述多个交易中任意的第i个交易,其中包括允许所述第i个交易消费目标资源的第一资源数量,以及用于支付所述第i个交易所消费目标资源的资源支付账户。所述区块链节点500包括:交易分组单元501,配置为对所述多个交易进行分组,其中未利用所述多个交易各自包括的资源支付账户;交易确定单元503,配置为对于所述多个交易所包括的若干资源支付账户中任意的第j个资源支付账户,按照所述多个交易的排列顺序,从所述多个交易中确定出包括所述第j个资源支付账户的若干交易;交易标记单元505,配置为当所述若干交易中的前k个交易各自包括的第一资源数量的和大于所述第j个资源支付账户所持有目标资源的当前数量,所述若干交易中的前k-1个交易各自包括的第一资源数量的和不大于所述第j个资源支付账户所持有目标资源的当前数量时,对所述若干交易中位于所述第k-1个交易之后的各个交易标记预设标签;交易处理单元507,配置为按照所述多个交易的分组结果,并发执行所述多个交易中未标记预设标签的交易。
在一种可能的实施方式中,所述区块链节点500还包括:资源管理单元509,配置为根据所述前k个交易的执行结果,获取其各自消费目标资源的第二资源数量,并按照各个所述第二资源数量的和从所述第j个资源支付账户扣减其持有的目标资源。
在一种可能的实施方式中,所述交易分组单元501,配置为确定所述多个交易各自的预执行读写集,其中当所述第i个交易所包括的资源支付账户不同于其包括的发送方账户和接收方账户时,所述第i个交易的预执行读写集中未包括所述第i个交易所包括的资源支付账户;以及,根据所述预执行读写集对所述多个交易进行分组。
在一种可能的实施方式中,所述多个交易的分组结果包括多个交易分组,所述多个交易分组与所述区块链节点中的多个计算进程或者多个计算线程对应;其中,所述交易处理单元507,配置为对于任意第n个交易分组中的任意第p个交易,在第n个计算进程或者第n个计算线程执行:确定所述第p个交易是否标记有预设标签;当所述第p个交易未标记预设标签的情况下,执行所述第p个交易,获得所述第p个交易的执行结果。
在一种可能的实施方式中,所述交易处理单元507,还配置为在第n个计算进程或者第n个计算线程执行:当所述第p个交易标记有预设标签的情况下,生成表征所述第p个交易执行失败的执行结果。
在一种可能的实施方式中,所述交易标记单元505,配置为按照所述若干交易的排列顺序,依次对所述若干交易中的前k个交易各自包括的第一资源数量求和,获得前k个交易对应的累计资源数量;当所述累计资源数量大于所述第j个资源支付账户所持有目标资源的当前数量时,对所述若干交易中位于所述第k-1个交易之后的各个交易标记预设标签。
在一种可能的实施方式中,所述交易标记单元505,配置为从状态数据中获取所述第j个资源支付账户所持有目标资源的当前数量;将所述当前数量缓存至预定区域;以及,按照所述若干交易的排列顺序,依次对所述若干交易中的第k个交易执行:确定所述预定区域缓存的当前数量是否达到所述k个交易中所包括的第一资源数量;如果是,则在所述预定区域中对所述当前数量扣减所述第k个交易所包括的第一资源数量;如果否,则对所述若干交易中位于第k-1个交易之后的各个交易标记预设标签。
本说明书实施例中还提供了一种计算机可读存储介质,其上存储有计算机程序/指令,当所述计算机程序/指令在计算设备中执行时,令计算设备执行本说明书任意一个实施例中提供的一种区块链系统中的交易处理方法。
本说明书实施例中还提供了一种计算设备,包括存储器和处理器,所述存储器中存储有计算机程序/指令,所述处理器执行所述计算机程序/指令时,实现本说明书任意一个实施例中提供的一种区块链系统中的交易处理方法。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为服务器系统。当然,本申请不排除随着未来计算机技术的发展,实现上述实施例功能的计算机例如可以为个人计算机、膝上型计算机、车载人机交互设备、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
虽然本说明书一个或多个实施例提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或终端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。例如若使用到第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书一个或多个时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
本发明是参照根据本发明实施例的方法、装置(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁盘存储、石墨烯存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备使用的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
本领域技术人员应明白,本说明书一个或多个实施例可提供为方法、系统或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本说明书的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。
以上所述仅为本说明书一个或多个实施例的实施例而已,并不用于限制本说明书一个或多个实施例。对于本领域技术人员来说,本说明书一个或多个实施例可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在权利要求范围之内。
Claims (16)
1.一种区块链系统中的交易处理方法,用于处理属于相同区块的多个交易,对于所述多个交易中任意的第i个交易,其中包括允许所述第i个交易消费目标资源的第一资源数量,以及用于支付所述第i个交易所消费目标资源的资源支付账户;所述方法包括:
对所述多个交易进行分组,其中未利用所述多个交易各自包括的资源支付账户;
对于所述多个交易所包括的若干资源支付账户中任意的第j个资源支付账户,按照所述多个交易的排列顺序,从所述多个交易中确定出包括所述第j个资源支付账户的若干交易;
当所述若干交易中的前k个交易各自包括的第一资源数量的和大于所述第j个资源支付账户所持有目标资源的当前数量,所述若干交易中的前k-1个交易各自包括的第一资源数量的和不大于所述第j个资源支付账户所持有目标资源的当前数量时,对所述若干交易中位于所述第k-1个交易之后的各个交易标记预设标签;
按照所述多个交易的分组结果,并发执行所述多个交易中未标记预设标签的交易。
2.根据权利要求1所述的方法,所述方法还包括:根据所述前k个交易的执行结果,获取所述前k个交易各自消费目标资源的第二资源数量,并按照各个所述第二资源数量的和从所述第j个资源支付账户扣减其持有的目标资源。
3.根据权利要求1所述的方法,所述对所述多个交易进行分组,包括:
确定所述多个交易各自的预执行读写集,其中当所述第i个交易所包括的资源支付账户不同于其包括的发送方账户和接收方账户时,所述第i个交易的预执行读写集中未包括所述第i个交易所包括的资源支付账户;
根据所述预执行读写集对所述多个交易进行分组。
4.根据权利要求1所述的方法,所述多个交易的分组结果包括多个交易分组,所述多个交易分组与所述区块链节点中的多个计算线程对应;
其中,所述按照所述多个交易的分组结果,并发执行所述多个交易中未标记预设标签的交易,包括:对于任意第n个交易分组中的任意第p个交易,第n个计算线程确定所述第p个交易是否标记有预设标签;当所述第p个交易未标记预设标签的情况下,所述第n个计算线程执行所述第p个交易,获得所述第p个交易的执行结果。
5.根据权利要求4所述的方法,所述方法还包括:当所述第p个交易标记有预设标签的情况下,所述第n个计算线程生成表征所述第p个交易执行失败的执行结果。
6.根据权利要求1所述的方法,所述当所述若干交易中的前k个交易各自包括的第一资源数量的和大于所述第j个资源支付账户所持有目标资源的当前数量,所述若干交易中的前k-1个交易各自包括的第一资源数量的和不大于所述第j个资源支付账户所持有目标资源的当前数量时,对所述若干交易中位于所述第k-1个交易之后的各个交易标记预设标签,包括:
按照所述若干交易的排列顺序,依次对所述若干交易中的前k个交易各自包括的第一资源数量求和,获得前k个交易对应的累计资源数量;
当所述累计资源数量大于所述第j个资源支付账户所持有目标资源的当前数量时,对所述若干交易中位于所述第k-1个交易之后的各个交易标记预设标签。
7.根据权利要求1所述的方法,所述当所述若干交易中的前k个交易各自包括的第一资源数量的和大于所述第j个资源支付账户所持有目标资源的当前数量,所述若干交易中的前k-1个交易各自包括的第一资源数量的和不大于所述第j个资源支付账户所持有目标资源的当前数量时,对所述若干交易中位于所述第k-1个交易之后的各个交易标记预设标签,包括:
从状态数据中获取所述第j个资源支付账户所持有目标资源的当前数量;
将所述当前数量缓存至预定区域;
按照所述若干交易的排列顺序,依次对所述若干交易中的第k个交易执行:确定所述预定区域缓存的当前数量是否达到所述k个交易中所包括的第一资源数量;如果是,则在所述预定区域中对所述当前数量扣减所述第k个交易所包括的第一资源数量;如果否,则对所述若干交易中位于第k-1个交易之后的各个交易标记预设标签。
8.一种区块链系统中的区块链节点,用于处理属于相同区块的多个交易,对于所述多个交易中任意的第i个交易,其中包括允许所述第i个交易消费目标资源的第一资源数量,以及用于支付所述第i个交易所消费目标资源的资源支付账户;所述区块链节点包括:
交易分组单元,配置为对所述多个交易进行分组,其中未利用所述多个交易各自包括的资源支付账户;
交易确定单元,配置为对于所述多个交易所包括的若干资源支付账户中任意的第j个资源支付账户,按照所述多个交易的排列顺序,从所述多个交易中确定出包括所述第j个资源支付账户的若干交易;
交易标记单元,配置为当所述若干交易中的前k个交易各自包括的第一资源数量的和大于所述第j个资源支付账户所持有目标资源的当前数量,所述若干交易中的前k-1个交易各自包括的第一资源数量的和不大于所述第j个资源支付账户所持有目标资源的当前数量时,对所述若干交易中位于所述第k-1个交易之后的各个交易标记预设标签;
交易处理单元,配置为按照所述多个交易的分组结果,并发执行所述多个交易中未标记预设标签的交易。
9.根据权利要求8所述的区块链节点,所述区块链节点还包括:资源管理单元,配置为根据所述前k个交易的执行结果,获取所述前k个交易各自消费目标资源的第二资源数量,并按照各个所述第二资源数量的和从所述第j个资源支付账户扣减其持有的目标资源。
10.根据权利要求8所述的区块链节点,所述交易分组单元,配置为确定所述多个交易各自的预执行读写集,其中当所述第i个交易所包括的资源支付账户不同于其包括的发送方账户和接收方账户时,所述第i个交易的预执行读写集中未包括所述第i个交易所包括的资源支付账户;以及,根据所述预执行读写集对所述多个交易进行分组。
11.根据权利要求8所述的区块链节点,所述多个交易的分组结果包括多个交易分组,所述多个交易分组与所述区块链节点中的多个计算线程对应;其中,
所述交易处理单元,配置为对于任意第n个交易分组中的任意第p个交易,在第n个计算线程执行:确定所述第p个交易是否标记有预设标签;当所述第p个交易未标记预设标签的情况下,所述第n个计算线程执行所述第p个交易,获得所述第p个交易的执行结果。
12.根据权利要求11所述的区块链节点,所述交易处理单元,还配置为当所述第p个交易标记有预设标签的情况下,在所述第n个计算线程生成表征所述第p个交易执行失败的执行结果。
13.根据权利要求8所述的区块链节点,所述交易标记单元,配置为按照所述若干交易的排列顺序,依次对所述若干交易中的前k个交易各自包括的第一资源数量求和,获得前k个交易对应的累计资源数量;当所述累计资源数量大于所述第j个资源支付账户所持有目标资源的当前数量时,对所述若干交易中位于所述第k-1个交易之后的各个交易标记预设标签。
14.根据权利要求8所述的区块链节点,所述交易标记单元,配置为从状态数据中获取所述第j个资源支付账户所持有目标资源的当前数量;将所述当前数量缓存至预定区域;以及,按照所述若干交易的排列顺序,依次对所述若干交易中的第k个交易执行:确定所述预定区域缓存的当前数量是否达到所述k个交易中所包括的第一资源数量;如果是,则在所述预定区域中对所述当前数量扣减所述第k个交易所包括的第一资源数量;如果否,则对所述若干交易中位于第k-1个交易之后的各个交易标记预设标签。
15.一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1-7中任一项所述的方法。
16.一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算设备中执行时,计算设备实现权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311437155.7A CN117408702A (zh) | 2023-10-31 | 2023-10-31 | 区块链系统中的交易处理方法和区块链节点 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311437155.7A CN117408702A (zh) | 2023-10-31 | 2023-10-31 | 区块链系统中的交易处理方法和区块链节点 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117408702A true CN117408702A (zh) | 2024-01-16 |
Family
ID=89494149
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311437155.7A Pending CN117408702A (zh) | 2023-10-31 | 2023-10-31 | 区块链系统中的交易处理方法和区块链节点 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117408702A (zh) |
-
2023
- 2023-10-31 CN CN202311437155.7A patent/CN117408702A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
AU2018246770B2 (en) | Block chain based data processing method and device | |
CA3048739C (en) | Blockchain-based data processing method and equipment | |
US9274798B2 (en) | Multi-threaded logging | |
CN114827165B (zh) | 对多个交易进行分组的方法和区块链节点 | |
CN111930486B (zh) | 任务选取数据处理方法、装置、设备及存储介质 | |
US20090327377A1 (en) | Copying entire subgraphs of objects without traversing individual objects | |
JP2014504768A (ja) | 領域に基づくガベージ・コレクタを用いてクラスを漸進的にアンロードするための方法、コンピュータ・プログラム製品、および装置 | |
CN108694076A (zh) | 多节点存储操作 | |
CN113743942B (zh) | 交易执行方法、区块链、主节点和主存储设备 | |
CN110781016B (zh) | 一种数据处理方法、装置、设备及介质 | |
CN116305298B (zh) | 一种算力资源管理方法、装置、存储介质及电子设备 | |
WO2023160083A1 (zh) | 执行交易的方法、区块链、主节点和从节点 | |
WO2023160085A1 (zh) | 执行交易的方法、区块链、主节点和从节点 | |
CN109684381A (zh) | 数据热度统计方法及装置 | |
CN116107728B (zh) | 一种任务执行方法、装置、存储介质及电子设备 | |
CN116707891A (zh) | 重放攻击检查方法和区块链节点 | |
CN117408702A (zh) | 区块链系统中的交易处理方法和区块链节点 | |
KR101771183B1 (ko) | 인메모리 캐시를 관리하는 방법 | |
CN110032433B (zh) | 一种任务执行方法、装置、设备及介质 | |
US9705985B1 (en) | Systems and methods for cross protocol automatic sub-operation scheduling | |
CN114138444A (zh) | 一种任务调度方法、装置、设备、存储介质及程序产品 | |
CN111045959A (zh) | 一种基于存储优化的复杂算法变量映射方法 | |
CN117421129B (zh) | 一种基于异构存储集群的业务执行方法、装置及电子设备 | |
CN117808476A (zh) | 区块链系统中的交易处理方法和区块链节点 | |
US20120158651A1 (en) | Configuration of asynchronous message processing in dataflow networks |
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 |