CN114362963A - 基于算力证明的治未病场景下联盟链主节点选举算法 - Google Patents
基于算力证明的治未病场景下联盟链主节点选举算法 Download PDFInfo
- Publication number
- CN114362963A CN114362963A CN202210019139.5A CN202210019139A CN114362963A CN 114362963 A CN114362963 A CN 114362963A CN 202210019139 A CN202210019139 A CN 202210019139A CN 114362963 A CN114362963 A CN 114362963A
- Authority
- CN
- China
- Prior art keywords
- nodes
- node
- voting
- algorithm
- calculation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000004364 calculation method Methods 0.000 title claims abstract description 29
- 201000010099 disease Diseases 0.000 title claims abstract description 10
- 208000037265 diseases, disorders, signs and symptoms Diseases 0.000 title claims abstract description 10
- 230000003449 preventive effect Effects 0.000 claims abstract description 12
- 230000007246 mechanism Effects 0.000 claims abstract description 6
- 238000000034 method Methods 0.000 claims description 6
- 230000008859 change Effects 0.000 claims description 3
- 238000012795 verification Methods 0.000 claims 1
- 238000005516 engineering process Methods 0.000 abstract description 3
- 238000013500 data storage Methods 0.000 abstract 1
- 238000011156 evaluation Methods 0.000 description 2
- 238000013475 authorization Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000006806 disease prevention Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012856 packing Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000010187 selection method Methods 0.000 description 1
Images
Abstract
本发明公开了一种基于算力证明的治未病场景下联盟链主节点选举算法。该算法通过算力证明机制和投票选举机制筛选出综合能力较强的节点,节点根据场景需求完成相应难度的计算任务,确保自身能够满足最低算力需求,然后通过请求投票成为主节点,只有获得超过半数节点投票的节点才能够被承认为主节点。该算法通过非对称加密技术和数字签名技术保证在联盟链环境下的网络安全,充分考虑恶意节点的作恶可能性,保障主节点选取的公平有效。该算法可以代替联盟链下实用拜占庭容错算法中原有的基于视图编号的顺序选取主节点方式,提高区块链网络的安全性和稳定性,更好地满足治未病场景下的数据保存需求。
Description
技术领域
本发明涉及区块链技术领域,特别是涉及区块链共识算法。
背景技术
在对此方法的研究和实践过程中,本发明的发明人发现:治未病场景下联盟链的主流共识算法实用拜占庭容错算法在主节点选取方式上存在安全性问题。主节点作为特殊的记账节点,需要承担额外的任务,包括接受客户端的消息,打包区块和广播区块等。一方面,主节点比记账节点多了计算和通信的任务,如果主节点的硬件性能和网络条件无法实现快速完成任务的要求,会带来不可避免的性能下降。另一方面,如果主节点不具备稳定地提供服务的能力,或是针对网络攻击的抗性较差,导致主节点因故障下线或是因网络攻击而失去服务能力这一现象频繁地发生。实用拜占庭容错算法基于视图编号轮流担任主节点的主节点选取方式的问题在于,一方面,随着网络的运行每个节点都会有成为主节点的机会,这意味着如果不能够保证网络内所有节点都稳定提供服务(显然这是不现实的),那么整个网络都需要承担额外的视图切换的开销。另一方面,这种主节点选取的方式严格遵循编号顺序,这意味着攻击者基于当前主节点的编号可以很容易地推算出后续将成为主节点的一组节点编号顺序,这意味着攻击者可以很精准地攻击对应节点使其失去服务能力,这样在接下连续的多个视图内区块链网络都失去了服务能力,形成瘫痪整个网络的效果。或是恶意节点在成为主节点之后,攻击编号在自己之后的多个节点,影响视图切换过程的执行,延长自己担任主节点的时间,便于实现自己的意图。
发明内容
为了克服上述现有技术的不足,本发明提供了一种基于算力证明的治未病场景下联盟链主节点选举算法。
本发明所采用的技术方案是:
基于算力证明的治未病场景下联盟链主节点选举算法,包括如下步骤:
第一步,读取配置文件,获得当前网络难度值和所有节点偏差值列表。
第二步,构造一种特殊的数据结构,不断改变随机数后使用SHA256算法,找到这样一个使得该数据结构的哈希值小于目标值的随机数,作为算力证明的结果。
第三步,若在完成算力证明前收到其他节点的有效投票请求,则为其投票并停止进行算力证明,否则成为候选人并为自己投票,凭借算力证明结果向其他节点发送投票请求。
第四步,收到超过一半节点投票的节点广播投票凭证宣布自身当选主节点,如果超时则重新开始选举。
与现有技术相比,本发明的有益效果是能够筛选出计算能力、网络情况、稳定性和抗攻击能力具备优势的主节点。算力证明机制通过完成计算任务保证了只有具备一定程度的计算能力的节点才能够作为主节点选举的候选人请求其余节点投票。而在网络内存在多个满足算力要求条件的节点的情况下,同一时间下多个节点成为候选人,此时网络状况更为良好的节点的请求能够更早地抵达其余节点,更有可能成为主节点。而且,联盟链环境下节点易于管理,基于授权方式的节点加入规则决定了通过线下完成节点性能评估的方式是可行的。通过节点性能评估,可以通过偏差值来决定网络对于选择该节点为主节点的倾向性。所以最终选出来的节点能够满足区块链网络对于主节点应具备的性能要求。
附图说明
图1为本发明基于算力证明的治未病场景下联盟链主节点选举算法的流程图。
图2为本发明基于算力证明的治未病场景下联盟链主节点选举算法中算力机制的流程图;
具体实施方式
基于算力证明的治未病场景下联盟链主节点选举算法,包括如下步骤:
第一步,读取配置文件,获得当前网络难度值和所有节点偏差值列表。
第二步,构造一种特殊的数据结构,不断改变随机数后使用SHA256算法,找到这样一个使得该数据结构的哈希值小于目标值的随机数,作为算力证明的结果。进一步地,具体方法如下:
(1)每个节点构造一个特殊的数据结构,属性如下:
(2)计算算力证明需要的目标值,计算公式如下:
h=1<<(256-diff-offset)
其中diff表示网络难度值,offset表示偏差值。
(3)随机数从0开始递增,每次改变随机数之后计算数据结构的哈希值,直到找到一个使得哈希值小于目标值的随机数。
第三步,若在完成算力证明前收到其他节点的有效投票请求,则为其投票并停止进行算力证明,否则成为候选人并为自己投票,凭借算力证明结果向其他节点发送投票请求。进一步地,具体方法如下:
(1)在完成算力证明之前收到其他节点有效的算力证明结果,则将票投给该节点,并停止算力证明的计算。
(2)在完成算力证明时仍没有投出自己的票,则将票投给自己,并向其余节点广播算力证明结果。
(3)已经投票之后收到其他节点有效的算力证明结果,不响应其投票请求。
第四步,收到超过一半节点投票的节点广播投票凭证宣布自身当选主节点,如果超时则重新开始选举。
下面结合附图及具体实施例对本发明作进一步详细描述。
实施例
结合图2,本发明基于算力证明的治未病场景下联盟链主节点选举算法,算力证明步骤如下:
(1)每个节点构造一个特殊的数据结构,属性如下:
前一区块哈希值为″0000000000000000000000000000000000000000000000000000000000000000″,节点编号分别为0、1、2,节点签名为每个节点用RSA算法对前一区块哈希值的签名,网络难度值为10,偏差值均为0,,计算能力等级分别为强、中、弱,时间戳为当前机器时间。
(2)计算算力证明需要的目标值,计算公式如下:
h=1<<(256-diff-offset)
其中diff表示网络难度值,offset表示偏差值。
(3)随机数从0开始递增,每次改变随机数之后计算数据结构的哈希值,直到找到一个使得哈希值小于目标值的随机数。最后编号为0的节点耗费61ms,编号为1的节点耗费1719ms,编号为2的节点耗费4368ms。
结合图1,本发明基于算力证明的治未病场景下联盟链主节点选举算法,投票选举步骤如下:
(1)在完成算力证明之前收到其他节点有效的算力证明结果,则将票投给该节点,并停止算力证明的计算,此处为编号为1和2的节点。
(2)在完成算力证明时仍没有投出自己的票,则将票投给自己,并向其余节点广播算力证明结果,此处为编号为0的节点。
(3)已经投票之后收到其他节点有效的算力证明结果,不响应其投票请求,此处没有这种情况出现。
最后由计算能力为强的编号为0的节点成功当选主节点。
Claims (3)
1.一种基于算力证明的治未病场景下联盟链主节点选举算法,其特征在于,包括如下步骤:
第一步,读取配置文件,获得当前网络难度值和所有节点偏差值列表。
第二步,构造一种特殊的数据结构,不断改变随机数后使用SHA256算法,找到这样一个使得该数据结构的哈希值小于目标值的随机数,作为算力证明的结果。
第三步,若在完成算力证明前收到其他节点的有效投票请求,则为其投票并停止进行算力证明,否则成为候选人并为自己投票,凭借算力证明结果向其他节点发送投票请求。
第四步,收到超过一半节点投票的节点广播投票凭证宣布自身当选主节点,如果超时则重新开始选举。
3.根据权利要求1所述的基于算力证明的治未病场景下联盟链主节点选举算法,其特征在于,第三步和第四步所述的投票选举机制,方法如下:
(1)在完成算力证明之前收到其他节点有效的算力证明结果,则将票投给该节点,并停止算力证明的计算。
(2)在完成算力证明时仍没有投出自己的票,则将票投给自己,并向其余节点广播算力证明结果。
(3)已经投票之后收到其他节点有效的算力证明结果,不响应其投票请求。
(4)收到超过一半节点的投票的节点广播签名列表,宣布自身当选主节点,其余节点验证通过之后承认其主节点身份,否则超时触发重新选举。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210019139.5A CN114362963A (zh) | 2022-01-07 | 2022-01-07 | 基于算力证明的治未病场景下联盟链主节点选举算法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210019139.5A CN114362963A (zh) | 2022-01-07 | 2022-01-07 | 基于算力证明的治未病场景下联盟链主节点选举算法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114362963A true CN114362963A (zh) | 2022-04-15 |
Family
ID=81106329
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210019139.5A Pending CN114362963A (zh) | 2022-01-07 | 2022-01-07 | 基于算力证明的治未病场景下联盟链主节点选举算法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114362963A (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107395403A (zh) * | 2017-07-07 | 2017-11-24 | 北京区块链云科技有限公司 | 一种适用于大规模电子商务的基于信用的区块链共识方法 |
CN110796547A (zh) * | 2019-10-30 | 2020-02-14 | 桂林电子科技大学 | 一种基于联盟区块链的改进的实用拜占庭容错系统 |
US20200059369A1 (en) * | 2017-05-16 | 2020-02-20 | Peking University Shenzhen Graduate School | Determining consensus by parallel proof of voting in consortium blockchain |
CN110910139A (zh) * | 2019-12-04 | 2020-03-24 | 北汽蓝谷信息技术有限公司 | 基于区块链的可信硬件与高性能去中心化匿名加密的算法 |
US20210021419A1 (en) * | 2018-09-07 | 2021-01-21 | Tencent Technology (Shenzhen) Company Limited | Method and apparatus for electing representative node device, computer device, and storage medium |
CN212724738U (zh) * | 2020-05-11 | 2021-03-16 | 云不凡(厦门)智慧科技有限公司 | 一种全民健康保障管理系统 |
CN113407632A (zh) * | 2021-06-26 | 2021-09-17 | 南京搜文信息技术有限公司 | 一种基于pbft的委托权益证明区块链共识算法 |
-
2022
- 2022-01-07 CN CN202210019139.5A patent/CN114362963A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200059369A1 (en) * | 2017-05-16 | 2020-02-20 | Peking University Shenzhen Graduate School | Determining consensus by parallel proof of voting in consortium blockchain |
CN107395403A (zh) * | 2017-07-07 | 2017-11-24 | 北京区块链云科技有限公司 | 一种适用于大规模电子商务的基于信用的区块链共识方法 |
US20210021419A1 (en) * | 2018-09-07 | 2021-01-21 | Tencent Technology (Shenzhen) Company Limited | Method and apparatus for electing representative node device, computer device, and storage medium |
CN110796547A (zh) * | 2019-10-30 | 2020-02-14 | 桂林电子科技大学 | 一种基于联盟区块链的改进的实用拜占庭容错系统 |
CN110910139A (zh) * | 2019-12-04 | 2020-03-24 | 北汽蓝谷信息技术有限公司 | 基于区块链的可信硬件与高性能去中心化匿名加密的算法 |
CN212724738U (zh) * | 2020-05-11 | 2021-03-16 | 云不凡(厦门)智慧科技有限公司 | 一种全民健康保障管理系统 |
CN113407632A (zh) * | 2021-06-26 | 2021-09-17 | 南京搜文信息技术有限公司 | 一种基于pbft的委托权益证明区块链共识算法 |
Non-Patent Citations (3)
Title |
---|
SATHYA V 等: "Block Chain Based Cloud Computing Model on EVM Transactions for Secure Voting", 2019 3RD INTERNATIONAL CONFERENCE ON COMPUTING METHODOLOGIES AND COMMUNICATION (ICCMC), pages 1075 - 1079 * |
周艺华: "基于PBFT的联盟链共识算法", 计算机科学, vol. 48, no. 11, pages 133 - 141 * |
韩镇阳;宫宁生;任珈民;: "一种区块链实用拜占庭容错算法的改进", 计算机应用与软件, no. 02, pages 232 - 239 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210097537A1 (en) | Systems and methods for selecting and utilizing a committee of validator nodes in a distributed system | |
CN110289966B (zh) | 基于拜占庭容错的抗自适应攻击联盟链共识方法 | |
CN111131209B (zh) | 一种改进的高效共识方法、系统、计算机设备及存储介质 | |
CN112235379B (zh) | 一种区块链底层共享存储方法 | |
CN108881169A (zh) | 基于区块链的时间分发和同步方法及系统、数据处理系统 | |
Li et al. | An extensible consensus algorithm based on PBFT | |
CN109167660B (zh) | 选举代表节点设备方法、装置、计算机设备及存储介质 | |
CN113570357B (zh) | 一种动态分层的高效pbft算法 | |
CN114048517B (zh) | 区块链的双通道共识系统和方法、计算机可读存储介质 | |
CN111935207A (zh) | 基于改进型c4.5算法区块链系统共识方法 | |
CN113422805B (zh) | 一种基于可验证随机函数的分片共识方法 | |
CN112540926A (zh) | 一种基于区块链的资源分配公平的联邦学习方法 | |
CN109919760A (zh) | 基于投票机制的拜占庭容错共识算法 | |
CN112468255B (zh) | 基于网络共识结合vrf算法的区块链节点时间同步方法 | |
CN113014635A (zh) | 区块链系统的节点类型划分方法、装置及区块链系统 | |
CN113141414A (zh) | 一种cnfs协议中区块链节点的分组多链异步共识方法 | |
CN115549931B (zh) | 一种基于拟态防御的拜占庭容错实现方法及系统 | |
CN113837758A (zh) | 一种区块链系统的共识方法及装置 | |
CN116094721A (zh) | 一种基于聚类的可扩展的分片共识算法 | |
CN113660125A (zh) | 一种基于随机可信委员会的共识方法及装置 | |
CN115766035A (zh) | 一种多节点的共识方法及系统 | |
CN110661656A (zh) | 一种区块链快速共识方法及装置 | |
CN114362963A (zh) | 基于算力证明的治未病场景下联盟链主节点选举算法 | |
CN116963077A (zh) | 一种面向频谱交易的区块链分片方法 | |
Zhou et al. | Vg-raft: An improved byzantine fault tolerant algorithm based on raft algorithm |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |