离散状态事件驱动的能源区块链系统仿真测试方法与流程

文档序号:33521482发布日期:2023-03-22 06:39阅读:89来源:国知局
离散状态事件驱动的能源区块链系统仿真测试方法与流程

1.本发明涉及的是一种能源区块链领域的仿真测试技术,具体是一种离散状态事件驱动的能源区块链系统仿真测试方法。


背景技术:

2.能源区块链工程化进程正逐步推进,由于能源领域的主体海量,能源区块链节点数量呈现大规模特征。现有能源区块链系统仿真测试方法主要有3种:1、基于公共测试链的仿真测试法;2、基于自行搭建测试链的仿真测试法;3、基于容器虚拟化技术的仿真测试法。方式1可检验能源应用智能合约的正确性,但无法对能源区块链系统参数进行测试。方式2受时间和经济成本约束,自行搭建测试链的共识节点数量一般为十余个,仅能仿真较小规模节点的能源区块链系统。方式3能够在单台计算机上搭建多个节点的能源区块链系统,但当节点数量较多时会因容器数量过多而超过计算机的承载能力,所能仿真的节点数量为几十个,仿真规模的局限性仍较大。因此,现有仿真测试方法难以仿真大规模能源区块链系统,难以灵活测试能源区块链参数对大规模能源区块链系统性能的影响,难以辅助大规模能源区块链系统的参数设计。


技术实现要素:

3.本发明针对现有技术的不足,提供一种离散状态事件驱动的能源区块链系统仿真测试方法,采用离散状态事件驱动机制实现能源区块链系统的动态运行仿真。设计面向离散状态事件驱动的能源区块链系统仿真模型,包括节点仿真模型和网络仿真模型两部分,分别实现对能源区块链节点和网络核心功能的模拟,为仿真测试方法提供完备的、轻量化的、可灵活配置参数的仿真模型。设计基于该仿真模型的离散状态事件集、事件调度时序规则以及仿真流程,实现基于离散状态事件驱动的能源区块链系统动态过程仿真。
4.本发明是通过以下技术方案实现的:
5.本发明涉及一种离散状态事件驱动的能源区块链仿真测试方法,包括:构建能源区块链节点仿真模型、能源区块链网络仿真模型,分别仿真实际能源区块链节点和网络的核心功能,在仿真测试方法的程序实现时抽象为节点对象和网络对象;创建用于驱动能源区块链仿真模型动态运行的离散状态事件集及其事件调度时序规则,在仿真测试方法的程序实现时对应为事件对象和事件调度对象;设计离散状态事件驱动的能源区块链仿真流程,根据仿真流程实现对能源区块链系统动态运行的仿真。
6.所述的能源区块链节点仿真模型包括:事务层模型、共识层模型、应用层模型以及数据层模型,其中:事务层模型、共识层模型、应用层模型分别模拟能源区块链的具体功能;事务层模型包括事务创建、事务发送、事务接收、事务处理功能;共识层模型包括区块创建、共识消息发送、共识消息接收、共识算法、执行区块事务、区块上链功能,其中共识算法功能因具体共识算法而不同;应用层包括:能源业务的事务请求、能源业务执行结果数据查询请求、能源业务执行结果数据查询处理、能源业务执行结果数据发送、能源业务执行结果数据
接收功能;数据层包括事务池、区块链、世界状态数据库,以及系统运行过程中的状态缓存数据,如发送队列中的缓存数据、共识过程的缓存消息等。
7.所述的能源区块链网络仿真模型包括:发送侧节点、发送侧节点边缘链路、发送侧伴随节点、中间链路、接收侧伴随节点、接收侧边缘链路、接收侧节点,其中:边缘链路代表广域互联网的接入网部分的所有链路,中间链路代表广域互联网的骨干网部分的所有链路,伴随节点表示接入网与骨干网的分界点。发送侧节点到发送侧伴随节点表示发送侧的边缘链路,接收侧伴随节点到接收侧节点表示接收侧的边缘链路,发送侧伴随节点到接收侧伴随节点表示中间链路。每段链路延时包括传输延时、传播延时、排队延时三部分:传输延时由链路带宽和数据大小计算得到;传播延时由链路距离和光纤光速计算得到;排队延时为队列中还未发送完毕的数据的传输延时总和。由于骨干网带宽远大于接入网,相比边缘链路的传输延时和排队延时,中间链路的传输延时和排队延时忽略。
8.所述的离散状态事件集及其事件调度时序规则包括:网络离散状态事件集及其调度时序规则;事务层离散状态事件集及其调度时序规则;共识层离散状态事件集及其调度时序规则;应用层离散状态事件集及调度时序规则。
9.所述的网络离散状态事件集包括:事件a0:某数据压入发送侧节点发送队列,执行时刻记作t
a0
;事件a1:发送侧节点发送该数据事件,执行时刻记作t
a1
;事件a2:该数据压入接收测伴随节点发送队列,执行时刻记作t
a2
;事件a3:接收侧伴随节点发送该数据,执行时刻记作t
a3
;事件a4:接收侧节点收到该数据,执行时刻记作t
a4

