掌桥专利:专业的专利平台
掌桥专利
首页

一种基于遗传算法的区块链共识节点待打包数据选取方法

文献发布时间:2023-06-19 11:57:35


一种基于遗传算法的区块链共识节点待打包数据选取方法

技术领域

本发明属于区块链技术领域,具体涉及一种基于遗传算法的区块链共识节点待打包数据选取方法。

背景技术

区块链技术通过建立一个共同维护且不可被篡改的数据库来记录过去所有信息传输记录和历史数据,所有的数据都是分布式存储且公开透明的。在这种技术下,任何互不相识的网络用户都可以通过合约、点对点存储和数字加密等方式达成信用共识,而不需要任何的中央信任机构。在这种技术下,可以建立数字货币、数字资产、智能财产以及智能合约等。

区块链本质上是一个对等网络(peer-to-peer)的分布式账本数据库,它本身其实是一串链接的数据区块,其链接指针是采用密码学哈希算法对区块头进行处理所产生的区块头哈希值。每一个数据块中记录了一组采用哈希算法组成的默尔克树状数据状态信息,这样保证了每个区块内的数据不可篡改。一般来说区块链系统由应用层、网络层和数据层等结构组成。其中,数据层封装了底层数据区块、共识算法以及密码学基础等。网络层则包括P2P网络的组网、传播机制和验证机制。应用层则封装了区块链的各种应用场景和案例。

目前常用的挖矿节点选择待打包数据的方法首先计算所有待打包数据的优先级,然后按照优先级进行降序排序,按优先级从高向低来选择。对于一笔待打包数据,如果选择了待打包数据后,已选的待打包数据总体积之和超过了区块容量,那么待打包数据不会被挖矿节点选择,挖矿节点会考虑优先级更低的待打包数据。这种算法只需要对待打包数据按照单位激励值的高低进行排序,依次选择,这是一种简单的贪心算法思想。贪心算法每次所做的选择,不是从整体最优进行考虑,而是仅考虑当前局部最优的选择。由于目前主流的区块链应用中规定10分钟左右产生新区块,因此矿工会尽量选择算法复杂度低的算法以保证在规定的时间之内完成待打包数据选择并完成区块打包工作,但得到的结果通常不是激励值最高的待打包数据组合。

发明内容

本发明的目的是为了解决传统挖矿节点选择待打包数据不是最优解的问题,提出了一种基于遗传算法的区块链共识节点待打包数据选取方法。

本发明的技术方案是:一种基于遗传算法的区块链共识节点待打包数据选取方法包括以下步骤:

S1:利用矿工从P2P网络接收待打包数据,并得到每个待打包数据的体积最大值、尘埃阈值和输出值;

S2:根据每个待打包数据的体积最大值、尘埃阈值和输出值,利用矿工验证每个待打包数据的合法性,并将合法的待打包数据放入待打包数据池;

S3:利用矿工从待打包数据池中获取合法的待打包数据,并得到每笔合法的待打包数据的激励值和体积,并给定区块容量、遗传算法的最大迭代次数、交叉概率和变异概率;

S4:基于每笔合法的待打包数据的激励值、每笔合法的待打包数据的体积、区块容量、遗传算法的最大迭代次数、交叉概率和变异概率,利用遗传算法确定总激励值最高的待打包数据组合,完成待打包数据选取。

2.进一步地,步骤S2中,验证待打包数据合法性的方法为:若待打包数据同时满足四个验证规则,则该待打包数据合法,否则不合法;

四个验证规则具体为:该待打包数据未被纳入区块中、该待打包数据的体积小于等于体积最大值、所有待打包数据的输入值总和大于等于所有待打包数据的输出值总和以及该待打包数据输入输出有效;

其中,待打包数据输入输出有效的验证规则具体为:若该待打包数据使用的UTXO模型已被其他区块链的待打包数据使用,则该待打包数据无效,否则有效;若该待打包数据输入中的解锁脚本无效,则该待打包数据无效,否则有效;若该待打包数据的输出值为负值或小于尘埃阈值,则该待打包数据无效;若存在一个待打包数据输入被验证无效,则整个待打包数据无效,否则有效;若存在一个待打包数据输出被验证无效,则整个待打包数据无效,否则有效。

进一步地,步骤S4包括以下子步骤:

S41:初始化种群,给定种群中有M条染色体,并对M条染色体进行0/1二值编码,得到布尔矩阵P,其中,布尔矩阵P中的元素P[i][j]表示第i条染色体对第j个合法的待打包数据的选择结果;

