结合深度强化学习的区块链分片系统性能优化方法转让专利

申请号 : CN202210505118.4

文献号 : CN115102867B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 万剑雄姚冰冰李雷孝刘楚仪

申请人 : 内蒙古工业大学

摘要 :

结合深度强化学习的区块链分片系统性能优化方法,将区块链分片选择问题建立为马尔科夫决策过程模型,模型由系统状态、行为、奖励和价值函数四部分组成,模型的解为在动态的区块链分片系统环境下不断选择最优行为,使得区块链分片系统吞吐量最大化。BDQSB算法通过不断探索和学习区块大小、出块时间和区块链分片数量、与区块链分片系统的复杂关系,最终可以根据节点之间传输速率、节点的结算能力、节点的共识历史和恶意节点的概率,选择最合适的分片策略,提高区块链分片系统的性能。相比其他方案,本发明能更加提升区块链分片系统性能,解决行为空间爆炸问题,减少神经网络训练时间成本。

权利要求 :

1.结合深度强化学习的区块链分片系统性能优化方法,其特征在于,包括如下步骤:步骤1,区块链仿真系统中包括N个节点,所有节点之间都具有传输速率,节点具有计算能力,节点中存在恶意节点;

步骤2,对区块链分片问题建立马尔可夫决策过程模型,模型由系统状态St、行为空间A、奖励Rt+1和价值函数Q(St,at)四部分组成;

t时刻的系统状态St定义为节点之间传输速率集合Rt、节点的计算能力集合Ct、节点的共识历史集合Ht和恶意节点的概率Pt;其公式为:St={Rt,Ct,Ht,Pt}

其中Rt={Ri,j},i,j∈N,Rij表示为节点i和节点j之间链路的传输速率;Ct={Ci},i∈N,Ci为区块链节点i的计算资源;Ht={Hi},Hi为节点i的共识历史,Hi=1或Hi=0,Hi=1表示节点i对区块验证不合法,Hi=0表示节点i对区块验证合法;Pt根据共识历史计算得到;

行为空间A包括区块大小B、出块时间TI和区块链分片数量K;公式为:A={B,TI,K}

奖励Rt+1表示t时刻区块链分片系统执行行为后获得的奖励,由t时刻系统状态St下采取行为所获得的收益即区块链每秒处理事务的数量构成;公式为:其中,BH为区块头的大小;b为事务的平均大小,(B‑BH)表示每个区块处理事务的大小,(B‑BH)/b表示每个分片处理事务的数量, 表示K个分片处理事务的总数;

为事务的总数除以出块的时间,表示区块链每秒处理事务的数量即事务的吞吐量;

价值函数Q(St,at)的公式为:

其中,at∈A为t时刻系统采取的行为, 为期望函数,少为相对于t时刻的未来时刻,Rt+y+1表示系统在t+y时刻采取行为后获得的奖励,γ表示衰减因子,表示在某状态下采取某y行为对系统未来奖励即环境影响的重视程度,0≤γ<1,γ是t+y时刻Rt+y+1的衰减因子;

马尔可夫决策过程模型被总结为:在任意t时刻的系统状态St下,通过选择最优行为,使得系统累计奖励最大化,公式为:约束于

t

其中,at为t时刻系统采取的行为,γ是t时刻Rt+1的衰减因子;

其中:计算得到最优价值函数,即可根据最优价值函数在任意t时刻系统状态St下选择最优行为,使累计奖励最大化,最优价值函数的计算公式为:在任意t时刻,最优行为选择公式为:

*

其中Q (St,at)表示最优价值函数,St+1表示t+1时刻的系统状态,at+1表示在t+1时刻系统可能采取的所有行为中的任一行为,亦即行为空间A中的某一行为;

步骤3,采用深度强化学习BDQ算法求解模型,通过不断探索和学习区块链系统吞吐量与区块大小、出块时间和区块链分片数量的复杂关系,最终根据区块链分片数量进行分片,分片内的节点根据区块大小和出块时间并行处理事务,使得区块链处理的事务数量最大化;

基于BDQ算法进行性能优化的运行逻辑如下:

1)、初始化大小为N的经验回放池D,经验回放池D存放区块链分片系统t时刻的系统状态St,行为at,奖励Rt+1和下一时刻的区块链系统的系统状态St+1;

2)、初始化online network和target network两个结构相同的网络;两个网络的权重‑分别为θ和θ;

3)、设置初始时刻t=0,经验回放池D中样本记录的时刻记为τ;

