1.一种基于网络信任模型动态提高区块链性能的方法,其特征在于,在区块链中预先训练好基于机器学习的网络信任模型,所述方法包括:S1、采用网络信任模型对区块链中的交易进行分类,识别恶意交易和诚实交易;
S2、获取恶意交易创建节点的hash地址,在节点参与共识前,过滤恶意节点;
S3、计算参与共识的节点的诚实度值,使用诚实度值调整每个节点的挖矿难度。
2.如权利要求1所述的基于网络信任模型动态提高区块链性能的方法,其特征在于,所述在区块链中预先训练好基于机器学习的网络信任模型,包括:步骤a、获取数据样本;
步骤b、采用聚类的方式对数据样本进行预处理,并将数据样本分为训练集和测试集;
步骤c、采用主成分分析方法对训练集和测试集中的多个特征进行降维处理;
步骤d、通过降维后的训练集对监督类的模型进行训练,得到初始网络信任模型;
步骤e、通过降维后的测试集对初始网络信任模型进行测试和优化,得到网络信任模型。
3.如权利要求1所述的基于网络信任模型动态提高区块链性能的方法,其特征在于,所述S2包括:在节点对于自己打包的交易数据中,如果有恶意交易则本地保存产生恶意交易的节点的hash地址;利用该hash地址将恶意节点产生的恶意区块过滤掉,如果该节点接收的块发送者的地址属于发送过恶意交易的,则不对该节点产生的块达成共识。
4.如权利要求1所述的基于网络信任模型动态提高区块链性能的方法,其特征在于,所述S3包括:S301、节点获取与其有关的邻居节点对总交易的评估结果Tr=Ntrust/(Nmalicious+Ntrust),其中Nmalicious表示恶意节点、Ntrust表示诚实节点,由于结果不是唯一,则计算平均值:n表示邻邻居节点的个数;
S302、获取邻居节点发送过来的恶意节点的hash地址,根据该地址判断该节点打包的交易中是否属于这些节点,并记录下来;
S302a、接收广播结果,并存储关于广播收到的节点的恶意节点的过滤结果;
S302b、将通过网络信任模型检测出的恶意交易的节点地址与广播收到的恶意节点地址进行比较,使用两个变量is_in和not_in记录比对过滤结果里是否包含该地址,如果包含则is_in加1,如果不在not_in加1,is_in表示保存了恶意节点的记录但仍然打包到恶意节点的交易,属于不可抗因素,占比系数比较小;not_in说明对恶意节点没有进行过滤,属于该节点贡献力不足,占比系数大;该步骤计算出结果为tcon=0.2*is_in+0.8*not_in;
S303、获取节点在最长链上产生的有效块与最长链上的所有块数量之间的比值 其中nv表示节点在最长链上产生的有效块数量,nl表示最长链上的所有块数量;
S304、根据上述计算的各个值,不考虑区块链的动态变化时,计算诚实度值tr:S305、使用诚实值度调整每个节点的挖矿难度,诚实度值与挖矿难度成反比。
5.如权利要求4所述的基于网络信任模型动态提高区块链性能的方法,其特征在于,所述S304还包括:对计算诚实度值中的各个值赋予各自的权重,
其中,a、b、c表示各个值的权重。
6.如权利要求5所述的基于网络信任模型动态提高区块链性能的方法,其特征在于,所述S304还包括:在计算诚实度值时,考虑区块链的动态变化,加入时间参数tt;
记录节点加入区块链的时间ts,以及当前时间tc,则计算时间参数为:计算动态区块链网络的节点诚实度:
7.如权利要求1~6任一所述的基于网络信任模型动态提高区块链性能的方法,其特征在于,所述方法还包括:S4、当存在多个块时,块上链前,对产生区块节点进行诚实度值比对,诚实度值高的节点产生的块上链并广播给其他节点。
8.如权利要求7所述的基于网络信任模型动态提高区块链性能的方法,其特征在于,所述S4具体包括:S401、各节点维护一个接收块的缓冲池,缓冲池中是其邻居节点广播到该节点的块;
S402、判断缓冲池里的块是否多于一个,如果多于一个,则对其内的块进行节点诚实度值比较,选择诚实度值最高节点产生的块上链,上链后,清空缓冲池。
9.一种区块链,其特征在于,所述区块链的层级结构自下而上总共有六个层级结构,依次是数据层、网络层、共识层、激励层、合约层、应用层;
其中,
在数据层获取数据层的交易数据,并利用KNN算法对交易数据进行分类;
在网络层计算各个参数共识节点的诚实度值;
在共识层利用不同的诚实度值,动态改变节点的挖矿难度;
在激励层方面,将挖矿难度的降低作为节点的奖励,鼓励节点遵守挖矿规则,产生交易以及打包合法交易。