首页 / 专利库 / 银行与财务事项 / 智能合约 / 区块链的性能分析方法及装置

链的性能分析方法及装置

阅读:482发布:2022-01-08

专利汇可以提供链的性能分析方法及装置专利检索,专利查询,专利分析的服务。并且本 发明 公开了一种 区 块 链 的性能分析方法,应用于区块链网络中,所述区块链网络包括多个 服务器 节点 ,所述区块链网络部署有测试程序客户端,所述区块链的性能分析方法包括:测试程序客户端向区块链网络发起测试 请求 ;在检测到所述区块链网络响应所述测试请求时,确定所述测试请求对应的性能指标,并对所述性能指标的测试过程进行统计分析;根据统计分析的结果分析所述区块链的性能。本发明还公开了一种区块链的性能分析装置。本发明通过对区块链网络进行多个性能指标的深入分析,提高了区块链网络性能分析的准确性。,下面是链的性能分析方法及装置专利的具体信息内容。

1.一种链的性能分析方法,应用于区块链网络中,所述区块链网络包括多个服务器节点,其特征在于,所述区块链网络部署有测试程序客户端,所述区块链的性能分析方法包括:
测试程序客户端向区块链网络发起测试请求
在检测到所述区块链网络响应所述测试请求时,确定所述测试请求对应的性能指标,并对所述性能指标的测试过程进行统计分析;
根据统计分析的结果分析所述区块链的性能。
2.如权利要求1所述的区块链的性能分析方法,其特征在于,所述测试程序客户端向区块链网络发起测试请求的步骤之前,所述区块链的性能分析方法还包括:
所述测试程序客户端读取预设的智能合约
对读取的智能合约进行编译;
将编译后的智能合约部署到所述区块链网络中,以便后续基于部署的智能合约向所述区块链网络发起测试请求。
3.如权利要求1所述的区块链的性能分析方法,其特征在于,所述确定所述测试请求对应的性能指标,并对所述性能指标的测试过程进行统计分析的步骤包括:
若所述测试请求对应的性能指标为区块同步速度,则统计区块链网络中服务器节点下载区块的开始时间与结束时间的时间差,以及对应区块的交易笔数,将所述交易笔数除以所述时间差;
若所述测试请求对应的性能指标为共识收敛耗时,则统计区块链网络中服务器节点对区块的开始共识时间与结束时间;
若所述测试请求对应的性能指标为带宽,则统计测试程序客户端执行测试过程中服务器节点的带宽流量,其中,所述带宽包括入带宽和出带宽;
若所述测试请求对应的性能指标为内存消耗以及CPU占比,则统计测试程序客户端执行测试过程中,服务器节点的进程所消耗内存容量值以及CPU占比。
4.如权利要求3所述的区块链的性能分析方法,其特征在于,所述根据所述结果分析所述区块链的性能的步骤包括:
在输出的结果为区块的交易笔数以及下载区块对应的时间差时,分析区块中交易笔数对所述数据同步速度的影响;
在输出的结果为区块链网络中服务器节点对区块的共识收敛耗时时,分析服务器节点共识性能对区块链的性能影响;
在输出的结果为服务器节点的带宽流量时,分析入带宽流量与交易请求发起速度和交易请求大小的对比关系,并分析出带宽流量与区块同步速度与单笔交易大小的对比关系;
在输出的结果为区块链网络中的内存消耗以及CPU占比时,分析所述内存消耗以及CPU占比与区块链的性能的关系。
5.如权利要求1-4任一项所述的区块链的性能分析方法,其特征在于,所述区块链网络中的服务器节点包括记账节点以及参与节点,所述区块链的性能分析方法还包括:
根据所述区块链网络中,记账节点以及参与节点的数量确定网络规模的数值;
根据网络规模的数值以及记账节点的个数,生成所述区块链网络的名称;其中,命名规则设为WN-CM,WN表示网络规模数的数值,CM表示记账节点的个数。
6.一种区块链的性能分析装置,应用于区块链网络中,所述区块链网络包括多个服务器节点,其特征在于,所述区块链网络部署有测试程序客户端,所述区块链的性能分析装置包括:
发起模块,用于向区块链网络发起测试请求;
处理模块,用于在检测到所述区块链网络响应所述测试请求时,确定所述测试请求对应的性能指标,并对所述性能指标的测试过程进行统计分析;
分析模块,用于根据统计分析的结果分析所述区块链的性能。
7.如权利要求6所述的区块链的性能分析装置,其特征在于,所述区块链的性能分析装置还包括:
读取模块,用于读取预设的智能合约;
编译模块,用于对读取的智能合约进行编译;
部署模块,用于将编译后的智能合约部署到所述区块链网络中,以便后续基于部署的智能合约向所述区块链网络发起测试请求。
8.如权利要求6所述的区块链的性能分析装置,其特征在于,所述处理模块还用于,若所述测试请求对应的性能指标为区块同步速度,则统计区块链网络中服务器节点下载区块的开始时间与结束时间的时间差,以及对应区块的交易笔数,将所述交易笔数除以所述时间差;
若所述测试请求对应的性能指标为共识收敛耗时,则统计区块链网络中服务器节点对区块的开始共识时间与结束时间;
若所述测试请求对应的性能指标为带宽,则统计测试程序客户端执行测试过程中服务器节点的带宽流量,其中,所述带宽包括入带宽和出带宽;
若所述测试请求对应的性能指标为内存消耗以及CPU占比,则统计测试程序客户端执行测试过程中,服务器节点的进程所消耗内存容量值以及CPU占比。
9.如权利要求8所述的区块链的性能分析装置,其特征在于,所述分析模块还用于,在输出的结果为区块的交易笔数以及下载区块对应的时间差时,分析区块中交易笔数对所述数据同步速度的影响;
在输出的结果为区块链网络中服务器节点对区块的共识收敛耗时时,分析服务器节点共识性能对区块链的性能影响;
在输出的结果为服务器节点的带宽流量时,分析入带宽流量与交易请求发起速度和交易请求大小的对比关系,并分析出带宽流量与区块同步速度与单笔交易大小的对比关系;
在输出的结果为区块链网络中的内存消耗以及CPU占比时,分析所述内存消耗以及CPU占比与区块链的性能的关系。
10.如权利要求6-9任一项所述的区块链的性能分析装置,其特征在于,所述区块链网络中的服务器节点包括记账节点以及参与节点,所述区块链的性能分析装置还包括:
确定模块,用于根据所述区块链网络中,记账节点以及参与节点的数量确定网络规模的数值;
生成模块,用于根据网络规模的数值以及记账节点的个数,生成所述区块链网络的名称;其中,命名规则设为WN-CM,WN表示网络规模数的数值,CM表示记账节点的个数。

