共识协议 HotStuff 由 VMware Research 等团队于2018年3月提出,其预印版经过五轮迭代修改,并将于并行与分布计算领域著名的国际会议 PODC 2019上正式发表。
HotStuff 是一个基于主节点(Leader)的拜占庭容错共识协议
共识协议的目标是在去中心化的网络中就系统的状态达成统一的认识,以便所有的(诚实)节点统一从一个状态迁移到另一个状态。
- PBFT 采用了两轮2/3投票来完成这个目标
- HotStuff 采用了3轮2/3投票来完成这个目标
HotStuff 特点:
- 将 PBFT 的网状通信网络拓扑变成了星形通信网络拓扑,即它每次通信都依靠主节点。
- 3轮2/3投票
- pre-commit 阶段
- commit 阶段:
- decide 阶段
3. 门限签名
对于一个(k, n)-门限签名方案,假定存在一个公钥,而 n 个签名者每人都拥有自己的私钥(分片)。只要其中至少 k 个签名者对消息进行部分签名,那么由这 k 个部分签名可以导出对消息的完整签名,并且这个完整签名可以由公钥来验签。
PBFT的一个问题是区块头内包含了大量的确认签名, 使用门限签名可减少共识协议中签名的个数.
在 HotStuff 的三阶段确认中,所谓投票,就是其它节点即对某个消息进行门限签名并发送给主节点。当主节点收到足够多的投票时会导出完整签名。主节点向其它节点广播下一阶段消息时将附上这个签名,供其它节点将验证。
4. 共识过程的流水化处理 (与EOS相同机制)
三个确认阶段的行为: 其它节点对某一消息进行投票,主节点合成投票意见并通知给其它节点。这些过程可以统一表示,并采用流水化来处理。 这本质上就是让下一个视图的 prepare 阶段为当前视图的 prepare 阶段进行确认,即下一个 prepare 阶段(隐含地)包含了对当前视图的 pre-commit 确认,并以此类推。