CN113806203A - 区块链测试方法及装置 - Google Patents

区块链测试方法及装置 Download PDF

Info

Publication number
CN113806203A
CN113806203A CN202010533067.7A CN202010533067A CN113806203A CN 113806203 A CN113806203 A CN 113806203A CN 202010533067 A CN202010533067 A CN 202010533067A CN 113806203 A CN113806203 A CN 113806203A
Authority
CN
China
Prior art keywords
blockchain
node
container
network
block chain
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
Application number
CN202010533067.7A
Other languages
English (en)
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.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN202010533067.7A priority Critical patent/CN113806203A/zh
Publication of CN113806203A publication Critical patent/CN113806203A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请关于一种区块链测试方法及装置,所述装置包括多条测试链路和测试数据采集模块,所述测试链路包括区块链容器节点、虚拟网络节点和桥接模块;所述多条测试链路中的区块链容器节点组成区块链网络,所述多条测试链路中的虚拟网络节点组成具有预设网络拓扑结构的虚拟仿真网络;区块链容器节点封装于容器中,用于模拟区块链节点的功能;所述虚拟网络节点,用于模拟所述区块链节点的网络环境;所述桥接模块桥接于所述区块链容器节点与所述虚拟网络节点之间,用于在所述区块链容器节点与所述虚拟网络节点之间转发数据;所述测试数据采集模块,用于采集测试数据数据。本申请可以实现在单机上运行多个区块链容器节点以及复杂底层网络的实验仿真。

Description