4)、初始化行为探索概率δ,探索率随t减少量Δε,最小探索概率εmin;

5)、循环体开始;

6)、获取当前t时刻区块链系统状态St={Rt,Ct,Ht,Pt};

7)、使用ε‑greedy策略选择行为:

8)、执行行为at,区块链系统进行分片,分片内并行处理事务,将事务打包成区块,对区块进行共识,将共识通过的区块发送给目录委员会进行最终打包和共识;并获得系统下一时刻区块链系统环境St+1,计算Rt+1;

9)、将(St,at,Rt+1,St+1)存入缓存数组;

10)、从缓存数组中随机抽取Y条样本记录(Sτ,aτ,Rτ+1,Sτ+1);

11)、利用Y条记录,计算Q样本值,公式如下:

Qd(Sτ,ad)=V(Sτ)+Ad(Sτ,ad)

12)、使用如下损失函数更新神经网络:

其中,

13)、探索概率ε取ε‑Δε和εmin中的最小值;

14)、如果t mod C=0,则target network网络复制online network参数,

15)、时刻t增加1;

16)、循环体结束;

所述BDQ算法,通过不断决策积累(St,at,Rt+1,St+1)样本记录训练神经网络,使得神经网络能够近似价值函数,进而选择最优行为,使得模型的累计奖励最大化,其中St+1表示t+1时刻的系统状态;

所述BDQ算法的神经网络,网络分支与行为空间A的子行为一一对应,并且具有一个共享的决策模块,即神经网络的隐藏层;将t时刻系统状态St={Rt,Ct,Ht,Pt}输入到神经网络中,状态经过共享的决策模块进行抽象,输出分为两个分支,分别为状态分支和行为分支,行为分支输出每个子行为的优势函数,即区块大小B的优势函数A1(St,a1),出块时间TI的优势函数A2(St,a2)和区块链分片数量K的优势函数A3(St,a3),状态分支输出状态值函数V(St),将子行为的优势函数与状态值函数合并得到子行为的价值函数,区块链分片系统决策时,根据输出的每个子行为Q值来选择相应的行为;

所述神经网络的更新过程是在经验池中随机抽取minibatch大小的经验,使用梯度下降的方式更新神经网络参数,BDQ算法对loss function的更新公式为:其中yd定义如下所示:

表示在Qd网络中根据态St+1选择最大Q值所对应的子行为ad,然后根据状态‑行为对到 网络选择所对应的Q值,BDQ算法中价值函数由状态值函数V(St)和行为的优势函数Ad(St,ad)组成,价值函数为Qd(St,ad)=V(St)+Ad(St,ad)BDQ算法中有两个结构相同的神经网络,其中online network网络实时更新,target network每隔C步更新一次,将online network参数值赋给target network。

说明书 :

结合深度强化学习的区块链分片系统性能优化方法

技术领域

[0001] 本发明属于数据管理及存证技术领域,涉及区块链系统分片的智能控制,特别涉及一种结合深度强化学习的区块链分片系统性能优化方法。

背景技术

[0002] 区块链分片,即将区块链系统中的节点划分到不同的分片内。通过片内的节点并行处理事务来提高区块链处理事务的能力,即提高区块链的性能。
[0003] 采用静态优化方法可以对区块链进行分片,静态优化方法是指区块链系统采用分片技术时,使用的分片策略一直固定不变。但是,区块链系统是时刻变化的,区块链系统采用静态优化方法不符合动态的区块链环境。
[0004] 目前区块链系统分片已有采用动态优化方法,例如使用深度强化学习算法动态的为区块链系统提供分片策略。根据区块链当前系统状态,强化学习算法为当前状态提供最优的分片策略,使区块链系统吞吐量最大化。
[0005] 动态优化方法根据动态的区块链系统环境提供分片策略,相较与静态优化方法更适合动态的区块链系统。目前,将深度强化学习算法加入区块链分片系统中,大部分研究使用的是DQN(Deep Q Network)算法解决了静态的区块链分片策略的缺点和状态空间爆炸问题,但使用DQN算法的这种方法不能解决行为维度扩大后,行为组合引起的行为空间爆炸的问题。

发明内容

