hotstuff和pbft
虽然不少人知道区块链中的一致性协议,也能检索各种一致性协议的解析,但大多也只是流于表面,而且因为一致性协议的逻辑普遍比较绕,复杂晦涩的分析导致往往都是一知半解,没有直指核心,了解到最核心的思想 —— 存在的问题是什么,如何计算得出其复杂度? 相比之下改进点在哪?为什么会有更高的效率和诸如其宣称的好处?
如果列出各种式子,以及定义的各种参数,那未免太过晦涩,而且不同的一致性协议势必有着不同的定义和描述。如何用易懂且统一的描述方式来分析关键点和核心思想,才是最能在了解协议之后有更深理解的方式。但可惜的是几乎没有这类文章或博客,不过还是有不少针对某一个一致性协议分析地比较细致且直观易懂的好文章,通过学习这些文章也可以加深对某一个协议的理解。
这里就取最经典的PBFT和最近新发表在会议上的hotstuff这两种拜赞庭协议来分析,后续包括:
- 简述:简单介绍一下两种协议的特点,并附上核心流程图。
- 复杂度分析:分析两种协议的复杂度,通过复杂度可以明显的看出改进的优势。
- 改善点定位:给出hotstuff相对于PBFT改善的地方,这也是hotstuff的动机和核心。
- 安全可靠的性能提升:分析为什么能够在保证系统安全和可靠的前提下,对性能有所提升。
简述
PBFT:
PBFT是最早提出的实用拜赞庭容错的一致性协议,虽然存在不少问题,包括通讯开销大与活性等,但其核心逻辑是非常solid的,后续所有基于committee共识的区块链协议都不可避免的要参考这篇论文,也都是基于这篇论文做改进和比较的。
hotstuff:
hotstuff是19年的论文,其更像是基于SBFT和Paxos的改进。
- 无论是Paxos还是SBFT,其角色和流程都更为复杂晦涩,尤其是Paxos。
- Paxos适合于解决中心化分布式系统中的一致性问题,不适合区块链这种去中心化的。换言之,无法拜赞庭容错。
- SBFT新增角色collecter,会引入中心化问题并使协议不够简洁。
- SBFT的视角切换复杂度是O(n^2)。
复杂度分析
共识阶段:
PBFT在共识阶段的通信复杂度是O(n^2)
,这从上面的图就可以看出来。preprepare 是O(n)
,但