区块链测试方法及装置
技术领域
本申请涉及区块链技术领域,尤其涉及一种区块链测试方法及装置。
背景技术
随着区块链技术的发展与普及,越来越多新的区块链技术和共识协议被提出。相较于经过广泛验证的比特币和以太坊,很多新的区块链技术可靠性仍然需要测试。区块链测试与传统的软件测试有很大的不同,主要体现在系统边界模糊和故障类型复杂两个特征。对于传统的软件,不管是是独立的应用程序,还是客户端/服务器模式的应用程序,都有明显的系统边界,可以通过用户界面或者客户端进行测试。而区块链则是一个完全去中心化的分布式网络,该网络有可能跨越多个数据中心、多个运营商、甚至多个国家,因此其边界是模糊的。在故障类型方面,一般的软件只需要处理故障宕机故障和宕机-恢复故障,而区块链还需要处理拜占庭故障。拜占庭故障指区块链中存在恶意节点,从不同观察者角度看这类节点,能够表现出不一致的症状。在需要共识的区块链中,拜占庭故障往往会导致区块链服务失效。
相关技术中,对区块链系统测试通常是部署区块链,该方式测试周期长,需要消耗大量的人力物力资源部署节点。该测试方式主要是对共识协议本身进行测试,需要重写区块链共识代码,模拟过程中区块链节点都是虚拟的。而实际生产中的区块链节点逻辑复杂,利用该方式测试时不能保证模拟使用代码逻辑与真实节点的相同。并且作为分布式系统,利用该方式在数据收集方面也较为困难,节点出现故障时难以发现。
因此,相关技术中亟需一种简单高效的区块链测试方法。
发明内容
本申请实施例的目的在于提供一种区块链测试方法及装置,可以实现在单机上运行多个区块链容器节点以及复杂底层网络的实验仿真。
本申请实施例提供的区块链测试方法及装置是这样实现的:
一种区块链测试装置,所述装置包括多条测试链路和测试数据采集模块,所述测试链路包括区块链容器节点、虚拟网络节点和桥接模块;
所述多条测试链路中的区块链容器节点组成区块链网络,所述多条测试链路中的虚拟网络节点组成具有预设网络拓扑结构的虚拟仿真网络;
所述区块链容器节点封装于容器中,用于模拟区块链节点的功能;
所述虚拟网络节点,用于模拟所述区块链节点的网络环境;
所述桥接模块桥接于所述区块链容器节点与所述虚拟网络节点之间,用于在所述区块链容器节点与所述虚拟网络节点之间转发数据;
所述测试数据采集模块,用于采集所述区块链容器节点和所述虚拟网络节点产生的测试数据。
一种区块链测试方法,所述方法用于利用所述的区块链测试装置进行区块链测试,包括:
向所述区块链容器节点发送区块链交易数据;
启动所述多条测试链路中的区块链容器节点对应的容器。
一种非临时性计算机可读存储介质,当所述存储介质中的指令由处理器执行时,使得处理器能够执行所述的区块链测试方法。
本申请实施例提供的区块链测试方法及装置,可以利用容器技术封装区块链节点,由于容器可以封装任意种类的区块链测试程序、监控程序等,因此,可以在所述区块链测试装置中快速地部署大量的区块链容器节点,扩展性强。另外,由于容器中运行的是真实的程序,克服了传统区块链仿真中测试程序与实际运行程序不一致的问题。本申请实施例还可以使用NS-3等网络仿真模拟器实现底层网络,解决相关技术中无法对网络进行精细化控、多地部署资源消耗大的问题,实现在单机上运行多个区块链容器节点以及复杂底层网络的实验仿真。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
图1是根据一示例性实施例示出的一种装置示意图。
图2是根据一示例性实施例示出的一种装置示意图。
图3是根据一示例性实施例示出的一种装置示意图。
图4是根据一示例性实施例示出的一种装置示意图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
下面对本申请所述的区块链测试装置进行详细的说明。如图1所示,在本申请的一个实施例中,区块链装置100可以包括多条测试链路101和测试数据采集模块103,所述测试链路101可以包括区块链容器节点、虚拟网络节点和桥接模块。
所述多条测试链路101中的区块链容器节点可以组成区块链网络107,所述多条测试链路101中的虚拟网络节点可以组成具有预设网络拓扑结构的虚拟仿真网络105。
所述区块链容器节点封装于容器中,可以用于模拟区块链节点的功能。
所述虚拟网络节点,可以用于模拟所述区块链节点的网络环境。
所述桥接模块桥接于所述区块链容器节点与所述虚拟网络节点之间,可以用于在所述区块链容器节点与所述虚拟网络节点之间转发数据。
所述测试数据采集模块103,可以用于采集所述区块链容器节点和所述虚拟网络节点产生的测试数据数据。
本申请实施例中,所述区块链容器节点可以封装于容器之中,容器在性能和占用空间上具有轻量化的特征,因此,可以快速地将区块链节点部署于容器中,还可以快速地部署任意数量的区块链容器节点。另外,由于容器的环境敏捷、隔离性好等特征,使得所述区块链容器节点能够模拟复杂的节点逻辑,更加接近于真实环境中的区块链节点。在一个示例中,所述区块链容器节点可以包括基于Docker技术的区块链节点,在Docker技术中,开发者可以将所述区块链容器节点的应用以及依赖包设置于可移植的镜像中,从而实现虚拟化。由于容器的实质是进程,且与直接在宿主机上执行的进程不同,容器的进程运行于属于自己的独立的网络命名空间(network namespace)。因此,所述区块链容器节点可以具有自己独立的root文件系统、网络配置、进程空间,甚至自己的用户ID空间等等,从而为设置复杂的节点逻辑提供技术基础。
在本申请实施例中,所述多条测试链路101中的区块链容器节点可以组成区块链网络107。在实际的应用环境中,区块链网络中的节点有多种不同的类型,例如,一些区块链节点的程序编写语言是C++,另一些基于Golang语言。再如,一些区块链节点分布于A云端,另一些分布于B云端。基于此,在本申请实施例中,可以根据测试需求部署不同类型的区块链容器节点。其中,所述区块链容器节点的类型可以根据以下几个方面划分:程序编写语言、合法性、节点功能、节点版本、逻辑区域、访问和管理权限等等。在一个测试例中,从逻辑位置区分,可以将位于同一逻辑区域的区块链容器节点划分于同一个子网中。在另一个测试例中,从程序编写语言区分,可以将区块链容器节点划分成30%的C++版本的节点,50%的Golang版本的节点和20%的其他程序语言编写的节点。在另一个测试例中,从安全性区分,可以将区块链容器节点划分成80%的合法节点和20%的恶意节点。在另一个测试例中,从节点功能区分,可以将区块链容器节点划分成20%的全量节点和80%的轻量节点。在另一个测试例中,从节点版本区分,可以将区块链容器节点划分成50%的1.0版本节点和50%的2.0版本节点。在另一个测试例中,可以将区块链容器节点划分成70%的公有链、20%的联盟链和10%的私有链。当然,还可以对上述不同类型的节点进行组合划分,本申请在此不做限制。例如在一个测试例中,可以将区块链容器节点划分成20%的全量节点和80%的轻量节点,以及50%的1.0版本节点和50%的2.0版本节点。
如图1所示,在本申请实施例中,所述区块链装置100还可以包括节点管理模块109,所述节点管理模块109可以封装于容器中,并与所述区块链容器节点相耦合,用于设置所述区块链容器节点的参数。在本申请的一个实施例中,所述节点管理模块109可以通过各个区块链容器节点的应用程序接口(Application Programming Interface,API)与所述区块链容器节点建立连接,设置所述区块链容器节点的参数。所述参数可以包括增加或者删除所述区块链容器节点与其他区块链容器节点之间的连接关系等等。所述参数还可以包括所述区块链容器节点的资源使用参数,所述资源使用参数可以包括所述区块链容器节点允许使用的最多CPU数量以及最大物理内存等。在一个示例中,可以设置所述区块链容器节点最多可以使用宿主机上两个CPU,还可以设置所述区块链容器节点最多可以使用300M的物理内存。当然,所述参数还可以包括所述区块链容器节点的挖矿难度等,例如在使用工作量证明(Proof Of Work,POW)共识协议的区块链网络中,可以降低所述区块链容器节点的挖矿难度或者设置只允许部分的区块链容器节点挖矿,以便在单机系统上模拟多个区块链程序。
本申请实施例中,由所述多条测试链路101中的虚拟网络节点所组成的虚拟仿真网络105用于给所述区块链网络107提供底层网络,且所述虚拟仿真网络105具有预设的网络拓扑结构。在本申请实施例中,所述虚拟网络节点与所述区块链容器节点之间可以是一一对应的关系,因此,所述虚拟仿真网络105的拓扑结构可以根据所述区块链网络107的网络结构设置。在一个示例中,对于具有100个区块链容器节点的小型区块链网络,所述小型区块链网络可以包括10个区块链自治域,相应地,可以将所述小型区块链网络对应的虚拟仿真网络划分成10个子网络,如10个自治系统(Autonomous System,AS)自治域,每个AS自治域中可以包括相互连接的10个虚拟网络节点。在该示例中,在将所述虚拟仿真网络划分成10个AS自治域之后,还可以分别设置所述AS自治域的出口节点,通过路由聚合的方式,将所述AS自治域作为一个整体与其他AS自治域或者其他虚拟网络节点通信。本申请实施例中,通过将所述虚拟仿真网络105拆分成多个子网络,突破单个仿真网络的性能限制,从而可以采用多宿主机部署测试系统,实现无限制地增加区块链网络107中的节点数目。
本申请实施例中,还可以根据所述区块链网络107的部署方式设置所述测试链路101的带宽和延迟等网络参数。例如在边缘云架构中,边缘云节点(即区块链容器节点)与边缘设备(即虚拟网络节点)之间采用专线连接,通信链路具有低带宽、高延迟的特点,因此,可以设置所述边缘云节点使用公网环境,因为公网环境具有较高的延迟和有一定限制的带宽。
在本申请提供的一个示例中,如图4所示,所述虚拟仿真网络105可以包括网络仿真器(Network Simulator-3,NS-3),NS-3是目前比较流行的离散事件网络模拟器,其优势在于可以模拟比较复杂的网络环境。在NS-3中,可以通过与其兼容的网络拓扑生成器自动生成网络拓扑结构,在一个示例中,例如可以利用BRITE等网络拓扑生成器自动生成所述虚拟仿真网络105的网络拓扑结构。当然,本申请各个实施例所述的虚拟仿真网络105不限于NS-3,还可以包括与NS-3相关的任意版本(如NS-2),以及其他任何能够模拟复杂网络环境的虚拟网络仿真装置,本申请在此不做限制。
在本申请实施例中,可以通过所述桥接模块连接所述区块链容器节点和所述虚拟网络节点,用于在所述区块链容器节点与所述虚拟网络节点之间转发数据。在本申请的一个实施例中,如图2所示,所述桥接模块可以包括顺次连接的第一桥接子模块、虚拟交换机、虚拟网卡、第二桥接子模块,其中,
所述第一桥接子模块与所述区块链容器节点相耦合,所述第二桥接子模块与所述虚拟网络节点相耦合。
本申请实施例中,所述第一桥接子模块用于实现所述桥接模块与所述区块链容器节点之间的数据传输,所述第二桥接子模块用于实现所述桥接模块与所述虚拟网络节点之间的数据传输。
本申请实施例中,所述虚拟交换机可以包括真实世界中交换机所能实现的功能。当有数据从所述区块链容器节点传输至所述虚拟交换机时,所述虚拟交换机可以根据所述数据中的地址信息对所述数据进行广播、转发、丢弃处理。具体地,在一个示例中,所述虚拟交换机在接收到数据包之后,可以包括下述处理过程:根据所述数据包的MAC信息,查找内部MAC端口映射表,定位至目标端口号,然后将所述数据包转发到所述目标端口号对应的目标端口或者丢弃。除了数据转发的功能,所述虚拟交换机还可以对地址与端口之间的关联关系进行学习,所述虚拟交换机在获取到数据之后,可以学习数据包的地址来源以及端口标识,根据学习到的地址来源与端口标识之间的对应关系,建立地址-端口的对照表,如CAM表。在一个示例中,如图3展示出Linux操作系统中桥接模块的示例性结构,图4展示出Linux操作系统中整个区块链测试装置100的示例性架构,图4中仅示例性地展示两条测试链路101,所述测试链路101的数量不做限制。在该示例中,对于Linux操作系统而言,所述虚拟交换机可以包括Linuxbridge设备,Linuxbridge设备是Linux操作系统中用于做TCP/IP二层协议交换的虚拟设备,且Linuxbridge设备可以设置于对应的区块链容器节点的宿主机上。当然,所述虚拟交换机不限于Linuxbridge设备,对于不同的操作系统而言,适用的虚拟交换机可能不相同,本申请实施例所述的虚拟交换机可以包括任何能够实现以上功能的虚拟设备,本申请在此不做限制。
由于所述虚拟交换机设置于所述区块链容器节点的宿主机上,而对宿主机而言,所述区块链容器节点是隔离的网络空间,所述区块链容器节点具有独立的网络栈信息。因此,需要通过所述第一桥接子模块实现所述区块链容器节点与所述虚拟交换机之间的通信。如图3和图4所示,以Linux操作系统举例说明,对于宿主机而言,所述区块链容器节点是隔离的network namesapce,因此,可以通过veth设备实现所述区块链容器节点与Linuxbridge设备之间的通信。veth设备是一种工作于数据链路层的虚拟网络设备,用于从一个network namespace中转发数据到另一个network namespace。veth设备可以是成对设置,一端设置于所述区块链容器节点中,另一端设置于所述区块链容器节点的宿主机上。当然,在其他实施例中,所述第一桥接模块可以包括任何能够连接所述区块链容器节点与其宿主机的虚拟设备,本申请在此不做限制。
在本申请的一个实施例中,还可以提供利用所述第一桥接子模块连接所述区块链容器节点与所述虚拟交换机的方法,所述方法可以包括下述步骤:
SS1:根据所述区块链容器节点的标识信息,确定所述区块链容器节点运行在宿主机上的容器进程所对应的进程标识信息。
SS2:通过所述容器进程对应的进程标识信息连接所述区块链容器节点与宿主机,以便在宿主机上发出指令以管理所述区块链容器节点。
SS3:创建所述第一桥接子模块,并在宿主机上发出指令,以指示所述第一桥接子模块的一端连接至所述虚拟交换机,另一端连接至所述第一区块链容器节点。
在本申请实施例中,还可以通过在所述宿主机上发出指令以设置所述区块链容器节点的MAC地址、IP地址、子网掩码、路由表等网络参数。在设置过程中,首先,可以随机生成MAC地址,并获取预先分配的各个区块链容器节点的IP地址、子网掩码以及整个区块链网络的IP地址范围。然后,可以在宿主机上发出指令设置所述区块链容器节点的网络参数。需要说明的是,区块链容器节点之间的通信可以根据所述路由表的配置经过源区块链容器节点的桥接模块、所述虚拟仿真网络107以及目标区块链容器节点的桥接模块到达所述目标区块链容器节点。
本申请实施例中,所述虚拟交换机与所述虚拟网络节点之间的通信还需要所述虚拟网卡。所述区块链容器节点在将数据发送出去之后,数据可以先到达虚拟交换机,而虚拟交换机需要将数据发送至所述区块链容器节点对应的宿主机的内核协议栈。基于此,所述桥接模块还可以包括所述虚拟网卡,所述虚拟网卡用于将所述虚拟交换机需要转发的数据发送至内核协议栈。在一个示例中,如图3和图4所示,对于Linux操作系统而言,所述虚拟网卡可以包括TAP设备,TAP设备是工作于数据链路层的虚拟网络设备。在TAP设备被创建的情况下,可以在Linux设备文件目录下自动生成对应的文件,该文件可以命名为/dev/tapX,tapX为该TAP设备的网络接口的名称。所述虚拟交换机可以使用write()等系统调用函数将数据写入该文件,写入的数据将以网络层数据包的形式经由TAP设备的网络接口tapX传递给内核协议栈。另外,所述虚拟交换机也可以通过read()等系统调用函数从文件/dev/tapX中读取到内核协议栈向tapX传递的数据。当然,在其他实施例中,所述虚拟网卡不限于所述TAP设备,其可以包括任何能够将虚拟交换机需要转发的数据发送至宿主机内核协议栈的虚拟设备,本申请在此不做限制。
本申请实施例中,所述虚拟网卡可以通过所述第二桥接子模块与所述虚拟网络节点通信。所述第二桥接子模块可以设置于所述虚拟网络节点一侧,也可以设置于所述虚拟网卡一侧,本申请在此不做限制。具体地,在所述虚拟网卡将所述虚拟交换机需要转发的数据发送至宿主机的内核协议栈的情况下,所述内核协议栈可以自动将所述数据发送至对应的第二桥接子模块中,这样,所述虚拟网络节点可以从所述第二桥接子模块中获取到所述数据。如图3和图4所示,以Linux操作系统中使用TAP虚拟网卡设备举例说明,所述第二桥接子模块可以包括TapBridge虚拟网络设备。对于每个区块链容器节点,如图4所示,可以在所述虚拟仿真网络105中建立与之对应的虚拟节点,并在所述虚拟节点上设置TapBridge设备,这样,TapBridge设备即可以成为连接所述虚拟仿真网络105(如NS-3)与Linux宿主机中TAP设备之间的桥梁。在本申请实施例中,可以使用TapBridge设备的UseBridge模式,所述虚拟仿真网络105可以根据“DeviceName”属性匹配宿主机中已经存在的TAP设备。当Linux宿主机向/dev/tapX文件中写入数据时,写入的数据可以被存储于TapBridge设备中,这样,所述虚拟网络节点可以从TapBridge设备中获取到数据。当然,在其他实施例中,所述第二桥接子模块不限于所述TapBridge设备,所述第二桥接子模块可以包括任何能够建立所述虚拟网卡与所述虚拟网络节点之间通信联系的虚拟设备,本申请在此不做限制。
本申请实施例中,通过所述桥接模块可以建立所述区块链容器节点之间的物理网络连接关系,即在应用层为不同的区块链节点之间建立连接关系。本申请实施例中,还可以建立所述区块链容器节点的邻居节点,所述邻居节点可以包括与所述区块链容器节点直接连接的区块链容器节点。在一个示例中,对于使用Kad网络的区块链网络,可以将区块链节点连接至引导节点,再通过Kad协议计算所述区块链节点与其他区块链节点之间的距离,并根据所述距离自动确定所述区块链节点的邻居节点。当然,在其他实施例中,还可以利用所述节点管理模块109设置所述区块链容器节点的邻居节点。
本申请实施例中,在对所述区块链网络107进行仿真的过程中,可以向所述区块链容器节点发送区块链交易数据。基于此,所述区块链测试装置100还可以包括交易数据产生模块,所述交易数据产生模块封装于容器中,并与所述区块链容器节点相耦合,用于在测试过程中向所述区块链容器节点发送区块链交易数据。在一个示例中,可以利用所述交易数据产生模块向所述区块链容器节点的API接口发送区块链交易数据。所述区块链交易数据可以是从真实区块链系统中获取的,也可以是随机产生的数据,本申请在此不做限制。
本申请实施例中,对于所述区块链网络107而言,可以模拟恶意区块链节点,以测试所述区块链网络107的安全性能。在一个示例中,可以将所述区块链容器节点设置为具有70%的合法节点和30%的恶意节点。例如对于共识攻击,将所述区块链容器节点设置为恶意节点的方式可以包括修改判断交易合法性的逻辑,具体地,可以通过特定字段(如交易地址、附加信息等)将合法交易修改为非法交易。那么,在所述区块链网络107运行的情况下,恶意节点将拒绝包括特定交易的合法分支从而对所述区块链网络107进行分叉。
本申请实施例中,对于虚拟仿真网络105而言,可以模拟网络故障,以测试所述区块链网络107的性能。在实际应用场景下,区块链网络经常遭遇网络攻击,例如攻击方法可以通过BGP劫持攻击来分割网络、提高所述区块链容器节点间的通信延迟,或者进行日蚀攻击使得被攻击所述区块链容器节点不再从网络的其余部分接收正确的信息。具体地,在一个示例中,在NS-3中,可以基于计时器机制动态改变NS-3的网络参数,以模拟上述网络攻击手段。其中,所述网络参数例如可以网络延迟、带宽、连通性中的至少一种。
本申请实施例中,所述区块链测试装置还可以包括测试数据采集模块103,所述测试数据采集模块103可以用于采集所述区块链容器节点和所述虚拟网络节点产生的测试数据数据。在本申请的一个实施例中,所述测试数据采集模块103可以包括下述中的至少一种子模块:运行状态采集子模块、资源消耗采集子模块,其中,
所述运行状态采集子模块封装于容器中,并与所述区块链容器节点相耦合,用于采集所述区块链容器节点或者所述区块链网络107的运行参数数据。具体地,在一个实施例中,所述运行状态采集子模块可以通过所述区块链容器节点的网络接口对所述区块链容器节点的运行状态进行监控和采集,所述运行状态可以包括所述区块链容器节点的最新区块号、当前交易确认率(TPS)、新收到的交易、链上分叉状态等状态参数。需要说明的是,所述区块链容器节点可以设置有两个网络接口,如图4所示的区块链容器节点,其中一个网络接口(即接口1)用于与所述桥接模块连接,另一个(即接口2)用于在所述区块链网络107内部通过容器自身的网桥与其他节点连接,所述其他节点可以包括其他区块链容器节点,也可以包括封装于容器中的所述运行状态采集子模块、所述资源消耗采集子模块等等。
所述资源消耗采集子模块可以封装于容器中,并与所述区块链容器节点相耦合,用于采集所述区块链容器节点中的资源消耗数据。具体地,在一个实施例中,所述资源消耗采集子模块可以在容器层对所述区块链容器节点以及所述区块链网络107的系统资源消耗进行监控采集,所述资源消耗数据可以包括CPU、内存、硬盘存储等使用情况。
在一个示例中,可以利用cadvisor等工具获取所述区块链容器节点的运行状态。例如,cadvisor是开源的用于展示和分析容器运行状态的可视化工具。通过在宿主机上运行cadvisor,可以获取到设置于宿主机上的区块链容器节点的运行状态数据、资源消耗数据等。本申请实施例中,在获取到所述运行状态数据、资源消耗数据等数据之后,还可以存储这些数据,便于后续的查询、统计等处理。在一个示例中,可以通过metrics网络接口将获取到的运行状态数据、资源消耗数据等发送至Prometheus等应用。Prometheus应用是用于事件监视和警报的应用,可以将所述运行状态数据、所述资源消耗数据等实时数据记录在利用HTTP拉取模型所构建的时间序列数据库中,并具有灵活的查询和实时警报功能。
在本申请的实施例中,所述测试数据采集模块103中还可以包括用于获取所述虚拟仿真网络105的通信数据的子模块,以测试所述虚拟仿真网络105的通信性能。
本申请实施例中,所述区块链装置100还可以包括测试数据分析模块111,所述测试数据分析模块111与所述测试数据采集模块103相耦合,用于对所述测试数据采集模块103所采集的测试数据进行分析处理。在一个示例中,可以从所述多个区块链容器节点获取的信息确定所述区块链网络107的实时负载、交易确认率、节点消耗资源等统计结果。在一个示例中,还可以对攻击交易的传播过程进行统计分析,确定攻击发生的条件、网络的最大承受攻击的能力、脆弱点等分析结果。需要说明的是,以上分析可以在实验过程中进行,也可以在实验结束后通过日志记录分析。
本申请实施例中,所述测试数据分析模块111可以包括至少一种工具,所述工具可以包括区块链可视化工具、网络可视化工具等。对于区块链网络107而言,可以利用所述区块链可视化工具对区块链网络中的数据进行实时展示,标记正常交易与恶意交易,以及通过直观的图像数据观察区块链网络107的状态。对于所述虚拟仿真网络105而言,可以使用所述网络可视化工具对所述虚拟仿真网络105中的流量信息进行实时展示,计算所述虚拟网络节点间的通信情况。对于攻击行为而言,可以通过检测脚本,从合法节点的视角对攻击行为进行捕获,发现所述区块链网络107中的异常。
本申请实施例提供的区块链测试装置,可以利用容器技术封装区块链节点,由于容器可以封装任意种类的区块链测试程序、监控程序等,因此,可以在所述区块链测试装置中快速地部署大量的区块链容器节点,扩展性强。另外,由于容器中运行的是真实的程序,克服了传统区块链仿真中测试程序与实际运行程序不一致的问题。本申请实施例还可以使用NS-3等网络仿真模拟器实现底层网络,解决相关技术中无法对网络进行精细化控、多地部署资源消耗大的问题,实现在单机上运行多个区块链容器节点以及复杂底层网络的实验仿真。
本申请另一方面还提供一种区块链测试方法,所述方法可以用于利用上述任一实施例所述的区块链测试装置进行区块链测试,包括:
向所述区块链容器节点发送区块链交易数据;
启动所述多条测试链路中的区块链容器节点对应的容器。
本申请实施例中,所述区块链交易数据可以包括利用所述交易数据产生模块产生。启动所述区块链容器节点所对应的容器,可以在所述容器所对应的宿主机中利用指令启动所述容器。
本申请另一方面还提供一种计算机可读存储介质,其上存储有计算机指令,所述指令被执行时实现上述任一实施例所述方法的步骤。
所述计算机可读存储介质可以包括用于存储信息的物理装置,通常是将信息数字化后再以利用电、磁或者光学等方式的媒体加以存储。本实施例所述的计算机可读存储介质有可以包括:利用电能方式存储信息的装置如,各式存储器,如RAM、ROM等;利用磁能方式存储信息的装置如,硬盘、软盘、磁带、磁芯存储器、磁泡存储器、U盘;利用光学方式存储信息的装置如,CD或DVD。当然,还有其他方式的可读存储介质,例如量子存储器、石墨烯存储器等等。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。