[0006] 为了克服上述现有技术的缺点,本发明的目的在于提供一种结合深度强化学习的区块链分片系统性能优化方法,在动态的区块链环境下,使用深度强化学习BDQ算法与区块链分片技术结合,以期解决行为维度扩大后,行为组合引起的行为空间爆炸问题,并进一步解决区块链吞吐量低的问题。
[0007] 为了实现上述目的,本发明采用的技术方案是:
[0008] 结合深度强化学习的区块链分片系统性能优化方法,包括如下步骤:
[0009] 步骤1,区块链仿真系统中包括N个节点,所有节点之间都具有传输速率,节点具有计算能力,节点中存在恶意节点;
[0010] 步骤2,对区块链分片问题建立马尔可夫决策过程模型,模型由系统状态St、行为空间A、奖励Rt+1和价值函数Q(St,at)四部分组成;
[0011] t时刻的系统状态St定义为节点之间传输速率集合Rt、节点的计算能力集合Ct、节点的共识历史集合Ht和恶意节点的概率Pt;
[0012] 行为空间A包括区块大小B、出块时间TI和区块链分片数量K;
[0013] 奖励Rt+1表示t时刻区块链分片系统执行行为后获得的奖励,由t时刻系统状态St下采取行为所获得的收益即区块链每秒处理事务的数量构成;
[0014] 马尔可夫决策过程模型被总结为:在任意t时刻的系统状态St下,通过选择最优行为,使得系统累计奖励最大化,公式为:
[0015]
[0016] 约束于
[0017]
[0018] 其中,at为t时刻系统采取的行为,γt是t时刻Rt+1的衰减因子;
[0019] 步骤3,采用深度强化学习BDQ算法求解模型,通过不断探索和学习区块链系统吞吐量与区块大小、出块时间和区块链分片数量的复杂关系,最终根据区块链分片数量进行分片,分片内的节点根据区块大小和出块时间并行处理事务,使得区块链处理的事务数量最大化。
[0020] 与现有技术相比,本发明的有益效果是:
[0021] 本算法根据动态变化的区块链系统环境,使用深度强化学习BDQ算法,为区块链系统提供最优的分片策略,并将原来的DQN算法改为BDQ算法。本发明可以解决行为空间爆炸引起的神经网络难以训练的问题,同时可以减少神经网络训练的时间成本。相比其他方案,本发明能更加提升区块链分片系统性能,解决行为空间爆炸问题,减少神经网络训练时间成本。

附图说明

[0022] 图1为区块链分片仿真系统结构图。
[0023] 图2为BDQ算法的神经网络结构图。

具体实施方式

