PBFT即实用拜占庭容错系统

PBFT(实用拜占庭容错系统)是一种状态机复制的共识算法,主要用于私有链和联盟链。它包括一致性协议、验证确认协议和视图更换协议三个部分。在一致性协议中,通过主节点和从节点的交互达成共识;验证确认协议确保数据的准确性;视图更换协议处理主节点故障。在公链中,PBFT常与其他共识算法结合以提高效率。本文还介绍了Go语言实现PBFT网络交互的简单工程思路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

想知道更多区块链技术问答知识,请百度【链客区块链技术问答社区】
链客,有问必答!!

PBFT即实用拜占庭容错系统,英文全称Practical Byzantine Fault Tolerance。它是第一个基于BFT理论并结合实际产生的新的共识算法。但应用场景是私有链和联盟链,如果用于公链,需要和其他共识算法进行灵活的混用。

PBFT算法原理
PBFT是一类状态机拜占庭系统,要求共同维护一个状态,所有节点采用的行动一致。为此,需要运行三类基本协议,包括一致性协议(Agreement)、验证确认协议(Validity)和视图更换协议(Viewchange)。

1.一致性协议:
在PBFT系统中,节点分为两类:主节点(Lead)和从节点(Follow)。主节点就一个,其他剩余节点都是从节点。在实现PBFT系统功能之前,所有节点都是从节点,经过选举,产生一个主节点。每个节点都有被选举权和选举权,选举过程每个节点的概率都是平等的。

一致性协议包含若干个阶段:请求(Request)>序列分配(Pre-prepare)>相互交互(Prepare) >确认(Commit) >响应(Reply)。

注:C为客户端或叫请求节点;0为当前视图下的主节点;1,2,3是从节点,其中3为宕机节点。
该视图满足拜占庭容错,即系统节点总数4 >故障节点个数1x3

1)Request阶段
也就是Lead生成请求阶段。
客户端发送请求到主节点,或者主节点主动从某数据源获取数据作为请求

2)Pre-prepare阶段
也就是Lead给其他所有Follow发送请求阶段。
主节点将收到的请求进行处理,给请求赋值一个序列号n,形成一个带序号的副本,然后分发给其从节点。其中序号n必须在水线(watermark)上下限h和H之间。水线存在的意义在于防止一个失效节点使用一个很大的序号消耗序号空间。发送副本的格式是<,m>,这里v是视图编号,m是客户端发送的请求消息,d是请求消息m的摘要,n是序号。

3)Prepare阶段
也就是Follow收到

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值