说明书全文

链的性能分析方法及装置

技术领域

[0001] 本发明涉及区块链领域,尤其涉及一种区块链的性能分析方法及装置。

背景技术

[0002] 现有技术中,对区块链的性能分析测试,一般是通过对区块链进行表面性的请求测试以得出区块链网络的性能数据,没有深入区块链网络底层进行分析,导致对区块链的性能分析结果不够准确,不够全面。

发明内容

[0003] 本发明的主要目的在于提出一种区块链的性能分析方法及装置,旨在解决现有的区块链性能分析方式不够深入,导致分析结果不够全面、不够准确的技术问题。
[0004] 为实现上述目的,本发明提供的一种区块链的性能分析方法,应用于区块链网络中,所述区块链网络包括多个服务器节点,所述区块链网络部署有测试程序客户端,所述区块链的性能分析方法包括:
[0005] 测试程序客户端向区块链网络发起测试请求;
[0006] 在检测到所述区块链网络响应所述测试请求时,确定所述测试请求对应的性能指标,并对所述性能指标的测试过程进行统计分析;
[0007] 根据统计分析的结果分析所述区块链的性能。
[0008] 优选地,所述测试程序客户端向区块链网络发起测试请求的步骤之前,所述区块链的性能分析方法还包括:
[0009] 所述测试程序客户端读取预设的智能合约
[0010] 对读取的智能合约进行编译;
[0011] 将编译后的智能合约部署到所述区块链网络中,以便后续基于部署的智能合约向所述区块链网络发起测试请求。
[0012] 优选地,所述确定所述测试请求对应的性能指标,并对所述性能指标的测试过程进行统计分析的步骤包括:
[0013] 若所述测试请求对应的性能指标为区块同步速度,则统计区块链网络中服务器节点下载区块的开始时间与结束时间的时间差,以及对应区块的交易笔数,将所述交易笔数除以所述时间差;
[0014] 若所述测试请求对应的性能指标为共识收敛耗时,则统计区块链网络中服务器节点对区块的开始共识时间与结束时间;
[0015] 若所述测试请求对应的性能指标为带宽,则统计测试程序客户端执行测试过程中服务器节点的带宽流量,其中,所述带宽包括入带宽和出带宽;
[0016] 若所述测试请求对应的性能指标为内存消耗以及CPU占比,则统计测试程序客户端执行测试过程中,服务器节点的进程所消耗内存容量值以及CPU占比。
[0017] 优选地,所述根据所述结果分析所述区块链的性能的步骤包括:
[0018] 在输出的结果为区块的交易笔数以及下载区块对应的时间差时,分析区块中交易笔数对所述数据同步速度的影响;
[0019] 在输出的结果为区块链网络中服务器节点对区块的共识收敛耗时时,分析服务器节点共识性能对区块链的性能影响;
[0020] 在输出的结果为服务器节点的带宽流量时,分析入带宽流量与交易请求发起速度和交易请求大小的对比关系,并分析出带宽流量与区块同步速度与单笔交易大小的对比关系;
[0021] 在输出的结果为区块链网络中的内存消耗以及CPU占比时,分析所述内存消耗以及CPU占比与区块链的性能的关系。
[0022] 优选地,所述区块链网络中的服务器节点包括记账节点以及参与节点,所述区块链的性能分析方法还包括:
[0023] 根据所述区块链网络中,记账节点以及参与节点的数量确定网络规模的数值;
[0024] 根据网络规模的数值以及记账节点的个数,生成所述区块链网络的名称;其中,命名规则设为WN-CM,WN表示网络规模数的数值,CM表示记账节点的个数。
[0025] 此外,为实现上述目的,本发明还提出一种区块链的性能分析装置,应用于区块链网络中,所述区块链网络包括多个服务器节点,所述区块链网络部署有测试程序客户端,所述区块链的性能分析装置包括:
[0026] 发起模块,用于向区块链网络发起测试请求;
[0027] 处理模块,用于在检测到所述区块链网络响应所述测试请求时,确定所述测试请求对应的性能指标,并对所述性能指标的测试过程进行统计分析;
[0028] 分析模块,用于根据统计分析的结果分析所述区块链的性能。
[0029] 优选地,所述区块链的性能分析装置还包括:
[0030] 读取模块,用于读取预设的智能合约;
[0031] 编译模块,用于对读取的智能合约进行编译;
[0032] 部署模块,用于将编译后的智能合约部署到所述区块链网络中,以便后续基于部署的智能合约向所述区块链网络发起测试请求。
[0033] 优选地,所述处理模块还用于,
[0034] 若所述测试请求对应的性能指标为区块同步速度,则统计区块链网络中服务器节点下载区块的开始时间与结束时间的时间差,以及对应区块的交易笔数,将所述交易笔数除以所述时间差;
[0035] 若所述测试请求对应的性能指标为共识收敛耗时,则统计区块链网络中服务器节点对区块的开始共识时间与结束时间;
[0036] 若所述测试请求对应的性能指标为带宽,则统计测试程序客户端执行测试过程中服务器节点的带宽流量,其中,所述带宽包括入带宽和出带宽;
[0037] 若所述测试请求对应的性能指标为内存消耗以及CPU占比,则统计测试程序客户端执行测试过程中,服务器节点的进程所消耗内存容量值以及CPU占比。
[0038] 优选地,所述分析模块还用于,
[0039] 在输出的结果为区块的交易笔数以及下载区块对应的时间差时,分析区块中交易笔数对所述数据同步速度的影响;
[0040] 在输出的结果为区块链网络中服务器节点对区块的共识收敛耗时时,分析服务器节点共识性能对区块链的性能影响;
[0041] 在输出的结果为服务器节点的带宽流量时,分析入带宽流量与交易请求发起速度和交易请求大小的对比关系,并分析出带宽流量与区块同步速度与单笔交易大小的对比关系;
[0042] 在输出的结果为区块链网络中的内存消耗以及CPU占比时,分析所述内存消耗以及CPU占比与区块链的性能的关系。
[0043] 优选地,所述区块链网络中的服务器节点包括记账节点以及参与节点,所述区块链的性能分析装置还包括:
[0044] 确定模块,用于根据所述区块链网络中,记账节点以及参与节点的数量确定网络规模的数值;
[0045] 生成模块,用于根据网络规模的数值以及记账节点的个数,生成所述区块链网络的名称;其中,命名规则设为WN-CM,WN表示网络规模数的数值,CM表示记账节点的个数。
[0046] 本发明提出的区块链的性能分析方法及装置,测试程序客户端先向区块链网络发起测试请求,在检测到所述区块链网络响应所述测试请求时,确定所述测试请求对应的性能指标,并对所述性能指标的测试过程进行统计分析,最终根据统计分析的结果分析所述区块链的性能,本发明通过深入区块链网络底层进行多项性能指标的分析,提高了区块链网络性能分析的准确性和全面性。附图说明
[0047] 图1为本发明区块链的性能分析方法第一实施例的流程示意图;
[0048] 图2为本发明区块链的性能分析方法第二实施例的流程示意图;
[0049] 图3为本发明区块链的性能分析装置第一实施例的功能模块示意图;
[0050] 图4为本发明区块链的性能分析装置第二实施例的功能模块示意图。
[0051] 本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