S42:根据布尔矩阵P,计算每条染色体的适应度F(i)和负载L(i);

S43:根据每条染色体的适应度F(i)计算每条染色体被选中的概率P(i),并形成第一新种群;

S44:基于第一新种群,利用两点交叉算子形成第二新种群;

S45:基于第二新种群,利用对换变异算子形成第三新种群;

S46:根据每条染色体的负载L(i),计算第三种群的最大适应度F'(i);

S47:重复步骤S42-S46T次,将得到的T个第三种群的最大适应度F'(i)对应的待打包数据作为总激励值最高的待打包数据组合,完成待打包数据选取,其中,T表示遗传算法的最大迭代次数。

进一步地,步骤S41中,若布尔矩阵P中的元素P[i][j]=0,则表示不选择该合法的待打包数据;若布尔矩阵P中的元素P[i][j]=1,则表示选择该合法的待打包数据。

进一步地,步骤S42中,每条染色体的适应度F(i)的计算公式为:

其中,N表示合法的待打包数据的个数,P[i][j]表示第i条染色体对第j个合法的待打包数据的选择结果,V

每条染色体的负载L(i)的计算公式为:

其中,W

进一步地,步骤S43包括以下子步骤:

S431:根据每条染色体的适应度F(i)计算每条染色体被选中的概率P(i),其计算公式为:

其中,M表示染色体个数,F(i)表示第i条染色体的适应度;

S432:根据每条染色体被选中的概率P(i),计算每条染色体被选中的累计概率q

其中,P(l)表示第l条染色体被选中的概率;

S433:在[0,1]内随机产生一个均匀分布的第一浮点数r',若r'<q

S434:重复步骤S433M次,得到M条被选中的染色体,形成第一新种群。

进一步地,步骤S44包括以下子步骤:

S441:在第一新种群中,在所有染色体中随机设置交叉起点和交叉终点;

S442:在[0,1]内随机产生一个均匀分布的第二浮点数r”,若r”>Pc,则进入步骤S444,否则进入步骤S443,其中,Pc表示交叉概率;

S443:随机生成2个[1,N]之间的正整数a和b,分别作为新的交叉起点和新的交叉终点;

S444:将在当前交叉起点和交叉终点中的所有染色体按编号顺序分为两两一组,进行组内交叉,形成第二新种群。

进一步地,步骤S45包括以下子步骤:

S451:在[0,1]内随机产生一个均匀分布的第三浮点数r”',若r”'>Pm,则结束对换变异,得到第三新种群,否则进入步骤S452,其中,Pm表示变异概率;

S452:在[1,N]之间随机产生一个整数Z,作为对换变异次数;

S453:随机生成2个[1,N]之间的正整数p和q,并作为对换变异的位置坐标;

S454:在对换变异的位置坐标中,交换正整数p和q;

S455:重复步骤S453-S454Z次,形成第三新种群。

进一步地,步骤S46中,第三种群的最大适应度F'(i)的计算公式为:

其中,N表示合法的待打包数据的个数,P

本发明的有益效果是:本发明使用遗传算法,求出矿工选择待打包数据打包进入区块的过程中具有最大激励值的最优解,从而提高矿工挖矿过程获得的激励值。在激励值成为矿工主要收入来源的时候,本发明将有很大的价值。

附图说明

图1为待打包数据选取方法的流程图;

图2为变异率与最佳编码代数的关系图;

图3为变异率与最佳编码价值的关系图;

图4为交叉率与最佳编码价值代数的关系图;

图5为交叉率与最佳编码价值的关系图;

图6为种群规模与最佳编码代数的关系图;

图7为种群规模与最佳编码价值的关系图;

图8为种群规模与算法运行时间的关系图.

具体实施方式

下面结合附图对本发明的实施例作进一步的说明。

在描述本发明的具体实施例之前,为使本发明的方案更加清楚完整,首先对本发明中出现的缩略语和关键术语定义进行说明:

UTXO模型:UTXO模型将资产的转移表现为待打包数据Tx输入和待打包数据Tx输出,未花费的待打包数据Tx输出作为另外一笔待打包数据Tx的输入。待打包数据Tx被分开成了输入和输出两个部分。待打包数据Tx输入消耗UTXO模型,表明输入的来源,而待打包数据Tx输出则产生新的UTXO,表明待打包数据Tx的目的。一个UTXO不能作为多笔待打包数据Tx的输入,否则会产生双花。