10.所述的网络离散状态事件调度时序规则包括:事件a0的执行时刻由事务层、共识层、应用层的数据发送事件调度生成确定,事件a1~a4随之依次触发调度生成,各事件对应的执行时刻分别为:行时刻分别为:其中:α为发送侧节点,α
*
为发送侧节点的伴随节点,β为接收侧节点,β
*
为接收侧节点的伴随节点;分别为发送侧节点α向伴随节点α
*
发送数据的传输延时、传播延时、排队延时;为发送侧伴随节点α
*
向接收侧伴随节点β
*
发送数据的传播延时;分别为接收侧伴随节点β
*
向接收侧节点β发送数据的传输延时、传播延时、排队延时。
11.所述的事务层离散状态事件集包括:事件b0:某节点创建一项事务,事务具体内容来源于应用层,执行时刻记作t
b0
;事件b1:该节点发送该项事务,同时存入本地事务池,执行时刻记作t
b1
;事件c0:某节点接收一项事务,同时转发该事务,事务来自能源区块链网络,执行时刻记作t
c0
;事件c1:该节点开始处理该事务,执行时刻记作t
c1
;事件c2:该节点将该事务存入本地事务池,执行时刻记作t
c2

12.所述的事务层离散状态事件调度时序规则包括:事件b0由应用层创建事务事件触发调度生成;事件b1随之触发调度生成,事件b1的执行时刻t
b1
=t
b0
+t
b1
,其中:t
b1
为事务创建耗时,主要为事务的签名耗时以及事务创建进程的排队耗时,事件b1执行完成后将触发调度生成能源区块链网络数据发送事件a0;事件c0由网络层接收1个事务数据事件触发调度生成,事件c0将触发调度生成能源区块链网络数据发送事件a0,事件c1~c2随事件c0执行后依次触发调度生成,事件c1、c2的执行时刻分别为t
c1
=t
b0
+t
c1
、t
c2
=t
c1
+t
c2
,其中t
c1
为事务处理进程的排队耗时,t
c2
为事务处理耗时,主要为事务的验签耗时。
13.所述的共识层离散状态事件集包括:共识发起离散状态事件集、共识过程离散状态事件集、共识达成离散状态事件集;共识发起离散状态事件集包括2项事件:事件d0:主节点创建区块,执行时刻记作t
d0
;事件d1:主节点发送该区块的第一条共识消息,启动共识过程,执行时刻记作t
d1
;共识达成离散状态事件集包括2项事件:事件h0:某节点收到满足共识达成的共识消息,判断共识达成,执行区块中的事务,执行时刻记作t
h0
;事件h1:该节点将达成共识的区块上链,执行时刻记作t
h1
。共识过程离散状态事件集与具体的共识算法有关,将结合实施例给出示例。
14.所述的共识层离散状态事件调度时序规则包括:共识发起离散状态事件调度时序规则、共识过程离散状态事件调度时序规则、共识达成离散状态事件调度时序规则;共识发起离散状态事件调度时序规则包括:事件d0的执行时刻根据共识算法规则确定,事件d1由事件d0触发调度生成,执行时刻为t
d1
=t
d0
+t
d1
,其中,t
d1
为创建区块耗时和创建第一条共识消息的耗时,主要为区块的签名、生成hash摘要的耗时,事件d1将触发调度生成能源区块链网络对应的数据发送事件a0;共识达成离散状态事件调度时序规则包括:事件h0在收到满足共识达成的共识消息时触发调度生成,事件h1由事件h0触发调度生成,事件h0、h1的执行时刻分别为t
h0
=th′0+t
h0
、t
h1
=t
h0
+t
h1
,其中,t
h0
为处理满足共识达成的最后一条消息耗时,主要为消息验签耗时;t

