本发明涉及区块链领域,具体来说,涉及区块链模拟架构研究,更具体来说,涉及一种区块链模拟装置及方法、区块链性能评估系统及方法。
背景技术:
1、区块链技术自2008诞生以来,其对于各个领域而言都是一项颠覆性的技术。相比传统的中心化解决方案,去中心化的区块链具有以下重要特性:不可修改性、强安全性以及开放性等。但是,去中心化的技术特性也随之带来了严重的性能问题:通量和延迟,例如,在早期的交易应用中,区块链的每秒交易数(transactions per second,tps)仅为7,每笔交易的执行延迟时间高达10分钟。因此,为了克服性能问题,学术界和产业界投入了大量的人力物力,通过调整区块链系统架构、设计新的共识机制等手段来优化区块链的性能,对应的解决方案包括但不限于搭载侧链、实现交易并发执行等。
2、在区块链性能优化过程中不可避免的环节就是性能评估,通过性能评估来对比不同的方案设计的区块链性能优劣,以此来发现区块链性能瓶颈,并针对该瓶颈进行优化。因此,性能评估是区块链科研中不可或缺的一个重要环节,性能评估的好坏直接影响到区块链优化方案的好坏。
3、当前区块链性能评估主要有以下几种方式:1、基准测试:基准测试是评估区块链性能的一种常用方法,其原理是通过在相同硬件和软件环境下运行同样的负载测试,来比较不同区块链的性能;2、模拟器:模拟器是一种模拟区块链运行的软件系统,它可以模拟出不同的网络拓扑结构和节点行为,来帮助研究人员和开发人员理解和评估区块链的性能;3、实验室测试:实验室测试是在实验室环境下对区块链进行测试和评估的方法,其原理是通过对区块链的各种组件进行测试,如共识算法、网络传输、存储等,来评估区块链的性能;4、压力测试:压力测试是一种通过在高负载下对区块链进行测试来评估其性能和稳定性的方法,其原理是通过对节点数量、交易数量、交易频率等参数进行调整,来模拟真实的使用场景,并评估区块链在这些场景下的表现;5、实际场景测试:实际场景测试是在真实的生产环境下对区块链进行测试和评估的方法,其原理是通过在真实的使用场景下进行测试,来评估系统的性能和稳定性,并提供实时反馈和改进建议。
4、其中,常见的区块链性能评估框架主要包括以下几种:1、hyperledger caliper:hyperledger caliper是一个区块链性能测试框架,它可以评估各种分布式账本技术的性能和可扩展性,它也支持多种区块链平台,如hyperledger fabric、ethereum等,可以自定义测试用例和负载模型;2、ibm blockchain platform extension for vs code:ibmblockchain platform extension for vs code是一个面向开发人员的区块链开发工具,它包含一个内置的性能测试框架,可以进行各种负载测试和压力测试;3、blockchain testsuite:blockchain test suite是一个开源的区块链性能测试框架,它可以对多种区块链平台进行测试,支持自定义测试用例和负载模型,也可以评估区块链的性能、可扩展性和吞吐量;4、blockbench:blockbench是一个针对分布式账本技术的基准测试框架,可以评估区块链的性能和可扩展性,它也支持多种区块链平台,如ethereum、hyperledger fabric等,可以自定义测试用例和负载模型。然而,这些主流的性能评估框架都是通过基准测试或者是实际场景测试的方式来进行的,为了模拟真实场景下的用户和交易行为,这些测试方式都是需要进行对区块链进行实际部署并进行大规模的测试,需要大量的计算资源、存储资源和网络带宽等。此外,这些测试方式的时间成本也十分高昂,具体体现为区块链系统运行周期长,需要长时间的测试和监测才能获得可信的测试结果,同时,测试中还需要进行不同负载和场景下的多次测试,耗时较长。为了解决区块链评估过程中需要进行对区块链进行实际部署并进行大规模的测试,以及需要大量的计算资源、存储资源和网络带宽以及时间成本问题,有研究者提出一种区块链网络模拟器的方案,其中,最新的具有代表性的区块链网络模拟器为blocksim,它是一款基于python编程语言开发的开源区块链网络模拟器,旨在为区块链研究人员和开发人员提供一种快速、可靠的区块链性能评估框架。该框架是一个模块化的框架,可以轻松地添加新的区块链协议和算法,支持多种拓扑结构和链长度,可以模拟多种节点行为和拜占庭故障模型等。同时,这种通过模拟器的方式来进行性能测试有效避免了资源开销大和时间成本高的问题。但是,blocksim的测试平台大多为公链(如blocksim仅考虑了pow和pos这类公链上使用的共识算法),而公链的特性和联盟链相差甚远,因此并不适用于联盟链的性能测试。进一步地,当前的区块链性能评估框架比较简单,通常只是使用手工测试或基于单一指标的测试框架,但是随着区块链技术的不断发展和应用的不断深入,对区块链性能评估的需求越来越高,现有的性能评估框架已经不能满足需求。
5、总体来说,现有的区块链评估方案存在以下几类问题:1、可扩展性有限且不适配于联盟链,这是由于现有的区块链性能评估框架往往只支持少数几种区块链平台和应用场景,且大多为公链不适配于联盟链,缺乏通用性和可扩展性,难以应对不断变化的技术和需求,例如,hyperledger caliper、ibm blockchain platform extension for vs code等性能测试框架都是针对少数几种区块链平台,blocksim仅考虑了pow和pos这类公链上使用的共识算法,而联盟链主流的共识算法为pbft、hotstuff和tbft;2、缺乏标准化的评估指标,目前区块链性能评估指标缺乏统一的标准化定义,不同的评估框架可能使用不同的指标体系,导致评估结果难以比较和衡量;3、可能需要大量的资源和时间,现有的不采用模拟器方式设计的区块链性能评估框架,需要大量的计算资源和时间,测试过程比较耗时,需要专业的人员进行管理和维护,成本较高。因此,亟需一种具备高可拓展性的、低成本的、快速的、适配于联盟链并且评估指标是标准化的区块链性能评估框架。
技术实现思路
1、因此,本发明的目的在于克服上述现有技术的缺陷,提供一种区块链模拟装置及方法、区块链性能评估系统及方法。
2、本发明的目的是通过以下技术方案实现的:
3、根据本发明的第一方面,提供一种区块链模拟装置,用于模拟不同共识机制下联盟链的运行以获取其对应的事件日志,所述装置包括:
4、事件处理模块,用于模拟联盟链链上事件的处理,其中,基于不同共识机制下联盟链的模拟需求,所述事件处理模块可被配置为按照不同的模拟需求对应的共识机制模拟链上事件的处理;
5、传输模块,用于模拟数据包在联盟链网络拓扑中的传输,其中,基于不同共识机制下联盟链的模拟需求,所述传输模块可被配置为按照不同的模拟需求对应的网络拓扑配置其参数以模拟数据包在其中的传输;
6、节点模块,用于模拟联盟链中的节点,其中,基于不同共识机制下联盟链的模拟需求,所述节点模块可被配置为按照不同的模拟需求对应的网络拓扑配置其参数并在配置参数后按照模拟需求对应的共识机制模拟联盟链中的节点;
7、验证模块,用于模拟节点消息验证,其中,基于不同共识机制下联盟链的模拟需求,所述验证模块可被配置为按照不同的模拟需求对应的共识机制配置其参数以模拟节点消息验证。
8、在本发明的一些实施例中,所述共识机制为pbft、hotstuff或tbft。
9、在本发明的一些实施例中,所述事件处理模块还被配置为:在事件处理完后,生成事件日志并存储。
10、在本发明的一些实施例中,所述事件处理模块包括:
11、共识模块,用于模拟联盟链链上共识事件的处理以及基于共识结果生成区块,其中,基于不同共识机制下联盟链的模拟需求,所述共识模块可被配置为按照不同的模拟需求对应的共识机制模拟链上共识事件的处理,并且,所述共识模块被配置为基于不同共识机制对应的预设阈值模拟链上共识事件的处理,所述预设阈值为对应共识机制下共识事件达成共识所需的阈值;
12、交易模块,用于模拟联盟链链上交易事件的处理。
13、在本发明的一些实施例中,所述传输模块被配置为按照gossip、kad中的任意一种传输机制模拟数据包在网络拓扑中的传输,其中:
14、在传输机制为gossip时,所述传输模块被配置为按照gossip传输机制对应的网络拓扑配置扇出的大小,所述节点模块被配置为按照gossip传输机制对应的网络拓扑配置每个节点的邻居节点;
15、在传输机制为kad时,所述传输模块被配置为按照kad传输机制对应的网络拓扑配置桶的大小、所述节点模块被配置为按照kad传输机制对应的网络拓扑配置每个节点的转发表。
16、根据本发明的第二方面,提供一种区块链模拟方法,所述方法包括:
17、s1、获取待模拟联盟链的参数,所述待模拟联盟链的参数至少包括:共识机制和网络拓扑;
18、s2、根据所述步骤s1中的参数配置上述任一实施例所述区块链模拟装置;
19、s3、启动区块链模拟装置运行以获得被模拟联盟链的事件日志
20、在本发明的一些实施例中,所述待模拟联盟链的参数还包括:节点数量、节点的带宽大小、区块大小上限。
21、在本发明的一些实施例中,所述步骤s3包括:
22、s31、创建事件队列以及预设交易事件、共识事件以及生成区块事件,并将预设的交易事件、共识事件以及生成区块事件插入创建的事件队列中;
23、s32、启动区块链模拟装置模拟处理所述事件队列中的事件,其中,每次以时间为升序,取出事件队列中的一个事件进行处理,并在一个事件处理完后,判断所述事件队列是否为空,在事件队列为空后输出被模拟联盟链的事件日志。
24、根据本发明的第三方面,本发明提供一种区块链模拟系统,所述系统包括:
25、上述任一实施例所述区块链模拟装置,用于模拟联盟链的运行以获取其对应的事件日志;
26、数据处理模块,用于获取由所述区块链模拟装置获得的事件日志,并根据预设的评估标准分析事件日志以得到被模拟联盟链的性能评估结果。
27、根据本发明的第四方面,本发明提供一种区块链性能评估方法,所述方法包括:
28、l1、获取待模拟联盟链的参数,所述待模拟联盟链的参数至少包括:共识机制和网络拓扑;
29、l2、根据所述步骤l1中的参数配置上述任一实施例所述区块链模拟装置;
30、l3、启动所述的区块链模拟装置运行以获得被模拟联盟链的事件日志;
31、l4、基于所述区块链模拟装置获得的事件日志,并根据预设的评估标准分析事件日志以得到被模拟联盟链的性能评估结果。
32、根据本发明的第五方面,提供一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述电子设备实现第一方面所述方法的步骤。
33、与现有技术相比,本发明的优点在于:
34、通过模拟器的方式模块化设计本发明实施例的区块链模拟装置,使得该装置具有高扩展性、低成本的、快速的、适用于联盟链的特性,并且根据长安链的评估标准分析参数以得到被模拟联盟链的性能评估结果,从而可以判断准确区块链的性能瓶颈,使得用户可以更加准确的优化区块链。