[0024] 下面结合附图和实施例详细说明本发明的实施方式。
[0025] 本发明为结合深度强化学习的区块链分片系统性能提升方法,对区块链分片问题建立马尔可夫决策过程模型,并提供深度强化学习BDQ算法,作为区块链分片策略选择算法的核心,设计基于深度强化学习的区块链分片最优选择策略(Branching Dueling Q‑Network Shard‑Based Blockchain,BDQSB)。本发明构建的模型的解为,在一系列系统状态下不断选择最优行为,使得系统累计奖励最大化,并最终使得区块链的吞吐量达到提升。相比其他方案,本发明能更加提升区块链分片系统性能,解决行为空间爆炸问题,减少神经网络训练时间成本。
[0026] 图1为区块链分片仿真系统结构图,仿真系统中包括N个节点,所有节点之间都具有传输速率,节点具有计算能力,节点中存在恶意节点。系统的分片过程为:根据行为中区块链分片的数量K,首先选出目录委员会中的节点,目录委员会中的节点个数然后对除去目录委员会中节点的N‑C个节点进行分片,根据节点ID的后L位将节点分到不同的片中,L=log2K节点ID和片号均为二进制编码的字符。区块链分片完成后,区块链系统得到K个分片,将事务分配到不同的片中进行处理,片内节点将事务打包成大小为B的区块,广播给片内其他节点进行共识,共识过程中产生共识历史H。K个分片将片内验证通过的区块发送给目录委员会,目录委员会将对K个区块进行最终打包,打包成最终区块,然后广播给目录委员会中的其他节点进行最终共识,形成共识历史。根据片内的共识历史和目录委员会中的共识历史可以计算出区块链中恶意节点的概率P。以上过程结束后,区块链系统状态发生变化。
[0027] 图2为BDQ(Branching Dueling Q‑Network)算法的神经网络结构图。现有的将深度强化学习算法应用到区块链分片系统的研究大多是使用的DQN算法,而相较于传统的DQN算法,BDQ算法提出了一种新的神经网络结构,行为空间有几个子行为就对应几个网络分支,并且具有一个共享的决策模块。BDQ算法为每个单独的动作维度提供一定程度的独立性,可扩展性较好。BDQ算法将区块链状态St=(Rt,Ct,Ht,Pt)输入到神经网络中,状态经过共享的决策模块(即神经网络的隐藏层)进行抽象,输出分为两个分支,分别为状态分支和行为分支。行为分支输出每个子行为的优势函数,状态分支输出状态值函数V(St),将子行为的优势函数与状态值函数合并得到子行为的Q函数,区块链分片系统决策时,根据输出的每个子行为Q值来选择相应的行为。
[0028] 本发明的性能优化方法具体包括:
[0029] 1、对区块链分片问题建立马尔可夫决策过程模型,模型由以下四部分组成:
[0030] 状态空间:状态空间定义为系统状态St,即,节点之间传输速率集合Rt、节点的计算能力集合Ct、节点的共识历史集合Ht和恶意节点的概率Pt,其公式为:
[0031] St={Rt,Ct,Ht,Pt}
[0032] 其中Rt={Ri,j},i,j∈N,Rij表示为节点i和节点j之间链路的传输速度;Ct={Ci},i∈N,Ci为区块链节点i的计算资源;Ht={Hi},Hi为节点i的共识历史,Hi=1或Hi=0,Hi=1表示节点i对区块验证不合法,Hi=0表示节点i对区块验证合法;Pt根据共识历史计算得到。
[0033] 行为空间:行为空间表示为A,其包括区块大小B、出块时间TI和区块链分片数量K,公式为:
[0034] A={B,TI,K}
[0035] 奖励函数:即奖励Rt+1,其表示t时刻区块链分片系统执行行为后获得的奖励,由t时刻系统状态St下采取行为所获得的收益即区块链每秒处理事务的数量构成,其公式为:
[0036]
[0037] 其中,BH为区块头的大小;b为事务的平均大小。(B‑BH)表示每个区块处理事务的大小。(B‑BH)/b为处理事务的大小除以平均事务的大小,表示每个分片处理事务的数量。表示K个分片处理事务的总数。 为事务的总数除以出
块的时间,表示区块链每秒处理事务的数量即事务的吞吐量。
[0038] 价值函数:定义为Q(St,at),其公式为:
[0039]
[0040] 价值函数Q(St,at)又称为Q函数,at∈A为t时刻系统采取的行为,为期望函数,y为相对于t时刻的未来时刻,Rt+y+1表示系统在t+y时刻采取行为后获得的奖励,γ表示衰减y因子,表示在某状态下采取某行为对系统未来奖励即环境影响的重视程度,0≤γ<1,γ为γ的y次方,是t+y时刻Rt+y+1的衰减因子。
[0041] 由此,建立的马尔可夫决策过程模型可以被总结为,在任意t时刻的系统状态St下,通过选择最优行为,使得系统累计奖励最大化,其模型公式为:
[0042]
[0043] 约束于
[0044]
[0045] 其中,γt是t时刻Rt+1的衰减因子。
[0046] 2、模型的解及求解算法
[0047] a模型的解,即在于计算得到最优价值函数,即可根据最优价值函数在任意t时刻系统状态St下选择最优行为,使累计奖励最大化,最优价值函数计算公式为:
[0048]
[0049] 在任意t时刻,最优行为选择公式为:
[0050]
[0051] 其中Q*(St,at)表示最优价值函数,St+1表示t+1时刻的系统状态,at+1表示在t+1时刻系统可能采取的所有行为中的任一行为,亦即行为空间A中的某一行为。
[0052] b求解算法即为,计算得到最优价值函数并在决策中选择选择最优行为,使得累计奖励最大化。
[0053] 本发明求解算法选择深度强化学习BDQ算法,这种算法通过不断决策积累(St,at,Rt+1,St+1)样本记录训练神经网络,使得神经网络能够近似价值函数,进而选择最优行为,使得所述模型的累计奖励最大化,其中Rt+1为系统采取at后得到的奖励,St+1为t+1时刻系统状态。
[0054] 神经网络训练过程,BDQ算法提出了一种新的神经网络结构,BDQ算法的神经网络如图2所示,行为空间有几个子行为就对应几个网络分支,即网络分支与行为空间A的子行为一一对应,并且具有一个共享的决策模块(神经网络的隐藏层)。BDQ算法为每个单独的动作维度提供一定程度的独立性,可扩展性较好。BDQ算法将t时刻区块链状态St=(Rt,Ct,Ht,Pt)输入到神经网络中,状态经过共享的决策模块进行抽象,输出分为两个分支,分别为状态分支和行为分支。行为分支输出每个子行为的优势函数,即区块大小B的优势函数A1(St,a1),出块时间TI的优势函数A2(St,a2)和区块链分片数量K的优势函数A3(St,a3),状态分支输出状态值函数V(St),将子行为的优势函数与状态值函数合并得到子行为的价值函数,区块链分片系统决策时,根据输出的每个子行为Q值来选择相应的行为。
[0055] 神经网络的更新过程是在经验池中随机抽取minibatch大小的经验,使用梯度下降的方式更新神经网络参数。BDQ算法对loss function的更新公式为
[0056]
[0057] 其中yd定义如下所示,
[0058]
[0059] 表示在Qd网络中根据态St+1选择最大Q值所对应的子行为ad,然后根据状态‑行为对到 网络选择所对应的Q值,BDQ算法中价值函数由状态值函数V(St)和行为的优势函数Ad(St,ad)组成,价值函数为:
[0060] Qd(St,ad)=V(St)+Ad(St,ad)
[0061] BDQ算法中有两个结构相同的神经网络,其中online network网络实时更新,target network每隔C步更新一次,将online network参数值赋给target network。
[0062] 3、通过不断探索和学习区块链系统吞吐量与区块大小、出块时间和区块链分片数量的复杂关系,最终根据区块链分片数量进行分片,分片内的节点根据区块大小和出块时间并行处理事务,使得区块链处理的事务数量最大化,提高区块链的性能。
[0063] 基于BDQ算法进行性能优化智能控制的运行逻辑如下:
[0064] 1)、初始化大小为N的经验回放池D,经验回放池D存放区块链分片系统t时刻的系统状态St,行为at,奖励Rt+1和下一时刻的区块链系统的系统状态St+1;
[0065] 2)、初始化online network和target network两个结构相同的网络;两个网络的‑权重分别为θ和θ;
[0066] 3)、设置初始时刻t=0,经验回放池D中样本记录的时刻记为τ;
[0067] 4)、初始化行为探索概率ε,探索率随t减少量Δε,最小探索概率εmin;
[0068] 5)、循环体开始;
[0069] 6)、获取当前t时刻区块链系统状态St={Rt,Ct,Ht,Pt};
[0070] 7)、使用ε‑greedy策略选择行为:
[0071]
[0072] 8)、执行行为at,区块链系统进行分片,分片内并行处理事务,将事务打包成区块,对区块进行共识,将共识通过的区块发送给目录委员会进行最终打包和共识;并获得系统下一时刻区块链系统环境St+1,计算Rt+1;
[0073] 9)、将(St,at,Rt+1,St+1)存入缓存数组;
[0074] 10)、从缓存数组中随机抽取Y条样本记录(Sτ,aτ,Rτ+1,Sτ+1);
[0075] 11)、利用Y条记录,计算Q样本值,公式如下:
[0076] Qd(Sτ,ad)=V(Sτ)+Ad(Sτ,ad)
[0077] 12)、使用如下损失函数更新神经网络:
[0078]
[0079] 其中,
[0080] 13)、探索概率ε取ε‑Δε和εmin中的最小值;
[0081] 14)、如果t mod C=0,则target network网络复制online network参数,[0082] 15)、时刻t增加1;
[0083] 16)、循环体结束。
[0084] 本发明提供了一个具体区块链分片优化实施例,如下:
[0085] 区块链分片系统具有200个节点,将t时刻区块链系统状态St输入到BDQ算法的神经网络中,输出三个子行为B,TI,K的Q值,选择Q值最大的子行为组成区块链分片系统要执行的行为at。假设行为at={4,8,4},区块链分片系统根据行为中区块链分片数量K=4,区块链分片系统首先选出目录委员会中的节点,目录委员会中的节点个数然后对除去目录委员会中节点的N‑C=180个节点进行分片,将节点分成4片,每个片内节点数量为65个。区块链分片完成后,将事务分配到不同的片中进行处理,片内节点根据出块时间TI=8将事务打包成大小为B=4的区块。区块链节点分成4个不同的分片,因此4个分片并行处理事务,提高了区块链分片系统的吞吐量。使用BDQ算法为实时动态的区块链分片系统提供分片策略,提高了区块链分片系统的性能。与使用DQN算法相比,BDQ算法使区块链吞吐量得到了提升。