h0
为收到满足共识达成的最后一条消息的时刻;t
h1
为区块中事务的执行时间,主要为智能合约的执行耗时;共识过程离散状态事件调度时序规则与具体共识算法有关,将结合实施例给出示例。
15.所述的应用层离散状态事件集包括:事件i0:某节点根据能源业务需求,生成能源业务请求所需的数据,执行时刻记为t
i0
;事件j0:某个轻节点通过能源区块链网络向某能源区块链共识节点发送能源业务执行结果查询请求,执行时刻记为t
j0
;事件k0:某共识节点从能源区块链网络接收查询能源业务执行结果请求,执行时刻记为t
k0
;事件k1:该节点处理查询能源业务执行结果请求,执行时刻记为t
k1
;事件k2:该节点向能源区块链网络发送查询结果答复数据,执行时刻记为t
k2

16.所述的应用层离散状态事件调度时序规则包括:事件i0的执行时刻分别由节点发起能源业务需求的时刻确定,将触发调度生成对应能源业务请求的事务层事件b0。事件j0将触发调度生成能源区块链网络事件a0。事件k0由能源区块链网络的查询能源业务执行结果请求的数据接收事件触发调度生成,事件k1、k2的执行时刻分别为t
k1
=t
k0
+t
k1
、t
k2
=t
k1
+t
k2
,其中,t
k1
为查询能源业务执行结果处理进程的排队耗时;t
k2
为查询能源业务执行结果处理耗时,事件k2将触发调度生成能源区块链网络数据发送事件a0。
17.所述的离散状态事件驱动的能源区块链仿真流程:
18.步骤1、仿真测试开始;
19.步骤2、配置能源区块链节点模型参数,执行完则进入步骤3;
20.步骤3、配置能源区块链网络模型参数,执行完则进入步骤4;
21.步骤4、配置能源区块链应用仿真数据,执行完则进入步骤5;
22.步骤5、账户注册,生成账户的公、私钥及地址,执行完则进入步骤6;
23.步骤6、智能合约注册,生成合约地址和调用接口,后续通过反射机制调用合约程序文件,执行完则进入步骤7;
24.步骤7、实例化能源区块链节点和网络模型对象,完成整个能源区块链系统所有节
点和网络模型的部署,执行完则进入步骤8;
25.步骤8、初始化事件队列,包括能源区块链应用仿真时间内的所有事务的创建事件和第一个区块的创建事件,执行完则进入步骤9;
26.步骤9、仿真时钟置零,执行完则进入步骤10;
27.步骤10、事件队列取事件,执行完则进入步骤11;
28.步骤11、仿真时钟推进到当前事件执行时刻,执行完则进入步骤12;
29.步骤12、仿真是否超时判断,如判断为是,则转入步骤17,如判断为否,则转入步骤13;
30.步骤13、对步骤10取出的事件进行执行,执行完则进入步骤14;
31.步骤14、生成未来事件判断,如步骤10的执行结果会产生未来事件,则判断为是,进入步骤15,否则判断为否,转入步骤16;
32.步骤15、未来事件插入事件队列,执行完则进入步骤10;
33.步骤16、事件队列是否非空判断,如判断为是,则进入步骤10,如判断为否,则进入步骤17;
34.步骤17、统计分析输出仿真测试结果,如执行完则进入步骤18;
35.步骤18、仿真测试结束。技术效果
36.本发明通过面向离散状态事件驱动机制,设计囊括能源区块链节点和网络核心功能的轻量化、可灵活配置参数的仿真模型,通过基于离散状态事件驱动机制,设计驱动能源区块链仿真模型动态运行的离散状态事件集及其事件调度时序规则。
37.与现有技术相比,本发明设计的囊括核心功能的轻量化的节点和网络仿真模型代替真实的能源区块链节点和网络,兼顾仿真保真度的同时显著降低存储资源的消耗,实现在单台普通计算机上大规模能源区块链仿真系统的搭建。本发明设计的离散状态事件集及其事件调度时序规则,实现仿真能源区块链系统动态运行的离散状态事件驱动,显著降低计算资源的消耗,实现在单台普通计算机上进行上百共识节点的大规模能源区块链系统的高效率动态仿真。本发明可灵活测试能源区块链系统参数对大规模能源区块链系统性能的影响,辅助大规模能源区块链系统参数的设计
附图说明
38.图1为能源区块链节点仿真模型和网络仿真模型示意图;
39.图2为能源区块链仿真流程示意图;
40.图3为实施例不同共识节点数量、网络带宽参数的事务确认平均延迟示意图;
41.图4为实施例不同网络拓扑参数的事务确认平均延迟示意图;
42.图5为实施例不同共识算法类型参数的出块延时示意图。
具体实施方式
43.本实施例具体场景为1万配电网用户规模的能源区块链系统的仿真测试,每个用户为能源区块链系统的一个节点,节点分为共识节点和轻节点两类。1万用户中有4千用户安装有分布式电源,生产的分布式电力能源与其他电力用户进行协同消纳。能源区块链系
统实现的能源应用业务包括:电力能源盈缺量信息共享、分布式电力能源协同消纳量分配、分布式电力能源协同成本的分摊,具体由能源区块链中配置相应的智能合约实现。15分钟为一个协同周期,仿真时间区间为某日12:00至13:00,共4个协同周期。以第n个15分钟协同周期为例,0-5分钟各节点发起n+1时段盈缺量信息共享请求,5-10分钟各节点发起n-1时段协同成本分摊请求,7.5-8分钟由共识节点发起n+1时段协同消纳量分配,10-12分钟各节点查询n+1时段协同消纳量分配结果,12-15分钟为预留给各参与主体安排n+1时段用电计划。
44.该场景下进行的仿真测试包括:网络带宽和共识节点数量参数的仿真测试、网络拓扑参数的仿真测试、共识算法类型参数的仿真测试。
45.所述的共识算法包括:拜占庭容错(pbft)算法、授权股权证明(dpos)算法、pbft和dpos混合共识(dpos+pbft)算法、工作量证明(pow)共识算法。
46.所述的pbft算法的共识过程离散状态事件集包括:事件e0:副节点接收pre-prepare消息,同时转发该消息,执行时刻记作t
e0
;事件e1:该副节点处理pre-prepare消息,执行时刻记作t
e1
;事件e2:该副节点发送prepare消息,执行时刻记作t
e2
;事件f0:某节点接收prepare消息,同时转发该消息,执行时刻记作t
f0
;事件f1:该节点处理prepare消息,执行时刻记作t
f1
;事件f2:该节点发送commit消息,执行时刻记作t
f2
;事件g0:某节点接收commit消息,同时转发该消息,执行时刻记作t
g0
;事件g1:该节点处理commit消息,执行时刻记作t
g1