[0052] 应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0053] 本发明实施例的解决方案主要是:测试程序客户端先向区块链网络发起测试请求,在检测到所述区块链网络响应所述测试请求时,确定所述测试请求对应的性能指标,并对所述性能指标的测试过程进行统计分析,最终根据统计分析的结果分析所述区块链的性能,以解决现有的区块链性能分析方式不够深入,导致分析结果不够全面、不够准确的问题。
[0054] 本发明中涉及的专业术语包括:
[0055] 区块链:即去中心化的分布式账本数据库。区块链本身其实是一串使用密码学算法所产生的数据块,每一个数据块中包含了多次区块链网络交易有效确认的信息。区块链技术起源于比特币的应用,是一种成熟技术,并非本文阐述的发明内容。
[0056] 共识机制:共识机制是指对等网络上各交易节点,使用共同的算法,对一批交易进行确认。所用到的算法包括工作量证明,权益证明,多重签名验证,选举验证等。
[0057] 参与节点:特指参与到区块链网络里,进行交易和数据交换的网络节点,每个独立机构可以拥有一个到多个交易节点,每个交易节点是一组物理网络,计算机,区块链应用软件以及数据库的组合。节点和节点之间,通过TCP/IP协议互相连接。
[0058] 记账节点:对当前区块进行签名验证的网络节点。由该节点生成并确认最新的区块的合法性,然后广播给其他节点同步最新区块。
[0059] RPC:本文中的所指的RPC英文全称为Remote Procedure Call Protocol,它指的是远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。远程过程调用的过程是是由客户端对服务器发出一个执行若干过程请求,并用客户端提供的参数,执行结果将返回给客户端。
[0060] 智能合约:本文中所指的智能合约是以solidity语言编写的实现了特定逻辑的服务程序,并以二进制的方式发布于区块链上,供合约参与方在某个时间点在区块链上执行调用并获得结果。
[0061] 本发明提供一种区块链的性能分析方法。
[0062] 参照图1,图1为本发明区块链的性能分析方法第一实施例的流程示意图。
[0063] 在本实施例中,所述区块链的性能分析方法应用于区块链网络中,所述区块链网络包括多个服务器节点,所述区块链网络部署有测试程序客户端,所述区块链的性能分析方法包括:
[0064] 步骤S10,测试程序客户端向区块链网络发起测试请求;
[0065] 步骤S20,在检测到所述区块链网络响应所述测试请求时,确定所述测试请求对应的性能指标,并对所述性能指标的测试过程进行统计分析;
[0066] 步骤S30,根据统计分析的结果分析所述区块链的性能。
[0067] 即本实施例中,先进行区块链网络的部署,该区块链网络部署多个服务器节点;其中,满足区块链网络的运行环境要求,并且运行着区块链互联互通网络模块、能达成一致共识的交易核心模块、及数据存储模块等模块的服务器,定义为区块链服务器节点;最后由满足以上要求的一组服务器形成区块链网络。其中,服务器节点包括记账节点和参与节点两种,记账节点和参与节点的具体个数不做限定,根据具体情况进行设置。
[0068] 在部署好区块链网络之后,在所述区块链网络中继续部署测试程序客户端;其中,满足区块链客户端软件的运行环境要求,能与区块链网络通过特定通信协议进行通信交互,并且能根据指定的发送速度和发送数量发出测试请求的服务器,定义为测试程序客户端。
[0069] 以下是本实施例中逐步实现区块链性能分析的具体步骤:
[0070] 其中,步骤S10,测试程序客户端向区块链网络发起性能指标的测试请求;
[0071] 首先,在所述步骤S10之前,所述区块链的性能分析方法还包括:
[0072] 步骤A,所述测试程序客户端读取预设的智能合约;
[0073] 步骤B,对读取的智能合约进行编译;
[0074] 步骤C,将编译后的智能合约部署到所述区块链网络中,以便后续基于部署的智能合约向所述区块链网络发起测试请求。
[0075] 本实施例中,所述预设的智能合约实质上是事先设置的一段代码,因此所述测试程序客户端读取到所述智能合约后,需要先对读取的所述智能合约进行编译,然后将编译后的智能合约部署到所述区块链网络中,后续,所述测试程序客户端即可基于部署的智能合约向所述区块链网络发起性能指标的测试请求。本实施例中的所述智能合约相当于一个接口,通过该接口,所述测试程序客户端才能向所述区块链网络发起性能指标的测试请求。
[0076] 本实施例中,所述测试程序客户端向区块链网络发起测试请求,可以是每次仅针对一个性能指标发起测试请求,也可以是同时针对多个性能指标发起测试请求,并且对每一个性能指标发起测试请求时,可以针对该性能指标一次性发起多个交易或请求。应该理解,测试程序客户端在执行测试过程所耗时的时间一定的情况下,每次发起交易或请求的总量越多,负载率越大。
[0077] 其中,步骤S20,在检测到所述区块链网络响应所述测试请求时,确定所述测试请求对应的性能指标,并对所述性能指标的测试过程进行统计分析;
[0078] 本实施例中,在测试程序客户端向区块链网络发起测试请求之后,若检测到所述区块链网络响应所述测试请求,此时,所述测试程序客户端确定所述测试请求对应的性能指标,并对所述性能指标的测试过程进行统计分析。应当理解的是,所述区块链网络响应所述测试请求,实质上是表示确认接收到该测试请求,即对接收到该测试请求作出响应。
[0079] 本实施例中,所述测试请求对应的性能指标包括多种性能指标,分别有区块同步速度、共识收敛耗时、交易型合约接口性能、非交易型合约接口性能、区块数据同步性能、区块容量、区块打包速度等等,因此,所述步骤S20的实施方式对应以下几种:
[0080] 1、若所述测试请求对应的性能指标为区块同步速度,则统计区块链网络中服务器节点下载区块的开始时间与结束时间的时间差,以及对应区块的交易笔数,将所述交易笔数除以所述时间差;
[0081] 其中,测试方法为监测服务器节点区块开始下载到下载完成加入区块链的时间差,以及该区块的交易笔数;
[0082] 指标计算公式:区块的交易笔数/该区块同步消耗的时间差,指标计算公式:交易笔数/每秒。
[0083] 2、若所述测试请求对应的性能指标为共识收敛耗时,则统计区块链网络中服务器节点对区块的开始共识时间与结束时间;
[0084] 其中,定义为:记账节点对一个区块开始执行网络共识算法开始,到达形成共识所花费的时间差;指标计算公式:毫秒。
[0085] 值得注意的是,共识收敛耗时是指:区块链网络中有不同的服务器节点都增加了区块,但是由于不同节点的区块的同步顺序不同,导致区块的内容不同,而此时只需要增加一个区块即可,因此,需要各个节点进行共识收敛,以确定出其中一个区块作为最终增加到区块链中的区块,而共识收敛耗时就是各个节点达到共识的时间。
[0086] 3、若所述测试请求对应的性能指标为带宽,则统计测试程序客户端执行测试过程中服务器节点的带宽流量,其中,所述带宽包括入带宽和出带宽;
[0087] 4、若所述测试请求对应的性能指标为内存消耗以及CPU占比,则统计测试程序客户端执行测试过程中,服务器节点的进程所消耗内存容量值以及CPU占比;
[0088] 5、若所述测试请求对应的性能指标为交易型合约接口,则统计交易型合约接口的交易总量,以及交易被打包成区块的时间差,将所述交易总量除以所述时间差;
[0089] 其中,测试方法是在不同规模区块链中,测试程序客户端对记账节点和参与节点连续发起大量交易请求;
[0090] 指标计算公式为:交易总量/(最后交易被打包生成区块时间-最早交易发起时间),指标单位:交易数/每秒。
[0091] 6、若所述测试请求对应的性能指标为非交易型合约接口,则统计非交易型合约接口的请求总量,以及请求结果返回的时间差,将所述请求总量除以所述时间差;
[0092] 其中,测试方法是在不同规模区块链中,测试程序客户端对参与节点连续发起大量非交易RPC请求;
[0093] 指标计算公式为:请求总量/(测试程序客户端发出的最后一个请求返回时间-最早一个请求发起时间),指标单位:请求数/每秒。
[0094] 7、若所述测试请求对应的性能指标为区块数据同步性能,则监控区块链中各个服务器节点的区块交易数,以及区块同步时间差,将区块交易数除以所述同步时间差;
[0095] 其中,测试方法是监控参与节点的区块高度的变化,计算区块同步时间差;
[0096] 指标计算公式:区块交易数/(区块同步完成时间-区块生成时间),指标单位:交易数/每秒。
[0097] 值得注意的是,所述区块高度的变化是指:同一条区块链中的各个节点由于包括的区块的个数不同,因此,对应的高度不同,那么需要进行区块的同步,以实现区块的高度相同。
[0098] 8、若所述测试请求对应的性能指标为区块容量查询请求,则统计区块链中各个服务器节点生成的区块对应的字节数;
[0099] 其中,测试方法是在不同规模区块链中,测试程序客户端对参与节点连续发起大量交易请求,查询生成的区块的容量;
[0100] 指标计算公式:区块数据的字节数,指标单位:字节。
[0101] 9、若所述测试请求对应的性能指标为区块打包速度,则统计区块链中区块的交易数,以及所述区块打包生成的所花费的时间,将所述交易数除以所花费的时间;
[0102] 其中,测试方法为监控对应区块的打包生成时间间隔及该区块的交易数;
[0103] 指标计算公式:区块的交易数/该区块打包所花费的时间;指标单位:交易数/每秒。
[0104] 10、合约接口复杂度
[0105] 定义:在智能合约的接口方法实现中,执行一次变量赋值,定义为合约接口复杂度为1。若该接口中有N次变量赋值,则该合约接口复杂度为N;
[0106] 指标计算公式:合约接口变量赋值次数。
[0107] 在本实施例中,还可根据测试的需要,让测试程序客户端变换发出不同负载程度的批量请求。并根据以下列表中需要监测指标的执行方法,做好数据监控和记录,并变换不同的网络和场景以重复执行。其中,表如下所示:
[0108]
[0109]
[0110] 其中,步骤S30,根据统计分析的结果分析所述区块链的性能。
[0111] 在本实施例中,在所述测试程序客户端确定所述测试请求对应的性能指标,并对所述性能指标的测试过程进行统计分析之后,得到统计分析的结果,并输出报告,以便于根据报告的所述结果分析所述区块链的性能。由于上文中提到性能指标包括多种,因此,所述测试程序客户端根据所述结果分析区块链的性能同样包括多种实施方式,具体地包括:
[0112] 1)在输出的结果为区块的交易笔数以及下载区块对应的时间差时,分析区块中交易笔数对所述数据同步速度的影响;具体地,分析区块中交易数量多少,对服务器节点间的区块数据同步速度的影响。
[0113] 2)在输出的结果为区块链网络中服务器节点对区块的共识收敛耗时时,分析服务器节点共识性能对区块链的性能影响;具体地,可调整记账节点的共识模型参数,以分析记账节点共识性能对整体性能的影响。
[0114] 3)在输出的结果为服务器节点的带宽流量时,分析入带宽流量与交易请求发起速度和交易请求大小的对比关系,并分析出带宽流量与区块同步速度与单笔交易大小的对比关系;具体地,分析记账节点的入带宽需求与交易请求发起速度和交易请求大小的对比关系,并分析出带宽需求与块同步速度与单笔交易大小的对比关系。
[0115] 4)在输出的结果为区块链网络中的内存消耗以及CPU占比时,分析所述内存消耗以及CPU占比与区块链的性能的关系;具体地,记录服务器节点程序的cpu运行情况,分析cpu和整体性能的关系,并记录服务器节点的内存消耗情况,分析cpu和整体性能的关系。
[0116] 进一步地,根据所述结果分析所述区块链的性能,还可包括:
[0117] 调整网络模型,分析网络模型对整体性能的影响;
[0118] 调整服务器节点的RPC服务性能参数,分析其对整体性能的影响;
[0119] 分析出带宽和与记账节点直连的服务器节点数数量的关系;
[0120] 增减网络中的节点数量,分析其和整体性能的关系等等。
[0121] 在本实施例中,相当于是确定各项性能指标的定义与指标计算公式,对执行过程中记录的数据进行统计分析,得出不同网络、场景下上述各项性能指标的结果,最终做对比分析。
[0122] 本实施例提出的区块链的性能分析方法,测试程序客户端先向区块链网络发起测试请求,在检测到所述区块链网络响应所述测试请求时,确定所述测试请求对应的性能指标,并对所述性能指标的测试过程进行统计分析,最终根据统计分析的结果分析所述区块链的性能,本实施例通过深入区块链网络底层进行多项性能指标的分析,提高了区块链网络性能分析的准确性和全面性。
[0123] 进一步地,为了提高区块链的性能分析的安全性,基于第一实施例提出本发明区块链的性能分析方法的第二实施例。
[0124] 在本实施例中,所述区块链网络中的服务器节点包括记账节点以及参与节点,参照图2,所述区块链的性能分析方法还包括:
[0125] 步骤S40,根据所述区块链网络中,记账节点以及参与节点的数量确定网络规模的数值;
[0126] 步骤S50,根据网络规模的数值以及记账节点的个数,生成所述区块链网络的名称;其中,命名规则设为WN-CM,WN表示网络规模数的数值,CM表示记账节点的个数。
[0127] 在本实施例中,由于所述区块链网络中的服务器节点包括记账节点以及参与节点,因此,计算区块链网络中,记账节点数和参与节点数之和,即可根据记账节点数和参与节点数之和确定该区块链网络中网络规模的数值,例如:区块链网络中,总共有A,B,D、E四个参与节点,以及有C一个记账节点。因此依据定义,该网络规模为W5。
[0128] 指标计算公式:记账节点数+参与节点数;定义描述方式:W(记账节点数+参与节点数)。
[0129] 在确定区块链网络中网络规模的数值之后,再根据网络规模的数值以及记账节点的个数,生成所述区块链网络的名称。优选地,将命名规则设置为WN-CM,其中,WN表示网络规模的数值,CM表示记账节点的个数,同样以上述例子为例,可以确定记账节点为1个,因此,最终所述区块链网络的名称就为:W5-C1。
[0130] 通过这种命名规则,可以对区块链网络进行清晰的,准确的描述,使得各个区块链网络之间的命名区分开,即使有多个区块链同时在通信,不会由于名称无法区分而导致通信过程出错。
[0131] 本发明进一步提供一种区块链的性能分析装置。
[0132] 参照图3,图3为本发明区块链的性能分析装置第一实施例的功能模块示意图。
[0133] 需要强调的是,对本领域的技术人员来说,图3所示功能模块图仅仅是一个较佳实施例的示例图,本领域的技术人员围绕图3所示的区块链的性能分析装置的功能模块,可轻易进行新的功能模块的补充;各功能模块的名称是自定义名称,仅用于辅助理解该区块链的性能分析装置的各个程序功能块,不用于限定本发明的技术方案,本发明技术方案的核心是,各自定义名称的功能模块所要达成的功能。
[0134] 在本实施例中,所述区块链的性能分析装置应用于区块链网络中,所述区块链网络包括多个服务器节点,所述区块链网络部署有测试程序客户端,所述区块链的性能分析装置包括:
[0135] 发起模块10,用于向区块链网络发起测试请求;
[0136] 处理模块20,用于在检测到所述区块链网络响应所述测试请求时,确定所述测试请求对应的性能指标,并对所述性能指标的测试过程进行统计分析;
[0137] 分析模块30,用于根据统计分析的结果分析所述区块链的性能。
[0138] 即本实施例中,先进行区块链网络的部署,该区块链网络部署多个服务器节点;其中,满足区块链网络的运行环境要求,并且运行着区块链互联互通网络模块、能达成一致共识的交易核心模块、及数据存储模块等模块的服务器,定义为区块链服务器节点;最后由满足以上要求的一组服务器形成区块链网络。其中,服务器节点包括记账节点和参与节点两种,记账节点和参与节点的具体个数不做限定,根据具体情况进行设置。
[0139] 在部署好区块链网络之后,在所述区块链网络中继续部署测试程序客户端;其中,满足区块链客户端软件的运行环境要求,能与区块链网络通过特定通信协议进行通信交互,并且能根据指定的发送速度和发送数量发出测试请求的服务器,定义为测试程序客户端。
[0140] 其中,发起模块10,用于向区块链网络发起测试请求;
[0141] 在所述发起模块10向区块链网络发起测试请求之前,所述区块链的性能分析装置还包括:
[0142] 读取模块,用于读取预设的智能合约;
[0143] 编译模块,用于对读取的智能合约进行编译;
[0144] 部署模块,用于将编译后的智能合约部署到所述区块链网络中,以便后续基于部署的智能合约向所述区块链网络发起测试请求。
[0145] 本实施例中,所述预设的智能合约实质上是事先设置的一段代码,因此所述读取模块读取到所述智能合约后,需要所述编译模块对读取的所述智能合约进行编译,然后所述部署模块将编译后的智能合约部署到所述区块链网络中,后续,所述发起模块10即可基于部署的智能合约向所述区块链网络发起性能指标的测试请求。本实施例中的所述智能合约相当于一个接口,通过该接口,所述发起模块10才能向所述区块链网络发起性能指标的测试请求。
[0146] 本实施例中,所述发起模块10向区块链网络发起测试请求,可以是每次仅针对一个性能指标发起测试请求,也可以是同时针对多个性能指标发起测试请求,并且对每一个性能指标发起测试请求时,可以针对该性能指标一次性发起多个交易或请求。应该理解,在执行测试过程所耗时的时间一定的情况下,所述发起模块10每次发起交易或请求的总量越多,负载率越大。
[0147] 其中,处理模块20,用于在检测到所述区块链网络响应所述测试请求时,确定所述测试请求对应的性能指标,并对所述性能指标的测试过程进行统计分析;
[0148] 本实施例中,在所述发起模块10向区块链网络发起测试请求之后,若检测到所述区块链网络响应所述测试请求,此时,所述处理模块20确定所述测试请求对应的性能指标,并对所述性能指标的测试过程进行统计分析。应当理解的是,所述区块链网络响应所述测试请求,实质上是表示确认接收到该测试请求,即对接收到该测试请求作出响应。
[0149] 本实施例中,所述测试请求对应的性能指标包括多种性能指标,分别有区块同步速度、共识收敛耗时、交易型合约接口性能、非交易型合约接口性能、区块数据同步性能、区块容量、区块打包速度等等,因此,所述步骤S20:
[0150] 所述处理模块20的实施方式对应以下几种:
[0151] 1、若所述测试请求对应的性能指标为区块同步速度,则统计区块链网络中服务器节点下载区块的开始时间与结束时间的时间差,以及对应区块的交易笔数,将所述交易笔数除以所述时间差;
[0152] 其中,测试方法为监测服务器节点区块开始下载到下载完成加入区块链的时间差,以及该区块的交易笔数;
[0153] 指标计算公式:区块的交易笔数/该区块同步消耗的时间差,指标计算公式:交易笔数/每秒。
[0154] 2、若所述测试请求对应的性能指标为共识收敛耗时,则统计区块链网络中服务器节点对区块的开始共识时间与结束时间;
[0155] 其中,定义为:记账节点对一个区块开始执行网络共识算法开始,到达形成共识所花费的时间差;指标计算公式:毫秒。
[0156] 值得注意的是,共识收敛耗时是指:区块链网络中有不同的服务器节点都增加了区块,但是由于不同节点的区块的同步顺序不同,导致区块的内容不同,而此时只需要增加一个区块即可,因此,需要各个节点进行共识收敛,以确定出其中一个区块作为最终增加到区块链中的区块,而共识收敛耗时就是各个节点达到共识的时间。
[0157] 3、若所述测试请求对应的性能指标为带宽,则统计测试程序客户端执行测试过程中服务器节点的带宽流量,其中,所述带宽包括入带宽和出带宽;
[0158] 4、若所述测试请求对应的性能指标为内存消耗以及CPU占比,则统计测试程序客户端执行测试过程中,服务器节点的进程所消耗内存容量值以及CPU占比;
[0159] 5、若所述测试请求对应的性能指标为交易型合约接口,则统计交易型合约接口的交易总量,以及交易被打包成区块的时间差,将所述交易总量除以所述时间差;
[0160] 其中,测试方法是在不同规模区块链中,测试程序客户端对记账节点和参与节点连续发起大量交易请求;
[0161] 指标计算公式为:交易总量/(最后交易被打包生成区块时间-最早交易发起时间),指标单位:交易数/每秒。
[0162] 6、若所述测试请求对应的性能指标为非交易型合约接口,则统计非交易型合约接口的请求总量,以及请求结果返回的时间差,将所述请求总量除以所述时间差;
[0163] 其中,测试方法是在不同规模区块链中,测试程序客户端对参与节点连续发起大量非交易RPC请求;
[0164] 指标计算公式为:请求总量/(测试程序客户端发出的最后一个请求返回时间-最早一个请求发起时间),指标单位:请求数/每秒。
[0165] 7、若所述测试请求对应的性能指标为区块数据同步性能,则监控区块链中各个服务器节点的区块交易数,以及区块同步时间差,将区块交易数除以所述同步时间差;
[0166] 其中,测试方法是监控参与节点的区块高度的变化,计算区块同步时间差;
[0167] 指标计算公式:区块交易数/(区块同步完成时间-区块生成时间),指标单位:交易数/每秒。
[0168] 值得注意的是,所述区块高度的变化是指:同一条区块链中的各个节点由于包括的区块的个数不同,因此,对应的高度不同,那么需要进行区块的同步,以实现区块的高度相同。
[0169] 8、若所述测试请求对应的性能指标为区块容量查询请求,则统计区块链中各个服务器节点生成的区块对应的字节数;
[0170] 其中,测试方法是在不同规模区块链中,测试程序客户端对参与节点连续发起大量交易请求,查询生成的区块的容量;
[0171] 指标计算公式:区块数据的字节数,指标单位:字节。
[0172] 9、若所述测试请求对应的性能指标为区块打包速度,则统计区块链中区块的交易数,以及所述区块打包生成的所花费的时间,将所述交易数除以所花费的时间;
[0173] 其中,测试方法为监控对应区块的打包生成时间间隔及该区块的交易数;
[0174] 指标计算公式:区块的交易数/该区块打包所花费的时间;指标单位:交易数/每秒。
[0175] 10、合约接口复杂度
[0176] 定义:在智能合约的接口方法实现中,执行一次变量赋值,定义为合约接口复杂度为1。若该接口中有N次变量赋值,则该合约接口复杂度为N;
[0177] 指标计算公式:合约接口变量赋值次数。
[0178] 在本实施例中,还可根据测试的需要,让测试程序客户端变换发出不同负载程度的批量请求。并根据以下列表中需要监测指标的执行方法,做好数据监控和记录,并变换不同的网络和场景以重复执行。其中,表如下所示:
[0179]
[0180]
[0181] 其中,分析模块30,用于根据统计分析的结果分析所述区块链的性能。
[0182] 在本实施例中,在确定所述测试请求对应的性能指标,并对所述性能指标的测试过程进行统计分析之后,分析模块30得到统计分析的结果,并输出报告,以便于根据报告的所述结果分析所述区块链的性能。由于上文中提到性能指标包括多种,因此,所述分析模块30根据所述结果分析区块链的性能同样包括多种实施方式,具体地包括:
[0183] 1)在输出的结果为区块的交易笔数以及下载区块对应的时间差时,分析区块中交易笔数对所述数据同步速度的影响;具体地,分析区块中交易数量多少,对服务器节点间的区块数据同步速度的影响。
[0184] 2)在输出的结果为区块链网络中服务器节点对区块的共识收敛耗时时,分析服务器节点共识性能对区块链的性能影响;具体地,可调整记账节点的共识模型参数,以分析记账节点共识性能对整体性能的影响。
[0185] 3)在输出的结果为服务器节点的带宽流量时,分析入带宽流量与交易请求发起速度和交易请求大小的对比关系,并分析出带宽流量与区块同步速度与单笔交易大小的对比关系;具体地,分析记账节点的入带宽需求与交易请求发起速度和交易请求大小的对比关系,并分析出带宽需求与块同步速度与单笔交易大小的对比关系。
[0186] 4)在输出的结果为区块链网络中的内存消耗以及CPU占比时,分析所述内存消耗以及CPU占比与区块链的性能的关系;具体地,记录服务器节点程序的cpu运行情况,分析cpu和整体性能的关系,并记录服务器节点的内存消耗情况,分析cpu和整体性能的关系。
[0187] 进一步地,根据所述结果分析所述区块链的性能,还可包括:
[0188] 调整网络模型,分析网络模型对整体性能的影响;
[0189] 调整服务器节点的RPC服务性能参数,分析其对整体性能的影响;
[0190] 分析出带宽和与记账节点直连的服务器节点数数量的关系;
[0191] 增减网络中的节点数量,分析其和整体性能的关系等等。
[0192] 在本实施例中,相当于是确定各项性能指标的定义与指标计算公式,对执行过程中记录的数据进行统计分析,得出不同网络、场景下上述各项性能指标的结果,最终做对比分析。
[0193] 本实施例提出的区块链的性能分析装置,先向区块链网络发起测试请求,在检测到所述区块链网络响应所述测试请求时,确定所述测试请求对应的性能指标,并对所述性能指标的测试过程进行统计分析,最终根据统计分析的结果分析所述区块链的性能,本实施例通过深入区块链网络底层进行多项性能指标的分析,提高了区块链网络性能分析的准确性和全面性。
[0194] 进一步地,为了提高区块链的性能分析的安全性,基于第一实施例提出本发明区块链的性能分析装置的第二实施例。
[0195] 在本实施例中,所述区块链网络中的服务器节点包括记账节点以及参与节点,参照图4,所述区块链的性能分析装置还包括:
[0196] 确定模块40,用于根据所述区块链网络中,记账节点以及参与节点的数量确定网络规模的数值;
[0197] 生成模块50,用于根据网络规模的数值以及记账节点的个数,生成所述区块链网络的名称;其中,命名规则设为WN-CM,WN表示网络规模数的数值,CM表示记账节点的个数。
[0198] 在本实施例中,由于所述区块链网络中的服务器节点包括记账节点以及参与节点,因此,计算区块链网络中,记账节点数和参与节点数之和,所述确定模块40即可根据记账节点数和参与节点数之和确定该区块链网络中网络规模的数值,例如:区块链网络中,总共有A,B,D、E四个参与节点,以及有C一个记账节点。因此依据定义,该网络规模为W5。
[0199] 指标计算公式:记账节点数+参与节点数;定义描述方式:W(记账节点数+参与节点数)。
[0200] 在所述确定模块40确定区块链网络中网络规模的数值之后,所述生成模块50再根据网络规模的数值以及记账节点的个数,生成所述区块链网络的名称。优选地,将命名规则设置为WN-CM,其中,WN表示网络规模的数值,CM表示记账节点的个数,同样以上述例子为例,可以确定记账节点为1个,因此,最终所述区块链网络的名称就为:W5-C1。
[0201] 通过这种命名规则,可以对区块链网络进行清晰的,准确的描述,使得各个区块链网络之间的命名区分开,即使有多个区块链同时在通信,不会由于名称无法区分而导致通信过程出错。
[0202] 需要说明的是,在本文中,术语“包括”、“包含”或者其任何其它变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其它要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
[0203] 上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0204] 通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
[0205] 以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其它相关的技术领域,均同理包括在本发明的专利保护范围内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