本发明属于区块链,特别是涉及一种基于支持向量机的委托权益证明共识机制的构建方法。
背景技术:
1、作为区块链的核心技术之一,共识算法具有显著的优势,其中之一就是在去中心化系统中能够有效地实现各个节点对区块数据有效性的共识,尤其是在决策权高度分散的情况下,仍然能够实现高效的共识达成。根据参与者的权限和控制范围可以将区块链分为公有链、联盟链和私有链。目前公有链的主流共识算法为工作量证明(proof-of-work,pow)、权益证明(proof-of-stake,pos)和委托权益证明(delegated proof-of-stake,dpos)。
2、其中pow利用哈希算力来竞争记账权,但这容易造成电力资源的浪费以及算力集中等问题;pos解决了pow消耗大量算力的问题,但权益的累积可能会导致节点之间的贫富差距过大;而dpos则类似于股份公司,通过根据股民持有的股份进行投票,最终得票数排名靠前的节点成为见证节点轮流完成记账。与pow和pos相比,dpos参与验证和记账的节点数量大幅减少,因此可以提高交易处理速度和吞吐量。但dpos仍然存在一些不足之处,首先由于没有快速剔除恶意节点,加长了投票周期,时间效率变低;其次,恶意节点可能会通过合谋等方式破坏整个系统,影响系统安全性。最后如果节点通过控制投票权来获得更多的利益,将会影响节点之间的平衡性。
技术实现思路
1、基于上述现有技术的不足,本发明实施例的目的在于提供一种基于支持向量机的委托权益证明共识机制的构建方法,以实现系统安全性、稳定性和效率的提高。
2、为解决上述技术问题,本发明所采用的技术方案是,一种基于支持向量机的委托权益证明共识机制的构建方法,包括以下步骤:
3、s1、用户发起投票;
4、s2、划分候选人节点;
5、s3、筛选验证人节点;
6、s4、构建并训练支持向量机模型;
7、s5、剔除恶意节点;
8、s6、验证人节点出块。
9、进一步地,所述s4具体包括以下步骤:
10、s41、划分超平面;
11、s42、确定最大分类间隔;
12、s43、获取最优非线性分类函数;
13、s44、训练和评估支持向量机模型。
14、进一步的,所述s41具体为:首先将样本集d表示为d={(xi,yi),i=1,2,...,m;yi=(-1,+1)},其中xi代表第i个输入样本,yi代表第i个输入样本对应的类别值,m为样本数量;划分超平面(ω,b)为:
15、(ω,b)=ωtx+b
16、其中,ω=(ω1,ω2,...,ωm)为法向量,ωt为ω的转置;b为位移项,x为输入样本点;样本点到超平面的距离γ为:
17、
18、每个样本集中的点到超平面的距离γi大于等于支持向量x0到超平面的距离
19、
20、进一步地,所述s42具体为:
21、设ωtx+b=c,c∈r,其中ω=(ω1,ω2,...,ωm)为法向量,b为位移项,c为中间参数,c≠0;对(ω,b)进行放缩变换,使得|ωtx+b|=1;将s41中不等式变换为:
22、
23、确定两个不同支持向量之间的间隔表示为引入非负松弛因子ξi;将分类超平面转化为yi(ωtxi+b)≥1-ξi;则最大分类间隔倒数为其中,支持向量机惩罚因子c>0,将线性不可分的支持向量机转化为:
24、
25、其中,目标函数为约束条件为yi(ωtxi+b)≥1-ξi,i=1,2,...,m,ξi≥0,i=1,2,...,m,其中xi代表第i个输入样本,yi代表第i个输入样本对应的类别值。
26、进一步的,所述s43具体为:首先基于拉格朗日函数建立高维线性分类模型:
27、
28、其中;l(w,b,ξ,α,γ)为拉格朗日函数;αi,γi为第i个输入样本的拉格朗日函数乘数,α*是所述高维线性分类模型最优拉格朗日乘子解,则根据最优拉格朗日乘子解计算最优权值向量ω*和最优偏置量b*的公式如下:
29、
30、
31、其中是核函数,用于计算支持向量之间的内积,将最优权值向量ω*和最优偏置量b*带入平面f(x)=ωtx+b得到最优分类超平面(ω*·x)+b*=0,确定支持向量机分类模型f(x):
32、
33、其中核函数将f(x)输入向量x从原空间映射到高维空间:
34、
35、核函数采用线性核函数,则f(x)转化为:
36、
37、其中,为越阶函数;为线性核函数;最终f(x)的输出值为+1或-1,若输出值为+1,则表明存在恶意行为,属于恶意节点需要剔除;若输出值为-1,则属于正常节点,从而确定x归属类型。
38、进一步地,所述s44具体为:
39、s441、首先进行数据准备,从商用分布式设计区块链历史交易数据集xblock-eos中选取数据,将字符串转为整型,选取节点是否活跃、节点是否产生叔块、节点是否发生分叉、节点是否提供无效区块及本周期总出块数,5个特征作为节点作恶评估指标;随后对数据进行分割得到:训练集特征x_train,训练集标签x_test,测试集特征y_train,测试集标签y_test;初始化支持向量机模型,根据使用训练集来训练模型,根据训练数据找到最佳的分割超平面后完成训练;
40、s442、对模型进行评估:分别计算训练集和测试集的准确率;完成模型的训练及评估后,根据模型的输出结果,对恶意节点进行标记;将模型应用于新的未知节点,对其进行分类和预测。
41、进一步的,所述s5具体为,在源码中打包每个块之前调用是否切换周期代码块,检查当前块是否是新周期的第一块,如果是第一块则触发新一轮的选举;如果不是新周期的第一块则调用kickoutvalidator代码块,根据训练好的支持向量机模型监测和检测恶意行为,将需要剔除的节点将其放入needkickoutvalidators列表中,最后先确保见证人节点大于安全数量,再调用dposcontext.kickoutcandidate代码块剔除节点。
42、进一步地,所述s6具体为:
43、s61、验证人节点使用自己的私钥对准备好的区块进行签名;
44、s62、将签名后的区块广播到整个网络中;
45、s63、其他节点接收验证人节点广播的区块并进行共识确认;
46、s64、验证人节点获得的公式确认达到阈值时,添加该节点至区块链中,成为最新的区块。
47、本发明的有益效果是:
48、本发明克服了现有委托权益证明共识机制不能及时剔除恶意节点的不足,提供一种基于支持向量机的委托权益证明共识机制,将共识过程中存在作恶行为的节点,通过支持向量机算法迅速识别并及时剔除恶意节点,提高委托权益证明共识机制的安全性。