CN116016255B - 一种基于动态代理和智能合约的通用区块链性能评测方法 - Google Patents
一种基于动态代理和智能合约的通用区块链性能评测方法 Download PDFInfo
- Publication number
- CN116016255B CN116016255B CN202211709268.3A CN202211709268A CN116016255B CN 116016255 B CN116016255 B CN 116016255B CN 202211709268 A CN202211709268 A CN 202211709268A CN 116016255 B CN116016255 B CN 116016255B
- Authority
- CN
- China
- Prior art keywords
- test
- load
- performance evaluation
- universal
- blockchain
- 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
- 238000011156 evaluation Methods 0.000 title claims abstract description 81
- 238000012360 testing method Methods 0.000 claims abstract description 125
- 238000013515 script Methods 0.000 claims abstract description 42
- 238000000034 method Methods 0.000 claims description 21
- 230000008569 process Effects 0.000 claims description 16
- 230000004044 response Effects 0.000 claims description 13
- 238000013210 evaluation model Methods 0.000 claims description 9
- 238000005265 energy consumption Methods 0.000 claims description 8
- 238000004458 analytical method Methods 0.000 claims description 6
- 230000007613 environmental effect Effects 0.000 claims description 6
- 238000004422 calculation algorithm Methods 0.000 claims description 4
- 230000004913 activation Effects 0.000 claims description 3
- 230000001419 dependent effect Effects 0.000 claims description 3
- 238000009434 installation Methods 0.000 claims description 3
- 238000004806 packaging method and process Methods 0.000 claims description 3
- 238000013461 design Methods 0.000 abstract description 18
- 230000006872 improvement Effects 0.000 abstract description 6
- 238000005457 optimization Methods 0.000 abstract description 5
- 238000011161 development Methods 0.000 abstract description 3
- 230000007547 defect Effects 0.000 abstract description 2
- 239000003795 chemical substances by application Substances 0.000 description 22
- 239000008186 active pharmaceutical agent Substances 0.000 description 11
- 238000004364 calculation method Methods 0.000 description 9
- 230000003993 interaction Effects 0.000 description 9
- 238000010586 diagram Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000012545 processing Methods 0.000 description 4
- 239000009131 zhiling Substances 0.000 description 4
- 238000012546 transfer Methods 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- RTZKZFJDLAIYFH-UHFFFAOYSA-N Diethyl ether Chemical compound CCOCC RTZKZFJDLAIYFH-UHFFFAOYSA-N 0.000 description 2
- 238000013079 data visualisation Methods 0.000 description 2
- 230000001934 delay Effects 0.000 description 2
- 238000005304 joining Methods 0.000 description 2
- 238000011056 performance test Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000005094 computer simulation Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013499 data model Methods 0.000 description 1
- 230000002950 deficient Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000009826 distribution Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000003860 storage Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
- 230000014616 translation Effects 0.000 description 1
- 230000003313 weakening effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3692—Test management for test results analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3409—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
- G06F11/3414—Workload generation, e.g. scripts, playback
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- 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)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种基于动态代理和智能合约的通用区块链性能评测方法,包括:获取自动化配置项脚本,基于自动化配置项脚本对待测链系统进行配置,并设计待测链系统的代理服务器网络接口;获取通用分层测试负载,基于代理服务器网络接口和通用分层测试负载,获取待测链系统的环境测试结果;基于代理服务器网络接口和环境测试结果,获取负载测试执行结果;对负载测试执行结果进行多维度评价,完成区块链性能评测。本发明为当前各种类型的区块链系统平台提供高效、灵活、易于部署的分层性能评测,分析系统的性能瓶颈和固有设计缺陷,为系统的性能提升和设计优化提供指导,同时为今后区块链系统的标准化发展提出合理化建议。
Description
技术领域
本发明属于计算机网络和区块链技术领域,尤其涉及一种基于动态代理和智能合约的通用区块链性能评测方法。
背景技术
分布式系统的性能一般用于衡量系统所能够实现的目标功效,性能指标可能包括每秒能处理的进程数量或者特定需求下所需要的时间长短。而对于区块链系统而言,性能通常是指交易被验证并且以无法撤销的方式存储在每个对等节点中所需的平均时间,反映的是交易上链的速率。
然而和分布式系统类似,区块链系统也存在不可能三角问题,即当前的主流区块链系统在有效保证去中心化和安全性的同时,往往只能处理非常小的交易吞吐量(TPS非常有限),而当保证高频交易的吞吐量时,安全性和去中心化程度又面临极大的削弱。高效、安全、公平、低销等多维度的性能指标事实上是互相制约的。因此,围绕究竟什么是好的区块链系统、如何评价一个区块链系统的好坏,开展多维度、分层次的区块链系统性能评测架构研究,分析影响区块链系统性能的制约因素,为区块链应用场景提出可能的系统性能提升方案,是当前区块链技术领域的一个重要的课题。
目前最主流的区块链性能基准测试框架如Blockbench,设计实现了SmallBank和kv-store等测试负载,通过一定程度的负载封装测试了若干种区块链系统,并针对吞吐量、交易时延以及CPU和内存开销等指标进行了测试;Caliper的CaliperBlockchain NBI是现有最主流的区块链API抽象参考,相比于Blockbench在Macro层的插入、删除、更新等基本的数据库层面抽象,Caliper更能体现出区块链系统的独有特征,但是Caliper并没有深入交易生命周期的各个阶段进行分析;Zheng等人提出了区块链系统的整体性能指标和详细性能指标,让用户了解区块链不同阶段的确切性能,并提出了一个基于系统日志的性能监控框架,具有低开销、细粒度、高可扩展等优点。然而,上述区块链性能测试框架仍存在以下突出问题:1.由于区块链系统环境部署方式各异,现有评测框架的接入流程复杂,评测标准化不足;2.当前评测框架的评测侧重点各不相同,分层性能测评十分粗略,宏观测试和微观测试的设计相对割裂,各个区块链系统的性能难以互相比较;3.面向新型国产区块链,尤其是不支持Json RPC的区块链系统评测接口匮乏,评测框架的通用性和灵活性较差。为此,我们基于动态代理模式和智能合约技术,设计区块链系统自动部署配置项、评测客户端、代理驱动器以及指标解析器等,进而提供更加通用、高效、便捷的区块链分层性能评测。
发明内容
本发明的目的在于提出一种基于动态代理和智能合约的通用区块链性能评测方法,以解决现有区块链性能评测架构通用性差、负载执行低效和评测指标单一等问题,为当前各种类型的区块链系统平台提供高效、灵活、易于部署的分层性能评测,分析系统的性能瓶颈和固有设计缺陷,为系统的性能提升和设计优化提供指导,同时为今后区块链系统的标准化发展提出合理化建议。
为实现上述目的,本发明提供了一种基于动态代理和智能合约的通用区块链性能评测方法,包括以下步骤:
获取自动化配置项脚本,基于所述自动化配置项脚本对待测链系统进行配置,并设计所述待测链系统的代理服务器网络接口;
获取通用分层测试负载,基于所述代理服务器网络接口和所述通用分层测试负载,获取所述待测链系统的环境测试结果;
基于所述代理服务器网络接口和所述环境测试结果,获取负载测试执行结果;
对所述负载测试执行结果进行多维度评价,完成区块链性能评测。
可选的,基于所述自动化配置项脚本对待侧链系统进行配置具体包括:SSH免密登录、节点配置、依赖安装、源码编译、账户激活、共识协议、加密算法、证书关联、区块链浏览器设置及集群起链。
可选的,设计所述待测链系统的代理服务器网络接口包括:
对所述待测链系统进行逐层抽象,获取待测链系统的共有特征;
对所述待测链系统的共有特征进行封装,获取预置格式的所述代理服务器网络接口。
可选的,基于所述代理服务器网络接口和所述通用分层测试负载,获取所述待测链系统的环境测试结果包括:
获取负载连接器,基于负载连接器获取通用分层测试负载;
将所述通用分层测试负载与代理服务器进行交互后,基于所述代理服务器网络接口,将所述通用分层测试负载以脚本字段或智能合约形式输入待测链系统环境,获取所述待测链系统的环境测试结果。
可选的,基于所述代理服务器网络接口和所述环境测试结果,获取负载测试执行结果包括:
所述代理服务器网络接口包括数据查询接口和日志查询接口;
基于所述数据查询接口和所述日志查询接口,对所述环境测试结果进行轮询和日志拉取,获取负载测试执行结果。
可选的,基于所述数据查询接口和所述日志查询接口,对所述环境测试结果进行轮询和日志拉取,获取负载测试执行结果包括:
基于所述数据查询接口,对所述环境测试结果进行轮询获取链上数据状态;
基于所述环境测试结果,调用monitor程序获取节点执行环境资源使用情况;
基于所述日志查询接口,对所述环境测试结果进行日志拉取,获取过程日志信息;
将所述链上数据状态、所述节点执行环境资源使用情况和所述过程日志信息汇总,获取负载测试执行结果。
可选的,对所述负载测试执行结果进行多维度评价,完成区块链性能评测包括:
将所述负载测试执行结果输入多种指标模型脚本,基于指标解析脚本,获取性能评价模型;
对所述性能评价模型进行多维度评价,完成区块链性能评价。
可选的,对所述负载测试执行结果进行多维度评价,完成区块链性能评测还包括:
基于所述性能评价模型进行多维度评价,获取多维度评价结果;
对所述多维度评价结果形成评价报告,并展示所述评价报告。
可选的,所述性能评价模型包括,系统吞吐量、平均响应时延、交易成功率、单位交易费用、单位CPU交易量、单位内存交易量、单位磁盘读写交易量、单位网络流量交易量、节点RPC响应速率、交易广播速率、合约执行时间、状态更新时间、共识达成时间、共识能耗占比、相同执行逻辑下合约形式与脚本执行能耗比。
本发明具有以下有益效果:
(1)通过公共抽象待测链系统环境部署的参数设置等各个环节,设计自动化配置项脚本,实现待测链系统的一键部署和运行,大大降低待测链系统部署的复杂程度。
(2)通过动态代理技术实现与待测链的统一交互,同时适配器测试引擎的动态库提供了区块链系统中常用的函数操作,大大降低了代理服务器端的实现难度以及接口的复杂程度,提升系统通用性的同时,兼顾测试逻辑的可定制性以及待测链接入的便捷性。
(3)通过智能合约技术实现负载设计的标准化,提高测试负载的可重用性,进而实现不同系统性能的横向比较,客户端所使用的Lua脚本语言与C/C++等语言具有良好的结合性,显著提升了测试框架的执行性能。
(4)通过逐层设计详细的性能评价模型,从多维度全方位评价系统的性能瓶颈,并为系统的设计优化和性能提升提供指导。
(5)代理服务器主体框架采用GO语言实现,使用协程并发技术,提高系统的执行效率,便于评测框架的推广和迭代。
附图说明
构成本申请的一部分的附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本发明实施例基于动态代理和智能合约的通用区块链性能评测方法的系统架构图;
图2为本发明实施例基于动态代理和智能合约的通用区块链性能评测方法的接口设计图;
图3为本发明实施例基于动态代理和智能合约的通用区块链性能评测方法的负载设计图;
图4为本发明实施例基于动态代理和智能合约的通用区块链性能评测方法的测试引擎图;
图5为本发明实施例基于动态代理和智能合约的通用区块链性能评测方法的交易流程图;
图6为本发明实施例基于动态代理和智能合约的通用区块链性能评测方法的海河智链和以太坊的每秒交易量对比图;
图7为本发明实施例基于动态代理和智能合约的通用区块链性能评测方法的海河智链和以太坊的平均响应时延对比图;
图8为本发明实施例基于动态代理和智能合约的通用区块链性能评测方法的海河智链和以太坊的单位CPU周期处理的交易量对比图;
图9为本发明实施例基于动态代理和智能合约的通用区块链性能评测方法的海河智链和以太坊的单位时间内存处理的交易量对比图;
图10为本发明实施例基于动态代理和智能合约的通用区块链性能评测方法的海河智链和以太坊的单位磁盘读对应的交易量对比图;
图11为本发明实施例基于动态代理和智能合约的通用区块链性能评测方法的海河智链和以太坊的单位磁盘写对应的交易量对比图;
图12为本发明实施例基于动态代理和智能合约的通用区块链性能评测方法的海河智链和以太坊的单位网络上行对应的交易量对比图;
图13为本发明实施例基于动态代理和智能合约的通用区块链性能评测方法的海河智链和以太坊的单位网络下行对应的交易量对比图;
图14为本发明实施例基于动态代理和智能合约的通用区块链性能评测方法的海河智链和以太坊的多维度资源占用对比雷达图;
图15为本发明实施例基于动态代理和智能合约的通用区块链性能评测方法的海河智链和以太坊的节点发现时间对比图;
图16为本发明实施例基于动态代理和智能合约的通用区块链性能评测方法的海河智链和以太坊的RPC响应速率对比图;
图17为本发明实施例基于动态代理和智能合约的通用区块链性能评测方法的以太坊的共识达成时间和状态更新时间对比图;
图18为本发明实施例基于动态代理和智能合约的通用区块链性能评测方法的海河智链的共识达成时间和状态更新时间对比图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
实施例一
如图1所示,本实施例中提供一种基于动态代理和智能合约的通用区块链性能评测方法,包括以下步骤:
步骤一:适配器中的驱动器组件调用自动化脚本完成由客户端定义的待测试链的节点配置与部署,并通过动态代理技术设计实现与不同待测试链交互的逐层公共抽象和封装的代理服务器网络接口;
步骤二:由适配器中的负载连接器调用客户端中预定义的通用分层测试负载,并以HTTP请求响应的方式与代理服务器交互,调用网络接口将测试负载以脚本字段或智能合约形式注入待测链系统环境进行宏观和微观测试;
步骤三:通过自主设计的服务器节点运行时环境观测监视器获取待测链负载测试程序的资源占用参数,通过调用步骤一中实现的代理服务器网络接口中的数据查询接口和日志查询接口综合获取负载测试执行结果;
步骤四:将步骤三中获取的资源占用参数和测试执行结果输出至客户端的指标解析器中,进一步调用多种指标解析脚本综合实现对系统数据模型、网络协议、共识效率、合约引擎等的逐层计算、分析和评价;
步骤五:上述指标计算结果通过海河智链系统数据中台后端与海河智链区块链浏览器前端的交互,实现测试结果的多维度展示,并生成测试报告。
在一个实施例中,步骤一通过自动配置项脚本实现待测链系统的自动部署与运行,然后对不同区块链平台提供的RPC和API等交互方式进行了抽象和封装,开放的接口在主流区块链系统上均易于实现,具体过程如下:
首先,使用客户端自定义的配置项脚本一键完成待测链系统及其运行环境的SSH免密登录、节点配置、依赖安装、源码编译、账户激活、共识协议、加密算法、证书关联(针对许可链处理数字身份认证)、区块链浏览器设置与集群起链。然后,根据反射机制的基本原理,实现基于golang的动态代理模式,引入了上下文(Context)的概念,抽象出区块链系统的共有特征,用以保证测试负载的可重用性,其中每一个待测链的测试代理服务器都是一个状态机,可以实现确定性的状态转移,同时向测试框架开放统一的基于Json格式的网络接口,具体包括:1.导入待测链平台提供的RPC和API接口库;2.定义接口结构体并实现具体的类,例如哈希运算,地址转换、Json解析、HTTP相关的网络请求操作等;3.通过反射函数实现代理,向客户端暴露统一的JSON格式RPC接口,包括配置接口、合约接口和数据接口三种类型,具体如图2所示,代理接口如表1所示。
表1
在一个实施例中,步骤二定义了作为测试载体的分层测试负载脚本列表,并利用步骤一提供的负载连接器待测链网络接口,实现可供选择的普通交易形式或智能合约形式的上链方式,测试负载结构如图3所示,具体过程如下:
实现了步骤一中所构建的上述接口的区块链系统,都可以方便地使用负载插件中设计的负载逻辑来测试链性能。其中,负载插件包含用于测试系统宏观吞吐量和时延的账户转账操作、用于测试合约执行引擎并行效率的读写集合冲突验证操作、用于测试共识执行效率的共识执行期间资源消耗与总消耗占比指标、用于测试数据层数据随机存取和查询操作以及测试用户自定义的基于区块大小、事务输入速率和批处理大小等参数调整实现的其他负载脚本列表。负载连接器同时开放以普通交易和合约形式部署上链的选项,完成从不同层次对待测链系统性能测试的输入。作为连接负载脚本和测试代理服务器的桥梁,负载连接器的作用是接受来自客户端负载插件的指令信息,然后发送给测试代理服务器执行,如图4所示。对于负载脚本而言,负载连接器的作用是为测试负载提供确定性运行时环境,保证脚本中测试逻辑的正确执行。
在一个实施例中,步骤三在步骤一和步骤二的基础上对测试结果进行轮询和日志拉取,从而获取负载测试的输出,具体过程如下:
步骤二中适配器调用封装接口将负载注入待测链系统运行环境后,待测链系统会大致按照如图5所示的交易流程执行,经过智能合约执行、交易验证等步骤,交易打包出块,负载合约调用成功。观测监视器通过轮询调度线程查询链上数据状态,通过调用monitor程序获取节点进程级别的资源使用情况,包括CPU占用、内存占用、磁盘I/O、网络流量等,通过调用parse程序对系统输出日志进行解析,获得节点加入、RPC响应、交易广播、合约执行、状态更新、共识达成等过程的日志字段信息,并将上述链上数据状态、节点进程资源使用情况和日志字段信息汇总计算得到负载测试执行结果。
在一个实施例中,步骤四在步骤一、步骤二和步骤三的基础上将负载测试执行结果数据输入多种指标模型脚本,计算完成细粒度性能评价,具体过程如下:
因为系统吞吐量和交易时延只能反应待测系统的宏观的性能,会导致取得的结果比较片面,因此使用自主设计的分层性能计算模型,包括系统吞吐量、平均响应时延、交易成功率、单位交易费用、单位CPU交易量、单位内存交易量、单位磁盘读写交易量、单位网络流量交易量、节点RPC响应速率、交易广播速率、合约执行时间、状态更新时间、共识达成时间、共识能耗占比、相同执行逻辑下合约形式与脚本执行能耗比等指标,从而综合全面的评价待测系统性能,具体如
表2所示。
表2
在一个实施例中,步骤五在步骤一、步骤二、步骤三和步骤四的基础上使用可视化数据中台与区块链浏览器实现测试结果的多维度展示,并生成测试报告,具体步骤如下:
通过对上述性能计算模型的计算结果进行汇总整理,由海河智链系统数据中台后端,与海河智链区块链浏览器前端Web界面的异步交互,实现数据可视化处理,如图6-18所示,使用表格、图像、动态曲线等形式呈现评测结果,自动生成测试报告,方便进一步为区块链系统的性能提升和设计优化提供指导参考。
实施例二
首先介绍实验环境及其配置。IchainTest测试平台是由四个阿里云节点构成的服务集群,其中一个节点39.103.156.177部署作为客户端程序用于发送交易负载,另外三个节点101.201.46.135、39.103.194.213、123.56.133.165部署待测链系统,可以实现由客户端向单个节点发送交易,也可实现一对多的交易发送,实现了对于测试的负载均衡策略设计,能够更加充分的利用云计算集群的整体运算能力,提升测试的整体效率。各个节点的性能参数配置如下:所有节点均在阿里云中的x86_64虚拟机上运行。每个虚拟机分配有32个Intel(R)Xeon(R)CPU E5-2683 v3@2.00GHz vCPU和32GB内存。用于生成负载的客户端计算机分配有56个vCPU和128GB内存。节点连接到3Gbps数据中心网络。
下面以海河智链、以太坊和长安链为例,进一步说明评测框架使用流程。
图1是系统整体架构的示意图,测试交易流程如图4所示。以太坊、长安链和海河智链都是支持智能合约的区块链系统。虽然三者在共识算法、存储逻辑以及合约执行方面的内在原理不尽相同,但是都支持基本的区块链功能。在链交互方面,以太坊支持Json RPC,长安链以及海河智链支持Protobuf RPC,可以方便地与链系统进行交互。
在对外接口设计上,以太坊的Json RPC接口设计更加详细全面,对于链系统的诸多方面都有单独的接口设计,并且Json形式的交互接口降低了阅读难度和开发门槛。相比之下,长安链以及海河智链的RPC接口种类较少,但是提供了丰富的系统合约,可以通过调用系统合约来实现相同的功能。相比于Json格式,ProtoBuf形式的RPC交互更加复杂且阅读难度更大,必须提供相应的proto描述文件才能正常调用和解析。
负载生成器使用Lua脚本,允许用户使用Lua脚本来自定义负载逻辑。测试引擎与代理服务器之间使用统一的Json进行交互,从而屏蔽不同区块链系统交互方式的差异。API代理服务器为三条链实现测试引擎指定了若干接口,并在各自链上实现其交互逻辑。宏观测试和微观测试逻辑统一到负载插件脚本实现。
对于通用化API代理服务器接口的设计,引入上下文(Context)的概念,抽象出区块链系统的共有特征。在整体测试框架中,每一个API代理服务器都是一个状态机,在测试过程中需要保持上下文环境的一致性,并实现状态的确定性转移。上下文是API代理服务器设计中的重要概念,它记录着该服务器作为待测链系统的一个代理,当前所具备的诸如基本账号信息(公私钥对等)、目标节点信息(节点IP、端口号等)、背书列表等账户信息。上下文为API代理服务器提供了与链交互的能力,通过上下文可以更为方便地定位该API代理服务器在测试框架中的角色和功能,保证整个测试环境的鲁棒性和测试结果的正确性。其工作流程如下:首先启动代理服务器server,等待网络层提供初始化指令,从而生成上下文,然后读入从网络层传入的指令,进入循环执行指令状态并完成状态的转移,直至提交执行结果至区块链系统。
测试引擎首先接受来自负载插件(Lua负载脚本)的逻辑指令,通过Lua脚本抽象层进一步屏蔽不同链系统在脚本层面的语法和逻辑差异。紧接着经过Lua脚本解释器解释Lua脚本语义,由底层的CPP层负责执行。CPP层封装了一些必要的动态库以及GO库,可以通过Lua脚本调用。最终处理后的结果将通过内置的Socket层网络模块发送给远端API代理服务器。
测试引擎封装的动态库以及GO库提供了区块链系统中一些常用的函数操作,例如哈希运算、地址转换、Json解析、HTTP相关网络请求操作。目的是使哈希运算等常见操作在测试客户端一侧即可完成,大大降低API代理服务器端的实现难度以及对应接口的复杂程度。
海河智链、以太坊和长安链系统的交易执行逻辑虽然并不完全相同,但是公共抽象的步骤基本上如图5所示,都会经过交易池队列、智能合约执行、交易验证等步骤,交易打包出块,负载合约调用成功。观测监视器通过轮询调度线程查询链上数据状态,通过调用monitor程序获取节点执行环境资源使用情况,包括CPU占用、内存占用、磁盘I/O、网络流量等,通过调用parse程序对系统输出日志进行解析,获得节点加入、RPC响应、交易广播、合约执行、状态更新、共识达成等过程的日志信息,并将上述链上数据状态、节点执行环境资源使用情况和过程日志信息汇总得到负载测试执行结果。
然后使用如表2所示的分层性能计算模型,包括系统吞吐量、平均响应时延、单位CPU交易量、单位内存交易量、单位磁盘读写交易量、单位网络流量交易量、节点RPC响应速率、交易广播速率、合约执行时间、状态更新时间、共识达成时间、共识能耗占比、相同执行逻辑下合约形式与脚本执行能耗比等指标。事实上这里所涉及的时延均是一个分布,而不应该仅仅是一个数字。因此实验结果采用堆积柱状图或者CDF图比较合适。当然如果延迟分布相对简单,也可以用平均延迟代替。增加单位交易费用指标,是因为个人用户实际上并不关心吞吐量,他们真正关心的只有延迟和交易费用。此外,还需要增加对于交易成功率的衡量指标,当前的压力测试实际上包含很多的无效交易,交易成功率是指成功提交的交易与发送的交易请求数量的比值,可以提供很好的参考。
通过对上述性能计算模型的计算结果进行汇总整理,由海河智链系统数据中台后端,与海河智链区块链浏览器前端WEB界面的异步交互,实现数据可视化处理,如图6-18所示。通过设置交易队列大小、背书策略、交易发送速率等参数调整的测试负载脚本,使用表格、图像、动态曲线等形式呈现评测结果,自动生成测试报告,方便进一步为区块链系统的性能提升和设计优化提供指导参考。
本发明展示了一种基于动态代理和智能合约的通用区块链性能评测方法,由客户端模块、适配器模块、系统测试环境模块组成,主要创新点在于利用动态代理技术实现的通用适配器、多种负载列表和区块链分层性能评价模型。本发明可以实现针对市面上主流区块链系统进行详细的逐层性能评测,在负载生成方面换用Lua脚本提供高度的可定制性,同时为各种区块链系统抽象接口,以保证测试负载的可重用性。我们的保护范围是基于动态代理的适配构造方法和逐层评测所使用的计算模型以及整体的系统框架。针对区块链性能测试的应用很多,基于本发明进行改造和改进的方法也属于本发明保护的范围。
以上所述,仅为本申请较佳的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应该以权利要求的保护范围为准。
Claims (8)
1.一种基于动态代理和智能合约的通用区块链性能评测方法,其特征在于,包括以下步骤:
获取自动化配置项脚本,基于所述自动化配置项脚本对待测链系统进行配置,并通过动态代理设计所述待测链系统的代理服务器网络接口;
获取通用分层测试负载,基于所述代理服务器网络接口和所述通用分层测试负载,获取所述待测链系统的环境测试结果;
基于所述代理服务器网络接口和所述环境测试结果,获取负载测试执行结果;
基于所述代理服务器网络接口和所述通用分层测试负载,获取所述待测链系统的环境测试结果包括:
获取负载连接器,基于负载连接器获取通用分层测试负载;
将所述通用分层测试负载与代理服务器进行交互后,基于所述代理服务器网络接口,将所述通用分层测试负载以脚本字段或智能合约形式输入待测链系统环境,获取所述待测链系统的环境测试结果;
对所述负载测试执行结果进行多维度评价,完成区块链性能评测。
2.如权利要求1所述的基于动态代理和智能合约的通用区块链性能评测方法,其特征在于,基于所述自动化配置项脚本对待侧链系统进行配置具体包括:SSH免密登录、节点配置、依赖安装、源码编译、账户激活、共识协议、加密算法、证书关联、区块链浏览器设置及集群起链。
3.如权利要求1所述的基于动态代理和智能合约的通用区块链性能评测方法,其特征在于,设计所述待测链系统的代理服务器网络接口包括:
对所述待测链系统进行逐层抽象,获取待测链系统的共有特征;
对所述待测链系统的共有特征进行封装,获取预置格式的所述代理服务器网络接口。
4.如权利要求1所述的基于动态代理和智能合约的通用区块链性能评测方法,其特征在于,基于所述代理服务器网络接口和所述环境测试结果,获取负载测试执行结果包括:
所述代理服务器网络接口包括数据查询接口和日志查询接口;
基于所述数据查询接口和所述日志查询接口,对所述环境测试结果进行轮询和日志拉取,获取负载测试执行结果。
5.如权利要求4所述的基于动态代理和智能合约的通用区块链性能评测方法,其特征在于,基于所述数据查询接口和所述日志查询接口,对所述环境测试结果进行轮询和日志拉取,获取负载测试执行结果包括:
基于所述数据查询接口,对所述环境测试结果进行轮询获取链上数据状态;
基于所述环境测试结果,调用monitor程序获取节点执行环境资源使用情况;
基于所述日志查询接口,对所述环境测试结果进行日志拉取,获取过程日志信息;
将所述链上数据状态、所述节点执行环境资源使用情况和所述过程日志信息汇总,获取负载测试执行结果。
6.如权利要求1所述的基于动态代理和智能合约的通用区块链性能评测方法,其特征在于,对所述负载测试执行结果进行多维度评价,完成区块链性能评测包括:
将所述负载测试执行结果输入多种指标模型脚本,基于指标解析脚本,获取性能评价模型;
对所述性能评价模型进行多维度评价,完成区块链性能评价。
7.如权利要求6所述的基于动态代理和智能合约的通用区块链性能评测方法,其特征在于,对所述负载测试执行结果进行多维度评价,完成区块链性能评测还包括:
基于所述性能评价模型进行多维度评价,获取多维度评价结果;
对所述多维度评价结果形成评价报告,并展示所述评价报告。
8.如权利要求7所述的基于动态代理和智能合约的通用区块链性能评测方法,其特征在于,所述性能评价模型包括,系统吞吐量、平均响应时延、交易成功率、单位交易费用、单位CPU交易量、单位内存交易量、单位磁盘读写交易量、单位网络流量交易量、节点RPC响应速率、交易广播速率、合约执行时间、状态更新时间、共识达成时间、共识能耗占比、相同执行逻辑下合约形式与脚本执行能耗比。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211709268.3A CN116016255B (zh) | 2022-12-29 | 2022-12-29 | 一种基于动态代理和智能合约的通用区块链性能评测方法 |
US18/395,155 US20240220404A1 (en) | 2022-12-29 | 2023-12-22 | General blockchain performance evaluation method based on dynamic proxy and smart contract |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211709268.3A CN116016255B (zh) | 2022-12-29 | 2022-12-29 | 一种基于动态代理和智能合约的通用区块链性能评测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116016255A CN116016255A (zh) | 2023-04-25 |
CN116016255B true CN116016255B (zh) | 2023-08-15 |
Family
ID=86024343
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211709268.3A Active CN116016255B (zh) | 2022-12-29 | 2022-12-29 | 一种基于动态代理和智能合约的通用区块链性能评测方法 |
Country Status (2)
Country | Link |
---|---|
US (1) | US20240220404A1 (zh) |
CN (1) | CN116016255B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116501801B (zh) * | 2023-05-11 | 2023-10-13 | 天津大学 | 一种面向许可型区块链的高性能事务异步并发处理方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104331477A (zh) * | 2014-11-04 | 2015-02-04 | 哈尔滨工业大学 | 基于联邦式检索的云平台并发性能测试方法 |
CN108830720A (zh) * | 2018-06-21 | 2018-11-16 | 北京京东尚科信息技术有限公司 | 智能合约运行方法、装置、系统和计算机可读存储介质 |
CN109753433A (zh) * | 2018-12-26 | 2019-05-14 | 中链科技有限公司 | 基于区块链的自动化测试方法、装置及电子设备 |
CN109981416A (zh) * | 2019-04-04 | 2019-07-05 | 中山大学 | 一种区块链性能检测方法与系统 |
CN111159143A (zh) * | 2019-11-27 | 2020-05-15 | 安徽君恒广告有限公司 | 一种基于区块链测评系统及其方法 |
CN112866421A (zh) * | 2021-03-30 | 2021-05-28 | 中国工商银行股份有限公司 | 基于分布式缓存以及nsq的智能合约运行方法及装置 |
CN113238965A (zh) * | 2021-06-18 | 2021-08-10 | 杭州遥望网络科技有限公司 | 一种接口测试脚本生成方法、系统及存储介质 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6983371B1 (en) * | 1998-10-22 | 2006-01-03 | International Business Machines Corporation | Super-distribution of protected digital content |
US6907546B1 (en) * | 2000-03-27 | 2005-06-14 | Accenture Llp | Language-driven interface for an automated testing framework |
US8972590B2 (en) * | 2000-09-14 | 2015-03-03 | Kirsten Aldrich | Highly accurate security and filtering software |
US9389987B1 (en) * | 2010-08-22 | 2016-07-12 | Panaya Ltd. | Method and system for identifying missing test scenarios by comparing authorized processes with available test scenarios |
US10587586B2 (en) * | 2017-01-10 | 2020-03-10 | Mocana Corporation | System and method for a multi system trust chain |
US11025627B2 (en) * | 2017-07-10 | 2021-06-01 | Intel Corporation | Scalable and secure resource isolation and sharing for IoT networks |
US10657261B2 (en) * | 2017-11-30 | 2020-05-19 | Mocana Corporation | System and method for recording device lifecycle transactions as versioned blocks in a blockchain network using a transaction connector and broker service |
US10496529B1 (en) * | 2018-04-18 | 2019-12-03 | Palantir Technologies Inc. | Data unit test-based data management system |
EP3874678A1 (en) * | 2018-10-29 | 2021-09-08 | Sensormatic Electronics LLC | Systems and methods of enabling blockchain-based building automation systems |
US12015721B1 (en) * | 2023-03-24 | 2024-06-18 | Srinivas Kumar | System and method for dynamic retrieval of certificates with remote lifecycle management |
-
2022
- 2022-12-29 CN CN202211709268.3A patent/CN116016255B/zh active Active
-
2023
- 2023-12-22 US US18/395,155 patent/US20240220404A1/en active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104331477A (zh) * | 2014-11-04 | 2015-02-04 | 哈尔滨工业大学 | 基于联邦式检索的云平台并发性能测试方法 |
CN108830720A (zh) * | 2018-06-21 | 2018-11-16 | 北京京东尚科信息技术有限公司 | 智能合约运行方法、装置、系统和计算机可读存储介质 |
CN109753433A (zh) * | 2018-12-26 | 2019-05-14 | 中链科技有限公司 | 基于区块链的自动化测试方法、装置及电子设备 |
CN109981416A (zh) * | 2019-04-04 | 2019-07-05 | 中山大学 | 一种区块链性能检测方法与系统 |
CN111159143A (zh) * | 2019-11-27 | 2020-05-15 | 安徽君恒广告有限公司 | 一种基于区块链测评系统及其方法 |
CN112866421A (zh) * | 2021-03-30 | 2021-05-28 | 中国工商银行股份有限公司 | 基于分布式缓存以及nsq的智能合约运行方法及装置 |
CN113238965A (zh) * | 2021-06-18 | 2021-08-10 | 杭州遥望网络科技有限公司 | 一种接口测试脚本生成方法、系统及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US20240220404A1 (en) | 2024-07-04 |
CN116016255A (zh) | 2023-04-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108170590B (zh) | 一种区块链系统的测试系统和方法 | |
Pan et al. | Multi-GPU graph analytics | |
Garlan et al. | Increasing system dependability through architecture-based self-repair | |
US7752598B2 (en) | Generating executable objects implementing methods for an information model | |
CN113259430A (zh) | 一种消息调用方法和装置、电子设备及存储介质 | |
CN116016255B (zh) | 一种基于动态代理和智能合约的通用区块链性能评测方法 | |
CN116028292B (zh) | 用于远程直接内存访问仿真验证的仿真验证系统及方法 | |
CN115511086B (zh) | 一种针对超大模型的分布式推理部署系统 | |
US20010011215A1 (en) | Network device simulation system and method | |
CN113703997A (zh) | 集成多种消息代理的双向异步通信中间件系统及实现方法 | |
Ameur-Boulifa et al. | Behavioural semantics for asynchronous components | |
EP2908498B1 (en) | Integrated application generating system and method for internet of things terminal | |
US6321347B1 (en) | Network testing system and method | |
CN116743833B (zh) | 增强终端与服务通讯能力和网络控制能力的方法和装置 | |
Lin et al. | Research on building an innovative electric power marketing business application system based on cloud computing and microservices architecture technologies | |
Li et al. | Modeling and analysis of RabbitMQ using UPPAAL | |
Ma et al. | GFBE: A Generalized and Fine-Grained Blockchain Evaluation Framework | |
CN115167985A (zh) | 一种虚拟化的算力提供方法及系统 | |
Bannour et al. | A flexible GraphQL northbound API for intent-based SDN applications | |
Braga et al. | Towards a rewriting semantics for a software architecture description language | |
US20100161719A1 (en) | JAVA Enterprise Resource Management System and Method | |
CN107305524A (zh) | 压力测试方法及系统 | |
Arora et al. | Availability and latency aware deployment of cloud native edge slices | |
CN112306848A (zh) | 微服务系统的架构视图生成方法及装置 | |
Castanheira et al. | Foxhound: Server-grade observability for network-augmented applications |
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 |