深入理解PBFT算法的提交阶段

本文详细探讨了PBFT共识算法的提交阶段,解释了为何这一阶段对于保证联盟链中请求顺序一致性和跨视图请求的一致性至关重要。通过分析提交阶段的作用,阐述了在缺少这一阶段时可能出现的问题,并通过相交性和可得性性质,说明了提交阶段如何确保主节点切换后的请求重放和一致性。
摘要由CSDN通过智能技术生成

1. 前述

PBFT(Practical Byzantine Fault Tolerance,实用拜占庭容错算法)是联盟链常用的一种共识算法。本文讨论PBFT提交阶段的作用,要求读者对PBFT的算法有一个大致了解,如果你是刚听过这个算法,知道算法的基本流程,看完本文可能会对PBFT有更深入的理解;如果你研读过PBFT原论文,那么本文也许可以作为阅读拓展。如果有不同理解或者认为文中表述有问题,欢迎讨论指正。

2. PBFT算法的QC性质

在讨论主题之前,我们需要先了解PBFT算法的QC性质,这是证明PBFT正确性的重要前提。

Q 和 C 分别表示 Quorum 和 Certificate。

  • Quorum 意思为 仲裁数,法定人数。在PBFT中,当总节点数为3f+1时(用 f 表示拜占庭节点数量时,总节点数大于等于 3f+1 时拜占庭问题才有解,这个问题的证明不在本文的讨论范围),Quorum 表示数量不少于 2f+1 的节点集合。
  • Quorum certificate 则表示来自一个Quorum的每个节点的某种消息组成的一个集合,称为证书,如准备证书和提交证书。

Quorum 有两个重要的性质:

  1. 相交性: 任何两个 Quorum 至少有一个共同的正确节点。
  2. 可得性: 总能找到一个没有错误节点的 Quorum 。

Intersection property: any two quorums have at least one correct replica in common.
Availability property: there is always a quorum available with no faulty replicas.

这两个性质贯穿了PBFT的整个证明过程,特别是性质1。

第一个性质,我们可以用一个图直观地理解:

在这里插入图片描述

图1. Quorum 的相交性

我们在一个大小为3f+1的集合中,画两个2f+1子集,并且使得交集尽可能地小,可以看到,即使尽最大的努力减小交集,最小的交集还是f+1,即交集中至少有一个正确节点。

另外,当 f=1 时,3f+1=4,当 f=2 时,3f+1=7,那么当总节点数等于5或6时,Quorum 的数量该如何计算呢?我们记总节点数为N,且 3 f + 1 ≤ N < 3 ( f + 1 ) + 1 3f+1≤N<3(f+1)+1 3f+1N3(f+1)+1,则一个 Quorum 的数量不少于 ⌈ 2 N 3 ⌉ \lceil\frac{2N}{3}\rceil 32N,其中 ⌈ ⌉ \lceil\rceil 表示向上取整,推导:

设 Quorum 的数量为x,为了满足性质1,两个 Quorum 的交集大小至少为 f+1,则有

2 x − N ≥ f + 1 2x-N≥f+1 2xNf+1 x ≥ N + f + 1 2 x≥\frac{N+f+1}{2}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值