Claims (15)

1.一种区块链测试装置,其特征在于,所述装置包括多条测试链路和测试数据采集模块,所述测试链路包括区块链容器节点、虚拟网络节点和桥接模块;
所述多条测试链路中的区块链容器节点组成区块链网络,所述多条测试链路中的虚拟网络节点组成具有预设网络拓扑结构的虚拟仿真网络;
所述区块链容器节点封装于容器中,用于模拟区块链节点的功能;
所述虚拟网络节点,用于模拟所述区块链节点的网络环境;
所述桥接模块桥接于所述区块链容器节点与所述虚拟网络节点之间,用于在所述区块链容器节点与所述虚拟网络节点之间转发数据;
所述测试数据采集模块,用于采集所述区块链容器节点和所述虚拟网络节点产生的测试数据。
2.根据权利要求1所述的装置,其特征在于,所述多条测试链路中的区块链容器节点被设置为根据测试需求划分成至少一种类型的节点。
3.根据权利要求2所述的装置,其特征在于,所述类型包括下述中的至少一种:程序编写语言、合法性、节点功能、节点版本、逻辑区域、访问和管理权限。
4.根据权利要求1所述的装置,其特征在于,所述装置还包括节点管理模块,所述节点管理模块封装于容器中,并与所述区块链容器节点相耦合,用于设置所述区块链容器节点的参数。
5.根据权利要求4所述的装置,其特征在于,所述参数包括下述中的一种:增加或者删除与其他区块链容器节点之间的连接关系、资源使用参数、挖矿难度。
6.根据权利要求1所述的装置,其特征在于,所述虚拟仿真网络中包括多个子网络,所述多个子网络分别对应于不同的区块链自治域;所述多个子网络分别设置有出口节点,所述出口节点用于与其他子网络或者其他虚拟网络节点通信。
7.根据权利要求1所述的装置,其特征在于,所述桥接模块包括顺次相连的第一桥接子模块、虚拟交换机、虚拟网卡、第二桥接子模块,其中,
所述第一桥接子模块与所述区块链容器节点相耦合,所述第二桥接子模块与所述虚拟网络节点相耦合。
8.根据权利要求7所述的装置,其特征在于,所述第一桥接子模块包括veth虚拟网络设备,所述虚拟交换机包括Linuxbridge虚拟网络设备,所述虚拟网卡包括TAP虚拟网络设备,所述第二桥接子模块包括TapBridge虚拟网络设备。
9.根据权利要求1所述的装置,其特征在于,所述测试数据采集模块包括下述中的至少一种子模块:运行状态采集子模块、资源消耗采集子模块,其中,
所述运行状态采集子模块封装于容器中,并与所述区块链容器节点相耦合,用于采集所述区块链容器节点中的运行参数数据;
所述资源消耗采集子模块封装于容器中,并与所述区块链容器节点相耦合,用于采集所述区块链容器节点中的资源消耗数据。
10.根据权利要求1所述的装置,其特征在于,所述区块链装置还包括测试数据分析模块,所述测试数据分析模块与所述测试数据采集模块相耦合,用于对所述测试数据采集模块所采集的测试数据进行分析处理。
11.根据权利要求1所述的装置,其特征在于,所述区块链测试装置还包括交易数据产生模块,所述交易数据产生模块封装于容器中,并与所述区块链容器节点相耦合,用于在测试过程中向所述区块链容器节点发送区块链交易数据。
12.根据权利要求4所述的装置,其特征在于,所述节点管理模块,还用于设置恶意区块链容器节点,设置的方式包括修改所述链容器节点判断交易合法性的逻辑。
13.根据权利要求1所述的装置,其特征在于,所述虚拟仿真网络包括NS-3网络模拟器。
14.一种区块链测试方法,其特征在于,所述方法用于利用权利要求1-13任一项所述的区块链测试装置进行区块链测试,包括:
向所述区块链容器节点发送区块链交易数据;
启动所述多条测试链路中的区块链容器节点对应的容器。
15.一种非临时性计算机可读存储介质,当所述存储介质中的指令由处理器执行时,使得处理器能够执行权利要求14所述的区块链测试方法。
CN202010533067.7A 2020-06-12 2020-06-12 区块链测试方法及装置 Pending CN113806203A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010533067.7A CN113806203A (zh) 2020-06-12 2020-06-12 区块链测试方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010533067.7A CN113806203A (zh) 2020-06-12 2020-06-12 区块链测试方法及装置

