CN109039748B - 一种pbft协议动态增删节点的方法 - Google Patents
一种pbft协议动态增删节点的方法 Download PDFInfo
- Publication number
- CN109039748B CN109039748B CN201810906786.1A CN201810906786A CN109039748B CN 109039748 B CN109039748 B CN 109039748B CN 201810906786 A CN201810906786 A CN 201810906786A CN 109039748 B CN109039748 B CN 109039748B
- Authority
- CN
- China
- Prior art keywords
- configuration
- node
- nodes
- change
- sequence number
- 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.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/08—Configuration management of networks or network elements
- H04L41/0803—Configuration setting
- H04L41/0813—Configuration setting characterised by the conditions triggering a change of settings
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Hardware Redundancy (AREA)
Abstract
本发明公开一种PBFT协议动态增删节点的方法,首先,变更前的节点统一确定并执行到一个序列号,并进行一轮检查点验证。如果能够形成稳定检查点,向变更后的节点推送状态信息,使其同步到此状态。变更后的节点再进行检查点验证,如果能形成稳定检查点,确定主节点并发起视图变更,如果一切正常,变更后不再参加共识的节点便可以下线。如果过程中有异常,则放弃变更,仍然采用之前的节点进行共识。本发明解决了传统PBFT协议无法动态增加、删除节点的问题,提升了PBFT协议的可扩展性,增加了实用性。
Description
技术领域
本发明涉及区块链共识技术,尤其涉及一种PBFT(Practical Byzantine FaultTolerance实用拜占庭容错)协议动态增删节点的方法。
背景技术
拜占庭问题又称为拜占庭将军(Byzantine Generals Problem)问题,是LeslieLamport于1982年提出用来解释一致性问题的一个虚构模型。拜占庭是古代东罗马帝国的首都,由于地域宽广,守卫边境的多个将军(系统中的多个节点)需要通过信使来传递消息,达成某些一致的决定。但由于将军中可能存在叛徒(系统中节点出错),这些叛徒将努力向不同的将军发送不同的消息,试图会干扰一致性的达成。拜占庭问题即为在此情况下,如何让忠诚的将军们能达成行动的一致。
PBFT是Practical Byzantine Fault Tolerance的缩写,意为实用拜占庭容错算法。该算法是Miguel Castro(卡斯特罗)和Barbara Liskov(利斯科夫)在1999年提出来的,解决了原始拜占庭容错算法效率不高的问题,将算法复杂度由指数级降低到多项式级,使得拜占庭容错算法在实际系统应用中变得可行。该论文发表在1999年的操作系统设计与实现国际会议上(OSDI99)。OSDI99这篇论文描述了一种副本复制(replication)算法解决拜占庭容错问题。这篇论文中描述的算法可以工作在异步环境中,并且通过优化在早期算法的基础上把响应性能提升了一个数量级以上。
然而PBFT算法目前只允许固定的成员节点参与共识,不能动态增加、删除节点,这种状况对区块链的发展不利。
发明内容
本发明的目的是针对现有技术的不足,提供一种PBFT协议动态增删节点的方法,能够提升PBFT协议的可扩展性,增加其实用性。具体技术方案如下:
一种PBFT协议动态增删节点的方法,其特征在于,在该方法中,将在某一时刻提供共识服务的节点集定义为一个配置,将配置变更前的节点集定义为配置一,将配置变更后的节点集定义为配置二,该方法具体包括如下步骤:
S1:当需要进行配置变更时,配置一中的节点互相发送消息确定配置变更序列号;
S2:当配置一中的节点执行到确定的配置变更序列号的前一位时,配置一中的非拜占庭节点向配置二成员发送消息;
S3:配置二的节点收到来自配置一的节点的消息后,进行一轮视图变更,之后在配置一中不在配置二中的节点下线,配置二所有节点继续进行共识;如果视图变更失败,直接放弃此次配置变更。
进一步地,进行配置变更之前,配置一的节点将预先选择一个足够高的序列号,此序列号应该高到能够保证,当处理此消息的时候,共识还没有执行到此序列号,且此序列号是所有节点都将执行到的序列号。
进一步地,配置一的节点在执行到预先选择的配置变更序列号时,会进行一轮所有节点当前状态的比对,即检查点确认,如果不能形成稳定检查点,放弃此次配置变更。
进一步地,配置二的节点收到来自配置一中节点的消息,如果收齐了足够的一致消息,便将自身状态同步到配置一中非拜占庭节点的状态,保证了配置变更之后新配置中所有节点的起始状态一致。
进一步地,配置二的节点在收到配置一的消息之后,需要进行配置二节点状态的比对,检查是否能形成稳定检查点,如果不能形成稳定检查点,放弃此次配置变更。
本发明的有益效果是:本发明的PBFT协议动态增删节点的方法允许区块链系统在正常执行过程中,不需要下线节点便可进行节点的增加或者删除操作,提升了PBFT协议的可扩展性,增加了其实用性。
附图说明
图1为本发明的PBFT协议动态增删节点的方法的详细流程图。
具体实施方式
下面根据附图和优选实施例详细描述本发明,本发明的目的和效果将变得更加明白,以下结合附图和实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
一种PBFT协议动态增删节点的方法,在该方法中,将在某一时刻提供共识服务的节点集定义为一个配置,将配置变更前的节点集定义为配置一,将配置变更后的节点集定义为配置二,该方法具体包括如下步骤:
S1:当需要进行配置变更时,配置一中的节点互相发送消息确定配置变更序列号;
S2:当配置一中的节点执行到确定的配置变更序列号的前一位时,配置一中的非拜占庭节点向配置二成员发送消息;
S3:配置二的节点收到来自配置一的节点的消息后,进行一轮视图变更,之后在配置一中不在配置二中的节点下线,配置二所有节点继续进行共识;如果视图变更失败,直接放弃此次配置变更。
作为其中一种实施方式,进行配置变更之前,配置一的节点将预先选择一个足够高的序列号,此序列号应该高到能够保证,当处理此消息的时候,共识还没有执行到此序列号,且此序列号是所有节点都将执行到的序列号,具体如图1所示,从而保证了所有的配置一的节点都将同时进行配置变更。
作为其中一种实施方式,配置一的节点在执行到预先选择的配置变更序列号时,会进行一轮所有节点当前状态的比对,即检查点确认,如果不能形成稳定检查点,放弃此次配置变更,具体如图1所示,该轮确认能够避免拜占庭行为的出现。
作为其中一种实施方式,配置二的节点收到来自配置一中节点的消息,如果收齐了足够的一致消息,便将自身状态同步到配置一中非拜占庭节点的状态,具体如图1所示,保证了配置变更之后新配置中所有节点的起始状态一致。
作为其中一种实施方式,配置二的节点在收到配置一的消息之后,需要进行配置二节点状态的比对,检查是否能形成稳定检查点,如果不能形成稳定检查点,放弃此次配置变更,具体如图1所示,保证了配置变更后所有节点能够正常进行系统的共识工作。
本领域普通技术人员可以理解,以上所述仅为发明的优选实例而已,并不用于限制发明,尽管参照前述实例对发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实例记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在发明的精神和原则之内,所做的修改、等同替换等均应包含在发明的保护范围之内。
Claims (5)
1.一种PBFT协议动态增删节点的方法,其特征在于,在该方法中,将在某一时刻提供共识服务的节点集定义为一个配置,将配置变更前的节点集定义为配置一,将配置变更后的节点集定义为配置二,该方法具体包括如下步骤:
S1:当需要进行配置变更时,配置一中的节点互相发送消息确定配置变更序列号;
S2:当配置一中的节点执行到确定的配置变更序列号的前一位时,配置一中的非拜占庭节点向配置二成员发送消息;
S3:配置二的节点收到来自配置一的节点的消息后,进行一轮视图变更,之后在配置一中不在配置二中的节点下线,配置二所有节点继续进行共识;如果视图变更失败,直接放弃此次配置变更。
2.根据权利要求1所述的一种PBFT协议动态增删节点的方法,其特征在于,进行配置变更之前,配置一的节点将预先选择一个足够高的序列号,此序列号应该高到能够保证,当处理此消息的时候,共识还没有执行到此序列号,且此序列号是所有节点都将执行到的序列号。
3.根据权利要求1所述的一种PBFT协议动态增删节点的方法,其特征在于,配置一的节点在执行到预先选择的配置变更序列号时,会进行一轮所有节点当前状态的比对,即检查点确认,如果不能形成稳定检查点,放弃此次配置变更。
4.根据权利要求1所述的一种PBFT协议动态增删节点的方法,其特征在于,配置二的节点收到来自配置一中节点的消息,如果收齐了足够的一致消息,便将自身状态同步到配置一中非拜占庭节点的状态,保证了配置变更之后新配置中所有节点的起始状态一致。
5.根据权利要求1所述的一种PBFT协议动态增删节点的方法,其特征在于,配置二的节点在收到配置一的消息之后,需要进行配置二节点状态的比对,检查是否能形成稳定检查点,如果不能形成稳定检查点,放弃此次配置变更。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810906786.1A CN109039748B (zh) | 2018-08-10 | 2018-08-10 | 一种pbft协议动态增删节点的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810906786.1A CN109039748B (zh) | 2018-08-10 | 2018-08-10 | 一种pbft协议动态增删节点的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109039748A CN109039748A (zh) | 2018-12-18 |
CN109039748B true CN109039748B (zh) | 2021-09-03 |
Family
ID=64633429
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810906786.1A Active CN109039748B (zh) | 2018-08-10 | 2018-08-10 | 一种pbft协议动态增删节点的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109039748B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102170347B1 (ko) * | 2019-03-18 | 2020-10-28 | 알리바바 그룹 홀딩 리미티드 | 뷰 변경 프로토콜을 종료하기 위한 시스템 및 방법 |
EP3593249B1 (en) * | 2019-03-18 | 2021-06-23 | Advanced New Technologies Co., Ltd. | System and method for ending view change protocol |
US20210099312A1 (en) | 2019-09-27 | 2021-04-01 | Cypherium Blockchain Inc. | Systems and methods for selecting and utilizing a committee of validator nodes in a distributed system |
CN110460484B (zh) * | 2019-10-10 | 2020-02-18 | 杭州趣链科技有限公司 | 一种基于pbft算法改进的单节点异常主动恢复方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106445711A (zh) * | 2016-08-28 | 2017-02-22 | 杭州云象网络技术有限公司 | 一种应用于区块链的拜占庭容错共识方法 |
CN106878000A (zh) * | 2017-03-06 | 2017-06-20 | 中钞信用卡产业发展有限公司北京智能卡技术研究院 | 一种联盟链共识方法及系统 |
CN107171829A (zh) * | 2017-04-24 | 2017-09-15 | 杭州趣链科技有限公司 | 一种基于bft共识算法实现的动态节点管理方法 |
CN107579848A (zh) * | 2017-08-30 | 2018-01-12 | 上海保险交易所股份有限公司 | 实用拜占庭容错共识机制中动态更改共识节点的方法 |
CN108365993A (zh) * | 2018-03-09 | 2018-08-03 | 深圳前海微众银行股份有限公司 | 区块链节点动态变更方法、系统和计算机可读存储介质 |
-
2018
- 2018-08-10 CN CN201810906786.1A patent/CN109039748B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106445711A (zh) * | 2016-08-28 | 2017-02-22 | 杭州云象网络技术有限公司 | 一种应用于区块链的拜占庭容错共识方法 |
CN106878000A (zh) * | 2017-03-06 | 2017-06-20 | 中钞信用卡产业发展有限公司北京智能卡技术研究院 | 一种联盟链共识方法及系统 |
CN107171829A (zh) * | 2017-04-24 | 2017-09-15 | 杭州趣链科技有限公司 | 一种基于bft共识算法实现的动态节点管理方法 |
CN107579848A (zh) * | 2017-08-30 | 2018-01-12 | 上海保险交易所股份有限公司 | 实用拜占庭容错共识机制中动态更改共识节点的方法 |
CN108365993A (zh) * | 2018-03-09 | 2018-08-03 | 深圳前海微众银行股份有限公司 | 区块链节点动态变更方法、系统和计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109039748A (zh) | 2018-12-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109039748B (zh) | 一种pbft协议动态增删节点的方法 | |
CN105335251B (zh) | 一种故障恢复方法及系统 | |
US20080052327A1 (en) | Secondary Backup Replication Technique for Clusters | |
CN103580915B (zh) | 集群系统中确定主控节点的方法及装置 | |
CN103346904B (zh) | 一种容错的OpenFlow多控制器系统及其控制方法 | |
CN109729129A (zh) | 存储集群的配置修改方法、存储集群及计算机系统 | |
CN111427728B (zh) | 状态管理方法、主备切换方法及电子设备 | |
CN106062717A (zh) | 一种分布式存储复制系统和方法 | |
CN106844083B (zh) | 一种面向流计算系统异常感知的容错方法及系统 | |
CN106713132B (zh) | 用于更新转发表项的方法和装置 | |
CN112527567A (zh) | 系统容灾方法、装置、设备以及存储介质 | |
CN105095008A (zh) | 一种适用于集群系统的分布式任务故障冗余方法 | |
CN110190991A (zh) | 一种多应用场景下的分布式流处理系统的容错方法 | |
CN111506421A (zh) | 一种实现Redis集群的可用性方法 | |
CN108900331A (zh) | 一种分布式集群管理方法及分布式集群 | |
CN110888761A (zh) | 一种基于关键任务部分主动备份的容错方法和流处理平台 | |
WO2015196692A1 (zh) | 一种云计算系统以及云计算系统的处理方法和装置 | |
CN105959356A (zh) | 一种实现多云存储容错转换机制的方法 | |
Punithavathy et al. | Auto retry circuit breaker for enhanced performance in microservice applications. | |
CN107888393B (zh) | 一种非对称冗余通信链路中生成全连接集合的方法 | |
JP5812512B2 (ja) | データベースシステム、マスタースレーブ管理方法およびマスタースレーブ管理プログラム | |
CN114385761B (zh) | 一种基于共识系统的共识数据存储、获取方法及装置 | |
CN104270286B (zh) | 一种sdn网络节点故障定位方法 | |
Yu et al. | An Application Level Synchronization Method for Heterogeneous Redundant Structures | |
Paul et al. | Hierarchical Coordinated Checkpointing Protocol. |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |