CN117118986B - 基于区块链的容错验证方法、装置、设备及介质 - Google Patents

基于区块链的容错验证方法、装置、设备及介质 Download PDF

Info

Publication number
CN117118986B
CN117118986B CN202311392773.4A CN202311392773A CN117118986B CN 117118986 B CN117118986 B CN 117118986B CN 202311392773 A CN202311392773 A CN 202311392773A CN 117118986 B CN117118986 B CN 117118986B
Authority
CN
China
Prior art keywords
node
consensus
test
nodes
consensus node
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
Application number
CN202311392773.4A
Other languages
English (en)
Other versions
CN117118986A (zh
Inventor
陈金龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202311392773.4A priority Critical patent/CN117118986B/zh
Publication of CN117118986A publication Critical patent/CN117118986A/zh
Application granted granted Critical
Publication of CN117118986B publication Critical patent/CN117118986B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1042Peer-to-peer [P2P] networks using topology management mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/085Retrieval of network configuration; Tracking network configuration history
    • H04L41/0859Retrieval of network configuration; Tracking network configuration history by keeping history of different configuration generations or by rolling back to previous configuration versions
    • H04L41/0863Retrieval of network configuration; Tracking network configuration history by keeping history of different configuration generations or by rolling back to previous configuration versions by rolling back to previous configuration versions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L41/00Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
    • H04L41/08Configuration management of networks or network elements
    • H04L41/0876Aspects of the degree of configuration automation
    • H04L41/0886Fully automatic configuration
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/06Generation of reports
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/12Applying verification of the received information
    • H04L63/123Applying verification of the received information received data contents, e.g. message integrity
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/104Peer-to-peer [P2P] networks
    • H04L67/1074Peer-to-peer [P2P] networks for supporting data block transmission mechanisms
    • H04L67/1078Resource delivery mechanisms
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/50Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Automation & Control Theory (AREA)
  • Computer Hardware Design (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请的实施例公开了一种基于区块链的容错验证方法、装置、设备、介质及产品,该方法包括:获取区块链网络的拓扑图结构信息;根据拓扑图结构信息,生成滚动升级脚本,滚动升级脚本用于逐轮升级共识节点的区块链程序版本;基于滚动升级脚本识别共识节点升级中的断点,并基于断点触发执行用于验证区块链网络的拜占庭容错的测试用例,断点用于描述共识节点从历史程序版本向目标程序版本的过渡时间;若检测到区块链网络滚动升级完成,则基于测试用例生成拜占庭容错的测试报告。本申请实施例的技术方案可以结合自动化测试用例,在断点处持续、有效、自动化地验证区块链的拜占庭容错特性,且有效减少验证的成本。

Description

基于区块链的容错验证方法、装置、设备及介质
技术领域
本申请涉及区块链技术领域,具体而言,涉及一种基于区块链的容错验证方法、基于区块链的容错验证装置、电子设备、计算机可读存储介质及计算机程序产品。
背景技术
目前,在区块链技术领域中,针对拜占庭容错(BFT)的测试对于验证区块链的可用性至关重要,目前BFT测试方法涉及在一个由N个节点组成的区块链网络,然后故意破坏其中N/3个节点,例如关闭区块链进程或使节点宕机等,以形成拜占庭容错范围内的区块链网络,从而验证该区块链网络可用性。然而,这种传统方式构造成本高,需要停机、杀进程、断开网络等操作,且无法进行持续验证。
发明内容
本申请的实施例提供了一种基于区块链的容错验证方法、基于区块链的容错验证装置、电子设备、计算机可读存储介质及计算机程序产品,可以结合自动化测试用例,在断点处持续、有效、自动化地验证区块链的拜占庭容错特性,且有效减少验证的成本。
本申请的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本申请的实践而习得。
根据本申请实施例的一个方面,提供了一种基于区块链的容错验证方法,包括:获取区块链网络的拓扑图结构信息;根据所述拓扑图结构信息,生成滚动升级脚本,所述滚动升级脚本用于逐轮升级共识节点的区块链程序版本;基于所述滚动升级脚本识别所述共识节点升级中的断点,并基于所述断点触发执行用于验证区块链网络的拜占庭容错的测试用例,所述断点用于描述所述共识节点从历史程序版本向目标程序版本的过渡时间;若检测到所述区块链网络滚动升级完成,则基于所述测试用例生成拜占庭容错的测试报告。
根据本申请实施例的一个方面,提供了一种基于区块链的容错验证装置,所述装置包括:获取模块,用于获取区块链网络的拓扑图结构信息;生成模块,用于根据所述拓扑图结构信息,生成滚动升级脚本,所述滚动升级脚本用于逐轮升级共识节点的区块链程序版本;执行模块,用于基于所述滚动升级脚本识别所述共识节点升级中的断点,并基于所述断点触发执行用于验证区块链网络的拜占庭容错的测试用例,所述断点用于描述所述共识节点从历史程序版本向目标程序版本的过渡位置;生成模块,还用于若检测到所述区块链网络滚动升级完成,则基于所述测试用例生成拜占庭容错的测试报告。
在本申请的一实施例中,执行模块进一步用于在所述滚动升级脚本的运行过程中,根据所述共识节点的服务状态的变化识别所述滚动升级脚本中的当前断点,并在所述当前断点处执行所述测试用例;在所述当前断点对应的共识节点升级完成后,识别所述滚动升级脚本中的下一个断点,以执行所述测试用例;继续识别所述滚动升级脚本中的下一个断点,直至所述区块链网络滚动升级完成。
在本申请的一实施例中,所述拓扑图结构信息包括各共识节点的节点属性信息和各共识节点之间的连接关系;所述生成模块进一步用于根据所述各共识节点的节点属性信息和所述连接关系确定所述各共识节点的升级轮次;获取目标程序版本,并根据所述共识节点的节点属性信息和所述目标程序版本生成升级策略;基于所述各共识节点的升级轮次和所述升级策略生成所述滚动升级脚本。
在本申请的一实施例中,所述共识节点的节点属性信息包括所述共识节点的程序路径;所述生成模块进一步用于根据共识节点的程序路径对所述共识节点的历史程序版本进行备份,并将所述目标程序版本存储至所述程序路径;停止所述共识节点当前运行的历史程序版本,并启动所述目标程序版本;将更新目标程序版本后的共识节点与其他共识节点重新建立连接,以得到所述升级策略。
在本申请的一实施例中,所述共识节点的节点属性信息包括所述共识节点的配置信息;所述生成模块进一步用于根据所述区块链网络中共识节点的总数量,确定每轮待升级共识节点的数量;根据各共识节点的配置信息,确定各共识节点的升级优先级;根据每轮待升级共识节点的数量和各共识节点的升级优先级确定所述各共识节点的升级轮次。
在本申请的一实施例中,所述生成模块进一步用于根据所述各共识节点的节点编号,对所述各共识节点进行排序得到初始排序结果;根据所述各共识节点的性能信息和各共识节点之间的距离信息对所述初始排序结果进行调整,以确定所述各共识节点的升级优先级。
在本申请的一实施例中,所述执行模块进一步用于获取多个测试场景分别对应的测试用例,得到多个测试用例;在当前轮次共识节点的升级过程中,根据目标测试场景为当前区块链网络从所述多个测试用例中选择至少一个目标测试用例;所述当前区块链网络为除当前轮次共识节点外的其他共识节点所组成的网络;基于所述断点自动执行所述目标测试用例。
在本申请的一实施例中,所述执行模块还用于根据所述拜占庭容错的测试性质和容错程度生成针对所述拜占庭容错的测试目标;根据所述测试目标确定待覆盖的多个测试场景,其中,每个测试场景用于表征一种拜占庭攻击;根据所述多个测试场景确定测试所需的数据,以生成所述多个测试场景分别对应的测试用例。
在本申请的一实施例中,所述生成模块还用于根据所述测试用例获取当前区块链网络对应的服务测试状态;获取所述测试用例对应的服务期望状态;根据所述服务测试状态和所述服务期望状态生成所述当前区块链网络的拜占庭容错的子测试报告。
在本申请的一实施例中,生成模块进一步用于获取每轮升级触发的测试用例所对应的子测试报告,得到多个子测试报告,其中,每轮待升级共识节点的数量依次递增;从最后一轮升级对应的子测试报告为基点,对所述多个子测试报告依次进行遍历;若上一次遍历的子测试报告未达到预期,当前遍历的子测试报告达到预期,则根据所述当前遍历的子测试报告确定所述拜占庭容错的最大容错特性,以生成所述拜占庭容错的测试报告。
在本申请的一实施例中,生成模块进一步用于在所述区块链网络滚动升级完成后,对所述区块链网络的共识服务进行检测,以获取所述共识服务的运行状态;根据所述测试用例和所述共识服务的运行状态生成所述拜占庭容错的测试报告。
在本申请的一实施例中,所述装置还包括处理模块,用于基于所述拜占庭容错的测试报告确定所述共识节点中重复出现异常的目标节点;若所述目标节点的数量大于预设节点数量,则对所述区块链网络的共识节点的程序版本进行回滚处理;若所述目标节点的数量小于预设节点数量,则从所述区块链网络中移除所述目标节点。
根据本申请实施例的一个方面,提供了一种电子设备,包括一个或多个处理器;存储装置,用于存储一个或多个计算机程序,当所述一个或多个计算机程序被所述一个或多个处理器执行时,使得所述电子设备实现如上所述的基于区块链的容错验证方法。
根据本申请实施例的一个方面,提供了一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序被电子设备的处理器执行时,使电子设备执行如上所述的基于区块链的容错验证方法。
根据本申请实施例的一个方面,提供了一种计算机程序产品,包括计算机程序,所述计算机程序存储在计算机可读存储介质中,电子设备的处理器从所述计算机可读存储介质读取并执行所述计算机程序,使得所述电子设备执行如上所述的基于区块链的容错验证方法。
在本申请的实施例所提供的技术方案中,通过获取的区块链网络的拓扑图结构信息生成滚动升级脚本,该滚动升级脚本用于逐轮升级共识节点的区块链程序版本,进而基于滚动升级脚本自动识别共识节点升级中的断点,并基于断点触发执行测试用例,以自动验证区块链网络的拜占庭容错的特性,其中,断点用于描述共识节点从历史程序版本向目标程序版本的过渡时间,若检测到区块链网络滚动升级完成,则基于测试用例生成拜占庭容错的测试报告;也就是说,结合自动化测试用例,在断点处持续、有效、自动化地验证区块链的拜占庭容错特性,有效确保在滚动升级过程中***的安全性和一致性,且区块链网络滚动升级完成后,自动给出区块链网络在滚动升级过程中的拜占庭容错测试报告,确保在升级过程中保持拜占庭容错的能力,有效减少验证的成本。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术者来讲,在不付出创造性劳动的前提下还可以根据这些附图获得其他的附图。
图1A是区块链网络的结构示意图。
图1B是区块链中区块生成过程的示意图。
图1C是一种区块链拜占庭容错的示意图。
图2是本申请涉及的一种实施环境的示意图。
图3是本申请的一示例性实施例示出的一种基于区块链的容错验证方法的流程图。
图4是本申请的一示例性实施例示出的一种基于区块链的容错验证方法的流程图。
图5是本申请的一示例性实施例示出的另一种基于区块链的容错验证方法的流程图。
图6是本申请的一示例性实施例示出的另一种基于区块链的容错验证方法的流程图。
图7是本申请的一示例性实施例示出的另一种基于区块链的容错验证方法的流程图。
图8是本申请的一示例性实施例示出的另一种基于区块链的容错验证方法的流程图。
图9是本申请的另一示例性实施例示出的一种基于区块链的容错验证方法的流程图。
图10是本申请的另一示例性实施例示出的另一种基于区块链的容错验证方法的流程图。
图11是本申请的一示例性实施例示出的另一种基于区块链的容错验证方法的流程图。
图12是本申请的一示例性实施例示出的另一种基于区块链的容错验证方法的流程图。
图13是本申请的一示例性实施例示出的另一种基于区块链的容错验证方法的流程图。
图14是本申请的另一示例性实施例示出的一种基于区块链的容错验证方法的流程图。
图15是本申请的另一示例性实施例示出的一种节点重连的示意图。
图16是本申请的另一示例性实施例示出的另一种节点重连的示意图。
图17是本申请的另一示例性实施例示出的基于区块链的容错验证方法的流程图。
图18是本申请的另一示例性实施例示出的基于区块链的容错验证装置的结构框图。
图19示出了适于用来实现本申请实施例的电子设备的计算机***的结构示意图。
具体实施方式
这里将详细地对示例性实施例执行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
附图中所示的方框图仅仅是功能实体,不一定必须与物理上独立的实体相对应。即,可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
附图中所示的流程图仅是示例性说明,不是必须包括所有的内容和操作/,也不是必须按所描述的顺序执行。例如,有的操作/还可以分解,而有的操作/可以合并或部分合并,因此实际执行的顺序有可能根据实际情况改变。
还需要说明的是:在本申请中提及的“多个”是指两个或者两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
本申请实施例的技术方案涉及区块链技术领域,在介绍本申请实施例的技术方案之前,先简单介绍区块链技术。
区块链(Blockchain)是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链,本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。
请参阅图1A,区块链网络可以包括多个节点101,多个节点101可以是指区块链中各个客户端。每个节点101在进行正常工作可以接收到输入信息,并基于接收到的输入信息维护该区块链内的共享数据。为了保证区块链内的信息互通,区块链中的每个节点之间可以存在信息连接,节点之间可以通过上述信息连接进行信息传输。例如,当区块链中的任意节点接收到输入信息时,区块链中的其他节点便根据共识算法获取该输入信息,将该输入信息作为共享数据中的数据进行存储,使得区块链中全部节点上存储的数据均一致。
对于区块链中的每个节点,均具有与其对应的节点标识,而且区块链中的每个节点均可以存储有区块链中其他节点的节点标识,以便后续根据其他节点的节点标识,将生成的区块广播至区块链中的其他节点。每个节点中可维护一个节点标识列表,将节点名称和节点标识对应存储至该节点标识列表中。其中,节点标识可为IP(Internet Protocol,网络之间互联的协议)地址以及其他任一种能够用于标识该节点的信息。
可以理解的是,区块链网络中各个节点可以是服务器,也可以是客户端。其中服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式***,还可以是提供云服务、云数据库、云计算(Cloud Computing)、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(Content Delivery Network,内容分发网络)、以及大数据和智能平台等基础云计算服务的云服务器。其中客户端可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表、在汽车上使用的客户端、飞行器等,但并不局限于此。各个节点之间可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
在生成区块链中的各个区块时,参见图1B,区块链所在的节点在接收到输入信息时,对输入信息进行校验,完成校验后,将输入信息存储至内存池中,并更新其用于记录输入信息的哈希树;之后,将更新时间戳更新为接收到输入信息的时间,并尝试不同的随机数,多次进行特征值计算,直到找到合理特征值,将信息对应存储,生成区块头和区块主体,得到当前区块。随后,区块链所在节点根据区块链中其他节点的节点标识,将新生成的区块分别发送给其所在的区块链中的其他节点,由其他节点对新生成的区块进行校验,并在完成校验后将新生成的区块添加至其存储的区块链中。
在上述生成区块的过程中,打包区块、对外广播区块和其他节点验证,链入区块链的流程为共识流程;在本申请实施例中,共识流程包括拜占庭容错,该拜占庭容错问题是指允许少数节点故障或作恶情况下,达到分布式一致性的问题,例如如图1C所示,由4个共识节点组成的区块链网络,满足2F+1容错,也就是当有1个共识节点宕机、断网或者作恶时,不影响整体区块链的对外服务,当有2个或多于2个共识节点作恶、有问题时,区块链的共识受到影响,无法对外提供服务。
以下结合区块链技术对本申请实施例的技术方案进行详细介绍。
基于图1A所示的实施环境,本申请实施例的技术方案可以由区块链网络中的任意一个共识节点执行;本申请实施例的技术方案也可以由用于管理共识节点的管理设备210执行,如图2所示,以管理设备为例进行说明。
管理设备用于获取区块链网络的拓扑图结构信息;根据拓扑图结构信息,生成滚动升级脚本,滚动升级脚本用于逐轮升级共识节点的区块链程序版本;基于滚动升级脚本识别共识节点升级中的断点,并基于断点触发执行用于验证区块链网络的拜占庭容错的测试用例,断点用于描述共识节点从历史程序版本向目标程序版本的过渡时间;若检测到区块链网络滚动升级完成,则基于测试用例生成拜占庭容错的测试报告。
其中,拜占庭容错是指在分布式***中,即使有部分节点出现故障或恶意操作,***仍然能够达成共识并保持正确运行。
需要说明的是,在本申请的具体实施方式中,若脚本和测试用例涉及到对象相关,则当本申请实施例运用到具体产品或技术中时,需要获得对象许可或者同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关规定和标准。
以下对本申请实施例的技术方案的各种实现细节进行详细阐述。
如图3所示,图3是本申请的一个实施例示出的基于区块链的容错验证方法的流程图,该方法可以应用于图1A或图2所示的实施环境,该方法可以由图1A中所示的共识节点或图2中所示的管理设备来执行,该基于区块链的容错验证方法可以包括步骤S310至步骤S340,详细介绍如下。
S310、获取区块链网络的拓扑图结构信息。
本申请实施例中,区块链网络的拓扑图包括网络中节点数量,各个节点的位置和连接关系,拓扑图结构信息包括各个节点的节点属性信息,该节点属性信息包括各个节点的位置信息。
在一示例中,可以在区块链网络的预发布环境或测试环境中,获取区块链网络的拓扑图结构信息。
在另一示例中,该区块链网络为模拟的区块链网络,则拓扑图结构信息为模拟的拓扑图结构信息。
S320、根据拓扑图结构信息,生成滚动升级脚本,滚动升级脚本用于逐轮升级共识节点的区块链程序版本。
在本申请实施例中,滚动升级是一种升级策略,它允许在不中断整个网络的情况下逐步升级网络的一部分节点;滚动升级脚本用于逐轮升级共识节点的区块链程序版本,该区块链程序用于为共识节点提供共识服务,该区块链程序版本支持向前兼容;逐轮升级是指按照预设的轮次依次升级共识节点;其中,在一个升级轮次中,可以有一个共识节点,也可以有多个共识节点;在滚动升级版本中所有共识节点都按照同样的方式进行升级。
通过拓扑图结构信息可以获知网络的当前状态和组成部分,进而根据拓扑图结构信息可以生成自动执行的滚动升级脚本,以使得该脚本知道在哪些节点上执行哪些操作,其中该脚本具体包含了对每个共识节点进行升级所需的操作。
S330、基于滚动升级脚本识别共识节点升级中的断点,并基于断点触发执行用于验证区块链网络的拜占庭容错的测试用例,断点用于描述共识节点从历史程序版本向目标程序版本的过渡时间。
在本申请实施例中,基于滚动升级脚本识别共识节点升级中的断点,该断点是升级中的关键步骤,标志着节点从历史程序版本向目标程序版本的过渡,该目标程序版本可以为最新程序版本,也可以为某一个历史程序版本,例如当前历史程序版本为v3,目标程序版本可以为v1或v2。
在一示例中,由于滚动升级脚本用于升级共识节点的区块链程序版本,在滚动升级脚本的运行过程中,在每次共识节点切换到目标程序版本时,都会有一个短暂的时间段,即历史程序版本向目标程序版本的过渡时间段,因此,通过滚动升级脚本可以识别出升级中的断点。
可以理解的是,在区块链网络中,拜占庭容错是非常重要的特性,因为它可以保证网络的安全性和可靠性,因此,在这些断点处,需要验证网络是否具有拜占庭容错性,则需要通过预先编写好的自动化测试用例的执行来模拟各种场景,以检查网络和应用的状态,因此本申请实施例中,基于断点触发执行测试用例,即识别到断点后,自动执行测试用例,通过该测试用例验证区块链网络的拜占庭容错。
在一示例中,测试用例可以由多个,基于断点触发执行一个或多个测试用例,该多个测试用例的测试内容不同,例如一个测试用例用于检查交易是否被正确打包和确认,没有出现丢失或者重复的情况,又如一个测试用例用于检查账户或者合约的状态是否与预期一致,没有出现数据不一致或者错误的情况。
S340、若检测到区块链网络滚动升级完成,则基于测试用例生成拜占庭容错的测试报告。
在每个共识节点的程序版本均升级完成时,检测该区块链网络滚动升级完成,由于测试用例用于验证区块链网络的拜占庭容错,此时可以基于测试用例来生成区块链网络的拜占庭容错的测试报告,该测试报告提供了有关区块链网络在滚动升级过程中容错性能的详细信息,其可以是区块链网络是否具有拜占庭容错,也可以是在具有拜占庭容错时的容错程度,在此不进行限定。
本申请实施例中,通过获取的区块链网络的拓扑图结构信息生成滚动升级脚本,该滚动升级脚本用于逐轮升级共识节点的区块链程序版本,进而基于滚动升级脚本自动识别共识节点升级中的断点,并基于断点触发执行测试用例,以自动验证区块链网络的拜占庭容错的特性,其中,断点用于描述共识节点从历史程序版本向目标程序版本的过渡时间,若检测到区块链网络滚动升级完成,则基于测试用例生成拜占庭容错的测试报告;也就是说,结合自动化测试用例,断点处持续、有效、自动化地验证区块链的拜占庭容错特性,有效确保在滚动升级过程中***的安全性和一致性,且区块链网络滚动升级完成后,自动给出区块链网络在滚动升级过程中的拜占庭容错测试报告,有效减少验证的成本。
在本申请的一个实施例中,提供了另一种基于区块链的容错验证方法,该方法可以应用于图1A或图2所示的实施环境,该方法可以由图1A中所示的共识节点或图2中所示的管理设备来执行,如图4所示,该基于区块链的容错验证方法在图3的基础上,将步骤S330扩展为S410~S430。步骤S410~S430详细介绍如下。
S410、在滚动升级脚本的运行过程中,根据共识节点的服务状态的变化识别滚动升级脚本中的当前断点,并在当前断点处执行测试用例。
在本申请实施例中,管理设备可以通过运行滚动升级脚本实现对共识节点的升级,在滚动升级脚本的运行过程中,共识节点的程序版本会发生变化,对应的共识节点的服务状态也会发生变化,因此,可通过共识节点的服务状态的变化来确定滚动升级脚本中共识节点的程序版本发生变化,以识别滚动升级脚本中的当前断点,该当前断点是当前升级的共识节点从历史程序版本向目标程序版本的当前过渡时间,进而在过渡时间内自动触发执行测试用例。
在一示例中,共识节点从历史程序版本向目标程序版本过渡时,其服务状态会发生短暂的变化,该短暂的变化可以是服务状态发生了停止,如共识节点1的服务状态从运行转换为停止,再从停止转换为运行,此时,可将该两个相邻运行之间的时间作为当前断点;该短暂的变化也可以是服务状态对应的状态信息发生了不同,如共识节点1的服务状态未发生停止,但对应的状态信息从状态1转换为状态2,将状态1转换为状态2的转换时间作为当前断点。
S420、在当前断点对应的共识节点升级完成后,识别滚动升级脚本中的下一个断点,并执行测试用例。
如前所描述的,共识节点是分轮次升级的,即在不同时间的断点,对应不同轮次的共识节点;在当前断点对应的共识节点升级完成后,即当前断点对应的共识节点的程序版本已为目标程序版本时,继续识别滚动升级脚本中的下一个断点,该下一个断点即下一个轮次中共识节点的版本过渡时间;例如共识节点1和共识节点2是两个相邻轮次升级的共识节点,共识节点1对应的过渡时间对应当前断点,共识节点2对应的过渡时间对应下一个断点,在下一个断点处自动触发执行该测试用例。
S430、继续识别滚动升级脚本中的下一个断点,直至区块链网络滚动升级完成。
在本申请实施例中,在下一个断点对应的共识节点升级完成后,继续识别滚动升级脚本中下一个断点,以执行测试用例,直至识别到滚动升级脚本中最后一个断点后,区块链网络滚动升级完成,即所有共识节点的程序版本都升级至目标程序版本。
在一示例中,不同断点处执行的测试用例可以相同,也可以不同,在此不进行限定。
需要说明的是,图4中所示步骤S310~S320、S340的其他详细介绍请参见图3所示的步骤S310~S320、S340,在此不再赘述。
本申请实施例中,通过滚动升级脚本实现对共识节点版本的升级,而在脚本运行过程中,通过共识节点的服务状态的变换识别断点,保证识别的准确性,且在当前断点对应的共识节点升级完成后,继续识别滚动升级脚本中的下一个断点,保证共识节点升级的可靠性,避免漏升级。
本申请实施例提供了另一种基于区块链的容错验证方法,该基于区块链的容错验证方法可以应用于图1A或图2所示的实施环境,该方法可以由图1A中所示的共识节点或图2中所示的管理设备来执行,如图5所示,该基于区块链的容错验证方法在图3的基础上,将步骤S320扩展为步骤S510~S530。其中,S310中的拓扑图结构信息包括各共识节点的节点属性信息和共识节点之间的连接关系。步骤S510~S530详细介绍如下。
S510、根据各共识节点的节点属性信息和连接关系确定各共识节点的升级轮次。
在本申请实施例中,不是所有的共识节点都能同时升级,因此需要确定各共识节点的升级轮次;其中,节点属性信息用于描述属于节点的特性信息,节点属性信息包括节点的节点类型、硬件配置、网络带宽、性能数据、地理位置信息;共识节点之间的连接关系包括邻接关系以及其邻接的距离,通过各共识节点的节点属性信息可以帮助确定升级轮次,通过连接关系可以确定升级轮次可能产生的影响,因此通过节点属性和连接关系可以合理地确定各共识节点的升级轮次,最大程度地减少升级本身对区块链网络的潜在影响。
在一示例中,可以通过各共识节点的节点属性信息确定各共识节点的初始升级轮次,通过连接关系对该初始升级轮次进行调整,得到最终的各共识节点的升级轮次。
S520、获取目标程序版本,并根据共识节点的节点属性信息和目标程序版本生成升级策略。
在本申请实施例中,目标程序版本为一最新的程序版本,该目标程序版本支持向前兼容;管理设备可以基于区块链的DAPP(去中心化应用程序)获取该目标程序版本,也可以接收第三方可信程序开发方发送的目标程序版本。
在获取目标程序版本后,由于节点属性信息可以描述属于节点的特性信息,管理设备可以根据各共识节点的节点属性信息和目标程序版本为各共识节点生成升级计划,进而通过各个共识节点的升级计划组合得到升级策略。需要说明的是,该升级策略包括升级必要的操作步骤。
S530、基于各共识节点的升级轮次和升级策略生成滚动升级脚本。
在本申请实施例中,通过升级策略可以生成脚本的框架或模板,该框架包括升级必要的操作步骤,根据各共识节点的升级轮次可以填充框架中占位符,以得到滚动升级脚本。
需要说明的是,图5中所示步骤S310、S330~S340的详细介绍请参见图4所示的步骤S310、S330~S340在此不再赘述。
本申请实施例中,通过节点的节点属性信息和节点之间的连接关系确定升级轮次,并通过节点属性信息和目标程序版本生成升级策略,进而基于升级轮次和升级策略生成升级脚本,保证升级脚本的合理性,且保证节点能有序、可靠的升级。
本申请实施例还提供了另一种基于区块链的容错验证方法,该基于区块链的容错验证方法可以应用于图1A或图2所示的实施环境,该方法可以由图1A中所示的共识节点或图2中所示的管理设备来执行,如图6所示,该基于区块链的容错验证方法在图5中所示的基础上,将S520扩展为S610~S630。步骤S610~S630详细介绍如下。
S610、根据共识节点的程序路径对共识节点的历史程序版本进行备份,并将目标程序版本存储至程序路径。
S620、停止共识节点当前运行的历史程序版本,并启动目标程序版本。
S630、将更新目标程序版本后的共识节点与其他共识节点重新建立连接以得到升级策略。
在本申请实施例中,通过S610~S630得到升级策略,其中,为了防止升级过程中出现问题,而确保后续版本回滚,需要备份共识节点的历史程序版本,此外,还可以备份共识节点的区块数据,以确保数据的安全性;其中,在备份程序版本时,可以从共识节点的程序路径中提取历史程序版本进行备份,此外,在获取目标程序版本后,该将目标程序版本和相关的配置文件存储至程序路径。
之后停止当前运行的历史程序版本,启动目标程序版本,并控制目标程序版本按照预期方式运行,以保证目标程序版本的正常运行。
由于部分共识节点升级至目标程序版本,而部分共识节点仍是历史程序版本,由于新旧版本的程序可能存在不兼容的情况,所以原先建立的peer-to-peer连接需要断开并重新建立,进而升级程序版本后的共识节点就可以与其他节点进行通信和同步,而未升级程序版本的其他共识节点之间的peer-to-peer连接无需重新建立。
在一示例,在更新目标程序版本后的共识节点的连接断开、重连的过程也可以当作共识节点从历史程序版本向目标程序版本的过渡过程;其中,更新程序版本的共识节点与其他共识节点重新建立连接可以是一一与其他共识节点重新建立连接,也可以同时与多个其他共识节点重新建立连接,其可以根据其他共识节点的数量确定,如其他共识节点的数量小于一定阈值,则一一重新建立连接,否则,同时多个重新建立连接。重新建立连接还可以是根据所需触发的测试用例的数量或类型确定,如测试用例的数量越多,或测试用例所需执行时间越久,则一一重新建立连接,否则,同时多个重新建立连接。
需要说明的是,图6中所示的步骤S310、S510、S530、S330~S340的其他详细介绍请参见图5中所示的步骤S310、S510、S530、S330~S340,在此不再赘述。
本申请实施例中,通过对历史程序版本进行备份,上传目标程序版本,停止历史版本,启动程序版本,并重新建立连接,保证了版本升级的有序性和可靠性。
在本申请的一个实施例中,还提供了另一种基于区块链的容错验证方法,该基于区块链的容错验证方法可以应用于图1A或图2所示的实施环境,该方法可以由图1A中所示的共识节点或图2中所示的管理设备来执行,如图7所示,该基于区块链的容错验证方法在图5中所示的基础上,将S510扩展为S710~S730,步骤S710~S730详细介绍如下。
S710、根据区块链网络中共识节点的总数量,确定每轮待升级共识节点的数量。
在本申请实施例中,区块链网络中共识节点的总数量越多,每轮待升级共识节点的数量越多,而通过每轮待升级共识节点的数量,可以确定拜占庭容错的容错度。在一示例中,区块链网络中共识节点的总数量小于预设数量阈值,则可以确定每轮待升级共识节点的数量为一个;区块链网络中共识节点的总数量小于预设数量阈值,则可以确定每轮待升级共识节点的数量为至少两个,如每轮待升级共识节点的数量依次增长,假设共识节点的总数量为10个,第一轮待升级共识节点的数量为2个,第二轮待升级共识节点的数量为3个,第三轮待升级共识节点的数量为4个等。
S720、根据各共识节点的配置信息,确定各共识节点的升级优先级。
在本申请实施例中,节点属性信息包括配置信息,而不同共识节点的配置信息不同;在一示例中,该配置信息包括硬件配置和网络带宽,具有高性能硬件和网络带宽的共识节点,其对应的升级优先级越高,以便于提高整个网络性能。
S730、根据每轮待升级共识节点的数量和各共识节点的升级优先级确定各共识节点的升级轮次。
在本申请实施例中,在确定每轮待升级共识节点的数量后,可以依据各共识节点的升级优先级,选择每轮待升级共识节点,进而确定各共识节点的升级轮次,可以理解的是,共识节点的升级优先级越高,其对应的升级轮次越靠前。例如共识节点1~6,对应的升级优先级为1~6,每轮待升级共识节点的数量为2,则第一轮升级的共识节点为节点1~2,第二轮升级的共识节点为节点3~4,第三轮升级的共识节点为节点5~6。
需要说明的是,图7中所示的步骤S310、S520~S530、S330~S340的其他详细介绍请参见图5所示的步骤S310、S520~S530、S330~S340,在此不再赘述。
本申请实施例,通过区块链网络中共识节点的总数量来确定每轮待升级共识节点的数量,并结合确定的各共识节点的升级优先级,使得所确定的共识节点的升级轮次符合区块链网络的实际情况,更加有利于区块链网络自身的稳定。
本申请实施例提供了一种基于区块链的容错验证方法,该基于区块链的容错验证方法包括可以应用于图1A或图2所示的实施环境,该方法可以由图1A中所示的共识节点或图2中所示的管理设备来执行,如图8所示,该基于区块链的容错验证方法在图7中所示的基础上,将S720扩展为S810~S820。步骤S810~S820详细介绍如下。
S810、根据各共识节点的节点编号,对各共识节点进行排序得到初始排序结果。
每个共识节点分别对应有唯一的节点编号,通过节点编号可以区分不同的共识节点,因此,本申请实施例中,可以根据各共识节点的节点编号的大小,对各共识节点排序得到初始排序结果。
在一示例中,各共识节点的节点编号可以与共识节点加入区块链网络的顺序相关,即接入区块链网络越早,该节点编号也小。
在其他实施例中,还可以对共识节点进行随机排序,得到初始排序结果。
S820、根据各共识节点的性能信息和各共识节点之间的距离信息对初始排序结果进行调整,以确定各共识节点的升级优先级。
在本申请实施例中,节点的配置信息包括节点的性能信息,该性能信息是基于节点硬件配置和网络带宽决定的,高性能信息的节点优先升级有助于整体网络性能;节点的配置信息还包括节点的地理位置,通过各节点的地理位置可以获知各节点之间的距离信息,由于节点的地理位置可能影响数据传输延迟,因此在确定一个共识节点后,优先考虑距离较近的其他节点,因此,本申请实施例,可基于各共识节点的性能信息和节点之间的距离信息对初始排序结果进行调整。
例如,初始排序结果为节点1~6,而节点2的性能最优,则将节点2排序至第一,节点1和节点3的性能较优,且性能相差小于预设阈值,但节点3离节点2的距离相当于节点1离节点2的距离更近,则将节点3排序至第二,将节点1排序至第三;但若节点1和节点3相差大于预设阈值,而节点1的性能优于节点3,可以不考虑距离,直接将节点1排序第二,将节点3排序第三;假设节点4~节点6的性能相同,且距离节点2的距离相差小于预设距离值,将无需调整节点4~节点6之间的排序,最终得到各共识节点的升级优先级为节点2、节点3、节点1、节点4~6。
在一示例中,在对初始排序结果进行调整,可以直接将主共识节点排序第一,而无需考虑性能,以确保主要共识功能的连续性。
需要说明的是,图8中所示的步骤S310、S710、S730、S520~S530、S330~S340的其他详细介绍请参见图7所示的步骤S310、S710、S730、S520~S530、S330~S340,在此不再赘述。
在本申请实施例中,通过节点编号对节点进行排序得到初始排序结果,通过节点的性能信息和节点之间的距离信息对排序结果进行调整,使得共识节点的升级优先级确定符合节点自身的属性,保证升级优先级确定的可靠性。
本申请实施例提供了另一种基于区块链的容错验证方法,该基于区块链的容错验证方法包括可以应用于图1A或图2所示的实施环境,该方法可以由图1A中所示的共识节点或图2中所示的管理设备来执行,如图9所示,该基于区块链的容错验证方法在图3的基础上,将S330扩展为S910~S930。其中,步骤S910~S930详细介绍如下。
S910、获取多个测试场景分别对应的测试用例,得到多个测试用例。
S920、基于滚动升级脚本识别共识节点升级中的断点,并在当前轮次共识节点的升级过程中,根据目标测试场景为当前区块链网络从多个测试用例中选择至少一个目标测试用例。
S930、基于断点自动执行目标测试用例。
在本申请实施例中,测试用例有多个,而每个测试用例对应不同的测试场景,在一示例中,一种测试场景代表一种可能的拜占庭攻击或网络故障;一种测试场景也可以代表一种区块链操作,如合约读取、写入操作;区块打包和确认操作等。测试用例是根据测试场景预先编写的,其可以是区块链节点编写的,也可以是其他第三方设备编写的。
在当前轮次共识节点的升级过程中,识别到当前断点,即当前轮次共识节点从历史程序版本过渡至目标程序版本时,需要根据目标测试场景为当前区块链网络选择至少一个目标测试用例,其中当前区块链网络为除当前轮次共识节点外的其他共识节点所组成的网络。
目标测试场景可以是任意一个测试场景,也可以是未使用的一个测试场景,还可以是根据当前轮次共识节点的节点性能水平所对应的测试场景,节点性能水平即当前轮次共识节点性能的平均值,不同的节点性能水平对应的测试场景不同,且节点性能水平越高,其对应的目标测试场景的场景越丰富,对应的测试用例的内容越多。例如当前轮次共识节点的性能水平为中等,则对应的目标测试场景为基本区块操作场景;当前共识节点的性能水平为高等,则对应的目标测试场景为区块共识场景。
若在断点处自动执行至少两个目标测试用例时,该至少两个目标测试用例的执行顺序可以一个接一个执行,在该至少两个目标测试用例的执行不冲突时,也可以同时执行,在此不进行限定。
需要说明的是,图9中所示的步骤S310~S320、S340的其他详细介绍请参见图3所示的步骤S310~S320、S340,在此不再赘述。
本申请实施例中,有多个测试场景分别对应的测试用例,进而在每轮次共识节点的升级过程中,选择对应的测试用例,并在断点自动执行测试用例,使得测试用例满足各种场景,测试更加全面和可靠。
本申请实施例提供了另一种基于区块链的容错验证方法,该基于区块链的容错验证方法包括可以应用于图1A或图2所示的实施环境,该方法可以由图1A中所示的共识节点或图2中所示的管理设备来执行,如图10所示,该基于区块链的容错验证方法在图9中所示的基础上,将S910扩展为步骤S1010~S1030。其中,步骤S1010~S1030详细介绍如下。
S1010、根据拜占庭容错的测试性质和容错程度生成针对拜占庭容错的测试目标。
S1020、根据测试目标确定待覆盖的多个测试场景。
S1030、根据多个测试场景确定测试所需的数据,以生成多个测试场景分别对应的测试用例。
在本申请实施例中,拜占庭容错的测试性质用于描述测试方向和容错的故障类型,测试方向包括节点操作、消息传递、共识算法的容错性,容错的故障类型例如测试是否针对拜占庭攻击的容错性,或者测试网络在节点宕机时的恢复能力;拜占庭容错的容错程度用于描述最大所能容错的程度,即容忍多少个拜占庭节点或错误操作;基于定义的测试性质和容错程度,生成具体的测试目标,这些目标可以是针对不同容错情景的目标,例如测试网络中多个节点同时出现拜占庭操作时的容错性能,或者测试单一节点拜占庭操作对***的影响。
根据测试目标,确定需要覆盖的不同测试场景,其中测试场景包括各种可能的拜占庭容错情况,例如情景可能包括节点宕机、消息篡改、双花攻击等;对于每个测试场景,需要定义所需的测试数据,测试所需的数据包括用例准备数据,包括初始化区块链网络、准备攻击工具、配置节点状态等,测试所需的数据还包括用例执行数据,包括输入数据、节点状态、消息传递情况等。可以理解的是,测试数据应该足够复杂和多样,以模拟真实的拜占庭情况。
基于测试场景和定义的测试数据,生成测试用例。在一示例中,每个测试用例应该包括以下内容:输入数据和参数;预期的测试结果或操作;测试执行的步骤和顺序;预期的容错性能指标(如网络是否能够正确检测和处理拜占庭节点)。
需要说明的是,图10中所示的步骤S310~S320、S920~S930、S340的其他详细介绍请参见图9所示的步骤S310~S320、S920~S930、S340,在此不再赘述。
本申请实施例中,通过拜占庭容错的测试目标确定待覆盖的多个测试场景,进而通过测试场景确定测试所需的数据,可以有效生成针对拜占庭容错的测试用例,对区块链的容错性能进行全面的测试和验证。
值得注意的是,本申请实施例提供了另一种基于区块链的容错验证方法,该基于区块链的容错验证方法可以应用于图1A或图2所示的实施环境,该方法可以由图1A中所示的共识节点或图2中所示的管理设备来执行,如图11所示,在图3所示的方法的基础上,在S330之后增加步骤S1110~S1130,详细介绍如下。
S1110、根据测试用例获取当前区块链网络对应的服务测试状态。
S1120、获取测试用例对应的服务期望状态。
S1130、根据服务测试状态和服务期望状态生成当前区块链网络的拜占庭容错的子测试报告。
在本申请实施例中,在自动执行测试用例时,可以通过测试区块链网络的功能和性能;当前区块链网络对应的服务测试状态用于描述在测试用例下,共识节点所实际发生的操作或响应;测试用例对应有服务期望状态,用于描述在共识节点在测试用例下期望发生的操作或响应。例如测试用例用于验证升级过程中的各个用例关键步骤是否按照预期执行,假设测试用例为发送一些交易到网络中,并检查是否能够被正确打包和确认,服务期望状态为交易能够被正常打包和确认的响应。
服务测试状态为在实际中共识节点按照测试用例实际发生的响应,将服务测试状态和服务期望状态进行对比,生成当前区块链网络的拜占庭容错的子测试报告。若服务测试状态和服务期望状态相同,则可以生成当前区块链网络具有拜占庭容错的子测试报告;若服务测试状态和服务期望状态不同,可以直接生成当前区块链网络可能不具备拜占庭容错的子测试报告,也可以进一步基于当前区块链网络的节点数量来确定拜占庭容错的子测试报告。
需要说明的是,在每轮共识节点升级过程中,都会生成一轮子测试报告。
需要说明的是,图11中所示的步骤S310~S340的其他详细介绍请参见图3所示的步骤S310~S340,在此不再赘述。
本申请实施例,通过测试用例对应的服务测试状态和服务期望状态可以有效生成当前区块链网络的拜占庭容错的测试报告,以便于获知当前区块链网络的相关性能情况。
本申请实施例提供了另一种基于区块链的容错验证方法,该基于区块链的容错验证方法包括可以应用于图1A或图2所示的实施环境,该方法可以由图1A中所示的共识节点或图2中所示的管理设备来执行,如图12所示,该基于区块链的容错验证方法在图3中所示的基础上,将S340扩展为步骤S1210~S1230。步骤S1210~S1230详细介绍如下。
S1210、获取每轮升级触发的测试用例所对应的子测试报告,得到多个子测试报告,其中,每轮待升级共识节点的数量依次递增。
在本申请实施例中,每轮升级会触发测试用例,则每轮都会生成一子测试报告,在区块链网络滚动升级完成后,会得到多轮升级分别对应的多个子测试报告;其中,在每轮升级中待升级共识节点的数量依次递增,例如,第一轮升级中待升级共识节点为1个,第二轮升级中待升级共识节点为2个等。
S1220、从最后一轮升级对应的子测试报告为基点,对多个子测试报告依次进行遍历。
S1230、若上一次遍历的子测试报告未达到预期,当前遍历的子测试报告达到预期,则根据当前遍历的子测试报告确定拜占庭容错的最大容错特性,以生成拜占庭容错的测试报告。
由于每轮中待升级共识节点的数量依次递增,则每轮的区块链网络的节点依次减少,最后一轮升级的区块链网络中的节点最少,通过不同轮次的区块链网络的性能,可以来确定包含所有共识节点的区块链网络的拜占庭容错的性能,如第一轮升级的区块链网络的容错最大,最后一轮升级的区块链网络的容错最小。
其中,对于多个子测试报告,从最后一轮升级对应的子测试报告为基点,对多个子测试报告依次进行遍历,若上一次遍历的子测试报告未达到预期,则表示上一次遍历的子测试报告对应的区块链网络不具备拜占庭容错;当前遍历的子测试报告达到预期,则表示当前遍历的子测试报告对应的区块链网络具备拜占庭容错,此时,可以根据当前遍历的子测试报告确定拜占庭容错的最大容错特性,进而生成拜占庭容错的测试报告。
例如上一次遍历的子测试报告未达到预期,上一次遍历的子测试报告对应的区块链网络中的节点数量为4个,当前遍历的子测试报告对应的区块链网络中的节点数量为3个,则表示包含所有共识节点5个的区块链网络的拜占庭容错的最大容错为2个,进而生成拜占庭容错的测试报告。
需要说明的是,图12中所示的步骤S310~S330的其他详细介绍请参见图3所示的步骤S310~S330,在此不再赘述。
本申请实施例中,在获取每轮升级触发的测试用例所对应的子测试报告后,从最后一轮升级对应的子测试报告开始遍历,可以快速的拜占庭容错的最大容错特性,进而及时有效生成拜占庭容错的测试报告。
本申请实施例提供了另一种基于区块链的容错验证方法,该方法可以应用于图1A或图2所示的实施环境,该方法可以由图1A中所示的共识节点或图2中所示的管理设备来执行,如图13所示,该基于区块链的容错验证方法在图3的基础上,将S340扩展为S1310~S1320,详细介绍如下。
S1310、在区块链网络滚动升级完成后,对区块链网络的共识服务进行检测,以获取共识服务的运行状态。
在本申请实施例中,在区块链网络滚动升级完成后,还要进行一些全面的测试和验证,以检查区块链网络是否能够正常运行,以及目标程序版本是否可靠,具体的,对区块链网络的共识服务进行检测,如检查所有节点是否能够正常参与共识,并且达成一致的区块链状态,进而获取共识服务的运行状态,该共识服务的运行状态包括共识服务正常,即所有节点能够正常参与共识,且达成一致;共识服务的运行状态包括共识服务异常,即部分节点不能正常参与共识,或不能达成一致的区块链状态。
在一示例中,还可以先检测所有节点的版本是否一致,并且与预期的目标程序版本相符,在版本检测通过后,再检测共识服务;此外,还可以检查网络的吞吐量和延迟是否符合预期,没有出现明显的下降或者波动;检查网络的安全性和可靠性是否符合预期,能够抵抗一定比例的故障或者攻击。
S1320、根据测试用例和共识服务的运行状态生成拜占庭容错的测试报告。
在本申请实施例中,通过每轮升级触发的测试用例可以获知每轮的区块链网络的拜占庭容错特性,通过共识服务的运行状态可以获取包含所有共识节点的区块链网络的拜占庭容错特征,进而基于测试用例和共识服务的运行状态生成的拜占庭容错的测试报告,包括局部的区块链网络和全局的区块链网络的拜占庭容错的测试报告。
需要说明的是,图13中所示的步骤S310~S330的其他详细介绍请参见图3所示的步骤S310~S330,在此不再赘述。
本申请实施例中,在区块链网络滚动升级完成后,还进行全面的测试和验证,以检查区块链网络是否能够正常运行,进而结合测试用例生成包括全局和局部的区块链网络的拜占庭容错特性,保证了验证的可靠性和全面性。
值得注意的是,本申请实施例提供了另一种基于区块链的容错验证方法,该基于区块链的容错验证方法可以应用于图1A或图2所示的实施环境,该方法可以由图1A中所示的共识节点或图2中所示的管理设备来执行,如图14所示,该基于区块链的容错验证方法在图3所示的基础上,将图3中的S340扩展为S1410~S1430。其中,步骤S1410~S1430详细介绍如下。
S1410、基于拜占庭容错的测试报告确定共识节点中重复出现异常的目标节点。
在本申请实施例中,拜占庭容错的测试报告可以有多个,即每轮升级对应的区块链网络的拜占庭容错的测试报告,而通过每轮拜占庭容错的测试报告可以获知每轮出现异常的节点,该出现异常的节点包括节点宕机、断网或作恶的节点;例如每轮升级所触发的测试用例包括通过对应的区块链网络中的共识节点对模拟的区块进行共识,将共识未验证通过的共识节点作为出现异常的节点;因此,从每轮拜占庭容错的测试报告中提取重复出现异常的共识节点,作为目标节点。
在一示例中,确定共识节点中重复出现异常的目标节点,可以是将重复次数大于预设阈值的共识节点作为目标节点,例如节点1重复2次出现异常,节点2重复3次出现异常,节点1和节点2异常的重复次数大于阈值1,即将节点1和节点2均作为目标节点。
S1420、若目标节点的数量大于预设节点数量,则对区块链网络的共识节点的程序版本进行回滚处理。
S1430、若目标节点的数量小于预设节点数量,则从区块链网络中移除目标节点。
在本申请实施例中,若目标节点的数量大于预设节点数量,则表示更新目标程序版本后,整个区块链网络更加不稳定,需要对区块链网络中的所有共识节点的程序版本进行回滚处理,即将共识节点的程序版本从目标程序版本回滚至历史程序版本。
若目标节点的数量小于预设节点数量,则表示更新目标程序版本后,只有少数共识节点不稳定,且不会对整个区块链网络的共识服务造成影响,此时,可以从区块链网络中移除目标节点;在一示例中,若目标节点的数量大于预设节点数量,也可以不对目标节点进行任何处理。
需要说明的是,图14中所示步骤S310~S330的详细介绍请参见图3中所示的步骤S310~S330,在此不再赘述。
本申请实施例中,通过确定共识节点重复出现异常的目标节点的数量与预设节点数量之间的对比,来确定升级版本后所形成的区块链网络的稳定性,进而进行不同的处理,保证区块链网络的稳定的可用性。
为了便于理解,以下基于图1A或图2所示的实施环境对本申请实施例提供的基于区块链的容错验证方法进行详细说明。
本实施例提供的基于区块链的容错验证方法中,在模拟区块链滚动升级中,结合自动化用例,断点处持续、有效、自动化地验证区块链的拜占庭容错特性。
由于区块链分布式共识具有一定的容错性,基于区块链的DAPP对共识节点的升级,通常采用滚动发布,当然这需要应用程序支持向前兼容,那么在滚动发布过程中,由于可能出现网络断连、进程重启等现象,正好结合自动化用例验证区块链的拜占庭容错特性。共识节点的升级过程包括。
假设现需要对由5个v1区块链程序版本共识节点(节点A~节点E)组成的区块链网络进行升级,升级到v2程序版本,滚动升级步骤如下。
(1)备份A节点v1程序版本和配置文件,准备A节点v2版本区块链可执行程序。这一步是为了防止升级过程中出现问题,导致A节点无法恢复到原来的状态;同时,也是为了准备好新版本的程序,以便于快速切换。
(2)停掉A节点v1程序版本,启动v2程序版本,原先建立的peer-to-peer连接需重新connect,如图15所示,DAPP客户端可以通过节点端的SPV集群或同步节点集群与共识节点集群进行连接,因此DAPP客户端将v2程序版本发送至共识节点集群中;针对共识节点集群,节点B~节点E均为v1版本,原先与节点A的v1版本建立peer-to-peer连接,需要断开连接后,与v2版本的节点A重新建立peer-to-peer连接。这一步是为了让A节点运行新版本的程序,并重新加入到网络中;由于新旧版本的程序可能存在不兼容的情况,所以原先建立的peer-to-peer连接需要断开并重新建立,这样,A节点就可以与其他节点进行通信和同步。
(3)在进程停止、进程重启、连接断开、连接重连过程中,查看DAPP应用端的可用性,尤其是确认涉及链上交互的前端操作是否受影响。这一步是为了检查升级过程中是否对DAPP应用端造成了影响。在一示例中,如果DAPP应用端依赖于A节点提供的服务或数据,那么在A节点升级过程,可能会出现服务中断或数据不一致的情况;因此,需要及时检测和修复这些问题,以保证DAPP应用端的正常运行;在另一示例中,若升级过程中,链上交互的前端操作,如生成区块、区块上链等前端操作受到影响,则确定DAPP应用端不可用。
(4)停掉B节点v1程序版本,启动v2程序版本,原先建立的peer-to-peer连接需重新connect,如图16所示,针对共识节点集群,节点A升级至v2版本,且节点C~节点E均为v1版本,均与节点B的v1版本建立peer-to-peer连接,需要断开连接后,与v2版本的节点B重新建立peer-to-peer连接。
(5)以此往复,滚动升级所有共识节点,直到所有区块链程序更新到v2版本,再次查看区块链底层的出块情况、peer-to-peer连接的稳定性和DAPP前端交互的可用性。这一步是将所有共识节点都按照同样的方式进行升级,并在升级完成后检查网络和应用是否正常运行。
需要说明的是,在上述(2)、(4)和(5)步骤处,就是拜占庭容错的断点处,这里可以在滚动升级脚本中自动触发自动化用例的执行,从而验证拜占庭容错特性。
在滚动升级过程中,在每次有一个节点切换到新版本时,都会有一个短暂的时间段,即断点处,在断点处需要验证网络是否仍然能够正常出块、同步数据和处理交易,并且没有出现分叉或攻击等问题,进而验证区块链的拜占庭容错,以确定区块链的可用性。这就需要通过自动化用例来模拟各种场景,并检查网络和应用的状态。如果所有断点处都通过了测试,并且没有发现异常或错误,则说明该区块链网络具有良好的拜占庭容错能力,并且可以支持滚动升级的方式进行版本更新。
在本申请实施例中,基于区块链的容错验证方法包括在模拟区块链滚动升级中,结合自动化用例,断点处持续、有效、自动化地验证区块链的拜占庭容错特性,具体如图17所示,包括。
S1701、获取区块链网络的拓扑图结构。
在测试环境或预发布环境,获取区块链网络的拓扑图结构,包括节点数量、ip、区块链程序路径等。拓扑图结构可以了解区块链网络的结构和配置,以便为滚动升级做好准备。区块链网络的拓扑图结构是指网络中各个节点的位置和连接关系,例如,有多少个共识节点,它们的ip地址是什么,它们运行的区块链程序存放在什么路径下等。这些信息可以通过访问节点的管理接口或者使用一些网络扫描工具来获取。
S1702、基于网络拓扑结构,自动生成共识节点的滚动升级脚本。
在本申请实施例中,根据网络拓扑结构生成一个自动化的脚本,用来逐轮升级共识节点。该脚本包含了对每个共识节点进行升级所需的操作,如备份数据和程序、上传新程序版本、停掉节点服务、启动新版本服务等;这些操作可以通过调用一些***命令或者区块链程序提供的接口来实现。具体的,滚动升级脚本应该包含以下关键步骤。
备份数据和程序:在升级前,先将节点的数据和程序复制到一个安全的位置,以防止升级失败或者出现异常情况时可以恢复。
上传新程序版本:将新版本的区块链程序上传到节点所在的服务器上,并覆盖或者替换旧版本的程序。
停掉节点服务:在更新程序前,先停止节点的服务,断开与其他节点的连接,避免出现数据不一致或者共识错误。
启动新程序版本:启动新版本的区块链程序,并重新连接到网络中,加入到共识过程中。
S1703、自动识别滚动升级脚本中的断点处,触发区块链自动化用例的执行,进行断言,验证拜占庭容错能力。
在本申请实施例中,断点处为停老版本服务和启动新版本服务之间,以及连接断开、重连过程中;为了验证拜占庭容错能力,需要在滚动升级脚本中设置断点,如在每次停止一个老版本服务和启动一个新版本服务之间,触发一些自动化测试用例来测试区块链网络的功能和性能;这些用例可以模拟各种场景,如发送交易、查询数据、检查出块情况等,并对结果进行断言,判断是否符合预期。如果所有断言都通过了,则说明该断点处没有出现异常或错误,否则说明存在问题,需要进行排查和修复,以确定拜占庭容错能力。测试用例如:发送一些交易到网络中,并检查是否能够被正确打包和确认。查询一些账户或者合约的状态,并检查是否与预期一致。模拟一些故障或者攻击场景,并检查网络是否能够正常恢复。
S1704、基于滚动升级脚本,识别下一个断点,并触发自动化用例执行,断言判断预期结果。
继续执行滚动升级脚本,并在每个断点处进行测试和验证。基于滚动升级脚本,可以识别出下一个需要升级的节点,并重复上述步骤S1702和S1703,直到所有节点都被升级为止;在每次触发自动化用例执行后,需要进行断言,判断测试结果是否符合预期。
S1705、以此往复,直至滚动升级完毕,所有程序都升级到新版本,并且完成拜占庭容错的特性验证。
将所有共识节点都按照同样的方式进行升级,并在每个断点处都进行自动化用例执行和断言判断,直到所有节点都被升级为新版本为止,结束拜占庭容错的特性验证。
在滚动升级完毕后,还要进行一些全面的测试和验证,以检查区块链网络是否能够正常运行,并且具备拜占庭容错的特性。例如:检查所有节点的版本是否一致,并且与预期的新版本相符。检查所有节点是否能够正常参与共识,并且达成一致的区块链状态。检查网络的吞吐量和延迟是否符合预期,没有出现明显的下降或者波动。检查网络的安全性和可靠性是否符合预期,能够抵抗一定比例的故障或者攻击。如果没有出现任何问题,则说明滚动升级成功完成,并且该区块链网络具有良好的拜占庭容错能力。
在此介绍本申请的装置实施例,可以用于执行本申请上述实施例中的基于区块链的容错验证方法。对于本申请装置实施例中未披露的细节,请参照本申请上述的基于区块链的容错验证方法的实施例。
本申请实施例提供了一种基于区块链的容错验证装置,如图18所示,该基于区块链的容错验证装置可以配置于区块链节点或管理设备中,装置包括。
获取模块1810,用于获取区块链网络的拓扑图结构信息。
生成模块1820,用于根据所述拓扑图结构信息,生成滚动升级脚本,所述滚动升级脚本用于逐轮升级共识节点的区块链程序版本。
执行模块1830,用于基于所述滚动升级脚本识别所述共识节点升级中的断点,并基于所述断点触发执行用于验证区块链网络的拜占庭容错的测试用例,所述断点用于描述所述共识节点从历史程序版本向目标程序版本的过渡位置。
生成模块1820,还用于若检测到所述区块链网络滚动升级完成,则基于所述测试用例生成拜占庭容错的测试报告。
在本申请的一个实施例中,基于前述方案,执行模块进一步用于在所述滚动升级脚本的运行过程中,根据所述共识节点的服务状态的变化识别所述滚动升级脚本中的当前断点,并在所述当前断点处执行所述测试用例;在所述当前断点对应的共识节点升级完成后,识别所述滚动升级脚本中的下一个断点,以执行所述测试用例;继续识别所述滚动升级脚本中的下一个断点,直至所述区块链网络滚动升级完成。
在本申请的一个实施例中,基于前述方案,所述拓扑图结构信息包括各共识节点的节点属性信息和各共识节点之间的连接关系;所述生成模块进一步用于根据所述各共识节点的节点属性信息和所述连接关系确定所述各共识节点的升级轮次;获取目标程序版本,并根据所述共识节点的节点属性信息和所述目标程序版本生成升级策略;基于所述各共识节点的升级轮次和所述升级策略生成所述滚动升级脚本。
在本申请的一个实施例中,基于前述方案,所述共识节点的节点属性信息包括所述共识节点的程序路径;所述生成模块进一步用于根据共识节点的程序路径对所述共识节点的历史程序版本进行备份,并将所述目标程序版本存储至所述程序路径;停止所述共识节点当前运行的历史程序版本,并启动所述目标程序版本;将更新目标程序版本后的共识节点与其他共识节点重新建立连接,以得到所述升级策略。
在本申请的一个实施例中,基于前述方案,所述共识节点的节点属性信息包括所述共识节点的配置信息;所述生成模块进一步用于根据所述区块链网络中共识节点的总数量,确定每轮待升级共识节点的数量;根据各共识节点的配置信息,确定各共识节点的升级优先级;根据每轮待升级共识节点的数量和各共识节点的升级优先级确定所述各共识节点的升级轮次。
在本申请的一个实施例中,基于前述方案,所述生成模块进一步用于根据所述各共识节点的节点编号,对所述各共识节点进行排序得到初始排序结果;根据所述各共识节点的性能信息和各共识节点之间的距离信息对所述初始排序结果进行调整,以确定所述各共识节点的升级优先级。
在本申请的一个实施例中,基于前述方案,所述执行模块进一步用于获取多个测试场景分别对应的测试用例,得到多个测试用例;在当前轮次共识节点的升级过程中,根据目标测试场景为当前区块链网络从所述多个测试用例中选择至少一个目标测试用例;所述当前区块链网络为除当前轮次共识节点外的其他共识节点所组成的网络;基于所述断点自动执行所述目标测试用例。
在本申请的一个实施例中,基于前述方案,所述执行模块还用于根据所述拜占庭容错的测试性质和容错程度生成针对所述拜占庭容错的测试目标;根据所述测试目标确定待覆盖的多个测试场景,其中,每个测试场景用于表征一种拜占庭攻击;根据所述多个测试场景确定测试所需的数据,以生成所述多个测试场景分别对应的测试用例。
在本申请的一个实施例中,基于前述方案,所述生成模块还用于根据所述测试用例获取当前区块链网络对应的服务测试状态;获取所述测试用例对应的服务期望状态;根据所述服务测试状态和所述服务期望状态生成所述当前区块链网络的拜占庭容错的子测试报告。
在本申请的一个实施例中,基于前述方案,生成模块进一步用于获取每轮升级触发的测试用例所对应的子测试报告,得到多个子测试报告,其中,每轮待升级共识节点的数量依次递增;从最后一轮升级对应的子测试报告为基点,对所述多个子测试报告依次进行遍历;若上一次遍历的子测试报告未达到预期,当前遍历的子测试报告达到预期,则根据所述当前遍历的子测试报告确定所述拜占庭容错的最大容错特性,以生成所述拜占庭容错的测试报告。
在本申请的一个实施例中,基于前述方案,生成模块进一步用于在所述区块链网络滚动升级完成后,对所述区块链网络的共识服务进行检测,以获取所述共识服务的运行状态;根据所述测试用例和所述共识服务的运行状态生成所述拜占庭容错的测试报告。
在本申请的一个实施例中,基于前述方案,所述装置还包括处理模块,用于基于所述拜占庭容错的测试报告确定所述共识节点中重复出现异常的目标节点;若所述目标节点的数量大于预设节点数量,则对所述区块链网络的共识节点的程序版本进行回滚处理;若所述目标节点的数量小于预设节点数量,则从所述区块链网络中移除所述目标节点。
需要说明的是,上述实施例所提供的装置与上述实施例所提供的方法属于同一构思,其中各个模块和单元执行操作的具体方式已经在方法实施例中进行了详细描述,此处不再赘述。
本申请的实施例还提供了一种电子设备,包括一个或多个处理器,以及存储装置,其中,存储装置,用于存储一个或多个计算机程序,当一个或多个计算机程序被一个或多个处理器执行时,使得电子设备实现如上所述的基于区块链的容错验证方法。
图19示出了适于用来实现本申请实施例的电子设备的计算机***的结构示意图。
需要说明的是,图19示出的电子设备的计算机***1900仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制,其中,该电子设备可以是客户端或服务器。
如图19所示,计算机***1900包括处理器(Central Processing Unit,CPU)1901,其可以根据存储在只读存储器(Read-Only Memory,ROM)1902中的程序或者从储存部分1908加载到随机访问存储器(Random Access Memory,RAM)1903中的程序而执行各种适当的动作和处理,例如执行上述实施例中的方法。在RAM 1903中,还存储有***操作所需的各种程序和数据。CPU 1901、ROM 1902以及RAM 1903通过总线1904彼此相连。输入/输出(Input /Output,I/O)接口1905也连接至总线1904。
在一些实施例中,以下部件连接至I/O接口1905:包括键盘、鼠标等的输入部分1906;包括诸如阴极射线管(Cathode Ray Tube,CRT)、液晶显示器(Liquid CrystalDisplay,LCD)等以及扬声器等的输出部分1907;包括硬盘等的储存部分1908;以及包括诸如LAN(Local Area Network,局域网)卡、调制解调器等的网络接口卡的通信部分1909。通信部分1909经由诸如因特网的网络执行通信处理。驱动器1910也根据需要连接至I/O接口1905。可拆卸介质1911,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1910上,以便于从其上读出的计算机程序根据需要被安装入储存部分1908。
特别地,根据本申请的实施例,上文参考流程图描述的过程可以被实现为计算机程序。例如,本申请的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的计算机程序。在这样的实施例中,该计算机程序可以通过通信部分1909从网络上被下载和安装,和/或从可拆卸介质1911被安装。在该计算机程序被处理器(CPU)1901执行时,执行本申请的***中限定的各种功能。
需要说明的是,本申请实施例所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(Erasable Programmable Read Only Memory)、闪存、光纤、便携式紧凑磁盘只读存储器(Compact Disc Read-Only Memory,CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的计算机程序。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的计算机程序可以用任何适当的介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本申请各种实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。其中,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机程序的组合来实现。
描述于本申请实施例中所涉及到的单元或者模块可以通过软件的方式实现,也可以通过硬件的方式来实现,所描述的单元或者模块也可以设置在处理器中。其中,这些单元或者模块的名称在某种情况下并不构成对该单元或者模块本身的限定。
本申请的另一方面还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如前所述的方法。该计算机可读存储介质可以是上述实施例中描述的电子设备中所包含的,也可以是单独存在,而未装配入该电子设备中。
本申请的另一方面还提供了一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序存储在计算机可读存储介质中。电子设备的处理器从计算机可读存储介质读取该计算机程序,处理器执行该计算机程序,使得该电子设备执行上述各个实施例中提供如前所述的方法。
应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本申请的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。
本领域技术者在考虑说明书及实践这里公开的实施方式后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。
上述内容,仅为本申请的较佳示例性实施例,并非用于限制本申请的实施方案,本领域普通技术者根据本申请的主要构思和精神,可以十分方便地进行相应的变通或修改,故本申请的保护范围应以权利要求书所要求的保护范围为准。

Claims (15)

1.一种基于区块链的容错验证方法,其特征在于,包括:
获取区块链网络的拓扑图结构信息;
根据所述拓扑图结构信息,生成自动执行的滚动升级脚本,所述滚动升级脚本用于逐轮升级共识节点的区块链程序版本;
基于所述滚动升级脚本识别所述共识节点升级中的断点,并基于所述断点触发执行用于验证区块链网络的拜占庭容错的测试用例,所述断点用于描述所述共识节点从历史程序版本向目标程序版本的过渡时间;
若检测到所述区块链网络滚动升级完成,则基于所述测试用例生成拜占庭容错的测试报告,所述测试报告包括有关所述区块链网络在滚动升级过程中拜占庭容错的容错性能的详细信息。
2.根据权利要求1所述的方法,其特征在于,所述基于所述滚动升级脚本识别所述共识节点升级中的断点,并基于所述断点触发执行用于验证区块链网络的拜占庭容错的测试用例,包括:
在所述滚动升级脚本的运行过程中,根据所述共识节点的服务状态的变化识别所述滚动升级脚本中的当前断点,并在所述当前断点处执行所述测试用例;
在所述当前断点对应的共识节点升级完成后,识别所述滚动升级脚本中的下一个断点,以执行所述测试用例;
继续识别所述滚动升级脚本中的下一个断点,直至所述区块链网络滚动升级完成。
3.根据权利要求1所述的方法,其特征在于,所述拓扑图结构信息包括各共识节点的节点属性信息和各共识节点之间的连接关系;所述根据所述拓扑图结构信息,生成自动执行的滚动升级脚本,包括:
根据所述各共识节点的节点属性信息和所述连接关系确定所述各共识节点的升级轮次;
获取目标程序版本,并根据所述共识节点的节点属性信息和所述目标程序版本生成升级策略;
基于所述各共识节点的升级轮次和所述升级策略生成所述滚动升级脚本。
4.根据权利要求3所述的方法,其特征在于,所述共识节点的节点属性信息包括所述共识节点的程序路径;所述根据所述共识节点的节点属性信息和所述目标程序版本生成升级策略,包括:
根据共识节点的程序路径对所述共识节点的历史程序版本进行备份,并将所述目标程序版本存储至所述程序路径;
停止所述共识节点当前运行的历史程序版本,并启动所述目标程序版本;
将更新目标程序版本后的共识节点与其他共识节点重新建立连接,以得到所述升级策略。
5.根据权利要求3所述的方法,其特征在于,所述共识节点的节点属性信息包括所述共识节点的配置信息;所述根据所述各共识节点的节点属性信息和所述连接关系确定所述各共识节点的升级轮次,包括:
根据所述区块链网络中共识节点的总数量,确定每轮待升级共识节点的数量;
根据各共识节点的配置信息,确定各共识节点的升级优先级;
根据每轮待升级共识节点的数量和各共识节点的升级优先级确定所述各共识节点的升级轮次。
6.根据权利要求5所述的方法,其特征在于,所述根据各共识节点的配置信息,确定各个共识节点的升级优先级,包括:
根据所述各共识节点的节点编号,对所述各共识节点进行排序得到初始排序结果;
根据所述各共识节点的性能信息和各共识节点之间的距离信息对所述初始排序结果进行调整,以确定所述各共识节点的升级优先级。
7.根据权利要求1所述的方法,其特征在于,所述基于所述断点触发执行用于验证区块链网络的拜占庭容错的测试用例,包括:
获取多个测试场景分别对应的测试用例,得到多个测试用例;
在当前轮次共识节点的升级过程中,根据目标测试场景为当前区块链网络从所述多个测试用例中选择至少一个目标测试用例;所述当前区块链网络为除当前轮次共识节点外的其他共识节点所组成的网络;
基于所述断点自动执行所述目标测试用例。
8.根据权利要求7所述的方法,其特征在于,所述获取多个测试场景分别对应的测试用例,包括:
根据所述拜占庭容错的测试性质和容错程度生成针对所述拜占庭容错的测试目标;
根据所述测试目标确定待覆盖的多个测试场景,其中,每个测试场景用于表征一种拜占庭攻击;
根据所述多个测试场景确定测试所需的数据,以生成所述多个测试场景分别对应的测试用例。
9.根据权利要求1所述的方法,其特征在于,所述基于所述断点触发执行用于验证区块链网络的拜占庭容错的测试用例之后,所述方法还包括:
根据所述测试用例获取当前区块链网络对应的服务测试状态;
获取所述测试用例对应的服务期望状态;
根据所述服务测试状态和所述服务期望状态生成所述当前区块链网络的拜占庭容错的子测试报告。
10.根据权利要求1所述的方法,其特征在于,所述基于所述测试用例生成拜占庭容错的测试报告,包括:
获取每轮升级触发的测试用例所对应的子测试报告,得到多个子测试报告,其中,每轮待升级共识节点的数量依次递增;
从最后一轮升级对应的子测试报告为基点,对所述多个子测试报告依次进行遍历;
若上一次遍历的子测试报告未达到预期,当前遍历的子测试报告达到预期,则根据所述当前遍历的子测试报告确定所述拜占庭容错的最大容错特性,以生成所述拜占庭容错的测试报告。
11.根据权利要求1所述的方法,其特征在于,所述基于所述测试用例生成拜占庭容错的测试报告,包括:
在所述区块链网络滚动升级完成后,对所述区块链网络的共识服务进行检测,以获取所述共识服务的运行状态;
根据所述测试用例和所述共识服务的运行状态生成所述拜占庭容错的测试报告。
12.根据权利要求1至11任一项所述的方法,其特征在于,所述基于所述测试用例生成拜占庭容错的测试报告之后,所述方法还包括:
基于所述拜占庭容错的测试报告确定所述共识节点中重复出现异常的目标节点;
若所述目标节点的数量大于预设节点数量,则对所述区块链网络的共识节点的程序版本进行回滚处理;
若所述目标节点的数量小于预设节点数量,则从所述区块链网络中移除所述目标节点。
13.一种基于区块链的容错验证装置,其特征在于,包括:
获取模块,用于获取区块链网络的拓扑图结构信息;
生成模块,用于根据所述拓扑图结构信息,生成自动执行的滚动升级脚本,所述滚动升级脚本用于逐轮升级共识节点的区块链程序版本;
执行模块,用于基于所述滚动升级脚本识别所述共识节点升级中的断点,并基于所述断点触发执行用于验证区块链网络的拜占庭容错的测试用例,所述断点用于描述所述共识节点从历史程序版本向目标程序版本的过渡位置;
生成模块,还用于若检测到所述区块链网络滚动升级完成,则基于所述测试用例生成拜占庭容错的测试报告,所述测试报告包括有关所述区块链网络在滚动升级过程中拜占庭容错的容错性能的详细信息。
14.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述电子设备执行权利要求1至12中任一项所述的方法。
15.一种计算机可读存储介质,其特征在于,其上存储有计算机程序,当所述计算机程序被电子设备的处理器执行时,使得所述电子设备执行权利要求1至12中任一项所述的方法。
CN202311392773.4A 2023-10-25 2023-10-25 基于区块链的容错验证方法、装置、设备及介质 Active CN117118986B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311392773.4A CN117118986B (zh) 2023-10-25 2023-10-25 基于区块链的容错验证方法、装置、设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311392773.4A CN117118986B (zh) 2023-10-25 2023-10-25 基于区块链的容错验证方法、装置、设备及介质

Publications (2)

Publication Number Publication Date
CN117118986A CN117118986A (zh) 2023-11-24
CN117118986B true CN117118986B (zh) 2024-02-06

Family

ID=88809666

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311392773.4A Active CN117118986B (zh) 2023-10-25 2023-10-25 基于区块链的容错验证方法、装置、设备及介质

Country Status (1)

Country Link
CN (1) CN117118986B (zh)

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108961055A (zh) * 2018-07-02 2018-12-07 上海达家迎信息科技有限公司 一种区块共识的奖惩方法、装置、设备和存储介质
CN111782502A (zh) * 2019-12-13 2020-10-16 北京沃东天骏信息技术有限公司 一种自动化测试的方法及装置
CN111917729A (zh) * 2020-07-09 2020-11-10 财付通支付科技有限公司 动态注入测试方法及装置、相关设备
CN112073269A (zh) * 2020-09-14 2020-12-11 腾讯科技(深圳)有限公司 区块链网络测试方法、装置、服务器及存储介质
CN112162768A (zh) * 2020-10-14 2021-01-01 支付宝(杭州)信息技术有限公司 一种区块链升级方法和***
CN112235137A (zh) * 2020-10-12 2021-01-15 杭州溪塔科技有限公司 一种区块链节点程序的升级方法、装置及电子设备
CN115080538A (zh) * 2022-06-14 2022-09-20 蚂蚁区块链科技(上海)有限公司 一种区块链版本验证方法及装置

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11228570B2 (en) * 2015-03-23 2022-01-18 Oleksandr Vityaz Safe-transfer exchange protocol based on trigger-ready envelopes among distributed nodes
CA3061603A1 (en) * 2018-11-14 2020-05-14 Royal Bank Of Canada System and method for storing contract data structures on permissioned distributed ledgers

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108961055A (zh) * 2018-07-02 2018-12-07 上海达家迎信息科技有限公司 一种区块共识的奖惩方法、装置、设备和存储介质
CN111782502A (zh) * 2019-12-13 2020-10-16 北京沃东天骏信息技术有限公司 一种自动化测试的方法及装置
CN111917729A (zh) * 2020-07-09 2020-11-10 财付通支付科技有限公司 动态注入测试方法及装置、相关设备
CN112073269A (zh) * 2020-09-14 2020-12-11 腾讯科技(深圳)有限公司 区块链网络测试方法、装置、服务器及存储介质
CN112235137A (zh) * 2020-10-12 2021-01-15 杭州溪塔科技有限公司 一种区块链节点程序的升级方法、装置及电子设备
CN112162768A (zh) * 2020-10-14 2021-01-01 支付宝(杭州)信息技术有限公司 一种区块链升级方法和***
CN115080538A (zh) * 2022-06-14 2022-09-20 蚂蚁区块链科技(上海)有限公司 一种区块链版本验证方法及装置

Also Published As

Publication number Publication date
CN117118986A (zh) 2023-11-24

Similar Documents

Publication Publication Date Title
CN112073269B (zh) 区块链网络测试方法、装置、服务器及存储介质
CN110088744B (zh) 一种数据库维护方法及其***
CN106933843B (zh) 数据库心跳检测方法以及装置
CN108874678B (zh) 一种智能程序的自动测试方法及装置
CN112631846A (zh) 一种故障演练方法、装置、计算机设备及存储介质
CN109508295B (zh) 区块链共识算法测试方法、装置、计算装置和存储介质
CN112256593B (zh) 一种程序处理方法、装置、计算机设备和可读存储介质
CN110063042A (zh) 一种数据库故障的响应方法及其终端
CN116155771A (zh) 网络异常测试方法、装置、设备、存储介质和程序
CN111597079B (zh) 针对MySQL Galera集群故障的检测和恢复方法及***
CN111581077A (zh) 智能合约测试方法、装置
CN111124724B (zh) 一种分布式块存储***的节点故障测试方法及装置
CN117118986B (zh) 基于区块链的容错验证方法、装置、设备及介质
CN112202647A (zh) 区块链网络中的测试方法、装置及测试设备
CN112261114A (zh) 一种数据备份***及方法
CN116506340A (zh) 流量链路的测试方法、装置、电子设备及存储介质
CN111078454A (zh) 一种云平台配置恢复方法及装置
CN111737130B (zh) 公有云多租户认证服务测试方法、装置、设备及储存介质
CN113238950A (zh) 一种分布式***测试的***及方法、存储介质、电子设备
CN113064755A (zh) 数据恢复方法、装置、设备、介质及程序产品
CN115686951A (zh) 一种数据库服务器的故障处理方法和装置
CN112068935A (zh) kubernetes程序部署监控方法、装置以及设备
CN116185723B (zh) 数据库容灾切换演练方法、装置、计算机设备及存储介质
CN110677469A (zh) 一种证券灾备***及灾备实现方法
CN117057974B (zh) 一种gpu大数据平台、电子设备和存储介质

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