如图1所示,本发明提供了一种基于遗传算法的区块链共识节点待打包数据选取方法,包括以下步骤:

S1:利用矿工从P2P网络接收待打包数据,并得到每个待打包数据的体积最大值、尘埃阈值和输出值;

S2:根据每个待打包数据的体积最大值、尘埃阈值和输出值,利用矿工验证每个待打包数据的合法性,并将合法的待打包数据放入待打包数据池;

S3:利用矿工从待打包数据池中获取合法的待打包数据,并得到每笔合法的待打包数据的激励值和体积,并给定区块容量、遗传算法的最大迭代次数、交叉概率和变异概率;

S4:基于每笔合法的待打包数据的激励值、每笔合法的待打包数据的体积、区块容量、遗传算法的最大迭代次数、交叉概率和变异概率,利用遗传算法确定总激励值最高的待打包数据组合,完成待打包数据选取。

2.在本发明实施例中,如图1所示,步骤S2中,验证待打包数据合法性的方法为:若待打包数据同时满足四个验证规则,则该待打包数据合法,否则不合法;

四个验证规则具体为:该待打包数据未被纳入区块中、该待打包数据的体积小于等于体积最大值、所有待打包数据的输入值总和大于等于所有待打包数据的输出值总和以及该待打包数据输入输出有效;

其中,待打包数据输入输出有效的验证规则具体为:若该待打包数据使用的UTXO模型已被其他区块链的待打包数据使用,则该待打包数据无效,否则有效;若该待打包数据输入中的解锁脚本无效,则该待打包数据无效,否则有效;若该待打包数据的输出值为负值或小于尘埃阈值,则该待打包数据无效;若存在一个待打包数据输入被验证无效,则整个待打包数据无效,否则有效;若存在一个待打包数据输出被验证无效,则整个待打包数据无效,否则有效。

在本发明实施例中,如图1所示,步骤S4包括以下子步骤:

S41:初始化种群,给定种群中有M条染色体,并对M条染色体进行0/1二值编码,得到布尔矩阵P,其中,布尔矩阵P中的元素P[i][j]表示第i条染色体对第j个合法的待打包数据的选择结果;

S42:根据布尔矩阵P,计算每条染色体的适应度F(i)和负载L(i);

S43:根据每条染色体的适应度F(i)计算每条染色体被选中的概率P(i),并形成第一新种群;

S44:基于第一新种群,利用两点交叉算子形成第二新种群;

S45:基于第二新种群,利用对换变异算子形成第三新种群;

S46:根据每条染色体的负载L(i),计算第三种群的最大适应度F'(i);

S47:重复步骤S42-S46T次,将得到的T个第三种群的最大适应度F'(i)对应的待打包数据作为总激励值最高的待打包数据组合,完成待打包数据选取,其中,T表示遗传算法的最大迭代次数。

在本发明实施例中,如图1所示,步骤S41中,若布尔矩阵P中的元素P[i][j]=0,则表示不选择该合法的待打包数据;若布尔矩阵P中的元素P[i][j]=1,则表示选择该合法的待打包数据。

具体的赋值方式为:P[i][j]=X%2,X为随机参数,随机选择1或2,用于生成P[i][j]的值。

在本发明实施例中,如图1所示,步骤S42中,每条染色体的适应度F(i)的计算公式为:

其中,N表示合法的待打包数据的个数,P[i][j]表示第i条染色体对第j个合法的待打包数据的选择结果,V

每条染色体的负载L(i)的计算公式为:

其中,W

计算每条染色体的适应度F(i)和负载L(i)用于下一步的选择算子操作(i为染色体编号)。

在本发明实施例中,如图1所示,步骤S43包括以下子步骤:

S431:根据每条染色体的适应度F(i)计算每条染色体被选中的概率P(i),其计算公式为:

其中,M表示染色体个数,F(i)表示第i条染色体的适应度;

S432:根据每条染色体被选中的概率P(i),计算每条染色体被选中的累计概率q

其中,P(l)表示第l条染色体被选中的概率;

S433:在[0,1]内随机产生一个均匀分布的第一浮点数r',若r'<q

S434:重复步骤S433M次,得到M条被选中的染色体,形成第一新种群。

将选择算子作用于种群,即根据染色体适应度F(i)确定染色体i被选中的概率P(i),如果某条染色体K的负载

在本发明实施例中,如图1所示,步骤S44包括以下子步骤:

S441:在第一新种群中,在所有染色体中随机设置交叉起点和交叉终点;

