[发明专利]一种基于信誉权益证明的区块链共识方法有效
申请号: | 201811631281.5 | 申请日: | 2018-12-29 |
公开(公告)号: | CN109493062B | 公开(公告)日: | 2021-03-09 |
发明(设计)人: | 李晓风;朱晓煜;赵赫;谭海波 | 申请(专利权)人: | 中国科学院合肥物质科学研究院 |
主分类号: | G06Q20/38 | 分类号: | G06Q20/38;G06F21/56 |
代理公司: | 安徽省合肥新安专利代理有限责任公司 34101 | 代理人: | 陆丽莉;何梅生 |
地址: | 230031 *** | 国省代码: | 安徽;34 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种基于信誉权益证明的区块链共识方法,其步骤包括:1生成信誉权益区块链中的区块;2去除所述信誉权益区块链中可能存在的分叉;3更新信誉权益用户的资金余额、信誉值以及活跃度;4动态更新所述综合得分中的参数系数。本发明能在保证区块不易被篡改的情况下减少用户在生成区块时所耗费的资源,使得更多的用户能够生成区块,从而参与共识,同时,还能降低诚实用户被恶意用户攻击的可能性。 | ||
搜索关键词: | 一种 基于 信誉 权益 证明 区块 共识 方法 | ||
【主权项】:
1.一种基于信誉权益证明的区块链共识方法,是应用于由若干个信誉权益用户所组成的网络环境中,且任一信誉权益用户记为ui;其特征是,所述区块链共识方法是按如下步骤进行:步骤一、生成信誉权益区块链中的区块:步骤1.1、建立所述信誉权益区块链的初始区块;令所述初始区块的区块头为所述初始区块的账户地址;令所述初始区块的区块主体为构建所述初始区块的时间及整个区块链的初始资金总额;令所述初始区块的区块尾为所述初始区块的区块头和区块主体的哈希值;步骤1.2、所述初始区块为信誉权益用户ui分配初始资金、信誉值和活跃度;步骤1.3、定义变量n,并初始化n=0;将所述初始区块作为第n个区块;步骤1.4、所述信誉权益用户ui将部分的初始资金作为押金并发起抵押押金的交易,再利用式(1)得到信誉权益用户ui的综合得分z(ui):z(ui)=θ0+θ1bal(ui)+θ2rep(ui)+θ3act(ui) (1)式(1)中,bal(ui)表示信誉权益用户ui的资金余额;rep(ui)表示信誉权益用户ui的信誉值;act(ui)表示信誉权益用户ui的活跃度;θ0表示常数系数;θ1是所述信誉权益用户ui的资金余额的参数系数;θ2是所述信誉权益用户ui的信誉积分的参数系数;θ3所述信誉权益用户ui的活跃度的参数系数;步骤1.5、利用式(2)得到所述信誉权益用户ui的挖矿难度d(ui):d(ui)=λ×z(ui)×M/D (2)式(2)中,λ表示难度调整系数,M表示所设定的最大难度值,D表示定期设置的难度值;步骤1.6、所述信誉权益用户ui将网络中所有信誉权益用户广播的交易打包到第n+1个区块中,所述第n+1个区块的区块头包含:第n个区块的哈希值Hn、第n+1个区块的随机数Rn+1、第n+1个区块的时间戳Tn+1、第n+1个区块定期设置的难度值Dn+1、第n+1个区块高度hn+1、第n+1个区块的难度调整系数λn+1、第n+1个区块的资金余额bal(ui)的默克尔根bal(ui)_rootn+1、第n+1个区块的信誉值rep(ui)的默克尔根rep(ui)_rootn+1、第n+1个区块的活跃度act(ui)的默克尔根act(ui)_rootn+1以及网络中所有信誉权益用户广播交易的默克尔根Tx(ui)_rootn+1;所述第n+1个区块的区块主体包含:网络中所有信誉权益用户广播的交易;所述第n+1个区块的区块尾包含:所述第n+1个区块的区块头和区块主体的哈希值;步骤1.7、所述信誉权益用户ui通过不断调整第n+1个区块的随机数Rn+1,使得挖矿条件成立,从而生成第n+1个区块,并与前第n个区块构成信誉权益区块链;所述挖矿条件为:所述第n+1个区块的区块头的哈希值小于等于挖矿难度d(ui);步骤二:去除所述信誉权益区块链中可能存在的分叉,使得所有信誉权益用户对信誉权益区块链达成共识:步骤2.1、遍历所述信誉权益区块链,得到所有区块的前驱区块的地址和后继区块的地址,以及所述信誉权益区块链的区块总数s;步骤2.2、定义变量j,并初始化j=0;步骤2.3、判断所述信誉权益区块链中的第j个区块是否存在多个后继区块的地址;若存在,则将多个后继区块加入到后继区块列表List1中,并执行步骤2.4;否则,将j+1赋值给j后,返回步骤2.3,直到j=s为止,并执行步骤2.7;步骤2.4、验证所述后继区块列表List1中后继区块的有效性:若后继区块中区块头的哈希值满足所述挖矿条件,则将后继区块放入候选后继区块列表List2中,并执行步骤2.5;否则表明相应后继区块无效,并将相应后继区块从后继区块列表List1中去除后,验证下一个后继区块,直到后继区块列表List1中无后继区块为止,再执行步骤2.7;步骤2.5、验证候选后继区块列表List2中后继区块的区块主体所包含的交易是否合法:若后继区块的区块主体包含的交易为双花交易,则将相应后继区块的用户视为不诚实用户,并列入黑名单中,再将相应后继区块从候选后继区块列表List2中去除;再验证下一个后继区块,直到候选后继区块列表List2中没有区块为止;若后继区块包含的交易存在转账金额大于用户的资金余额,则将相应后继区块的用户视为不诚实用户,并列入黑名单中,再将相应后继区块从候选后继区块列表List2中去除;再验证下一个后继区块,直到候选后继区块列表List2中没有区块为止;否则,直接执行步骤2.6;所述黑名单中包含:不诚实用户及其对应的不合法交易和后继区块;步骤2.6、按照以下规则对后继区块列表中的任意两个后继区块进行判断,并选出主链:规则一:任意两个后继区块均为有孩子节点的后继区块,则选择分叉链中信誉权益用户个数多的分叉链作为主链;规则二:任意两个后继区块均为无孩子节点的后继区块,则选择后继区块中哈希值最小的区块所在的分叉链作为主链;规则三:任意两个后继区块中包括有孩子节点的后继区块和无孩子节点的后继区块,则选择有孩子节点的后继区块所在的分叉链作为主链;步骤2.7、将s赋值给n后,返回步骤1.4;步骤三:更新信誉权益用户ui的资金余额、信誉值以及活跃度:步骤3.1、更新信誉权益用户ui的资金余额:遍历所述信誉权益区块链,找出所有区块中包含信誉权益用户ui的交易,若是抵押押金交易,则从信誉权益用户ui的资金余额中扣除押金金额;若是转账交易,则在信誉权益用户ui的资金余额上扣除转走的资金,加入转入的资金,从而完成信誉权益用户ui的资金余额的更新;步骤3.2、更新信誉权益用户ui的信誉值:遍历所述信誉权益区块链,找出由所述信誉权益用户ui生成的区块,并比对黑名单;记信誉权益用户ui生成的区块数目为p,若pmodN1=0成立,则清空信誉权益用户ui的信誉值;若不成立,则查看信誉权益用户ui生成的区块是否被包含在黑名单中,若是,则扣除信誉权益用户ui的信誉值,否则增加信誉权益用户ui的信誉值;从而完成信誉权益用户ui的信誉值的更新;其中,N1为所设定的阈值,且N1∈{10,20,30,40,50};步骤3.3、更新信誉权益用户ui的活跃度:遍历所述信誉权益区块链,找出由所述信誉权益用户ui生成的区块,记信誉权益用户ui生成的区块数目q为,若qmodN1=0成立,则清空信誉权益用户ui的活跃度,否则增加信誉权益用户ui的活跃度;从而完成信誉权益用户ui的活跃度的更新;步骤四:动态更新所述综合得分中的参数系数:步骤4.1、根据所述黑名单,将信誉权益用户ui生成区块时的行为是否诚实,记做y(ui);若信誉权益用户ui生成的区块被包含在黑名单中,则认为信誉权益用户ui生成区块时的行为不诚实,记y(ui)=0,否则表示信誉权益用户ui生成区块时的行为诚实,记y(ui)=1;步骤4.2、若sn+1modN2=0成立,则所述信誉权益用户ui统计前N2个区块中每个区块生成者的状态信息包括:资金余额、信誉值、活跃度以及每个用户生成区块时的行为是否诚实,从而获得N2组区块生成者的状态信息;其中,N2为所设定的阈值,且N2∈{1024,2048};步骤4.3、根据所述N2组区块生成者的状态信息,基于Logistic回归算法优化所述综合得分中的参数系数:利用式(3)构建信誉权益用户ui的预测判别函数hθ(ui),并将所述N2组区块生成者的状态信息代入式(3)中,得到N2个hθ(ui)函数值:
步骤4.4、利用式(4)构造表示hθ(ui)函数值与信誉权益用户ui行为诚实与否y(ui)之间偏差的损失函数Cost(hθ(ui),y(ui)):
步骤4.5、利用式(5)得到N2组损失函数函数值的平均数J(θ):
步骤4.6、利用梯度下降法获得N2组损失函数函数值的平均数J(θ)的最小值,从而得到更新后的四个参数θ′0,θ′1,θ′2,θ′3并广播给其他用户后,返回步骤1.4。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国科学院合肥物质科学研究院,未经中国科学院合肥物质科学研究院许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201811631281.5/,转载请声明来源钻瓜专利网。