[发明专利]一种PBFT算法在区块链共识中的保活方法、区块链节点和存储介质在审
申请号: | 202211639135.3 | 申请日: | 2022-12-20 |
公开(公告)号: | CN116032921A | 公开(公告)日: | 2023-04-28 |
发明(设计)人: | 路京磊 | 申请(专利权)人: | 北京众享比特科技有限公司 |
主分类号: | H04L67/10 | 分类号: | H04L67/10;H04L41/00 |
代理公司: | 北京山允知识产权代理事务所(特殊普通合伙) 11741 | 代理人: | 胡冰;宋少华 |
地址: | 100016 北京市*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 pbft 算法 区块 共识 中的 方法 节点 存储 介质 | ||
本发明提出一种PBFT算法在区块链共识中的保活方法,包括:当节点View‑Change超时达不成共识时,判断是否有比当前节点共识过的区块号更高的节点;如果有,则获取最高共识过区块的所有COMMIT投票,以切换到区块号最高的区块重新开启共识。本发明还提出一种基于PBFT算法的区块链节点,以及一种区块链存储介质。本发明能够增加PBFT共识算法在区块链应用中的活性,或者可用性。
技术领域
本发明涉及区块链共识技术,更具体地,涉及一种PBFT算法在区块链共识中的保活方法、区块链节点和存储介质。
背景技术
PBFT(实用拜占庭容错,Practical Byzantine Fault Tolerance)是联盟链中很经典的共识算法,该算法的本质是对请求列表进行排序共识,最终得到一个全局有序的请求列表,在恶意节点不高于总数1/3的情况下,该算法能够同时保证安全性(Safety)和活性(Liveness)。
PBFT共识算法中通过View-Change机制来实现活性(Liveness),触发View-Change的核心因素只有一个:即节点认为在当前主节点的有限时间内,无法达成一致,则发起View-Change来切换主节点,当有2f+1个节点都发生View-Change要求切换到同一个视图时,View-Change达成,进入新一轮共识,新的主节点重新发起提案。如果新的主节点在有限时间内依然达不成共识,那么继续View-Change,直到能达成共识。
PBFT共识算法本身只是对客户端请求进行排序共识,但在应用在区块链时,需要进行一些变通,因为很多情况下只是达成交易集共识还不够,像以太坊,区块中除了需要有顺序一致的交易集合,还有一个状态集合,而状态集合的变化是在上一区块的基础上,执行所有交易集合中所有的交易来驱动的。区块hash是由交易树的树根hash,状态树的树根hash,以及其它一些变量序列化后再做hash得到的。所以除了共识交易集外,还要共识区块hash,才能最终达成一致的区块序列。
所以大多基于状态的区块链,在应用PBFT共识算法时,把PBFT的两轮共识做了以下变通:首先是当前轮的主节点提案交易集合,发起PRE-PREPARE,这一点与PBFT算法一致,然后副节点收到主节点收到的交易集合时,进行必要的检查,检查通过后,按PBFT共识算法,应该发起第一轮的PREPARE投票,但在区块链中可能会有两种不同的处理:一种是与PBFT算法一致,立即发起PREPARE投票,然后,在节点收集够2f+1个PREPARE投票后,执行所有交易,得到新的状态集合,并更新新的区块信息,然后在对区块hash进行投票,相当于PBFT的COMMIT投票阶段,这一轮投票结束,同一个区块hash依然能得到2f+1的投票,则认为区块共识通过。另一种,是收到主节点的PRE-PREPARE提案,先执行交易集合中的交易,执行完之后,得到新的状态集合并更新新区块的区块头信息,得到新的区块hash,然后各自发起PREPARE投票,这时投票的对象变成了新区块的hash,PREPARE投票收集到2f+1时,继续对区块hash进行COMMIT阶段投票,再次达成2f+1个投票,则区块共识通过。
无论是哪一种方案,COMMIT阶段都是针对应用了交易集合的新区块hash进行的投票。假如,总共4个节点(编号1,2,3,4),f=1,那么在第二轮投票时,其中两个节点(3,4)对新区块hash投票后,由于某些原因(比如节点crash)错过了另外两个节点的投票,过一段时间后节点又恢复运行了,那么就会形成2个节点(1,2)对新区块hash达成共识,2个节点(3,4)未达成共识的情况,后面就会基于不一致区块进行新一轮共识。
这样就会形成2v2的场景,PBFT的View-Change机制只能解决切换主节点的问题,却解决不了这种基于的区块号不一致的问题,最终会导致节点无法继续共识,失去活性。
发明内容
本发明要解决的是部分节点收集够PBFT共识中的COMMIT投票,部分节点未收集够COMMIT投票,后面不同节点基于不同的的前置状态去共识,最终无法通过View-Change达成一致的问题。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京众享比特科技有限公司,未经北京众享比特科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202211639135.3/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种虚拟现实教学模拟演示装置
- 下一篇:一种集装箱不发火地面及其制作方法