S442:在[0,1]内随机产生一个均匀分布的第二浮点数r”,若r”>Pc,则进入步骤S444,否则进入步骤S443,其中,Pc表示交叉概率;

S443:随机生成2个[1,N]之间的正整数a和b,分别作为新的交叉起点和新的交叉终点;

S444:将在当前交叉起点和交叉终点中的所有染色体按编号顺序分为两两一组,进行组内交叉,形成第二新种群。

将两点交叉算子作用于新种群,两点交叉是指在个体染色体中随机设置了两个交叉点,然后再进行部分基因交换。步骤S444中,比如总共有N条染色体(N为偶数),则完成(1,2)、(3,4)(5,6)、、、(N-1,N)这样按照顺序两两一组进行组内交叉。

在本发明实施例中,如图1所示,步骤S45包括以下子步骤:

S451:在[0,1]内随机产生一个均匀分布的第三浮点数r”',若r”'>Pm,则结束对换变异,得到第三新种群,否则进入步骤S452,其中,Pm表示变异概率;

S452:在[1,N]之间随机产生一个整数Z,作为对换变异次数;

S453:随机生成2个[1,N]之间的正整数p和q,并作为对换变异的位置坐标;

S454:在对换变异的位置坐标中,交换正整数p和q;

S455:重复步骤S453-S454Z次,形成第三新种群。

在本发明实施例中,如图1所示,步骤S46中,第三种群的最大适应度F'(i)的计算公式为:

其中,N表示合法的待打包数据的个数,P

在本发明实施例中,遗传算法思想具体为:

(1)待打包数据Tx选取过程建模为0-1背包问题

0-1背包问题文字描述为:给定物品的个数和背包容量,物品i的重量为Wi,其价值为Vi,背包容量是C。问:应如何选择装入背包中的物品,使得物品总重量不超过背包容量的同时保证装入背包的物品价值最大。每件物品只有装入和不装入,不能装入多次,也不能只装入物品的一部分。

把待打包数据池中的待打包数据Tx看成是物品,待打包数据Tx的体积为物品的重量,物品的价值为对应激励值,区块容量为背包的容量,那么挖矿节点选择哪些待打包数据Tx打包进入区块的过程可以建模为一个0-1背包问题。本专利中选择遗传算法求解0-1背包问题。

(2)遗传算法求解0-1背包问题

遗传算法用于求解整体最优解。遗传算法通过模拟自然界中的种群进化过程,将问题的可行解作为种群中的个体,经过一系列的迭代过程模拟种群进化,进而搜寻问题的最优解。使用遗传算法搜索最优解的过程如下:

1.首先需要对问题的可行解进行编码,通常就是对其进行二进制编码,将其编码成一个定长的二进制字符串。一个字符串对应一个可行解,代表一个个体,称为染色体,组成字符串的字符就称为基因。

2.根据目标函数确定个体的适应度函数。适应度用于评估个体的性能,决定着个体能否在种群中继续存在。

3.选出一定数量的个体形成初始种群。

4.对种群依次进行选择、交叉和变异。

在使用遗传算法搜索最优解时,有四个参数需要提前指定,称为决策变量,分别是:

1.种群规模M:定义种群中个体的数量。M的取值过小的话,进行比例选择的时候类似于近亲结婚,个体多样性无法保障,并且一些优良的基因先天性缺失。取值过大的话,会导致算法运行效率低下,收敛慢。参考取值为20-100。

2.交叉概率Pc:用于判断两两个体之间是否交叉。选定作为父母亲的两个个体后按概率进行交叉。由于交叉是生成新个体的主要方式,是核心遗传操作,Pc的取值比较大,参考范围为0.4-1。

3.变异概率Pm:用于判断个体是否需要进行变异。变异之前需要先指定变异位置。变异行为产生新个体,如果取值过大,则会破坏种群中对最优解有建设性作用的个体;如果取值过小,那么可能无法抑制早熟现象,即算法结果过早收敛于一个局部最优解,很难跳出这个局部最优解走向整体最优解。

4.终止代数T:种群进化的代数上限,也是算法的终止条件。取值过小,会导致算法还没有搜索到整体最优解就被终止;取值过大,会让算法进行过多无意义的操作,因为算法出现早熟或者是在搜索到整体最优解后再做种群进化是没有意义的。

