拜占庭容错算法

PBFT:

PBFT是一种状态机副本复制算法,即服务作为状态机进行建模,状态机在分布式系统的不同节点进行副本复制。每个状态机的副本都保存了服务的状态,同时也实现了服务的操作。将所有的副本组成的集合使用大写字母R表示,使用0到|R|-1的整数表示每一个副本。为了描述方便,假设|R|=3f+1,这里f是有可能失效的副本的最大个数。尽管可以存在多于3f+1个副本,但是额外的副本除了降低性能之外不能提高可靠性。

 拜占庭容错算法不需要发行加密货币,但是只能用于私有链或者联盟链,需要对节点的加入进行权限控制;不能用于公有链,因为公有链中所有节点都可以随意加入退出,无法抵挡女巫攻击(sybil attack)
安全性:

在R>=3f+1的前提下,系统能保持安全性和活性。R为总结点数,f为错误节点数。

角色分工

replica(副本)所有参与的节点,总数为R
primary(主节点):负责将来自client的请求排好序,然后发给所有的备份节点。
backup(备份节点):接收并检查主节点的排序信息,如果主节点作恶可以进行换选。

其中主节点的选举方法是:p = v mod R ,其中v是系统的view编号,每次换选时发生view change,view编号+1。

quorums(法定人数)

quorums有两个重要的属性:
Intersection: 任意两个quorums至少有一个共同的并且正确的replica

Availability: 总是存在一个没有faulty replicas的quorum

如果一个replica把信息写给一个quorum,并让该quorum来存储信息,在收到每一个quorum中的成员的确认反馈后,那么我们可以认为该replica的信息已经被可靠的保存在了这个分布式系统中。这是强的约束,当然还有一个weak certificates:就是至少f+1个节点来共同存取信息,这样至少有一个正确的replica存到了这份信息。

你可能感兴趣的:(拜占庭容错算法)