买专利,只认龙图腾
首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

【发明授权】基于可信性评估的区块链共识方法_北京工业大学_201910166471.2 

申请/专利权人:北京工业大学

申请日:2019-03-06

公开(公告)日:2022-09-20

公开(公告)号:CN109949034B

主分类号:G06Q20/38

分类号:G06Q20/38;G06Q20/06;H04L9/06;H04L9/32

优先权:

专利状态码:有效-授权

法律状态:2022.09.20#授权;2019.07.23#实质审查的生效;2019.06.28#公开

摘要:本发明涉及基于可信性评估的区块链共识方法。本方法采用基于信任值的加权投票共识,按照信任值排名动态随机组成共识组。每个共识组的成员都有与其信任值成正比的投票权重,而信任值由长时间累计的综合表现决定。所以,只有诚实的节点,表现长时间的正常并且有规律,才可能成为共识组的一员。共识组中会有一矿工被随机选中成为领导者,领导者可以产生微块对交易进行打包,其它节点对微块进行共识,一轮工作结束。本方法有三大改进:第一,发明一种新型的领导者和共识组的创建方法,保证选择的随机性和公平行。第二,基于长时间累计的综合表现所创建的信任值计算方式。第三,创造了一种基于改进的raft的共识算法,可以扩大吞吐量。

主权项:1.一种基于可信性评估的区块链共识方法,其特征在于:密钥块:密钥块用于确定领导人;在一个密钥块中,Prevkeyblockhash是前一个密钥块的散列值,Nonce是随机数,PK是矿工的公钥,R是信任值,Ksig是Prevkeyblockhash、Nonce、PK、R的散列值,Sigkeyblockagreement是此密钥块的被共识验证的签名;共识组组员通过检查Ksig验证密钥块;微块:微块是一个简单的块,每隔几秒就会验证一次;微块包括验证的历史交易;为了防止双重支出,每个微块在被接受之前都要被提议给共识组,如果微块被验证成功,则会成为区块链的一部分;微块结构如下:其中HKsig是当前有其对应的固定密钥块的散列值,Prevmicroblockhash是前一个固定在区块链中的微块的哈希值,TXs是一组Merkle树的交易,Msig是keyblockhash、Prevmicroblockhash、TXs的哈希值,Sigmicroblockaggrement是来自共识的签名;为了验证微块的有效性,共识组成员检查Msig的有效性,验证密钥块和前面的微块的散列值,并验证交易TXs;大块:由密钥块和与其对应的微块组成;区块链由多个大块构成;且包括以下步骤:第一部分信任评估值的计算;步骤1:计算内部信任值;步骤1.1:计算由一个矿工在区块链中的所有时期创建的密钥块的平均值meank;如公式1所示,其中ki表示在第i个区块中矿工创造的密钥块数量,L表示当前区块链的长度; 步骤1.2:计算由一个领导者在区块链中的所有时期创建的微块的平均值meanm,微块为区块的组成部分,包含验证的历史交易;如公式2所示,其中mj表示在第j轮矿工所生产的微块被验证成功的数量;m表示一个领导者被预定的生成的微块数;N表示矿工被选为领导者的次数; 步骤1.3:计算sk即meank的标准差;如公式3所示,其中c表示区块的大小;t表示是长度为L的区块链中包含的区块数量; 步骤1.4:计算sm即meanm的标准差;如公式4所示,其中N表示矿工被选为领导者的次数,mj表示在第j轮矿工所生产的微块被验证成功的数量;m表示一个领导者被预定的生成的微块数; 步骤1.5:计算矿工定期为系统贡献算力的能力y1;如公式5所示,分子meank代表矿工为整个系统的贡献;分母中的sk是meank的标准差,代表矿工对每个块的贡献的规律性;它们共同保证了矿工的信任值是根据矿工的综合能力计算出来的; 步骤1.6:计算领导者在选择微块时提交定义数量的微块的“规律性”y2;N为被选为领导者的次数,如果N=1,即此矿工当过领导者,使用公式6;如果N1,那么y2为1,如公式7所示; y2=1N17步骤1.7:计算矿工的综合能力x;如公式8所示,其中L为区块链总长度;x=y1y2L8步骤1.8:计算根据时间要求控制信任增长的趋势fx;fx是一个sigmoid函数;如公式9所示,其中,α,λ为系统参数,x为矿工的综合能力;α=10000,λ=50000; 步骤2:计算外部信任值,外部信任值表示为目标矿工在进行历史交易中的信任情况,取值为[0,1],信任值为1表示对目标矿工完全信任,信任值为0表示目标矿工为恶意矿工,信任值为0.5则表示对目标矿工的信任度没有把握;步骤2.1:本方法使用三元组T={b,d,u}来描述矿工的信任评价;b、d、u分别代表对目标矿工的信任程度,不信任程度和不确定程度;三者满足的关系如公式11所示:b+d+u=1,{b,d,u}∈[0,1]11步骤2.2:计算调控因子调控网络中的不确定因素wc;如公式12所示,在一轮交易时间内,目标矿工的交易数量为E,如果交易对方对交易有异议则会发送警告消息给目标矿工,称为否定事件,否定事件的数量记为s,肯定事件的数量记为r,s和r都必须小于E; 步骤2.3:计算b、d、u;如公式131415所示,其中p表示对矿工否定事件的惩罚因子,取值为[1,4],r为肯定事件数量,s为否定事件数量,wc是于步骤2.2计算出的调控因子调控网络中的不确定因素的值; 步骤2.4:计算外部信任值Ext;如公式16所示,其中p表示对矿工否定事件的惩罚因子,取值为[1,4],r为肯定事件数量,s为否定事件数量,u为不确定程度; 步骤3:计算整体信任值R;如公式17所示,其中fx表示内部信任值,Ext表示外部信任值,β控制内部信任值和外部信任值的比重;β取值范围0,0.1];R=min1,fx+βExt-0.517第二部分选取领导者;步骤4:根据信任值排序,随机选择分数大于中位数的矿工进入共识组;如公式18所示,其中SK为该矿工的私钥,INFO为当时的数学难题的Nonce随机数,result为哈希值,按哈希值最小的顺序选入共识组;result=VRF_hashSK,INFO18步骤5:通过工作量证明挖掘密钥块的矿工根据以下方法选取领导者;如公式19所示,其中X为共识组成员个数,reuslt为挖到密钥块的矿工根据VRF随机函数得到的哈希值,在共识组中第g个成员成为领导者;g=resultmod|X|19第三部分,基于RAFT的共识认证;步骤6:领导者发送微块给共识组;步骤7:共识组依次对微块进行验证,如果成功则签署自己的签名;步骤8:共识组发送微块给领导者;步骤9:领导者根据收到的微块计算此微块是否达到共识条件,即参与签名的共识成员超过一半,且其信任值大于等于共识成员信任值总和的23;步骤10:如果通过共识认证,领导者广播成功的微块和成功消息给共识组,否则广播微块和失败消息;一轮认证结束。