本发明的工作原理及过程为:在采用PoW共识机制的区块链应用中,矿工一般采用基于优先级来选择待打包数据Tx打包进入区块,这是贪心算法思想,通常结果不是全局最优解。本文通过把矿工选择待打包数据Tx打包进入区块的过程建模为0-1背包问题,使用遗传算法求出具有最大激励值的最优解,从而提高矿工挖矿过程获得的激励值。在激励值成为矿工主要收入来源的时候,本发明将有很大的价值。

在本发明实施例中,测试中针对区块不能完全容纳待打包数据池中所有待打包数据Tx的情况(即待打包数据Tx总体积大于区块容量),挖矿节点以获得较高激励值为目的来选择待打包数据Tx打包进区块。测试流程为:使用随机数来模拟待打包数据池中每笔待打包数据Tx的体积和激励值,以及区块容量,对基于遗传算法的选择算法进行测试。

计算机配置为:CPU:Intel(R)Core(TM)i5-8205U@1.60GHz;内置RAM:8.0GB;操作系统:Windows10 64bit。实现平台为:JAVA 代码实现,集成开发环境为eclipse4.10.0.20181214-0600,JDK的版本为10.0.1,测试所得数据使用Matlab 2018a进行展示。

在实验1中,如图2所示,种群规模为20,测试变异率从0.01变化到0.1时最佳编码代数的取值,截止代数为500,不同曲线代表不同的交叉率。从图中可以看到,随着变异率的上升,最佳编码代数大趋势上是在增加,二者呈现正相关关系,交叉率越高越明显。

在实验2中,如图3所示,种群规模为20,测试变异率从0.01变化到0.1时最佳编码价值的取值,截止代数为500,不同曲线代表不同的交叉率。从图中可以看到,随着变异率的上升,最佳编码价值大趋势上是在增加,二者呈现正相关关系。

在实验3中,如图4所示,种群规模为20,测试交叉率从0.4变化到0.99时最佳编码代数的取值,截止代数为500,不同曲线代表不同的变异率。从图中可以看到,随着交叉率的上升,最佳编码代数大趋势上是在下降,二者呈现负相关关系。且交叉率在0.84-0.99区间内,最佳编码代数下降最显著。

在实验4中,如图5所示,种群规模为20,测试交叉率从0.4变化到0.99时最佳编码代数的取值,截止代数为500,不同曲线代表不同的变异率。从图中可以看到,随着交叉率的上升,最佳编码价值大趋势上是在下降,二者呈现负相关关系。且交叉率在0.84-0.99区间内,最佳编码价值下降最显著。

在实验5中,如图6所示,交叉率为0.4,测试种群规模从20变化到80时最佳编码代数的取值,截止代数为500,不同曲线代表不同的变异率。从图中可以看到,随着种群规模的上升,截止代数并没有明显的上升或下降趋势。

在实验6中,如图7所示,交叉率为0.4,测试种群规模从20变化到80时最佳编码价值的取值,截止代数为500,不同曲线代表不同的变异率。从图中可以看到,随着种群规模的上升,最佳编码价值也一直上升,二者有明显的正相关关系。

在实验7中,如图8所示,交叉率为0.4,测试种群规模从20变化到80时算法的运行时间,截止代数为500,不同曲线代表不同的变异率。从图中可以看到,随着种群规模的上升,算法运行时间也一直上升,二者有明显的正相关关系。

从以上7组实验中可以得出结论:变异率在0.01-0.1范围内与最大编码价值呈正相关关系,可以将变异率控制在0.1附近获得更大编码价值;变异率在0.01-0.1范围内与最大编码代数呈正相关关系,可以将变异率控制在0.1附近抑制算法过早局部收敛;交叉率在0.4-0.99范围内与最大编码价值呈负相关关系,可以将交叉率控制在0.4附近获得更大编码价值;交叉率在0.4-0.99范围内与最大编码代数呈负相关关系,可以将交叉率控制在0.4附近抑制算法过早局部收敛;扩大种群规模可以提升最大编码价值,但是与算法收敛早晚没有必然联系,也会增大算法运行时间。

本发明的有益效果为:本发明使用遗传算法,求出矿工选择待打包数据打包进入区块的过程中具有最大激励值的最优解,从而提高矿工挖矿过程获得的激励值。在激励值成为矿工主要收入来源的时候,本发明将有很大的价值。

本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的原理,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其它各种具体变形和组合,这些变形和组合仍然在本发明的保护范围内。

相关技术
  • 一种基于遗传算法的区块链共识节点待打包数据选取方法
  • 基于分支限界法的区块链共识节点待打包数据选取方法
技术分类

06120113115660