一种基于时间限制的区块链共识机制
未命名
10-19
阅读:103
评论:0
1.本发明涉及区块链技术领域,具体涉及一种基于时间限制的区块链共识机制,同时应用币龄机制和奖惩机制提升共识性能。
背景技术:
2.自从2008年中本聪发表比特币白皮书(a peer-to-peer electronic cash system)以来,区块链技术就受到了很多学者的关注。区块链技术凭借其出中心化、可追溯、防篡改的优势受到越来越多的学者进行研究。区块链凭借其核心优势,可以在分布式系统中,通过数据加密、时间戳、分布式共识、经济激励等方式,实现基于去中心化信用的点对点交易、协调与协作,节点之间不需要相互信任,从而解决中心化机构普遍存在的高成本、低效率、数据存储不安全等问题。区块链技术在数字支付、金融服务、风险管理、物联网等领域拥有广阔的应用前景。区块链从可编程数字加密货币为主体特征的区块链1.0时代,到现在以编程金融为主要特征的区块链2.0时代,再到以可编程社会为重要特征的区块链3.0时代。区块链的发展离不开其核心技术之一的共识机制的支持,共识机制目的是使得去中心化的区块链系统能够对区块数据高效可靠地达成一致。然而共识机制的性能直接地影响到了区块链网络的去中心化程度,安全性以及可扩展性。共识机制的研究也就成为了区块链学习研究的热点问题。普遍认为区块链去中心化、安全性和可扩展性三者不可兼得,所以在不同的应用场景下,共识机制往往不同,合理地使用共识机制能够进一步提升区块链系统的整体性能,使得区块链技术发展更加迅速。随着区块链的发展,共识机制也层出不穷。目前区块链常用的共识机制主要有pow共识机制、pos共识机制、dpos共识机制,以及pbft共识机制等。pow(proof of work)即工作量证明,闻名于比特币。pow是指系统为达到某一目标而设置的度量方法。简单理解就是一份证明,用来确认你做过一定量的工作。监测工作的整个过程通常是极为低效的,而通过对工作的结果进行认证来证明完成了相应的工作量,则是一种非常高效的方式。pow是按劳分配,算力决定一切,谁的算力多谁记账的概率就越大。pos最早在2012年8月,由点点币(ppcoin,简称ppc)首次实现。ppc在sha-256哈希运算的难度方面引入了币龄(每个币每天产生1币龄)的概念,使得难度与交易输入的币龄成反比。在ppc中,币龄被定义为币的数量与币所拥有的天数的乘积,这使得币龄能够反映交易时刻用户所拥有的货币权益。pow共识机制,存在能耗高,浪费资源,过度依赖算力而导致军备竞赛的情况,为了解决能耗,军备竞赛等问题,pos通过区块链资金闭环,利用投注的资金来获得区块的优势,但与此带来无利害关系问题以及富越富问题。
技术实现要素:
3.本发明的目的是针对现有技术的不足,提供一种基于时间限制的区块链共识机制。
4.本发明解决其技术问题所采用的技术方案如下:
5.s1:系统计算一个最晚出块时间,通过相邻上个区块的出块时间,加上一个系统固
定时间,计算出相邻下个区块的最晚出块时间;
6.s2:通过奖惩机制和币龄机制,动态计算节点的出块难度值;
7.s3:通过节点找到有效nonce值的时间权重,根据时间权重随机选出出块节点;
8.s4:在极端情况下,如果所有节点在最晚出块时间内都没有找到有效nonce值,则结合每个节点的奖惩情况和节点寻找的最佳长度值,选取最优的节点,作为出块节点;
9.s5:根据节点的行为更新节点的奖惩值和币龄。
10.进一步的,步骤s2中动态计算节点的出块难度值,具体步骤实现:
11.(2.1)计算节点的奖励值;
12.(2.2)计算节点的惩罚值;
13.(2.3)根据奖励值和惩罚值并结合区块链网络的效率和安全性进行权衡,分别赋予奖励值和惩罚值权重系数,得出奖惩值;
14.(2.4)将节点持有的代币值和持有代币的时间乘积,后与系统设置最大币龄阈值进行比较,取较小值作为节点的币龄;
15.(2.5)根据币龄和奖惩值,再结合区块链网络的效率和安全性进行权衡,分别赋予奖惩值和币龄权重系数,得出节点的出块难度值target。
16.进一步的,步骤(2.3)中根据奖励值和惩罚值并结合区块链网络的效率和安全性进行权衡,分别赋予奖励值和惩罚值权重系数,其中:
17.奖惩值的计算公式如下:
[0018][0019]
其中代表节点i的奖励值,代表节点i的惩罚值,λ1和λ2分别代表奖励值和惩罚值的权重系数。
[0020]
进一步的,步骤(2.4)中根据节点当前持有的代币值和持有代币的时间乘积和系统设定的最大币龄阈值取较小值的过程具体为:
[0021][0022]
其中,n为代币数量,coini为代币i的值,tc为当前时间,tg为代币获得时间,maxcionage为系统最大币龄。
[0023]
进一步的,步骤(2.5)中根据币龄和奖惩值得出节点出块难度值target的过程具体为:
[0024]
首先获取到节点的奖惩值以及节点的币龄,将奖惩值和币龄基于权重相加,其计算公式如下:
[0025]
target=δ*ci+β*coinage
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(3)
[0026]
其中,target为节点的出块难度值,δ和β分别为出块难度值中奖惩值和币龄的权重系数,target越大,节点越容易找到符合难度值的nonce值,成为出块节点的概率也就变大;δ和β通过实验获取最佳数据匹配,且δ+β=1。
[0027]
进一步的,步骤s3中通过当前节点找到有效nonce值的时间权重,随机选出出块节点,具体通过以下子步骤实现:
[0028]
(3.1)基于当前节点动态计算的难度值target,并在当前节点的最晚出块时间limittime内,当前节点反复枚举改变nonce值;
[0029]
(3.2)在最晚出块时间内,找到符合自身难度值target的第一个节点,并将该时间记为firsttime,根据firsttime更新当前最晚出块时间;
[0030]
(3.3)所有在最晚出块时间内找到符合自身难度值target的节点,根据时间权重随机选取出块节点,因此节点越快找出符合自身难度值的nonce值,具有更大的概率成为出块节点。
[0031]
进一步的,步骤(3.1)中基于节点动态计算难度值target,并在节点的最晚出块时间limittime内,节点反复枚举改变nonce值的过程具体为:在最晚出块时间内,通过双哈希计算出哈希值与目标难度值比较,找到符合难度值比较公式的nonce值或者超出最晚出块时间停止,难度值比较公式如下:
[0032]
sha256(sha256(block||nonce))《target
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(4)
[0033]
其中,block是区块数据。
[0034]
进一步的,步骤(3.2)中,根据第一个找到的符合自身难度值的节点,再次更新最晚出块时间limittime,使得共识过程能二次加速,最晚出块时间的更新过程具体是:系统预设定一个最大延迟时间delaytime,表示在第一个找到符合自身难度值的节点的时间点后,其他节点仍然能够继续寻找nonce值的最大时间;limittime通过以下公式进行更新:
[0035]
limittime=min(limttime,firsttime+delaytime)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(5)。
[0036]
进一步的,步骤(3.3)中,所有在最晚出块时间内找到的符合难度值的节点都是出块节点的候选节点,并且越快找到符合的nonce值,该候选节点越大概率成为出块节点;候选节点i成为出块节点的概率公式如下所示:
[0037][0038]
其中ti为当前节点找到符合难度值的时间点,tk表示节点k找到符合难度值的时间点;n表示在最晚出块时间内找到符合难度值公式的节点个数。
[0039]
进一步的,步骤s4中,在极端情况下,如果所有节点在最晚出块时间内都没有找到有效的nonce值,选举出出块节点,具体通过以下子步骤实现:
[0040]
(4.1)节点在反复枚举改变nonce值的过程中记录自身的最优长度值;最优长度值是计算哈希过程中哈希值前导零最长的前导零长度;
[0041]
(4.2)在最晚出块时间内,所有节点都没有找到有效的nonce值,将节点的奖惩值和币龄以及最优长度值三者进行权重求和,得到一个out_value,最大的out_value对应的节点作为本轮的出块节点;
[0042]
(4.3)延长出块的最晚出块时间,在最晚出块时间内所有的节点都没能够找到自身合适的nonce值,说明最晚出块时间小于理想出块时间,需要延长最晚出块时间;
[0043]
奖惩值分为奖励值和惩罚值两个部分,奖励值与节点i共识过程中计算和验证的有效交易数量呈正相关,其计算公式如下所示:
[0044][0045]
其中,ni表示节点i最近一个单位时间内计算和验证的有效交易数量,δt表示一个单位时间,ω
k1
表示第k1个交易的权重,交易的权重与交易被验证的次数呈负相关,但大于零,其计算公式如下所示:
[0046][0047]
其中α表示常量值,t表示交易的验证次数,一个交易被验证的次数越多,交易权重越小,从而鼓励节点验证新的交易,有利于避免节点lazy tips行为;节点i初始状态下,节点未验证任何交易信息,所以
[0048]
惩罚值与节点i的恶意行为和数量呈负相关,其计算公式如下所示:
[0049][0050]
其中mi表示节点i进行的恶意行为的总数,t表示当前时间点,t
k2
表示节点i进行第k2次恶意行为的时间点,α(θ)表示恶意行为θ的惩罚系数,节点的恶意行为性质不同,惩罚系数不同;惩罚系数的计算公式如下所示:
[0051][0052]
由(9)可知恶意行为会随着时间的推移而减小,当恶意行为发生的时刻,的值会接近负无穷,从而导致节点i的出块难度值急剧增加,恶意节点无法继续进行攻击;通过惩罚值的设置能够有效及时阻止恶意行为;out_value的计算公式如下所示:
[0053][0054]
其中l代表节点的最优长度值,c1、c2、c3分别代表奖励值、惩罚值和最优长度值的权重系数,且c1+c2+c3=1。
[0055]
本发明的有益效果如下:
[0056]
首先,通过上个区块计算出最晚出块时间,控制计算随机值的时间来控制计算次数,减小计算中带来的电力消耗;其次,通过利用奖惩机制和币龄权益机制,动态的调整每个节点的出块难度,在最晚出块时间和第一个出块时间后的额外时间中较小值内,节点寻找符合自身难度要求的随机值。根据节点的行为,记录节点本轮的奖励值和惩罚值,从而影响节点的出块难度;最后,在时间范围内找到随机数的节点都将获得相应的奖励,更具计算随机值的时间权重随机的选出记账的节点。本发明使得出块时间更加稳定,减小了电力消耗,同时引入奖惩机制,引导节点进行诚实行为,使得系统更加稳定,通过寻找时间权重随机选取记账节点,增加了随机性,在一定程度上增加了公平性,有利于缓解富者越富问题,提升了节点的积极性。
具体实施方式
[0057]
下面结合实施例对本发明作进一步说明。
[0058]
一种基于时间限制的区块链共识机制。
[0059]
本发明解决其技术问题所采用的技术方案如下:
[0060]
s1:系统计算一个最晚出块时间,通过相邻上个区块的出块时间,加上一个系统固定时间,计算出相邻下个区块的最晚出块时间;
[0061]
s2:通过奖惩机制和币龄机制,动态计算节点的出块难度值;
[0062]
s3:通过节点找到有效nonce值的时间权重,根据时间权重随机选出出块节点;增
加了出块节点的随机性,做到计算随机的时间可控,减小电力消耗;
[0063]
s4:在极端情况下,如果所有节点在最晚出块时间内都没有找到有效nonce值,则结合每个节点的奖惩情况和节点寻找的最佳长度值,选取最优的节点,作为出块节点;
[0064]
s5:根据节点的行为更新节点的奖惩值和币龄。
[0065]
希望通过节点保持诚实行为,获得奖励值,而节点如果有不良行为,哈希计算难度值会有相应的提高。这种机制能将诚实节点消耗更少的资源,同时迫使恶意节点增加攻击成本,有利于区块链系统的稳定。
[0066]
进一步地,s2中动态计算节点的出块难度值具体通过以下子步骤实现:
[0067]
(2.1)计算节点的奖励值,奖励值会根据节点的行为动态变化,诚实的行为,即遵守系统规则进行共识过程,会随着时间推移增加奖励值;
[0068]
(2.2)计算节点的惩罚值,惩罚值和奖励值一样也是动态变化的,如果节点有不诚实行为,如lazy tips或者double-spending,则惩罚值就会增加;
[0069]
(2.3)根据奖励值和惩罚值并结合区块链网络的效率和安全性进行权衡,分别赋予奖励值和惩罚值权重系数,得出奖惩值;
[0070]
(2.4)将节点持有的代币值和持有代币的时间乘积,后与系统设置最大币龄阈值进行比较,取较小值作为节点的币龄。
[0071]
(2.5)根据币龄和奖惩值,再结合区块链网络的效率和安全性进行权衡,分别赋予奖惩值和币龄权重系数,得出节点的出块难度值target。
[0072]
进一步地,所述步骤(2.1)和(2.2)中计算节点的惩罚值的过程具体为:利用节点行为监测机制,区分节点的诚实行为和不诚实行为,诚实行为可以增加节点的奖励值,而不诚实行为会将增加节点的惩罚值。其中诚实行为表现在节点共识过程中计算和验证的有效交易数量;而不诚实行为主要分为两种,一种是在共识的过程中的lazy tips和double-spending的行为,系统根据不同的不诚实行为动态调整惩罚系数。初始状态节点的奖励值和惩罚值都设为零。
[0073]
进一步地,所述步骤(2.3)中根据奖励值和惩罚值并结合区块链网络的效率和安全性进行权衡,分别赋予奖励值和惩罚值权重系数的过程具体为:提升区块链网络的安全性而牺牲可容忍的共识效率降低可以适当增加惩罚值权重λ2,而区块链网络状态良好则可以适当增加奖励值权重系数。
[0074]
奖惩值的计算公式如下:
[0075][0076]
其中代表节点i的奖励值,代表节点i的惩罚值,λ1和λ2分别代表奖励值和惩罚值的权重系数。
[0077]
进一步地,所述步骤(2.4)中根据节点当前持有的代币值和持有代币的时间乘积和系统设定的最大币龄阈值取较小值的过程具体为:
[0078]
首先计算节点所有代币值和持有代币的时间乘积;
[0079]
然后将代币值和代币持有时间的乘积,与系统设定的最大币龄阈值比较;节点的币龄取两者之间的较小值。这样的优势是有利于缓解pos共识机制中“富者越富”的问题,其计算公式如下:
[0080][0081]
其中,n为代币数量,coini为代币i的值,tc为当前时间,tg为代币获得时间,maxcionage为系统最大币龄
[0082]
进一步地,所述步骤(2.5)中根据币龄和奖惩值得出节点出块难度值target的过程具体为:
[0083]
首先获取到节点的奖惩值以及节点的币龄,将奖惩值和币龄基于权重相加,其计算公式如下:
[0084]
target=δ*ci+β*coinage
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(3)
[0085]
其中target为节点的出块难度值,δ和β分别为出块难度值中奖惩值和币龄的权重系数,target越大,节点越容易找到符合难度值的nonce,成为出块节点的概率也就变大。δ和β通过实验获取最佳数据匹配,且δ+β=1。
[0086]
进一步地,所述步骤s3中,通过当前节点找到有效nonce值的时间权重,随机选出出块节点,具体通过以下子步骤实现:
[0087]
(3.1)基于当前节点动态计算的难度值target,并在当前节点的最晚出块时间limittime内,当前节点反复枚举改变nonce值。
[0088]
(3.2)在最晚出块时间内,找到符合自身难度值target的第一个节点,并将该时间记为firsttime,根据firsttime更新当前最晚出块时间。
[0089]
(3.3)所有在最晚出块时间内找到符合自身难度值target的节点,根据时间权重随机选取出块节点,因此节点越快找出符合自身难度值的nonce值,具有更大的概率成为出块节点。
[0090]
进一步地,所述步骤(3.1)中基于节点动态计算的难度值target,并在节点的最晚出块时间limittime内,节点反复枚举改变nonce值的过程具体为:在最晚出块时间内,通过双哈希计算出哈希值与目标难度值比较,找到符合难度值比较公式的nonce值或者超出最晚出块时间停止,难度值比较公式如下:
[0091]
sha256(sha256(block||nonce))《target
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(4)
[0092]
其中,block是区块数据。
[0093]
进一步地,所述步骤(3.2)中,根据第一个找到符合自身难度值的节点,再次更新最晚出块时间limittime,使得共识过程能二次加速。最晚出块时间的更新过程具体是:系统预设定一个最大延迟时间delaytime,表示在第一个找到符合自身难度值的节点的时间点后,其他节点仍然可以继续寻找nonce值的最大时间。limittime通过以下公式进行更新:
[0094]
limittime=min(limttime,firsttime+delaytime)
ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(5)
[0095]
进一步地,所述步骤(3.3)中,所有在最晚出块时间内找到符合难度值的节点都有可能成为出块节点,并且越快找到符合的nonce值,节点越大概率成为出块节点。节点i成为出块节点的概率公式如下所示:
[0096][0097]
其中ti为当前节点找到符合难度值的时间点,tk表示节点k找到符合难度值的时间
点;n表示在最晚出块时间内找到符合难度值公式的节点个数。
[0098]
进一步地,所述步骤s4中,在极端情况下,如果所有节点在最晚出块时间内都没有找到有效的nonce值,选举出出块节点,具体通过以下子步骤实现:
[0099]
(4.1)节点在反复枚举改变nonce值的过程中记录自身的最优长度值。最优长度值是计算哈希过程中哈希值前导零最长的前导零长度。
[0100]
(4.2)在最晚出块时间内,所有节点都没有找到有效的nonce值,将节点的奖惩值和币龄以及最优长度值三者进行权重求和,得到一个out_value,最大的out_value对应的节点作为本轮的出块节点。
[0101]
(4.3)延长出块的最晚出块时间,在最晚出块时间内所有的节点都没能够找到自身合适的nonce值,说明最晚出块时间小于理想出块时间,需要延长最晚出块时间。
[0102]
进一步地,所述步骤(4.2)中,最大out_value通过结合奖惩值、币龄以及最优长度值三者综合考虑,奖惩值越大的节点说明节点越诚实,最优长度值表示本轮共识节点的付出,因此最优长度值与out_value正相关,从而增加节点参与共识的积极性。
[0103]
奖惩值分为奖励值和惩罚值两个部分,奖励值与节点i共识过程中计算和验证的有效交易数量呈正相关。其计算公式如下所示:
[0104][0105]
其中ni表示节点i最近一个单位时间内计算和验证的有效交易数量,δt表示一个单位时间,ω
k1
表示第k1个交易的权重,交易的权重与交易被验证的次数呈负相关,但大于零,其计算公式如下所示:
[0106][0107]
其中α表示常量值,t表示交易的验证次数,一个交易被验证的次数越多,交易权重越小,从而鼓励节点验证新的交易,有利于避免节点lazy tips行为。节点i初始状态下,节点未验证任何交易信息,所以
[0108]
惩罚值与节点i的恶意行为和数量呈负相关,其计算公式如下所示:
[0109][0110]
其中mi表示节点i进行的恶意行为的总数,t表示当前时间点,t
k2
表示节点i进行第k2次恶意行为的时间点,α(θ)表示恶意行为θ的惩罚系数,节点的恶意行为性质不同,惩罚系数不同。惩罚系数的计算公式如下所示:
[0111][0112]
由(4)可知恶意行为会随着时间的推移而减小,当恶意行为发生的时刻,的值会接近负无穷,从而导致节点i的出块难度值急剧增加,恶意节点无法继续进行攻击。通过惩罚值的设置,可以及时有效地阻止恶意行为。out_value的计算公式如下所示:
[0113][0114]
其中l代表节点的最优长度值,c1、c2、c3分别代表奖励值、惩罚值和最优长度值的
权重系数,且c1+c2+c3=1。
技术特征:
1.一种基于时间限制的区块链共识机制,其特征在于包括如下步骤:s1:系统计算一个最晚出块时间,通过相邻上个区块的出块时间,加上一个系统固定时间,计算出相邻下个区块的最晚出块时间;s2:通过奖惩机制和币龄机制,动态计算节点的出块难度值;s3:通过节点找到有效nonce值的时间权重,根据时间权重随机选出出块节点;s4:在极端情况下,如果所有节点在最晚出块时间内都没有找到有效nonce值,则结合每个节点的奖惩情况和节点寻找的最佳长度值,选取最优的节点,作为出块节点;s5:根据节点的行为更新节点的奖惩值和币龄。2.根据权利要求1所述的一种基于时间限制的区块链共识机制,其特征在于步骤s2中动态计算节点的出块难度值,具体步骤实现:(2.1)计算节点的奖励值;(2.2)计算节点的惩罚值;(2.3)根据奖励值和惩罚值并结合区块链网络的效率和安全性进行权衡,分别赋予奖励值和惩罚值权重系数,得出奖惩值;(2.4)将节点持有的代币值和持有代币的时间乘积,后与系统设置最大币龄阈值进行比较,取较小值作为节点的币龄;(2.5)根据币龄和奖惩值,再结合区块链网络的效率和安全性进行权衡,分别赋予奖惩值和币龄权重系数,得出节点的出块难度值target。3.根据权利要求2所述的一种基于时间限制的区块链共识机制,其特征在于步骤(2.3)中根据奖励值和惩罚值并结合区块链网络的效率和安全性进行权衡,分别赋予奖励值和惩罚值权重系数,其中:奖惩值的计算公式如下:其中代表节点i的奖励值,代表节点i的惩罚值,λ1和λ2分别代表奖励值和惩罚值的权重系数。4.根据权利要求2或3所述的一种基于时间限制的区块链共识机制,其特征在于所述步骤(2.4)中根据节点当前持有的代币值和持有代币的时间乘积和系统设定的最大币龄阈值取较小值的过程具体为:其中,n为代币数量,coin
i
为代币i的值,t
c
为当前时间,t
g
为代币获得时间,maxcionage为系统最大币龄。5.根据权利要求4所述的一种基于时间限制的区块链共识机制,其特征在于所述步骤(2.5)中根据币龄和奖惩值得出节点出块难度值target的过程具体为:首先获取到节点的奖惩值以及节点的币龄,将奖惩值和币龄基于权重相加,其计算公式如下:target=δ*c
i
+β*coinage
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(3)其中,target为节点的出块难度值,δ和β分别为出块难度值中奖惩值和币龄的权重系数,target越大,节点越容易找到符合难度值的nonce值,成为出块节点的概率也就变大;δ
和β通过实验获取最佳数据匹配,且δ+β=1。6.根据权利要求1或5所述的一种基于时间限制的区块链共识机制,其特征在于所述步骤s3中通过当前节点找到有效nonce值的时间权重,随机选出出块节点,具体通过以下子步骤实现:(3.1)基于当前节点动态计算的难度值target,并在当前节点的最晚出块时间limittime内,当前节点反复枚举改变nonce值;(3.2)在最晚出块时间内,找到符合自身难度值target的第一个节点,并将该时间记为firsttime,根据firsttime更新当前最晚出块时间;(3.3)所有在最晚出块时间内找到符合自身难度值target的节点,根据时间权重随机选取出块节点,因此节点越快找出符合自身难度值的nonce值,具有更大的概率成为出块节点。7.根据权利要求6所述的一种基于时间限制的区块链共识机制,其特征在于所述步骤(3.1)中基于节点动态计算难度值target,并在节点的最晚出块时间limittime内,节点反复枚举改变nonce值的过程具体为:在最晚出块时间内,通过双哈希计算出哈希值与目标难度值比较,找到符合难度值比较公式的nonce值或者超出最晚出块时间停止,难度值比较公式如下:sha256(sha256(block||nonce))<target
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(4)其中,block是区块数据。8.根据权利要求7所述的一种基于时间限制的区块链共识机制,其特征在于所述步骤(3.2)中,根据第一个找到的符合自身难度值的节点,再次更新最晚出块时间limittime,使得共识过程能二次加速,最晚出块时间的更新过程具体是:系统预设定一个最大延迟时间delaytime,表示在第一个找到符合自身难度值的节点的时间点后,其他节点仍然能够继续寻找nonce值的最大时间;limittime通过以下公式进行更新:limittime=min(limttime,firsttime+delaytime)
ꢀꢀꢀꢀꢀꢀꢀꢀ
(5)。9.根据权利要求8所述的一种基于时间限制的区块链共识机制,其特征在于步骤(3.3)中,所有在最晚出块时间内找到的符合难度值的节点都是出块节点的候选节点,并且越快找到符合的nonce值,该候选节点越大概率成为出块节点;候选节点i成为出块节点的概率公式如下所示:其中t
i
为当前节点找到符合难度值的时间点,t
k
表示节点k找到符合难度值的时间点;n表示在最晚出块时间内找到符合难度值公式的节点个数。10.根据权利要求2或9所述的一种基于时间限制的区块链共识机制,其特征在于所述步骤s4中,在极端情况下,如果所有节点在最晚出块时间内都没有找到有效的nonce值,选举出出块节点,具体通过以下子步骤实现:(4.1)节点在反复枚举改变nonce值的过程中记录自身的最优长度值;最优长度值是计算哈希过程中哈希值前导零最长的前导零长度;(4.2)在最晚出块时间内,所有节点都没有找到有效的nonce值,将节点的奖惩值和币龄以及最优长度值三者进行权重求和,得到一个out_value,最大的out_value对应的节点
作为本轮的出块节点;(4.3)延长出块的最晚出块时间,在最晚出块时间内所有的节点都没能够找到自身合适的nonce值,说明最晚出块时间小于理想出块时间,需要延长最晚出块时间;奖惩值分为奖励值和惩罚值两个部分,奖励值与节点i共识过程中计算和验证的有效交易数量呈正相关,其计算公式如下所示:其中,n
i
表示节点i最近一个单位时间内计算和验证的有效交易数量,δt表示一个单位时间,ω
k1
表示第k1个交易的权重,交易的权重与交易被验证的次数呈负相关,但大于零,其计算公式如下所示:其中α表示常量值,t表示交易的验证次数,一个交易被验证的次数越多,交易权重越小,从而鼓励节点验证新的交易,有利于避免节点lazy tips行为;节点i初始状态下,节点未验证任何交易信息,所以惩罚值与节点i的恶意行为和数量呈负相关,其计算公式如下所示:其中m
i
表示节点i进行的恶意行为的总数,t表示当前时间点,t
k2
表示节点i进行第k2次恶意行为的时间点,α(θ)表示恶意行为θ的惩罚系数,节点的恶意行为性质不同,惩罚系数不同;惩罚系数的计算公式如下所示:由(9)可知恶意行为会随着时间的推移而减小,当恶意行为发生的时刻,的值会接近负无穷,从而导致节点i的出块难度值急剧增加,恶意节点无法继续进行攻击;通过惩罚值的设置能够有效及时阻止恶意行为;out_value的计算公式如下所示:其中l代表节点的最优长度值,c1、c2、c3分别代表奖励值、惩罚值和最优长度值的权重系数,且c1+c2+c3=1。
技术总结
本发明提出了一种基于时间限制的区块链共识机制。本发明包括了以下步骤:S1:系统计算一个最晚出块时间,通过相邻上个区块的出块时间,加上一个系统固定时间,计算出相邻下个区块的最晚出块时间;S2:通过奖惩机制和币龄机制,动态计算节点的出块难度值;S3:通过节点找到有效nonce值的时间权重,根据时间权重随机选出出块节点;S4:在极端情况下,如果所有节点在最晚出块时间内都没有找到有效nonce值,则结合每个节点的奖惩情况和节点寻找的最佳长度值,选取最优的节点,作为出块节点;S5:根据节点的行为更新节点的奖惩值和币龄。本发明能将诚实节点消耗更少的资源,同时迫使恶意节点增加攻击成本,有利于区块链系统的稳定。有利于区块链系统的稳定。
技术研发人员:张大兴 徐思豪 李强 韩建平
受保护的技术使用者:杭州电子科技大学上虞科学与工程研究院有限公司
技术研发日:2023.06.05
技术公布日:2023/10/15
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
