CN113568981A - 一种交易数据处理方法、装置、设备以及介质 - Google Patents
一种交易数据处理方法、装置、设备以及介质 Download PDFInfo
- Publication number
- CN113568981A CN113568981A CN202111120951.9A CN202111120951A CN113568981A CN 113568981 A CN113568981 A CN 113568981A CN 202111120951 A CN202111120951 A CN 202111120951A CN 113568981 A CN113568981 A CN 113568981A
- Authority
- CN
- China
- Prior art keywords
- transaction
- block
- transactions
- processed
- execution result
- 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.)
- Granted
Links
Images
Classifications
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- 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/382—Payment protocols; Details thereof insuring higher security of transaction
- G06Q20/3829—Payment protocols; Details thereof insuring higher security of transaction involving key management
-
- 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/389—Keeping log of transactions for guaranteeing non-repudiation of a transaction
-
- 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/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
-
- 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/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/56—Financial cryptography, e.g. electronic payment or e-cash
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Business, Economics & Management (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Accounting & Taxation (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- General Business, Economics & Management (AREA)
- Strategic Management (AREA)
- Finance (AREA)
- Computing Systems (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种交易数据处理方法、装置、设备以及介质,该方法包括:在将交易池中的N个交易打包至待处理区块,并对待处理区块进行区块共识的过程中,并行执行N个交易中的M个交易,得到第一交易执行结果;在区块共识成功后,在待处理区块中将与M个交易相同的交易作为第一类型交易,将第一交易执行结果作为第一类型交易的待处理交易执行结果;在待处理区块中将除第一类型交易之外的(N‑M)个交易作为第二类型交易,并行执行第二类型交易,得到第二交易执行结果;基于N个交易在待处理区块中的交易执行顺序,顺序合并待处理交易执行结果和第二交易执行结果,得到顺序合并执行结果。采用本申请,可以充分利用系统资源,提升区块处理效率。
Description
技术领域
本申请涉及区块链技术领域,尤其涉及一种交易数据处理方法、装置、设备以及介质。
背景技术
目前,在区块链系统中,当某个区块链节点(例如,出块节点)接收到任意一个区块链客户端发送的一笔交易时,需要在该区块链系统中对这个交易进行交易广播、交易验证。这样,出块节点在将交易验证成功后的成千上万的交易打包至某个区块(例如,区块X)时,可以对这个区块(例如,区块X)进行区块共识,进而可以在区块共识成功后,统一按照现有的交易执行方案并行执行该区块(例如,区块X)中的所有交易。
显然,一旦按照前述交易执行方案在同一时间段内并行执行该区块(例如,区块X)中的所有交易,势必会因并行执行的大量交易而出现系统资源抢占的现象,以至于需要花费较长的时间进行系统资源的调度,从而降低了整个区块的处理效率。
发明内容
本申请实施例提供一种交易数据处理方法、装置、设备以及介质,可以合理利用系统资源,以提升区块处理效率。
本申请实施例一方面提供了一种交易数据处理方法,包括:
获取交易池中的N个交易,在将N个交易打包至待处理区块,并对待处理区块进行区块共识的过程中,并行执行N个交易中的M个交易,得到与M个交易相关联的第一交易执行结果;M为小于或者等于N的正整数;
在区块共识成功后,在待处理区块中将与M个交易相同的交易作为第一类型交易,将与M个交易相关联的第一交易执行结果作为第一类型交易的待处理交易执行结果;
在待处理区块中将除第一类型交易之外的(N-M)个交易作为第二类型交易,并行执行第二类型交易,得到与第二类型交易相关联的第二交易执行结果;
基于N个交易在待处理区块中的交易执行顺序,顺序合并待处理交易执行结果和第二交易执行结果,得到与待处理区块的块缓存相关联的顺序合并执行结果。
本申请实施例一方面提供了一种交易数据处理装置,包括:
第一交易执行模块,用于获取交易池中的N个交易,在将N个交易打包至待处理区块,并对待处理区块进行区块共识的过程中,并行执行N个交易中的M个交易,得到与M个交易相关联的第一交易执行结果;M为小于或者等于N的正整数;
执行结果确定模块,用于在区块共识成功后,在待处理区块中将与M个交易相同的交易作为第一类型交易,将与M个交易相关联的第一交易执行结果作为第一类型交易的待处理交易执行结果;
第二交易执行模块,用于在待处理区块中将除第一类型交易之外的(N-M)个交易作为第二类型交易,并行执行第二类型交易,得到与第二类型交易相关联的第二交易执行结果;
执行结果合并模块,用于基于N个交易在待处理区块中的交易执行顺序,顺序合并待处理交易执行结果和第二交易执行结果,得到与待处理区块的块缓存相关联的顺序合并执行结果。
其中,装置运行在核心共识网络中的第一区块链节点上;核心共识网络还包括除第一区块链节点之外的第二区块链节点;第一区块链节点为在核心共识网络中所确定的用于打包得到待处理区块的节点;
在第一交易执行模块获取交易池中的N个交易之前,装置还包括:
请求接收模块,用于接收由第二区块链节点广播的与区块链客户端相关联的交易请求;交易请求中携带的待处理交易是由区块链客户端对业务对象所输入的业务数据进行数据打包后生成的;
交易验证模块,用于对交易请求中携带的待处理交易进行交易验证,得到交易验证结果;
交易写入模块,用于若交易验证结果指示交易验证成功,则将待处理交易作为合法交易,将合法交易写入第一区块链节点的交易池。
其中,装置还包括:
交易拒绝模块,用于若交易验证结果指示交易验证失败,则将待处理交易作为非法交易,且拒绝将非法交易写入第一区块链节点的交易池。
其中,交易请求中携带业务对象的交易签名信息;交易签名信息是由区块链客户端通过业务对象的对象私钥对待处理交易进行签名后所得到的;
交易验证模块包括:
签名验证单元,用于从交易请求中提取待处理交易,在核心共识网络所在的区块链网络中,获取业务对象的对象私钥对应的业务公钥,通过业务公钥对交易签名信息进行签名验证;
交易验重单元,用于在签名验证成功时,基于区块链网络所维护的区块链账本,对待处理交易进行交易验重,得到交易验重结果;
验证结果确定单元,用于基于交易验重结果,确定待处理交易对应的交易验证结果。
其中,交易验重单元包括:
交易查找子单元,用于在签名验证成功时,获取与交易池相关联的交易验重器,基于交易验重器在区块链网络所维护的区块链账本中查找与待处理交易相同的链上交易;
第一验重确定子单元,用于若在区块链账本中未查找到与待处理交易相同的链上交易,则将在区块链账本中未查找到与待处理交易相同的链上交易的非重复交易验重结果作为第一交易验重结果;
第二验重确定子单元,用于若在区块链账本中查找到与待处理交易相同的链上交易,则将在区块链账本中查找到与待处理交易相同的链上交易的重复交易验重结果作为第二交易验重结果;
验重结果确定单元,用于将第一交易验重结果或者第二交易验重结果,作为对待处理交易进行交易验重后的交易验重结果。
其中,第一交易执行模块包括:
交易获取单元,用于从交易池的待执行交易空间中获取N个交易,基于N个交易的交易执行顺序,将N个交易写入待执行交易空间对应的待处理队列;
时长记录单元,用于在将N个交易打包至待处理区块,并对待处理区块进行区块共识的过程中,记录与待处理区块相关联的区块打包时长、区块校验时长以及投票共识时长;
处理时长确定单元,用于基于区块打包时长、区块校验时长以及投票共识时长,确定与N个交易相关联的业务处理时长;
第一并行执行单元,用于根据待处理队列对应的交易线程池,并行执行待处理队列中的N个交易,且在业务处理时长内,确定由交易线程池中的工作线程所并行执行完的N个交易中的M个交易,根据M个交易的交易读数据集和M个交易的交易写数据集,得到与M个交易相关联的第一交易执行结果。
其中,第一交易执行结果包括M个交易的交易执行结果,一个交易的交易执行结果包含一个交易的交易读数据集和一个交易的交易写数据集;
第一交易执行模块还包括:
读写数据集获取单元,用于从M个交易中获取待缓存交易,从M个交易的交易执行结果中获取待缓存交易的交易读数据集和待缓存交易的交易写数据集;
读写数据集缓存单元,用于将待缓存交易的交易读数据集和待缓存交易的交易写数据集缓存至待缓存交易对应的交易缓存。
其中,与M个交易相关联的第一交易执行结果存储在与M个交易相关联的交易缓存区;
执行结果确定模块包括:
第一结果获取单元,用于在区块共识成功后,将共识成功的待处理区块作为提议区块,在执行提议区块中的N个交易时,从交易缓存区中获取与M个交易相关联的第一交易执行结果;
交易查找单元,用于在提议区块中查找与M个交易相同的交易;
第一交易确定单元,用于将查找到的交易作为第一类型交易,将与M个交易相关联的第一交易执行结果作为第一类型交易的待处理交易执行结果。
其中,第二交易执行模块包括:
第二交易确定单元,用于在待处理区块为提议区块时,在提议区块中将除第一类型交易之外的(N-M)个交易作为第二类型交易;
合约获取单元,用于获取与第二类型交易相关联的业务合约,基于与第二类型交易相关联的业务合约,读取第二类型交易的交易读数据集;
第二并行执行单元,用于基于第二类型交易的交易读数据集并行执行第二类型交易,得到第二类型交易的交易写数据集;
执行结果确定单元,用于根据第二类型交易的交易读数据集和第二类型交易的交易写数据集,得到与第二类型交易相关联的第二交易执行结果。
其中,执行结果合并模块包括:
待检测交易确定单元,用于在待处理区块中,将N个交易中除首个交易之外的交易作为待检测交易;首个交易为N个交易中具有最小交易执行顺序的交易;
第一合并单元,用于若首个交易为第一类型交易中的交易,则基于首个交易的交易执行顺序,在待处理交易执行结果中,将首个交易的交易执行结果合并写入待处理区块对应的块缓存;
前序交易确定单元,用于基于N个交易在待处理区块中的交易执行顺序,确定待检测交易的前序交易;前序交易包含首个交易,且前序交易为在待处理区块中所查找到的交易执行顺序早于待检测交易的交易执行顺序的交易;
冲突检测单元,用于在待处理交易执行结果和第二交易执行结果中,将待检测交易对应的交易执行结果作为待合并交易执行结果,从待合并交易执行结果中获取待检测交易的交易读数据集,从块缓存中获取前序交易的交易写数据集,基于前序交易的交易写数据集和待检测交易的交易读数据集以及冲突检测条件,对待检测交易进行冲突检测,得到冲突检测结果;
第一合并单元,用于若冲突检测结果指示待检测交易中不存在满足冲突检测条件的待检测交易,则在待检测交易中将不满足冲突检测条件的待检测交易作为可合并交易,在待处理交易执行结果与第二交易执行结果中,对可合并交易对应的交易执行结果进行顺序合并,得到块缓存对应的顺序合并执行结果。
其中,执行结果合并模块还包括:
冲突交易确定单元,用于若冲突检测结果指示待检测交易中存在满足冲突检测条件的待检测交易,则将满足冲突检测条件的待检测交易作为冲突交易;
读数据集确定单元,用于获取冲突交易对应的业务合约,基于获取到的冲突交易对应的业务合约,从块缓存中读取冲突交易对应的前序交易的交易写数据集,将冲突交易对应的前序交易的交易写数据集作为冲突交易的交易读数据集;
重新执行单元,用于基于冲突交易的交易读数据集,重新执行冲突交易,得到冲突交易的交易写数据集,基于冲突交易的交易读数据集和冲突交易的交易写数据集,得到冲突交易的目标交易执行结果,在待处理交易执行结果和第二交易执行结果中将冲突交易的交易执行结果作为初始交易执行结果,基于目标交易执行结果对初始交易执行结果进行更新,得到更新后的待处理交易执行结果和第二交易执行结果;
第二合并单元,用于对更新后的待处理交易执行结果和第二交易执行结果进行顺序合并,得到与待处理区块的块缓存相关联的顺序合并执行结果。
其中,装置还包括:
序列化处理模块,用于在待处理区块为提议区块时,对提议区块的区块头、N个交易以及顺序合并执行结果进行序列化处理,得到提议区块对应的区块数据集;
账本写入模块,用于将提议区块的区块高度和区块数据集写入与区块链的区块链账本。
本申请实施例一方面提供了一种计算机设备,包括存储器和处理器,存储器与处理器相连,存储器用于存储计算机程序,处理器用于调用计算机程序,以使得该计算机设备执行本申请实施例提供的方法。
本申请实施例一方面提供了一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,计算机程序适于由处理器加载并执行,以使得具有处理器的计算机设备执行本申请实施例提供的方法。
本申请实施例一方面提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例提供的方法。
本申请实施例在获取到交易池中的N个交易时,可以在将这N个交易打包至待处理区块,并对该待处理区块进行区块共识的过程中,并行执行N个交易中的M个交易,以得到这M个交易的交易执行结果(即可以得到与这M个交易相关联的第一交易执行结果)。其中,这里的M可以为小于或者等于N的正整数。应当理解,在本申请实施例中,计算机设备(例如,区块链节点)可以在获取到交易池中的N个交易后,立即并行执行这N交易,而无需等待交易打包、区块广播以及区块共识之后,才并行执行这N个交易,显然,本申请实施例通过预先执行待处理区块中的这N个交易中的部分交易(即前述M个交易),可以充分利用从交易打包至区块共识这个过程中的系统资源。这样,计算机设备(例如,区块链节点)在区块共识成功之后,可以直接在待处理区块中将与M个交易相同的交易作为第一类型交易,进而可以将与M个交易相关联的第一交易执行结果直接作为第一类型交易的待处理交易执行结果。此外,计算机设备(例如,区块链节点)还可以在待处理区块中将除第一类型交易之外的(N-M)个交易作为第二类型交易,进而可以并行执行第二类型交易,以得到与第二类型交易相关联的第二交易执行结果。最后,计算机设备(例如,区块链节点)可以基于N个交易在待处理区块中的交易执行顺序,顺序合并待处理交易执行结果和第二交易执行结果,以得到与待处理区块的块缓存相关联的顺序合并执行结果。由此可见,本申请实施例可以在交易打包、区块广播以及区块共识的同时,提前执行这N个交易中的部分交易(即前述M个交易),这样,在区块共识成功后,计算机设备就可以在进一步执行待处理区块时,直接利用提前执行完的M个交易的交易执行结果作为待处理区块中的第一类型交易的交易执行结果,从而可以在交易打包至区块共识的过程中,合理利用系统资源,这意味着本申请实施例在区块共识成功之后,仅需并行执行待处理区块中尚未执行的(N-M)个交易,而无需并行执行待处理区块中的所有交易,这样可以从根源上解决并行执行大量交易而造成的系统资源的抢占问题,这意味着本申请实施例通过分阶段并行执行区块中的交易,可以从根源上提升整个区块的区块处理效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种网络架构的示意图;
图2是本申请实施例提供的一种交易处理周期的场景示意图;
图3是本申请提供的一种交易数据处理方法的流程示意图;
图4是本申请实施例提供的一种分阶段执行块内交易的场景示意图;
图5是本申请实施例提供的一种交易数据处理方法的流程示意图;
图6是本申请实施例给出的一种在交易预执行阶段预执行交易时的数据来源示意图;
图7是本申请实施例提供的一种在改进的执行交易阶段执行块内剩余交易时的数据来源示意图;
图8是本申请提供的一种交易数据处理装置的结构示意图;
图9是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参见图1,图1是本申请实施例提供的一种网络架构的示意图。如图1所示的网络架构可以应用于区块链系统,该区块链系统可以是由多个节点通过网络通信的形式连接形成的分布式系统。其中,该区块链系统可以包含但不限于联盟链所对应的区块链系统。
其中,可以理解的是,区块链是一种分布式数据存储、点对点传输、共识机制以及加密算法等计算机技术的新型应用模式,主要用于对数据按时间顺序进行整理,并加密成账本,使其不可被篡改和伪造,同时可进行数据的验证、存储和更新。区块链本质上是一个去中心化的数据库,该数据库中的每个节点均存储一条相同的区块链,区块链网络将节点区分为共识节点和轻节点,其中共识节点可以负责区块链全网的共识,也就是说共识节点可以为区块链网络中的共识节点。
其中,可以理解的是,区块链系统中可以包括有智能合约,该智能合约在区块链系统中可以理解为是一种由区块链各节点(包括共识节点)执行的代码,通过该智能合约可以执行任意逻辑并得到结果。比如,用户可以通过区块链客户端发起一个交易请求的方式,调用区块链上已经部署的智能合约,随后,区块链上的轻节点(或者业务节点)可以将该交易请求发送至共识节点,以调用各个共识节点中运行的智能合约执行该用户所请求的交易。应当理解,区块链中可以包括一个或多个智能合约,这些智能合约可以通过合约调用地址、合约标识号(Identity document,ID)或合约名称来进行区分,而区块链客户端发起的交易请求中,也可以携带智能合约的合约调用地址或者合约标识号或合约名称,以此指定需要运行的智能合约。而若区块链客户端所指定的智能合约为需要读取数据的合约(即业务合约),则各个共识节点会优先访问在各自存储层中创建的本地缓存来进行数据的读取,最后各个共识节点会互相验证各交易执行结果是否一致(也就是进行共识),若一致则可以将交易执行结果存入各自的本地缓存和本地存储中,并可以将上述交易的交易执行结果返回至区块链客户端。注意,这里的本地缓存为在存储层中创建的系统内存,这里的本地存储为在存储层中所创建的用于进行数据存储的硬盘空间。这样,当某个共识节点出现宕机(即down机)或者系统故障时,并不会因为系统内存中的数据消失而造成无法进行数据读取的现象,即该共识节点还可以通过在该存储层中创建的本地存储来进行数据的读取。
应当理解,如图1所示的网络架构可以包含共识节点集群,轻节点集群以及用户终端集群。其中,该共识节点集群可以包含多个共识节点,这里的多个共识节点具体可以包括图1所示的节点10a、节点10b、节点10c、节点10d。如图1所示,节点10a、节点10b、节点10d可以分别与节点10c进行网络连接,以构成核心共识网络,该核心共识网络可以为图1所示的共识网络100a。可以理解的是,在该共识网络100a中,节点10a、节点10b、节点10d均能够通过与该节点10c之间的网络连接进行数据交互。此外,用户终端集群可以包含多个用户终端,这里的多个用户终端具体可以包含图1所示的用户终端3000a、用户终端3000b、...、用户终端3000c。如图1所示,用户终端3000a、用户终端3000b、...、用户终端3000c可以分别与节点10c进行网络连接,以便于能够通过与该节点10c之间的网络连接进行数据交互。另外,轻节点集群可以包括多个轻节点,这里的多个轻节点具体可以包括图1所示的服务器4000a和服务器4000b。如图1所示,服务器4000a和服务器4000b可以分别与节点10c进行网络连接,以便于能够通过与该节点10c之间的网络连接进行数据交互。可选的,应当理解,在一些实施例中,当用户终端集群中的用户终端集成运行有去中心化应用时,这些集成有去中心化应用的用户终端可以作为轻节点集群中的轻节点。
其中,本申请实施例可以将共识网络100a中的每个共识节点(例如,节点10a、节点10b、节点10c、节点10d)统称为区块链节点。应当理解,这些区块链节点均可以用于维护同一区块链(比如,图1所示的区块链10e),该共识网络100a中的任意两个区块链节点之间可以形成点对点(P2P,Peer To Peer)网络,该点对点网络可以采用P2P协议,其中,该P2P协议是一个运行在传输控制协议(TCP,Transmission Control Protocol)协议之上的应用层协议。在分布式系统中,任何设备如服务器、终端等都可以加入而成为区块链节点,其中,每个区块链节点均可以包括硬件层、中间层、操作系统层和应用层。
其中,可以理解的是,本申请实施例可以为接入该区块链网络的任意一个角色(例如,任意一个个人用户、任意一个企业、任意一个机构等实体对象)绑定一个区块链节点,以将这些区块链节点所构成的区块链网络统称为联盟链网络。所以,如图1所示的节点10a、节点10b、节点10c、节点10d可以分别与需要接入该联盟链网络中的相应角色(即相应业务场景下的实体对象)之间存在一一对应关系。这里的业务场景可以包含电子票据场景、社交场景、赊购场景、信贷场景等。此时,相应业务场景下的目标业务具体可以包含电子票据业务、社交业务、赊购业务、信贷业务等,这里将不对相应业务场景下的具体业务进行一一列举。
其中,可以理解的是,由于每个实体对象均可以对应一个区块链节点,所以,本申请实施例可以以实体对象为上述企业用户(即前述企业)为例,此时,与每个企业用户相关联的区块链节点可以为同一区块链节点(例如,上述图1所示的节点10c可以与多个企业用户所对应的用户终端进行数据交互)。比如,在区块链电子票据系统中,可以将每个开票企业所对应的电子票据业务(比如,注册业务、开票业务、票据转移业务等)统称为一笔交易。其中,开票企业A可以通过图1所示的用户终端3000a与图1所示的节点10c进行数据交互,以完成相应的交易;以此类推,开票企业B可以通过图1所示的用户终端3000b与图1所示的节点10c进行数据交互,以完成相应的交易;开票企业C可以通过图1所示的用户终端3000c与图1所示的节点10c进行数据交互,以完成相应的交易。
其中,可以理解的是,本申请实施例可以将针对上述电子票据业务发送交易请求的实体对象(例如,开票企业A、开票企业B、...、开票企业C)统称为业务对象,并可以将用于接收业务对象(例如,开票企业A、开票企业B、...、开票企业C)所发送的交易请求的区块链节点统称为轻节点,还可以将参与对该交易请求进行共识的区块链节点统称为上述共识节点。
可选的,在共识网络100a中,由于上述节点10c可以与其存在网络连接(也可以称之为会话连接)的其他区块链节点之间进行数据同步,即上述节点10c可以从其他区块链节点上同步相应的业务数据信息(例如,可以从其他区块链节点上同步其他企业用户所发送的交易请求等),此时,与每个企业用户相关联的共识节点可以为不同的区块链节点。比如,开票企业A也可以通过图1所示的用户终端3000a与图1所示的节点10c进行数据交互;开票企业B也可以通过图1所示的用户终端3000b与图1所示的节点10b进行数据交互;开票企业C也可以通过图1所示的用户终端3000c与图1所示的节点10a进行数据交互。由于区块链网络中的这些节点均会维护同一区块链,所以,通过将不同用户终端所发送的交易请求随机分配给与上述区块链10e相关联的区块链节点,可以有效地均衡区块链网络中的网络负载,从而可以提高相应业务所对应的业务数据的处理效率。
又比如,在信贷系统中,可以将业务对象(例如,上述用户终端3000a对应的用户)所请求的信贷业务理解为另一笔交易。其中,目标用户可以通过图1所示的用户终端3000a与图1所示的节点10c进行数据交互,以向图1所示的节点10c发送针对相应业务的交易请求。即在该信贷系统中,可以为该接入该信贷系统中的每个用户配置一个区块链节点,以接收相应用户所发送的交易请求。应当理解,请求前述信贷业务的业务对象可以包括个人用户、企业用户等,这里将不对业务对象的用户类型进行限定。
其中,可以理解的是,对于区块链网络中的每个交易而言,一个交易的交易处理周期包括以下多个数据处理阶段:交易生成阶段、交易广播阶段、交易验证阶段、交易打包阶段、区块校验阶段、达成共识阶段、执行交易阶段和存入账本阶段。但是,发明人在实践中发现:由于共识节点在交易打包阶段、区块校验阶段以及达成共识阶段的过程(即从交易打包至区块共识的过程)中,存在一定的业务处理时长,这意味着该共识节点在该业务处理时长内存在一定的执行空档期,为避免在该执行空档期内的系统资源的浪费,本申请实施例提出一种改进的交易处理周期,进而可以在该改进的交易处理周期内,使得共识节点能够在前述业务处理时长对应的交易预处理阶段内,提前执行从交易池所获取到的N个交易中的部分交易(例如,M个交易),这样,在共识成功之后,就可以在改进的执行交易阶段中,进一步并行执行共识成功后的区块中的尚未执行的其它交易。
由此可见,当轻节点接收到业务对象通过区块链客户端发送的交易请求时,可以将该业务对象所发起的交易请求转发给共识节点,以通过共识节点对该目标用户所发起的交易务请求进行合法性验证。这样,共识节点可以在合法性验证通过时,将该业务对象所发送的交易请求的交易添加至自己本地的交易池,以便于后续可以将包含该交易的交易列表打包成区块,以使共识网络100a中的共识节点可以对打包得到的区块进行区块共识,从而可以在从交易打包至区块共识的过程中,提前并行执行从交易池所获取到交易列表中的交易,以在该过程中,充分利用与交易池相关联的交易线程池中的系统资源。
为便于理解,进一步的,请参见图2,图2是本申请实施例提供的一种交易处理周期的场景示意图。其中,如图2所示的区块链节点可以包含图2所示的集成有去中心化应用的终端设备20a、区块链节点A、区块链节点B以及区块链节点C。应当理解,在本申请实施例中,集成有去中心化应用的终端设备20a可以为上述轻节点,比如,该终端设备20a可以为图1所对应实施例中的用户终端3000a;同理,如图2所示的区块链节点A、区块链节点B以及区块链节点C可以为上述共识节点,例如,区块链节点A可以为上述图1所对应实施例中的共识节点10c、区块链节点B可以为上述图1所对应实施例中的共识节点10b,区块链节点C可以为上述图1所对应实施例中的共识节点10a。
其中,为便于理解,本申请实施例可以将图2所示的终端设备20a上所集成的去中心化应用(Decentralization,DAPP)统称为前述区块链客户端。应当理解,可选的,本申请实施例还可以将该区块链客户端独立部署在其他终端设备上,使得其他终端设备可以通过该区块链客户端与图2所示的终端设备20a进行数据交互。这里将不对区块链客户端的具体部署方式进行限定。其中,应当理解,图2所示的终端设备20a可以为接入区块链网络的用户终端或者服务器。
其中,可以理解的是,区块链节点C可以为上述区块链系统从核心共识网络所包含的多个共识节点中所选举得到的用于打包组装区块的出块节点。此时,区块链节点A和区块链节点B可以为参与进行区块共识的共识节点。
如图2所示,当区块链客户端集成部署在终端设备20a时,该终端设备20a可以在上述交易生成阶段接收业务对象(例如,用户)通过该区块链客户端所输入的业务数据,比如,在上述区块链电子票据场景下,这里的业务数据具体可以包含资产转出方信息、资产接收方信息以及资产转移量等。
进一步的,该终端设备20a中的区块链客户端可以将前述业务对象所录入的业务数据打包成交易(例如,交易Tx),进而可以在前述交易生成阶段或者交易广播阶段将该打包生成的交易(例如,交易Tx)通过图2所示的交易传播模块21(简称模块21)发送至图2所示的区块链节点A。
由此可见,在交易生成阶段,用户可以通过前述DAPP输入相应的业务参数,此时,DAPP可以将该用户所录入的业务参数(即前述业务数据)打包成交易并发送到某个区块链节点(例如,图2所示的区块链节点A)。
如图2所示,此时,区块链节点A可以在交易广播阶段,进一步通过图2所示的交易传播模块21(简称模块21)将接收到的交易(例如,交易Tx)广播至整个区块链网络(比如,可以广播至整个区块链网络中的核心共识网络)。具体的,如图2所示,区块链节点A可以基于自己当前所维护的节点标识列表,将当前接收到的交易(例如,交易Tx)通过交易传播模块21(简称模块21)广播给与该区块链节点A具有网络连接关系的区块链节点B,并可以通过交易传播模块21(简称模块21)一并将当前接收到的交易(例如,交易Tx)广播给与该区块链节点A具有网络连接关系的区块链节点C。应当理解,这里的节点标识列表可以用于实时记录当前与该区块链节点A具有网络连接关系的区块链节点。
由此可见,在交易广播阶段: 在区块链网络中,任意一个区块链节点(例如,上述图2所示的区块链节点A、区块链节点B或者区块链节点C)可以通过交易传播模块21(简称模块21)将自己当前收到的交易广播到整个区块链网络。
进一步的,如图2所示,区块链节点A、区块链节点B和区块链节点C均可以在交易验证阶段,通过图2所示的交易池验证模块22(简称模块22)对自己当前所接收到的交易(例如,交易Tx)进行交易验证,进而可以在交易验证成功(比如,交易验签成功且交易查重通过)时,将自己当前所接收到的交易(例如,交易Tx)写入自己本地的交易池。可选的,上述区块链节点A、区块链节点B和区块链节点C还可以在交易验证失败(例如,交易验签失败和/或交易查重未通过)时,忽略自己当前所接收到的这笔交易(例如,交易Tx)或者拒绝将该交易(例如,交易Tx)写入自己本地的交易池。
由此可见,在交易验证阶段:在区块链网络中,任意一个区块链节点(例如,上述图2所示的区块链节点A、区块链节点B或者区块链节点C)在收到交易后,可以对交易进行交易验签、并可以进一步通过区块链帐本(DB)对该交易进行交易查重,从而可以在交易验签成功且交易查重通过时,将该交易写入相应的交易池。
为便于理解,本申请实施例以区块链网络中的区块链节点(即计算机设备)为图2所示的作为出块节点的区块链节点C为例,以阐述在该区块链节点C中通过图2所示的预执行交易池中交易模块23(简称模块23)预先并行执行交易池中的N个交易的具体过程。其中,可以理解的是,这里的N为正整数。
进一步的,如图2所示,为解决从交易打包阶段到区块共识阶段的这个过程中出现系统资源的浪费问题,本申请实施例提取一种改进的交易处理周期,如图2所示,本申请实施例可以在交易打包阶段之前,新增一个能够并行执行的交易预处理阶段。如图2所示,区块链网络中的区块链节点C(即计算机设备)在交易预处理阶段所使用的用于预执行交易的模块,可以为图2所示的预执行交易池中交易模块23(简称模块23)。如图2所示,区块链节点C可以通过图2所示的预执行交易池中交易模块23预先并行执行自己本地的交易池中的N个交易,并可以记录在从交易打包阶段到区块共识阶段的这个业务处理时长内所预执行完的交易,并可以将在这个业务处理时长内所记录到的预执行完的交易完成数量记为M,这里的M可以为小于或者等于N的正整数。由此可见,该区块链节点C可以通过图2所示的预执行交易池中交易模块23(简称模块23)将在N个交易中所预先执行完的部分交易统称为N个交易中的M个交易。
由此可见,在交易预执行阶段,区块链节点C可以在从交易池中获取到N个交易时,立即通过图2所示的预执行交易池中交易模块23(简称模块23)并行执行这N个交易,而无需等在上述业务处理时长之后才开始并行执行这N个交易,这样,可以在业务处理时长内充分利用原本被闲置的系统资源,进而可以从根源上解决在从交易打包阶段到区块共识阶段的这个过程中出现系统资源的浪费问题。
其中,应当理解,本申请实施例所涉及的区块共识阶段至少包含上述区块校验阶段和达成共识阶段。可选的,在一些实施例中,该区块共识阶段还可以包括区块广播阶段和校验结果投票阶段。
其中,应当理解,在上述业务处理时长内,区块链网络中的区块链节点C可以在交易打包阶段,通过图2所示的交易打包至区块模块24(简称模块24)将从交易池获取到的N个交易,打包组装到区块。为便于理解,本申请实施例可以将在交易打包阶段所得到的区块统称为待处理区块,并可以将在该交易打包阶段所对应的时长作为区块打包时长,进而可以在区块共识阶段通过图2的区块共识模块25(简称模块25)将该待处理区块广播到整个区块链网络中。具体的,如图2所示,区块链节点C可以在前述区块广播阶段基于自己当前所维护的节点标识列表,将该待处理区块通过区块共识模块25(简称模块25)广播给与该区块链节点C具有网络连接关系的区块链节点B,并可以通过区块共识模块25(简称模块25)广播给与该区块链节点C具有网络连接关系的区块链节点A。
进一步的,如图2所示,区块链节点C还可以在前述区块校验阶段对该待处理区块中的交易进行区块校验(比如,可以校验该待处理区块中的交易是否在自己本地的交易池中),以得到区块校验结果(例如,区块校验结果C’)。其中,可以理解的是,这里的区块校验结果可以包含区块校验通过结果或者区块校验失败结果。比如,若区块链节点C确定该待处理区块中的交易(即这些交易为还未上链的交易)均存在于自己本地的交易池,则可以确认校验通过,进而可以将校验通过的交易校验结果统称为区块校验成功结果。反之,可选的,如果区块链节点C确定该待处理区块中的某些交易并未存在于自己本地的交易池,则可以确认校验失败,进而可以将校验失败的交易校验结果统称为区块校验失败结果,此时,区块链节点C需要对该待处理区块中校验失败的这些交易重新执行前述交易验签和交易查重操作,以确保最终所得到的区块校验结果的准确性。
如图2所示,区块链节点C在接收到的其他区块链节点在区块校验阶段所得到的区块校验结果时,例如,接收到区块链节点A在区块校验阶段所得到的区块校验结果A’和区块链节点B在区块校验阶段所得到的区块校验结果B’时,可以对区块校验结果A’、区块校验结果B’以及区块校验结果C’进行投票,进而可以在达成共识阶段统计这些区块校验结果中是否存在大部分的区块校验结果(超过一半的区块校验结果)均指示校验通过,若该区块链阶段C统计到这些区块校验结果中存在大部分的区块校验结果(超过一半的区块校验结果)均指示校验通过,则可以确定达成对前述待处理区块的区块共识,进而可以在区块共识阶段中将各个阶段(例如,区块校验阶段和达成共识阶段)所对应的时长和作为区块共识时长,应当理解,该区块共识时长中可以包含但不限于区块校验时长和投票共识时长。此时,该区块链节点C可以将达成共识后的待处理区块作为可提交区块。为便于理解,本申请实施例可以将该可提交区块统称为提议区块,进而可以在改进的执行交易阶段,通过图2所示的合并预执行结果或重新执行交易模块26(简称模块26)执行该提议区块中除预执行交易之外所剩余的交易。
为便于理解,本申请实施例在可以提议区块(即达成共识后的待处理区块或者共识成功的待处理区块)中,查找在前述预执行阶段已经预执行的M个交易相同的交易,进而可以将查找到的交易统称为第一类型交易,并可以在该提议区块中,将除第一类型交易之外的(N-M)个交易统称为第二类型交易,这意味着在提议区块中,该第二类型交易所表征的块内剩余交易的数量为(N-M)个。
如图2所示,在改进的执行交易阶段,区块链网络中的任意一个区块链节点(例如,区块链节点C)可以通过图2所示的合并预执行结果或重新执行交易模块26(简称模块26)并行执行提议区块中的第二类型交易,以得到第二交易执行结果,进而可以基于N个交易在该提议区块中的交易执行顺序,将在预执行阶段所得到的与M个交易相关联的第一交易执行结果(或者第一类型交易的待处理交易执行结果)和第二交易执行结果进行顺序合并,以得到顺序合并结果。
进一步的,如图2所示,在存入账本阶段,区块链网络中的任意一个区块链节点(例如,区块链节点C)可以通过图2所示的存入账本模块27(简称模块27)将前述提议区块(即共识成功的待处理区块)、N个交易所构成的交易列表、交易执行结果(即前述顺序合并结果)存入账本,这里的账本可以为区块链网络中的任意一个区块链节点(例如,区块链节点C)在自己本地所维护的区块链账本。
由此可见,本申请实施例为提升区块处理效率,在原有的交易处理周期的基础上,提出了一种改进的交易处理周期,以通过该改进的交易处理周期分阶段执行块内的交易。其中,该改进的交易处理周期至少包含交易生成阶段、交易广播阶段、交易验证阶段、交易预处理阶段、交易打包阶段、区块校验阶段、达成共识阶段、改进的执行交易阶段和存入账本阶段。如图2所示,本申请实施例所涉及的区块链节点(例如,上述区块链节点C)可以分阶段地执行区块中的某些交易(比如,可以在业务处理时长内预先执行块中的某些交易,并可以在共识成功之后,进一步执行块中尚未执行的某些交易),进而可以在该改进的交易处理周期内,充分利用系统资源,以提升区块处理效率。
其中,应当理解,通过在交易预执行阶段提前执行从交易池中获取到的N个交易中的部分交易,可以在后续达成共识之后(即在上述改进的执行交易阶段内),直接利用前述交易预执行阶段的交易执行结果,进而可以在该改进的执行交易阶段并行执行块内的另一部分交易(即块内除预执行交易之外所剩余的交易),这样,可以在改进的执行交易阶段内合并这两个阶段中的交易执行结果的过程中,对块内的这些交易进行冲突检测,以期望从这些交易执行结果中遍历找出不符合预期的交易执行结果,即本申请实施例可以从这些交易执行结果中找出满足冲突检测条件的交易执行结果,进而可以将找出的满足冲突检测条件的交易执行结果所对应的交易统称为冲突交易,以通过上述模块26重新执行找出的冲突交易,以将重新执行冲突交易后的交易执行结果顺序合并到上述提议区块对应的块缓存中。
由此可见,区块链网络中的交易被写入区块链账本(例如,本地账本)的过程可以大致描述为,区块链客户端在将上述业务数据打包成交易之后,可以通过该区块链客户端将该交易发送至区块链网络中的区块链节点(例如,轻节点),随后该交易将以接力棒的方式在这些区块链节点之间传递,直到该区块链网络中的被选出的作为出块节点的共识节点(例如,上述区块链阶段C)收到该交易,可以提前执行从上述交易池所获取到的N个交易中的部分交易,还可以并行将这N个交易打包进区块,得到上述待处理区块,以便于后续可以与其他共识节点对该待处理区块进行区块共识,从而可以在区块共识成功后,执行该共识成功的待处理区块中除预执行交易之外的剩余交易,进而可以将在两个不同阶段所得到的交易执行结果进行顺序合并,得到顺序合并结果。
其中,区块链节点(例如,区块链节点C)在交易预执行阶段得到第一交易执行结果和在改进的执行交易阶段得到第二交易执行结果的具体过程,可以参见如图3至图7所对应的实施例。
进一步的,请参见图3,图3是本申请提供的一种交易数据处理方法的流程示意图,如图3所示,方法可以由上述区块链网络中的区块链节点执行,比如,该区块链节点可以为上述图1所示的共识网络100a中任意一个共识节点。方法具体可以包括以下步骤S101-步骤S104。
步骤S101,获取交易池中的N个交易,在将N个交易打包至待处理区块,并对待处理区块进行区块共识的过程中,并行执行N个交易中的M个交易,得到与M个交易相关联的第一交易执行结果;
其中,M为小于或者等于N的正整数;
具体的,区块链节点可以从交易池的待执行交易空间中获取N个交易,基于N个交易的交易执行顺序,将N个交易写入待执行交易空间对应的待处理队列;进一步的,区块链节点可以在将N个交易打包至待处理区块,并对待处理区块进行区块共识的过程中,记录与待处理区块相关联的区块打包时长、区块校验时长以及投票共识时长;进一步的,区块链节点可以基于区块打包时长、区块校验时长以及投票共识时长,确定与N个交易相关联的业务处理时长;进一步的,区块链节点可以根据待处理队列对应的交易线程池,并行执行待处理队列中的N个交易,且在业务处理时长内,确定由交易线程池中的工作线程所并行执行完的N个交易中的M个交易,根据M个交易的交易读数据集和M个交易的交易写数据集,得到与M个交易相关联的第一交易执行结果。
为便于理解,进一步的,请参见图4,图4是本申请实施例提供的一种分阶段执行块内交易的场景示意图。如图4所示的区块链节点40a可以为从核心共识网络中所选出的用于作为出块节点的共识节点。
其中,如图4所示,该区块链节点40a的交易池可以用于存储在交易验证成功时所确定的合法交易。该交易池所存储的合法交易包含但不限于在交易预执行阶段需要提前并行执行的预执行交易、和在改进的执行交易阶段需要进一步并行执行的块内剩余交易。比如,这里的交易池可以用于存储成千上万的合法交易,分布在该交易池中的这些合法交易均配置有用于表征交易执行顺序的交易标识,通过这些交易标识可以确定当前需要将该交易池中哪些交易可以添加到待进行打包的交易列表,以便于后续可以在交易预执行阶段将该交易列表中的这些交易遍历写入待处理队列。比如,该待处理队列的待执行交易空间可以用于存储从交易池中所选取的具有较小交易执行顺序的N个交易。
其中,如图4所示,在交易预执行阶段通过执行层所提前执行完的预执行交易具体可以包含图4所示的交易1、交易3和交易5。同理,如图4所示,块内剩余交易具体可以包含图4所示的交易2、交易4、交易6、…、交易N。这里的预执行交易和块内剩余交易均为从图4所示的交易池中所获取的N个交易中的交易。存储在该交易池中的每个交易均为该区块链节点40a接收到的由该区块链网络中的其他区块链节点(例如,集成有上述区块链客户端的终端设备)所发送的交易。
其中,可以理解的是,图4所示的区块链节点40a在通过共识层从交易池中获取N个交易,进而可以从出块、广播至共识的整个业务处理过程中,并行通过图4所示的执行层在交易预执行阶段,调度上述待处理队列对应的交易线程池,进而可以通过该交易线程池并行执行从交易池所获取到的N个交易。
其中,可以理解的是,该区块链节点40a可以在上述交易预执行阶段,记录在并行执行的N个交易中的所预执行完的交易,并可以将在并行执行的N个交易中所累计到的预执行完的交易完成数量记为M,这里的M可以为小于或者等于N的正整数,即在图4所示的共识层从出块、广播至共识的整个业务处理过程中,M的取值是由该业务处理过程所对应的业务处理时长所确定的;业务处理时长越长,则M的取值越大,这意味着在该业务处理时长对应的交易预执行阶段中所能够执行完的交易的数量越多。比如,如图4所示,该区块链节点40a通过执行层在并行执行的N个交易中所记录到的预执行完的交易可以为图4所示的3(即M=3)个交易,这3(即M=3)个交易具体可以包含图4所示的交易1、交易3和交易5。
应当理解,如图4所示,区块链节点40a在交易预执行阶段提前执行完N个交易中的M个交易的情况下,可以得到M个交易的交易执行结果,为便于理解,本申请实施例可以将这M个交易的交易执行结果统称为与这M个交易相关联的第一交易执行结果。这意味着本申请实施例所涉及的第一交易执行结果具体可以包含图4所示的交易1的交易执行结果、交易3的交易执行结果和交易5的交易执行结果。其中,如图4所示,交易1的交易执行结果可以包括交易1的交易读数据集和交易写数据集(简称为图4所示的交易1的读/写集),同理,交易3的交易执行结果可以包括交易3的交易读数据集和交易写数据集(简称为图4所示的交易3的读/写集);以此类推,交易5的交易执行结果可以包括交易5的交易读数据集和交易写数据集(简称为图4所示的交易5的读/写集)。
进一步的,如图4所示,区块链节点40a可以将预先执行完的每个交易的交易执行结果分别写入相应交易对应的交易缓存。对于N个交易中的每个交易而言,该区块链节点40a可以在节点内存中为每个交易配置一个交易缓存,这里的交易缓存具体可以包含交易写缓存和交易读缓存。其中,可以理解的是,这里的交易读缓存可以用于存储对应交易的交易读数据集;同理,这里的交易写缓存可以用于存储对应交易的交易写数据集。为便于理解,本申请实施例可以将为这些交易配置的交易缓存所对应的缓存空间统称为交易缓存区,这里的交易缓存区可以为图4所示的交易读/写缓存区。
步骤S102,在区块共识成功后,在待处理区块中将与M个交易相同的交易作为第一类型交易,将与M个交易相关联的第一交易执行结果作为第一类型交易的待处理交易执行结果。
具体的,进一步的,区块链节点(例如,上述图4所示的区块链节点40a)可以在区块共识成功后,将共识成功的待处理区块作为提议区块,在执行提议区块中的N个交易时,从交易缓存区中获取与M个交易相关联的第一交易执行结果;进一步的,区块链节点可以在提议区块中查找与M个交易相同的交易;进一步的,区块链节点可以将查找到的交易作为第一类型交易,从而可以将与M个交易相关联的第一交易执行结果作为第一类型交易的待处理交易执行结果。
其中,与M个交易相关联的第一交易执行结果存储在与M个交易相关联的交易缓存区,如上述图4所示,这里的交易缓存区可以为图4的交易读/写缓存区,该交易读/写缓存区(即交易缓存区)可以用于存储在交易预执行阶段所提前执行完的交易1的读/写集、交易3的读/写集以及交易5的读/写集。
如上述图4所示,由于共识层可以从交易池中获取待打包的N个交易,执行层也可以从交易池中获取N个交易,应当理解,该执行层从交易池中所获取到的N个交易与前述共识层从交易池中所获取到的N个交易均相同。所以,在执行层对于打包至待处理区块中的N个交易而言,该区块链节点可以在通过执行层提前执行完N个交易中的部分交易(即前述M个交易)的情况下,可以进一步在待处理区块所包含的N个交易(即交易1、交易2、交易3、交易4、交易5…、交易N)中,查找与这M个交易(即上述图4所示的已经预执行完的交易1、交易3和交易5)相同的交易,进而可以将查找到的与这M个交易(即上述图4所示的已经预执行完的交易1、交易3和交易5)相同的交易(例如,待处理区块中的交易1、交易3和交易5)作为第一类型交易。这样,该区块链节点可以在区块共识成功后,即图4所示的执行块中交易的过程中,直接将交易预执行阶段所提前预执行完的M个交易的交易执行结果(即前述与M个交易相关联额第一交易执行结果)作为该第一类型交易的待处理交易执行结果。显然,这意味着该区块链节点可以在执行块中的交易的过程中,可以直接获取并利用前述预执行交易的结果,而无需在改进的执行交易阶段中,执行块内的第一类型交易(即无需执行与前述M个交易相同的交易),进而可以在该改进的执行交易阶段,并行执行块内剩余交易。具体的,如上述图4所示,该区块链节点可以进一步在改进的执行交易阶段,并行执行尚未执行的块内交易(例如,可以并行执行图4所示的交易2、交易4、交易6、…、交易N)。为便于理解,本申请实施例可以进一步执行下述步骤S103,以将该待处理区块中除第一类型交易之外的(N-M)个交易作为第二类型交易,这意味着这里的第二类型交易可以内上述图4所示的交易2、交易4、交易6、…、交易N。
步骤S103,在待处理区块中将除第一类型交易之外的(N-M)个交易作为第二类型交易,并行执行第二类型交易,得到与第二类型交易相关联的第二交易执行结果。
具体的,区块链节点可以在待处理区块为提议区块时,在提议区块中将除第一类型交易之外的(N-M)个交易作为第二类型交易;比如,这里的第二类型交易可以包含图4所示的交易2、交易4、交易6、…、交易N。此时,区块链节点可以进一步获取与第二类型交易相关联的业务合约,进而可以基于与第二类型交易相关联的业务合约,读取第二类型交易的交易读数据集;进一步的,区块链节点可以基于第二类型交易的交易读数据集并行执行第二类型交易,以得到第二类型交易的交易写数据集;进一步的,区块链节点可以根据第二类型交易的交易读数据集和第二类型交易的交易写数据集,得到与第二类型交易相关联的第二交易执行结果。
如上述图4所示,区块链节点在并行执行第二类型交易(例如,上述图4所示的交易2、交易4、交易6、…、交易N)时,可以分别获取用于执行这些交易的业务合约。其中,第二类型交易的数量为(N-M)个,该(N-M)个的取值可以为大于或者等0的整数。
其中,为便于理解,这里以第二类型交易的数量,即N-M=2为例,则本申请实施例可以以第二类型交易包含上述交易2和交易4为例,以阐述在改进的执行交易阶段,并行执行交易2和交易4的具体过程。比如,对于交易2而言,该区块链节点可以在获取到用于执行交易2的业务合约(例如,业务合约2’)时,通过该业务合约2’从与该待处理区块(即提议区块)相关联的块缓存或者区块链账本中读取该交易2的交易读数据集,进而可以基于读取到的交易读数据集执行该交易2,以将执行交易2后所得到的交易数据作为该交易2的交易写数据集。应当理解,此时,区块链阶段可以在改进的执行交易阶段,将该交易2的交易读数据集和交易写数据集作为该交易2的交易执行结果。
同理,对于交易4而言,该区块链节点可以在获取到用于执行交易4的业务合约(例如,业务合约4’)时,通过该业务合约4’从与该待处理区块(即提议区块)相关联的块缓存或者区块链账本中读取该交易4的交易读数据集,进而可以基于读取到的交易读数据集执行该交易4,以将执行交易4后所得到的交易数据作为该交易4的交易写数据集。应当理解,此时,区块链阶段可以在改进的执行交易阶段,将该交易4的交易读数据集和交易写数据集作为该交易4的交易执行结果。
为便于理解,本申请实施例可以在改进的执行交易阶段,将交易2的交易执行结果和交易4的交易执行结果统称为与第二类型交易相关联的交易执行结果。
其中,应当理解,本申请实施例可以在改进的执行交易阶段,假设将从节点内存的合约缓存中所获取到的用于执行块内剩余交易的各业务合约,认为是没有交集、且互不影响的,这意味着在调用这些用于执行块内剩余交易的各业务合约(例如,上述业务合约2’和业务合约4’)所读取到的用于执行各交易的交易读数据集是不同的,这样,区块链节点在通过读取到的这些交易数据集并行执行这些块内剩余交易(即上述第二类型交易)时,可以提高对区块内的交易的处理效率。这样,当区块中的每个交易执行完后,就可以按照块内交易执行顺序,验证前述假设是否成立,即此时,区块链节点可以进一步执行下述步骤S104,一个一个比对在执行待处理区块中的每个交易时,通过不同业务合约所读取到的用于执行相应交易的交易读数据集是否被该待处理区块中的前序交易的交易写数据集所改变,如果改变了,说明前述假设不成立,进而需要将前序交易的交易写数据集作为当前比对的交易的交易读数据集,来重新执行当前比对的交易。
步骤S104,基于N个交易在待处理区块中的交易执行顺序,顺序合并待处理交易执行结果和第二交易执行结果,得到与待处理区块的块缓存相关联的顺序合并执行结果。
具体的,区块链节点可以在待处理区块(即提议区块)中,将N个交易中除首个交易之外的交易作为待检测交易;首个交易为N个交易中具有最小交易执行顺序的交易;进一步的,若首个交易为第一类型交易中的交易,则区块链节点可以基于首个交易的交易执行顺序,在待处理交易执行结果中,将首个交易的交易执行结果合并写入待处理区块对应的块缓存;进一步的,区块链节点可以基于N个交易在待处理区块中的交易执行顺序,确定待检测交易的前序交易;前序交易包含首个交易,且前序交易为在待处理区块中所查找到的交易执行顺序早于待检测交易的交易执行顺序的交易;进一步的,区块链节点可以在待处理交易执行结果和第二交易执行结果中,将待检测交易对应的交易执行结果作为待合并交易执行结果,从待合并交易执行结果中获取待检测交易的交易读数据集,从块缓存中获取前序交易的交易写数据集,基于前序交易的交易写数据集和待检测交易的交易读数据集以及冲突检测条件,对待检测交易进行冲突检测,得到冲突检测结果;进一步的,若冲突检测结果指示待检测交易中不存在满足冲突检测条件的待检测交易,则区块链节点可以在待检测交易中将不满足冲突检测条件的待检测交易作为可合并交易,在待处理交易执行结果与第二交易执行结果中,对可合并交易对应的交易执行结果进行顺序合并,得到块缓存对应的顺序合并执行结果。
其中,可以理解的是,如上述图4所示,区块链节点在改进的执行交易阶段执行块中交易的过程中,可以直接使用在交易预执行阶段所得到的交易执行结果,以得到块内第一类型交易的待处理交易执行结果。例如,该待处理交易执行结果可以包含上述图4所示的交易1的交易执行结果、交易3的交易执行结果和交易5的交易执行结果。
进一步的,区块链节点还可以在改进的执行交易阶段并行执行块内尚未执行的每个交易(即上述块内剩余交易),以得到块内尚未执行的每个交易的交易执行结果,例如,区块链节点在并行执行块内的这些交易(例如,上述交易2和交易4)之后,可以得到交易2的交易执行结果和交易4的交易执行结果,进而可以将在改进的执行交易阶段所得到的交易2的交易执行结果和交易4的交易执行结果统称为前述第二交易执行结果。
此时,区块链节点可以基于待处理区块(即上述提议区块)中的N个交易的交易执行顺序,顺序合并第一类型交易的待处理交易执行结果和与第二类型交易相关联的第二交易执行结果。
应当理解,区块链节点可以在顺序合并这些交易执行结果(即待处理交易执行结果和第二交易执行结果)的过程中,基于待处理区块(即上述提议区块)中的N个交易的交易执行顺序,在待处理交易执行结果和第二交易执行结果中遍历确定当前待合并的交易执行结果,进而可以判断当前待合并的交易执行结果是否符合预期,即可以判断当前待合并的交易执行结果是否满足冲突检测条件,如果满足,则需要将当前待合并的交易执行结果所对应的交易作为冲突交易,以重新执行该冲突交易,进而可以将重新执行该冲突交易后所得到的新的交易执行结果作为目标交易执行结果,进而可以将该冲突交易的目标交易执行结果顺序合并至块缓存,应当理解,此时,该块缓存中还可以包括当前已经合并在该块缓存中的该冲突交易所对应的前序交易的交易执行结果。
比如,在待处理区块中的N个交易包含上述图4所示的交易1、交易2、交易3、交易4和交易5而言。由于交易1为该待处理区块中具有最小交易执行顺序的交易(即该交易1为该待处理区块中的首个交易),所以,在该交易1之前并不存在前序交易,从而可以确保在前述交易预执行阶段执行该交易1所使用的交易读数据集(即交易1的读集)与正常执行该交易1所使用的交易读数据保持一致,即通过该交易1所对应的业务合约从区块链账本上所读取到的用于执行该交易1的交易读数据集(即交易1的读集)是对的。所以,此时,区块链节点可以在顺序合并交易执行结果的过程中,直接将交易1的交易执行结果(即上述图4所示的交易1的读/写集)进行合并,以合并得到第一合并交易执行结果,进而将该交易1的交易执行结果写入该待处理区块对应的块缓存。
应当理解,在上述待处理区块中,由于交易1的交易执行顺序早于交易2、交易3、交易4和交易5的交易执行顺序,所以,对于交易2、交易3、交易4和交易5而言,可以将交易1视为交易2、交易3、交易4和交易5的前序交易。为便于理解,此时,本申请实施例所涉及的区块链节点可以在待处理区块(即上述提议区块)中将除首个交易之外的其他交易(例如,交易2、交易3、交易4和交易5)统称为待检测交易,以在顺序合并这些待检测交易的交易执行结果中,遍历检测当前待进行冲突检测的待处理交易的交易执行结果是否满足冲突检测条件。
比如,区块链节点在顺序合并交易执行结果的过程中,可以在当前待进行冲突检测的待检测交易为交易2时,检测在执行交易2时所使用的交易读数据集是否存在于待处理区块的块缓存(比如,块写缓存)中,如果未存在块缓存中,则说明此次通过调用交易2对应的业务合约所读取到的用于执行交易2时所使用的交易读数据集是对的(即交易2的前序交易的交易写数据集(比如,已合并写入至块缓存的交易1的交易写数据集)并不影响该交易2的交易读数据集),故而可以根据智能合约的确定性原则(调用相同的业务合约,使用相同的读数据集,得到确定的结果)。基于此,区块链节点可以认为在改进的执行交易阶段(即在顺序合并交易执行结果之前的业务处理流程)中所执行的交易2与采用正常交易处理流程(即顺序执行提议区块中的交易的业务处理流程)来执行该交易2会有相同的结果,因此可以直接合并该交易2的交易执行结果(例如,该交易2的交易读数据集和交易写数据集)到块缓存。应当理解,待处理区块的块缓存可以包含块写缓存和块读缓存。比如,块写缓存可以用于在存储在顺序合并交易执行结果的过程中,能够合并写入块缓存的块写缓存中的每个可合并交易的交易执行结果。又比如,块读缓存可以用于存储在顺序合并交易执行结果的过程中,记录到的用于执行各个交易时所调用的业务合约。
同理,对于交易3而言,区块链节点在顺序合并交易执行结果的过程中,可以在当前待进行冲突检测的待检测交易为交易3时,检测在执行交易3(即预执行交易3)时所使用的交易读数据集是否存在于待处理区块的块缓存中,如果存在于块缓存且数据不一致,则说明此次通过调用交易3对应的业务合约所读取到的用于预执行交易3时所使用的交易读数据集是不对的,比如,在预执行交易3时使用了区块链账本上的旧数据(即预执行交易3时所读取到的交易3的交易读数据集属于旧数据),进而会导致使用旧数据所得到的交易执行结果存在错误,故而需要将通过读取到的旧数据所得到的该交易3的交易执行结果(即当前待合并的交易执行结果)视为满足冲突检测条件的交易执行结果。
此时,区块链节点可以将交易3视为满足冲突检测条件的冲突交易,进而需要按照正常交易处理流程重新执行该冲突交易,即可以通过该冲突交易的业务合约优先从该待处理区块的块缓存中读取用于执行该冲突交易的数据,进而可以将读取到的数据(例如,与该交易3存在业务依赖关系的该交易3的前序交易(例如,交易2)的交易写数据集)作为该冲突交易的交易读数据集,进而可以基于该冲突交易的交易读数据集重新执行该冲突交易,以重新得到该冲突交易的交易写数据集,进而可以将重新执行该冲突交易后的交易执行结果(即当前冲突交易的交易读数据集和交易写数据集)写入到块缓存。
可选的,应当理解,本申请实施例还可以将在重新执行该冲突交易后所得到的交易执行结果统称为当前冲突交易的目标交易执行结果,并可以将在交易预执行阶段所得到的交易3的交易执行结果统称为冲突交易的初始交易执行结果,进而可以在上述图4所示的交易缓存区用该目标交易执行结果对初始交易执行结果。
以此类推,对于待处理区块中的其他交易(例如,交易4和交易5)而言,可以将前述交易4的交易执行结果和交易5的交易执行结果顺序作为当前待合并的交易执行结果,进而可以将当前待合并的交易执行结果所对应的交易作为上述待检测交易,所以,在待检测交易分别为交易4和交易5时,可以顺序合并前述交易4的交易执行结果和交易5的交易执行结果,且顺序合并前述交易4的交易执行结果和交易5的交易执行结果的具体实现方式,可以一并参见对前述交易2的交易执行结果和交易3的交易执行结果进行顺序合并的具体过程的描述,这里将不再继续进行赘述。
本申请实施例可以在交易打包、区块广播以及区块共识的同时,提前执行这N个交易中的部分交易(即前述M个交易),这样,在区块共识成功后,计算机设备就可以在进一步执行待处理区块时,直接利用提前执行完的M个交易的交易执行结果作为待处理区块中的第一类型交易的交易执行结果,从而可以在交易打包至区块共识的过程中,合理利用系统资源,这意味着本申请实施例在区块共识成功之后,仅需并行执行待处理区块中尚未执行的(N-M)个交易,而无需并行执行待处理区块中的所有交易,这样可以从根源上解决并行执行大量交易而造成的系统资源的抢占问题,这意味着本申请实施例通过分阶段并行执行区块中的交易,可以从根源上提升整个区块的区块处理效率,进而可以提升整个区块链网络的出块效率,以提升整个区块链网络所对应的区块链的吞吐量。
进一步的,请参见图5,图5是本申请实施例提供的一种交易数据处理方法的流程示意图。如图5所示,方法可以由区块链节点执行,该区块链节点可以为上述图1所示的共识网络100a中的任一个共识节点(例如,上述节点10c)。该方法具体包括以下步骤S201-步骤S211:
步骤S201,接收由第二区块链节点广播的与区块链客户端相关联的交易请求;
具体的,在区块链节点为第一区块链节点(例如,上述图2所对应实施例中被作为出块节点的共识节点)时,该第一区块链节点可以用于接收由第二区块链节点广播的与区块链客户端相关联的交易请求,以便于后续与进一步执行下述步骤S202。应当理解,这里的第二区块链节点可以为该第一区块链节点所在的核心共识网络中除第一区块链节点之外的区块链节点。
其中,交易请求中携带的待处理交易是由区块链客户端对业务对象所输入的业务数据进行数据打包后生成的;
当然,可选的,该第一区块链节点也可以用于直接接收与区块链客户端相关联的交易请求,进而可以将该接收到的交易请求广播至整个区块链网络,以使该区块链网络中其他区块链节点(例如,第二区块链节点)执行下述步骤S202。
步骤S202,对交易请求中携带的待处理交易进行交易验证,得到交易验证结果;
具体的,其中,交易请求中携带业务对象的交易签名信息;交易签名信息是由区块链客户端通过业务对象的对象私钥对待处理交易进行签名后所得到的;此时,区块链节点(即第一区块链节点)可以从交易请求中提取待处理交易,在核心共识网络所在的区块链网络中,获取业务对象的对象私钥对应的业务公钥,通过业务公钥对交易签名信息进行签名验证;进一步的,区块链节点(即第一区块链节点)可以在签名验证成功时,基于区块链网络所维护的区块链账本,对待处理交易进行交易验重,得到交易验重结果;进一步的,区块链节点(即第一区块链节点)可以基于交易验重结果,确定待处理交易对应的交易验证结果。
其中,区块链节点(即第一区块链节点)对待处理交易进行交易验重的具体过程可以描述为:在签名验证成功时,获取与交易池相关联的交易验重器,基于交易验重器在区块链网络所维护的区块链账本中查找与待处理交易相同的链上交易;进一步的,若在区块链账本中未查找到与待处理交易相同的链上交易,则区块链节点(即第一区块链节点)将在区块链账本中未查找到与待处理交易相同的链上交易的非重复交易验重结果作为第一交易验重结果;可选的,若在区块链账本中查找到与待处理交易相同的链上交易,则区块链节点(即第一区块链节点)将在区块链账本中查找到与待处理交易相同的链上交易的重复交易验重结果作为第二交易验重结果;基于此,区块链节点(即第一区块链节点)可以将第一交易验重结果或者第二交易验重结果,作为对待处理交易进行交易验重后的交易验重结果。
步骤S203,若交易验证结果指示交易验证成功,则将待处理交易作为合法交易,将合法交易写入第一区块链节点的交易池;
可选的,区块链节点(即第一区块链节点)在执行完步骤S202之后,还可以执行下述步骤:若交易验证结果指示交易验证失败,则将待处理交易作为非法交易,且拒绝将非法交易写入第一区块链节点的交易池。
其中,步骤S202-步骤S203的具体实现方式,可以参见上述图2所对应实施例对交易验证阶段的描述,这里将不再继续进行赘述。
步骤S204,获取交易池中的N个交易,在将N个交易打包至待处理区块,并对待处理区块进行区块共识的过程中,并行执行N个交易中的M个交易,得到与M个交易相关联的第一交易执行结果;
其中,M为小于或者等于N的正整数;
具体的,区块链节点(即第一区块链节点)可以从该第一区块链节点的交易池的待执行交易空间中获取N个交易,并可以基于N个交易的交易执行顺序,将N个交易写入待执行交易空间对应的待处理队列;进一步的,区块链节点(即第一区块链节点)可以在将N个交易打包至待处理区块,并对待处理区块进行区块共识的过程中,记录与待处理区块相关联的区块打包时长、区块校验时长以及投票共识时长;进一步的,区块链节点(即第一区块链节点)基于区块打包时长、区块校验时长以及投票共识时长,确定与N个交易相关联的业务处理时长;进一步的,区块链节点(即第一区块链节点)可以根据待处理队列对应的交易线程池,并行执行待处理队列中的N个交易,且在业务处理时长内,确定由交易线程池中的工作线程所并行执行完的N个交易中的M个交易,根据M个交易的交易读数据集和M个交易的交易写数据集,得到与M个交易相关联的第一交易执行结果。
可选的,应当理解,第一交易执行结果包括M个交易的交易执行结果,一个交易的交易执行结果包含一个交易的交易读数据集和一个交易的交易写数据集;所以,区块链节点(即第一区块链节点)在执行完上述步骤S204之后,还可以从M个交易中获取待缓存交易,从M个交易的交易执行结果中获取待缓存交易的交易读数据集和待缓存交易的交易写数据集;进一步的,区块链节点(即第一区块链节点)可以将待缓存交易的交易读数据集和待缓存交易的交易写数据集缓存至待缓存交易对应的交易缓存。
其中,应当理解,在本申请实施例中,区块链节点(即第一区块链节点)在交易预执行阶段提取执行N个交易中的M个交易时,均使用的是从区块链账本中所读取到的数据。换言之,区块链节点(即第一区块链节点)在预执行交易时,通过业务合约所读取到的数据均来自区块链帐本,因为区块链节点在上述业务处理时长内还未达成对待处理区块的区块共识。区块链节点(即第一区块链节点)可以并行执行M个交易的执行过程中,分别记录通过各个交易的业务合约所读取到的用于执行这些交易的交易读数据(读集)。
为便于理解,进一步的,请参见图6,图6是本申请实施例给出的一种在交易预执行阶段预执行交易时的数据来源示意图。如图6所示的区块链节点60a可以为上述第一区块链节点。如图6所示,当区块链节点在交易预执行阶段提前执行预执行交易K(例如,上述交易3)时,可以获取用于执行该交易K的业务合约,进而可以通过该业务合约将从图6所示的区块链账本上所读取到的数据作为该于执行交易K的交易读数据集,这样,区块链节点在调用业务合约执行该交易K时,可以通过该交易K的交易读数据集执行该交易K,以得到该交易K的交易写数据集,此时,区块链节点可以将交易K的交易读数据集和交易K的交易读数据集统称为交易K的交易执行结果。对于从区块链账本上所读取到的易K的交易读数据集而言,可以为图6所示的A=1,比如,对于区块链电子票据业务而言,这里的A可以用于表征用于开具电子票据的开票企业的登记信息,此时,1可以用于表示该开票企业当前的开票企业名称等。其中,应当理解,图6所示的交易K可以为上述M个交易中的任意一个交易。
其中,步骤S204的具体实现方式,可以参见上述图3所对应实施例对步骤S101的描述,这里将不再继续进行赘述。
步骤S205,在区块共识成功后,在待处理区块中将与M个交易相同的交易作为第一类型交易,将与M个交易相关联的第一交易执行结果作为第一类型交易的待处理交易执行结果;
其中,与M个交易相关联的第一交易执行结果存储在与M个交易相关联的交易缓存区。此时,区块链节点(即第一区块链节点)可以在区块共识成功后,将共识成功的待处理区块作为提议区块,进而可以在执行提议区块中的N个交易时,从交易缓存区中获取与M个交易相关联的第一交易执行结果;进一步的,区块链节点(即第一区块链节点)可以在提议区块中查找与M个交易相同的交易;进一步的,区块链节点(即第一区块链节点)可以将查找到的交易作为第一类型交易,将与M个交易相关联的第一交易执行结果作为第一类型交易的待处理交易执行结果。
其中,步骤S205的具体实现方式,可以参见上述图3所对应实施例对步骤S102的描述,这里将不再继续进行赘述。
步骤S206,在待处理区块中将除第一类型交易之外的(N-M)个交易作为第二类型交易,并行执行第二类型交易,得到与第二类型交易相关联的第二交易执行结果;
具体的,区块链节点(即第一区块链节点)可以在待处理区块为提议区块时,在提议区块中将除第一类型交易之外的(N-M)个交易作为第二类型交易;进一步的,区块链节点(即第一区块链节点)可以获取与第二类型交易相关联的业务合约,基于与第二类型交易相关联的业务合约,读取第二类型交易的交易读数据集;进一步的,区块链节点(即第一区块链节点)可以基于第二类型交易的交易读数据集并行执行第二类型交易,得到第二类型交易的交易写数据集;进一步的,区块链节点(即第一区块链节点)可以根据第二类型交易的交易读数据集和第二类型交易的交易写数据集,得到与第二类型交易相关联的第二交易执行结果。
应当理解,在交易预执行阶段,区块链节点所需要提前进行预处理的预执行交易的数据均来自于区块链账本。但是,在改进的执行阶段,对于区块共识成功后的待处理区块(即上述提议区块而言),在该提议区块中所并行执行的交易的数据来源不仅包括区块链账本中的数据,还包括了该提议区块中前序交易所改变的数据(即当前合并写入了该提议区块的块缓存中的前序交易的数据)。
为便于理解,进一步的,请参见图7,图7是本申请实施例提供的一种在改进的执行交易阶段执行块内剩余交易时的数据来源示意图。如图7所示的区块链节点70a可以为上述第一区块链节点。如图7所示,当区块链节点在改进的执行交易阶段执行提议区块(即图7所示的块B)内的交易L(例如,上述交易4)时,可以获取用于执行该执行交易L的业务合约,进而可以通过该业务合约优先从图7所示的块B的块写缓存中读取数据,如果区块链节点从块B的块写缓存中读取到该交易L的前序交易(例如,交易L-1,该交易L-1可以为上述交易3)的交易写数据集,则需要判断当前在顺序合并交易执行结果时所读取到的前序交易(例如,交易L-1)的交易写数据集是否与在改进的执行交易阶段执行交易L时所使用的交易读数据集保持一致。比如,区块链节点在顺序合并交易执行结果的过程中,若按照正常的交易执行流程从图7所示的块B对应的块写缓存中,读取到能够影响该交易L的前序交易(例如,图7所示的交易L-1,)的数据,则可以将从块B的块写缓存中读取到交易L-1的交易写数据集作为该交易L的交易读数据集(即当前在顺序合并交易执行结果时用于执行该交易L的新数据)。此时,区块链节点可以比较从块写缓存中所读取到的交易L-1的交易写数据集(即当前用于执行该交易L的数据,例如,图7所示的块写缓存中的数据:A=2)是否与在改进的执行交易阶段执行交易L所使用的交易读数据集(即在顺序合并交易执行结果之前用于执行该交易L的数据,例如,图7所示的区块链账本中的数据:A=1)保持一致。如果不一致,则间接表明在预执行交易3时所得到的交易写数据集可能被排在同一块中的其他前序交易所改变了,故而需要根据从块B对应的块写缓存中所读取到的当前被改变了的交易3的交易写数据集(即从块缓存中所读取到的被改变了的交易3的新数据:A=2)重新执行块B内的交易L,以得到新的交易L的交易写数据集,从而可以根据新的交易L的交易读数据集和新的交易L的交易写数据集得到新的交易L的交易执行结果。
可选的,如果在块B的块写缓存中未读取到能够影响该交易L的前序交易(例如,图7所示的交易L-1),则可以进一步从图7所示的区块链账本上读取数据,即可以从图7所示的区块链账本上读取用于执行交易L的数据,进而可以在改进的执行交易阶段,将从区块链账本上所读取到的数据作为该于执行交易L的交易读数据集,例如,图7所示的A=1。其中,应当理解,图7所示的交易L可以为上述(N-M)个交易中的任意一个交易。此时,区块链节点可以认为在顺序合并交易执行结果之前从区块链账本上所获取到的用于执行该交易L的数据(例如,图7所示的区块链账本中的数据:A=1)与顺序合并交易执行结果时从区块链账本上所读取到的数据保存一致。
其中,步骤S206的具体实现方式,可以参见上述图3所对应实施例对步骤S103的描述,这里将不再继续进行赘述。
步骤S207,在待处理区块中,将N个交易中除首个交易之外的交易作为待检测交易;
其中,首个交易为N个交易中具有最小交易执行顺序的交易;
步骤S208,若首个交易为第一类型交易中的交易,则基于首个交易的交易执行顺序,在待处理交易执行结果中,将首个交易的交易执行结果合并写入待处理区块对应的块缓存;
步骤S209,基于N个交易在待处理区块中的交易执行顺序,确定待检测交易的前序交易;
其中,前序交易包含首个交易,且前序交易为在待处理区块中所查找到的交易执行顺序早于待检测交易的交易执行顺序的交易;
步骤S210,在待处理交易执行结果和第二交易执行结果中,将待检测交易对应的交易执行结果作为待合并交易执行结果,从待合并交易执行结果中获取待检测交易的交易读数据集,从块缓存中获取前序交易的交易写数据集,基于前序交易的交易写数据集和待检测交易的交易读数据集以及冲突检测条件,对待检测交易进行冲突检测,得到冲突检测结果;
步骤S211,若冲突检测结果指示待检测交易中不存在满足冲突检测条件的待检测交易,则在待检测交易中将不满足冲突检测条件的待检测交易作为可合并交易,在待处理交易执行结果与第二交易执行结果中,对可合并交易对应的交易执行结果进行顺序合并,得到块缓存对应的顺序合并执行结果。
可选的,区块链节点在执行完上述步骤S210之后,还可以执行以下步骤:若冲突检测结果指示待检测交易中存在满足冲突检测条件的待检测交易,则将满足冲突检测条件的待检测交易作为冲突交易;进一步的,区块链节点(即第一区块链节点)可以获取冲突交易对应的业务合约,基于获取到的冲突交易对应的业务合约,从块缓存中读取冲突交易对应的前序交易的交易写数据集,将冲突交易对应的前序交易的交易写数据集作为冲突交易的交易读数据集;进一步的,区块链节点(即第一区块链节点)可以基于冲突交易的交易读数据集,重新执行冲突交易,得到冲突交易的交易写数据集,基于冲突交易的交易读数据集和冲突交易的交易写数据集,得到冲突交易的目标交易执行结果,在待处理交易执行结果和第二交易执行结果中将冲突交易的交易执行结果作为初始交易执行结果,基于目标交易执行结果对初始交易执行结果进行更新,得到更新后的待处理交易执行结果和第二交易执行结果;进一步的,区块链节点(即第一区块链节点)可以对更新后的待处理交易执行结果和第二交易执行结果进行顺序合并,得到与待处理区块的块缓存相关联的顺序合并执行结果。
其中,步骤S207-步骤S211的具体实现方式可以参见上述图3所对应实施例中对步骤S104的描述,这里将不再继续进行赘述。
可选的,在一些实施例中,区块链节点还可以在待处理区块为提议区块时,对提议区块的区块头、N个交易以及顺序合并执行结果进行序列化处理,以得到提议区块对应的区块数据集,进而可以将提议区块的区块高度和区块数据集以键值对的方式写入区块链的区块链账本。
本申请实施例可以在交易打包、区块广播以及区块共识的同时,提前执行这N个交易中的部分交易(即前述M个交易),这样,在区块共识成功后,计算机设备就可以在进一步执行待处理区块时,直接利用提前执行完的M个交易的交易执行结果作为待处理区块中的第一类型交易的交易执行结果,从而可以在交易打包至区块共识的过程中,合理利用系统资源,这意味着本申请实施例在区块共识成功之后,仅需并行执行待处理区块中尚未执行的N-M个交易,而无需并行执行待处理区块中的所有交易,这样可以从根源上解决并行执行大量交易而造成的系统资源的抢占问题,这意味着本申请实施例通过分阶段并行执行区块中的交易,可以从根源上提升整个区块的区块处理效率。应当理解,本申请实施例通过在顺序合并交易执行结果的过程中,对上述需要进行合并的待处理交易执行结果和第二交易执行结果进行冲突检测,可以确保后续在顺序合并交易执行结果时所得到的顺序合并执行结果的准确性,这样可以确保后续写入区块链账本中的数据的可靠性。
进一步的,请参见图8,图8是本申请提供的一种交易数据处理装置的结构示意图。如图8所示,交易数据处理装置1可应用于上述共识网络中任意一个区块链节点,例如,交易数据处理装置1可应用于上述图1所对应实施例中的节点10c。应当理解,该交易数据处理装置1可以是运行于区块链节点(比如,前述节点10c)中的一个计算机程序(包括程序代码),例如该交易数据处理装置1可以为一个应用软件;可以理解的是,该交易数据处理装置1可以用于执行本申请实施例提供的方法中的相应步骤。如图8所示,交易数据处理装置1可以包括:第一交易执行模块11,执行结果确定模块12,第二交易执行模块13和执行结果合并模块14;可选的,该交易数据处理装置1还可以包括:请求接收模块15,交易验证模块16、交易写入模块17、交易拒绝模块18、序列化处理模块19和账本写入模块20。
第一交易执行模块11,用于获取交易池中的N个交易,在将N个交易打包至待处理区块,并对待处理区块进行区块共识的过程中,并行执行N个交易中的M个交易,得到与M个交易相关联的第一交易执行结果;M为小于或者等于N的正整数;
其中,第一交易执行模块11包括:交易获取单元111、时长记录单元112、处理时长确定单元113和第一并行执行单元114;可选的,第一交易执行模块11还包括:读写数据集获取单元115和读写数据集缓存单元116;
交易获取单元111,用于从交易池的待执行交易空间中获取N个交易,基于N个交易的交易执行顺序,将N个交易写入待执行交易空间对应的待处理队列;
时长记录单元112,用于在将N个交易打包至待处理区块,并对待处理区块进行区块共识的过程中,记录与待处理区块相关联的区块打包时长、区块校验时长以及投票共识时长;
处理时长确定单元113,用于基于区块打包时长、区块校验时长以及投票共识时长,确定与N个交易相关联的业务处理时长;
第一并行执行单元114,用于根据待处理队列对应的交易线程池,并行执行待处理队列中的N个交易,且在业务处理时长内,确定由交易线程池中的工作线程所并行执行完的N个交易中的M个交易,根据M个交易的交易读数据集和M个交易的交易写数据集,得到与M个交易相关联的第一交易执行结果。
可选的,其中,第一交易执行结果包括M个交易的交易执行结果,一个交易的交易执行结果包含一个交易的交易读数据集和一个交易的交易写数据集;
读写数据集获取单元115,用于从M个交易中获取待缓存交易,从M个交易的交易执行结果中获取待缓存交易的交易读数据集和待缓存交易的交易写数据集;
读写数据集缓存单元116,用于将待缓存交易的交易读数据集和待缓存交易的交易写数据集缓存至待缓存交易对应的交易缓存。
其中,交易获取单元111、时长记录单元112、处理时长确定单元113和第一并行执行单元114以及读写数据集获取单元115和读写数据集缓存单元116的具体实现方式,可以参见上述图3所对应实施例中对步骤S101的描述,这里将不再继续进行赘述。
执行结果确定模块12,用于在区块共识成功后,在待处理区块中将与M个交易相同的交易作为第一类型交易,将与M个交易相关联的第一交易执行结果作为第一类型交易的待处理交易执行结果;
其中,与M个交易相关联的第一交易执行结果存储在与M个交易相关联的交易缓存区;
执行结果确定模块12包括:第一结果获取单元121、交易查找单元122和第一交易确定单元123;
第一结果获取单元121,用于在区块共识成功后,将共识成功的待处理区块作为提议区块,在执行提议区块中的N个交易时,从交易缓存区中获取与M个交易相关联的第一交易执行结果;
交易查找单元122,用于在提议区块中查找与M个交易相同的交易;
第一交易确定单元123,用于将查找到的交易作为第一类型交易,将与M个交易相关联的第一交易执行结果作为第一类型交易的待处理交易执行结果。
其中,第一结果获取单元121、交易查找单元122和第一交易确定单元123的具体实现方式,可以参见上述图3所对应实施例中对步骤S102的描述,这里将不再继续进行赘述。
第二交易执行模块13,用于在待处理区块中将除第一类型交易之外的(N-M)个交易作为第二类型交易,并行执行第二类型交易,得到与第二类型交易相关联的第二交易执行结果;
其中,第二交易执行模块13包括:第二交易确定单元131、合约获取单元132、第二并行执行单元133和执行结果确定单元134;
第二交易确定单元131,用于在待处理区块为提议区块时,在提议区块中将除第一类型交易之外的(N-M)个交易作为第二类型交易;
合约获取单元132,用于获取与第二类型交易相关联的业务合约,基于与第二类型交易相关联的业务合约,读取第二类型交易的交易读数据集;
第二并行执行单元133,用于基于第二类型交易的交易读数据集并行执行第二类型交易,得到第二类型交易的交易写数据集;
执行结果确定单元134,用于根据第二类型交易的交易读数据集和第二类型交易的交易写数据集,得到与第二类型交易相关联的第二交易执行结果。
其中,第二交易确定单元131、合约获取单元132、第二并行执行单元133和执行结果确定单元134的具体实现方式,可以参见上述图3所对应实施例中对步骤S103的描述,这里将不再继续进行赘述。
执行结果合并模块14,用于基于N个交易在待处理区块中的交易执行顺序,顺序合并待处理交易执行结果和第二交易执行结果,得到与待处理区块的块缓存相关联的顺序合并执行结果。
其中,执行结果合并模块14包括:待检测交易确定单元141、第一合并单元142、前序交易确定单元143、冲突检测单元144和第一合并单元145;可选的,执行结果合并模块14还包括:冲突交易确定单元146、读数据集确定单元147、重新执行单元148和第二合并单元149;
待检测交易确定单元141,用于在待处理区块中,将N个交易中除首个交易之外的交易作为待检测交易;首个交易为N个交易中具有最小交易执行顺序的交易;
第一合并单元142,用于若首个交易为第一类型交易中的交易,则基于首个交易的交易执行顺序,在待处理交易执行结果中,将首个交易的交易执行结果合并写入待处理区块对应的块缓存;
前序交易确定单元143,用于基于N个交易在待处理区块中的交易执行顺序,确定待检测交易的前序交易;前序交易包含首个交易,且前序交易为在待处理区块中所查找到的交易执行顺序早于待检测交易的交易执行顺序的交易;
冲突检测单元144,用于在待处理交易执行结果和第二交易执行结果中,将待检测交易对应的交易执行结果作为待合并交易执行结果,从待合并交易执行结果中获取待检测交易的交易读数据集,从块缓存中获取前序交易的交易写数据集,基于前序交易的交易写数据集和待检测交易的交易读数据集以及冲突检测条件,对待检测交易进行冲突检测,得到冲突检测结果;
第一合并单元145,用于若冲突检测结果指示待检测交易中不存在满足冲突检测条件的待检测交易,则在待检测交易中将不满足冲突检测条件的待检测交易作为可合并交易,在待处理交易执行结果与第二交易执行结果中,对可合并交易对应的交易执行结果进行顺序合并,得到块缓存对应的顺序合并执行结果。
可选的,冲突交易确定单元146,用于若冲突检测结果指示待检测交易中存在满足冲突检测条件的待检测交易,则将满足冲突检测条件的待检测交易作为冲突交易;
读数据集确定单元147,用于获取冲突交易对应的业务合约,基于获取到的冲突交易对应的业务合约,从块缓存中读取冲突交易对应的前序交易的交易写数据集,将冲突交易对应的前序交易的交易写数据集作为冲突交易的交易读数据集;
重新执行单元148,用于基于冲突交易的交易读数据集,重新执行冲突交易,得到冲突交易的交易写数据集,基于冲突交易的交易读数据集和冲突交易的交易写数据集,得到冲突交易的目标交易执行结果,在待处理交易执行结果和第二交易执行结果中将冲突交易的交易执行结果作为初始交易执行结果,基于目标交易执行结果对初始交易执行结果进行更新,得到更新后的待处理交易执行结果和第二交易执行结果;
第二合并单元149,用于对更新后的待处理交易执行结果和第二交易执行结果进行顺序合并,得到与待处理区块的块缓存相关联的顺序合并执行结果。
其中,待检测交易确定单元141、第一合并单元142、前序交易确定单元143、冲突检测单元144和第一合并单元145以及冲突交易确定单元146、读数据集确定单元147、重新执行单元148和第二合并单元149的具体实现方式,可以参见上述图3所对应实施例中对顺序合并交易执行结果的具体过程的描述,这里将不再继续进行赘述。
其中,第一交易执行模块11,执行结果确定模块12,第二交易执行模块13和执行结果合并模块14的具体实现方式可以参见上述图3所对应实施例中对步骤S101-步骤S104的描述,这里将不再继续进行赘述。
其中,交易数据处理装置1可以运行在核心共识网络中的第一区块链节点上;核心共识网络还包括除第一区块链节点之外的第二区块链节点;第一区块链节点为在核心共识网络中所确定的用于打包得到待处理区块的节点;
可选的,在第一交易执行模块10获取交易池中的N个交易之前,请求接收模块15,用于接收由第二区块链节点广播的与区块链客户端相关联的交易请求;交易请求中携带的待处理交易是由区块链客户端对业务对象所输入的业务数据进行数据打包后生成的;
交易验证模块16,用于对交易请求中携带的待处理交易进行交易验证,得到交易验证结果;
其中,交易请求中携带业务对象的交易签名信息;交易签名信息是由区块链客户端通过业务对象的对象私钥对待处理交易进行签名后所得到的;
交易验证模块16包括:签名验证单元161、交易验重单元162和验证结果确定单元163;
签名验证单元161,用于从交易请求中提取待处理交易,在核心共识网络所在的区块链网络中,获取业务对象的对象私钥对应的业务公钥,通过业务公钥对交易签名信息进行签名验证;
交易验重单元162,用于在签名验证成功时,基于区块链网络所维护的区块链账本,对待处理交易进行交易验重,得到交易验重结果;
其中,交易验重单元162包括:交易查找子单元1621、第一验重确定子单元1622、第二验重确定子单元1623和验重结果确定单元1624;
交易查找子单元1621,用于在签名验证成功时,获取与交易池相关联的交易验重器,基于交易验重器在区块链网络所维护的区块链账本中查找与待处理交易相同的链上交易;
第一验重确定子单元1622,用于若在区块链账本中未查找到与待处理交易相同的链上交易,则将在区块链账本中未查找到与待处理交易相同的链上交易的非重复交易验重结果作为第一交易验重结果;
第二验重确定子单元1623,用于若在区块链账本中查找到与待处理交易相同的链上交易,则将在区块链账本中查找到与待处理交易相同的链上交易的重复交易验重结果作为第二交易验重结果;
验重结果确定单元1624,用于将第一交易验重结果或者第二交易验重结果,作为对待处理交易进行交易验重后的交易验重结果。
其中,交易查找子单元1621、第一验重确定子单元1622、第二验重确定子单元1623和验重结果确定单元1624的具体实现方式,可以参见上述图5所对应实施例中对交易验重的具体实现方式的描述,这里将不再继续进行赘述。
验证结果确定单元163,用于基于交易验重结果,确定待处理交易对应的交易验证结果。
其中,签名验证单元161、交易验重单元162和验证结果确定单元163的具体实现方式可以参见上述图2所对应实施例中对交易验证阶段的描述,这里将不再继续进行赘述。
交易写入模块17,用于若交易验证结果指示交易验证成功,则将待处理交易作为合法交易,将合法交易写入第一区块链节点的交易池。
可选的,交易拒绝模块18,用于若交易验证结果指示交易验证失败,则将待处理交易作为非法交易,且拒绝将非法交易写入第一区块链节点的交易池。
其中,请求接收模块15,交易验证模块16、交易写入模块17和交易拒绝模块18的具体实现方式,可以参见上述图5所对应实施例中对步骤S201-步骤S203的描述,这里将不再继续进行赘述。
可选的,序列化处理模块19,用于在待处理区块为提议区块时,对提议区块的区块头、N个交易以及顺序合并执行结果进行序列化处理,得到提议区块对应的区块数据集;
账本写入模块20,用于将提议区块的区块高度和区块数据集写入与区块链的区块链账本。
其中,序列化处理模块19和账本写入模块20的具体实现方式,可以参见上述图2或者图5所对应实施例中对存入账本阶段的具体实现方式的描述,这里将不再继续进行赘述。可以理解的是,对采用相同方法的有益效果描述,也不再进行赘述。
进一步地,请参见图9,图9是本申请实施例提供的一种计算机设备的结构示意图。如图9所示,计算机设备1000可以应用于上述图1对应实施例中的区块链节点,计算机设备1000可以包括:处理器1001,网络接口1004和存储器1005,此外,计算机设备1000还可以包括:用户接口1003,和至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,应当理解,在一些可选实施例中,用户接口1003可以包括显示屏(Display)、键盘(Keyboard),可选的,用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图9所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。
该计算机设备1000中的网络接口1004还可以提供网络通讯功能。在图9所示的计算机设备1000中,网络接口1004可提供网络通讯功能;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现前文图3或者图5所对应实施例中对交易数据处理方法的描述,也可执行前文图8所对应实施例中对交易数据处理装置1的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
此外,这里需要指出的是:本申请实施例还提供了一种计算机可读存储介质,且计算机可读存储介质中存储有前文提及的交易数据处理装置1所执行的计算机程序,且计算机程序包括程序指令,当处理器执行程序指令时,能够执行前文图3或者图5所对应实施例中对交易数据处理方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机可读存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。作为示例,程序指令可被部署在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行,分布在多个地点且通过通信网络互连的多个计算设备可以组成区块链系统。
此外,需要说明的是:本申请实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或者计算机程序可以包括计算机指令,该计算机指令可以存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器可以执行该计算机指令,使得该计算机设备执行前文图3或图5所对应实施例中对交易数据处理方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机程序产品或者计算机程序实施例中未披露的技术细节,请参照本申请方法实施例的描述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,存储介质可为磁碟、光盘、只读存储器(Read-Only Memory,ROM)或随机存储器(Random Access Memory,RAM)等。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。
Claims (15)
1.一种交易数据处理方法,其特征在于,包括:
获取交易池中的N个交易,在将所述N个交易打包至待处理区块,并对所述待处理区块进行区块共识的过程中,并行执行所述N个交易中的M个交易,得到与所述M个交易相关联的第一交易执行结果;M为小于或者等于N的正整数;
在区块共识成功后,在所述待处理区块中将与所述M个交易相同的交易作为第一类型交易,将与所述M个交易相关联的第一交易执行结果作为所述第一类型交易的待处理交易执行结果;
在所述待处理区块中将除所述第一类型交易之外的(N-M)个交易作为第二类型交易,并行执行所述第二类型交易,得到与所述第二类型交易相关联的第二交易执行结果;
基于所述N个交易在所述待处理区块中的交易执行顺序,顺序合并所述待处理交易执行结果和所述第二交易执行结果,得到与所述待处理区块的块缓存相关联的顺序合并执行结果。
2.根据权利要求1所述的方法,其特征在于,所述方法由核心共识网络中的第一区块链节点执行;所述核心共识网络还包括除所述第一区块链节点之外的第二区块链节点;所述第一区块链节点为在所述核心共识网络中所确定的用于打包得到所述待处理区块的节点;
在所述获取交易池中的N个交易之前,所述方法还包括:
接收由所述第二区块链节点广播的与区块链客户端相关联的交易请求;所述交易请求中携带的待处理交易是由所述区块链客户端对业务对象所输入的业务数据进行数据打包后生成的;
对所述交易请求中携带的所述待处理交易进行交易验证,得到交易验证结果;
若所述交易验证结果指示交易验证成功,则将所述待处理交易作为合法交易,将所述合法交易写入所述第一区块链节点的交易池。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
若所述交易验证结果指示交易验证失败,则将所述待处理交易作为非法交易,且拒绝将所述非法交易写入所述第一区块链节点的交易池。
4.根据权利要求2所述的方法,其特征在于,所述交易请求中携带所述业务对象的交易签名信息;所述交易签名信息是由所述区块链客户端通过所述业务对象的对象私钥对所述待处理交易进行签名后所得到的;
所述对所述交易请求中携带的所述待处理交易进行交易验证,得到交易验证结果,包括:
从所述交易请求中提取所述待处理交易,在所述核心共识网络所在的区块链网络中,获取所述业务对象的对象私钥对应的业务公钥,通过所述业务公钥对所述交易签名信息进行签名验证;
在签名验证成功时,基于所述区块链网络所维护的区块链账本,对所述待处理交易进行交易验重,得到交易验重结果;
基于所述交易验重结果,确定所述待处理交易对应的交易验证结果。
5.根据权利要求4所述的方法,其特征在于,所述在签名验证成功时,基于所述区块链网络所维护的区块链账本,对所述待处理交易进行交易验重,得到交易验重结果,包括:
在签名验证成功时,获取与所述交易池相关联的交易验重器,基于所述交易验重器在所述区块链网络所维护的区块链账本中查找与所述待处理交易相同的链上交易;
若在所述区块链账本中未查找到与所述待处理交易相同的链上交易,则将在所述区块链账本中未查找到与所述待处理交易相同的链上交易的非重复交易验重结果作为第一交易验重结果;
若在所述区块链账本中查找到与所述待处理交易相同的链上交易,则将在所述区块链账本中查找到与所述待处理交易相同的链上交易的重复交易验重结果作为第二交易验重结果;
将所述第一交易验重结果或者所述第二交易验重结果,作为对所述待处理交易进行交易验重后的交易验重结果。
6.根据权利要求1所述的方法,其特征在于,所述获取交易池中的N个交易,在将所述N个交易打包至待处理区块,并对所述待处理区块进行区块共识的过程中,并行执行所述N个交易中的M个交易,得到与所述M个交易相关联的第一交易执行结果,包括:
从交易池的待执行交易空间中获取N个交易,基于所述N个交易的交易执行顺序,将所述N个交易写入所述待执行交易空间对应的待处理队列;
在将所述N个交易打包至待处理区块,并对所述待处理区块进行区块共识的过程中,记录与所述待处理区块相关联的区块打包时长、区块校验时长以及投票共识时长;
基于所述区块打包时长、所述区块校验时长以及所述投票共识时长,确定与所述N个交易相关联的业务处理时长;
根据所述待处理队列对应的交易线程池,并行执行所述待处理队列中的N个交易,且在所述业务处理时长内,确定由所述交易线程池中的工作线程所并行执行完的所述N个交易中的M个交易,根据所述M个交易的交易读数据集和所述M个交易的交易写数据集,得到与所述M个交易相关联的第一交易执行结果。
7.根据权利要求1所述的方法,其特征在于,所述第一交易执行结果包括所述M个交易的交易执行结果,一个交易的交易执行结果包含一个交易的交易读数据集和一个交易的交易写数据集;
所述方法还包括:
从所述M个交易中获取待缓存交易,从所述M个交易的交易执行结果中获取所述待缓存交易的交易读数据集和所述待缓存交易的交易写数据集;
将所述待缓存交易的交易读数据集和所述待缓存交易的交易写数据集缓存至所述待缓存交易对应的交易缓存。
8.根据权利要求1所述的方法,其特征在于,与所述M个交易相关联的第一交易执行结果存储在与所述M个交易相关联的交易缓存区;
所述在区块共识成功后,在所述待处理区块中将与所述M个交易相同的交易作为第一类型交易,将与所述M个交易相关联的第一交易执行结果作为所述第一类型交易的待处理交易执行结果,包括:
在区块共识成功后,将共识成功的待处理区块作为提议区块,在执行所述提议区块中的N个交易时,从所述交易缓存区中获取与所述M个交易相关联的第一交易执行结果;
在所述提议区块中查找与所述M个交易相同的交易;
将查找到的交易作为第一类型交易,将与所述M个交易相关联的第一交易执行结果作为所述第一类型交易的待处理交易执行结果。
9.根据权利要求1所述的方法,其特征在于,所述在所述待处理区块中将除所述第一类型交易之外的(N-M)个交易作为第二类型交易,并行执行所述第二类型交易,得到与所述第二类型交易相关联的第二交易执行结果,包括:
在所述待处理区块为提议区块时,在所述提议区块中将除所述第一类型交易之外的(N-M)个交易作为第二类型交易;
获取与所述第二类型交易相关联的业务合约,基于与所述第二类型交易相关联的业务合约,读取所述第二类型交易的交易读数据集;
基于所述第二类型交易的交易读数据集并行执行所述第二类型交易,得到所述第二类型交易的交易写数据集;
根据所述第二类型交易的交易读数据集和所述第二类型交易的交易写数据集,得到与所述第二类型交易相关联的第二交易执行结果。
10.根据权利要求1所述的方法,其特征在于,所述基于所述N个交易在所述待处理区块中的交易执行顺序,顺序合并所述待处理交易执行结果和所述第二交易执行结果,得到与所述待处理区块的块缓存相关联的顺序合并执行结果,包括:
在所述待处理区块中,将所述N个交易中除所述首个交易之外的交易作为待检测交易;所述首个交易为所述N个交易中具有最小交易执行顺序的交易;
若所述首个交易为所述第一类型交易中的交易,则基于所述首个交易的交易执行顺序,在所述待处理交易执行结果中,将所述首个交易的交易执行结果合并写入所述待处理区块对应的块缓存;
基于所述N个交易在所述待处理区块中的交易执行顺序,确定所述待检测交易的前序交易;所述前序交易包含所述首个交易,且所述前序交易为在所述待处理区块中所查找到的交易执行顺序早于所述待检测交易的交易执行顺序的交易;
在所述待处理交易执行结果和所述第二交易执行结果中,将所述待检测交易对应的交易执行结果作为待合并交易执行结果,从所述待合并交易执行结果中获取所述待检测交易的交易读数据集,从所述块缓存中获取所述前序交易的交易写数据集,基于所述前序交易的交易写数据集和所述待检测交易的交易读数据集以及冲突检测条件,对所述待检测交易进行冲突检测,得到冲突检测结果;
若所述冲突检测结果指示所述待检测交易中不存在满足所述冲突检测条件的待检测交易,则在所述待检测交易中将不满足所述冲突检测条件的待检测交易作为可合并交易,在所述待处理交易执行结果与所述第二交易执行结果中,对所述可合并交易对应的交易执行结果进行顺序合并,得到所述块缓存对应的顺序合并执行结果。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:
若所述冲突检测结果指示所述待检测交易中存在满足所述冲突检测条件的待检测交易,则将满足所述冲突检测条件的待检测交易作为冲突交易;
获取所述冲突交易对应的业务合约,基于获取到的所述冲突交易对应的业务合约,从所述块缓存中读取所述冲突交易对应的前序交易的交易写数据集,将所述冲突交易对应的前序交易的交易写数据集作为所述冲突交易的交易读数据集;
基于所述冲突交易的交易读数据集,重新执行所述冲突交易,得到所述冲突交易的交易写数据集,基于所述冲突交易的交易读数据集和所述冲突交易的交易写数据集,得到所述冲突交易的目标交易执行结果,在所述待处理交易执行结果和所述第二交易执行结果中将所述冲突交易的交易执行结果作为初始交易执行结果,基于所述目标交易执行结果对所述初始交易执行结果进行更新,得到更新后的待处理交易执行结果和第二交易执行结果;
对所述更新后的待处理交易执行结果和第二交易执行结果进行顺序合并,得到与所述待处理区块的块缓存相关联的顺序合并执行结果。
12.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述待处理区块为提议区块时,对所述提议区块的区块头、所述N个交易以及所述顺序合并执行结果进行序列化处理,得到所述提议区块对应的区块数据集;
将所述提议区块的区块高度和所述区块数据集写入与所述区块链的区块链账本。
13.一种交易数据处理装置,其特征在于,包括:
第一交易执行模块,用于获取交易池中的N个交易,在将所述N个交易打包至待处理区块,并对所述待处理区块进行区块共识的过程中,并行执行所述N个交易中的M个交易,得到与所述M个交易相关联的第一交易执行结果;所述M为小于或者等于所述N的正整数;
执行结果确定模块,用于在区块共识成功后,在所述待处理区块中将与所述M个交易相同的交易作为第一类型交易,将与所述M个交易相关联的第一交易执行结果作为所述第一类型交易的待处理交易执行结果;
第二交易执行模块,用于在所述待处理区块中将除所述第一类型交易之外的(N-M)个交易作为第二类型交易,并行执行所述第二类型交易,得到与所述第二类型交易相关联的第二交易执行结果;
执行结果合并模块,用于基于所述N个交易在所述待处理区块中的交易执行顺序,顺序合并所述待处理交易执行结果和所述第二交易执行结果,得到与所述待处理区块的块缓存相关联的顺序合并执行结果。
14.一种计算机设备,其特征在于,包括:处理器和存储器;
所述处理器与所述存储器相连,其中,所述存储器用于存储计算机程序,所述处理器用于调用所述计算机程序,以使得所述计算机设备执行权利要求1-12任一项所述的方法。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,该计算机程序适于由处理器加载并执行,以使得具有所述处理器的计算机设备执行权利要求1-12任一项所述的方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111120951.9A CN113568981B (zh) | 2021-09-24 | 2021-09-24 | 一种交易数据处理方法、装置、设备以及介质 |
PCT/CN2022/112373 WO2023045617A1 (zh) | 2021-09-24 | 2022-08-15 | 一种交易数据处理方法、装置、设备以及介质 |
US18/143,511 US20230275771A1 (en) | 2021-09-24 | 2023-05-04 | Pre-execution of block chain transaction in parallel during block consensus |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111120951.9A CN113568981B (zh) | 2021-09-24 | 2021-09-24 | 一种交易数据处理方法、装置、设备以及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113568981A true CN113568981A (zh) | 2021-10-29 |
CN113568981B CN113568981B (zh) | 2022-01-07 |
Family
ID=78174290
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111120951.9A Active CN113568981B (zh) | 2021-09-24 | 2021-09-24 | 一种交易数据处理方法、装置、设备以及介质 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230275771A1 (zh) |
CN (1) | CN113568981B (zh) |
WO (1) | WO2023045617A1 (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114331440A (zh) * | 2021-12-31 | 2022-04-12 | 北京江融信科技有限公司 | 一种冲突检测及性能优化方法和装置 |
WO2023045617A1 (zh) * | 2021-09-24 | 2023-03-30 | 腾讯科技(深圳)有限公司 | 一种交易数据处理方法、装置、设备以及介质 |
WO2024007856A1 (zh) * | 2022-07-07 | 2024-01-11 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置及设备、介质、产品 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117648159B (zh) * | 2023-11-08 | 2024-07-19 | 东南大学 | 一种区块链事务并行化执行方法、装置和电子设备 |
CN117828647B (zh) * | 2024-03-04 | 2024-05-10 | 腾讯科技(深圳)有限公司 | 区块链事务上链方法、相关装置和介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2018158936A1 (ja) * | 2017-03-03 | 2018-09-07 | 日本電気株式会社 | ブロックチェーン管理装置、ブロックチェーン管理方法及びプログラム |
EP3534320A1 (en) * | 2016-10-27 | 2019-09-04 | One Connect Smart Technology Co., Ltd. (Shenzhen) | Block chain-based multi-chain management method and system, electronic device, and storage medium |
US20190334726A1 (en) * | 2018-04-30 | 2019-10-31 | Dell Products L.P. | Blockchain-based method and system for immutable resource allocation in a cloud computing environment |
WO2019233123A1 (en) * | 2018-06-08 | 2019-12-12 | AnApp Technologies Limited | System and method for securing transaction in a blockchain network |
CN112073538A (zh) * | 2020-11-10 | 2020-12-11 | 南京可信区块链与算法经济研究院有限公司 | 一种在区块链中实现多节点交易并行执行的方法及系统 |
CN112884587A (zh) * | 2021-04-30 | 2021-06-01 | 支付宝(杭州)信息技术有限公司 | 区块链交易执行方法、区块链节点及控制装置 |
CN112883107A (zh) * | 2020-12-31 | 2021-06-01 | 杭州趣链科技有限公司 | 区块链中交易异步执行方法、系统及相关设备 |
WO2021114819A1 (zh) * | 2019-12-11 | 2021-06-17 | 支付宝(杭州)信息技术有限公司 | 生成和执行智能合约交易的方法及装置 |
CN113256424A (zh) * | 2021-06-15 | 2021-08-13 | 腾讯科技(深圳)有限公司 | 一种交易数据处理方法、装置、设备及存储介质 |
CN113409047A (zh) * | 2021-08-18 | 2021-09-17 | 腾讯科技(深圳)有限公司 | 基于区块链的数据处理方法、装置、设备及可读存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113568981B (zh) * | 2021-09-24 | 2022-01-07 | 腾讯科技(深圳)有限公司 | 一种交易数据处理方法、装置、设备以及介质 |
-
2021
- 2021-09-24 CN CN202111120951.9A patent/CN113568981B/zh active Active
-
2022
- 2022-08-15 WO PCT/CN2022/112373 patent/WO2023045617A1/zh unknown
-
2023
- 2023-05-04 US US18/143,511 patent/US20230275771A1/en active Pending
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3534320A1 (en) * | 2016-10-27 | 2019-09-04 | One Connect Smart Technology Co., Ltd. (Shenzhen) | Block chain-based multi-chain management method and system, electronic device, and storage medium |
WO2018158936A1 (ja) * | 2017-03-03 | 2018-09-07 | 日本電気株式会社 | ブロックチェーン管理装置、ブロックチェーン管理方法及びプログラム |
US20190334726A1 (en) * | 2018-04-30 | 2019-10-31 | Dell Products L.P. | Blockchain-based method and system for immutable resource allocation in a cloud computing environment |
WO2019233123A1 (en) * | 2018-06-08 | 2019-12-12 | AnApp Technologies Limited | System and method for securing transaction in a blockchain network |
WO2021114819A1 (zh) * | 2019-12-11 | 2021-06-17 | 支付宝(杭州)信息技术有限公司 | 生成和执行智能合约交易的方法及装置 |
CN112073538A (zh) * | 2020-11-10 | 2020-12-11 | 南京可信区块链与算法经济研究院有限公司 | 一种在区块链中实现多节点交易并行执行的方法及系统 |
CN112883107A (zh) * | 2020-12-31 | 2021-06-01 | 杭州趣链科技有限公司 | 区块链中交易异步执行方法、系统及相关设备 |
CN112884587A (zh) * | 2021-04-30 | 2021-06-01 | 支付宝(杭州)信息技术有限公司 | 区块链交易执行方法、区块链节点及控制装置 |
CN113256424A (zh) * | 2021-06-15 | 2021-08-13 | 腾讯科技(深圳)有限公司 | 一种交易数据处理方法、装置、设备及存储介质 |
CN113409047A (zh) * | 2021-08-18 | 2021-09-17 | 腾讯科技(深圳)有限公司 | 基于区块链的数据处理方法、装置、设备及可读存储介质 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023045617A1 (zh) * | 2021-09-24 | 2023-03-30 | 腾讯科技(深圳)有限公司 | 一种交易数据处理方法、装置、设备以及介质 |
CN114331440A (zh) * | 2021-12-31 | 2022-04-12 | 北京江融信科技有限公司 | 一种冲突检测及性能优化方法和装置 |
WO2024007856A1 (zh) * | 2022-07-07 | 2024-01-11 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置及设备、介质、产品 |
Also Published As
Publication number | Publication date |
---|---|
US20230275771A1 (en) | 2023-08-31 |
CN113568981B (zh) | 2022-01-07 |
WO2023045617A1 (zh) | 2023-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113568981B (zh) | 一种交易数据处理方法、装置、设备以及介质 | |
US10698885B2 (en) | Method and device for writing service data in block chain system | |
CN113570466B (zh) | 一种交易数据处理方法、装置以及可读存储介质 | |
CN113094396B (zh) | 基于节点内存的数据处理方法、装置、设备以及介质 | |
CN109886681A (zh) | 区块链共识方法及共识系统 | |
CN113409047B (zh) | 基于区块链的数据处理方法、装置、设备及可读存储介质 | |
WO2022174735A1 (zh) | 基于分布式存储的数据处理方法、装置、设备以及介质 | |
CN111639309B (zh) | 一种数据处理方法、装置、节点设备及存储介质 | |
CN111815454B (zh) | 数据上链方法及装置、电子设备、存储介质 | |
JP6859518B2 (ja) | サーバへの攻撃を防ぐ方法及びデバイス | |
CN111694873B (zh) | 虚拟资源包的处理方法、装置及数据库服务器 | |
CN112950211B (zh) | 一种交易验重方法、装置、设备以及介质 | |
CN112118107B (zh) | 一种实现数据可信的自适应执行方法 | |
CN113760976A (zh) | 业务的处理方法、装置、设备及存储介质 | |
CN116827957B (zh) | 基于多区块链的信息处理方法、装置、设备以及介质 | |
CN116977067A (zh) | 基于区块链的数据处理方法、装置、设备及可读存储介质 | |
CN118368341A (zh) | 一种基于分层链网络的数据处理方法、装置、设备及介质 | |
CN118036021A (zh) | 基于多区块链的数据处理方法、装置、设备以及介质 | |
US20240205032A1 (en) | Blockchain data processing method, apparatus, and device, computer-readable storage medium, and computer program product | |
CN116760632B (zh) | 数据处理方法、装置、设备及可读存储介质 | |
CN113779155B (zh) | 区块链交易处理方法、装置及设备 | |
CN118445135A (zh) | 基于区块链的数据处理方法、装置、设备及可读存储介质 | |
CN116016374A (zh) | 基于区块链的数据处理方法、装置、设备及可读存储介质 | |
CN117764728A (zh) | 一种区块链跨合约调用方法、装置、设备及存储介质 | |
CN112488832A (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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40053652 Country of ref document: HK |