PBFT算法流程

本文为万向区块链技术中心研究组撰写,介绍了PBFT算法的正常流程。


1. 系统模型

本部分介绍PBFT算法运行的系统模型。


1.1 网络

PBFT工作在异步的分布式系统中,系统中各个节点彼此通过网络连接。 系统运行时,消息的传递允许出现下列情形:
不能正确发送
延迟
重复
乱序


1.2 Byzantine failure model

系统允许错误节点也就是拜占庭节点表现出任意行为,但是需要附加一个限定条件: 节点失效彼此应相互独立,从而大部分或全部节点不会同时失效。

在有恶意攻击存在的情况下,可以采取类似于下列措施来保证这个限制的成立:
各节点运行的服务程序和操作系统的版本尽可能多样化
各节点的管理员帐号和密码不同


1.3 消息加密属性
1.3.1 使用加密技术的目的

防止身份欺骗、重播攻击
监测错误消息


1.3.2 具体使用的加密技术

公钥签名:用于验证消息发送者身份,PBFT中,实际上只用于view-change和new-view消息,以及出现错误的情况。其他消息都采用下面将会提到的MAC(消息认证码)进行认证。这是算法设计中提出的一种优化措施,用于提升算法性能。
MAC:即消息认证码,用于算法正常操作流程中的消息认证
消息摘要:用于检测错误消息


1.4 敌手特性

算法限定敌手(adversary)可以:
串通拜占庭节点
延迟通信或正常节点
同时,敌手不可以:
无限延迟正常节点的通信
伪造正常节点签名
从消息摘要反推原始消息
让不同消息产生相同摘要


2. 服务属性

本部分介绍运行PBFT算法的系统的服务属性。


2.1 关于副本复制服务

PBFT算法可用于实现确定性的副本复制服务(Replicated service)。 副本复制服务拥有状态(state)和操作(operation)。
客户端(client)向服务发起请求,以执行操作,并等待响应。
服务由 n个节点组成。操作可以执行任何计算,只要这些计算始终产生确定性的结果。
节点和客户端如果遵循算法的预定步骤执行操作,则被称为正常节点或客户端。


2.2 关于Safety和Liveness

只要系统中失效节点的个数不超过容错数 ,系统就能提供safety和liveness。


2.2.1 Safety

Safety的提供,是系统能保证客户端请求的线性一致性(linearizability),即请求按顺序一次一条地被执行。
PBFT相对于之前的算法如Rampart等的一个显著的不同在于,其Safety不依赖于同步假设。
算法不需限定客户端一定是正常的,允许其发送不合法的请求,原因是各正常节点可以一致性地监测客户端请求的各种操作。并且算法可以通过权限控制的方式对客户端进行限制。


2.2.2 Liveness

由于算法不依赖于同步提供 Safety,因此必须通过同步假设来提供 Liveness。
这里的同步假设是,客户端的请求最终总能在有限的时间内被系统接收到。

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值