全文数据:基于可信性评估的区块链共识方法技术领域本专利属于区块链共识算法技术领域,研究了一种基于节点可信性的共识协议;旨在提高共识算法的安全性,解决因算力而产生的攻击问题。背景技术目前在基于算力的区块链系统中,有很多都旨在提高对算力攻击的防御能力,与之相关的主要有两个区块链系统,分别是Bitcoin-NG和ByzCoin。Bitcoin-NG提出了一个非常重要的概念,其比特币的工作证明有两个目的,一个是选举一个新的领导者,另一个是把新区块加到链上。为了提高交易的吞吐量,BitCoin-NG使用挖掘“密钥块”的过程仅为选择新领导,新的领导提交包含交易的“微块”。微块不需要工作量证明,这使得BitCoin-NG比传统比特币更加高效。但是BitCoin-NG提供了和传统比特币一样的一致性保证及概率性保证,因此其容易受到共识攻击。ByzCoin建立在BitCoin-NG和PBFTPracticalByzantineFaultTolerance,实用拜占庭容错算法的基础上。在ByzCoin中,经过挖掘找到密钥块的矿工在有限时间内成为见证人,每次创建一个新的密钥块时,都会通过一组证人之间的PBFT视图变更协议选出新的领导者。新领导者每隔几秒就会提交一个包含新事务的区块。但是,如果当前领导者是恶意的并且不产生微块,虽然系统可以检测到它,但是却没有其它惩罚,不能阻止其再次成为领导者,所以ByzCoin仍然遭受共识攻击。现有的基于当前工作量证明的比特币变体都依赖于这样的假设:攻击者不能拥有超过33%或者51%的算力,然而,随着比特币攻击的复杂性提高,例如闪电攻击,攻击者可以通过租赁矿工的算力来进行攻击,这些比特币变体系统都会受到攻击。而且比特币技术中所采用的非对称加密算法可能会随着数学、密码学和计算机技术的发展变得越来越脆弱。以现在的超级计算机为例,产生比特币SHA256哈希算法的一个哈希碰撞大约需要2^48年,但随着以后量子计算机等新型计算机技术发展起来,新技术对于这个哈希算法可能具有一定的破解能力。发明内容本发明提供一种基于信任值的加权投票共识方法,为区块链交易的安全提供保证。首先将节点按照信任值进行排名,当信任值达到一定的阈值,该节点才可能被随机选中进入共识组。每个共识组的成员都有与其信任值成正比的投票权重,这样保证了一个矿工的投票能力是取决于他的综合表现而不是某一瞬间的计算能力。节点的综合表现需要长时间的自律性表现的积累,所以,只有表现正常并且有规律的诚实节点,才可能成为共识组的一员。在系统的每一轮工作中,共识组中会有一个矿工被随机选中成为领导者,领导者产生微块、对交易进行打包,然后其它节点对微块进行共识。本方法有四大改进:第一,提供一种新型的领导者和共识组的创建方法,保证节点选择的随机性和公平性;第二,矿工的决策权及投票能力不是由其算力决定,而是需要其长时间的工作累计产生的信任值决定的。矿工的信任值取决于两点,有效的工作总量和工作的规律性。因此,当一个攻击者新加入系统,即使他拥有足够强大的算力,也没有办法立即成为领导者,因为他在之前没有有效的工作量;第三,当矿工偏离系统规定,产生负面行为,系统可以降低他的信任值,使其无法攻击系统。而其他基于POW公式的系统则只是通过撤销这些矿工的奖励来惩罚他们,并没有阻止其再次攻击系统;第四,提供了一种基于改进的raft的共识算法,用于提高交易吞吐量。附图说明图1为密钥块的结构图。图2为微块的结构图。图3为区块链存储结构图。图4为此共识协议的总流程图。图5为选取领导者的流程图。图6为RAFT共识协议流程图。具体实施方式下面结合附图和具体实施例对本发明进行详细说明。概念介绍:系统工作一轮时间:从一位领导者到下一位领导者的时间。密钥块:密钥块用于确定领导人和运用POW共识机制进行挖掘。在一个秘钥块中,Prevkeyblockhash是前一个密钥块的散列值,Nonce是随机数,PK是矿工的公钥,R是信任值,Ksig是Prevkeyblockhash、Nonce、PK、R的散列值,Sigkeyblockagreement是此密钥块的被共识验证的签名。共识组组员通过检查Ksig的有效性验证密钥块。微块:微块是一个简单的块,每隔几秒就会验证一次。微块包括验证的历史交易。为了防止双重支出,每个微块在被接受之前都要被提议给共识组,如果微块被验证成功,则会成为区块链的一部分。微块结构如下:其中HKsig是当前有其对应的固定密钥块的散列值,Prevmicroblockhash是前一个固定在区块链中的微块的哈希值,TXs是一组Merkle树的交易,Msig是keyblockhash、Prevmicroblockhash、TXs的哈希值,Sigmicroblockaggrement是来自共识的签名。为了验证微块的有效性,共识组成员检查Msig的有效性,验证密钥块和前面的微块的散列值,并验证交易TXs。区块链:由密钥块和微块组成,密钥块可以决定预定数量的微块,微块与其对应的秘钥块组成一个大块,区块链由多个大块构成。本发明提供一种基于可信性评估的区块链共识协议方法,共分为三部分:信任评估机制、领导者的选择、基于改进的RAFT的共识算法。具体包括以下步骤:本共识机制第一部分,信任评估机制:步骤1:计算内部信任值。步骤1.1:计算由一个矿工在区块链中的所有时期创建的密钥块的平均值meank。如公式1所示,其中Ki表示在第i个大块中矿工创造的密钥块数量,L表示当前区块链的长度。步骤1.2:计算由一个领导者在区块链中的所有时期创建的微块的平均meanm。如公式2所示,其中mj表示在第j轮矿工所生产的微块被验证成功的数量。m表示一个领导者被预定的生成的微块数。N表示矿工被选为领导者的次数。步骤1.3:计算sk即meank的标准差。如公式3所示,其中c表示大块的大小,大块中包含系统预先定义数量的键块。t表示向上取整是长度为L的区块链中包含的大块数量。步骤1.4:计算sm即meanm的标准差。如公式4所示,其中N表示矿工被选为领导者的次数,mj表示在第j轮矿工所生产的微块被验证成功的数量。m表示一个领导者被预定的生成的微块数。步骤1.5:计算矿工定期为系统贡献算力的能力y1。如公式5所示,分子meank表示矿工生成的固定密钥块的百分比,表示矿工为整个系统贡献的有效工作的分数。在分母中sk是矿工生成的固定键块的标准偏差,表示矿工对每个块的贡献的规律性。它们共同保证了矿工的信任值是根据矿工的综合能力计算出来的。步骤1.6:计算领导者在选择微块时提交定义数量的微块的“规律性”y2。如果N=1,即此矿工当过领导者,那么如公式6所示,分母meanm表示生成的微块的百分比,在分母中sm是矿工生成的固定微块的标准差,表示矿工对每个块的贡献的规律性。如果N1,那么y2为1,如公式7所示。y2=17步骤1.7:计算矿工的综合能力x。如公式8所示,其中y1表示矿工定期为系统贡献算力的能力,y2表示领导者在选择微块时提交定义数量的微块的“规律性”,L为区块链总长度。x=y1y2L8步骤1.8:计算根据时间要求控制信任增长的趋势fx。fx的公式是一个sigmoid函数。如公式9所示,其中,α,λ为系统参数,可以调整参数来控制矿工信任值的变化的快慢,x为综合实力。可以用现在比特币的算力分布来模拟本方法中的算力分布,α=10000,λ=50000,根据算力最多的矿工达到最高信任值一般为0.8所需要的时间来选择。步骤2:计算外部信任值,外部信任值表示为目标矿工在进行历史交易中的信任情况,取值为[0,1],信任值为1表示对目标矿工完全信任,信任值为0表示目标矿工为恶意矿工,信任值为0.5则表示对目标矿工的信任度没有把握。步骤2.1:本方法使用三元组T={b,d,u}来描述矿工的信任评价。b、d、u分别代表对目标矿工的信任程度,不信任程度和不确定程度。三者满足的关系如公式11所示:b+d+u=1,{b,d,u}∈[0,1]11步骤2.2:计算调控因子调控网络中的不确定因素wc。如公式12所示,在一轮交易时间内,目标矿工的交易数量为E,如果交易对方对交易有异议则会发送发警告消息给目标矿工,我们又称否定事件,否定事件数量为s,肯定事件r,s和r都必须小于E。步骤2.3:计算b、d、u。如公式131415所示,其中p表示对矿工否定事件的惩罚因子,取值大于1,一般取值为[1,4],r为肯定事件数量,s为否定事件数量,wc是于步骤2.2计算出的调控因子调控网络中的不确定因素的值。步骤2.4:计算外部信任值Ext。如公式16所示,其中p表示对矿工否定事件的惩罚因子,取值为[1,4],r为肯定事件数量,s为否定事件数量,u为不确定程度。步骤3:计算整体信任值R。如公式17所示,其中fx表示内部信任值,Ext表示外部信任值,β控制内部信任值和外部信任值的比重。β取值范围0,0.1],因为如果外部的恶意矿工很多会恶意诋毁一个矿工,控制外部信任值可以防止他人污蔑。R=min1,fx+βExt-0.517第二部分选取领导者。步骤4:根据信任值排序,随机选择分数大于中位数的矿工进入共识组。如公式18所示,其中SK为该矿工的私钥,INFO为当时的数学难题的Nonce随机数,result为哈希值,按哈希值最小的顺序选入共识组。result=VRF_hashSK,INFO18步骤5:通过工作量证明挖掘密钥块的矿工根据以下方法选取领导者。如公式19所示,其中X为共识组成员个数,reuslt为挖到密钥块的矿工根据VRF随机函数得到的哈希值,在共识组中第g个成员成为领导者。g=resultmod|X|19第三部分,基于RAFT的共识认证。步骤6:领导者发送微块给共识组。步骤7:共识组依次对微块进行验证,如果成功则签署自己的签名。步骤8:共识组发送微块给领导者。步骤9:领导者根据收到的微块,计算此微块是否达到共识条件,即参与签名的共识成员超过一半。且其信任值值为总共识成员信任值和的23或者以上。步骤10:如果通过共识认证,领导者广播成功的微块和成功消息给共识组,否则广播微块和失败消息。一轮认证结束。

