1.一种区块链中基于动态分簇的区块协同存储方法,其特征在于,包括:区块链中目标动态分簇的簇头节点收集该目标动态分簇的所有非簇头节点的可用空间情况以及获取待存储的区块交易数目;
根据所述所有非簇头节点的可用空间情况确定分包方案,所述分包方案用于从区块中抽出一个或数个区块交易并入一组,形成若干个组,根据可用空间情况将一个或多个组传输给非簇头节点存储,确保每个组均有非簇头节点来存储,且每个非簇头节点均有组去存储;
根据所述分包方案进行分发存储;
所述确定分包方案的过程,包括:
根据目标动态分簇I所有的非簇头节点的可用存储空间大小,计算目标动态分簇I中非簇头节点存储空间总和,记为SI,计算如式(1‑6)所示: (1‑6);
式(1‑6)中,Si为节点i的存储空间大小,MI为目标动态分簇I的非簇头节点集合;
计算目标动态分簇I的空间利用率,记为RI,计算如式(1‑7)所示: (1‑7);
式(1‑7)中,Sn为当前簇头节点收到的区块大小,r为所有非簇头节点所存储的区块交易加在一起是簇头节点收到的区块交易的倍数,r∈ 为正整数;
num
计算节点i可存储的区块交易数目,记为Ti ,计算如式(1‑8)所示: (1‑8);
式(1‑8)中,B为预先设定好的区块交易的大小;
所述目标动态分簇的动态调整过程,包括:
在区块链的节点中筛选得到若干个簇头节点;
根据簇头节点建立包含该簇头节点和若干非簇头节的簇;
在区块链中确定好所有簇后,根据预先设定簇成员下限和簇成员上限动态调节各个簇的簇内节点数目;
所述在区块链的节点中筛选得到若干个簇头节点,包括:首先通过式(1‑1)计算节点i的性能,记为Ei:
(1‑1);
式(1‑1)中,e1和e2分别表示CPU功率系数和可用存储空间大小系数,取值范围是(0, * *
1),且e1+e2=1,Ci 和Si 分别表示节点i的CPU功率和存储空间大小的无量纲化数值,计算方法如式(1‑2)和式(1‑3)所示: (1‑2);
(1‑3);
式(1‑2)和式(1‑3)中,Ci是节点i的CPU功率,Si是节点i的存储空间大小,然后通过式(1‑4)筛选出候选集合: (1‑4);
式(1‑4)中,候选集合为W,Pi为节点i生成的(0,1)随机数,O为候选节点冗余率,p为簇头节点占总节点数的百分比,p∈(0, 1);
确定簇头节点集合,包括以下步骤:
1)计算候选集合W中每个节点各自计算自己与该集合中其他节点的距离;
2)候选集合W中选取任一节点加入集合H,然后将其从候选集合W中删除;
3)最新加入集合H的节点提名距自己最远的候选集合W内的节点,广播至集合H;
4)集合H内的节点与步骤 3)广播的节点广播时收到的节点延迟均大于集合H内簇头节点之间的最小传输延迟,则通过,进入步骤5),反之,将其从集合W中删除,进入步骤3);
5)步骤4)中通过的节点加入集合H,并将其从候选集合W中删除;
6)计算集合H的成员数占总节点数的比例,如超过p,进入步骤7),反之,进入步骤3);
7)结束集合H的选取,当前的集合H为簇头节点集合;
所述根据簇头节点建立包含该簇头节点和若干非簇头节的簇,包括:节点当选为簇头节点后,向周围广播消息,消息中包含簇头节点信息及加入该簇的要求;
当其他非簇头节点收到广播消息后,将其保留,经过固定时间后,选取在此期间收到的距离最近的簇头节点,加入该簇头节点对应的簇,并发送含有该非簇头节点的信息的确认加入消息给选中的簇头节点,随后簇头节点决定是否建立连接;
经过固定时间后,发送确认加入信息的节点未与簇头节点建立连接,则向距离第二近的簇头节点发送确认加入信息,以此类推,直至加入任意簇或没有新的簇头节点选择;
所述在区块链中确定好所有簇后,根据预先设定簇成员下限和簇成员上限动态调节各个簇的簇内节点数目,包括:当目标簇中的节点数量超过簇成员上限时,该目标簇的簇头节点与其他簇的簇头节点沟通,获得数个可接收节点的簇头节点名单,将目标簇中离簇头节点最远的节点踢出,使之加入可接收节点的簇头节点名单中与之距离最近的簇头节点,直到目标簇的节点数量在簇成员下限和簇成员上限动态之间,转为正常簇;
当目标簇中的节点数量低于簇成员下限时,该目标簇的簇头节点与其他簇的簇头节点沟通,获得数个可接收的非簇头节点名单,目标簇的簇头节点根据到期距离的大小依次从近到远逐个收入非簇头节点名单内的非簇头节点,直至目标簇成为正常簇。
2.根据权利要求1所述的区块链中基于动态分簇的区块协同存储方法,其特征在于,在根据所述分包方案进行分发存储之前,还需进行协同验证,所述协同验证包括:将待存储的区块交易信息发送给对应分包方案确定的要存储该区块的节点进行区块交易有效性验证,节点验证成功后,将验证结果发送给簇头节点,再由簇头节点根据分包方案进行分发存储。
3.根据权利要求1所述的区块链中基于动态分簇的区块协同存储方法,其特征在于,所述目标动态分簇还包括目标簇头节点修复方案,所述目标簇头节点修复方案,包括:每隔一段时间,簇头节点对与其同属一簇的非簇头节点广播簇内节点信息与存储状态表,如果发生簇头节点宕机或错误事件时,非簇头节点依据之前存储的节点信息与存储状态表重新建立连接,随后由原属于该簇的非簇头节点根据节点的性能进行竞争,选出性能最高的节点作为新的簇头节点。
4.一种存储一个或多个程序的计算机可读存储介质,其特征在于,所述一个或多个程序包括指令,所述指令当由计算设备执行时,使得所述计算设备执行权利要求1至3中的任一所述方法。
5.一种计算机设备,其特征在于,包括,
一个或多个处理器、存储器以及一个或多个程序,其中一个或多个程序存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个程序包括用于执行权利要求1至3中的任一所述方法的指令。