Publications (1)

Publication Number Publication Date
CN113806203A true CN113806203A (zh) 2021-12-17

Family

ID=78943865

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010533067.7A Pending CN113806203A (zh) 2020-06-12 2020-06-12 区块链测试方法及装置

Country Status (1)

Country Link
CN (1) CN113806203A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114265784A (zh) * 2021-12-29 2022-04-01 傲普(上海)新能源有限公司 基于能源管理系统的测试系统及方法
CN116909931A (zh) * 2023-09-12 2023-10-20 广州民航信息技术有限公司 一种针对Fabric区块链的性能检测系统

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114265784A (zh) * 2021-12-29 2022-04-01 傲普(上海)新能源有限公司 基于能源管理系统的测试系统及方法
CN116909931A (zh) * 2023-09-12 2023-10-20 广州民航信息技术有限公司 一种针对Fabric区块链的性能检测系统
CN116909931B (zh) * 2023-09-12 2023-12-26 广州民航信息技术有限公司 一种针对Fabric区块链的性能检测系统

Similar Documents

Publication Publication Date Title
Kreutz et al. Software-defined networking: A comprehensive survey
TWI732125B (zh) 用於虛擬網路鏈路檢測的方法及裝置
Jarraya et al. A survey and a layered taxonomy of software-defined networking
CN112470431B (zh) 使用自动布尔学习的网络的模型的合成
Lu et al. Hybnet: Network manager for a hybrid network infrastructure
US8874776B2 (en) Virtual ad hoc network testbeds for network-aware applications
Zhuang et al. {NetCheck}: Network Diagnoses from Blackbox Traces
Brandón et al. Fmone: A flexible monitoring solution at the edge
JP6152148B2 (ja) メモリ障害許容率を増加する方法
US20210312472A1 (en) Method and system for prediction of smart contract violation using dynamic state space creation
US11546224B2 (en) Virtual network layer for distributed systems
CN113806203A (zh) 区块链测试方法及装置
JP2024504393A (ja) 分散不変データオブジェクトの試験
US11121941B1 (en) Monitoring communications to identify performance degradation
CN112564994A (zh) 流量监测方法、装置、云服务器及存储介质
CN113297133B (zh) 一种服务迁移质量保障方法及系统
US11228492B2 (en) Debugging a network switch by replaying configuration
US20220217050A1 (en) Policy management across multiple cloud computing environments within a network
Hamid et al. ReCSDN: Resilient controller for software defined networks
US20220311791A1 (en) Systems and methods for low latency stateful threat detection and mitigation
US11295011B2 (en) Event-triggered behavior analysis
Xu et al. SDN state inconsistency verification in openstack
Taher Testing of floodlight controller with mininet in sdn topology
Klimis Abstractions and optimisations for model-checking software-defined networks
Gao et al. Crescent: Emulating Heterogeneous Production Network at Scale

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
REG Reference to a national code

Ref country code: HK

Ref legal event code: DE

Ref document number: 40062870

Country of ref document: HK