权利要求:1.一种基于可信性评估的区块链共识协议,其特点在于包括以下步骤:步骤1:计算内部信任值;步骤1.1:计算由一个矿工在区块链中的所有时期创建的密钥块的平均值meank;如公式1所示,其中Ki表示在第i个大块中矿工创造的密钥块数量,L表示当前区块链的长度;步骤1.2:计算由一个领导者在区块链中的所有时期创建的微块的平均meanm;如公式2所示,其中mj表示在第j轮矿工所生产的微块被验证成功的数量;m表示一个领导者被预定的生成的微块数;N表示矿工被选为领导者的次数;步骤1.3:计算sk即meank的标准差;如公式3所示,其中c表示大块的大小,大块中包含系统预先定义数量的键块;t表示向上取整是长度为L的区块链中包含的大块数量;步骤1.4:计算sm即meanm的标准差;如公式4所示,其中N表示矿工被选为领导者的次数,mj表示在第j轮矿工所生产的微块被验证成功的数量;m表示一个领导者被预定的生成的微块数;步骤1.5:计算矿工定期为系统贡献算力的能力y1;如公式5所示,分子meank表示矿工生成的固定密钥块的百分比,表示矿工为整个系统贡献的有效工作的分数;在分母中sk是矿工生成的固定键块的标准偏差,表示矿工对每个块的贡献的规律性;它们共同保证了矿工的信任值是根据矿工的综合能力计算出来的;步骤1.6:计算领导者在选择微块时提交定义数量的微块的“规律性”y2;如果N=1,即此矿工当过领导者,那么如公式6所示,分母meanm表示生成的微块的百分比,在分母中sm是矿工生成的固定微块的标准差,表示矿工对每个块的贡献的规律性;如果N1,那么y2为1,如公式7所示;y2=17步骤1.7:计算矿工的综合能力x;如公式8所示,其中y1表示矿工定期为系统贡献算力的能力,y2表示领导者在选择微块时提交定义数量的微块的“规律性”,L为区块链总长度;x=y1y2L8步骤1.8:计算根据时间要求控制信任增长的趋势fx;fx的公式是一个sigmoid函数;如公式9所示,其中,α,λ为系统参数,x为综合实力;α=10000,λ=50000;步骤2:计算外部信任值,外部信任值表示为目标矿工在进行历史交易中的信任情况,取值为[0,1],信任值为1表示对目标矿工完全信任,信任值为0表示目标矿工为恶意矿工,信任值为0.5则表示对目标矿工的信任度没有把握;步骤2.1:本方法使用三元组T={b,d,u}来描述矿工的信任评价;b、d、u分别代表对目标矿工的信任程度,不信任程度和不确定程度;三者满足的关系如公式11所示:b+d+u=1,{b,d,u}∈[0,1]11步骤2.2:计算调控因子调控网络中的不确定因素wc;如公式12所示,在一轮交易时间内,目标矿工的交易数量为E,如果交易对方对交易有异议则会发送发警告消息给目标矿工,又称否定事件,否定事件数量为s,肯定事件r,s和r都必须小于E;步骤2.3:计算b、d、u;如公式131415所示,其中p表示对矿工否定事件的惩罚因子,取值为[1,4],r为肯定事件数量,s为否定事件数量,wc是于步骤2.2计算出的调控因子调控网络中的不确定因素的值;步骤2.4:计算外部信任值Ext;如公式16所示,其中p表示对矿工否定事件的惩罚因子,取值为[1,4],r为肯定事件数量,s为否定事件数量,u为不确定程度;步骤3:计算整体信任值R;如公式17所示,其中fx表示内部信任值,Ext表示外部信任值,β控制内部信任值和外部信任值的比重;β取值范围0,0.1];R=min1,fx+βExt-0.517第二部分选取领导者;步骤4:根据信任值排序,随机选择分数大于中位数的矿工进入共识组;如公式18所示,其中SK为该矿工的私钥,INFO为当时的数学难题的Nonce随机数,result为哈希值,按哈希值最小的顺序选入共识组;result=VRF_hashSK,INFO18步骤5:通过工作量证明挖掘密钥块的矿工根据以下方法选取领导者;如公式19所示,其中X为共识组成员个数,reuslt为挖到密钥块的矿工根据VRF随机函数得到的哈希值,在共识组中第g个成员成为领导者;g=resultmod|X|19第三部分,基于RAFT的共识认证;步骤6:领导者发送微块给共识组;步骤7:共识组依次对微块进行验证,如果成功则签署自己的签名;步骤8:共识组发送微块给领导者;步骤9:领导者根据收到的微块,计算此微块是否达到共识条件,即参与签名的共识成员超过一半;且其信任值值为总共识成员信任值和的23或者以上;步骤10:如果通过共识认证,领导者广播成功的微块和成功消息给共识组,否则广播微块和失败消息;一轮认证结束。

百度查询: 北京工业大学 基于可信性评估的区块链共识方法

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。