CN112910724B - 区块链网络的压力测试方法及装置、系统 - Google Patents
区块链网络的压力测试方法及装置、系统 Download PDFInfo
- Publication number
- CN112910724B CN112910724B CN202110063126.3A CN202110063126A CN112910724B CN 112910724 B CN112910724 B CN 112910724B CN 202110063126 A CN202110063126 A CN 202110063126A CN 112910724 B CN112910724 B CN 112910724B
- Authority
- CN
- China
- Prior art keywords
- transaction
- blockchain
- block
- service
- pressure measurement
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/50—Testing arrangements
-
- 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
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Business, Economics & Management (AREA)
- Databases & Information Systems (AREA)
- Accounting & Taxation (AREA)
- Finance (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Technology Law (AREA)
- Strategic Management (AREA)
- Marketing (AREA)
- Economics (AREA)
- General Business, Economics & Management (AREA)
- Development Economics (AREA)
- Signal Processing (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- Financial Or Insurance-Related Operations Such As Payment And Settlement (AREA)
Abstract
本说明书一个或多个实施例提供一种区块链网络的压力测试方法及装置、系统,该方法可以包括:识别接收到的区块链交易的交易类型,所述交易类型包括压测交易和业务交易;在所述区块链交易属于所述压测交易的情况下,将包含所述压测交易的压测区块添加至所述区块链节点维护的压测区块链;在所述区块链交易属于所述业务交易的情况下,将包含所述业务交易的业务区块添加至所述区块链节点维护的业务区块链。
Description
技术领域
本说明书一个或多个实施例涉及区块链技术领域,尤其涉及一种区块链网络的压力测试方法及装置、系统。
背景技术
区块链技术(也被称之为,分布式账本技术)是一种去中性化的分布式数据库技术,具有去中心化、公开透明、不可篡改、可信任等多种特点,适用于诸多对数据可靠性具有高需求的应用场景中。
通过向区块链网络导入压力测试流量,可以获知区块链网络的负载能力、数据吞吐量上限等各项性能指标,从而据此维护区块链网络的正常运行,或者针对区块链网络进行优化。
发明内容
有鉴于此,本说明书一个或多个实施例提供一种区块链网络的压力测试方法及装置、系统。
为实现上述目的,本说明书一个或多个实施例提供技术方案如下:
根据本说明书一个或多个实施例的第一方面,提出了一种区块链网络的压力测试方法,应用于区块链节点,所述方法包括:
识别接收到的区块链交易的交易类型,所述交易类型包括压测交易和业务交易;
在所述区块链交易属于所述压测交易的情况下,将包含所述压测交易的压测区块添加至所述区块链节点维护的压测区块链;
在所述区块链交易属于所述业务交易的情况下,将包含所述业务交易的业务区块添加至所述区块链节点维护的业务区块链。
根据本说明书一个或多个实施例的第二方面,提出了一种区块链网络的压力测试方法,应用于区块链节点,所述方法包括:
识别接收到的区块链交易的交易类型,所述交易类型包括压测交易和业务交易;
在所述区块链交易属于所述压测交易的情况下,执行所述区块链交易以生成包含所述区块链交易的压测区块,在所述区块链交易属于所述业务交易的情况下,执行所述区块链交易以生成包含所述区块链交易的业务区块;
识别待写入区块的区块类型,在所述待写入区块属于所述压测区块的情况下,将所述待写入区块添加至所述区块链节点维护的压测区块链,在所述待写入区块属于所述业务区块的情况下,将所述待写入区块添加至所述区块链节点维护的业务区块链。
根据本说明书一个或多个实施例的第三方面,提出了一种区块链交易的处理方法,应用于区块链节点,所述区块链节点维护有多条区块链;所述方法包括:
识别接收到的区块链交易的交易类型;
将包含所述区块链交易的区块添加至所述多条区块链中与所述交易类型对应的区块链。
根据本说明书一个或多个实施例的第四方面,提出了一种区块链网络的压力测试装置,应用于区块链节点,所述装置包括:
交易识别单元,识别接收到的区块链交易的交易类型,所述交易类型包括压测交易和业务交易;
第一添加单元,在所述区块链交易属于所述压测交易的情况下,将包含所述压测交易的压测区块添加至所述区块链节点维护的压测区块链;
第二添加单元,在所述区块链交易属于所述业务交易的情况下,将包含所述业务交易的业务区块添加至所述区块链节点维护的业务区块链。
根据本说明书一个或多个实施例的第五方面,提出了一种区块链网络的压力测试装置,应用于区块链节点,所述装置包括:
交易识别单元,识别接收到的区块链交易的交易类型,所述交易类型包括压测交易和业务交易;
交易执行单元,在所述区块链交易属于所述压测交易的情况下,执行所述区块链交易以生成包含所述区块链交易的压测区块,在所述区块链交易属于所述业务交易的情况下,执行所述区块链交易以生成包含所述区块链交易的业务区块;
区块写入单元,识别待写入区块的区块类型,在所述待写入区块属于所述压测区块的情况下,将所述待写入区块添加至所述区块链节点维护的压测区块链,在所述待写入区块属于所述业务区块的情况下,将所述待写入区块添加至所述区块链节点维护的业务区块链。
根据本说明书一个或多个实施例的第六方面,提出了一种区块链交易的处理装置,应用于区块链节点,所述区块链节点维护有多条区块链;所述装置包括:
交易识别单元,识别接收到的区块链交易的交易类型;
添加单元,将包含所述区块链交易的区块添加至所述多条区块链中与所述交易类型对应的区块链。
根据本说明书一个或多个实施例的第七方面,提出了一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如上述实施例中任一所述的方法。
根据本说明书一个或多个实施例的第八方面,提出了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如上述实施例中任一所述方法的步骤。
附图说明
图1是一示例性实施例提供的一种区块链交易的处理方法的流程图。
图2是一示例性实施例提供的一种区块链网络的示意图。
图3是一示例性实施例提供的一种网络架构的示意图。
图4是一示例性实施例提供的一种区块链网络的压力测试方法的流程图。
图5是一示例性实施例提供的一种区块链网络的压力测试系统的示意图。
图6是一示例性实施例提供的另一种区块链网络的压力测试方法的流程图。
图7是一示例性实施例提供的一种执行区块链交易的流程图。
图8是一示例性实施例提供的一种设备的结构示意图。
图9是一示例性实施例提供的一种区块链交易的处理装置的框图。
图10是一示例性实施例提供的另一种设备的结构示意图。
图11是一示例性实施例提供的一种区块链网络的压力测试装置的框图。
图12是一示例性实施例提供的另一种区块链网络的压力测试装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
请参见图1,图1是一示例性实施例提供的一种区块链交易的处理方法的流程图。如图1所示,该方法应用于区块链网络中的区块链节点,该区块链网络中的区块链节点维护有多条区块链;该方法可以包括以下步骤:
步骤102,识别接收到的区块链交易的交易类型。
在本实施例中,针对各种交易类型的区块链交易,维护有相应的区块链;即各条区块链的区块分别存储对应类型的区块链交易。在该情况下,若针对每条区块链分别部署和配置相应的区块链网络,则会导致提高了成本。为了避免重复部署和配置多条区块链网络,可由同一区块链网络来响应各类区块链交易,该区块链网络中的同一节点设备(作为区块链节点)均维护有这些区块链,而所有的节点设备构成本说明书中的区块链网络。
步骤104,将包含所述区块链交易的区块添加至所述多条区块链中与所述交易类型对应的区块链。
在本实施例中,基于区块链节点维护有多条区块链,且区块链与交易类型相对应,区块链节点可在识别出接收到的区块链交易的交易类型后,将包含该区块链交易的区块(通过执行该交易类型的区块链交易得到该区块,从而在该区块的区块体中存储该交易类型的区块链交易)添加至与该交易类型对应的区块链。
如图2所示,以区块链节点20为例,区块链节点20中可维护多条区块链,比如区块链A、区块链B、区块链C等等。其中,区块链A与A类区块链交易相对应(当然还可对应多种类型的区块链交易),区块链节点20在执行A类型区块链交易后,可在所生成区块的区块体中存储A类型区块链交易,并将包含A类型区块链交易的区块添加至区块链A的末端。例如,区块链A包含区块a-1、a-2、a-3、a-4、a-5等等,并且这些区块均由区块链节点20响应于A类型区块链交易后生成。类似的,区块链B包含区块b-1、b-2、b-3、b-4、b-5等等,并且这些区块均由区块链节点20响应于B类型区块链交易后生成。区块链C包含区块c-1、c-2、c-3、c-4、c-5等等,并且这些区块均由区块链节点20响应于C类型区块链交易后生成。
在本实施例中,区块链交易可由交易发起方响应于来自业务系统的处理请求而生成。比如,交易发起方为区块链网络的区块链客户端,业务系统可通过向区块链客户端发送处理请求来实现与区块链网络的交互。其中,处理请求包含多种请求类型(即区块链也与请求类型相对应);比如,用于调用区块链网络执行压力测试的压测请求、用于调用区块链网络执行生产业务的业务请求等。而区块链客户端在接收到业务系统的处理请求后,识别该处理请求的请求类型,进而创建与请求类型对应的区块链交易,并将区块链交易提交至区块链网络(与压测请求对应的区块链为压测区块链,与业务请求对应的区块链为业务区块链),使得区块链网络上的区块链节点执行该区块链交易。
其中,业务系统的处理请求中可包含类型标识,区块链客户端可据此识别处理请求的请求类型。进一步的,区块链客户端在创建与处理请求对应的区块链交易时,同样可在区块链交易中添加类型标识以用于标记该区块链交易的交易类型。因此,区块链节点可根据接收到的区块链交易包含的类型标识来确定该区块链交易的交易类型。以处理请求分为压测请求和业务请求为例,压测请求中包含第一类型标识,业务请求中包含第二类型标识,那么,区块链客户端在根据第一类型标识识别出接收到的处理请求为压测请求后,可创建与之对应的压测交易,并在压测交易中添加第一类型标识。类似的,区块链客户端在根据第二类型标识识别出接收到的处理请求为业务请求后,可创建与之对应的业务交易,并在业务交易中添加第二类型标识。
进一步的,区块链节点在执行区块链交易后,可生成对应于该区块链交易的交易回执,并在交易回执中添加相应的类型标识,以供业务系统据此识别交易回执与哪种处理请求相对应。比如,区块链网络中的区块链节点在接收到区块链客户端提交的压测交易后,可执行压测交易并生成包含第一类型标识的交易回执(即第一交易回执)。类似的,区块链网络中的区块链节点在接收到区块链客户端提交的业务交易后,可执行业务交易并生成包含第二类型标识的交易回执(即第二交易回执)。然后,区块链客户端可获取区块链节点生成的交易回执,并返回至业务系统。而业务系统在接收到区块链客户端返回的交易回执后,可将包含第一类型标识的交易回执存储至压测数据库,以及将包含第二类型标识的交易回执存储至业务数据库。
类似的,由于各条区块链的区块用于存储相应交易类型的区块链交易,区块链节点在生成区块时,可在区块的区块头中添加对应的区块链交易的类型标识,从而与其他区块链的区块进行区,也即各条区块链所含区块的区块头中包含对应的区块链交易的类型标识。例如,图1中的区块链A与压测请求对应,区块链B与业务请求对应;那么,a-1、a-2、a-3、a-4、a-5等区块的区块头中包含第一类型标识,b-1、b-2、b-3、b-4、b-5等区块的区块头中包含第二类型标识。
在本实施例中,基于区块链网络中的区块链节点同时维护多条区块链,各条区块链的区块数据在区块链节点中隔离存储,即区块链节点使用互相独立的存储资源来存储各条区块链的区块数据,从而避免各条区块链之间相互影响,任一区块链影响其他区块链的业务的正常执行。
在本实施例中,以区块链网络采用账户模型为例,由于区块链网络中的区块链节点同时维护多条区块链,则区块链节点针对每条区块链维护有对应的状态数据。因此,区块链节点在接收到区块链交易后,可通过执行该区块链交易以根据执行结果驱动相应区块链的状态数据的更新。
比如,第一状态数据为压测区块链的世界状态(压测区块链上所有区块链账户的账户状态),第二状态数据为压测区块链的世界状态(压测区块链上所有区块链账户的账户状态)。针对压测区块链,区块链网络中的区块链节点在执行压测交易后,将导致压测区块链上的账户状态发生变化,进而导致压测区块链的世界状态发生变化;换言之,压测交易被用于驱动第一状态数据的更新。同理,针对业务区块链,区块链网络中的区块链节点在执行业务区块链交易后,将导致业务区块链上的账户状态发生变化,进而导致业务区块链的世界状态发生变化;换言之,业务交易被用于驱动第二状态数据的更新。
类似的,区块链节点使用相互独立的存储资源来对各条区块链的状态数据进行隔离存储,从而避免各条区块链之间相互影响,任一区块链影响其他区块链的业务的正常执行。
在本实施例中,区块链网络中的区块链节点可在相同的条件下混合执行各类区块链交易。比如,区块链网络中的区块链节点可复用自身的软硬件资源(比如机器资源、网络资源、计算资源等)来执行各类区块链交易,即上述“相同的条件”可包括区块链节点的软件资源和硬件资源。通过在相同的条件下混合执行各类区块链交易,使得每条区块链可共享软硬件资源,从而有效降低成本。
在本实施例中,区块链网络中的区块链节点需对接收到的区块链交易进行共识,以执行通过共识的区块链交易。而区块链网络中的区块链节点可能接收到多笔区块链交易,该多笔区块链交易可以包括多种交易类型。在该情况下,区块链网络中的区块链节点可对接收到的多笔区块链交易进行共识,以在共识通过后识别该多笔区块链交易的交易类型,进而进行差异化处理。通过上述针对区块链交易采用先共识再识别交易类型的处理方式,可以仅执行一次共识操作,仅调用一次共识服务,从而有效提高了共识的效率。或者,区块链网络中的区块链节点可在识别出接收到的多笔区块链交易的交易类型后,再分别对该多笔区块链交易中的各类区块链交易进行共识。
在本实施例中,在区块链网络中的区块链节点同时维护多条区块链的应用场景下,各条区块链可按周期成块。那么,区块链网络中的区块链节点可保持各条区块链的区块高度(即区块号)一致,使得业务系统无需感知区块链网络上存在多条区块链。那么,便无需针对业务系统开发相应的环境控制代码以分别适配于各个区块链的使用环境(比如压测区块链为测试环境,业务区块链为生产环境),而是能够采用统一的区块链数据管理方式。
具体而言,为了保证各条区块链的区块高度一致,区块链网络中的区块链节点可确定当前周期内的多笔区块链交易。在该多笔区块链交易均属于任一交易类型的情况下,分别生成包含该多笔区块链交易的正常区块和未包含区块链交易的空白区块,并将正常区块添加至与该任一交易类型对应的区块链的末端、将空白区块添加至该多条区块链中区别于对应于该任一交易类型的区块链的其他区块链的末端。而针对该多笔区块链交易中包含多种交易类型的区块链交易的情况,由于每条区块链按周期成块,那么也能保证在执行完该多笔区块链交易并成块之后,保持每条区块链的区块高度一致。
为了便于理解,下面以压力测试场景为例,对本说明书的技术方案进行详细说明。
请参见图3,图3是一示例性实施例提供的一种网络架构的示意图。如图3所示,业务系统31产生处理请求后,将该处理请求发送至区块链客户端32,由区块链客户端32针对该处理请求创建区块链交易,并将区块链交易提交至区块链网络33,使得区块链网络33上的区块链节点执行该区块链交易。当针对区块链网络33存在压力测试(简称“压测”)需求时,业务系统31可以生成压测请求类型的处理请求(包含用于压力测试的数据),而区块链客户端32可以针对这些压测请求创建相应的区块链交易(即压测交易),并由区块链网络33执行这些区块链交易以对区块链网络33进行压力测试;以及,区块链客户端32将区块链网络33执行区块链交易而产生的交易回执(即第一交易回执)反馈至业务系统31,以由业务系统31对交易回执进行分析后,确定区块链网络33的压测结果。而在生产环境下,业务系统31、区块链客户端32和区块链网络33之间的交互过程,与上述的压测过程类似:业务系统31生成业务请求类型的处理请求,区块链客户端32针对这些业务请求创建相应的区块链交易(即业务交易),并由区块链网络33执行这些区块链交易;以及,区块链客户端32将区块链网络33执行区块链交易而产生的交易回执(即第二交易回执)反馈至业务系统31。
在全链路压测场景下,涉及到生产环境中的压力测试。为了避免上述的压测请求与业务请求之间产生相互干扰,业务系统31可以在业务请求中添加压测标签以区分于业务请求;当然,也可以在业务请求中添加业务标签以区分于压测请求。但是,区块链客户端32在创建区块链交易时,由于需要遵守现有的交易格式等相关规定,因而无法针对不同处理请求对应的区块链交易予以区分,即无法将上述的压测标签或业务标签等特征标签带入到区块链网络33中,造成区块链网络33产生的交易回执同样无法携带上述的特征标签,使得业务系统31无法有效区分交易回执的来源,无法据此准确获知区块链网络33的压测结果。
请参见图4,图4是一示例性实施例提供的一种区块链网络的压力测试方法的流程图。如图4所示,该方法应用于区块链节点,可以包括以下步骤:
步骤402,识别接收到的区块链交易的交易类型,所述交易类型包括压测交易和业务交易。
在本实施例中,压测交易可由交易发起方响应于来自业务系统的压测请求而生成,业务交易可由交易发起方响应于来自业务系统的业务请求而生成。比如,交易发起方可以是区块链客户端,该区块链客户端用于配合业务系统与区块链网络,以实现业务系统与区块链网络之间的数据交互。区块链客户端可以包括任意能够实现数据交互的电子设备,比如为区块链网关;当然,本说明书并不对此进行限制。在业务系统向区块链网络传递数据的过程中,区块链客户端接收业务系统发起的处理请求,并创建对应于处理请求的区块链交易,然后将该区块链交易提交至区块链网络,使得区块链网络中的所有区块链节点对该区块链交易进行共识、执行、上链等操作;以及,在区块链网络向业务系统传递数据的过程中,区块链客户端获取区块链网络通过执行上述区块链交易所产生的交易回执(receipt),并将该交易回执反馈至业务系统。
在本实施例中,压测区块链的区块用于存储压测交易,业务区块链的区块用于存储业务交易。在该情况下,若针对每条区块链分别部署和配置相应的区块链网络,则会导致提高了成本。为了避免重复部署和配置多条区块链网络,可由同一区块链网络来响应各类区块链交易,该区块链网络中的同一节点设备(作为区块链节点)均维护有这些区块链,而所有的节点设备构成本说明书中的区块链网络。换言之,在压力测试场景下,不需要基于额外资源来部署专用于压力测试的区块链网络,可由同一区块链网络来响应压测交易和业务交易,那么该同一区块链网络需要对接收到的区块链交易进行识别。因此,区块链客户端在创建区块链交易时,可在区块链交易中添加用于表明交易类型的类型标识(与处理请求的请求类型相对应)。因此,区块链节点可读取接收到的区块链交易包含的类型标识;在读取到的类型标识为第一类型标识的情况下,将该区块链交易判定为压测交易,在该类型标识为第二类型标识的情况下,将该区块链交易判定为业务交易。相应的,区块链网络在生成交易回执时,同样在交易回执中添加相应的类型标识来表明该交易回执与哪种处理请求相对应。比如,区块链客户端可响应于来自业务系统的处理请求,在处理请求为压测请求时生成包含第一类型标识的压测交易,在处理请求为业务请求时生成包含第二类型标识的业务交易。进一步的,区块链客户端在生成压测交易和业务交易后,向该区块链网络提交压测交易和业务交易。而区块链网络在接收到区块链交易后,可生成对应于该区块链交易的交易回执;其中,交易回执中包含该区块链交易的类型标识。比如,区块链网络中的区块链节点在接收到区块链客户端提交的压测交易和业务交易后,可执行压测交易并生成包含第一类型标识的交易回执(即第一交易回执),执行业务交易并生成包含第二类型标识的交易回执(即第二交易回执)。然后,区块链客户端可获取区块链网络生成的交易回执,并返回至业务系统。相应的,业务系统可接收区块链客户端返回的交易回执,将包含第一类型标识的交易回执存储至压测数据库,以及将包含第二类型标识的交易回执存储至业务数据库。
以处于生产状态的区块链网络分别响应压测交易和业务交易为例进行举例说明。如图5所示,区块链网络53中的区块链节点同时维护有压测区块链A和业务区块链B;其中,压测区块链A的区块用于记录压测交易,业务区块链B的区块用于记录业务交易。换言之,区块链网络53在执行压测交易后,压测交易被存储至压测区块链所含的区块中;区块链网络53在执行业务交易后,业务交易被存储至业务区块链所含的区块中。相应的,压测区块链所含区块的区块头中包含第一类型标识,业务区块链所含区块的区块头中包含第二类型标识。基于区块头中包含类型标识,那么可有效将压测区块链和业务区块链区分。比如,在生成压测区块链的区块和业务区块链的区块后,可通过区块头识别出这些区块属于哪个区块链,进而将识别出的区块添加至所属区块链的末端。
可见,通过上述部署区块链网络的方式,业务系统51可无需感知测试环境(即无需感知压测区块链的存在),负责对处理请求进行打标(标记压测请求或业务请求)即可,使得压力测试对业务的侵入较低。
区块链客户端52在收到业务系统51发起的处理请求后,需要对该处理请求的类型予以识别,以确定该处理请求为业务请求还是压测请求。区块链客户端52可以在接收到的处理请求为压测请求的情况下,创建对应于压测请求的压测交易(包含第一类型标识,比如为压测标签);以及,在接收到的处理请求为业务请求的情况下,创建对应于业务请求的业务交易(包含第二类型标识,比如为压测标签)。然后,区块链客户端52可将压测交易和业务交易分别提交至处于生产状态的区块链网络53,以接收区块链网络53分别返回的第一交易回执和第二交易回执。比如,区块链客户端52可以将压测交易和业务交易分别提交至区块链网络53中的某一区块链节点53n,而该区块链节点53n可以进一步将压测交易和业务交易传递至区块链网络53中的其他区块链节点,使得所有区块链节点可以针对压测交易和业务交易进行共识、执行、上链等操作,并分别生成对应于压测交易的交易回执(包含第一类型标识,即上述压测标签)和对应于业务交易的交易回执(包含第二类型标识,即上述业务标签)。其中,区块链网络53中的区块链节点在接收到区块链客户端52提交的区块链交易后,可识别接收到的区块链交易所含的类型标识,从而据此确定出该区块链交易为压测交易还是业务交易。具体而言,在区块链交易包含第一类型标识的情况下(表明该区块链交易属于压测交易),可将该区块链交易存储至压测区块链所含的区块;在区块链交易包含第二类型标识的情况下(表明该区块链交易属于业务交易),可将区块链交易存储至业务区块链所含的区块。换言之,压测区块链所含区块的区块头中包含第一类型标识,业务区块链所含区块的区块头中包含第二类型标识。
区块链客户端可以通过与区块链网络中的某一区块链节点之间建立连接,从而向该区块链节点提交区块链交易。比如,该区块链节点可以为如图5所示的区块链节点53n。以区块链节点53n为例,区块链客户端52与该区块链节点53n之间建立的连接可以为长连接,使得区块链节点53n执行区块链交易(压测交易或者业务交易),生成相应的交易回执之后,可以产生相应的交易回执生成事件,而区块链客户端52可以通过监听该交易回执生成事件获知交易回执已生成(即事件监听机制),并基于上述的长连接获取该交易回执。当然,也可以由区块链节点53n自身通过上述的事件监听机制来监听交易回执生成事件,并通过上述的长连接将交易回执反馈至区块链客户端52,使得区块链客户端52获得交易回执。或者,如果区块链客户端52与区块链节点53n之间建立的连接并非长连接或者所建立的长连接断开,区块链客户端52需要额外通过发起一笔查询交易,以查询相应的交易回执。其中,该查询交易可以为常规的区块链交易,使得区块链网络53中的所有区块链节点均需针对该查询交易进行获取、共识、执行、上链等操作,而区块链客户端52可以通过上述方式与某一区块链节点建立长连接,并基于上述的事件监听机制从该区块链节点处获取交易回执;或者,该查询交易可以为特殊交易,譬如区块链客户端52可以仅与区块链节点53n建立长连接并发送该查询交易,那么该查询交易仅会被区块链节点53n获取并执行,该查询交易无需参与共识且不需要上链,甚至无需被其他区块链节点获取,然后区块链客户端52可以基于如前所述的事件监听机制获取交易回执。当然,区块链客户端52可批量获取多个交易回执,那么获取到的交易回执中可包括第一交易回执和/或第二交易回执。
对于添加类型标识的方式,在一种情况下,可在区块链交易中添加type字段(或者其他任意字段),用于标记区块链交易为业务交易(与业务请求对应)或测试交易(与压测请求对应)。比如,当任一区块链交易type字段的取值为第一取值时,表明该区块链交易属于业务交易,当任一区块链交易type字段的取值为第二取值(区别于第一取值)时,表明该区块链交易属于测试交易。相应地,在交易回执中也添加type字段,用于标记该交易回执对应于业务交易还是对应于测试交易。在另一种情况下,还可复用区块链交易和交易回执中的已有字段,在已有字段中添加类型标识。比如,复用区块链交易中的“reserved字段”来表明区块链交易的交易类型;例如,可在“reserved字段”中添加业务标签,使得区块链网络上的区块链节点可以将包含业务标签的区块链交易识别为业务交易,而将未包含业务标签的区块链交易识别为测试交易。或者,可在“reserved字段”中添加压测标签,使得区块链节点可将包含压测标签的区块链交易识别为测试交易,而将未包含压测标签的区块链交易识别为业务交易。或者,还可同时在“reserved字段”中添加业务标签和压测标签,使得区块链节点可将包含业务标签的区块链交易识别为业务交易,将包含压测标签的区块链交易识别为测试交易。需要说明的是,针对在交易回执中添加类型标识的方式与上述类似,在此不再赘述。
区块链网络中的区块链节点在获取到包含第一类型标识的区块链交易(即压测交易)和包含第二类型标识的区块链交易(即业务交易)后,可在相同的条件下混合执行上述区块链交易。作为一示例性实施例,区块链网络中的区块链节点可复用自身的软硬件资源(比如机器资源、网络资源、计算资源等)来执行压测交易和业务交易,即上述“相同的条件”可包括区块链节点的软件资源和硬件资源。通过在相同的条件下混合执行压测交易和业务交易,一方面可使得针对压测区块链所实施的压力测试能够体现出业务区块链的真实状况,另一方面压测区块链和业务区块链共享软硬件资源,可有效降低成本。需要说明的是,可避开在业务交易的流量高峰期(比如,大量通过提交业务交易来实现业务的时间段)通过压测交易来进行压力测试,一方面可尽可能提高压力测试的准确度,另一方面可减少对业务正常执行的影响。
针对上述区块链网络中的区块链节点同时维护压测区块链和业务区块链的方式,压测区块链的区块数据和业务区块链的区块数据在区块链网络中的区块链节点上隔离存储,即压测区块链和业务区块链的区块数据互相隔离,各自使用独立的存储资源,从而避免压力测试给业务的生产环境造成影响,影响业务的正常执行。
以区块链网络采用账户模型为例,由于区块链网络中的区块链节点同时维护压测区块链和业务区块链,则区块链网络中的区块链节点维护有对应于压测区块链的第一状态数据、对应于业务区块链的第二状态数据。其中,第一状态数据为压测区块链的世界状态(压测区块链上所有区块链账户的账户状态),第二状态数据为业务区块链的世界状态(业务区块链上所有区块链账户的账户状态)。针对压测区块链,区块链网络中的区块链节点在执行压测交易后,将导致压测区块链上的账户状态发生变化,进而导致压测区块链的世界状态发生变化;换言之,压测交易被用于驱动第一状态数据的更新。同理,针对业务区块链,区块链网络中的区块链节点在执行业务交易后,将导致业务区块链上的账户状态发生变化,进而导致业务区块链的世界状态发生变化;换言之,业务交易被用于驱动第二状态数据的更新。因此,区块链网络中的区块链节点在接收到的区块链交易属于压测交易的情况下,执行该压测交易,并根据执行结果驱动第一状态数据的更新;在接收到的区块链交易属于业务交易的情况下,执行该业务交易,并根据执行结果驱动第二状态数据的更新。
类似的,针对上述区块链网络中的区块链节点同时维护第一状态数据和第二状态数据的方式,第一状态数据和第二状态数据在区块链网络中的区块链节点上隔离存储,即压测区块链和业务区块链的状态数据互相隔离,各自使用独立的存储资源,从而避免压力测试给业务的生产环境造成影响,影响业务的正常执行。
在本实施例中,压测区块链和业务区块链可按周期成块。那么,区块链网络中的区块链节点可保持压测区块链和业务区块链的区块高度一致(即保证压测区块链和业务区块链成块同步进行),使得业务系统无需感知区块链网络上的压测区块链(压测区块链为测试环境)和业务区块链(业务区块链为生产环境),即无需感知测试环境和生产环境。那么,便无需针对业务系统开发相应的环境控制代码以分别适配于测试环境和生产环境,而是针对测试环境和生产环境能够采用统一的区块链数据管理方式。
具体而言,为了保证压测区块链和业务区块链的区块高度一致,区块链网络中的区块链节点可确定当前周期内的多笔区块链交易;在该笔区块链交易均属于压测交易(即均包含第一类型标识)的情况下,分别生成包含该多笔区块链交易的第一正常区块和未包含区块链交易的第二空白区块,并将第一正常区块添加至压测区块链的末端、将第二空白区块添加至业务区块链的末端。同理,在该多笔区块链交易均属于业务交易(即均包含第二类型标识)的情况下,分别生成未包含区块链交易的第一空白区块和包含该多笔区块链交易的第二正常区块,并将第一空白区块添加至压测区块链的末端、将第二正常区块添加至第二正常区块链的末端。而针对该多笔区块链交易中既包含第一类型标识又包含第二类型标识的情况(即同时包含压测交易和业务交易),由于压测区块链和业务区块链按周期成块,那么也能保证在执行完该多笔区块链交易并成块之后,保持压测区块链和业务区块链的区块高度一致。
在上述为了保持压测区块链和业务区块链的区块高度一致的前提下,由于压测区块链上的数据均为测试数据,在测试结束后可删除,可对压测区块链的数据进行管理以减少对区块链节点存储资源的占用。作为一示例性实施例,区块链网络的管理员可通过客户端向区块链网络提交数据清理交易(类似的,可在数据清理交易中添加清理类型的第三类型标识,该第三类型标识用于表明所属交易为数据清理交易),该数据清理交易用于指示区块链网络的区块链节点在接收到该数据清理交易的情况下,将压测区块链上最新区块对应的状态数据修改为指定区块对应的状态数据,并删除压测区块链上区别于指定区块的其他区块对应的状态数据。那么,在执行完数据清理交易后,即使后续又存在与该指定区块的状态数据对应的压力测试需求,由于最新区块的状态数据被修改为该指定区块的状态数据,也依然可以重新基于最新区块的状态数据进行压力测试,并且在完成清理压测区块链状态数据的同时保证压测区块链和业务区块链的区块高度一致。
进一步的,指定区块可以是预先约定好的区块,每次接收到数据清理交易均按照该约定好的区块进行状态数据清理。比如,指定区块为压测区块链的创世块。或者,指定区块可以是区块链网络的管理员指定的区块,数据清理交易中包含该区块的信息,进而使得区块链网络中的区块链节点按照数据清理交易指示的区块进行状态数据清理。
为了进一步减少压测区块链的数据对区块链节点存储资源的占用,还可将压测区块链上位于最新区块之前的所有区块的区块数据归档。比如,可将压测区块链上位于最新区块之前的所有区块的区块数据(主要为区块中包含的交易)归档至区别于区块链节点的其他存储设备,进而将区块链节点中存储的区块数据删除。
步骤404,在所述区块链交易属于所述压测交易的情况下,将包含所述压测交易的压测区块添加至所述区块链节点维护的压测区块链。
步骤406,在所述区块链交易属于所述业务交易的情况下,将包含所述业务交易的业务区块添加至所述区块链节点维护的业务区块链。
在本实施例中,业务系统可接收区块链客户端返回的交易回执。其中,将包含第一类型标识的交易回执存储至压测数据库,将包含第二类型标识的交易回执存储至业务数据库。那么,后续业务系统可以从压测数据库获取对应于压测请求的交易回执,进而分析压测结果。
请参见图6,图6是一示例性实施例提供的另一种区块链网络的压力测试方法的流程图。如图6所示,该方法应用于区块链节点,可以包括以下步骤:
步骤602,识别接收到的区块链交易的交易类型,所述交易类型包括压测交易和业务交易。
步骤604,在所述区块链交易属于所述压测交易的情况下,执行所述区块链交易以生成包含所述区块链交易的压测区块,在所述区块链交易属于所述业务交易的情况下,执行所述区块链交易以生成包含所述区块链交易的业务区块。
如前所述,为了避免重复部署和配置多条区块链网络,可由同一区块链网络来响应压测交易和业务交易,该区块链网络中的同一节点设备(作为区块链节点)均维护有压测区块链和业务区块链;其中,压测区块链的区块用于存储压测交易,业务区块链的区块用于存储业务交易。因此,区块链节点接收到的区块链交易可能是压测交易,也可能是业务交易,针对压测交易,区块链节点可执行该压测交易从而根据执行结果生成压测区块,该压测区块中包含该压测交易;针对业务交易,区块链节点可执行该业务交易从而根据执行结果生成业务区块,该业务区块中包含该业务交易。进一步的,在生成各类区块后,可将这些区块放入待写块队列中作为待写入区块,那么后续可从待写块队列中读取待写入区块,进而将读取到的区块添加至相应的区块链中。
步骤606,识别待写入区块的区块类型,在所述待写入区块属于所述压测区块的情况下,将所述待写入区块添加至所述区块链节点维护的压测区块链,在所述待写入区块属于所述业务区块的情况下,将所述待写入区块添加至所述区块链节点维护的业务区块链。
如前所述,所述压测交易由交易发起方响应于来自业务系统的压测请求而生成,所述业务交易由所述交易发起方响应于来自所述业务系统的业务请求而生成。
如前所述,区块链节点可读取所述区块链交易包含的类型标识;在所述类型标识为第一类型标识的情况下,将所述区块链交易判定为所述压测交易,在所述类型标识为第二类型标识的情况下,将所述区块链交易判定为所述业务交易。
如前所述,区块链节点可生成对应于所述区块链交易的交易回执,所述交易回执中包含所述区块链交易的类型标识。
如前所述,区块链节点可在所述压测区块的区块头中添加第一类型标识,在所述业务区块的区块头中添加第二类型标识,基于此,区块链节点在获取到待写入区块时,可根据所述待写入区块的区块头中包含的类型标识,识别所述待写入区块的区块类型。
如前所述,压测区块链的区块数据和业务区块链的区块数据在所述区块链节点中隔离存储。
如前所述,所述区块链节点维护有对应于压测区块链的第一状态数据、对应于业务区块链的第二状态数据。基于此,区块链节点可在所述区块链交易属于所述压测交易的情况下,根据所述区块链交易的执行结果驱动第一状态数据的更新;在所述区块链交易属于所述业务交易的情况下,根据所述区块链交易的执行结果驱动第二状态数据的更新。
如前所述,所述压测交易和所述业务交易由所述区块链节点在相同的条件下混合执行。
如前所述,区块链节点可对接收到的多笔区块链交易进行共识,所述多笔区块链交易包括压测交易和业务交易。
如前所述,所述压测区块链和所述业务区块链按周期成块;区块链节点可确定当前周期内的多笔区块链交易。在所述多笔区块链交易均属于压测交易的情况下,分别生成包含所述多笔区块链交易的第一正常区块和未包含区块链交易的第二空白区块,并将第一正常区块添加至压测区块链的末端、将第二空白区块添加至业务区块链的末端;在所述多笔区块链交易均属于业务交易的情况下,分别生成未包含区块链交易的第一空白区块和包含所述多笔区块链交易的第二正常区块,并将第一空白区块添加至压测区块链的末端、将第二正常区块添加至业务区块链的末端。
为了便于理解和描述,以下以业务区块链为生产链(比如,通过执行智能合约来实现某项业务)、压测区块链为对应于生产链的影子链为例,结合图7对图4-6所示实施例中执行区块链交易的过程进行详细说明。
请参见图7,图7是一示例性实施例提供的一种执行区块链交易的流程图。如图7所示,该执行过程可以包括以下步骤:
步骤702,读取一批区块链交易。
在一种情况下,区块链网络中的区块链节点可对区块链客户端52发送的多笔区块链交易进行共识,并在共识通过后分别对包含第一类型标识和第二类型标识的区块链交易进行处理。也即,区块链节点可先对区块链客户端52发送的区块链交易进行共识,再识别共识通过的区块链交易的交易类型,进而进行差异化处理。通过上述针对区块链交易采用先共识再识别交易类型的处理方式,可以仅执行一次共识操作,仅调用一次共识服务,从而有效提高了共识的效率。
在另一种情况下,区块链网络中的区块链节点可对区块链客户端发送的多笔区块链交易所含的类型标识进行区分后,再分别对包含第一类型标识和第二类型标识的区块链交易进行共识。
在本实施例中,区块链网络53中的区块链节点接收到的区块链交易包括压测交易和业务交易,而针对这些不同类型的区块链交易的执行过程,部分执行流程可进行复用。比如,针对区块链交易的前置校验、共识、后置校验、执行交易采用的计算服务、区块验证等。换言之,在执行上述操作的过程中,可不必针对交易类型对区块链交易进行差异化处理。
举例而言,在对接收到的区块链交易进行前置校验后,将校验通过的区块链交易放入已验证队列,那么后续在进行共识调度时,可按照一定规则(比如,按照提交区块链交易的时间先后顺序)从已验证队列中读取一批区块链交易,进而对读取到的区块链交易进行共识。
步骤704,对读取到的区块链交易进行共识。
对于物理世界产生的真实数据,可以将其构建成区块链网络所支持的标准的交易(transaction)格式,然后发布至区块链网络,由区块链网络中的节点设备对收到的交易进行共识处理,并在达成共识后,由区块链网络中作为记账节点的节点设备(即区块链节点),将这笔交易打包进区块,在区块链网络中进行持久化存证。
其中,区块链网络中支持的共识算法可以包括:
第一类共识算法,即节点设备需要争夺每一轮的记账周期的记账权的共识算法;例如,工作量证明(Proof of Work,POW)、股权证明(Proof of Stake,POS)、委任权益证明(Delegated Proof of Stake,DPOS)等共识算法;
第二类共识算法,即预先为每一轮记账周期选举记账节点(不需要争夺记账权)的共识算法;例如,实用拜占庭容错(Practical Byzantine Fault Tolerance,PBFT)等共识算法。
在采用第一类共识算法的区块链网络中,争夺记账权的节点设备,都可以在接收到交易后执行该笔交易。争夺记账权的节点设备中可能有一个节点设备在本轮争夺记账权的过程中胜出,成为记账节点。记账节点可以将收到的交易与其它交易一起打包以生成最新区块,并将生成的最新区块或者该最新区块的区块头发送至其它节点设备进行共识。
在采用第二类共识算法的区块链网络中,具有记账权的节点设备在本轮记账前已经商定好。因此,节点设备在接收到交易后,如果自身不是本轮的记账节点,则可以将该交易发送至记账节点。对于本轮的记账节点,在将该交易与其它交易一起打包以生成最新区块的过程中或者之前,可以执行该交易。记账节点在生成最新区块后,可以将该最新区块或者该最新区块的区块头发送至其它节点设备进行共识。
如上所述,无论区块链网络采用以上示出的哪种共识算法,本轮的记账节点都可以将接收到的交易打包以生成最新区块,并将生成的最新区块或者该最新区块的区块头发送至其它节点设备进行共识验证。如果其它节点设备接收到最新区块或者该最新区块的区块头后,经验证没有问题,可以将该最新区块追加到原有的区块链网络末尾,从而完成区块链网络的记账过程。其它节点验证记账节点发来的新的区块或区块头的过程中,也可以执行该区块中的包含的交易。
在完成共识后,将共识通过的区块链交易放入待执行列表中,进而对待执行列表中的区块链交易进行后置校验。
步骤706,识别待执行列表中区块链交易的交易类型,当区块链交易为压测交易时转入步骤708A;当区块链交易为业务交易时转入步骤708B。
在本实施例中,还可对待执行列表中的区块链交易进行防重放检查,防止同一笔交易执行多次。其中,由于在生成区块阶段会根据不同的交易类型生成不同的区块,并且不同的区块中的交易访问不同的数据存储,在进行防重放检查时,可分别针对每种交易类型进行防重放检查,而进行防重放检查的手段可以相同。
以账户模型(以太坊)为例,区块链账户可以包括外部账户和合约账户等。外部账户通常为用户(个人或机构)所有,而合约账户则对应于部署在区块链中的智能合约。各类账户的结构都类似,可以包括Balance,Nonce,Code和Storage等字段。其中:
Balance字段,用于维护账户目前的账户余额;
Nonce字段,用于维护该账户的交易次数;它是用于保障每笔交易能且只能被处理一次的计数器,有效避免重放攻击;
Code字段,用于维护该账户的合约代码(因而外部账户的Code字段通常为空);在实际应用中,Code字段中通常仅维护合约代码的hash值;因而,Code字段通常也称之为Codehash字段。
Storage字段,用于维护该账户的存储内容(默认字段值为空);对于合约账户而言,通常会分配一个独立的存储空间,用以存储该合约账户的存储内容;该独立的存储空间通常称之为该合约账户的账户存储。合约账户的存储内容通常会构建成MPT(MerklePatricia Trie)树的数据结构存储在上述独立的存储空间之中;其中,基于合约账户的存储内容构建成的MPT树,通常也称之为Storage树。而Storage字段通常仅维护该Storage树的根节点;因此,Storage字段通常也称之为StorageRoot字段。
步骤708A,执行压测交易。
步骤708B,执行业务交易。
在本实施例中,可根据区块链交易中包含的标签来识别交易类型。当区块链交易中包含压测标签时,确定该区块链交易为压测交易;当区块链交易中包含业务标签时,确定该区块链交易为业务交易。在识别出待执行列表中区块链交易的交易类型后,可将待执行列表进一步划分为压测交易列表和业务交易列表,进而调用计算服务接口(比如,通过调用智能合约来执行),分别执行压测交易列表和业务交易列表中的区块链交易。
步骤710A,生成压测区块。
步骤710B,生成业务区块。
同样以以太坊为例,以太坊使用了MPT树(一种Merkle树变种),作为数据组织形式,用来组织和管理账户状态、交易信息等重要数据。以太坊针对区块链中需要存储和维护的数据,设计了三棵MPT树,分别是MPT状态树、MPT交易树和MPT收据树。
MPT状态树,是由区块链中所有账户的账户状态(state)数据组织成的MPT树;MPT交易树,是由区块链中的交易(transaction)数据组织成的MPT树;MPT收据树,是区块中的交易在执行完毕后生成的与每笔交易对应的交易收据(receipt)组织成的MPT树。以上示出的MPT状态树、MPT交易树和MPT收据树的根节点的hash值,最终都会被添加至对应区块的区块头中。其中,MPT交易树和MPT收据树均与区块相对应,即每一个区块都有自己的MPT交易树和MPT收据树。而MPT状态树是一个全局的MPT树,并不与某一个特定的区块相对应,而是涵盖了区块链中所有账户的账户状态数据(即世界状态)。对于组织成的MPT交易树、MPT收据树和MPT状态树,最终都会在采用多级数据存储结构的Key-Value型数据库(比如,LevelDB)中进行存储。
需要说明的是,区块链每产生一个最新区块,则在该最新区块中的交易被执行之后,区块链中这些被执行交易的相关账户(可以是外部账户也可以是合约账户)的账户状态,通常也会随之发生变化,那么世界状态也随之发生变化。例如,当区块中的一笔“转账交易”执行完毕后,与该“转账交易”相关的转出方账户和转入方账户的余额(即这些账户的Balance字段的字段值),通常也会随之发生变化。而节点设备在区块链产生的最新区块中的交易执行完毕后,由于当前区块链中的账户状态发生了变化,因此节点设备需要根据区块链中所有账户当前的账户状态数据,来构建MPT状态树,用于维护区块链中所有账户的最新状态。也即,每当区块链中产生一个最新区块,并且该最新区块中的交易执行完毕后,导致区块链中的账户状态发生了变化,节点设备都需要基于区块链中所有账户最新的账户状态数据,重新构建一棵MPT状态树。换言之,区块链中每一个区块,都有一个与之对应的MPT状态树;该MPT状态树,维护了在该区块中的交易在执行完毕后,区块链中所有账户最新的账户状态。
在本实施例中,在执行压测交易和业务交易时,同样也在得到的交易回执中添加相应的标签,即执行压测交易得到的第一交易回执中包含压测标签,执行业务交易得到的第二交易回执中包含生产标签。
相应的,区块链网络中的区块链节点在压测交易执行完毕后,可基于压测交易列表中的交易、执行压测交易后得到的世界状态和交易回执构建影子链的压测区块;其中,可在压测区块的区块头中添加压测标签。类似的,区块链网络中的区块链节点在业务交易执行完毕后,业务交易列表中的交易、执行业务交易后得到的世界状态和交易回执构建生产链的业务区块;其中,可在业务区块的区块头中添加生产标签。
步骤712,将生成的区块放入待写块队列。
步骤714,从待写块队列读取区块。
步骤716,识别区块类型,当区块为压测区块时转入步骤718A;当区块为业务区块时转入步骤718B。
在本实施例中,基于区块的区块头中包含表明区块类型的标签,针对从待写块队列中读取到的区块,可根据该区块的区块头中包含的标签来识别该区块属于压测区块还是业务区块。
步骤718A,生成测试链的区块高度信息。
步骤718B,生成生产链的区块高度信息。
步骤720A,写入压测区块。
步骤720B,写入业务区块。
在本实施例中,在读取待写块队列中的任一区块并识别出该任一区块的区块类型后,可在相应的区块数据库中写入该任一区块(即成块的过程),并生成该任一区块所属区块链的区块高度信息(即区块号)。比如,将压测区块写入用于存储影子链区块数据的压测数据库中(逻辑上将该压测区块添加至影子链的末端,即在影子链上成块的过程);同时,生成影子链当前的区块高度信息。又如,将业务区块写入用于存储生产链区块数据的生产数据库中(逻辑上将该业务区块添加至生产链的末端,即在生产链上成块的过程);同时,生成生产链当前的区块高度信息。其中,生成的区块高度信息,可存储在区块链节点本地,或者存储至区别于该区块链节点的其他设备中。通过生成影子链和生产链的区块高度信息,在区块链节点因各种原因(比如断电、宕机、关闭等)导致设备重启时,该区块链节点可依据存储的区块高度信息和相应的区块数据快速重新构建出影子链和生产链,即实现影子链和生产链的快速恢复。
在本实施例中,区块链网络中的区块链节点在维护影子链和生产链时,影子链和生产链按周期成块。那么,区块链网络中的区块链节点可保持影子链和生产链的区块高度一致(即保证影子链和生产链成块同步进行),使得业务系统无需感知区块链网络上的影子链(影子链为测试环境)和生产链(生产链为生产环境),即无需感知测试环境和生产环境。那么,便无需针对业务系统开发相应的环境控制代码以分别适配于测试环境和生产环境,而是针对测试环境和生产环境能够采用统一的区块链数据管理方式。以针对区块链的逻辑控制代码为例,假定针对区块链的逻辑控制为“拉块”,当需要通过拉块来获取影子链和生产链的区块信息时,在保持影子链和生产链的区块高度一致的情况下,业务系统拉取业务区块和压测区块的逻辑相同,那么可为业务系统配置一种拉取区块的代码即可,该代码可同时用于获取影子链和生产链的区块。而在影子链和生产链的区块高度不一致的情况下,业务系统拉取业务区块和压测区块的逻辑不相同,那么需要为业务系统配置用于获取影子链上压测区块的代码,以及还需要为业务系统配置用于获取生产链上业务区块的代码。当然,上述“拉块”仅为一示例性举例,实际还可为其他针对区块的逻辑控制。
具体而言,区块链网络中的区块链节点可确定区块链客户端发送的用于当前周期的多笔区块链交易。在该多笔区块链交易均包含压测标签的情况(即当前周期内的区块链交易均用于压力测试)下,分别生成包含该多笔区块链交易的第一正常区块和未包含区块链交易的第二空白区块,并将第一正常区块添加至影子链的末端、将第二空白区块添加至生产链的末端。在该多笔区块链交易均包含业务标签的情况(即当前周期内的区块链交易均用于执行生产环境下的实际业务)下,分别生成未包含区块链交易的第一空白区块和包含该多笔区块链交易的第二正常区块,并将第一空白区块添加至影子链的末端、将第二正常区块添加至生产链的末端。而针对该多笔区块链交易中既包含压测标签又包含业务标签的情况(即同时包含压测交易和业务交易),由于影子链和生产链按周期成块,那么也能保证在执行完该多笔区块链交易并成块之后,保持影子链和生产链的区块高度一致。
步骤722,将区块放入待验证队列。
步骤724,验证区块正确性。
在本实施例中,区块链网络中的区块链节点可从待验证队列中读取区块,验证该区块的正确性,进而在验证得出该区块正确的情况下,向区块链客户端下发成块通知,以使区块链客户端获取交易回执。
在本实施例中,在上述为了保持影子链和生产链的区块高度一致的前提下,可对影子链的数据进行管理以减少对区块链节点存储资源的占用。比如,区块链网络的管理员可通过客户端向区块链网络提交数据清理交易,该数据清理交易用于指示区块链网络的区块链节点在接收到该数据清理交易的情况下,将影子链上最新区块对应的状态数据修改为指定区块对应的状态数据,并删除影子链上区别于指定区块的其他区块对应的状态数据。那么,在执行完数据清理交易后,即使后续又存在与该指定区块的状态数据对应的压力测试需求,由于最新区块的状态数据被修改为该指定区块的状态数据,也依然可以重新基于最新区块的状态数据进行压力测试,并且在完成清理影子链状态数据的同时保证影子链和生产链的区块高度一致。
进一步的,指定区块可以是预先约定好的区块,每次接收到数据清理交易均按照该约定好的区块进行状态数据清理。比如,指定区块为影子链的创世块。或者,指定区块可以是区块链网络的管理员指定的区块,数据清理交易中包含该区块的信息,进而使得区块链网络中的区块链节点按照数据清理交易指示的区块进行状态数据清理。
为了进一步减少影子链的数据对区块链节点存储资源的占用,还可将影子链上位于最新区块之前的所有区块的区块数据归档。比如,可将影子链上位于最新区块之前的所有区块的区块数据(主要为区块中包含的交易)归档至区别于区块链节点的其他存储设备,进而将区块链节点中存储的区块数据删除,比如将区块的区块头和区块体均删除,删除后该区块为空块。
以测试转账过程中账户X向账户Y转账导致的账户状态变化为例。假设在完成测试后,影子链上当前存在区块1-10,区块1(即创世块)对应的账户状态为账户X100元,账户Y0元,区块10(最新区块)对应的账户状态为账户X0元,账户Y100元。此时,若区块链网络的管理员通过客户端向区块链网络提交数据清理交易以清理影子链上的压测数据,区块链网络的区块链节点可将影子链上区块10的账户状态修改为区块1对应的账户状态,即账户X100元,账户Y0元,然后将区块1-9对应的账户状态删除,从而节省了区块链节点的存储空间。而即使后续需要重新进行转账的压力测试(比如,换个时间段,但是测试的账户状态不变),也依然可以重新基于区块10对应的账户状态进行压力测试,并且在完成清理影子链账户状态的同时保证影子链和生产链的区块高度一致。当然,为了进一步减少影子链的数据对区块链节点存储资源的占用,还可将区块1-9的区块数据归档。
与上述方法实施例相对应,本说明书还提供了一种区块链交易的处理装置的实施例。
图8是一示例性实施例提供的一种设备的示意结构图。请参考图7,在硬件层面,该设备包括处理器802、内部总线804、网络接口806、内存808以及非易失性存储器810,当然还可能包括其他业务所需要的硬件。处理器802从非易失性存储器810中读取对应的计算机程序到内存808中然后运行,在逻辑层面上形成区块链交易的处理装置。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
请参考图9,在一软件实施方式中,该区块链交易的处理装置应用于区块链节点,所述区块链节点维护有多条区块链,该装置可以包括:
交易识别单元902,识别接收到的区块链交易的交易类型;
添加单元904,将包含所述区块链交易的区块添加至所述多条区块链中与所述交易类型对应的区块链。
可选的,所述区块链交易由交易发起方响应于来自业务系统的处理请求而生成。
可选的,所述交易识别单元902具体用于:
根据所述区块链交易包含的类型标识确定所述区块链交易的交易类型。
可选的,还包括:
回执生成单元906,生成对应于所述区块链交易的交易回执,所述交易回执中包含所述区块链交易的类型标识。
可选的,各条区块链所含区块的区块头中包含对应的区块链交易的类型标识。
可选的,各条区块链的区块数据在所述区块链节点中隔离存储。
可选的,所述区块链节点维护有对应于各条区块链的状态数据;所述装置还包括:
状态更新单元908,执行所述区块链交易,并根据执行结果驱动与所述交易类型对应的区块链的状态数据的更新。
可选的,各条区块链的状态数据在所述区块链节点中隔离存储。
可选的,各类区块链交易由所述区块链节点在相同的条件下混合执行。
可选的,还包括:
共识单元910,对接收到的多笔区块链交易进行共识,所述多笔区块链交易包括多种交易类型。
可选的,各条区块链按周期成块;所述装置还包括:
区块生成单元912,确定当前周期内的多笔区块链交易;在所述多笔区块链交易均属于任一交易类型的情况下,分别生成包含所述多笔区块链交易的正常区块和未包含区块链交易的空白区块,并将正常区块添加至与所述任一交易类型对应的区块链的末端、将空白区块添加至所述多条区块链中区别于对应于所述任一交易类型的区块链的其他区块链的末端。
图10是一示例性实施例提供的一种设备的示意结构图。请参考图10,在硬件层面,该设备包括处理器1002、内部总线1004、网络接口1006、内存1008以及非易失性存储器1010,当然还可能包括其他业务所需要的硬件。处理器1002从非易失性存储器1010中读取对应的计算机程序到内存1008中然后运行,在逻辑层面上形成区块链网络的压力测试装置。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
请参考图11,在一软件实施方式中,该区块链网络的压力测试装置应用于区块链节点,可以包括:
交易识别单元1102,识别接收到的区块链交易的交易类型,所述交易类型包括压测交易和业务交易;
第一添加单元1104,在所述区块链交易属于所述压测交易的情况下,将包含所述压测交易的压测区块添加至所述区块链节点维护的压测区块链;
第二添加单元1106,在所述区块链交易属于所述业务交易的情况下,将包含所述业务交易的业务区块添加至所述区块链节点维护的业务区块链。
可选的,所述压测交易由交易发起方响应于来自业务系统的压测请求而生成,所述业务交易由所述交易发起方响应于来自所述业务系统的业务请求而生成。
可选的,所述交易识别单元1102具体用于:
读取所述区块链交易包含的类型标识;
在所述类型标识为第一类型标识的情况下,将所述区块链交易判定为所述压测交易,在所述类型标识为第二类型标识的情况下,将所述区块链交易判定为所述业务交易。
可选的,还包括:
回执生成单元1108,生成对应于所述区块链交易的交易回执,所述交易回执中包含所述区块链交易的类型标识。
可选的,压测区块链所含区块的区块头中包含第一类型标识,业务区块链所含区块的区块头中包含第二类型标识。
可选的,压测区块链的区块数据和业务区块链的区块数据在所述区块链节点中隔离存储。
可选的,所述区块链节点维护有对应于压测区块链的第一状态数据、对应于业务区块链的第二状态数据;所述装置还包括:
状态更新单元1110,在所述区块链交易属于所述压测交易的情况下,执行所述压测交易,并根据执行结果驱动第一状态数据的更新;在所述区块链交易属于所述业务交易的情况下,执行所述业务交易,并根据执行结果驱动第二状态数据的更新。
可选的,第一状态数据和第二状态数据在所述区块链节点中隔离存储。
可选的,所述压测交易和所述业务交易由所述区块链节点在相同的条件下混合执行。
可选的,还包括:
共识单元1112,对接收到的多笔区块链交易进行共识,所述多笔区块链交易包括压测交易和业务交易。
区块生成单元1114,确定当前周期内的多笔区块链交易;在所述多笔区块链交易均属于压测交易的情况下,分别生成包含所述多笔区块链交易的第一正常区块和未包含区块链交易的第二空白区块,并将第一正常区块添加至压测区块链的末端、将第二空白区块添加至业务区块链的末端;在所述多笔区块链交易均属于业务交易的情况下,分别生成未包含区块链交易的第一空白区块和包含所述多笔区块链交易的第二正常区块,并将第一空白区块添加至压测区块链的末端、将第二正常区块添加至业务区块链的末端。
请参考图12,在另一软件实施方式中,该区块链网络的压力测试装置应用于区块链节点,可以包括:
交易识别单元1202,识别接收到的区块链交易的交易类型,所述交易类型包括压测交易和业务交易;
交易执行单元1204,在所述区块链交易属于所述压测交易的情况下,执行所述区块链交易以生成包含所述区块链交易的压测区块,在所述区块链交易属于所述业务交易的情况下,执行所述区块链交易以生成包含所述区块链交易的业务区块;
区块写入单元1206,识别待写入区块的区块类型,在所述待写入区块属于所述压测区块的情况下,将所述待写入区块添加至所述区块链节点维护的压测区块链,在所述待写入区块属于所述业务区块的情况下,将所述待写入区块添加至所述区块链节点维护的业务区块链。
可选的,所述压测交易由交易发起方响应于来自业务系统的压测请求而生成,所述业务交易由所述交易发起方响应于来自所述业务系统的业务请求而生成。
可选的,所述交易识别单元1202具体用于:
读取所述区块链交易包含的类型标识;
在所述类型标识为第一类型标识的情况下,将所述区块链交易判定为所述压测交易,在所述类型标识为第二类型标识的情况下,将所述区块链交易判定为所述业务交易。
可选的,还包括:
回执生成单元1208,生成对应于所述区块链交易的交易回执,所述交易回执中包含所述区块链交易的类型标识。
可选的,
所述交易执行单元1204还用于:在所述压测区块的区块头中添加第一类型标识,在所述业务区块的区块头中添加第二类型标识;
所述交易识别单元1202具体用于:根据所述待写入区块的区块头中包含的类型标识,识别所述待写入区块的区块类型。
可选的,压测区块链的区块数据和业务区块链的区块数据在所述区块链节点中隔离存储。
可选的,所述区块链节点维护有对应于压测区块链的第一状态数据、对应于业务区块链的第二状态数据;所述装置还包括:
状态更新单元1210,在所述区块链交易属于所述压测交易的情况下,根据所述区块链交易的执行结果驱动第一状态数据的更新;
在所述区块链交易属于所述业务交易的情况下,根据所述区块链交易的执行结果驱动第二状态数据的更新。
可选的,所述压测交易和所述业务交易由所述区块链节点在相同的条件下混合执行。
可选的,还包括:
共识单元1212,对接收到的多笔区块链交易进行共识,所述多笔区块链交易包括压测交易和业务交易。
可选的,所述压测区块链和所述业务区块链按周期成块;所述区块写入单元1206具体用于:
确定当前周期内的多笔区块链交易;
在所述多笔区块链交易均属于压测交易的情况下,分别生成包含所述多笔区块链交易的第一正常区块和未包含区块链交易的第二空白区块,并将第一正常区块添加至压测区块链的末端、将第二空白区块添加至业务区块链的末端;
在所述多笔区块链交易均属于业务交易的情况下,分别生成未包含区块链交易的第一空白区块和包含所述多笔区块链交易的第二正常区块,并将第一空白区块添加至压测区块链的末端、将第二正常区块添加至业务区块链的末端。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
在一个典型的配置中,计算机包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。
Claims (25)
1.一种区块链网络的压力测试方法,应用于区块链网络中的区块链节点,所述方法包括:
识别接收到的区块链交易的交易类型,所述交易类型包括压测交易和业务交易;
在所述区块链交易属于所述压测交易的情况下,将包含所述压测交易的压测区块添加至所述区块链节点维护的压测区块链的末端;
在所述区块链交易属于所述业务交易的情况下,将包含所述业务交易的业务区块添加至所述区块链节点维护的业务区块链的末端。
2.根据权利要求1所述的方法,所述识别接收到的区块链交易的交易类型,包括:
读取所述区块链交易包含的类型标识;
在所述类型标识为第一类型标识的情况下,将所述区块链交易判定为所述压测交易,在所述类型标识为第二类型标识的情况下,将所述区块链交易判定为所述业务交易。
3.根据权利要求2所述的方法,所述区块链交易由交易发起方响应于来自业务系统的处理请求而生成;在所述处理请求为压测请求的情况下,所述区块链交易包含第一类型标识,在所述处理请求为业务请求的情况下,所述区块链交易包含第二类型标识。
4.根据权利要求2所述的方法,还包括:
生成对应于所述区块链交易的交易回执,所述交易回执中包含所述区块链交易的类型标识。
5.根据权利要求2所述的方法,压测区块链所含区块的区块头中包含第一类型标识,业务区块链所含区块的区块头中包含第二类型标识。
6.根据权利要求1所述的方法,压测区块链的区块数据和业务区块链的区块数据在所述区块链节点中隔离存储。
7.根据权利要求1所述的方法,所述区块链节点维护有对应于压测区块链的第一状态数据、对应于业务区块链的第二状态数据;所述方法还包括:
在所述区块链交易属于所述压测交易的情况下,执行所述压测交易,并根据执行结果驱动第一状态数据的更新;
在所述区块链交易属于所述业务交易的情况下,执行所述业务交易,并根据执行结果驱动第二状态数据的更新。
8.根据权利要求7所述的方法,第一状态数据和第二状态数据在所述区块链节点中隔离存储。
9.根据权利要求1所述的方法,所述压测交易和所述业务交易由所述区块链节点在相同的条件下混合执行。
10.根据权利要求1所述的方法,还包括:
对接收到的多笔区块链交易进行共识,以在共识通过后识别所述多笔区块链交易的交易类型,所述多笔区块链交易包括压测交易和业务交易。
11.根据权利要求1所述的方法,所述压测区块链和所述业务区块链按周期成块;所述方法还包括:
确定当前周期内的多笔区块链交易;
在所述多笔区块链交易均属于压测交易的情况下,分别生成包含所述多笔区块链交易的第一正常区块和未包含区块链交易的第二空白区块,并将第一正常区块添加至压测区块链的末端、将第二空白区块添加至业务区块链的末端;
在所述多笔区块链交易均属于业务交易的情况下,分别生成未包含区块链交易的第一空白区块和包含所述多笔区块链交易的第二正常区块,并将第一空白区块添加至压测区块链的末端、将第二正常区块添加至业务区块链的末端。
12.一种区块链网络的压力测试方法,应用于区块链网络中的区块链节点,所述方法包括:
识别接收到的区块链交易的交易类型,所述交易类型包括压测交易和业务交易;在所述区块链交易属于所述压测交易的情况下,执行所述区块链交易以生成包含所述区块链交易的压测区块,在所述区块链交易属于所述业务交易的情况下,执行所述区块链交易以生成包含所述区块链交易的业务区块;
识别待写入区块的区块类型,在所述待写入区块属于所述压测区块的情况下,将所述待写入区块添加至所述区块链节点维护的压测区块链的末端,在所述待写入区块属于所述业务区块的情况下,将所述待写入区块添加至所述区块链节点维护的业务区块链的末端。
13.根据权利要求12所述的方法,所述识别接收到的区块链交易的交易类型,包括:
读取所述区块链交易包含的类型标识;
在所述类型标识为第一类型标识的情况下,将所述区块链交易判定为所述压测交易,在所述类型标识为第二类型标识的情况下,将所述区块链交易判定为所述业务交易。
14.根据权利要求13所述的方法,所述区块链交易由交易发起方响应于来自业务系统的处理请求而生成;在所述处理请求为压测请求的情况下,所述区块链交易包含第一类型标识,在所述处理请求为业务请求的情况下,所述区块链交易包含第二类型标识。
15.根据权利要求13所述的方法,还包括:
生成对应于所述区块链交易的交易回执,所述交易回执中包含所述区块链交易的类型标识。
16.根据权利要求13所述的方法,
还包括:在所述压测区块的区块头中添加第一类型标识,在所述业务区块的区块头中添加第二类型标识;
所述识别待写入区块的区块类型,包括:根据所述待写入区块的区块头中包含的类型标识,识别所述待写入区块的区块类型。
17.根据权利要求12所述的方法,压测区块链的区块数据和业务区块链的区块数据在所述区块链节点中隔离存储。
18.根据权利要求12所述的方法,所述区块链节点维护有对应于压测区块链的第一状态数据、对应于业务区块链的第二状态数据;所述方法还包括:
在所述区块链交易属于所述压测交易的情况下,根据所述区块链交易的执行结果驱动第一状态数据的更新;
在所述区块链交易属于所述业务交易的情况下,根据所述区块链交易的执行结果驱动第二状态数据的更新。
19.根据权利要求12所述的方法,所述压测交易和所述业务交易由所述区块链节点在相同的条件下混合执行。
20.根据权利要求12所述的方法,还包括:
对接收到的多笔区块链交易进行共识,以在共识通过后识别所述多笔区块链交易的交易类型,所述多笔区块链交易包括压测交易和业务交易。
21.根据权利要求12所述的方法,所述压测区块链和所述业务区块链按周期成块;所述方法还包括:
确定当前周期内的多笔区块链交易;
在所述多笔区块链交易均属于压测交易的情况下,分别生成包含所述多笔区块链交易的第一正常区块和未包含区块链交易的第二空白区块,并将第一正常区块添加至压测区块链的末端、将第二空白区块添加至业务区块链的末端;
在所述多笔区块链交易均属于业务交易的情况下,分别生成未包含区块链交易的第一空白区块和包含所述多笔区块链交易的第二正常区块,并将第一空白区块添加至压测区块链的末端、将第二正常区块添加至业务区块链的末端。
22.一种区块链网络的压力测试装置,应用于区块链网络中的区块链节点,所述装置包括:
交易识别单元,识别接收到的区块链交易的交易类型,所述交易类型包括压测交易和业务交易;
第一添加单元,在所述区块链交易属于所述压测交易的情况下,将包含所述压测交易的压测区块添加至所述区块链节点维护的压测区块链的末端;
第二添加单元,在所述区块链交易属于所述业务交易的情况下,将包含所述业务交易的业务区块添加至所述区块链节点维护的业务区块链的末端。
23.一种区块链网络的压力测试装置,应用于区块链网络中的区块链节点,所述装置包括:
交易识别单元,识别接收到的区块链交易的交易类型,所述交易类型包括压测交易和业务交易;交易执行单元,在所述区块链交易属于所述压测交易的情况下,执行所述区块链交易以生成包含所述区块链交易的压测区块,在所述区块链交易属于所述业务交易的情况下,执行所述区块链交易以生成包含所述区块链交易的业务区块;
区块写入单元,识别待写入区块的区块类型,在所述待写入区块属于所述压测区块的情况下,将所述待写入区块添加至所述区块链节点维护的压测区块链的末端,在所述待写入区块属于所述业务区块的情况下,将所述待写入区块添加至所述区块链节点维护的业务区块链的末端。
24.一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如权利要求1-21中任一项所述的方法。
25.一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如权利要求1-21中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110063126.3A CN112910724B (zh) | 2020-06-24 | 2020-06-24 | 区块链网络的压力测试方法及装置、系统 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110063126.3A CN112910724B (zh) | 2020-06-24 | 2020-06-24 | 区块链网络的压力测试方法及装置、系统 |
CN202010585454.5A CN111478827B (zh) | 2020-06-24 | 2020-06-24 | 区块链网络的压力测试方法及装置、系统 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010585454.5A Division CN111478827B (zh) | 2020-06-24 | 2020-06-24 | 区块链网络的压力测试方法及装置、系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112910724A CN112910724A (zh) | 2021-06-04 |
CN112910724B true CN112910724B (zh) | 2022-08-09 |
Family
ID=71763956
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010585454.5A Active CN111478827B (zh) | 2020-06-24 | 2020-06-24 | 区块链网络的压力测试方法及装置、系统 |
CN202110063126.3A Active CN112910724B (zh) | 2020-06-24 | 2020-06-24 | 区块链网络的压力测试方法及装置、系统 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010585454.5A Active CN111478827B (zh) | 2020-06-24 | 2020-06-24 | 区块链网络的压力测试方法及装置、系统 |
Country Status (2)
Country | Link |
---|---|
CN (2) | CN111478827B (zh) |
WO (1) | WO2021259127A1 (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111478827B (zh) * | 2020-06-24 | 2020-12-04 | 支付宝(杭州)信息技术有限公司 | 区块链网络的压力测试方法及装置、系统 |
CN112486830B (zh) * | 2020-06-24 | 2023-04-18 | 支付宝(杭州)信息技术有限公司 | 区块链网络的压力测试方法及装置、系统 |
CN111478828B (zh) * | 2020-06-24 | 2020-10-20 | 支付宝(杭州)信息技术有限公司 | 区块链网络的压力测试方法及装置、系统 |
CN112529589B (zh) * | 2021-02-10 | 2021-07-27 | 北京全息智信科技有限公司 | 一种长耗时区块链交易的处理方法、装置和电子设备 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108536521A (zh) * | 2018-03-30 | 2018-09-14 | 口碑(上海)信息技术有限公司 | 基于仿真平台离线环境核对方法及装置 |
CN109034809A (zh) * | 2018-08-16 | 2018-12-18 | 北京京东尚科信息技术有限公司 | 区块链的生成方法、装置、区块链节点及存储介质 |
CN109063183A (zh) * | 2018-08-27 | 2018-12-21 | 众安信息技术服务有限公司 | 在区块链节点处进行信息处理的方法及装置 |
CN109165168A (zh) * | 2018-09-14 | 2019-01-08 | 杭州云创共享网络科技有限公司 | 一种压力测试方法、装置、设备及介质 |
CN110245147A (zh) * | 2019-06-19 | 2019-09-17 | 腾讯科技(深圳)有限公司 | 区块链数据处理方法、装置、可读存储介质和计算机设备 |
CN110291506A (zh) * | 2018-11-30 | 2019-09-27 | 阿里巴巴集团控股有限公司 | 区块链网络测试平台 |
CN110580206A (zh) * | 2019-09-16 | 2019-12-17 | 上海保险交易所股份有限公司 | 用于区块链系统的压力测试的方法、介质和控制装置 |
CN110598446A (zh) * | 2019-09-16 | 2019-12-20 | 腾讯科技(深圳)有限公司 | 基于区块链的测试方法、装置、存储介质和计算机设备 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9934138B1 (en) * | 2016-12-07 | 2018-04-03 | International Business Machines Corporation | Application testing on a blockchain |
US10908602B2 (en) * | 2017-08-02 | 2021-02-02 | Strong Force Iot Portfolio 2016, Llc | Systems and methods for network-sensitive data collection |
CN108763058A (zh) * | 2018-04-24 | 2018-11-06 | 苏州同济区块链研究院有限公司 | 一种区块链测评系统 |
US20190394113A1 (en) * | 2018-06-25 | 2019-12-26 | Blocktest Global | Systems and methods to automatically evaluate blockchain-based solution performance |
CN110061889A (zh) * | 2019-04-01 | 2019-07-26 | 北京众享比特科技有限公司 | 区块链性能测试方法、装置、设备和存储介质 |
CN110826111B (zh) * | 2019-06-26 | 2021-08-13 | 腾讯科技(深圳)有限公司 | 测试监管方法、装置、设备及存储介质 |
CN110543788B (zh) * | 2019-09-11 | 2024-05-03 | 腾讯科技(深圳)有限公司 | 数据存储方法、装置、计算机可读存储介质和计算机设备 |
CN111478827B (zh) * | 2020-06-24 | 2020-12-04 | 支付宝(杭州)信息技术有限公司 | 区块链网络的压力测试方法及装置、系统 |
CN111488291B (zh) * | 2020-06-24 | 2020-10-30 | 支付宝(杭州)信息技术有限公司 | 区块链网络的压力测试方法及装置、系统 |
CN112486830B (zh) * | 2020-06-24 | 2023-04-18 | 支付宝(杭州)信息技术有限公司 | 区块链网络的压力测试方法及装置、系统 |
CN111475501B (zh) * | 2020-06-24 | 2020-10-30 | 支付宝(杭州)信息技术有限公司 | 区块链网络的数据清理方法及装置 |
CN111478828B (zh) * | 2020-06-24 | 2020-10-20 | 支付宝(杭州)信息技术有限公司 | 区块链网络的压力测试方法及装置、系统 |
-
2020
- 2020-06-24 CN CN202010585454.5A patent/CN111478827B/zh active Active
- 2020-06-24 CN CN202110063126.3A patent/CN112910724B/zh active Active
-
2021
- 2021-06-17 WO PCT/CN2021/100584 patent/WO2021259127A1/zh active Application Filing
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108536521A (zh) * | 2018-03-30 | 2018-09-14 | 口碑(上海)信息技术有限公司 | 基于仿真平台离线环境核对方法及装置 |
CN109034809A (zh) * | 2018-08-16 | 2018-12-18 | 北京京东尚科信息技术有限公司 | 区块链的生成方法、装置、区块链节点及存储介质 |
CN109063183A (zh) * | 2018-08-27 | 2018-12-21 | 众安信息技术服务有限公司 | 在区块链节点处进行信息处理的方法及装置 |
CN109165168A (zh) * | 2018-09-14 | 2019-01-08 | 杭州云创共享网络科技有限公司 | 一种压力测试方法、装置、设备及介质 |
CN110291506A (zh) * | 2018-11-30 | 2019-09-27 | 阿里巴巴集团控股有限公司 | 区块链网络测试平台 |
CN110245147A (zh) * | 2019-06-19 | 2019-09-17 | 腾讯科技(深圳)有限公司 | 区块链数据处理方法、装置、可读存储介质和计算机设备 |
CN110580206A (zh) * | 2019-09-16 | 2019-12-17 | 上海保险交易所股份有限公司 | 用于区块链系统的压力测试的方法、介质和控制装置 |
CN110598446A (zh) * | 2019-09-16 | 2019-12-20 | 腾讯科技(深圳)有限公司 | 基于区块链的测试方法、装置、存储介质和计算机设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111478827A (zh) | 2020-07-31 |
CN111478827B (zh) | 2020-12-04 |
CN112910724A (zh) | 2021-06-04 |
WO2021259127A1 (zh) | 2021-12-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111478828B (zh) | 区块链网络的压力测试方法及装置、系统 | |
CN111475501B (zh) | 区块链网络的数据清理方法及装置 | |
CN112910724B (zh) | 区块链网络的压力测试方法及装置、系统 | |
US20210006506A1 (en) | Allocating virtual resource based on block chain | |
KR101959153B1 (ko) | 데이터베이스에서의 계좌와 관련된 거래 요청의 효율적인 처리를 위한 시스템 | |
WO2017048924A1 (en) | Distributed data processing method and system | |
CN111488291B (zh) | 区块链网络的压力测试方法及装置、系统 | |
CN106155775B (zh) | 消息处理方法、设备及系统 | |
WO2021259131A1 (zh) | 区块链网络的压力测试方法及装置、系统 | |
CN109902028A (zh) | Acl特性的自动化测试方法、装置、设备及存储介质 | |
CN112596801B (zh) | 事务处理方法、装置、设备、存储介质、数据库 | |
CN117421160A (zh) | 数据备份方法、装置、计算机设备和存储介质 | |
Membrey et al. | A disk based stream oriented approach for storing big data | |
CN114491662B (zh) | 一种基于区块链的数据资产审计方法、系统及设备 | |
CN111510484B (zh) | 区块链处理方法、系统、装置、计算机设备和存储介质 | |
US9286112B2 (en) | Determining and dispatching processing agent for transaction processing | |
CN111352845A (zh) | 一种测试序列场景生成方法及装置 | |
CN117478300B (zh) | 基于节点确定的跨链共识方法、装置和计算机设备 | |
CN111930475B (zh) | 启动ett运行的方法及装置 | |
CN115470174A (zh) | 路由生成方法及装置、众核系统、计算机可读介质 | |
CN114253685A (zh) | 一种遥感影像算法的调用架构及方式 | |
CN117593125A (zh) | 业务数据处理方法、装置、计算机设备和存储介质 | |
CN117764728A (zh) | 一种区块链跨合约调用方法、装置、设备及存储介质 | |
CN116126819A (zh) | 一种系统日志处理方法、设备及介质 | |
CN114064802A (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 |