CN112134762B - 针对区块链网络结构的测试方法、装置、终端和存储介质 - Google Patents
针对区块链网络结构的测试方法、装置、终端和存储介质 Download PDFInfo
- Publication number
- CN112134762B CN112134762B CN202011019262.4A CN202011019262A CN112134762B CN 112134762 B CN112134762 B CN 112134762B CN 202011019262 A CN202011019262 A CN 202011019262A CN 112134762 B CN112134762 B CN 112134762B
- Authority
- CN
- China
- Prior art keywords
- blockchain network
- nodes
- target
- block chain
- construction instruction
- 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
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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/40—Bus networks
- H04L12/40006—Architecture of a communication node
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/42—Loop networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/28—Data switching networks characterised by path configuration, e.g. LAN [Local Area Networks] or WAN [Wide Area Networks]
- H04L12/44—Star or tree networks
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1042—Peer-to-peer [P2P] networks using topology management mechanisms
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Business, Economics & Management (AREA)
- General Business, Economics & Management (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明实施例公开了一种针对区块链网络结构的测试方法、装置、终端和存储介质,其中,方法包括,获取多个节点的特征信息,根据多个节点的特征信息生成目标区块链网络构建指令,将目标区块链网络构建指令发送至多个节点,以使得多个节点基于目标区块链网络构建指令指示的方式建立连接,形成目标结构类型的区块链网络,在目标结构类型的区块链网络下进行共识机制的测试,得到测试结果。通过实施上述方法,可以基于节点的特征信息构建区块链网络,并进行相应的共识机制测试,提升区块链网络结构测试效率以及测试准确率,本方法也可以用于云安全领域,通过对区块链网络的共识机制进行测试,可以有效抵御恶意节点的攻击,提升链上数据的安全性。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种针对区块链网络结构的测试方法、装置、终端和存储介质。
背景技术
区块链网络是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用,本质上是一个去中心化的数据库,也即是一串使用密码学方法相关联产生的数据块,在区块链网络中,由于没有身份认证,所以用户创建节点是不需要代价的,节点加入进来,通过网络策略或网络抖动可以形成各种拓扑结构,比如星型、总线型、树型、网型、区域型、混合型等,各种拓扑结构不影响节点与节点间的数据交互,但是会对区块链网络的共识机制产生影响,所以需要对各种网络拓扑作模拟,以及正确评估各种拓扑结构对区块链网络的共识机制的影响,使得满足共识机制的区块链网络可以有效抵御恶意节点的攻击,保证链上数据的安全。
在传统测试区块链网络拓扑时,需要用户手动设计节点的连接方式,并描绘出各种类型网络拓扑,以及用户输入命令手动触发对各种类型的网络拓扑进行通信测试。这样做耗时且人工成本大,网络拓扑形成有时延,且测试结果也是基于用户的主观分析得到,对于区块链网络拓扑结构的测试效率以及测试准确率较低。
发明内容
本发明实施例提供了一种针对区块链网络结构的测试方法、装置、终端和存储介质,可以基于节点的特征信息构建区块链网络,并进行相应的共识机制测试,提升区块链网络结构测试效率以及测试准确率。
一方面,本发明实施例提供了一种针对区块链网络结构的测试方法,所述方法包括:
获取多个节点的特征信息;
根据所述多个节点的特征信息生成目标区块链网络构建指令;
将所述目标区块链网络构建指令发送至所述多个节点,以使得所述多个节点基于所述目标区块链网络构建指令指示的方式建立连接,形成目标结构类型的区块链网络;
在所述目标结构类型的区块链网络下进行共识机制的测试,得到测试结果。
一方面,本发明实施例提供了一种针对区块链网络结构的测试装置,所述装置包括:
获取模块,用于获取多个节点的特征信息;
生成模块,用于根据所述多个节点的特征信息生成目标区块链网络构建指令;
发送模块,用于将所述目标区块链网络构建指令发送至所述多个节点,以使得所述多个节点基于所述目标区块链网络构建指令指示的方式建立连接,形成目标结构类型的区块链网络;
测试模块,用于在所述目标结构类型的区块链网络下进行共识机制的测试,得到测试结果。
一方面,本发明实施例提供了一种终端,包括处理器、输入接口、输出接口和存储器,所述处理器、输入接口、输出接口和存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行所述针对区块链网络结构的测试方法。
一方面,本发明实施例提供了一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行所述针对区块链网络结构的测试方法。
本发明实施例中,终端获取多个节点的特征信息,并根据多个节点的特征信息生成目标区块链网络构建指令,终端将目标区块链网络构建指令发送至多个节点,以使得多个节点基于目标区块链网络构建指令指示的方式建立连接,形成目标结构类型的区块链网络,终端在目标结构类型的区块链网络下进行共识机制的测试,得到测试结果。上述方式中,可以在获取多个节点的特征信息之后,基于提供的节点的特征信息自动构造区块链网络的拓扑结构图,包括星型、总线型、分区型、树型、混合型等,并自动生成执行指令,下发到节点远程节点自动执行,快速得到目标结构类型的区块链网络,并进行相应测试,提升了对于区块链网络结构的测试效率。并且,通过自动对区块链网络的共识机制的进行测试,得到测试结果,避免了测试过程中人为主观分析差异性造成的测试结果差异,也提升了对于区块链网络结构的测试准确率。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的一种拓扑结构示意图;
图2是本发明实施例提供的另一种拓扑结构示意图;
图3是本发明实施例提供的一种针对区块链网络结构的测试方法的流程示意图;
图4是本发明实施例提供的一种显示界面示意图;
图5是本发明实施例提供的另一种针对区块链网络结构的测试方法的流程示意图;
图6是本发明实施例提供的又一种针对区块链网络结构的测试方法的流程示意图;
图7a是本发明实施例提供的一种区块链网络构建指令示意图;
图7b是本发明实施例提供的另一种区块链网络构建指令示意图;
图7c是本发明实施例提供的又一种区块链网络构建指令示意图;
图8是本发明实施例提供的一种显示界面示意图;
图9是本发明实施例提供的一种区块链系统的结构示意图;
图10是本发明实施例提供的一种区块链网络的结构示意图;
图11是本发明实施例提供的一种针对区块链网络结构的测试装置的结构示意图;
图12是本发明实施例提供的一种终端的结构示意图。
具体实施方式
本方案涉及的计算机技术领域具体包括云技术领域和区块链技术领域,其中,云技术(Cloud technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。
区块链是一种多方共同维护,使用密码学保证传输和访问安全,能够实现数据一致存储、难以篡改、防止抵赖的记账技术,也就是分布式账本技术。区块链的生命周期如下:①客户端发送交易给节点,节点通过区块链网络广播交易到其他节点;②共识机制随机选出记账节点,具体的,在区块链网络中,每个打包周期内,需要记账节点将若干交易列表打包成区块结构,并广播给其他节点共识,记账节点也就是生成区块并发起提案的节点。③记账节点将若干交易列表打包组装成区块结构,生成区块提案消息,并广播给其他节点,若交易列表为空,则打包成空区块广播出去,其中,提案消息包括区块高度、区块头、merkle根、交易信息等,提案消息广播给其他节点后完成拜占庭容错共识。④其他节点收到区块后,验证区块内的交易,并广播对提案的投票消息;⑤针对该区块达成拜占庭容错共识后,提交该区块到区块链网络存储层,开始下一轮选举和共识。在典型的基于拜占庭容错共识的区块链网络中,由记账节点加载交易池的交易列表,构造区块提案后,将提案广播给其他节点,其他节点收到区块提案后进行验证,可以投赞成票或反对票,当节点对区块提案投反对票时,各个节点收集对提案的投票信息,验证对区块提案投赞成票的票数是否大于2/3节点数,如果大于则提交区块到记账节点,如果小于2/3节点数,则区块链网络完成不了拜占庭容错共识,区块链网络运行状态异常,并阻塞。由此可见,区块链网络的稳定性和具备应对各种复杂网络拓扑的能力至关重要。正常情况下,区块链网络中的各个节点满足全连接,即所有节点两两互联,如图1所示,为一种节点间全连接的拓扑结构示意图,图1中,节点A、节点B、节点C、节点D和节点E两两互连。然而,在区块链网络中,由于没有身份认证,所以用户创建节点是不需要代价的,节点加入进来,由于各个节点的网络情况是不可信的,则实际通过网络策略或网络抖动可以形成各种拓扑结构,比如总线型、星型、树型、环型、网格型、复杂型等,如图2所示,为不同结构类型对应的拓扑结构示意图,图2中,分别包括了总线型结构、星型结构、树型结构、环型结构、网格型结构、复杂型结构的拓扑。各种拓扑结构不影响节点与节点间的数据交互,但是会对区块链网络的共识机制产生影响。其中,节点可以是服务器,服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。终端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。终端以及服务器可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
在传统测试区块链网络的拓扑结构时,包括以下步骤:①用户操作终端申请节点资源和互联网协议(IP,Internet Protocol)地址;②用户根据节点画出各种拓扑结构;③针对每一种拓扑结构,用户分析节点间的通信情况,具体为用户输入命令手动对各种类型的网络拓扑进行通信测试。
然而,上述方式存在以下缺陷,①人工基于节点描绘拓扑结构的过程中,由于节点可生成的拓扑结构种类繁多,用户难以将各种拓扑结构都描绘出,即描绘出的拓扑结构的全面性较低。②人工绘图以及输入测试指令进行测试,耗时且人工成本大。③人工对测试结果进行分析,容易受用户主观思想的限制,且无法精确分析得到测试过程中出错的节点,即测试准确性较低。④针对区块链网络拓扑的测试没有分析其对共识机制的影响情况,测试事件没有明确的收尾。
基于此,本发明提出了一种针对区块链网络结构的测试方法,以解决区块链网络结构网络测试过程中测试效率和测试准确率较低的问题,与上述方案不同的是,本发明实施例提供的区块链网络结构的测试方法可以基于提供的节点的特征信息自动构造区块链网络的拓扑结构图,包括星型、总线型、分区型、树型、混合型等,并自动生成执行指令,下发到节点远程自动执行,快速构造出区块链网络的拓扑结构,在测试过程中,自动分析各种拓扑结构对区块链网络共识机制的影响,并给出测试报告。通过上述方式,提升了对于区块链网络结构的测试效率以及测试准确率。
具体的,本方案提供的针对区块链网络结构的测试方法的具体流程如下,①获取多个节点的特征信息,节点信息可以为互联网协议地址、端口等。②根据多个节点的特征信息生成至少一个区块链网络构建指令,每个区块链网络构建指令对应一种区块链网络的结构类型,具体可以基于节点的数量确定其可能生成的结构类型,并生成每种结构类型对应的区块链网络构建指令。③根据筛选策略从至少一个区块链网络构建指令中筛选出目标区块链网络构建指令,筛选策略可以为基于权重筛选,即筛选出权重较大的区块链网络构建指令,权重可以由指令对应的结构类型的历史出现频次确定,或者,筛选策略也可以为随机筛选;④将目标区块链网络构建指令发送至多个节点,以使得多个节点基于目标区块链网络构建指令指示的方式建立连接,形成目标结构类型的区块链网络;⑤在目标结构类型的区块链网络下进行共识机制的测试,得到测试结果。
上述方案中,在获取到节点的特征信息后,可以自动生成区块链网络构建指令,以生成各种结构类型的区块链网络,并且,在生成区块链网络之后,可以对生成的区块链网络进行共识机制的测试,得到测试结果,采用本方案基于自动化测试思想,当区块链网络的拓扑结构构造并执行完后,可以触发报告生成,将各种拓扑结构对区块链网络的共识机制的影响情况进行统计报告输出。通过上述方式,提升了对于区块链网络结构的测试效率以及测试准确率。
基于上述描述,本发明实施例提供一种针对区块链网络结构的测试方法,请参见图3,该针对区块链网络结构的测试过程可包括以下步骤S301-S304:
S301、终端获取多个节点的特征信息。
本发明实施例中,节点具体可以为服务器,则节点的特征信息包括服务器的互联网协议地址、端口、网卡信息等。
S302、终端根据多个节点的特征信息生成目标区块链网络构建指令。
本发明实施例中,终端获取到多个节点的特征信息之后,将根据多个节点的特征信息生成目标区块链网络构建指令,其中,目标区块链网络构建指令为终端生成的至少一个区块链网络构建指令中的一个或多个,目标区块链网络构建指令用于触发各个节点建立相应的连接,形成目标结构类型的区块链网络,目标结构类型具体可以为总线型、星型、树型、环型、网格型、复杂型等。
具体实现中,终端根据多个节点的特征信息生成至少一个区块链网络构建指令,并获取针对至少一个区块链网络构建指令的筛选策略,终端根据筛选策略从至少一个区块链网络构建指令中筛选出目标区块链网络构建指令。其中,每个区块链网络构建指令对应一种区块链网络的结构类型。
在一种实现方式中,筛选策略包括基于权重选择的策略,终端根据生成的各个区块链网络构建指令的权重筛选出目标区块链网络构建指令,具体的,终端获取每个区块链网络构建指令对应的区块链网络的结构类型,得到至少一种结构类型,并从历史记录中确定至少一种结构类型中每种结构类型的区块链网络的出现频次,终端基于每种结构类型的区块链网络的出现频次,确定每种结构类型对应的区块链网络构建指令的权重,并依据权重由大到小的关系对至少一个区块链网络构建指令进行排序,以及将排序为前K位的区块链网络构建指令确定为目标区块链网络构建指令,其中,K为正整数,结构类型具体可以为总线型、星型、树型、环型、网格型、复杂型等,历史记录中记录了历史存在的各个区块链网络所属的结构类型,针对不同的区块链网络,所属的结构类型可以不同,或者,针对同一个区块链网络,其在不同时间段的所属的结构类型也可以不同,区块链网络会对上述各种结构类型的区块链网络的出现频次进行统计,并基于出现频次确定每种结构类型对应的区块链网络构建指令的权重,出现频次可以与权重成正比关系,即出现频次越高,权重越大。例如,K为1,区块链网络构建指令1对应星型结构,区块链网络构建指令2对应环型结构,区块链网络构建指令3对应树型结构,历史记录中星型结构的区块链网络的出现频次为5,环型结构的区块链网络的出现频次为7,树型结构的区块链网络的出现频次为6,则终端确定环型结构的区块链网络出现频次最大,并将区块链网络构建指令2确定为目标区块链网络构建指令。
在一种实现方式中,筛选策略为随机筛选,则终端可以从至少一个区块链网络构建指令中随机筛选出预设数量个区块链网络构建指令,作为目标区块链网络构建指令。
在一种实现方式中,终端生成至少一个区块链网络构建指令后,还将确定至少一个区块链网络构建指令中每个区块链网络构建指令对应的拓扑图,终端根据筛选策略从至少一个区块链网络构建指令中筛选出目标区块链网络构建指令的具体方式可以为,终端将每个区块链网络构建指令对应的拓扑图进行显示,针对每个区块链网络构建指令对应的拓扑图,终端接收针对拓扑图中目标拓扑图输入的选择操作信息,并将目标拓扑图对应的区块链网络构建指令确定为目标区块链网络构建指令。其中,目标拓扑图包括每个区块链网络构建指令对应的拓扑图中的一个或多个拓扑图,拓扑图用于指示区块链网络中各个节点之间的连接关系,用户可以从显示的拓扑图中选取相应的目标拓扑图,终端将用户选择的目标拓扑图对应的区块链网络构建指令确定为目标区块链网络构建指令,目标拓扑图可以为一张,也可以为多张,通过对拓扑图进行显示,可以使得用户方便的选择相应的区块链网络构建指令。如图4所示,为终端中一种显示界面示意图,该显示界面中显示了不同结构的区块链网络的拓扑图,具体包括星型结构的区块链网络拓扑图、环型结构的区块链网络拓扑图和总线型结构的区块链网络拓扑图,多个节点具体为节点A、节点B、节点C、节点D和节点E。用户可以基于对上述拓扑图输入选择操作,终端基于用户的选择操作为各个网络拓扑图添加标记后显示。可选的,用户也可以在终端显示的拓扑图中输入修改操作,以更改拓扑图中各个节点之间的连接关系,终端接收用户的修改操作,并更改用户修改的拓扑图对应的区块链网络构建指令,使得修改后的区块链网络构建指令与用户修改的拓扑图相匹配,通过上述方式,用户只需要在终端提供的拓扑图之上进行少量的修改,即可生成需要的区块链网络构建指令,进而触发节点生成相应的区块链网络,也提升了区块链网络的构建效率。
S303、终端将目标区块链网络构建指令发送至多个节点,以使得多个节点基于目标区块链网络构建指令指示的方式建立连接,形成目标结构类型的区块链网络。
本发明实施例中,终端生成目标区块链网络构建指令之后,可以将目标区块链网络构建指令发送至多个节点,以使得多个节点基于目标区块链网络构建指令指示的方式建立连接,形成目标结构类型的区块链网络。其中,目标区块链网络构建指令中包含多条子指令,每条子指令用于指示多个节点中的一个节点与另一个节点建立连接。例如,多个节点包括节点1、节点2和节点3,目标区块链网络构建指令中包含3条子指令,其中,子指令1用于指示节点1与节点2建立连接,子指令2用于指示节点2与节点3建立连接,子指令3用于指示节点1与节点3建立连接,其中,各个节点具体基于节点的互联网协议地址和端口建立连接,如节点1的互联网协议地址为“10.125.61.31”,端口为“20020”,节点2的互联网协议地址为“10.125.60.212”,端口为“20020”,则一条子指令为{'10.125.61.31':'iptables -AINPUT -s 10.125.60.212 -p tcp --dport 20020 -j ACCEPT'},即指示节点1与节点2建立连接,且连接的端口为“20020”。
在一种实现方式中,终端将目标区块链网络构建指令发送至多个节点的具体方式可以为,终端将完整的目标区块链网络构建指令发送至每个节点,由各个节点从目标区块链网络构建指令中找到自身需要的子指令,并基于子指令指示的连接方式与多个节点中的其他节点建立连接,通过上述方式,可以使得各个节点都接收到完整的指令,在目标结构类型的区块链网络形成之后,各个节点也可以基于目标区块链网络构建指令对形成的区块链网络的结构进行校验,以保证形成的区块链网络的结构的正确性。
在一种实现方式中,终端将目标区块链网络构建指令发送至多个节点的具体方式可以为,终端对完整的目标区块链网络构建指令进行拆分处理,得到多条子指令,并确定每条子指令对应的节点,终端将各个子指令发送至对应的节点,以使得节点对子指令中的信息进行获取后,依照子指令指示的方式与其他节点建立连接,形成目标结构类型的区块链网络,通过上述方式,可以减少节点对于指令进行解析的时间,提升区块链网络的构建效率。
S304、终端在目标结构类型的区块链网络下进行共识机制的测试,得到测试结果。
本发明实施例中,目标结构类型的区块链网络形成之后,终端可以在目标结构类型的区块链网络下进行共识机制的测试,得到测试结果。
在一种实现方式中,终端进行共识机制测试的具体方式可以为,终端获取测试用例,并将测试用例在目标结构类型的区块链网络中进行广播,以使得目标结构类型的区块链网络中的各个节点接收所述测试用例,并返回针对测试用例的校验结果,终端基于校验结果的数量分析上述目标结构类型的区块链网络是否满足拜占庭容错共识,例如,节点1、节点2、节点3分别与节点4建立连接,节点1、节点2和节点3互不相连,构成星型结构的区块链网络,当节点4发生故障,与其他节点的通信断开时,则会导致其余3个节点无法广播共识消息,即节点间无法广播共识消息,不满足拜占庭容错共识,最终导致整个区块链网络不可用,测试用例执行失败,区块链网络进入阻塞状态,即使得终端接收到的校验结果的数量与预设数量不匹配,终端判定星型结构的区块链网络无法运行共识机制。
在一种实现方式中,终端进行共识机制测试的具体方式也可以为,终端向构成目标结构类型的区块链网络中的多个节点中的M个节点发送阻断指令,使得M个节点断开与的多个节点中的其他节点之间的连接,得到断开连接后的目标结构类型的区块链网络,即模拟该M个节点因为硬件因素或网络因素断开了与其他节点之间的连接的情况,其中,M为自然数。进一步的,终端获取测试用例,并将测试用例在断开连接后的目标结构类型的区块链网络中进行广播,以使得断开连接后的目标结构类型的区块链网络中的各个节点接收所述测试用例,并返回针对测试用例的校验结果,终端接收各个节点返回的校验结果,并检测各个节点返回的校验结果的数量与预设数量是否相匹配,若各个节点返回的校验结果的数量与预设数量匹配,则确定目标结构类型的区块链网络下的共识机制测试通过;若各个节点返回的校验结果的数量与预设数量不匹配,则终端从目标结构类型的区块链网络中获取到未返回校验结果的目标节点,并获取目标节点与目标结构类型的区块链网络中其他节点之间的目标连接关系,并基于目标连接关系对区块链网络进行故障检测,得到故障检测结果,故障检测结果具体可以指示出错的节点,以及是因为何种连接关系导致出错,可选的,预设数量可以为多个节点的数量与M之间的差值。通过上述方式,可以实现对生成的区块链网络的共识机制的测试,即模拟出当存在一些节点故障时,检测区块链网络是否能够继续进行共识广播,即检测出区块链网络是否满足拜占庭容错共识条件,进一步输出测试报告,通过上述方式,提升了针对区块链网络进行测试的测试效率。
本发明实施例中,终端获取多个节点的特征信息,并根据多个节点的特征信息生成目标区块链网络构建指令,终端将目标区块链网络构建指令发送至多个节点,以使得多个节点基于目标区块链网络构建指令指示的方式建立连接,形成目标结构类型的区块链网络,终端在目标结构类型的区块链网络下进行共识机制的测试,得到测试结果。通过实施上述方法,可以基于节点的特征信息构建区块链网络,并进行相应的共识机制测试,提升区块链网络结构测试效率以及测试准确率。
基于上述描述,本发明实施例提供了另一种针对区块链网络结构的测试方法,请参见图5,该针对区块链网络结构的测试过程可包括以下步骤S501-S508:
S501、终端获取多个节点的特征信息。
本发明实施例中,节点具体可以为服务器,则节点的特征信息包括服务器的互联网协议地址和端口。
S502、终端根据多个节点的数量确定至少一种区块链网络的结构类型。
本发明实施例中,终端获取到多个节点的特征信息之后,将根据多个节点的数量确定至少一种区块链网络的结构类型。
具体实现中,数据库中预先存储了多个预设结构类型以及每个预设结构类型对应的预设节点数量要求,预设结构类型可以包括星型、总线型、树型等,星型结构对应的预设节点数量要求1可以为节点数量大于3,总线型结构对应的预设节点数量要求2可以为节点数量大于4,树型结构对应的预设节点数量要求3可以为节点数量大于5,终端根据多个节点的数量确定至少一种区块链网络的结构类型的具体方式可以为,终端获取数据库中存储的多个预设结构类型以及每个预设结构类型对应的预设节点数量要求,并确定多个节点的数量满足的各个预设节点数量要求,进一步的,终端获取到各个预设节点数量要求对应的预设结构类型,作为至少一种区块链网络的结构类型。例如,多个节点的数量为5,则终端确定多个节点的数量满足预设节点数量要求1和预设节点数量要求2,并将星型结构和总线型结构确定为上述至少一种区块链网络的结构类型。
S503、终端获取至少一种区块链网络的结构类型中每种结构类型对应的节点连接方式,并确定每个节点连接方式下多个节点之间的连接关系。
本发明实施例中,终端确定至少一种区块链网络的结构类型之后,将确定每种结构类型对应的节点连接方式,其中,不同结构类型对应的节点连接方式不同,例如,针对星型结构,其对应的节点连接方式为,从多个节点中确定出星型结构的主节点,构造多个节点中的其他节点与该主节点相连,而该其他节点之间两两不相连。针对环型结构,其对应的节点连接方式为,基于指令索引,构建各个节点只与上下游节点相连,而与其他节点不相连。针对分区型结构,其对应的节点连接方式为,获取到分区个数n,构造n个分区,使得分区内的节点两两互联,分区间的节点互不相连。进一步的,终端确定每个节点连接方式下多个节点之间的连接关系,该连接关系指示了需要连接的节点对应的连接信息,连接信息包括互联网协议地址之间的连接以及端口之间的连接。如针对星型结构,连接关系指示了主节点的互联网协议地址以及端口,以及除主节点之外的其他节点的互联网协议地址以及端口,并建立主节点与其他节点的互联网协议地址之间的连接以及端口之间的连接。
S504、终端基于每个节点连接方式下多个节点之间的连接关系,生成每个节点连接方式对应的区块链网络构建指令,得到至少一个区块链网络构建指令。
本发明实施例中,终端获取到每个节点连接方式下多个节点之间的连接关系(即需要进行连接的互联网协议地址以及端口)之后,可以生成每个节点连接方式对应的区块链网络构建指令,具体的,终端可以将需要连接的互联网协议地址以及端口带入程序模板之中,生成每个节点连接方式对应的区块链网络构建指令,得到至少一个区块链网络构建指令。例如,节点1的互联网协议地址为“10.125.61.31”,端口为“20020”,节点2的互联网协议地址为“10.125.60.212”,端口为“20020”,程序模板为“()'iptables-A INPUT–s()-ptcp–dport()-j ACCEPT'”,则终端将节点1和节点2的特征信息带入程序模板中即可得到一条指令“'10.125.61.31':'iptables-A INPUT -s 10.125.60.212 -p tcp --dport20020 -j ACCEPT'”,该指令用于建立节点1和节点2之间的连接,基于上述方式,可以在获取到各个节点的特征信息后,基于特征信息构建一个完整的区块链网络构建指令。
S505、终端获取针对至少一个区块链网络构建指令的筛选策略。
在一种实现方式中,筛选策略包括基于权重选择的策略,具体为筛选出权重高于预设权重的区块链网络构建指令,每个区块链网络构建指令的权重可以由区块链网络构建指令对应的结构类型的历史出现频次确定,该结构类型的历史出现频次具体可以为历史记录的每种结构类型的区块链网络的出现频次。
在一种实现方式中,筛选策略为随机筛选,即从对至少一个区块链网络构建指令进行随机筛选。
S506、终端根据筛选策略从至少一个区块链网络构建指令中筛选出目标区块链网络构建指令。
本发明实施例中,终端获取到筛选策略之后,可以基于筛选策略筛选出权重高于预设权重的区块链网络构建指令作为目标区块链网络构建指令,或者,随机筛选出目标区块链网络构建指令,可选的,终端也可以基于用户输入的筛选操作筛选出目标区块链网络构建指令。
S507、终端将目标区块链网络构建指令发送至多个节点,以使得多个节点基于目标区块链网络构建指令指示的方式建立连接,形成目标结构类型的区块链网络。
S508、终端在目标结构类型的区块链网络下进行共识机制的测试,得到测试结果。
本发明实施例中,终端可以获取测试用例,并将测试用例在区块链网络中进行广播,以模拟拜占庭共识状态,当目标结构类型的区块链网络下不满足拜占庭容错共识时,则返回错误信息,并以错误信息生成针对目标结构类型的区块链网络的测试报告,测试报告指示了测试时目标结构类型的区块链网络中出错的节点,以及出错的原因,实现对共识机制的自动化测试,提升了测试效率。
本发明实施例中,终端获取多个节点的特征信息,并根据多个节点的特征信息生成至少一个区块链网络构建指令,以及从至少一个区块链网路构建指令中筛选出目标区块链网络构建指令,终端将目标区块链网络构建指令发送至多个节点,以使得多个节点基于目标区块链网络构建指令指示的方式建立连接,形成目标结构类型的区块链网络,终端在目标结构类型的区块链网络下进行共识机制的测试,得到测试结果。通过实施上述方法,可以基于节点的特征信息构建区块链网络,并进行相应的共识机制测试,提升区块链网络结构测试效率以及测试准确率。
在一种实施场景中,终端针对区块链网络结构进行测试的流程具体包括:
S601、终端收集多个节点的特征信息。
其中,节点的特征信息具体可以为节点的互联网协议(ip)地址和端口(port),例如,多个节点包括节点A、节点B、节点C、节点D、节点E和节点F,其对应的特征信息分别为:
节点A:{'ip':'1.1.1.1','port':'20020'},节点B:{'ip':'2.2.2.2','port':'20020'},节点C:{'ip':'3.3.3.3','port':'20020'},节点D:{'ip':'4.4.4.4','port':'20020'},节点E:{'ip':'5.5.5.5','port':'20020'},节点F:{'ip':'6.6.6.6','port':'20020'}。
S602、终端根据多个节点的特征信息生成至少一个区块链网络构建指令。
具体的,终端将上述多个节点的特征信息带入相应的程序模板中,得到至少一个区块链网络构建指令,每个区块链网络构建指令对应一种结构类型,针对不同结构类型的区块链网络,对应有相应的程序模板,针对星型网络,终端将多个节点的特征信息带入程序模板中生成的区块链网络构建指令如图7a所示,针对环型网络,终端将多个节点的特征信息带入生成程序模板中生成的区块链网络构建指令如图7b所示,针对分区型网络,终端将多个节点的特征信息带入生成程序模板中生成的区块链网络构建指令如图7c所示。
S603、终端根据筛选策略从至少一个区块链网络构建指令中筛选出目标区块链网络构建指令。
S604、终端将目标区块链网络构建指令发送至多个节点。
本发明实施例中,终端将目标区块链网络构建指令发送至多个节点,多个节点基于目标区块链网络构建指令指示的方式建立连接,形成目标结构类型的区块链网络。
S605、终端向目标结构类型的区块链网络中广播测试用例。
本发明实施例中,目标结构类型的区块链网络形成之后,终端可以向目标结构类型的区块链网络中广播测试用例,并获取到各个节点基于测试用例生成的运行日志,以及基于运行日志生成测试结果,该测试结果中包括了目标结构类型的区块链网络下共识机制的运行状况,运行状况可以是正常运行,或存在出错的节点等。
S606、终端生成测试报告。
本发明实施例中,终端向目标结构类型的区块链网络中广播测试用例后,可以检测各个节点对于测试用例的运行情况,并基于运行情况生成测试报告,其中,运行情况的获取方式具体可以获取到各个节点的运行日志,如目标结构类型的区块链网络中包括节点A、节点B、节点C、节点D,则终端可以基于上述节点的运行日志,并基于预设分析策略对运行日志进行分析后生成测试报告。测试报告指示了目标结构类型的区块链网络能否正确运行共识机制,以及相应的原因,例如,当目标结构类型为星型时,测试报告可以指出星型结构由于无法保证每个节点的共识信息广播出去,所以达成不了共识,当目标结构类型为分区型时,测试报告可以指出分区型结构如果分区内的节点数大于2/3总节点数,则可以共识,否则无法共识,当目标结构类型为环型时,测试报告可以指出环型结构由于无法保证每个节点的共识信息广播出去,所以达成不了共识,当目标结构类型为树型时,测试报告可以指出树形结构由于无法保证每个节点的共识信息广播出去,所以达成不了共识。
需要说明的是,本发明实施例提供的针对区块链网络结构进行测试的方法具体可应用于区块链产品的测试阶段,用于测试区块链产品的架构是否符合要求,其中,区块链产品可以为基于区块链网络的商品交易、基于区块链网络的身份认证等,其中区块链产品的生成至发布的具体流程可以分为,区块链产品提测阶段、网络拓扑测试阶段和发布阶段,其中,区块链产品提测阶段具体可以包括:(1)开发区块链产品。(2)将区块链产品中节点的特征信息输入至分发平台。(3)分发平台对节点的特征信息进行审核。(4)审核通过,进入测试流程。网络拓扑测试阶段具体可以包括:(5)获取区块链产品中节点的特征信息。(6)根据节点的特征信息生成区块链网络构建指令。(7)将区块链网络构建指令下发至区块链产品中的各个节点,形成区块链网络。(8)获取测试用例,并基于测试用例对区块链网络进行测试。发布阶段具体可以包括:(9)分析节点间的共识结果和节点对于测试用例的执行日志。(10)生成测试报告。(11)发布上线。
一种场景下,区块链产品可以为基于区块链的收入验证系统,如图9所示,为本发明实施例提供的基于区块链的收入验证系统,参见图9所示的基于区块链的收入验证系统,基于区块链的收入验证系统是指用于进行节点与节点之间数据共享的系统,该基于区块链的收入验证系统中可以包括多个节点901,多个节点901可以是指基于区块链的收入验证系统中各个终端。每个节点在进行正常工作可以接收到输入信息,并基于接收到的输入信息维护该基于区块链的收入验证系统内的共享数据。为了保证基于区块链的收入验证系统内的信息互通,基于区块链的收入验证系统中的每个节点之间可以存在信息连接,节点之间可以通过上述信息连接进行信息传输。例如,当基于区块链的收入验证系统中的任意节点接收到输入信息时,基于区块链的收入验证系统中的其他节点便根据共识算法获取该输入信息,并且,其他节点将该输入信息作为共享数据中的数据进行存储,使得基于区块链的收入验证系统中全部节点上存储的数据保持一致性。
对于基于区块链的收入验证系统中的每个节点,均具有与其对应的节点标识,而且基于区块链的收入验证系统中的每个节点均可以存储有基于区块链的收入验证系统中其他节点的节点标识,以便后续根据其他节点的节点标识,将生成的区块广播至基于区块链的收入验证系统中的其他节点。每个节点中可维护一个如下表所示的节点标识列表,将节点名称和节点标识对应存储至该节点标识列表中。其中,节点标识可为IP(InternetProtocol,网络之间互联的协议)地址以及其他任一种能够用于标识该节点的信息,表1中仅以IP地址为例进行说明。
表1
节点名称 | 节点标识 |
节点1 | 117.114.151.174 |
节点2 | 117.116.189.145 |
… | … |
节点N | 119.123.789.258 |
基于区块链的收入验证系统中的每个节点均存储一条相同的区块链。区块链由多个区块组成,参见图10,区块链由多个区块组成,创始块中包括区块头和区块主体,区块头中存储有输入信息的版本号、上一区块哈希值和Merkle根节点,区块主体中存储有输入信息;创始块的下一区块以创始块为父区块,下一区块中同样包括区块头和区块主体,区块头中存储有当前区块的输入信息特征值、父区块的版本号、上一区块哈希值和Merkle根节点,并以此类推,使得区块链中每个区块中存储的区块数据均与父区块中存储的区块数据存在关联,保证了区块中输入信息的安全性。具体实现中,每个区块中可以保存了各个节点上传的收入信息。
在生成区块链中的各个区块时,区块链所在的节点在接收到输入信息时,对输入信息进行校验,完成校验后,将输入信息存储至内存池中,并更新其用于记录输入信息的哈希树;之后,将更新时间戳更新为接收到输入信息的时间,并尝试不同的随机数,多次进行特征值计算,使得计算得到的特征值可以满足下述公式:
SHA256(SHA256(version+prev_hash+merkle_root+ntime+nbits+x))<TARGET
其中,SHA256为计算特征值所用的特征值算法;version(版本号)为区块链中相关区块协议的版本信息;prev_hash为当前区块的父区块的区块头特征值;merkle_root为输入信息的特征值;ntime为更新时间戳的更新时间;nbits为当前难度,在一段时间内为定值,并在超出固定时间段后再次进行确定;x为随机数;TARGET为特征值阈值,该特征值阈值可以根据nbits确定得到。
这样,当计算得到满足上述公式的随机数时,便可将信息对应存储,生成区块头和区块主体,得到当前区块。随后,区块链所在节点根据基于区块链的收入验证系统中其他节点的节点标识,将新生成的区块分别发送给其所在的基于区块链的收入验证系统中的其他节点,由其他节点对新生成的区块进行校验,并在完成校验后将新生成的区块添加至其存储的区块链中。
本发明实施例中,终端获取多个节点的特征信息,并根据多个节点的特征信息生成目标区块链网络构建指令,终端将目标区块链网络构建指令发送至多个节点,以使得多个节点基于目标区块链网络构建指令指示的方式建立连接,形成目标结构类型的区块链网络,终端在目标结构类型的区块链网络下进行共识机制的测试,得到测试结果。通过实施上述方法,可以基于节点的特征信息构建区块链网络,并进行相应的共识机制测试,提升区块链网络结构测试效率以及测试准确率。
基于上述针对区块链网络结构的测试方法实施例的描述,本发明实施例还公开了一种针对区块链网络结构的测试装置,该针对区块链网络结构的测试装置可以是运行于终端中的一个计算机程序(包括程序代码),也可以是包含在终端中的一个实体装置。该针对区块链网络结构的测试装置可以执行图1至图10所示的方法。请参见图11,该针对区块链网络结构的测试装置110包括:获取模块1101、生成模块1102、发送模块1103,测试模块1104,其中,
获取模块1101,用于获取多个节点的特征信息;
生成模块1102,用于根据所述多个节点的特征信息生成目标区块链网络构建指令;
发送模块1103,用于将所述目标区块链网络构建指令发送至所述多个节点,以使得所述多个节点基于所述目标区块链网络构建指令指示的方式建立连接,形成目标结构类型的区块链网络;
测试模块1104,用于在所述目标结构类型的区块链网络下进行共识机制的测试,得到测试结果。
在一种实现方式中,生成模块1102,具体用于:
根据所述多个节点的特征信息生成至少一个区块链网络构建指令,每个所述区块链网络构建指令对应一种区块链网络的结构类型;
获取针对所述至少一个区块链网络构建指令的筛选策略;
根据所述筛选策略从所述至少一个区块链网络构建指令中筛选出目标区块链网络构建指令。
在一种实现方式中,所述特征信息包括互联网协议地址和端口,生成模块1102,具体用于:
根据所述多个节点的数量确定至少一种区块链网络的结构类型;
获取所述至少一种区块链网络的结构类型中每种结构类型对应的节点连接方式,并确定每个所述节点连接方式下所述多个节点之间的连接关系,所述连接关系指示了所述多个节点中需要连接的节点对应的连接信息,所述连接信息包括互联网协议地址之间的连接以及端口之间的连接;
基于每个所述节点连接方式下所述多个节点之间的连接关系,生成每个所述节点连接方式对应的区块链网络构建指令,得到至少一个区块链网络构建指令。
在一种实现方式中,所述筛选策略包括基于权重选择的策略,生成模块1102,具体用于:
获取所述至少一个区块链网络构建指令中每个区块链网络构建指令对应的区块链网络的结构类型,得到至少一种结构类型;
从历史记录中确定所述至少一种结构类型中每种结构类型的区块链网络的出现频次;
基于所述每种结构类型的区块链网络的出现频次,确定每种结构类型对应的区块链网络构建指令的权重;
依据权重由大到小的关系对所述至少一个区块链网络构建指令进行排序,并将排序为前K位的区块链网络构建指令确定为目标区块链网络构建指令,所述K为正整数。
在一种实现方式中,生成模块1102,具体用于:
确定所述至少一个区块链网络构建指令中每个区块链网络构建指令对应的拓扑图,并将所述每个区块链网络构建指令对应的拓扑图进行显示;
针对每个区块链网络构建指令对应的拓扑图,终端接收针对拓扑图中目标拓扑图输入的选择操作信息,所述目标拓扑图包括所述每个区块链网络构建指令对应的拓扑图中的一个或多个拓扑图;
将所述目标拓扑图对应的区块链网络构建指令确定为目标区块链网络构建指令。
在一种实现方式中,测试模块1104,具体用于:
向构成所述目标结构类型的区块链网络中的多个节点中的M个节点发送阻断指令,使得所述M个节点断开与所述多个节点中的其他节点之间的连接,得到断开连接后的目标结构类型的区块链网络,所述M为自然数;
获取测试用例,并将所述测试用例在所述断开连接后的目标结构类型的区块链网络中进行广播,以使得所述断开连接后的目标结构类型的区块链网络中的各个节点接收所述测试用例,并返回针对测试用例的校验结果;
接收所述各个节点返回的校验结果,并检测所述各个节点返回的校验结果的数量与预设数量是否相匹配;
若所述各个节点返回的校验结果的数量与预设数量匹配,则确定所述目标结构类型的区块链网络下的共识机制测试通过。
在一种实现方式中,测试模块1104,具体用于:
若所述各个节点返回的校验结果的数量与预设数量不匹配,则从所述目标结构类型的区块链网络中获取到未返回所述校验结果的目标节点;
获取所述目标节点与所述目标结构类型的区块链网络中其他节点之间的目标连接关系,并基于所述目标连接关系对所述目标结构类型的区块链网络进行故障检测,得到故障检测结果。
本发明实施例中,获取模块1101获取多个节点的特征信息,生成模块1102根据多个节点的特征信息生成目标区块链网络构建指令,发送模块1103将目标区块链网络构建指令发送至多个节点,以使得多个节点基于目标区块链网络构建指令指示的方式建立连接,形成目标结构类型的区块链网络,测试模块1104在目标结构类型的区块链网络下进行共识机制的测试,得到测试结果。通过实施上述方法,可以基于节点的特征信息构建区块链网络,并进行相应的共识机制测试,提升区块链网络结构测试效率以及测试准确率。
请参见图12,为本发明实施例提供的一种终端的结构示意图。如图12所示,该终端包括:至少一个处理器1201,输入设备1203,输出设备1204,存储器1205,至少一个通信总线1202。其中,通信总线1202用于实现这些组件之间的连接通信。其中,存储器1205可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1205可选的还可以是至少一个位于远离前述处理器1201的存储装置。其中处理器1201可以结合图11所描述的装置,存储器1205中存储一组程序代码,且处理器1201,输入设备1203,输出设备1204调用存储器1205中存储的程序代码,用于执行以下操作:
处理器1201,用于获取多个节点的特征信息;
处理器1201,用于根据所述多个节点的特征信息生成目标区块链网络构建指令;
处理器1201,用于将所述目标区块链网络构建指令发送至所述多个节点,以使得所述多个节点基于所述目标区块链网络构建指令指示的方式建立连接,形成目标结构类型的区块链网络;
处理器1201,用于在所述目标结构类型的区块链网络下进行共识机制的测试,得到测试结果。
在一种实现方式中,处理器1201,具体用于:
根据所述多个节点的特征信息生成至少一个区块链网络构建指令,每个所述区块链网络构建指令对应一种区块链网络的结构类型;
获取针对所述至少一个区块链网络构建指令的筛选策略;
根据所述筛选策略从所述至少一个区块链网络构建指令中筛选出目标区块链网络构建指令。
在一种实现方式中,所述特征信息包括互联网协议地址和端口,处理器1201,具体用于:
根据所述多个节点的数量确定至少一种区块链网络的结构类型;
获取所述至少一种区块链网络的结构类型中每种结构类型对应的节点连接方式,并确定每个所述节点连接方式下所述多个节点之间的连接关系,所述连接关系指示了所述多个节点中需要连接的节点对应的连接信息,所述连接信息包括互联网协议地址之间的连接以及端口之间的连接;
基于每个所述节点连接方式下所述多个节点之间的连接关系,生成每个所述节点连接方式对应的区块链网络构建指令,得到至少一个区块链网络构建指令。
在一种实现方式中,所述筛选策略包括基于权重选择的策略,处理器1201,具体用于:
获取所述至少一个区块链网络构建指令中每个区块链网络构建指令对应的区块链网络的结构类型,得到至少一种结构类型;
从历史记录中确定所述至少一种结构类型中每种结构类型的区块链网络的出现频次;
基于所述每种结构类型的区块链网络的出现频次,确定每种结构类型对应的区块链网络构建指令的权重;
依据权重由大到小的关系对所述至少一个区块链网络构建指令进行排序,并将排序为前K位的区块链网络构建指令确定为目标区块链网络构建指令,所述K为正整数。
在一种实现方式中,处理器1201,具体用于:
确定所述至少一个区块链网络构建指令中每个区块链网络构建指令对应的拓扑图,并将所述每个区块链网络构建指令对应的拓扑图进行显示;
针对每个区块链网络构建指令对应的拓扑图,终端接收针对拓扑图中目标拓扑图输入的选择操作信息,所述目标拓扑图包括所述每个区块链网络构建指令对应的拓扑图中的一个或多个拓扑图;
将所述目标拓扑图对应的区块链网络构建指令确定为目标区块链网络构建指令。
在一种实现方式中,处理器1201,具体用于:
向构成所述目标结构类型的区块链网络中的多个节点中的M个节点发送阻断指令,使得所述M个节点断开与所述多个节点中的其他节点之间的连接,得到断开连接后的目标结构类型的区块链网络,所述M为自然数;
获取测试用例,并将所述测试用例在所述断开连接后的目标结构类型的区块链网络中进行广播,以使得所述断开连接后的目标结构类型的区块链网络中的各个节点接收所述测试用例,并返回针对测试用例的校验结果;
接收所述各个节点返回的校验结果,并检测所述各个节点返回的校验结果的数量与预设数量是否相匹配;
若所述各个节点返回的校验结果的数量与预设数量匹配,则确定所述目标结构类型的区块链网络下的共识机制测试通过。
在一种实现方式中,处理器1201,具体用于:
若所述各个节点返回的校验结果的数量与预设数量不匹配,则从所述目标结构类型的区块链网络中获取到未返回所述校验结果的目标节点;
获取所述目标节点与所述目标结构类型的区块链网络中其他节点之间的目标连接关系,并基于所述目标连接关系对所述目标结构类型的区块链网络进行故障检测,得到故障检测结果。
本发明实施例中,处理器1201获取多个节点的特征信息,并根据多个节点的特征信息生成目标区块链网络构建指令,处理器1201将目标区块链网络构建指令发送至多个节点,以使得多个节点基于目标区块链网络构建指令指示的方式建立连接,形成目标结构类型的区块链网络,处理器1201在目标结构类型的区块链网络下进行共识机制的测试,得到测试结果。通过实施上述方法,可以基于节点的特征信息构建区块链网络,并进行相应的共识机制测试,提升区块链网络结构测试效率以及测试准确率。
本发明实施例中所述模块,可以通过通用集成电路,例如CPU(CentralProcessing Unit,中央处理器),或通过ASIC(Application Specific IntegratedCircuit,专用集成电路)来实现。
应当理解,在本发明实施例中,所称处理器1201可以是中央处理模块(CentralProcessing Unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
总线1202可以是工业标准体系结构(Industry Standard Architecture,ISA)总线、外部设备互联(Peripheral Component,PCI)总线或扩展工业标准体系结构(ExtendedIndustry Standard Architecture,EISA)总线等,该总线1202可以分为地址总线、数据总线、控制总线等,为便于表示,图12仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的计算机可读存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(RandomAccess Memory,RAM)等。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
Claims (10)
1.一种针对区块链网络结构的测试方法,其特征在于,所述方法包括:
获取多个节点的特征信息;
根据所述多个节点的特征信息生成目标区块链网络构建指令,所述目标区块链网络构建指令为根据所述多个节点的特征信息生成的至少一个区块链网络构建指令中的一个或多个,每个所述区块链网络构建指令对应一种区块链网络的结构类型;
将所述目标区块链网络构建指令发送至所述多个节点,以使得所述多个节点基于所述目标区块链网络构建指令指示的方式建立连接,形成目标结构类型的区块链网络;
在所述目标结构类型的区块链网络下进行共识机制的测试,得到测试结果。
2.根据权利要求1所述的方法,其特征在于,所述根据所述多个节点的特征信息生成目标区块链网络构建指令,包括:
根据所述多个节点的特征信息生成所述至少一个区块链网络构建指令;
获取针对所述至少一个区块链网络构建指令的筛选策略;
根据所述筛选策略从所述至少一个区块链网络构建指令中筛选出目标区块链网络构建指令。
3.根据权利要求2所述的方法,其特征在于,所述特征信息包括互联网协议地址和端口,所述根据所述多个节点的特征信息生成至少一个区块链网络构建指令,包括:
根据所述多个节点的数量确定至少一种区块链网络的结构类型;
获取所述至少一种区块链网络的结构类型中每种结构类型对应的节点连接方式,并确定每个所述节点连接方式下所述多个节点之间的连接关系,所述连接关系指示了所述多个节点中需要连接的节点对应的连接信息,所述连接信息包括互联网协议地址之间的连接以及端口之间的连接;
基于每个所述节点连接方式下所述多个节点之间的连接关系,生成每个所述节点连接方式对应的区块链网络构建指令,得到至少一个区块链网络构建指令。
4.根据权利要求2所述的方法,其特征在于,所述筛选策略包括基于权重选择的策略,所述根据所述筛选策略从所述至少一个区块链网络构建指令中筛选出目标区块链网络构建指令,包括:
获取所述至少一个区块链网络构建指令中每个区块链网络构建指令对应的区块链网络的结构类型,得到至少一种结构类型;
从历史记录中确定所述至少一种结构类型中每种结构类型的区块链网络的出现频次;
基于所述每种结构类型的区块链网络的出现频次,确定所述每种结构类型对应的区块链网络构建指令的权重;
依据权重由大到小的关系对所述至少一个区块链网络构建指令进行排序,并将排序为前K位的区块链网络构建指令确定为目标区块链网络构建指令,所述K为正整数。
5.根据权利要求2所述的方法,其特征在于,所述根据所述筛选策略从所述至少一个区块链网络构建指令中筛选出目标区块链网络构建指令,包括:
确定所述至少一个区块链网络构建指令中每个区块链网络构建指令对应的拓扑图,并将所述每个区块链网络构建指令对应的拓扑图进行显示;
针对所述每个区块链网络构建指令对应的拓扑图,接收针对所述拓扑图中目标拓扑图输入的选择操作信息,所述目标拓扑图包括所述每个区块链网络构建指令对应的拓扑图中的一个或多个拓扑图;
将所述目标拓扑图对应的区块链网络构建指令确定为目标区块链网络构建指令。
6.根据权利要求1所述的方法,其特征在于,所述在所述目标结构类型的区块链网络下进行共识机制的测试,包括:
向构成所述目标结构类型的区块链网络中的多个节点中的M个节点发送阻断指令,使得所述M个节点断开与所述多个节点中的其他节点之间的连接,得到断开连接后的目标结构类型的区块链网络,所述M为自然数;
获取测试用例,并将所述测试用例在所述断开连接后的目标结构类型的区块链网络中进行广播,以使得所述断开连接后的目标结构类型的区块链网络中的各个节点接收所述测试用例,并返回针对测试用例的校验结果;
接收所述各个节点返回的校验结果,并检测所述各个节点返回的校验结果的数量与预设数量是否相匹配;
若所述各个节点返回的校验结果的数量与所述预设数量匹配,则确定所述目标结构类型的区块链网络下的共识机制测试通过。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
若所述各个节点返回的校验结果的数量与所述预设数量不匹配,则从所述目标结构类型的区块链网络中获取到未返回所述校验结果的目标节点;
获取所述目标节点与所述目标结构类型的区块链网络中其他节点之间的目标连接关系,并基于所述目标连接关系对所述目标结构类型的区块链网络进行故障检测,得到故障检测结果。
8.一种针对区块链网络结构的测试装置,其特征在于,所述装置包括:
获取模块,用于获取多个节点的特征信息;
生成模块,用于根据所述多个节点的特征信息生成目标区块链网络构建指令,所述目标区块链网络构建指令为根据所述多个节点的特征信息生成的至少一个区块链网络构建指令中的一个或多个,每个所述区块链网络构建指令对应一种区块链网络的结构类型;
发送模块,用于将所述目标区块链网络构建指令发送至所述多个节点,以使得所述多个节点基于所述目标区块链网络构建指令指示的方式建立连接,形成目标结构类型的区块链网络;
测试模块,用于在所述目标结构类型的区块链网络下进行共识机制的测试,得到测试结果。
9.一种终端,其特征在于,包括处理器、输入接口、输出接口和存储器,所述处理器、输入接口、输出接口和存储器相互连接,其中,所述存储器用于存储计算机程序,所述计算机程序包括程序指令,所述处理器被配置用于调用所述程序指令,执行如权利要求1-7任一项所述的方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时使所述处理器执行如权利要求1-7任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011019262.4A CN112134762B (zh) | 2020-09-24 | 2020-09-24 | 针对区块链网络结构的测试方法、装置、终端和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011019262.4A CN112134762B (zh) | 2020-09-24 | 2020-09-24 | 针对区块链网络结构的测试方法、装置、终端和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112134762A CN112134762A (zh) | 2020-12-25 |
CN112134762B true CN112134762B (zh) | 2023-08-22 |
Family
ID=73841044
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011019262.4A Active CN112134762B (zh) | 2020-09-24 | 2020-09-24 | 针对区块链网络结构的测试方法、装置、终端和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112134762B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112256593B (zh) * | 2020-12-18 | 2021-04-02 | 腾讯科技(深圳)有限公司 | 一种程序处理方法、装置、计算机设备和可读存储介质 |
CN112995042B (zh) * | 2021-05-11 | 2021-08-17 | 深圳市科力锐科技有限公司 | 业务拓扑图的生成方法、装置、设备及存储介质 |
CN113824643B (zh) * | 2021-11-25 | 2022-02-22 | 中国科学院信息工程研究所 | 泛在网络拓扑图构建方法及网络安全防护方法 |
CN114091078A (zh) * | 2021-11-26 | 2022-02-25 | 中国联合网络通信集团有限公司 | 测试报告处理方法、测试平台和用户终端 |
CN114385488A (zh) * | 2021-12-17 | 2022-04-22 | 杭州趣链科技有限公司 | 区块链测试方法、装置、设备及存储介质 |
CN114422409A (zh) * | 2021-12-17 | 2022-04-29 | 深圳壹账通智能科技有限公司 | 区块链网络的测试方法、装置、设备及存储介质 |
CN114338711B (zh) * | 2021-12-27 | 2024-03-26 | 上海简苏网络科技有限公司 | 基于分布式网络的快速共识方法、系统、电子设备及可读存储介质 |
CN115174493B (zh) * | 2022-04-12 | 2023-07-14 | 北京理工大学 | 一种基于多线程管道技术的比特币节点探测方法 |
CN115225510B (zh) * | 2022-07-19 | 2024-01-23 | 北京天融信网络安全技术有限公司 | 一种区块链公链网络结构的获取方法、装置、电子设备 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7885204B1 (en) * | 2006-08-11 | 2011-02-08 | Cisco Technology, Inc. | Method and system for testing network topology |
US9525598B1 (en) * | 2014-11-13 | 2016-12-20 | Amazon Technologies, Inc. | Network testing device for automated topology validation |
CN108170590A (zh) * | 2017-12-12 | 2018-06-15 | 北京大学深圳研究生院 | 一种区块链系统的测试系统和方法 |
CN108769258A (zh) * | 2018-06-29 | 2018-11-06 | 上海点融信息科技有限责任公司 | 用于将区块链网络托管于区块链应用平台的方法和装置 |
CN109635165A (zh) * | 2018-12-06 | 2019-04-16 | 北京磁云数字科技有限公司 | 基于树形区块链网络的数据汇总方法、装置、设备及介质 |
CN109889386A (zh) * | 2019-03-05 | 2019-06-14 | 众安信息技术服务有限公司 | 区块链部署方法与系统 |
CN110598446A (zh) * | 2019-09-16 | 2019-12-20 | 腾讯科技(深圳)有限公司 | 基于区块链的测试方法、装置、存储介质和计算机设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11875400B2 (en) * | 2019-01-31 | 2024-01-16 | Salesforce, Inc. | Systems, methods, and apparatuses for dynamically assigning nodes to a group within blockchains based on transaction type and node intelligence using distributed ledger technology (DLT) |
-
2020
- 2020-09-24 CN CN202011019262.4A patent/CN112134762B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7885204B1 (en) * | 2006-08-11 | 2011-02-08 | Cisco Technology, Inc. | Method and system for testing network topology |
US9525598B1 (en) * | 2014-11-13 | 2016-12-20 | Amazon Technologies, Inc. | Network testing device for automated topology validation |
CN108170590A (zh) * | 2017-12-12 | 2018-06-15 | 北京大学深圳研究生院 | 一种区块链系统的测试系统和方法 |
CN108769258A (zh) * | 2018-06-29 | 2018-11-06 | 上海点融信息科技有限责任公司 | 用于将区块链网络托管于区块链应用平台的方法和装置 |
CN109635165A (zh) * | 2018-12-06 | 2019-04-16 | 北京磁云数字科技有限公司 | 基于树形区块链网络的数据汇总方法、装置、设备及介质 |
CN109889386A (zh) * | 2019-03-05 | 2019-06-14 | 众安信息技术服务有限公司 | 区块链部署方法与系统 |
CN110598446A (zh) * | 2019-09-16 | 2019-12-20 | 腾讯科技(深圳)有限公司 | 基于区块链的测试方法、装置、存储介质和计算机设备 |
Also Published As
Publication number | Publication date |
---|---|
CN112134762A (zh) | 2020-12-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112134762B (zh) | 针对区块链网络结构的测试方法、装置、终端和存储介质 | |
CN111741114B (zh) | 基于区块链的可监管跨链交互系统、方法及设备 | |
CN109787817B (zh) | 网络故障诊断方法、装置和计算机可读存储介质 | |
CN108092854B (zh) | 基于iec61375协议的列车级以太网设备的测试方法及装置 | |
CN112256593B (zh) | 一种程序处理方法、装置、计算机设备和可读存储介质 | |
CN107153646B (zh) | 一种数据处理方法和设备 | |
CN111461885B (zh) | 共识网络管理方法、装置、计算机以及可读存储介质 | |
CN111338608B (zh) | 分布式应用开发方法、装置、节点设备及可读存储介质 | |
JP2012150805A (ja) | システムアプリケーション処理に関連する詐欺を検出するシステムおよび方法 | |
CN111949531B (zh) | 区块链网络的测试方法、装置、介质及电子设备 | |
CN111679978B (zh) | 一种程序测试方法、程序测试装置、电子设备及存储介质 | |
CN111556115B (zh) | 一种基于区块链的数据处理方法、装置、设备及存储介质 | |
US11856426B2 (en) | Network analytics | |
CN110930254A (zh) | 基于区块链的数据处理方法、装置、终端及介质 | |
CN116155771A (zh) | 网络异常测试方法、装置、设备、存储介质和程序 | |
CN113194126A (zh) | 一种基于区块链的横向联邦学习模型构建方法 | |
CN110928880A (zh) | 基于区块链的数据处理方法、装置、终端及介质 | |
CN109739527A (zh) | 一种客户端灰度发布的方法、装置、服务器和存储介质 | |
CN111209339B (zh) | 区块同步方法、装置、计算机以及存储介质 | |
CN111654395A (zh) | 投票信息处理方法、装置、设备以及存储介质 | |
CN112202647B (zh) | 区块链网络中的测试方法、装置及测试设备 | |
CN115118621A (zh) | 一种基于依赖关系图的微服务性能诊断方法及系统 | |
JP2014035595A (ja) | 通信システムの試験装置、通信システムの試験用プログラム及び通信システムの試験方法 | |
CN110417567A (zh) | 一种物联网设备的配置方法和装置 | |
CN115659346A (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 |