56.所述的pbft算法的共识过程离散状态事件调度时序规则包括:事件e0由能源区块链网络接收1个pre-prepare消息数据触发调度生成。事件f0由能源区块链网络接收1个prepare消息数据触发调度生成,事件f2在收到2f个有效prepare消息时由事件f1触发调度生成。事件g0由网络层接收1个commit消息数据触发调度生成。事件e1、e2、f1、f2、g1的执行时刻为t
e1
=t
e0
+t
e1
、t
e2
=t
e1
+t
e2
、t
f1
=t
f0
+t
f1
、t
f2
=tf′1+t
f2
、t
g1
=t
g0
+t
g1
,其中,t
e1
为共识消息处理进程的排队耗时;t
e2
为处理pre-prepare消息以及创建prepare消息的耗时,主要为消息验签、加密耗时;t
f1
为共识消息处理进程的排队耗时;t
f2
为处理prepare消息耗时以及创建commit消息的耗时,主要为消息验签、加密耗时;t

f1
为收到第2f个(不包括自己)prepare消息的时刻;t
g1
为共识消息处理进程的排队耗时。事件e0、e2、f0、f2、g0将分别触发调度生成能源区块链网络对应的数据发送事件a0。共识发起事件d1为主节点发送该区块的pre-prepare共识消息;共识确认事件h0为收到2f+1个有效commit消息,由事件g1触发调度生成。
47.所述的dpos算法、dpos+pbft算法、pow共识算法的共识过程离散状态事件集及其调度时序规则与pbft共识算法的确定方式类似,根据所对应共识算法的流程步骤建立对应的离散状态事件形成离散状态事件集,根据算法的各流程步骤的时序关联关系确定事件的调度时序规则。
48.本实施例针对上述场景的离散状态事件驱动的能源区块链仿真测试方法,具体包括:
49.步骤1:根据能源区块链节点仿真模型,采用面向对象技术建立节点模型对象,具体为:节点模型对象的成员变量包括存储层的数据以及节点编号、节点类型等节点信息数据。节点对象的成员函数包括事务层、共识层、应用层各具体功能的实现函数。
50.步骤2:根据能源区块链网络仿真模型,采用面向对象技术建立网络模型对象,具
体为:网络模型对象的成员变量包括能源区块链网络中各节点连接的拓扑关系、链路的带宽、链路的距离等网络参数以及各节点的网络缓存数据,网络模型对象的成员函数包括数据的发送、数据的接收具体功能的实现函数。
51.步骤3:根据驱动能源区块链仿真模型动态运行的离散状态事件集及其事件调度时序规则,采用面向对象技术建立事件对象和事件调度对象,具体为:事件对象的成员变量包括事件的执行时刻、事件要调用的能源区块链节点或者网络模型中的具体的某个功能;事件调度对象的成员变量包括事件队列,仿真过程中调度生成的事件按执行时刻先后顺序存入该事件队列,事件调度对象的成员函数包括各事件的调度生成功能,按照各事件调度时序规则进行调度。
52.步骤4:根据离散状态事件驱动的能源区块链仿真流程,在步骤1-3的基础上完成离散状态事件驱动的能源区块链系统仿真程序开发。
53.步骤5:根据所述的一万用户的能源区块链系统案例,配置仿真参数,执行仿真程序,实现对能源区块链系统的仿真测试。
54.上述步骤1-4在实施例进行的多次仿真测试中无需重复实施,只需改变仿真参数重复步骤5。
55.所述的网络带宽和共识节点数量参数的仿真测试,具体为:以网络带宽、共识节点数量为测试参数;共识节点数量参数区间为[4,200],1万用户中除去共识节点外为轻节点;网络带宽参数为:下行100mb/上行20mb、下行50mb/上行10mb、下行25mb/上行5mb;共识节点之间采用网状的全连接网络拓扑,轻节点与共识节点之间采用以共识节点为中心的辐射状网络拓扑,轻节点均匀接入共识节点,每个轻节点与f(容错节点数)个共识节点保留备用连接,当常连接的共识节点故障时启用备用连接;共识算法采用pbft,出块时间设置为4s;边缘链路的传播延时设置为0.1ms,中段链路传播延时设置为0.2ms,即假设任意两个节点之间通信链路距离为80km,配网用户的网络链路距离不会超过该距离;根据普通计算机的算力,签名耗时设置为0.1ms,验签耗时设置为0.4ms,散列计算速率设置为200mb/s。
56.该测试以事务确认平均延迟为性能指标,对能源区块链系统进行测试。所得事务确认平均延迟与网络带宽和节点数量的关系如图3所示。下行100mb/上行20mb、下行50mb/上行10mb、下行25mb/上行5mb带宽下,当共识节点数量分别大于136、73、37后,系统无法正常出块。根据测试结果可得到对应带宽条件下共识节点数量的上限,以及不同节点数量时事务确认平均延迟。
[0057]
所述的网络拓扑参数的仿真测试,具体为:改变共识节点的邻居共识节点数量形成不同拓扑,共识节点数量为25、轻节点数量为9975,网络带宽为下行100mb/上行20mb,其他参数与所述的网络带宽和节点数量参数的仿真测试实施中一致。所得事务确认平均延时与网络拓扑参数关系如图4所示。邻居数增加时,单个共识节点的带宽占用将增加,使得排队延时提高,但消息的转发跳数随邻居数增大而减小,传播延时将降低,由于本仿真场景下带宽对总延时占据主导,事务确认平均延时随邻居数的提高呈增加趋势。需注意的是,较少邻居数的网络拓扑可靠性较差,当存在故障节点时,网络可能分裂不连通,间接地增加故障节点数,危及系统正常运行。因此,在共识节点数较少、网络带宽较充裕时,共识节点应形成全连接网络,以保证系统的可靠性。
[0058]
所述的共识算法类型参数的仿真测试,具体为:以共识算法为测试参数,分别对
pbft、dpos、dpos+pbft、pow四种共识算法对能源区块链进行仿真测试,其他参数与所述的网络拓扑的仿真测试实施中一致。设置在120s时连续三个主节点同时发生掉线故障,如图5所示,为四种共识算法故障前后的出块延时仿真结果。pbft共识算法在发生主节点故障上需要较长的换主过程,连续3个主节点故障导致故障后第一个区块(区块高度30)出块延时高达56s,故障后第三个区块(区块高度32)出块延时恢复正常。dpos算法由各共识节点按时间槽轮流出块,故障发生后仍能正常持续出块,直到轮至故障节点出块时才会出现间断,第51个区块延时增加为16s,第52个区块恢复正常。pbft+dpos共识算法的出块延时与dpos基本一致。pow出块延时由工作量证明难度控制,只能控制平均出块时间,因此单个出块延时具有随机性,但受节点故障影响很小。pbft共识算法能够在正常时保持稳定的出块和事务确认低延时,但受故障影响波动较大。dpos共识算法能够在故障时保持出块延时波动相对较小,但其事务确认延迟较大,需要连续出2/3共识节点数的区块后才能确认。pow共识算法受故障影响最小,容错性最好,但出块时间随机,不具有最终一致性,一般取连续6个区块后确认,事务确认延时较高且只能保证概率确认。dpos+pbft能够具有dpos在故障时保持出块延时波动相对较小的优点,同时克服dpos算法事务确认延迟大的缺点,由于区块敲定与区块生成是解耦的异步过程,因此在正常时的事务确认延迟仍大于pbft共识。综上,各类共识算法具有各自的特征,难有具备各方面性能绝对优越的共识算法,需要根据实际业务需求进行选择。
[0059]
与现有技术相比,本方法能够在单台计算机实现上百共识节点、近万轻节点的大规模能源区块链系统动态过程仿真,解决大规模能源区块链系统的仿真难题。本实施例具有灵活的参数化仿真能力,网络带宽、网络拓扑、共识节点数量、共识算法等参数可灵活设置,并快速部署完成仿真,可以灵活测试能源区块链参数对大规模能源区块链系统运行性能的影响,辅助大规模能源区块链系统的参数设计。
[0060]
上述具体实施可由本领域技术人员在不背离本发明原理和宗旨的前提下以不同的方式对其进行局部调整,本发明的保护范围以权利要求书为准且不由上述具体实施所限,在其范围内的各个实现方案均受本发明之约束。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1