CN114338452A - 区块链子网的压力测试方法及装置、系统 - Google Patents
区块链子网的压力测试方法及装置、系统 Download PDFInfo
- Publication number
- CN114338452A CN114338452A CN202111670003.2A CN202111670003A CN114338452A CN 114338452 A CN114338452 A CN 114338452A CN 202111670003 A CN202111670003 A CN 202111670003A CN 114338452 A CN114338452 A CN 114338452A
- Authority
- CN
- China
- Prior art keywords
- network
- node
- block chain
- link
- transaction
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 91
- 238000009530 blood pressure measurement Methods 0.000 claims abstract description 119
- 238000000034 method Methods 0.000 claims abstract description 97
- 238000005259 measurement Methods 0.000 claims abstract description 55
- 230000007246 mechanism Effects 0.000 claims description 66
- 230000004044 response Effects 0.000 claims description 46
- 230000008569 process Effects 0.000 claims description 29
- 230000001934 delay Effects 0.000 claims description 16
- 238000012545 processing Methods 0.000 claims description 15
- 238000003860 storage Methods 0.000 claims description 14
- 208000033748 Device issues Diseases 0.000 claims description 4
- 238000009826 distribution Methods 0.000 claims description 4
- 238000001514 detection method Methods 0.000 claims 4
- 239000012530 fluid Substances 0.000 claims 2
- 238000010998 test method Methods 0.000 claims 1
- 230000006855 networking Effects 0.000 description 22
- 238000012544 monitoring process Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 10
- 238000005516 engineering process Methods 0.000 description 9
- 239000010410 layer Substances 0.000 description 9
- 230000000977 initiatory effect Effects 0.000 description 8
- 239000003999 initiator Substances 0.000 description 5
- 230000008520 organization Effects 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 230000008859 change Effects 0.000 description 4
- 230000003993 interaction Effects 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 230000014759 maintenance of location Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 238000002955 isolation Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000036961 partial effect Effects 0.000 description 2
- 230000002829 reductive effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000008034 disappearance Effects 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000002427 irreversible effect Effects 0.000 description 1
- 238000005304 joining Methods 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000003825 pressing Methods 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 239000002356 single layer Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 238000009662 stress testing Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本说明书提供一种区块链子网的压力测试方法及装置、系统;该系统可以包括:压测设备,获取针对待压测区块链子网的压测交易配置信息,压测交易配置信息包括待压测区块链子网的网络标识;以及,根据压测交易配置信息生成包含网络标识的压测交易,并向管理待压测区块链子网的区块链主网提交压测交易;区块链主网,区块链主网中的主网节点响应于接收到的压测交易,确定出自身管理的对应于网络标识的区块链子网,并将压测交易分配至确定出的区块链子网;待压测区块链子网,待压测区块链网络中的区块链节点执行区块链主网分配的压测交易并得到相应的交易回执,交易回执用于供压测设备分析确定针对待压测区块链子网的压测结果。
Description
技术领域
本说明书一个或多个实施例涉及区块链技术领域,尤其涉及一种区块链子网的压力测试方法及装置、系统。
背景技术
区块链技术(也被称之为,分布式账本技术)是一种去中性化的分布式数据库技术,具有去中心化、公开透明、不可篡改、可信任等多种特点,适用于诸多对数据可靠性具有高需求的应用场景中。区块链网络可以自身为主网,基于一定的规则来动态创建由其管理的多个区块链子网。
通过向区块链网络导入压力测试流量,可以获知区块链网络的负载能力、数据吞吐量上限等各项性能指标,从而据此维护区块链网络的正常运行,或者针对区块链网络进行优化。
发明内容
有鉴于此,本说明书一个或多个实施例提供一种区块链子网的压力测试方法及装置、系统。
为实现上述目的,本说明书一个或多个实施例提供技术方案如下:
根据本说明书一个或多个实施例的第一方面,提出了一种区块链子网的压力测试系统,包括:
压测设备,获取针对待压测区块链子网的压测交易配置信息,所述压测交易配置信息包括所述待压测区块链子网的网络标识;以及,根据所述压测交易配置信息生成包含所述网络标识的压测交易,并向管理所述待压测区块链子网的区块链主网提交所述压测交易;
所述区块链主网,所述区块链主网中的主网节点响应于接收到的所述压测交易,确定出自身管理的对应于所述网络标识的区块链子网,并将所述压测交易分配至确定出的区块链子网;
所述待压测区块链子网,所述待压测区块链网络中的区块链节点执行所述区块链主网分配的压测交易并得到相应的交易回执,所述交易回执用于供所述压测设备分析确定针对所述待压测区块链子网的压测结果。
根据本说明书一个或多个实施例的第二方面,提出了一种区块链子网的压力测试方法,应用于管理区块链子网的区块链主网中的主网节点;所述方法包括:
接收压测设备提交的包含待压测区块链子网的网络标识的压测交易,所述压测交易由所述压测设备根据针对待压测区块链子网的压测交易配置信息生成,所述压测交易配置信息包括所述网络标识;
响应于接收到的所述压测交易,确定出自身管理的对应于所述网络标识的区块链子网,并将所述压测交易分配至确定出的区块链子网,以由确定出的区块链子网中的区块链节点执行所述区块链主网分配的压测交易并得到相应的交易回执,所述交易回执用于供所述压测设备分析确定针对所述待压测区块链子网的压测结果。
根据本说明书一个或多个实施例的第三方面,提出了一种区块链子网的压力测试装置,应用于管理区块链子网的区块链主网中的主网节点;所述装置包括:
接收单元,接收压测设备提交的包含待压测区块链子网的网络标识的压测交易,所述压测交易由所述压测设备根据针对待压测区块链子网的压测交易配置信息生成,所述压测交易配置信息包括所述网络标识;
分配单元,响应于接收到的所述压测交易,确定出自身管理的对应于所述网络标识的区块链子网,并将所述压测交易分配至确定出的区块链子网,以由确定出的区块链子网中的区块链节点执行所述区块链主网分配的压测交易并得到相应的交易回执,所述交易回执用于供所述压测设备分析确定针对所述待压测区块链子网的压测结果。
根据本说明书一个或多个实施例的第四方面,提出了一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如上述任一实施例中所述的方法。
根据本说明书一个或多个实施例的第五方面,提出了一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如上述实施例中任一所述方法的步骤。
本说明书的技术方案中,在区块链主网管理多个区块链子网的应用场景下,区块链主网与区块链子网之间存在层级关系。与此同时,同一区块链主网管理的不同区块链子网分别负责完成不同的业务,为了保证各个区块链子网稳定运行以完成自身负责的业务,需要对各个区块链子网进行压力测试。
一方面,区块链主网下存在多个区块链子网,压测设备通过压测交易配置信息中待压测区块链子网的网络标识,可以识别出区块链子网,从而可以完成对不同区块链子网的压力测试。
另一方面,可利用上述层级关系的特点来提高对区块链子网进行压测的效率。具体而言,压测设备在创建针对待压测区块链子网的压测交易后,可向管理待压测区块链子网的区块链主网提交压测交易,由区块链主网中的主网节点利用区块链主网与区块链子网之间的层级关系,将压测交易分配至待压测区块链子网中的各个子网节点以进行压力测试,可避免需要压测设备来向待压测区块链子网中的每个子网节点发送压测交易,从而提高压测的效率。
附图说明
为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1是一示例性实施例提供的一种创建智能合约的示意图。
图2是一示例性实施例提供的一种调用智能合约的示意图。
图3是一示例性实施例提供的一种创建和调用智能合约的示意图。
图4是一示例性实施例提供的一种基于区块链主网组建区块链子网的示意图。
图5是一示例性实施例提供的一种区块链子网的压力测试方法的流程图。
图6是一示例性实施例提供的一种网络拓扑结构的示意图。
图7是一示例性实施例提供的一种设备的结构示意图。
图8是一示例性实施例提供的一种区块链子网的压力测试装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书一个或多个实施例相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书一个或多个实施例的一些方面相一致的装置和方法的例子。
需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
区块链一般被划分为三种类型:公有链(Public Blockchain),私有链(PrivateBlockchain)和联盟链(Consortium Blockchain)。此外,还有多种类型的结合,比如私有链+联盟链、联盟链+公有链等不同组合形式。其中去中心化程度最高的是公有链。加入公有链的参与者可以读取链上的数据记录、参与交易以及竞争新区块的记账权等。而且,各参与者(即节点)可自由加入以及退出网络,并进行相关操作。私有链则相反,该网络的写入权限由某个组织或者机构控制,数据读取权限受组织规定。简单来说,私有链可以为一个弱中心化系统,参与节点具有严格限制且少。这种类型的区块链更适合于特定机构内部使用。联盟链则是介于公有链以及私有链之间的区块链,可实现“部分去中心化”。联盟链中各个节点通常有与之相对应的实体机构或者组织;参与者通过授权加入网络并组成利益相关联盟,共同维护区块链运行。
不论是公有链、私有链还是联盟链,都可能提供智能合约的功能。区块链上的智能合约是在区块链系统上可以被交易触发执行的合约。智能合约可以通过代码的形式定义。
以太坊作为一个可编程区块链的核心是以太坊虚拟机(EVM),每个以太坊节点都可以运行EVM。EVM是一个图灵完备的虚拟机,这意味着可以通过它实现各种复杂的逻辑。用户在以太坊中发布和调用智能合约就是在EVM上运行的。实际上,虚拟机直接运行的是虚拟机代码(虚拟机字节码,下简称“字节码”)。部署在区块链上的智能合约可以是字节码的形式。
例如图1所示,Bob将一个包含创建智能合约信息的交易发送到以太坊网络后,节点1 的EVM可以执行这个交易并生成对应的合约实例。图1中的“0x6f8ae93…”代表了这个合约的地址,交易的data字段保存的可以是字节码,交易的to字段为空。节点间通过共识机制达成一致后,这个合约成功创建,并且可以在后续过程中被调用。合约创建后,区块链上出现一个与该智能合约对应的合约账户,并拥有一个特定的地址,合约代码将保存在该合约账户中。智能合约的行为由合约代码控制。换句话说,智能合约使得区块链上产生包含合约代码和账户存储(Storage)的虚拟账户。
如图2所示,仍以以太坊为例,Bob将一个用于调用智能合约的交易发送到以太坊网络后,某一节点的EVM可以执行这个交易并生成对应的合约实例。图2中交易的from字段是交易发起方(即Bob)的账户的地址,to字段中的“0x6f8ae93…”代表了被调用的智能合约的地址,value字段在以太坊中是以太币的值,交易的data字段保存的调用智能合约的方法和参数。调用智能合约后,balance的值可能改变。后续,某个客户端可以通过某一区块链节点(例如图2中的节点6)查看balance的当前值。智能合约以规定的方式在区块链网络中每个节点独立的执行,所有执行记录和数据都保存在区块链上,所以当交易完成后,区块链上就保存了无法篡改、不会丢失的交易凭证。
创建智能合约和调用智能合约的示意图如图3所示。以太坊中要创建一个智能合约,需要经过编写智能合约、编译成字节码、部署到区块链等过程。以太坊中调用智能合约,是发起一笔指向智能合约地址的交易,智能合约代码分布式的运行在以太坊网络中每个节点的虚拟机中。
需要说明的是,除了可以由用户创建智能合约,也可以在创世块中由系统设置智能合约。这类合约一般称为创世合约。一般的,创世合约中可以设置一些区块链网络的数据结构、参数、属性和方法。此外,具有系统管理员权限的账户可以创建系统级的合约,或者修改系统级的合约(简称为系统合约)。另外除了以太坊中的EVM外,不同的区块链网络还可能采用各种的虚拟机,这里并不限定。
区块链网络中的节点在执行调用智能合约的交易后,会生成相应的收据(receipt),以用于记录与执行该智能合约相关的信息。这样,可以通过查询交易的收据来获得合约执行结果的相关信息。合约执行结果可以表现为收据中的事件(event)。消息机制可以通过收据中的事件实现消息传递,以触发区块链节点执行相应的处理。事件的结构譬如可以为:
Event:
[topic][data]
[topic][data]
......
在上述示例中,事件的数量可以为一个或多个;其中,每个事件分别包括主题(topic) 和数据(data)等字段。区块链节点可以通过监听事件的topic,从而在监听到预定义的topic 的情况下,执行预设处理,或者从相应事件的data字段读取相关内容,以及可以基于读取的内容执行预设处理。
上述的事件机制中,相当于在监听方(比如存在监听需求的用户)处存在具有监听功能的客户端,譬如该客户端上运行了用于实现监听功能的SDK等,由该客户端对区块链节点产生的事件进行监听,而区块链节点只需要正常生成收据即可。除了上述的事件机制之外,还可以通过其他方式实现交易信息的透出。例如,可以通过在区块链节点运行的区块链平台代码中嵌入监听代码,使得该监听代码可以监听区块链交易的交易内容、智能合约的合约状态、合约产生的收据等其中的一种或多种数据,并将监听到的数据发送至预定义的监听方。由于监听代码部署于区块链平台代码中,而非监听方的客户端处,因而相比于事件机制而言,这种基于监听代码的实现方式相对更加的主动。其中,上述的监听代码可以由区块链平台的开发人员在开发过程中加入区块链平台代码,也可以由监听方基于自身的需求而嵌入,本说明书并不对此进行限制。
区块链技术区别于传统技术的去中心化特点之一,就是在各个节点上进行记账,或者称为分布式记账,而不是传统的集中式记账。区块链系统要成为一个难以攻破的、公开的、不可篡改数据记录的去中心化诚实可信系统,需要在尽可能短的时间内做到分布式数据记录的安全、明确及不可逆。不同类型的区块链网络中,为了在各个记录账本的节点中保持账本的一致,通常采用共识算法来保证,即前述提到的共识机制。例如,区块链节点之间可以实现区块粒度的共识机制,比如在节点(例如某个独特的节点)产生一个区块后,如果产生的这个区块得到其它节点的认可,其它节点记录相同的区块。再例如,区块链节点之间可以实现交易粒度的共识机制,比如在节点(例如某个独特的节点)获取一笔区块链交易后,如果这笔区块链交易得到其他节点的认可,认可该区块链交易的各个节点可以分别将该区块链交易添加至自身维护的最新区块中,并且最终能够确保各个节点产生相同的最新区块。共识机制是区块链节点就区块信息(或称区块数据)达成全网一致共识的机制,可以保证最新区块被准确添加至区块链。当前主流的共识机制包括:工作量证明(Proof ofWork,POW)、股权证明(Proof of Stake,POS)、委任权益证明(Delegated Proof of Stake,DPOS)、实用拜占庭容错(Practical Byzantine Fault Tolerance,PBFT)算法,HoneyBadgerBFT算法等。
由于区块链网络的去中心化特性,区块链网络中的所有节点处于对等地位,使得区块链网络中的所有区块链节点均会维护相同的区块数据,但一些节点有时存在实现小范围交易的需求,避免其他节点获得这些交易及其相关数据,导致无法满足部分节点的特殊需求。以联盟链为例,所有联盟成员(即联盟内的节点成员)可以组成一区块链网络,所有联盟成员在该区块链网络中分别存在对应的区块链节点,并可以通过对应的区块链节点获得该区块链网络上发生的所有交易和相关数据。但在一些情况下,可能存在部分联盟成员希望完成一些具有保密需求的交易,这些联盟成员既希望这些交易能够在区块链上存证或借助于区块链技术的其他优势,又能够避免其他联盟成员查看到这些交易和相关数据。虽然这些联盟成员可以额外组建一新的区块链网络,其建立方式与上述包含所有联盟成员的区块链网络类似,但是从头开始建立一条新的区块链网络需要消耗大量的资源,且无论是该区块链网络的建立过程或是建成后的配置过程都非常耗时。联盟成员之间的需求往往是临时的或者具有一定的时效性,使得新建的区块链网络很快就会由于需求消失而失去存在的意义,从而进一步增加了上述区块链网络的建链成本。而联盟成员之间的需求经常会变化,而每一需求所对应的联盟成员也往往不同,因而每当联盟成员发生变化时就可能需要组建一新的区块链网络,从而造成资源和时间的大量浪费。
对此,可将已组建的区块链网络作为区块链主网,并在该区块链主网的基础上组建区块链子网。那么,在诸如上述的联盟链场景下,联盟成员可以在已经参与区块链主网的情况下,基于自身需求而在区块链主网的基础上组建所需的区块链子网。由于区块链子网是在区块链主网的基础上所建立,使得区块链子网的组建过程相比于完全独立地组建一条区块链网络,所消耗的资源和所需的耗时等都极大地降低,灵活性极高。一方面可满足一些节点成员之间的小范围交易需求,另一方面可以通过区块链主网便捷地实现对区块链子网的管理。
具体而言,区块链主网中的各区块链节点分别获取组建区块链子网的交易。其中,该交易包含区块链子网的配置信息,该配置信息包括参与组建区块链子网的节点成员的身份信息。然后,区块链主网中的各区块链节点分别执行上述交易以透出该配置信息;其中,当配置信息包含第一区块链节点对应的节点成员的身份信息时,部署第一区块链节点的节点设备基于该交易生成包含配置信息的创世块,并基于创世块启动属于区块链子网的第二区块链节点。
组建区块链子网的交易可由区块链主网的管理员发起,即仅允许管理员在区块链主网的基础上组建区块链子网,而避免将区块链子网的组建权限开放给普通用户,以防止由此导致的安全性问题。在一些情况下,也可以允许区块链主网的普通用户发起上述组建区块链子网的交易,以满足普通用户的组网需求,使得普通用户能够在管理员不便于发起交易的情况下依然能够快捷地组建区块链子网。
以图4所示为例,区块链主网为subnet0,该subnet0包含的区块链节点为nodeA、nodeB、 nodeC、nodeD和nodeE等。假定分别对应nodeA、nodeB、nodeC和nodeD的节点成员希望组建一区块链子网:如果nodeA为管理员且仅允许管理员发起组建区块链子网的交易,那么可由nodeA向subnet0发起上述组建区块链子网的交易;如果nodeE为管理员且仅允许管理员发起组建区块链子网的交易,那么nodeA~nodeD需要向nodeE进行请求,使得nodeE向subnet0 发起上述组建区块链子网的交易;如果nodeE为管理员但允许普通用户发起组建区块链子网的交易,那么nodeA~nodeE均可以向subnet0发起上述组建区块链子网的交易。当然,不论是管理员或者普通用户,发起组建区块链子网的交易的区块链节点对应的节点成员并不一定参与所组建的区块链子网,比如虽然最终由nodeA、nodeB、nodeC和nodeD分别对应的节点成员组建区块链子网,但可由nodeE向subnet0发起上述组建区块链子网的交易,而并不一定由nodeA~nodeD来发起该组建区块链子网的交易。
在区块链主网的基础上组建区块链子网时,容易理解的是,会使得该区块链子网与区块链主网之间存在逻辑上的层次关系(或者称之为层级关系)。比如在图4所示的subnet0上组建区块链子网subnet1时,可以认为subnet0处于第一层、subnet1处于第二层。一种情况下,本说明书中的区块链主网可以为底层区块链网络,即区块链主网并非在其他区块链网络的基础上组建的区块链子网,比如图4中的subnet0可以认为属于底层区块链网络类型的区块链主网。另一种情况下,本说明书中的区块链主网可以为其他区块链网络的子网,比如可以在图4中subnet1的基础上进一步组建另一区块链子网,此时可以认为subnet1为该区块链子网对应的区块链主网,而这并不影响该subnet1同时属于subnet0上创建的区块链子网。可见,区块链主网与区块链子网实际上是相对概念,同一区块链网络在一些情况下可以为区块链主网、另一些情况下可以为区块链子网。
上述组建区块链子网的交易在被发送至区块链主网后,由区块链主网内的共识节点进行共识,并在通过共识后由各区块链节点执行该交易,以完成区块链子网的组建。共识过程取决于所采用的共识机制,譬如上文所述的任一共识机制,本说明书并不对此进行限制。
通过在上述组建区块链子网的交易中包含配置信息,该配置信息可以用于对所组建的区块链子网进行配置,使得组建的区块链子网符合组网需求。例如,通过在配置信息中包含参与组建所述区块链子网的节点成员的身份信息,可以指定组建的区块链子网对应于哪些节点成员。
节点成员的身份信息可以包括公钥,或者采用节点ID等其他能够表征节点成员的身份的信息,本说明书并不对此进行限制。以公钥为例,每个区块链节点都存在对应的一组或多组公私钥对,由区块链节点持有私钥而公钥被公开且唯一对应于该私钥,因而可以通过公钥来表征相应区块链节点的身份,也可以通过该公钥来表征该区块链节点对应的节点成员的身份。因此,对于希望参与组建区块链子网的节点成员,可以将这些节点成员在区块链主网上对应的区块链节点的公钥添加至上述组建区块链子网的交易中,以作为上述节点成员的身份信息。上述的公私钥对可以用于签名验证的过程。例如,在采用有签名的共识算法中,譬如subnet1 上述的nodeA1采用自身维护的私钥对消息进行签名后,将经过签名的消息在subnet1中广播,而nodeB1、nodeC1和nodeD1可以用nodeA1的公钥对收到的消息进行签名验证,以确认自身收到的消息确实来自nodeA1且没有经过篡改。
第一区块链节点可以为区块链主网上属于配置信息所指示的节点成员对应的区块链节点。在组建区块链子网时,并非由第一区块链节点直接参与组建区块链子网,而是需要由用于部署该第一区块链节点的节点设备生成第二区块链节点,并由第二区块链节点参与组建区块链子网。第一区块链节点和第二区块链节点对应于同一个节点成员,比如在联盟链场景下对应于同一联盟链成员,但第一区块链节点属于区块链主网、第二区块链节点属于区块链子网,使得该节点成员可以分别参与到区块链主网和区块链子网的交易中;并且,由于区块链主网和区块链子网属于相互独立的两个区块链网络,使得第一区块链节点生成的区块与第二区块链节点生成的区块分别存入所述节点设备上的不同存储(采用的存储譬如可以为数据库),实现了第一区块链节点与第二区块链节点分别使用的存储之间的相互隔离,因而区块链子网所产生的数据仅会在区块链子网中的各个区块链节点之间同步,使得仅参与了区块链主网的节点成员无法获得区块链子网上产生的数据,实现了区块链主网与区块链子网之间的数据隔离,满足了部分节点成员(即参与区块链子网的节点成员)之间的交易需求。
第一区块链节点和第二区块链节点是在逻辑上划分出来的区块链节点,而从物理设备的角度来说,相当于上述部署了第一区块链节点和第二区块链节点的节点设备同时参与了区块链主网和区块链子网。由于区块链主网与区块链子网之间相互独立,使得这两个区块链网络的身份体系也相互独立,因而即便第一区块链节点和第二区块链节点可以采用完全相同的公钥,仍然应当将两者视为不同的区块链节点。譬如在图4中,subnet0中的nodeA相当于第一区块链节点,而部署该nodeA的节点设备生成了属于subnet1的nodeA1,该nodeA1相当于第二区块链节点。可见,由于身份体系相互独立,所以即便第二区块链节点所采用的公钥区别于第一区块链节点,也不影响本说明书方案的实施。
当然,参与区块链子网的节点成员并不一定只是参与区块链主网的节点成员中的一部分。在一些情况下,参与区块链子网的节点成员可以与参与区块链主网的节点成员完全一致,此时所有的节点成员都可以获得区块链主网和区块链子网上的数据,但是区块链主网与区块链子网所产生的数据依然可以相互隔离,比如可以通过在区块链主网上实现一类业务、在区块链子网上实现另一类业务,从而可以使得这两类业务分别产生的业务数据之间相互隔离。
除了上述的节点成员的身份信息之外,配置信息还可以包括下述至少之一:所述区块链子网的网络标识、所述区块链子网的管理员的身份信息、针对区块链平台代码的属性配置等,本说明书并不对此进行限制。网络标识用于唯一表征该区块链子网,因而该区块链子网的网络标识应当区别于区块链主网和该区块链主网上组建的其他区块链子网。区块链子网的管理员的身份信息,譬如可以为作为管理员的节点成员的公钥;其中,区块链主网与区块链子网的管理员可以相同,也可以不同。
通过区块链主网来组建区块链子网的优势之一,就是由于生成第二区块链节点的节点设备上已经部署了第一区块链节点,因而可以将第一区块链节点所使用的区块链平台代码复用在第二区块链节点上,免去了区块链平台代码的重复部署,极大地提高了区块链子网的组建效率。那么,如果配置信息中未包含针对区块链平台代码的属性配置,第二区块链节点可以复用第一区块链节点上采用的属性配置;如果配置信息中包含了针对区块链平台代码的属性配置,第二区块链节点可以采用该属性配置,使得第二区块链节点所采用的属性配置不受限于第一区块链节点的属性配置、与第一区块链节点无关。针对区块链平台代码的属性配置可以包括下述至少之一:代码版本号、是否需要共识、共识算法类型、区块大小等,本说明书并不对此进行限制。
组建区块链子网的交易包括调用合约的交易。该交易中可以指明被调用的智能合约的地址、调用的方法和传入的参数。例如,调用的合约可以为前述的创世合约或系统合约,调用的方法可以为组建区块链子网的方法,传入的参数可以包括上述的配置信息。
举例而言,Subnet系统合约的结构可以包含如下信息:
其中,subnetId用于表示区块链子网的子网标识;pubkeys用于表示区块链子网的子网节点的身份信息;subnetState用于表示区块链子网的运行状态(启动、停止、无效等);genesis用于表示区块链子网的创世块信息。上述数据均可存储于Subnet系统合约的合约状态中。
用于组建区块链子网的交易可以包含如下信息:
from:Administrator
to:Subnet
method:AddSubnet(string)
string:genesis
其中,from字段为该交易的发起方的信息,譬如Administrator表明该发起方为管理员; to字段为被调用的智能合约的地址,譬如该智能合约可以为Subnet合约,则to字段具体为该Subnet合约的地址;method字段为调用的方法,譬如在Subnet合约中用于组建区块链子网的方法可以为AddSubnet(string),而string为AddSubnet()方法中的参数,上述示例中通过genesis表征该参数的取值,该genesis具体为前述的配置信息。
以Subnet0上的节点nodeA~nodeE执行调用Subnet合约中AddSubnet()方法的交易为例。在交易通过共识后,nodeA~nodeE分别执行AddSubnet()方法并传入配置信息,得到相应的执行结果。
合约的执行结果可以包括所述配置信息,该执行结果可以处于前文所述的收据中,该收据中可以包含与执行AddSubnet()方法相关的event,即组网事件。组网事件的topic可以包含预定义的组网事件标识,以区别于其他的事件。譬如在与执行AddSubnet()方法相关的 event中,topic的内容为关键词subnet,且该关键词区别于其他方法所产生event中的topic。那么,nodeA~nodeE或者部署nodeA~nodeE的节点设备1~5通过监听生成的收据中各个event 所含的topic,可以在监听到包含关键词subnet的topic的情况下,确定监听到与执行AddSubnet()方法相关的event,即组网事件。例如,收据中的event如下:
Event:
[topic:other][data]
[topic:subnet][data]
......
那么,在监听到第1条event时,由于所含topic的内容为other,确定该event与AddSubnet()方法无关;以及,在监听到第2条event时,由于所含topic的内容为subnet,确定该event与AddSubnet()方法相关,并进而读取该event对应的data字段,该data字段包含上述的配置信息。以配置信息包括区块链子网的节点成员的公钥为例,data字段的内容例如可以包括:
{subnet1;
nodeA的公钥,nodeA的IP、nodeA的端口号…;
nodeB的公钥,nodeB的IP、nodeB的端口号…;
nodeC的公钥,nodeC的IP、nodeC的端口号…;
nodeD的公钥,nodeD的IP、nodeD的端口号…;
}
其中,subnet1为希望创建的区块链子网的网络标识。区块链主网中的各个区块链节点可以记录该区块链主网上已创建的所有区块链子网的网络标识,或者与这些区块链子网相关的其他信息,这些信息譬如可以维护在上述的Subnet合约中,具体可以对应于该Subnet合约所含的一个或多个合约状态的取值。那么,可以根据记录的已创建的所有区块链子网的网络标识,确定上述的subnet1是否已经存在;如果不存在,说明subnet1是当前需要创建的新区块链子网,如果存在则说明subnet1已经存在。
除了采用希望创建的新的区块链子网的网络标识之外,还可以采用预定义的新建网络标识,该新建网络标识表明相应的组网事件用于组建新的区块链子网。例如,可以将上述的 subnet1替换为newsubnet,该newsubnet为预定义的新建网络标识,nodeA~nodeE在识别到 data字段包含newsubnet时,即可确定包含该newsubnet的event为组网事件,需要创建新的区块链子网。
除了网络标识subnet1之外,上述data字段中还包含参与组建区块链子网的各个节点成员的身份信息等内容。部署第一区块链节点的节点设备可以监听生成的收据,并在监听到所述组网事件且所述组网事件的内容包含第一区块链节点对应的节点成员的身份信息的情况下,由部署第一区块链节点的节点设备获取所述组网事件包含的配置信息或创世块。或者,第一区块链节点可以监听生成的收据,并在监听到所述组网事件且所述组网事件的内容表明第一区块链节点属于所述节点成员的情况下,触发部署第一区块链节点的节点设备获取所述组网事件包含的所述配置信息或所述创世块。
如前所述,节点设备可以直接监听收据。假定nodeA~nodeE分别部署在节点设备1~5上,节点设备1~5可以监听nodeA~nodeE分别生成的收据,那么在监听到subnet1是需要新组建的区块链子网的情况下,节点设备1~5会进一步识别data字段中包含的节点成员的身份信息,以确定自身的处理方式。以nodeA和节点设备1为例:如果节点设备1发现data字段包含 nodeA的公钥、IP地址和端口号等身份信息,那么节点设备1在基于上述的消息机制从data 字段获得配置信息的情况下,生成包含该配置信息的创世块,且节点设备1会在本地部署 nodeA1,该nodeA1加载生成的创世块,从而成为subnet1的子网节点;类似地,节点设备2 可以生成nodeB1、节点设备3可以生成nodeC1、节点设备4可以生成nodeD1。以及,节点设备5会发现data字段包含的身份信息与自身均不匹配,则该节点设备5不会根据data字段中的配置信息生成创世块,也不会生成subnet1中的区块链节点。
如前所述,区块链主网中的区块链节点可以监听收据,并根据监听结果触发节点设备执行相关处理。例如,nodeA~nodeE在确定subnet1是需要新组建的区块链子网的情况下,会进一步识别data字段中包含的节点成员的身份信息,以确定自身的处理方式。比如,nodeA~nodeD会发现在data字段包含自身的公钥、IP地址和端口号等身份信息,假定nodeA~nodeD分别部署在节点设备1~4上,以nodeA和节点设备1为例:nodeA会触发节点设备1,使得节点设备1在基于上述的消息机制从data字段获得配置信息的情况下,生成包含该配置信息的创世块,且节点设备1会在本地部署nodeA1,该nodeA1加载生成的创世块,从而成为subnet1的子网节点;类似地,nodeB会触发节点设备2生成nodeB1、nodeC会触发节点设备3生成nodeC1、nodeD会触发节点设备4生成nodeD1。以及,nodeE会发现data 字段包含的身份信息与自身均不匹配,假定nodeE部署在节点设备5上,那么该节点设备5 不会根据data字段中的配置信息生成创世块,也不会生成subnet1中的区块链节点。
如前所述,第一区块链节点与第二区块链节点并不一定采用相同的身份信息。因此,在上述实施例中,data字段中可以包含预先为nodeA1~nodeD1生成的身份信息,且区别于 nodeA~nodeD的身份信息。仍以nodeA和节点设备1为例:节点设备1如果在data字段中发现了nodeA1的身份信息,可以生成创世块、部署nodeA1,并由nodeA1加载该创世块;或者,nodeA如果在data字段中发现了nodeA1的身份信息,那么nodeA会触发节点设备1生成创世块、部署nodeA1,并由nodeA1加载该创世块。其他区块链节点或节点设备的处理方式类似,此处不再一一赘述。
除了配置信息之外,合约的执行结果可以包括创世块。换言之,除了可以在data字段中包含配置信息,还可以直接在执行合约调用的过程中生成包含配置信息的创世块,从而将创世块包含于data字段中,那么对于上述的nodeA~nodeD而言,相应的节点设备1~4可以通过消息机制直接从data字段获得创世块,而无需自行生成,可以提升对nodeA1~nodeD1的部署效率。
在本说明书中,组建区块链子网的交易可以并非是调用智能合约的交易,使得不支持智能合约的区块链网络也可以实现本说明书的技术方案,从而在区块链主网的基础上快捷地创建出区块链子网。例如,可以预先定义一组网交易类型标识,当交易包含该组网交易类型标识时,就表明该交易用于组建新的区块链子网,即该交易为组建区块链子网的交易。区块链平台代码可以包含相关的用于组建区块链子网的处理逻辑,使得运行该区块链平台代码的第一区块链节点在执行交易时,如果发现该交易中包含上述的组网交易类型标识,且第一区块链节点对应的节点成员的身份信息被包含于该交易中的配置信息中,可以基于上述处理逻辑来触发部署第一区块链节点的节点设备生成包含该配置信息的创世块并启动第二区块链节点,由第二区块链节点加载该创世块,以形成为区块链子网中的区块链节点。
节点设备通过在进程中创建一个运行区块链平台代码的实例,实现在该节点设备上部署一区块链节点。对于第一区块链节点而言,由节点设备在上述进程中创建运行区块链平台代码的第一实例而形成。类似地,对于第二区块链节点而言,由节点设备在上述进程中创建运行区块链平台代码的第二实例而形成。例如,节点设备可以首先在进程中创建第一实例,以形成区块链主网中的第一区块链节点;而当该节点设备对应的节点成员希望参与组建区块链子网时,可以在上述进程中创建第二实例,该第二实例区别于上述的第一实例,并由该第二实例形成区块链子网中的第二区块链节点。当第一实例与第二实例位于同一进程时,由于不涉及跨进程交互,可以降低对第二区块链节点的部署难度、提高部署效率。当然,第二实例也可能与第一实例分别处于节点设备上的不同进程中,本说明书并不对此进行限制。例如,节点设备可以在第一进程中创建第一实例,以形成区块链主网中的第一区块链节点;而当该节点设备对应的节点成员希望参与组建区块链子网时,可以启动区别于第一进程的第二进程,并在该第二进程中创建第二实例,该第二实例区别于上述的第一实例,进而由该第二实例形成区块链子网中的第二区块链节点。
通过上述方式,可以在区块链主网上创建出区块链子网。以图4为例,subnet0原本包含nodeA~nodeE,而在subnet0的基础上可以组建出subnet1,该subnet1包含nodeA1~nodeD1,且nodeA与nodeA1、nodeB与nodeB1、nodeC与nodeC1、nodeD与nodeD1分别部署在同一节点设备上。类似地,还可以在subnet0上组建出subnet2或更多的区块链子网,其中subnet2 包含nodeA2、nodeB2、nodeC2和nodeE2,且nodeA与nodeA1、nodeA2,nodeB与nodeB1、 nodeB2,nodeC与nodeC1,nodeD与nodeD1,nodeE与nodeE2分别部署在同一节点设备上。以及,可以将subnet1、subnet2等作为新的区块链主网,并在此基础上进一步组建出区块链子网,其过程与subnet1或subnet2的组建相似,此处不再赘述。
通过上述方式来组建区块链子网,可以在区块链主网与区块链子网之间形成管理关系,即区块链主网可以对区块链子网进行管理,在区块链主网的基础上组建区块链子网时,会使得该区块链子网与区块链主网之间存在逻辑上的层次关系,从而构成多层区块链系统,本说明书将这种机制称之为动态组网机制。
针对通过动态组网机制所形成的多层区块链系统,区块链主网可以为底层区块链网络,底层区块链网络并非在其他区块链网络的基础上基于动态组网机制组建的区块链子网,即底层区块链网络不存在对应的主网、不受其他区块链网络的管理,比如图4中的subnet0可以认为属于底层区块链网络类型的区块链主网;或者,区块链主网也可以通过动态组网机制成为其他区块链网络的子网,比如可以在图4中subnet1(或subnet2)的基础上进一步通过动态组网机制组建另一区块链子网,此时可以认为subnet1(或subnet2)为该区块链子网对应的区块链主网,而这并不影响该subnet1(或subnet2)同时属于subnet0的区块链子网。可见,区块链主网与区块链子网实际上是相对概念,同一区块链网络在一些情况下可以为区块链主网、另一些情况下可以为区块链子网。
基于可通过上述动态组网机制形成多层区块链系统,可构建不同的区块链子网来负责完成不同的业务,即同一区块链主网管理的不同区块链子网分别负责完成不同的业务。而为了保证各个区块链子网稳定运行以完成自身负责的业务,需要对各个区块链子网进行压力测试。那么,相比于单层区块链系统,在对多层区块链系统中的区块链子网进行压力测试时,则需要压测设备能够感知到区块链子网的存在,即在待压测区块链网络为区块链子网的情况下,能够准确地将压测交易提交至指定的区块链子网,同时保证压测的效率。
本说明书提供一种区块链子网的压力测试系统,包括:
压测设备,获取针对待压测区块链子网的压测交易配置信息,所述压测交易配置信息包括所述待压测区块链子网的网络标识;以及,根据所述压测交易配置信息生成包含所述网络标识的压测交易,并向管理所述待压测区块链子网的区块链主网提交所述压测交易;
所述区块链主网,所述区块链主网中的主网节点响应于接收到的所述压测交易,确定出自身管理的对应于所述网络标识的区块链子网,并将所述压测交易分配至确定出的区块链子网;
所述待压测区块链子网,所述待压测区块链网络中的区块链节点执行所述区块链主网分配的压测交易并得到相应的交易回执,所述交易回执用于供所述压测设备分析确定针对所述待压测区块链子网的压测结果。
下面结合图5-6对本说明书提供的区块链子网的压力测试方案进行详细说明。
请参见图5,图5是一示例性实施例提供的一种区块链子网的压力测试方法的流程图。
如图5所示,该方法应用于管理区块链子网的区块链主网中的主网节点,可以包括以下步骤:
步骤502,接收压测设备提交的包含待压测区块链子网的网络标识的压测交易,所述压测交易由所述压测设备根据针对待压测区块链子网的压测交易配置信息生成,所述压测交易配置信息包括所述网络标识。
可由区块链系统的运维人员向压测设备输入待压测区块链子网的压测交易配置信息,该压测交易配置信息包括待压测区块链子网的网络标识。当然,压测交易配置信息还可包括压测项目的配置参数等信息,其具体内容可根据压测的需求来灵活设置,本说明书并不对此进行限制。
压测设备在获取到压测交易配置信息之后,可根据压测交易配置信息生成包含网络标识的压测交易,并向管理待压测区块链子网的区块链主网提交压测交易。通过在压测交易配置信息中添加待压测区块链子网的网络标识,压测设备能够感知到相应区块链子网的存在,即在待压测区块链网络为区块链子网的情况下,能够准确地将压测交易提交至指定的区块链子网。
除此之外,考虑到运维人员对子网压测时可能会有自定义选项(即压测项目不同),比如某个子网只压测某一类区块链交易,其他子网压测其他类型的交易等,还可进一步在配置信息中添加压测交易的交易类型信息,以提高压测的粒度控制。比如,压测项目(即交易类型)可以包括创建账户(CreateAccount)、转账(TransferBalance)、调用合约(CallContract) 等等。换言之,压测交易配置信息还包括压测交易的交易类型信息(包括创建区块链账户的交易、转账交易、调用智能合约的交易),那么压测设备在根据压测交易配置信息生成压测交易时,可根据压测交易配置信息生成交易类型信息相匹配且包含网络标识的压测交易。
举例而言,压测交易配置信息的形式如下:
在上述举例中,压测的项目为CreateAccount,支持区块链子网1、区块链子网2的压力测试。
步骤504,响应于接收到的所述压测交易,确定出自身管理的对应于所述网络标识的区块链子网,并将所述压测交易分配至确定出的区块链子网,以由确定出的区块链子网中的区块链节点执行所述区块链主网分配的压测交易并得到相应的交易回执,所述交易回执用于供所述压测设备分析确定针对所述待压测区块链子网的压测结果。
如前介绍,在区块链主网管理多个区块链子网的应用场景下,区块链主网与区块链子网之间存在层级关系:区块链主网维护有其管理的各个区块链子网中各子网节点的节点身份信息(以下简称为子网节点信息),那么区块链主网中的主网节点在确定出自身管理的对应于网络标识的区块链子网时,可获取自身维护的子网节点信息,然后根据该子网节点信息确定出网络标识对应的区块链子网中的目标子网节点,并将压测交易转发至目标子网节点。通过利用层级关系的特点,可避免需要压测设备来向待压测区块链子网中的每个子网节点发送压测交易,从而提高对区块链子网进行压测的效率。
具体而言,区块链主网上部署有子网管理合约,子网管理合约用于维护区块链主网管理的各个区块链子网的子网节点信息,那么主网节点在获取自身维护的子网节点信息时,可读取子网管理合约维护的子网节点信息。例如,子网管理合约为上述内容中介绍的Subnet系统合约,维护有各个区块链子网中子网节点的节点ID、节点公钥、通讯地址等,比如被维护在其合约状态中。
如前介绍,在动态组网机制下的多层区块链系统中,区块链主网中各主网节点分别所处的节点设备还用于部署区块链子网的子网节点,也即主网节点所处的节点设备还部署有待压测区块链子网的子网节点。在该场景下,压测设备可接入区块链主网中的任一主网节点(仅需与一个主网节点对接,而无需对接所有的主网节点),从而向该主网节点发送压测交易。
在一种情况下,可由与压测设备接入的主网节点向区块链主网中的其他主网节点发送压测交易,基于主网节点所处的节点设备还部署有待压测区块链子网的子网节点这一特点,然后再由各个主网节点向待压测区块链子网中的子网节点下发压测交易。换言之,在该情况下,上述任一主网节点以自身为源节点、区块链主网中的其他主网节点为目的节点,由该源节点向相应的目的节点转发压测交易,以由各个主网节点分别将压测交易下发至各自所处节点设备部署的归属于待压测区块链子网的子网节点。
再另一种情况下,可先基于主网节点所处的节点设备还部署有待压测区块链子网的子网节点这一特点,由与压测设备接入的主网节点将压测交易下发至自身所处节点设备部署的归属于待压测区块链子网的子网节点,然后再由该子网节点向待压测区块链子网中的其他子网节点发送压测交易,从而使得待压测区块链子网中的所有子网节点可获取到压测交易。换言之,可由上述任一主网节点将压测交易下发至自身所处节点设备部署的归属于待压测区块链子网的子网节点,以由该子网节点以自身为源节点、待压测区块链子网中的其他子网节点为目的节点,由该源节点向相应的目的节点转发压测交易。
进一步的,在基于上述动态组网机制组建区块链子网的情况下,还存在一个特点:主网节点和子网节点共享用于处理区块链交易的组件。那么,基于同一节点设备上运行有由主网节点和子网节点共享且用于处理区块链交易的组件,该节点设备上的主网节点将压测交易下发至该节点设备部署的归属于待压测区块链子网的子网节点时,可将压测交易提交至自身所处节点设备上运行的用于处理区块链交易的组件,从而由该组件来执行压测交易,生成相应的交易回执(receipt)以供分析压测结果。
针对上述两种情况下转发压测交易的方式,均是源节点和目的节点属于同一区块链网络内。对此,本说明书提供转发压测交易的方案以提高转发压测交易的效率,以进一步提高压测效率。
源节点维护有区块链主网中各主网节点分别所处的节点设备之间的网络拓扑结构以及网络拓扑结构对应的网络延迟信息,且部署有区块链子网中的子网节点的节点设备上还部署有主网节点;源节点向目的节点发送压测交易,包括:基于网络延迟信息从网络拓扑结构中确定源节点所处第一节点设备与目的节点所处目标节点设备之间总延迟最小的转发路径,将压测交易根据确定出的转发路径转发至目的节点。
在本说明书实施例中,第一区块链网络(源节点和目的节点所在区块链网络,比如在上述第一种情况下为区块链主网,在上述第二种情况下为待压测区块链子网)中的任一区块链节点均分别部署于不同的硬件实体中,该硬件实体被称为节点设备,而区块链节点则是指运行在节点设备中的软件进程,正如图4所示的网络架构,任一区块链网络中不同的区块链节点部署于不同的节点设备上,而各区块链节点之间的网络链路其实质上是对应所处的节点设备之间的网络链路。因此,在第一区块链网络为区块链主网subnet0的情况下,对于源节点例如nodeC而言,假设其需要将消息发送至subnet0中的其他主网节点例如nodeE,只需要将该消息从nodeC所处的节点设备3发送至nodeE所处的节点设备5即可完成对应的消息传输。
源节点需要将压测交易转发至目的节点,需要获知从源节点所处的第一节点设备到目的节点所处的目标节点设备的路由信息。在本说明书实施例中,源节点通过将获取到的第一节点设备与所处目标节点设备之间总延迟最小的转发路径作为路由信息,将压测交易转发至该转发路径中作为下一跳的节点设备,并逐步转发至目标节点设备。
由于第一节点设备部署有主网节点,因此第一节点设备可以通过查询区块链主网中各主网节点的网络连接关系生成部署有主网节点的各节点设备之间的网络拓扑结构,并且由于区块链主网管理有各区块链子网的子网信息,这其中就包括任一区块链子网中各节点成员的身份信息、所在节点设备等,因此,第一节点设备所维护的网络拓扑结构中,除了包含有各节点设备之间的网络连接关系,还包含有各节点设备上所部署的子网节点的情况,即网络拓扑结构包含以区块链主网与各区块链子网所构成的区块链系统的整体网络结构。
本说明书实施例所涉及的网络拓扑结构是指区块链主网中各主网节点所处节点设备之间的连接关系,该网络拓扑结构是基于区块链主网中各主网节点之间的网络连接关系而生成,可以通过图形形式所表示。图6是一示例性实施例提供的一种网络拓扑结构的示意图,如图 6所示,该网络拓扑结构用于表征各节点设备上的区块链节点部署情况,以及各节点设备之间的网络链路情况。因此,可以将图6所示的各节点设备之间的连接关系视为一种用于表示上述网络拓扑结构的表现形式,当然,也可以通过矩阵或表格的形式来表示上述网络拓扑结构,这里不做任何限制。
本说明书实施例所涉及的网络拓扑结构对应的网络延迟信息,包括:网络拓扑结构中的网络链路的链路延迟,和/或网络拓扑结构中的节点设备在转发消息时的节点延迟。如图6所示,网络拓扑结构中包含的各网络链路的链路延迟以及各节点设备的节点延迟。其中,网络链路的链路延迟是指消息在该网络链路上转发所需的时延信息,例如图6中节点设备1与节点设备2之间的网络链路的链路延迟为100;节点设备的节点延迟是指消息在进入该节点设备到从该节点设备转发出去所需的时延信息,具体包含节点设备对消息进行解析、查路由表和转发的过程,例如图6中节点设备1的节点延迟为3,节点设备4的转发延迟为5。在本说明书实施例中,链路延迟和节点延迟对应的数值可以代表具体的时延时长,也可以代表与具体时延时长具有相关性的其他时延指标,但链路延迟和节点延迟之间需要统一单位。例如节点设备1与节点设备2之间的网络链路的链路延迟100可以理解为100毫秒(ms),即表征消息通过该网络链路需要经过100ms,那么节点设备1的节点延迟3就应理解为3ms。
本说明书实施例所涉及的源节点所处第一节点设备与目的节点所处目标节点设备之间总延迟最小的转发路径是通过区块链主网中各主网节点分别所处的节点设备之间的网络拓扑结构以及网络拓扑结构对应的网络延迟信息所确定。具体而言,源节点在需要向目的节点发送压测交易时,可以通过本地维护的网络拓扑结构以及网络延迟信息确定出第一节点设备与目标节点设备之间总延迟最小的转发路径。
需要说明的是,本说明书实施例中,虽然源节点维护有网络延迟信息,但实际上网络延迟信息具体维护在源节点所处的第一节点设备中,并由第一节点设备进行更新和维护,后文将详细介绍第一节点设备对自身维护的网络延迟信息的确定和更新的方法,而源节点仅仅只是从自身所处的第一节点设备读取得到网络延迟信息,同理,其他区块链节点所维护的网络延迟信息也都是从其他区块链节点所处的节点设备上读取得到的。
由于源节点维护的网络拓扑结构包含各节点设备之间的网路链路连接关系,因此源节点可以在确定网络拓扑结构中自身所处的第一节点设备与目标节点设备的相对网络位置关系并确保可达性的情况下,生成第一节点设备与目标节点设备之间的转发路径。以图6为例,假设nodeC为源节点,nodeE为目的节点,现在nodeC检测到自身属于落后节点,并已经等待了一个动态请求周期,现在nodeC需要向nodeE发送压测交易,nodeC首先需要基于自身维护的网络拓扑结构确定nodeC所处节点设备3(第一节点设备)至nodeE所处的节点设备5 (目标节点设备)之间的转发路径,显然根据网络拓扑结构可以发现从节点设备3与节点设备5之间并不存在直接相连的网络链路,并且在不考虑环路和原路返回的转发路径中,节点设备3与节点设备5之间的转发路径包括两条:其一,是节点设备3→节点设备1→节点设备 2→节点设备5;其二,是节点设备3→节点设备1→节点设备4→节点设备2→节点设备5。 nodeC在确定可选的两条转发路径后,进一步基于网络延迟信息从可选的两条转发路径中确定出节点设备3与节点设备5之间总延迟最小的转发路径,其中,转发路径对应的总延迟为该转发路径上从第一节点设备到目标节点设备途经的至少一段网络链路的链路延迟和/或途经的至少一个节点设备(不包括第一节点设备和目标节点设备)的节点延迟之和。因此,源节点在确定转发路径的总延迟时,可以仅计算从第一节点设备到目标节点设备途经的所有网络链路的链路延迟,也可以仅计算从第一节点设备到目标节点设备途经的所有节点设备的节点延迟,还可以同时考虑从第一节点设备到目标节点设备途经的所有网络链路的链路延迟以及途径的所有节点设备的节点延迟。例如,以图6为例,由于节点设备3→节点设备1→节点设备2→节点设备5这条转发路径途径的所有网络链路和所有节点设备的总延迟为166,而节点设备3→节点设备1→节点设备4→节点设备2→节点设备5这条转发链路途径的所有网络链路和所有节点设备的总延迟为131,因此nodeC最终确定的转发路径为节点设备3→节点设备1→节点设备4→节点设备2→节点设备5,从而nodeC可以进一步确定该转发路径中作为下一跳的节点设备1,于是将压测交易转发至节点设备1。
节点设备1在接收到压测交易后,可以由节点设备1上部署的nodeA所维护的网络拓扑结构以及网络延迟信息再次确定出节点设备1至节点设备5之间总时延最短的转发路径,并由新确定的转发路径对压测交易进行二次转发,后续接收到压测交易的节点设备也按照上述相同的流程,先确定新的转发路径然后再按照新确定的转发路径对压测交易进行转发;或者, nodeC在将压测交易转发至节点设备1时,还可以在压测交易中携带nodeC所确定的转发路径,那么节点设备1在接收到压测交易后,可以基于压测交易中携带的转发路径继续查找到下一跳的节点设备为节点设备4,并将压测交易转发至节点设备4,节点设备4以及后续的节点设备按照相同的流程继续转发压测交易,直至压测交易被转发至节点设备5。节点设备5 在接收到压测交易后,会进一步将压测交易转发至本地部署的nodeE,从而完成向目的节点发送压测交易的全部流程。
在本说明书实施例中,网络延迟信息包括网络拓扑结构中的近端网络链路的链路延迟和/ 或远端网络链路的链路延迟,近端网络链路为第一节点设备与其邻居节点设备之间的网络链路,远端网络链路为网络拓扑结构中除近端网络链路之外的网络链路。第一节点设备的邻居节点设备指的是与第一节点设备通过一段网络链路直接相连的节点设备,以图6为例,节点设备1对应的邻居节点设备包括节点设备2、节点设备3和节点设备4,节点设备4的邻居节点设备包括节点设备1和节点设备2。
对于第一节点设备而言,其维护有两种不同类型的网络链路,包括近端网络链路和远端网络链路。其中,近端网络链路是指与第一节点设备直接相连的网络链路,也即第一节点设备与其邻居节点设备之间的网络链路;远端网络链路,是指不与第一节点设备直接相连的网络链路,也即网络拓扑结构中除第一节点设备对应的近端网络链路之外的网络链路。依然以图6为例,节点设备1对应的近端网络链路包括其分别与节点设备3、节点设备4与节点设备5之间的网络链路,节点设备1对应的远端网络链路则包括节点设备1与节点设备2之间、节点设备4与节点设备2之间以及节点设备2与节点设备5之间的网络链路。
第一节点设备根据不同类型的网络链路,按照不同的策略获取链路延迟。第一节点设备根据本端链路延迟和/或对端链路延迟确定近端网络链路的链路延迟;其中,本端链路延迟由第一节点设备通过请求应答机制对近端网络链路进行检测得到,对端链路延迟由第一节点设备的邻居节点设备通过请求应答机制对近端网络链路进行检测得到;和/或,接收第一节点设备的邻居节点设备发送的远端网络链路的链路延迟,远端网络链路的链路延迟由远端网络链路的至少一端节点设备通过请求应答机制对远端网络链路进行检测得到的链路延迟所确定。
本说明书实施例涉及的请求应答机制涉及请求方与应答方之间的交互,并且认为请求应答机制的发起方即为上述的请求方,请求应答机制具体通过以下方式实现:请求方向应答方发送一个携带有时刻t1的请求消息,t1即请求方记录的发送该请求消息时的请求方本地时刻。应答方在接收到该请求消息后,会记录下其接收到该请求消息时的应答方本地时刻t2,然后将响应于该请求消息生成的应答消息返回至请求方,同时在应答消息中携带时刻t2和时刻t3,其中t3为应答方记录的返回该应答消息时的应答方本地时刻。最后请求方在获取到该应答消息后,记录下接受到该应答消息时的请求方本地时刻t4,接着,从获取的应答消息中提取出t2和t3,然后计算T0=[(t4-t1)-(t3-t2)]/2,将其确定为请求方与应答方之间的网络链路的链路延迟T0。为了避免中转设备的转发延迟的干扰,请求方与应答方之间不存在其他中转设备。请求应答机制中所涉及的请求消息和应答消息可以为专用于计算链路延迟的专用消息,也可以为其他普通的正常业务请求,或者网络中的心跳消息,由于在计算链路延迟时,应答方的本地处理时间t3-t2是被考虑在内的,因此无论何种类型的请求消息和应答消息都可以适用于上述请求应答机制来使得请求方测得相关的链路延迟。
在本说明实施例中,第一节点设备在确定近端网络链路的链路延迟时,即可通过上述请求应答机制来确定。例如,第一节点设备可以向其邻居节点设备主动发起请求应答机制,从而确定出第一节点设备与该邻居节点设备之间的近端网络链路的链路延迟,这种由第一节点设备通过请求应答机制而测得的近端网络的链路延迟称为本端链路延迟。另一方面,由于对于任何一个网络链路而言,其包含的两端设备都可以通过发起请求应答机制来测得该网络链路的链路延迟,因此第一节点设备也可以通过接收其邻居节点设备进行请求应答机制所测得的针对第一节点设备与该邻居节点设备之间的近端网络链路的链路延迟,直接获取该近端网络链路的链路延迟,这种由邻居节点设备测得并提供至第一节点设备的近端网络链路的链路延迟称为对端链路延迟。综上,第一节点设备可以通过两种手段获取某一近端网络链路的链路延迟,因此也可以在这两种手段之间进行选择或综合考虑,例如,由第一节点设备所最终确定并记录在网络延迟信息中的近端网络链路的链路延迟可以包括:本端链路延迟、对端链路延迟、或者本端链路延迟与对端链路延迟的加权平均值。其中,在近端网络链路的链路延迟被确定为本端链路延迟与对端链路延迟的加权平均值的情况下,可以使第一节点设备所维护的网络延迟信息更加鲁棒。
以图6为例,假设节点设备1通过发起请求应答机制所测得的与节点设备2之间的近端网络链路的本端链路延迟为102,而节点设备2通过发起请求应答机制所测得的该近端网络链路的对端链路延迟为98,那么,对于节点设备1而言,其可以直接将自身测得的本端链路延迟102确定为与节点设备2之间的近端网络链路的链路延迟,或者将从节点设备2处接收到的由节点设备2测得的对端链路延迟98确定为该近端网络链路的链路延迟,还可以按照 1:1的权重比例将本端链路延迟与对端链路延迟的平均值100确定为该近端网络链路的链路延迟,并将其记录在节点设备1本地维护的网络延迟信息中。
由于第一节点设备仅能直接测得与其邻居节点设备之间的近端网络链路的链路延迟,而无法测得与远端网络链路的链路延迟,因此需要通过接收邻居节点设备发送或转发的包含远端网络链路的链路延迟的链路延迟分享消息,从而直接获取远端网络链路的链路延迟,并将其记录至网络延迟信息中对应远端网络链路处。在本说明书实施例中,第一节点设备所接收第一节点设备的邻居节点设备发送的远端网络链路的链路延迟,远端网络链路的链路延迟由远端网络链路的至少一端节点设备通过请求应答机制对远端网络链路进行检测得到的链路延迟所确定,例如,远端网络链路的链路延迟可以包括:远端网络链路的任一端节点设备检测得到的链路延迟,或者远端网络链路两端的节点设备分别检测得到的链路延迟的加权平均值。其中,任一端节点设备检测得到的链路延迟均是针对该远端网络链路的链路延迟,在远端网络链路的链路延迟为远端网络链路两端的节点设备分别检测得到的链路延迟的加权平均值的情况下,可以使第一节点设备所维护的网络延迟信息更加鲁棒。
如图6所示,假设第一节点设备为节点设备1,那么对于节点设备1而言,节点设备2与节点设备5之间的远端网络链路的链路延迟就无法通过请求应答机制直接测得,而是需要由节点设备2和/或节点设备5通过发起请求应答机制进行测算和确定,并由节点设备2将最终确定得到的远端网络链路的链路延迟封装至链路延迟分享消息发送或转发至节点设备1,节点设备1基于获取到的该远端网络链路的链路延迟更新自身维护的网络延迟信息。
第一节点设备可以接收来自邻居节点设备测得的远端链路延迟,在一实施例中,还包括:接收第一节点设备的邻居节点设备在请求应答机制中发送的应答消息,应答消息中包含对端链路延迟和/或远端网络链路的链路延迟。在本实施例中,第一节点设备所接收到的对端链路延迟和/或远端网络链路的链路延迟可以直接携带在第一节点设备向邻居节点设备发起请求应答机制时所涉及的应答消息中,因此第一节点设备只需要通过发起一次请求应答机制就可以在获得本端链路延迟的情况下,同时获得对端链路延迟和/或远端网络链路的链路延迟,从而降低网络内部交互的复杂性。在另一实施例中,对端链路延迟和/或远端网络链路的链路延迟也可以携带在邻居节点设备发送或转发至第一节点设备的其他消息中。
如前,网络延迟信息包括:网络拓扑结构中的网络链路的链路延迟,和/或网络拓扑结构中的节点设备在转发消息时的节点延迟。可选的,还包括:获取网络拓扑结构中的任一节点设备的至少一个邻居节点设备对该任一节点设备进行检测得到的节点延迟,并根据获取的节点延迟确定任一节点设备的节点延迟;和/或,接收其他节点设备共享的任一节点设备的节点延迟。在本说明书实施例中,任一节点设备的节点延迟需要通过该任一节点设备对应的任一邻居节点设备所测得,具体而言,是由任一节点设备对应的任一邻居节点通过回流消息机制测得。
本说明书实施例涉及的回流消息机制涉及请求方与应答方之间的交互,并且认为回流消息机制的发起方即为上述的请求方,回流消息机制具体通过以下方式实现:请求方首先选定一个应答方并发起回流消息机制,首先请求方需要构造一个目的地址指向请求方自身的回流消息,并根据与应答方直接相连的网络链路将该回流消息发送至应答方,同时记录下发送该回流消息时的请求方本地时刻t5。应答方在接收到该回流消息后,通过查找路由表得知该回流消息的目的地址为请求方,因此会将该回流消息原路返回至请求方,请求方在接收到该回流消息后,记录下请求方本地时刻t6,然后计算T1=t6-t5,得到该回流消息从由请求方出发到返回请求方的整个周期对应的转发延迟T1,然后,请求方再从其所维护的网络延迟信息中查找出请求方与应答方之间网络链路的链路延迟T2,然后计算T3=T1-2*T2,从而最终确定应答方对应的节点延迟为T3。回流消息机制要求请求方与应答方之间不存在其他中转设备,这是因为回流消息机制所测量的对象即应答方的转发消息的节点延迟,因此增加其他中转设备将导致无法达到测量预期。
在本说明书实施例中,任一节点设备的任一邻居节点设备对该任一节点设备进行检测,包括:任一邻居节点设备向任一节点设备发送回流消息,通过回流消息的转发延迟、任一邻居节点设备与任一节点设备之间网络链路的链路延迟,确定任一节点设备的节点延迟,回流消息为任一邻居节点设备向任一节点设备发送的目的地址指向任一邻居节点设备的消息。如前,对于任一节点设备的节点延迟,该任一节点设备的任一邻居节点设备都可以发起回流消息机制以测得。
对于第一节点设备的某一邻居节点设备的节点延迟,第一节点设备可以通过发起回流消息机制直接检测得到,当然,由于与该邻居节点设备直接相连的节点设备可能不仅包括第一节点设备,因此第一节点设备还可接收这些节点设备通过回流消息机制所测得的该邻居节点设备对应的节点延迟,并作为参考以最终确定该邻居节点设备对应的节点延迟。以图6为例,假设节点设备1通过向节点设备4发起回流消息机制从而检测得到的节点设备4的节点延迟为3,同时还接收到节点设备2通过向节点设备4发起回流消息机制从而检测得到的节点设备4的节点延迟为7,那么对于节点设备1而言,其可以直接将自身测得的节点延迟3确定为与节点设备4的节点延迟,并将其记录在节点设备1本地维护的网络延迟信息中,或者将从节点设备2处接收到的由节点设备2测得的节点延迟7确定为节点设备4的节点延迟,并记录在节点设备1本地维护的网络延迟信息中,还可以按照1:1的权重比例将自身测得的节点延迟3与节点设备2测得的节点延迟7的平均值5确定为节点设备4的节点延迟,并将其记录在节点设备1本地维护的网络延迟信息中。
对于第一节点设备,其无法通过回流消息机制检测得到除其邻居节点设备以外的节点设备的节点延迟,因此,第一节点设备还可以通过其他方式获取任一节点设备的节点延迟,例如,第一节点设备可以直接接收其他节点设备共享的任一节点设备的节点延迟。以图6为例,节点设备1无法直接检测得到节点设备5的节点延迟,但是节点设备2可以测得,因此节点设备1可以直接接收节点设备2发送给节点设备1的携带有节点设备5节点延迟的节点延迟分享消息,从而获取并确定节点设备5的节点延迟为2,并最终将其记录在本地的网络延迟信息中。当然,节点设备1也不一定要从节点设备2处获取节点设备5的节点延迟,事实上,通过前述的节点延迟的获取方式,节点设备4维护的网络延迟信息中其实也包含节点设备5 的节点延迟,因此节点设备1也可以接收节点设备4发送的携带有节点设备5节点延迟的节点延迟分享消息,以获取节点设备5的节点延迟。
第一节点设备所维护的网络延迟信息中任一节点设备的节点延迟,包括:任一节点设备的任一邻居节点设备对该任一节点设备进行检测得到的节点延迟,或者任一节点设备的至少一个邻居节点设备对该任一节点设备进行检测得到的节点延迟的加权平均值。如前,对于任一节点设备的节点延迟,该任一节点设备的任一邻居节点都可以检测得到,因此第一节点设备在最终确定该任一节点设备的节点延迟时,可以直接将该任一节点设备的任一邻居节点检测得到的针对该任一节点设备的节点延迟记录在本地维护的网络延迟信息中,也可以将该任一节点设备的一个或多个邻居节点设备对该任一节点设备进行检测得到的节点延迟的加权平均值确定为该任一节点设备的节点延迟,并将其记录在本地维护的网络延迟信息中。在任一节点设备的节点延迟被最终确定为任一节点设备的至少一个邻居节点设备对该任一节点设备进行检测得到的节点延迟的加权平均值的情况下,可以使第一节点设备所维护的网络延迟信息更加鲁棒。
以图6为例,节点设备1可以分别接收节点设备3检测得到的节点设备1的节点延迟1、节点设备2检测得到的节点设备1的节点延迟3和节点设备4检测得到的节点设备1的节点延迟5,此时节点设备1可以任选其中一个节点设备所测得的节点设备1的节点延迟作为本地维护的网络延迟信息中节点设备1的节点延迟,也可以按照3:1的权重比例将节点设备3测得的节点延迟和节点设备2测得的节点延迟的加权平均值1.5确定为网络延迟信息中节点设备1的节点延迟,还可以按照1:1:1的权重比例将上述三个节点设备所检测得到的节点设备1的节点延迟的加权平均值3确定为网络延迟信息中节点设备1的节点延迟。
与上述方法实施例相对应,本说明书还提供了相应的装置实施例,其具体实施过程可参考上述方法实施例,在此不再赘述。
图7是一示例性实施例提供的一种设备的示意结构图。请参考图7,在硬件层面,该设备包括处理器702、内部总线704、网络接口706、内存708以及非易失性存储器710,当然还可能包括其他业务所需要的硬件。本说明书一个或多个实施例可以基于软件方式来实现,比如由处理器702从非易失性存储器710中读取对应的计算机程序到内存708中然后运行。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
请参考图8,区块链子网的压力测试装置可以应用于如图7所示的设备中,以实现本说明书的技术方案。其中,该装置应用于管理区块链子网的区块链主网中的主网节点,可以包括:
接收单元81,接收压测设备提交的包含待压测区块链子网的网络标识的压测交易,所述压测交易由所述压测设备根据针对待压测区块链子网的压测交易配置信息生成,所述压测交易配置信息包括所述网络标识;
分配单元82,响应于接收到的所述压测交易,确定出自身管理的对应于所述网络标识的区块链子网,并将所述压测交易分配至确定出的区块链子网,以由确定出的区块链子网中的区块链节点执行所述区块链主网分配的压测交易并得到相应的交易回执,所述交易回执用于供所述压测设备分析确定针对所述待压测区块链子网的压测结果。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
在一个典型的配置中,计算机包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。
Claims (33)
1.一种区块链子网的压力测试系统,包括:
压测设备,获取针对待压测区块链子网的压测交易配置信息,所述压测交易配置信息包括所述待压测区块链子网的网络标识;以及,根据所述压测交易配置信息生成包含所述网络标识的压测交易,并向管理所述待压测区块链子网的区块链主网提交所述压测交易;
所述区块链主网,所述区块链主网中的主网节点响应于接收到的所述压测交易,确定出自身管理的对应于所述网络标识的区块链子网,并将所述压测交易分配至确定出的区块链子网;
所述待压测区块链子网,所述待压测区块链网络中的区块链节点执行所述区块链主网分配的压测交易并得到相应的交易回执,所述交易回执用于供所述压测设备分析确定针对所述待压测区块链子网的压测结果。
2.根据权利要求1所述的系统,所述压测交易配置信息还包括所述压测交易的交易类型信息;所述根据所述压测交易配置信息生成包含所述网络标识的压测交易,包括:
所述压测设备根据所述配置信息生成与所述交易类型信息相匹配且包含所述网络标识的压测交易。
3.根据权利要求1所述的系统,所述区块链主网维护有各个区块链子网的子网节点信息;所述区块链主网中的主网节点确定出自身管理的对应于所述网络标识的区块链子网,包括:
所述主网节点获取自身维护的子网节点信息;
所述主网节点根据所述子网节点信息确定出所述网络标识对应的区块链子网中的目标子网节点,并将所述压测交易转发至所述目标子网节点。
4.根据权利要求3所述的系统,所述区块链主网上部署有子网管理合约,所述子网管理合约用于维护所述区块链主网管理的各个区块链子网的子网节点信息;所述主网节点获取自身维护的子网节点信息,包括:
所述主网节点读取所述子网管理合约维护的子网节点信息。
5.根据权利要求1所述的系统,所述区块链主网中各主网节点分别所处的节点设备还用于部署所述待压测区块链子网的子网节点;
向管理所述待压测区块链子网的区块链主网提交所述压测交易,包括:所述压测设备向任一主网节点发送所述压测交易;
所述区块链主网中的主网节点将所述压测交易分配至确定出的区块链子网,包括:所述任一主网节点以自身为源节点、所述区块链主网中的其他主网节点为目的节点,由该源节点向相应的目的节点转发所述压测交易,以由各个主网节点分别将所述压测交易下发至各自所处节点设备部署的归属于所述待压测区块链子网的子网节点;或者,所述任一主网节点将所述压测交易下发至自身所处节点设备部署的归属于所述待压测区块链子网的子网节点,以由该子网节点以自身为源节点、所述待压测区块链子网中的其他子网节点为目的节点,由该源节点向相应的目的节点转发所述压测交易。
6.根据权利要求5所述的系统,同一节点设备上运行有由主网节点和子网节点共享且用于处理区块链交易的组件;该节点设备上的主网节点将所述压测交易下发至该节点设备部署的归属于所述待压测区块链子网的子网节点,包括:
将所述压测交易提交至自身所处节点设备上运行的所述用于处理区块链交易的组件。
7.根据权利要求5所述的系统,所述源节点维护有自身所属区块链网络中各区块链节点分别所处的节点设备之间的网络拓扑结构以及所述网络拓扑结构对应的网络延迟信息;所述源节点向所述目的节点转发所述压测交易,包括:
基于所述网络延迟信息从所述网络拓扑结构中确定所述源节点所处第一节点设备与所述目的节点所处目标节点设备之间总延迟最小的转发路径,将所述压测交易根据确定出的转发路径转发至所述目的节点。
8.根据权利要求7所述的系统,所述网络延迟信息包括所述网络拓扑结构中的近端网络链路的链路延迟和/或远端网络链路的链路延迟,所述近端网络链路为第一节点设备与其邻居节点设备之间的网络链路,所述远端网络链路为所述网络拓扑结构中除所述近端网络链路之外的网络链路。
9.根据权利要求8所述的系统,
所述源节点根据本端链路延迟和/或对端链路延迟确定所述近端网络链路的链路延迟;其中,所述本端链路延迟由第一节点设备通过请求应答机制对所述近端网络链路进行检测得到,所述对端链路延迟由第一节点设备的邻居节点设备通过请求应答机制对所述近端网络链路进行检测得到;和/或,
所述源节点接收第一节点设备的邻居节点设备发送的所述远端网络链路的链路延迟,所述远端网络链路的链路延迟由所述远端网络链路的至少一端节点设备通过请求应答机制对所述远端网络链路进行检测得到的链路延迟所确定。
10.根据权利要求9所述的系统,
所述源节点接收第一节点设备的邻居节点设备在请求应答机制中发送的应答消息,所述应答消息中包含所述对端链路延迟和/或所述远端网络链路的链路延迟。
11.根据权利要求9所述的系统,
所述近端网络链路的链路延迟,包括:所述本端链路延迟、所述对端链路延迟、或者所述本端链路延迟与所述对端链路延迟的加权平均值;
所述远端网络链路的链路延迟,包括:所述远端网络链路的任一端节点设备检测得到的链路延迟,或者所述远端网络链路两端的节点设备分别检测得到的链路延迟的加权平均值。
12.根据权利要求7-11中任一项所述的系统,所述网络延迟信息包括:所述网络拓扑结构中的网络链路的链路延迟,和/或所述网络拓扑结构中的节点设备在转发消息时的节点延迟。
13.根据权利要求12所述的系统,
所述源节点获取所述网络拓扑结构中的任一节点设备的至少一个邻居节点设备对该任一节点设备进行检测得到的节点延迟,并根据获取的节点延迟确定所述任一节点设备的节点延迟;和/或,
所述源节点接收其他节点设备共享的所述任一节点设备的节点延迟。
14.根据权利要求13所述的系统,所述任一节点设备的任一邻居节点设备对该任一节点设备进行检测,包括:
所述任一邻居节点设备向所述任一节点设备发送回流消息,通过所述回流消息的转发延迟、所述任一邻居节点设备与所述任一节点设备之间网络链路的链路延迟,确定所述任一节点设备的节点延迟,所述回流消息为所述任一邻居节点设备向所述任一节点设备发送的目的地址指向所述任一邻居节点设备的消息。
15.根据权利要求13所述的系统,所述任一节点设备的节点延迟,包括:
所述任一节点设备的任一邻居节点设备对该任一节点设备进行检测得到的节点延迟,或者所述任一节点设备的至少一个邻居节点设备对该任一节点设备进行检测得到的节点延迟的加权平均值。
16.一种区块链子网的压力测试方法,应用于管理区块链子网的区块链主网中的主网节点;所述方法包括:
接收压测设备提交的包含待压测区块链子网的网络标识的压测交易,所述压测交易由所述压测设备根据针对待压测区块链子网的压测交易配置信息生成,所述压测交易配置信息包括所述网络标识;
响应于接收到的所述压测交易,确定出自身管理的对应于所述网络标识的区块链子网,并将所述压测交易分配至确定出的区块链子网,以由确定出的区块链子网中的区块链节点执行所述区块链主网分配的压测交易并得到相应的交易回执,所述交易回执用于供所述压测设备分析确定针对所述待压测区块链子网的压测结果。
17.根据权利要求16所述的方法,所述压测交易配置信息还包括所述压测交易的交易类型信息,所述交易类型信息用于指示所述压测设备根据所述压测交易配置信息生成与所述交易类型信息相匹配且包含所述网络标识的压测交易。
18.根据权利要求16所述的方法,所述区块链主网维护有各个区块链子网的子网节点信息;所述确定出自身管理的对应于所述网络标识的区块链子网,包括:
所述主网节点获取自身维护的子网节点信息;
所述主网节点根据所述子网节点信息确定出所述网络标识对应的区块链子网中的目标子网节点,并将所述压测交易转发至所述目标子网节点。
19.根据权利要求18所述的方法,所述区块链主网上部署有子网管理合约,所述子网管理合约用于维护所述区块链主网管理的各个区块链子网的子网节点信息;所述主网节点获取所述区块链主网维护的子网节点信息,包括:
所述主网节点读取所述子网管理合约维护的子网节点信息。
20.根据权利要求16所述的方法,所述区块链主网中各主网节点分别所处的节点设备还用于部署所述待压测区块链子网的子网节点,所述压测交易被所述压测设备发送至任一主网节点;所述将所述压测交易分配至确定出的区块链子网,包括:
所述任一主网节点以自身为源节点、所述区块链主网中的其他主网节点为目的节点,由该源节点向相应的目的节点转发所述压测交易,以由各个主网节点分别将所述压测交易下发至各自所处节点设备部署的归属于所述待压测区块链子网的子网节点;
或者,所述任一主网节点将所述压测交易下发至自身所处节点设备部署的归属于所述待压测区块链子网的子网节点,以由该子网节点以自身为源节点、所述待压测区块链子网中的其他子网节点为目的节点,由该源节点向相应的目的节点转发所述压测交易。
21.根据权利要求20所述的方法,同一节点设备上运行有由主网节点和子网节点共享且用于处理区块链交易的组件;该节点设备上的主网节点将所述压测交易下发至该节点设备部署的归属于所述待压测区块链子网的子网节点,包括:
将所述压测交易提交至自身所处节点设备上运行的所述用于处理区块链交易的组件。
22.根据权利要求20所述的方法,所述源节点维护有自身所属区块链网络中各区块链节点分别所处的节点设备之间的网络拓扑结构以及所述网络拓扑结构对应的网络延迟信息;所述源节点向所述目的节点转发所述压测交易,包括:
基于所述网络延迟信息从所述网络拓扑结构中确定所述源节点所处第一节点设备与所述目的节点所处目标节点设备之间总延迟最小的转发路径,将所述压测交易根据确定出的转发路径转发至所述目的节点。
23.根据权利要求22所述的方法,所述网络延迟信息包括所述网络拓扑结构中的近端网络链路的链路延迟和/或远端网络链路的链路延迟,所述近端网络链路为第一节点设备与其邻居节点设备之间的网络链路,所述远端网络链路为所述网络拓扑结构中除所述近端网络链路之外的网络链路。
24.根据权利要求23所述的方法,
所述源节点根据本端链路延迟和/或对端链路延迟确定所述近端网络链路的链路延迟;其中,所述本端链路延迟由第一节点设备通过请求应答机制对所述近端网络链路进行检测得到,所述对端链路延迟由第一节点设备的邻居节点设备通过请求应答机制对所述近端网络链路进行检测得到;和/或,
所述源节点接收第一节点设备的邻居节点设备发送的所述远端网络链路的链路延迟,所述远端网络链路的链路延迟由所述远端网络链路的至少一端节点设备通过请求应答机制对所述远端网络链路进行检测得到的链路延迟所确定。
25.根据权利要求24所述的方法,
所述源节点接收第一节点设备的邻居节点设备在请求应答机制中发送的应答消息,所述应答消息中包含所述对端链路延迟和/或所述远端网络链路的链路延迟。
26.根据权利要求24所述的方法,
所述近端网络链路的链路延迟,包括:所述本端链路延迟、所述对端链路延迟、或者所述本端链路延迟与所述对端链路延迟的加权平均值;
所述远端网络链路的链路延迟,包括:所述远端网络链路的任一端节点设备检测得到的链路延迟,或者所述远端网络链路两端的节点设备分别检测得到的链路延迟的加权平均值。
27.根据权利要求22-26中任一项所述的方法,所述网络延迟信息包括:所述网络拓扑结构中的网络链路的链路延迟,和/或所述网络拓扑结构中的节点设备在转发消息时的节点延迟。
28.根据权利要求27所述的方法,
所述源节点获取所述网络拓扑结构中的任一节点设备的至少一个邻居节点设备对该任一节点设备进行检测得到的节点延迟,并根据获取的节点延迟确定所述任一节点设备的节点延迟;和/或,
所述源节点接收其他节点设备共享的所述任一节点设备的节点延迟。
29.根据权利要求28所述的方法,所述任一节点设备的任一邻居节点设备对该任一节点设备进行检测,包括:
所述任一邻居节点设备向所述任一节点设备发送回流消息,通过所述回流消息的转发延迟、所述任一邻居节点设备与所述任一节点设备之间网络链路的链路延迟,确定所述任一节点设备的节点延迟,所述回流消息为所述任一邻居节点设备向所述任一节点设备发送的目的地址指向所述任一邻居节点设备的消息。
30.根据权利要求28所述的方法,所述任一节点设备的节点延迟,包括:
所述任一节点设备的任一邻居节点设备对该任一节点设备进行检测得到的节点延迟,或者所述任一节点设备的至少一个邻居节点设备对该任一节点设备进行检测得到的节点延迟的加权平均值。
31.一种区块链子网的压力测试装置,应用于管理区块链子网的区块链主网中的主网节点;所述装置包括:
接收单元,接收压测设备提交的包含待压测区块链子网的网络标识的压测交易,所述压测交易由所述压测设备根据针对待压测区块链子网的压测交易配置信息生成,所述压测交易配置信息包括所述网络标识;
分配单元,响应于接收到的所述压测交易,确定出自身管理的对应于所述网络标识的区块链子网,并将所述压测交易分配至确定出的区块链子网,以由确定出的区块链子网中的区块链节点执行所述区块链主网分配的压测交易并得到相应的交易回执,所述交易回执用于供所述压测设备分析确定针对所述待压测区块链子网的压测结果。
32.一种电子设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器通过运行所述可执行指令以实现如权利要求16-30中任一项所述的方法。
33.一种计算机可读存储介质,其上存储有计算机指令,该指令被处理器执行时实现如权利要求16-30中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111670003.2A CN114338452A (zh) | 2021-12-31 | 2021-12-31 | 区块链子网的压力测试方法及装置、系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111670003.2A CN114338452A (zh) | 2021-12-31 | 2021-12-31 | 区块链子网的压力测试方法及装置、系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114338452A true CN114338452A (zh) | 2022-04-12 |
Family
ID=81020562
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111670003.2A Pending CN114338452A (zh) | 2021-12-31 | 2021-12-31 | 区块链子网的压力测试方法及装置、系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114338452A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020143036A1 (en) * | 2019-01-11 | 2020-07-16 | Telefonaktiebolaget Lm Ericsson (Publ) | Network device, control device and methods therein |
CN111488291A (zh) * | 2020-06-24 | 2020-08-04 | 支付宝(杭州)信息技术有限公司 | 区块链网络的压力测试方法及装置、系统 |
CN113067772A (zh) * | 2021-06-02 | 2021-07-02 | 支付宝(杭州)信息技术有限公司 | 区块链网络间的交易转发方法 |
CN113259455A (zh) * | 2021-06-02 | 2021-08-13 | 支付宝(杭州)信息技术有限公司 | 跨子网交互方法及装置 |
-
2021
- 2021-12-31 CN CN202111670003.2A patent/CN114338452A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020143036A1 (en) * | 2019-01-11 | 2020-07-16 | Telefonaktiebolaget Lm Ericsson (Publ) | Network device, control device and methods therein |
CN111488291A (zh) * | 2020-06-24 | 2020-08-04 | 支付宝(杭州)信息技术有限公司 | 区块链网络的压力测试方法及装置、系统 |
CN113067772A (zh) * | 2021-06-02 | 2021-07-02 | 支付宝(杭州)信息技术有限公司 | 区块链网络间的交易转发方法 |
CN113259455A (zh) * | 2021-06-02 | 2021-08-13 | 支付宝(杭州)信息技术有限公司 | 跨子网交互方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113259455B (zh) | 跨子网交互方法及装置 | |
CN113067904B (zh) | 组建区块链子网的方法和区块链系统 | |
CN113067902B (zh) | 区块链消息的传输方法及装置 | |
CN113067897B (zh) | 跨链交互方法及装置 | |
CN113067895B (zh) | 组建区块链子网的方法和区块链系统 | |
CN113067894B (zh) | 节点退出区块链子网的方法 | |
WO2023124744A1 (zh) | 跨子网交互 | |
CN113259457B (zh) | 区块链子网的信息同步方法及装置 | |
CN113098982B (zh) | 区块链消息的传输方法及装置 | |
CN114301828A (zh) | 一种跨子网交互方法、装置、电子设备和存储介质 | |
CN113259119B (zh) | 区块链消息的分发方法及装置 | |
CN113067896B (zh) | 区块链子网中加入节点的方法和区块链系统 | |
CN113326290B (zh) | 跨网查询控制方法 | |
CN113259458B (zh) | 一种启动/关闭区块链节点服务的方法和装置 | |
CN114363162A (zh) | 区块链日志的生成方法及装置、电子设备、存储介质 | |
CN113259120B (zh) | 同步节点信息列表的方法 | |
CN113067914B (zh) | 一种分配子网标识的方法、装置、电子设备和存储介质 | |
CN113259117A (zh) | 同步节点信息列表的方法 | |
CN114866560B (zh) | 区块链节点迁移的方法、装置、电子设备及可读存储介质 | |
CN113259462B (zh) | 区块链消息的分发方法及装置 | |
CN113259236B (zh) | 区块链网络间的交易转发方法 | |
CN113259237B (zh) | 区块链网络间的交易转发方法 | |
CN113067774B (zh) | 区块链网络间的交易转发方法 | |
CN115086338A (zh) | 区块链子网的组建方法及装置 | |
CN114338452A (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 |